Sunday, September 16, 2018

3DO FZ-10 USB Host Controller Review

What is a 3DO FZ-10 USB Host Controller?


If you know what an "Everdrive" is, that's basically what this works out to being for the 3DO.  This type of device is most commonly referred to as an Optical Drive Emulator (ODE).  It installs into a 3DO game console in place of its CD drive which allows you to load games from a USB device.  The main advantages to this are that there are no moving parts to wear out, and more importantly you can have the entire library of 3DO games loaded onto the console at once.


Overview

Back in June of 2018, I wrote about a 3DO FZ-10 that I "rescued".  It had a broken latch, and literal dirt and dead bugs in its innards.  The CD drive spindle was seized, and the power and access lenses were missing.

My main motivation in purchasing an "as-is" 3DO FZ-10 was to install the 3DO FZ-10 USB Host Controller by MNEMO (http://3do-renovation.ru/USB_Host_for_FZ10.htm).

It was quite a fun journey, at times feeling like some kind of cloak-and-dagger mission fraught with uncertainty and intrigue.  Most of my adventures in modernized retro gaming have been mostly straightforward affairs or at least had shallow easy learning curves with a thriving responsive community ready to weigh in when things get troublesome.  This one device, however is shrouded in more obscurity than usual.



Ordering

Compared to buying something on Amazon, buying handmade "botique" retro gaming components like this can be astonishingly complicated.  Instead of browsing for something, deciding to buy it, popping it in your cart and checking out, these things are usually in short supply and made by people with a passion for the technology, but no aptitude for the business/e-commerce end of things.  I've pre-paid months and even years in advance, used informal email messages, forum posts and private messages on Facebook to place orders, brokered purchases through private and professional proxies in foreign countries and paid in at least four different currencies to what feels like the four corners of the earth - all of which is pretty normal.  This one, however took the cake.  For a while it felt like being in one of those cold war movies I watched as a kid, trying to get the mission-critical MacGuffin from the aloof Russian contact, including it's own cliffhanger where the protagonist loses his edge of control and has to give the Russian all of the diamonds and just hope he doesn't decide to disappear with them then the audience hangs in suspense wondering whether the hero has been left high and dry.  Well, okay, it wasn't quite that dramatic, but I did nearly gasp with relief when the thing finally showed up in my mailbox.

As I mentioned, this adventure started in June when I cleaned, repaired and modded an FZ-10.  As soon as I was done testing things and sure that the console was in good working order I went to the "how to buy" section of MNEMO's website (http://3do-renovation.ru/How_to_buy.htm).  The FZ-10 model was listed as "in-stock" and the "last update" time was less than a month old, so it seemed reasonable to expect they were actually available.

To place an order, you are asked to complete a really simple web form then click "Make Order".  Once you do that your order disappears into the ether.  No order number is provided, no confirmation email is sent to you.  There's no email address anywhere on the website, no way to reach out and ask about it.  You just wait.

After a couple of weeks with no response, I thought I might just need to re-submit the order, but there was a message on the website (which has since been removed) that said "I am swamped with orders, don't send your order a second time." 

I tried to be clever and use the Way Back Machine to see if a previous version of the website included an email address.  Sure enough I found a version that did.  I sent an email to "dr.mnemo@gmail.com" but never received a reply. (Although after installing the unit and sending a question about its operation, I did get a reply within a day, so YMMV).

On August 24th, A little over two months from when I first submitted my order, I received an email with the subject "3DO FZ-10":
hi
Sorry for delay.
USB FZ10 was out of stock.
Now available, and I can accept your order.
Send me payment 165 usd without fee
to account

Here is direct link https://www.paypal.com/myaccount/transfer/gift
notes not nessesary
I know your Paypal account and all data of your order.
The PayPal address in the request didn't seem to have anything to do with MNEMO at all, and I had no way to verify who I was communicating with.  (I have not included the email address in this article because MNEMO doesn't publish it anywhere and I'm trying to be respectful of his privacy).  It's fairly common practice to side-step PayPal fees by sending money as a "gift", but the downside of that is that you don't have any purchase protection whatsoever.  If the transaction comes across as a purchase of goods or services, there's a fee, but if something goes wrong, the recipient doesn't get to just walk off with your money. 

Trust is a beautiful thing, but it seemed foolish to go forward like that.  While the opportunity to purchase one of these adapters is tenuous at best and the last thing I wanted to do was to offend the one guy on the planet selling them, that was a little more risk than I was up for.

It had been so long since my original order was placed that my old PayPal email address was no longer valid.  I replied to the email I received and gave my new PayPal email address and explained that I could not send the money as a gift, but would be happy to cover the fees myself.  I got a response within a couple of hours:
At next week I will sent you Paypal Invoice
I forwarded the email from my old account to my current account and then replied - my thinking was that this would move the conversation away from my old account and eliminate any confusion.  That response was on a Friday.  Monday rolled around and I didn't hear anything.  On Wednesday, I sent an email response asking when I should expect the invoice.  I waited until Thursday for a reply, and when I didn't get one, I sent the message from my old account and received a response within a couple of hours.  The gist of the response was that the Invoice would be sent on 9/1.

True to his word the invoice was sent on 9/1, though now it included not only the PayPal fees, but an extra charge for shipping as well.  Instead of $165 it was $187.  Fair enough.  I made it formal, so he made it formal.

Right after I paid the invoice I sent an email to the same address asking to be notified when the adapter shipped and for an electronic copy of the installation instructions so I could get started.  I never heard another word.  The instructions are not published online as far as I was able to find.

The adapter arrived in my mailbox on 9/13, which is only about 8 business days from when I placed my order.


Installation

The adapter arrived with a wire harness for the IDE interface, a wire harness for power, an extra-thick ground wire, PCB spacers, a black-and-white instruction booklet and an un-sharpened pencil (which the instructions referred to as a "wand", lol).

All in all, it's a pretty great kit - the wires were already pre-cut to length.  Despite a little broken English, the installation instructions were clear enough.  The only criticism I have is that if you're going to go to the trouble of pre-cutting the wires, it might be helpful to provide some advice on how to orient them during installation.  There's a single picture toward the end of the instructions where you can see some of the data wires attached to give you an idea of the expected orientation.

To complete the installation, I used:
  • Hot Air rework station
  • Hair Dryer
  • Tweezers
  • Aluminum Foil
  • Kapton Tape
  • Liquid No-clean flux
  • Solder (I really prefer 62/36/2 silver-bearing)
  • De-soldering braid
  • Fiberglass pen
  • Automatic Wire Strippers
  • Digital Multi-Meter
Firstly you should read the instructions all the way through.  Not only to make sure you understand the procedure, but because some of the stuff is oddly out of order.

Disassembly is mostly self-explanatory - just unscrew and pull apart.  The one exception is the CD Drive which is attached by two plastic tension pegs.  The instructions illustrate inserting the pencil (a.k.a. "green wand") into the holes underneath the pegs and pushing up.  I recommend holding your hand over the top as you push the pegs out as they tend to pop out rather forcefully and can fly across the room.

The most difficult part is getting the drive controller IC off of the motherboard. 

To prep for the hot-air gun I used sheets of foil and Kapton tape to mask off the IC from the other components.  Basically I left the IC exposed, but the rest of the motherboard was covered in a foil shield, held flush to the motherboard by the tape to make sure that hot air did not pass under the foil to the rest of the board. This is especially important as there's a plastic socket just below the IC that will melt under the hot-air gun if not properly protected.

The next step was to take the hair dryer to the underside of the motherboard.  I don't have a dedicated warming oven.  The idea here is that you want to pre-heat the board to lower the temperature differential when you start applying the hot air.  It's supposed to reduce the likelihood of micro-fractures of the PCB from rapid heating and cooling.  I don't know if it actually makes a difference but it's an easy step to take.

Next, I covered all of the IC pins in no-clean flux, and applied some fresh solder to all of the pads.  Old solder has a tendency to resist being re-heated, so freshening it a bit helps it to conduct heat a little more readily.

From there it was a matter of patience, applying hot-air in a back-and-forth motion as uniformly as possible to the IC until the solder on all of the legs was hot enough to let go.  When it was ready I simply nudged it with a pair of tweezers and it slid right off.

With the IC off, I cleaned all of the pads with a little more flux and a de-soldering braid.

After reading through the instructions about 3 more times to get a feel for where everything would  go, I stripped separated and tinned all of the wires on the provided ribbon connector, then tried to loosely hold them in place with my fingers to get a feel for how it was all supposed to fit.

The ribbon wires are connected in three places - the gray wire goes to the reset switch, and the rest go to the pads of an unpopulated IC below the drive controller, then to drive controller pads.  I started with the gray wire, then the lower IC and then the upper.

A note on the installation diagrams: The instructions helpfully point out alternate connection points for lines that are very close together.  These points are usually little circles used for connecting between the PCB's layers, and they're not meant to be soldered-to.  The board is coated in a lacquer which will prevent solder from sticking to those points.  You'll need something to scrape through the lacquer.  In my case I used a fiberglass pen to gently rub off the coating.  With the coating worn away the pads are considerably brighter and will readily attach to hot solder.

After making sure all of the ribbon connections were soldered securely to the motherboard I used a DMM to test continuity to make sure there weren't any solder bridges between adjacent pins.

The instructions very properly encourage you to test everything BEFORE you fasten the controller board to the 3DO.  If you have any cold solder joints, or anything else is wrong it's a lot easier to check before you put it all back together.    In my case it worked perfectly on the first try.

The instructions tell you to remove the rubber shock absorbers from the CD drive unit, and re-use them along with the spacers to mount the host controller securely where the CD drive used to be but I went a slightly different way.  If you've ever tried to source those little rubber shock-absorbers you'd know just how impossible they are to replace.  Using them to mount the host controller will eventually ruin them because they'll be permanently compressed.  As unlikely as it is that I'll ever re-install the original optical drive, I'm also not going to ruin a perfectly good component.  Instead I had some replacement memory foam ear pads (this kind, if you're curious) laying around which worked perfectly in their place and didn't even require the included spacers.



