MegaBoy
Platform: PC
Dev tools: C++, SDL, ImGUI
Primary project goals:
- Create a physical "Gameboy Mini" console with USB, HDMI and real cartridge support
- Creating a humorously over-the-top modern console experience for gameboy games (i.e. online dashboard, social, download patches, save states, etc.)
Secondary project goals:
- Practice some modern C++ features
- Try writing an emulator from scratch
Developing the basic hardware emulation was fun, but took a pretty long time.
I struggled a bit with a lot of the documentation on the CPU contradicting eachother with regards to flag behaviour etc.
I ended up creating a quite fun and interesting take on unit testing the instructions: I created an instance of the CPU, programmed the instruction under test into it's main memory, and did a single step to execture that instruction. Afterwards i evaluated all the registers and flags, to see if the instruction behaved as intended.
Additionally, i found a lot of test roms and instruction set exercisers, which was also of great help in validating system behaviour.
For more info and up to date status, source, etc. check out the projects GitHub page:
https://github.com/megakode/MegaBoy