Emulators are a great way to play retro games from many favorite consoles, including the Sega Saturn, PlayStation, SNK’s Neo Geo, and Nintendo’s Game Boy. To get programs (in this case, game ROMs) to run on those emulators, they have to ‘act’ like the physical hardware — meaning they have to simulate all the abilities of hardware components as software components. CPUs, GPUs, sound chips, and even CD ROM drives in some cases, all need to be simulated, which is not an easy task.
One of the methods programmers design complex emulators is to take as many shortcuts as possible without compromising the system’s ability to play games. Going this route also reduces the number of resources needed for emulation, but it does have drawbacks, most often manifesting in a reduction of game compatibility and overall accuracy of the emulator.
Then there is the opposite approach to the shortcut method — the full-on compatibility approach by simulating the hardware down to the circuit level, which is what emulator guru “aappleby” has done with his MetroBoy Game Boy emulator. By going this route, the emulator soaks up a ton of CPU cycles to get the emulation as near perfect as possible, but most modern PCs and laptops should be able to handle the load.
aappleby wrote the emulator in C++, which allowed him to construct the simulated circuitry, explaining, “MetroBoy is more like a Verilog simulation of a Game Boy that’s been translated into C++. You can also think of it as being written in a subset of C++ that’s designed to be mechanically translated into synthesizable Verilog.”
The MetroBoy emulator is now available for download, but aappleby states that since it’s the first public release, there are bound to be all kinds of bugs, and it will only run original Game Boy ROMs, and no others.