Usage

Here's where things get obscure. The instructions for installing the unit were about 99% of the way there.  The instructions for using it, however, are missing a few key components. 

What IS Explained

The printed instructions provide a tiny bit of guidance.  
  • To Launch a Normal Game press "A"
  • To Launch an Unencrypted Game press "B" I'm not an expert on the subject, but I believe the 3DO required executables to be encrypted to prevent unlicensed software from being distributed for the system.
  • Use "RS" (right shoulder) to page down through the file list
  • Use "LS" (left shoulder) to page up through the file list
  • To copy the contents of the 3DO's NVRAM to a file on the USB drive press "Right+C"
  • To copy the contents of an NVRAM file on the USB drive to the 3DO's NVRAM press "Left+C"
  • To make the 3DO memory manager accessible, write a blank file to the USB drive.  Basically any file you try to launch with "A" which isn't a valid game disc image will make the 3DO think there's no disc in the drive and give you access to the storage manager.  So if you create a blank text file and name it "Launch Storage Manager", selecting it from the menu and hitting "A" will bring you to the "Insert Disc" prompt, from which you can hit "X" or "Stop" to open the Storage Manager.

What IS NOT Explained

  • Supported File Format For Games.  Games need to be in "ISO" format - that is to say "MODE1/2048".  It does not matter what the files are called - so you can save them to the USB drive without a file extension and get a cleaner look for your loader menu.  See "More on Disc Image Formats" below for more info on my experience.
  • How to Create an NVRAM file. In order to copy the contents of NVRAM to a file, you have to already have an NVRAM file on USB drive, and there's no option to just create a new one.  There IS a tiny tiny breadcrumb on the product page, though.  There's a note on the page: "For quick select of the game Image - extract that file to USB"  What "that file" actually contains is an example directory structure along with some example NVRAM files.  Now you could just copy those files, rename them to whatever you want and use them directly, but with a little trial and error, I figured out any file that's exactly 32k in size can be used.  You can create blank 32k files in Windows using "fsutil", or in Linux using "fallocate".  Examples below.
  • If/How Multi-Disc Games are Supported I reached out to MNEMO about this and his reply was "it works the same as with a CD".  Evidently all of the multi-disc games expect the console may be cycled between disc swaps.  The only one I've tested so far is D.  When the game asks for Disc 2, open and shut the CD lid, and the 3DO will load the USB loader, select and boot Disc 2 and it just works. I believe it writes a temporary file to NVRAM an deletes it upon load.  One of the example NVRAM backups in "that file" is labeled as "D disc 2".  I think if you write the NVRAM to a file when you're between discs you can capture this temporary file.
  • How to Navigate Directories.  This one isn't rocket surgery or anything, but unlike every other similar device I've ever used, there is no "back" button.  To descend a directory, highlight the directory using the D-pad and press "A".  To ascend back to the parent directory, use the D-pad to highlight the ".." at the top of the directory list and press "A".



