Furrtek has just posted a video that gives us a glimpse into how he decaps his chips and how he begins his reverse-engineering process. To anyone unfamiliar with this, please allow me to explain:
In order to create accurate FPGA (hardware emulation) cores, you essentially need to recreate the original hardware in HDL (Hardware Description Language), which is more similar to a schematic than traditional coding. In HDL, you map out what each component is and how they “talk” to each other on the board in real time. These hardware “cores” are then flashed to an FPGA, whose logic elements are then physically rearranged to match.
While none of this is easy, some things are more straightforward than others. You can trace the lines between each component, and simple things like resistors and capacitors are (usually) easily identifiable. Also, some of the components on the board may be common off-the-shelf parts that offer datasheets about how they work. If not, someone else may have already reverse-engineered the ‘generic’ component and have FPGA data on it already. These modular parts are usually referred to as “soft cores” and can be ‘plugged’ (via software) into a core, almost like a socketed IC.
But what about the proprietary, custom chips?
That’s where things get even more complicated, but a few talented heroes of the retro gaming scene are here to help! Now, as far as I understand (and I’m nowhere near as smart as these developers), there are a few ways to figure out how a custom chip works, each deserving of their own post. The method Furrtek shows in this video is called “decapping”, which involves removing the hard material around the chip and analyzing it’s internal ‘blueprint’ under a microscope.
Now, a good way for a laymen (me ;p) to understand what’s inside a complicated processing chip is this: Imagine that main motherboard the chip is on. Picture all the components, traces and configurations. Now picture that shrunk down to 1/100th of the size, all jammed into a 1-inch-squared device and coated in a hard black opaque material. Crazy right?
So after doing the tremendous work of reverse-engineering the motherboard, developers then need to follow a similar process on the decapped chip, using a microscope. The black box approach is another way to reverse engineer chips, but that is another article altogether. Depending on the complexity of the board and platform, this total process can take hundreds, if not thousands of hours to complete, but if done correctly, it can result in a cycle-accurate FPGA core. For things like computers and consoles, all that work translates into hundreds or thousands of games per platform. For arcade boards, that might only result in a handful of games, making the mark that much more impressive and painstaking. All are now available on open-source platforms such as the MiSTer project, which let basic-to-intermediate users experience them at home: https://www.retrorgb.com/mister.html
In addition to acid, lasers are also used to decap ICs
The end results of all of this is a core that when being played is completely indistinguishable from original hardware, which results in both an amazing gaming experience and an incredible way to preserve and archive the hardware they were built on. Another bonus of HDL, is it’s the actual blueprint that’s sent to fabricate real chips for manufacturing. That means once all the original hardware is dead and gone, it can be recreated on a chip…provided it was recorded perfectly in HDL. Theoretically, you can model any digital circuit in HDL as a 1:1 exact copy, indistinguishable by human or machine, but few cores will ever reach that level of perfection. Still, this perfect accuracy is the end-goal of any FPGA endeavor, even if it is very long-term.
Let’s all take a moment to reflect upon the importance of that. If this classic hardware is as important to you as it is the rest of us, please consider supporting the people keeping it alive. Not all FPGA developers have support platforms, but I support everyone who does, as I truly appreciate the effort and importance of what they’re doing. Please remember that it’s not about the amount of support donation, it’s about the quantity: If everyone who uses these cores (and can afford to) donated just one dollar, the developers would be much better compensated for their time. And if you can’t afford it, that’s totally fine, but please help spread the word:
Official MiSTer Patreon and PayPal Donation: https://github.com/MiSTer-devel/Main_MiSTer/wiki/Donate
Furrtek: https://patreon.com/furrtek/
Jotego: https://www.patreon.com/jotego
MrX-8B: https://patreon.com/MrX_8B/
laxer3a: https://patreon.com/laxer3a/
(please let me know if I’m forgetting anyone)