Bridging Emulation and the Real World with the Nintendo Game Boy

No ratings

Presented at BlueHatIL 2019 by

​Nintendo's Game Boy Advance is a superb embedded system for homebrew development. It has well documented specifications, is complex enough for some impressive software, and yet is adequately simple enough for people to understand virtually every aspect of it. The field of Game Boy emulation is well established and already has a large body of software written for it. I set to research the system with a specific goal in mind, arising from an actual need - connecting an existing, working, emulator, Visual Boy Advance, to a real-world Game Boy Advance.The Game Boy communicates over cable with up to three other systems using several proprietary communication protocols. One such protocol allows loading arbitrary code to the RAM of another Game Boy and booting from it. It has been widely used by the homebrew community for easy development and testing on a real device. Another protocol allows sharing of data for multiplayer gaming in real time. Little research has been focused on this protocol, and its implementation in emulation, which is essential for the emulator-Game Boy link.This talk discusses the research methods and tools used to reverse engineer the communication specifications, implement an embedded circuit to perform the necessary data transfer, and integrate it into the emulator, spanning all levels from hardware to software.