More on Disc Image Formats

The CDRWin "bin/cue", and Clone CD "ccd/img/sub" formats are NOT supported by this device.  Nor are the more exotic DiscJuggler ".cdi", nor the Nero ".nrg".  If you have ripped your games in bin/cue or ccd/img/sub, you'll need to either re-rip the or convert them.  There are probably a dozen and a half ways to go about this, but I'll go over what I used and can confirm works.

ImgBurn (www.imgburn.com)
This is a free tool that runs on Windows and will rip original 3DO CDs in the correct format without any extra tuning or configuration.  Simply insert the disc, launch ImgBurn, select "Create Image File From Disc", select your drive and click disc-to-file icon.

Converting bin/cue to ISO
I had okay luck with bchunk, but I'm running a mixture of Windows and Linux in my environment and I used the Linux version.  Some files came across as 0bytes for some reason, but I was able to find alternative copies that worked just fine for those.

Converting ccd/img/sub to ISO
To do this conversion, I used Virtual Clonedrive (https://www.elby.ch/en/products/vcd.html).  It's free and made by the same company that invented the format.  I mounted the "ccd" image as a virtual disc, then used ImgBurn to rip it like any other CD.

What do I do with iso/cue?
If you run across any images that come as a .iso and a .cue pair, open the .cue file with a text editor and just confirm that the section with the .iso file notes "MODE1/2048".  If that's the case you can just discard the .cue file and use the .iso file as-is.

If all else fails and you can't lay hands on the original disc, you can always try burning the image to an actual CD-R then re-ripping it with ImgBurn.


Creating New NVRAM files

Just like with the game images, the name of the NVRAM file doesn't matter, so you can leave the extension off of the filename for a cleaner look to the menu.

Windows 7/8/10:
Assuming 
  • USB drive is "G"
  • Backups are in a directory called "NVRAM Backups"
  • You are running "CMD" as an administrator
fsutil file createnew "g:\NVRAM Backups\slot 01" 32768

This will create a file called "slot 01"

Linux:
Assuming


  • Your USB drive is mounted at /run/media/user/USB_DRIVE
  • Backups are in a directory called "NVRAM Backups"
  • You have write-permissions to the drive

fallocate -l 32768 "/run/media/user/USB_DRIVE/NVRAM Backups/slot 01"

This will create a file called "slot 01"

Monday, August 06, 2018

Thoughts on "Best Electronics"

Deal with Atari hardware long enough, and sooner or later you're going to come across "Best Electronics" (http://www.best-electronics-ca.com/).  While I haven't done a ton of research on the company, I gather that at one point they were a (or possibly THE) official Atari repair shop.  When Atari called it quits from the gaming biz, Best ended up with most, if not all, of the leftover stock of systems, games, accessories, repair parts and miscellany.

The first thing you're likely to notice is that browsing their website is like time-traveling to the early nineties.  Seriously, just fire it up and you'll see what I mean.  Monolithic old-school HTML pages complete with in-line gifs, center-justified spacing, funky font color transitions, and yes, a hit counter at the bottom of the page!  The whole thing is disorganized and difficult to wrap your brain around, but kind of fun if you aren't in a hurry to find useful information.

Some pricing is available on the webpage, but they reserve the complete price list for their printed catalog which they insist on selling for a profit.

Browse the web page long enough and you'll come across references to their "##+ year Atari tech".  If you're a fan of Top Gear, this is basically their version "The Stig".  A mysterious man (or woman!) identified only by reputation and credential.  And they are very rare to miss an opportunity to evoke the ##+ year Atari tech.

I've only dealt with them a handful of times over the years, and it is always something of a charming hassle.

They seem acutely aware of the need to protect their profit margins, as any business should, but it emerges in some annoying and disingenuous ways.  For example, they set minimum order amounts which change from time to time.  The justification for this is the cost to ship.  They absolutely will not budge from these minimums - even if you eliminate their excuse by offering to pay the extra shipping and processing costs.  Furthermore, their vaunted parts catalog cannot be counted toward the minimum order amount.

On top of the minimum order amount, they charge a healthy handling fee.

So I wanted to buy a sealed copy of the Tempest 2000 soundtrack.  This is a $5 item.  The minimum order amount at the time was $20.  When I offered to pay whatever extra they thought necessary to offset the cost of dealing with small orders, they resorted to what I have classically termed "the idiot's defense" - that is when faced with a rebuttal which logically defeats your given reason, you simply return to the beginning of the loop and start repeating the already-defeated premise of your argument.  This is not to say that they are under any obligation to allow me to circumvent their minimum order policy, but that I would appreciate it if they would be honest about the policy and just state up front that the minimum is there to make sure you buy more stuff, not to offset the cost of dealing with small orders.

But I digress.  So I wanted to buy something that costs $5, and at the time that was the only thing I wanted.  I attempted to quickly scour the website for something that would help me meet the minimum while I had them on the phone, but as I stated earlier, it's not what I would call organized.  I ended up hanging up with them and calling back to complete the order after finding that they sell the Jaguar cart connectors for $15.  I will probably never need one, but as I only have one Jaguar, replacement parts are somewhat appealing.  So now I had an order for $20.  Then, of course, they had to apply "Shipping" costs on top of that, which came to about $1 million space bucks.  Seriously, though it was about $8.  That was ALMOST cheaper than buying a new copy of the Tempest 2000 soundtrack from Ebay.

While I ended up spending more than I really wanted to, I got what I wanted and a little something extra so I called it a wash.  Not a great experience, but not a terrible one either.

So recently I got the urge to clean up and mod a Lynx II handheld (which is a story for another day).  One of the last parts I needed was a replacement lens piece for front of the system.  The one I had was in really good shape except for a rather prominent crack in the upper left corner.  It didn't cover any of the visible part of the screen, but my OCD just wouldn't let it go.  In searching around for where I might source a replacement, I came across several mentions that Best Electronics still sells replacements for $20.  The newest of those posts was from 2014.  I wasn't sure if they would still have any of the screen lenses in stock, so I sent them an email.

Email conversations with Best Electronics is something of a trip.  If you scroll down to the bottom of their home page, there's rather a lengthy diatribe about SPAM and the formatting of email inquiries.  That in itself is a little strange, but the fun really begins when the conversation starts.  Firstly, they seem to bounce the messages through multiple mailboxes - some in front of the SPAM filters, and some evidently behind.  I received a reply from a different email address and some explanation about Yahoo mail being blocked etc...  Since their filters reject any message beginning with "Re:" or "Fw:", they prepend the outgoing subject with "More" instead.

When you send them a message they attempt to fit it into a Q&A format.  Though a little weird, I found it to be very refreshing because it provides evidence that they actually read your message for comprehension.

For example, I sent something to the effect of:

Hello,

Do you have any replacement clear screen covers for Lynx II, and if so please quote me a price.

And they replied with something like:

Dear Customer Person,

Q: "Do you have any Lynx II screen covers"
A: "Yes we have those"

I'm paraphrasing of course, but you get the idea.  It took a couple more messages for me to actually get pricing from them, and to my dismay the price had lept up to $35 for the replacement screen.  But when you're the only source left, you can kinda get away with charging what you want.  That's almost as much as I paid for the Lynx II I was modding, but I eventually convinced myself it was worth it to get a perfect brand new screen cover.

When the part arrived I realized immediately that it was not the brand new part I thought it was, but a used part.  It was in pretty good condition, but for $35 it should have been flawless, and it wasn't.

When I reached out to them to ask if it could be replaced with an actual new one, they evoked the 34+ Year Atari tech (lol), and explained that the Stig had personally pulled that screen from a brand new defective Lynx II, and that all of the "new" parts were gone.  While it may have technically been "brand new defective", given the scratches on it, it was not "uncirculated".

They continued to respond in the Q&A format even when it ceased to make sense, and offered a refund.   Of course they were not going to pay for the shipping, so I would have been out something like $14 and still left with a cracked screen cover, so I decided to keep it, but I'll probably never deal with them again after that experience.

ViewEra V220D-B Monitor Repair Notes

A little over a year ago, my ViewEra V220D-B monitor started struggling to wake up out of power-save mode.  At first it would take a few seconds to come on, then it would take minutes and pretty soon it simply wouldn't come on at all.  This a classic case of spent capacitors.

According to my NewEgg order history I bought that monitor 11 years ago in 2007.  It doesn't even go up to 1080p.  Over the years it ended up front-ending secondary and tertiary computers that I barely used.  When it finally quit altogether, I stashed it in a corner and it stayed there for at least a year gathering dust.

It's customary when an old monitor goes out to use that event as an excuse to buy a new one with better features and chuck the old one in the bin.  Given that and the age of this thing I think the odds against someone stumbling across this post and finding it useful are astronomical.  But I've never been a fan of wastefulness, and if a perfectly serviceable bench monitor can be had for a couple of dollars worth of capacitors, they why not give it a shot?

Taking the thing apart was a bit of a chore.  There are three screws in back along the bottom - the middle one hidden in the center of a foil sticker.  However the back is actually held on by about two dozen tension clips that have to be carefully pried apart (I used one of those Lego pry-tools as a spudger to do it).

Once I got it apart, the problem was immediately obvious - four 1000uF 25v capacitors in the center of the power board were clearly swollen. (The capacitors in the yellow box in the image below are the replacements.)  The bottom side of the board was coated in yellow-brown syrupy electrolytic fluid that had leaked from the dead capacitors.  I happened to have a handful of capacitors with the right specs, so I cleaned the board, swapped out the bad capacitors and put everything back together. (The capacitors were attached to the board and the linear power regulators with gray epoxy - I'm not an electrical engineer, but I think doing that would transfer more heat from the regulators into the capacitors and cause them to fail prematurely - planned obsolecence?)

When I plugged the monitor in, I saw the familiar "Searching for Signal" box pop up for a few seconds, then, since I didn't have anything plugged in, it was followed by the "Power Saving..." box.  Up to that point I thought "Yay, it works again!". Then instead of going dark and powering down, the screen went completely white - lit up as brightly as it would go.  If I hit the "source" button, the screen would go mostly black, display the "Searching for Signal", then "Power Saving..." then back to a completely white screen.

With a video source plugged in, the monitor worked perfectly normally - it displayed a nice clear bright picture with no problems, but the minute I tried to power it off, or the PC went to sleep, or the DVI cable was unplugged - bright white screen.

My first clue as to what was wrong was that when the screen went white, it didn't just "snap to" white.  The whiteness would spread across the screen like a ripple - as though the blackness was "draining" out of it along the edges.  Since the LCD works by darkening the screen in front of a florescent backlight, it made sense that what I was seeing was the LCD turn transparent as the power drained from it - the LCD was properly shutting down, but the backlight was staying constantly lit.

I took the monitor back apart to re-check everything - make sure I hadn't dropped some solder somewhere, or created a bridge somewhere.  I de-soldered and checked a couple of other capacitors but everything checked out fine.  Then I decided to completely strip the thing back down to give it a thorough cleaning and that's when I found what I had done wrong.

The power board has a 5-conductor wire harness connecting it to the backlight ballast board. This is the red box in the image below.  On the backlight board, this 5-conductor harness connects a 5-conductor plug to a 5-conductor socket.  What I did not notice is that on the power board side, the 5-conductor harness connects a 5-conductor plug to a 6-conductor socket.  When I had first plugged it back in after replacing the capacitors, I simply lined the plug up with the bottom of the socket and pressed in. From that angle, it appeared to fully populate the socket, though in fact the top pin was unconnected.  When I noticed this, I switched the position of that plug so that the bottom pin was unconnected, and viola! the monitor works like it should - shutting off the backlight when appropriate.  Thankfully the plug and socket were designed in such a way that connecting it wrong didn't burn anything out.
In Red: the correct orientation of the backlight plug, with the plug aligned to the top of the socket so that the bottom pin is unconnected.  In Yellow: the location of the four capacitors which had gone bad.

Of all the lazy engineering, this one really took the cake.  It's not the first time I've seen a wire harness with fewer conductors than the socket, but normally the plug will still match the socket to prevent exactly this sort of thing - the unused pin just won't be connected to anything.

Monday, July 30, 2018

NES Dejitter

When choosing my "modern" TV, I did a lot of research and comparison and wound up with the very excellent KDL-70R550A which has so far supported everything I have thrown at it.  Every console via the OSSC just works, every scaling mode, every oddball resolution, every janky sync signal, everything.

A few weeks ago, I installed an NESRGB on an NES for a friend.  He was using an OSSC to scale it to his PC monitor and a Panasonic Plasma, but could never get better than 2x.  He wasn't terribly concerned as those were stopgaps until his "real" gaming TV arrived.  Unfortunately the TV he bought couldn't tolerate the NES's irregular sync signal.  Fiddling with OSSC settings made it possible to display in 5x mode, but it would randomly lose sync.


Some Background

Others have analyzed and explained it far better than I, but the gist of the problem my friend was having was because of a design flaw in the original NES/SNES video output.  CRT televisions were considerably more forgiving of this flaw than most modern displays.  

This thread at shmups goes into great detail:
https://shmups.system11.org/viewtopic.php?f=6&t=61285

The gist of it is that the NES and SNES have irregularities in the sync pulse that tells the display where to draw lines from the incoming video.  CRTs displayed video in real time, whereas modern displays want to see a whole frame completed before sending it to the screen.  

The Easy Road...

It is, perhaps, fortuitous that marqs of the shmups forum had just recently completed hardware development of a "dejitter" mod designed to straighten out the irregular sync signal.  The hardware design has been available in a DIY fashion for some time via github (https://github.com/marqs85/snes_dejitter) but after reading through the programming instructions, I had no desire to fuss with building the board myself. 

Fortunately BuckoA51 (of the shmups forum) decided to start selling pre-assembled and programmed dejitter boards via videogameperfection.com.  I ordered one and told my friend to ship the NES back to me.

...Sometimes Crumbles Beneath You

About two days after placing my order, someone found a problem in the NES installations which required a firmware fix.  Though to his credit marqs identified and fixed the problem almost immediately, my big plan to avoid going through some complicated steps to reprogram the dejitter board was now a complete failure.


Step 1: You're Basically On Your Own

Reprogramming the dejitter chip represented a challenge for a couple of reasons.  Firstly, the interface socket, appears to be completely custom.  Secondly, it can apparently only be accomplished with an application called "OpenOCD" which is about a 2/10 in user friendliness and a 1/10 in intuitive design.

The first thing you'll notice about the instructions for programming is that there is no "get this specific programmer, get this software, enter these commands" instruction.  Most of it seems to assume that you have some existing knowledge and capability with CPLD programming.  In fact when asked this question, the OpenOCD developers replied with a statement to the effect that they purposefully avoid telling people which programmer to buy because the software is supposed to be universal.

The Real Step 1: Getting OpenOCD to play with USB Blaster Clones

As I mentioned earlier, the socket on the dejitter board is, as far as I can tell, proprietary, however the signals are standard.  I needed to create an adapter to go from the USB jtag header to the 6-pin socket on the dejitter board.  Fortunately the pins are all labeled so all that was needed was to look up a reference to the USB Blaster pins and match them.

I'm not completely new to programming CPLDs, though my knowledge is about as deep as a single sheet of paper.  (The original forum thread, posted above, has an excellent write up by the user NoAffinity with instructions for performing updates to the CPLD via a Raspberry Pi, and after going a different route myself, I believe that may be a better way to go if you have a Pi laying around)

About 9 or 10 years ago, I bought a "USB Blaster" to perform software updates on my v1 Everdrive64.  At the time I had no idea it was a cheap clone and not a real "USB Blaster".  It always just worked for me.

My "clone" USB Blaster

After looking at "official" USB Blaster prices, yeah, there's no way mine isn't a cheap clone. I paid more than $10, but not $300.  Evidently, for about 99% of what you'd want to do with it, it functions just like the real thing, but when it comes to OpenOCD - the supposedly "universal" software, the clone fails one of the basic startup checks.


OpenOCD will error out when it can't get latency timing because that's not a feature with USB Blaster clones, I wound up messing with the OpenOCD source code to "patch" out the check.


The steps I detail below are specific to Fedora Linux, but if you're using a different distro, or Windows, the modification of the source file "ublast_access_ftdi.c" should still work, you'd just go about compiling and installing it differently.


Download and install the Source RPM for OpenOCD 0.10.0 for your distro.
This puts the source tarball at ~/rpmbuild/SOURCES/openocd-0.10.0.tar.bz2

Unpack it:
Code:
cd ~/rpmbuild/SOURCES/
tar -xf openocd-0.10.0.tar.bz2


With the source tarball extracted, edit the source file that controls the latency timer check:

Code:
vim ~/rpmbuild/SOURCES/openocd-0.10.0/src/jtag/drivers/usb_blaster/ublast_access_ftdi.c


Comment out lines 105-109 and save the file:

Code:
105 /* if (ftdi_get_latency_timer(ftdic, &latency_timer) < 0)
106       LOG_ERROR("unable to get latency timer");
107    else
108       LOG_DEBUG("current latency timer: %u", latency_timer);
109 */


Then while still in the directory "~/rpmbuild/SOURCES", rename the old tarball and replace it with the edited source:

Code:
mv openocd-0.10.0.tar.bz2 openocd-0.10.0.tar.bz2.old
tar -cf openocd-0.10.0.tar openocd-0.10.0
bzip2 openocd-0.10.0.tar


With that done build the RPM

Code:
cd ~/rpmbuild/SPECS
rpmbuild -bb openocd.spec


Of course this requires that you have "rpm-build" installed, and will probably bug you for a bunch of dependencies.

When successful rpmbuild should give you the location of the RPM

Code:
Wrote: /home/user/rpmbuild/RPMS/x86_64/openocd-0.10.0-2.fc26.x86_64.rpm
Wrote: /home/user/rpmbuild/RPMS/x86_64/openocd-debuginfo-0.10.0-2.fc26.x86_64.rpm


From there just install the newly-created RPM and it will no longer check for a latency timer on USB Blaster clones. 



Step 2: Voltage Matters


With OpenOCD no longer failing because of that latency timer check, I was able to move on to the next problem.  OpenOCD was happy to use the USB Blaster, but it couldn't see the CPLD on the dejitter board.

The USB Blaster does not provide voltage to the chip it's programming - the chip actually has to be energized by some other means for the programmer to update it.  The expectation is that you'll have it installed on the NES and the NES turned on when you try to update it.  In my case since the NES was still in the mail on it's way to me, I simply wired an external 5v power source to the chip. The dejitter chip was built with the expectation that the programmer one might use to update it will only tolerate 3.3 volts rather than the 5V that the NES is going to be pumping into the circuit.  For this it has a resistor (R4) on the voltage pin.  After a forum conversation with marqs, I decided to short this pin because my USB Blaster is rated for 5v.


After doing this I was able to actually see the CPLD correctly in the OpenOCD interface, however it would still fail to program.

Finally I switched to a higher-current 5V power supply. The one I was initially using was rated at 700mA - and it may not have even been that high. I switched to a 2400mA supply and the OpenOCD was able to program the chip on the first try.


Step 3: Write The Instructions



Since the dejitter board was primarily designed as a SNES/Super Famicom fix and just happened to work for the NES/Famicom, most of the original instructions did not describe how to install the chip in anything else.

The Wiki at https://www.retromodwiki.com/wiki/NES_dejitter_mod did not originally have instructions for the front-loading NES (NES-001) until I provided them.  I was able to figure it out thanks to the general guidance at the beginning of that page, and the NES-001 schematic available at the excellent console5.com wiki.

The basic idea is to take the original crystal oscillator used for video processing out of circuit, and replace it with the oscillator circuit on the dejitter board.  Then the video sync signal is intercepted and cleaned by the dejitter board.  Figuring out what to do was a matter of mapping the clock circuit out with a continuity tester and comparing that to the schematic.

To prep the NES-001 for the dejitter mod, you need to remove the X1 crystal oscillator, and the C44 and C45 capacitors.  To make sure the mod board will fit, you'll also want to bend the three capacitors circled in yellow flat against the board.

Next you'll want to solder a wire between the outer vias of C44 and C45.  This connects the PPU and CPU "CLK" pins together.  Later on you'll connect the clock on the dejitter board to the CLK pin on the PPU so this will give both components a timing reference.


I recommend attaching the dejitter mod to the NES RGB like this, as it will ensure that you have access to the update socket if needed, and it lines up with the valley between the CPU and the PPU socket.

The rest of the instructions for wiring the dejitter mod to the nesrgb are available at https://www.retromodwiki.com/wiki/NES_dejitter_mod.


After installing the dejitter mod, I've tested the NES on every TV in my house and it's rock solid.  

Monday, June 25, 2018

32X Squeal Fix

Backstory


Everything I do has a little story to go with it.  If you just want to know how I fixed the Squeal issue, skip to "Resolution" below.

I bought my 32X brand new when Sega had given up on the platform and the stores were liquidating them.  I think I paid about $30 for it, then took the free copy of Virtual Fighter out of the box, went across the street to a used game shop that hadn't yet caught on and sold Virtual Fighter for $35.  So essentially I got paid $5 to take the 32X off of the store's hands.

A Tale of 2 32X's

It's probably not a wonder then that I didn't have very high expectations of the 32X, and simply dismissed the video distortion and audio squeal it introduced.  I legitimately thought it worked that way.  At the time I only had a Genesis Model 1, so I misplaced the spacer that it comes with for use with the Genesis Model 2.  About 3 years ago I went to a local used game shop and bought a whole 32X for $25 just to get the stupid spacer so I could use it with a Genesis Model 2.  The newly bought 32X was scratched up and didn't look as nice as my original, so I put the newly bought one away and continued using the one I had bought new.

You Mean It's Not Supposed To Sound Like That?

Connecting the 32X to an OSSC greatly amplified and magnified the video noise and audio squeal to the point where it was damn near unplayable, so I started searching around to see if anyone knew how to improve the situation.  I found a lot of articles and a lot of supposition, but almost nothing in the way of a solution.  One thing stood out, however.  Some users were reporting that their 32X systems didn't add any audio or video noise at all.  That got me thinking, so I pulled out the 32X I had recently bought used and swapped it out for my shiny original, and I couldn't believe it.  There was no discernible audio or video noise at all!

Conjecture

So I had one "good" 32X and one "bad" 32X.  In all of my searches for a solution, three suggestions kept coming up, but there never seemed to be any followup on a solution.

1. Power

It was suggested in a couple of places that insufficient power was a possible cause.  In my case I have been using a "Trio M2" power adapter from www.retrogamecave.com.  I would expect that if the power supply was the problem, the problem would exist with both 32X modules, but it only affected the one.  I did try switching back to the original power bricks for both the Genesis 2 and the 32X, and also alternating, but there was no detectable difference.

2. Capacitors

The next thing that came up in a few places was the fact that the 32X had one particular "Low ESR" capacitor.  ESR is the resistance a capacitor has to being charged.  High ESR can cause odd failures because a capacitor may not charge up until after a delay, or the power supply may not be able to overcome the ESR to charge it at all.  At the time I didn't have an ESR meter, so I just shotgunned the whole module, replacing all of the capacitors with brand new ones, and making sure to use a "Low ESR" capacitor in the appropriate place.  This had zero effect on the squeal or the video distortion.

3. The Inductance Coil "L7".

The lengthiest discussions I came across involved this part.  The service manual hosted at Console5.com describes L7 as "CHOKE COIL 330UH LHL13TB331K".  There were a number of users reporting that they could actually hear the coil physically squeal directly from the console even with the audio output turned off.  This was not the case with me - I only heard the noise and saw the distortion through the AV output.  After reading through several discussions, and at least one user who swapped it out without any improvement, I decided to give it a shot, but also to keep my options open.
32X main board. The original L7 inductance coil circled.

The Plan

In addition to a direct replacement, I decided to try a couple of others to see if the problem was just poor component choice.

Mouser actually sells the exact part described in the service manual.

In reading its description the thing that really bugged me was that it was described as "unshielded".  It seemed reasonable to me that a shielded inductance coil might yield better results, so I looked for coils with similar attributes - focusing mainly on inductance value, max current and maximum DC resistance.

This one was pretty close:

This one was almost exact so I decided to try it even though it was the wrong package type (surface-mount rather than through-hole):


Today I finally got around to trying them out.

The first thing I did was to replace the original with the new LHL13TB331K.  It seemed like there may have been some small improvement, but the audio and video distortion were still terrible.

The next one I tried was the 994-RFS1317-334KL.  This was the shielded coil with a slightly lower DC resistance value, but was otherwise rated the same as the original part.  The footprint was too narrow to fit directly so I had to very carefully bend the legs of the coil to fit onto the board.  There was a definite improvement with this one.  The volume of the distortion was cut about in half, but it was definitely higher-pitched.  It was better but still awful.

Resolution

By the time I got to the 81-MBH12282C-331MAP3, my hopes were not very high.  Fortunately the vias had solder pads on the top of the board as well as the bottom so I didn't have to do anything too crazy to attach it.  There's an exposed ground point directly under the spot where the coil sits. This isn't a problem for the through-hole inductors, but would have caused a short on the SMD inductor, so I covered it with a tiny corner of black electrical tape before placing the new coil on top of it. There wasn't a lot of room to maneuver but I managed to get some good solid connections.  When I fired up the 32X for the first time I couldn't believe my eyes and ears.  It was dead quiet - not even a hint of the squeal or visual distortion.  For a moment I thought I may have blown out the audio circuit, but then the game started up clear as a bell.

32X with the 81-MBH12282C-331MAP3 inductance coil installed as a replacement for L7 to fix audio squeal and video distortion.

Now I can obey Admiral Akbar, storm the imperial Death Star, and wipe out enemy fighters without distortion!

But Why?

Someone on the shmups forum challenged me to try to explain why this worked when the parts were technically the same.  My initial thought was that the new part was just "better", but the question made me consider other possibilities.  Before going into this I thought shielding might be the answer, but, then, of course 994-RFS1317-334KL did not eliminate the squeal.  Since it reduced the volume of the squeal, I'm inclined to think the shielding played a part, but it was definitely not the "smoking gun".

Possibility 1: Vibration
In my research I read that physical vibration is a factor with inductance coils.  At least one example corroborating this is the Turbo Express where the coils are covered in gray epoxy - presumably to dampen vibrations.

The shell of the LHL13TB331K and  994-RFS1317-334KL have a kind of skirt at the bottom that makes contact with the board in a circle all the way around the coil. When I first tried replacing the coil with the new LHL13TB331K, I tried to make sure to get full contact with the surface of the PCB, but in fairness, I was just eyeballing it. While it didn't appear to do much good it's possible it wasn't completely flush with the board and was allowing for vibration. With the 994-RFS1317-334KL, the legs were too far apart to fit through the vias for the original coil and putting right-angle bends in them prevented the skirt of the coil from making contact with the board at all. With the 81-MBH12282C-331MAP3 (SMD), basically the entire bottom of the coil is a conductor. I had to put a little triangle of electrical tape over an exposed ground point under the coil to keep it from shorting.  So the entire underside of the coil sits flush against the board with a piece of electrical tape serving as a cushion- it's possible that full contact and the additional cushion is allowing the PCB to absorb all of the the vibration and that's the real difference.

Possibility 2: Inductance Value
The other thing is the inductance variation between the parts. When I measured the original, and the LHL13TB331K replacement, they both registered 0.3mH. It isn't exact, but it's at the low end of tolerance. The 994-RFS1317-334KL measured 0.33mH - exactly as rated, and it _did_ seem to make an improvement. Since my component analyzer doesn't have an easy way to measure SMD parts, I used DMM probes to measure the MBH12282C-331MAP3 and got 0.36mH. I assumed the DMM probes were going to introduce a certain amount of inductance by themselves and that might be throwing the reading off so I dismissed the difference. But since the question was asked, I went back and measured the LHL13TB331K using the same probes and got 0.3mH - meaning that the probe wires weren't throwing the measurement off as I had assumed, and the SMD coil does have a significantly higher inductance value.

The LHL13TB331K is rated at 330uH with a tolerance of 10%, meaning anything from 297uH to 363uH _should_ technically be acceptable, and the MBH12282C-331MAP3 is still within this margin, but in practice at the opposite (high) end compared to the original part.  From what I've been reading about coils, this shouldn't make that big of a difference, but who knows?

So, to recap, although the MBH12282C-331MAP3 has the exact same ratings as the original coil, it's also shielded, has nearly 20% more inductance, and is almost definitely making better physical contact with the PCB.

I have no intention of fussing with that 32X any further now that it's working perfectly, but logically if you wanted to try fixing it without replacing the coil, you could try doing something to dampen the coil by fixing it to the board, like using a soft epoxy to fix the coil to the board.

Tuesday, June 19, 2018

3DO FZ-10 Rescue

The 3DO isn't a great platform.  It's also not a particularly bad one either.  I've only ever met one person who professed nostalgia for it (specifically the game "Twisted").  There aren't really any "killer app" games for it.  Supposedly its version of Need For Speed is superior to the Playstation version in some way (I never bothered investigating the rumor).  There are a handful of interesting games.  Star Control II, a couple of Wing Commander titles, "D", etc... Regardless it's still a great piece of gaming history and represents an alternate view of the way things may have gone.  Comparing it to the other consoles of its time, the best way I can sum it up is to say that the 3DO iterated where the Playstation and Saturn innovated.  Like the Atari Jaguar, the 3DO was more of an extension of the 16-bit arc rather than the start of a new 32-bit trajectory.

I'm in the process of getting ODE's for all of the platforms I can, and this was next on my list.  Optical Drive Emulators (ODE's) are all the rage in the retro gaming community right now.  Think of them like flash carts for your disc based systems.  The ODE either replaces or bypasses the spinning disc drive and loads games directly from solid state media like SD cards or USB drives.

Attached to every review of an ODE is usually a sage treatise on the limited lifespan of optical drives and how they're getting rarer and rarer.  These drives have moving parts and that means friction which means wear, so logically they will eventually break down, but I think the notion that all optical drives are going to suddenly die enmasse in the next 20 years is just amateurish prognostication and sensationalist tripe.  I love these things because I can have the entire library (or at least large chunks of it) on a console at once. That's pretty much it.  I'm not worried about drives dying.

Someone going by MNEMO from Russia makes and sells a 3DO USB Host Controller.  The prices vary wildly, with one of the cheaper being the version for the FZ-10.  I once passed up an opportunity to buy an FZ-10 for about $50 when Best Buy was liquidating them. _Facepalm_  At the time I already had an FZ-1, and my impression of the FZ-10 was not good - if they reduced costs by replacing the tray loader with a lid mechanism, it seemed likely they cut corners in other aspects as well and to my mind, cheaper meant less reliable. The reality seems to have turned out the opposite as the FZ-10 is now pricier than the FZ-1 on Ebay.

What I needed was a cheap FZ-10, so I watched Ebay for broken "for parts or repair", and eventually this one popped up:

The only thing the seller reported wrong with it was the missing lid latch, but of course it "wasn't tested with any discs".  I asked the seller if the machine displayed an image when plugged into a TV and turned on.  He sent me a photo of the startup screen displaying, so we haggled on price and I got a pretty decent deal (about 1/3 of the going price of one in working condition).  I figured if the drive was toast, the console would probably still work just fine with the ODE.  The visible dirt on the outside of the console was a little worrisome, but I thought "how bad could it really be?"...

When the machine arrived the first thing I did was try to turn the spindle motor by hand.  It barely turned and felt like it was grinding - probably a lost cause.   Next I opened the case up and took a look inside.  I found a couple of splashes of mud on the PCB, the lid switch was stuck, and the CD drive mechanism was stuffed full of fuzz, hair and what looked like dessicated insect parts.  I removed the CD drive mechanism, and detached the spindle motor.  After giving it a good brushing with a toothbrush, I gave it a shot of silicone lubricant on the spindle shaft and after a turn or two, it spun freely.  After looking closely at the spindle, there's some kind of tension spring pressing against the shaft and I *think* that's what was gunked up.  So with the motor turning freely I thought I might have a chance of getting it working - as long the motor hadn't been burned out when it was seized up.

Next I disassembled the rest of the CD drive mechanism, cleaned each part with a toothbrush and naptha to clear away all of the grit and fuzz.  I also used soap and water on the plastic bits.  I carefully cleaned all of the existing grease from the laser transport rails, the laser and the gear teeth using a toothbrush and q-tips, then replaced it with a fresh application of lithium grease.  Once reassembled, I made sure to turn the grooved shaft that moves the laser mechanism by hand putting it all the way through it's range of travel, and sure enough it hung up part-way through because I had missed some grit in the groove, so I took it apart again, and used a stiff piece of paper to completely clean the groove, re-lubed everything and reassembled it.  This time it went all the way through its range of travel without getting caught.

Once the CD drive was back together, I gave all of the ribbon sockets a shot of Deoxit.  I also gave the lid switch a shot of it and moved it until it stopped sticking.  I took a lint-free swab and carefully cleaned the laser lens with 91% isopropyl. With the drive plugged back in, I plugged the 3DO into my monitor, popped a game disc in, turned it on, and to my utter surprise the CD drive came to life and loaded a game without a hitch!  I listened carefully for grinding noises or any other signs or damage or remaining grit in the mechanism, but if anything it sounded quieter and smoother than my FZ-1.  Let's see a first or second generation PS1 do that!

So at this point I had a fully working console, but what I could see of the motherboard was filthy.  I've seen "dirty" consoles before, but never one with actual dirt in it.  I say "what I could see" because about 2/3 of the motherboard is covered by a large thick RF shield.  Based on what I could see, I knew I wanted to take this thing outside and give it a good blow out with my air compressor rather than getting my workspace dirty, but when I unscrewed and removed the RF shield, this is what I found:

No, it's not what you're thinking - unless you were thinking it was two lovely mud dauber nests.  Somehow the minerals in the mud weren't enough to interfere with the proper operation of the console!  These nests were so solid that a full blast from my air compressor barely knocked any of them off.  I had to carefully peck and blast at it for about 15 minutes to get most of it off.  Once it got down to the last little bit I had to turn the motherboard upside-down over a sink, and scrub it off with distilled water and a toothbrush.  Holding it upside-down helped minimize spreading mud around the board.

After getting all of the visible mud off with distilled water, I gave it a good scrub with 91% isopropyl, and then a shot of naptha.  I used q-tips to spot clean any remaining filth, then sprayed the whole board with Deoxit to clear away as much of the oxidation as possible.

The bottom half of the console had evidently been submerged in water at some point as the RF shield was covered in huge splotches of rust, and the rust had embedded itself into the plastic of the case.  I soaked the bottom half of the case, including the RF shield in CLR for about 30 minutes then gave both a good scrub with an SOS pad, and a final wipe down with naptha.

With everything cleaned, dried and reassembled, I removed the spring from the door mechanism so it would stay shut without being clasped, popped a disc in and validated that I hadn't damaged anything while cleaning it.  As before, the game loaded immediately.  I played for about 30 minutes to make sure there weren't any overheating issues.

Since it's not in my nature to leave well-enough alone, I opened it back up to perform a 240p video mod on it which also went over without a hitch.
Externally mounted DPDT (On-On) switch to select 240p/480i.  Internally, pin 52 of the video encoder has been lifted from the board.  The center pole of the switch is wired to pin 52, the top pin is wired to pin 55 (55 is connected to Vcc so this pulls pin 52 high), the bottom pin is wired to pin 52's landing on the motherboard.


I found a replacement part for the clasp:
https://kpcomponents.co/products/cd-player-door-latch

That link is not the exact one I bought - I actually found one on Ebay that arrived more quickly but since Ebay removes listings after a certain age, it seemed pointless to link to it.  These seem to be pretty standard, though.  I've found many different listings for them, but I've only found them in one size.  Just search Google Images for "cd player lid latch" and you'll see half a dozen of them. Unfortunately I wasn't able to find a consistent part number or model number.  I did, however, find two other CD players in my house that happened to use the exact same connector so these are all over the place.  If you can't find one for sale, you might have luck going to a garage sale, Goodwill or some other second hand store and picking up a cheap CD player to cannibalize for the part.

Once I popped the spring back in and inserted the new lid latch, the restoration was mostly complete.
New generic lid latch installed in the FZ-10.  Works and looks original.

The only thing still missing was the plastic lens piece that the "ready" and "access" LEDs shine through.  Unlike the lid clasp, I didn't find any remains of the piece inside the case.
The lenses that catch the light for the Ready and Access lights were missing when I bought it.

The LEDs are bright enough that edges of the holes still light up green and red.  But unlike the lid clasp, the LED lens piece is clearly purpose made for the FZ-10 so the only way to get another one would be to cannibalize another 3DO.  After thinking it over for a while I decided on a solution. There's a rectangular bracket-like structure on the underside of the case, so I cut a piece of packing foam (the soft squishy kind that some monitors and TVs ship in now - I think it's the same kind of stuff that pool noodles are made of) to fit snugly in the bracket, then I covered the top of it with silicone sealant.

Foam piece with silicone sealant pushed up through the holes


Next I gently pushed it up into the slot so the silicone barely started to squish through the top.  The surface tension resulted in the convex curve like the originals had.
Not bad for a first attempt.  If I had used crystal clear silicone it would probably have been a nearly perfect match.

I let the silicone cure, then carefully augured holes in the foam under the opening to let as much light as possible shine through.  The result was pretty decent for a first attempt.  There are two things that would have made it better.  First, I should have used a silicone that would cure crystal clear.  I just used whatever I had on hand which turned out to cure a little white and cloudy.  Second, I should have made sure the top surface of the silicone was perfectly smooth before pushing it up into the holes.  There were streaks in it which are visible up close.  Had I done those two things I think this would have been indistinguishable from the real thing from the outside.

The result is not a perfect match, but it "works" and it's a lot better than open holes IMO.


After all that, it feels more like I've rescued an abused and abandoned puppy rather than refurbished a piece of Ebay junk.  I'm still blown away by the fact that this console is still working.  These things seem to be built like tanks.

Now all that's left is to get that USB Host Controller.  I've placed my order, but these things are (apparently) hand made and there's only one guy doing it, so it may be a long wait.