Acknowledgements
×
Since I still haven't got around to open-sourcing this thing with a proper list of acknowledgements, here's a rundown of inspiring / useful stuff I referenced.
-
Pan Docs
— The most comprehensive reference for all things Game Boy. Always the first port of call for "wait, what is this supposed to do?"
-
GameBoy-Online
— the only vaguely-functional JS-based emulator that existed when I first started this. There were a few others, but this one
was way more comprehensive and less janky and supported Game By Color too. This was my point-of-truth reference for all my initial implementation —
I would check that every register matched on every instruction. Even now there's only minor divergences (namely, fixing the interrupt delay on RETI
for Mega Man V, and improving mid-instruction timing for Asterix & Obelix).
-
GBA.js
— Primarily the audio engine which I used as reference (the GBA has basically the same audio engine, just with some extra bits tacked on). It's
still a dream of mine to have a go at making my own full GBA emulator in JavaScript like this, but that's a whole lot more daunting.
-
mGBA
(which to my shame I didn't realise until alarmingly recently is by the same person as GBA.js) — Especially useful for referencing the behaviour of
all the various memory mapper chips. Probably the easiest to follow (for me at least) and definitely the most comprehensive. Although it is a bit naughty
in its emulation of the Super Game Boy (ignores the fact that it's supposed to be disabled for Pac-Man & Ms. Pac-Man color edition; does some weird
stuff on the Tetris 2 title screen).
-
SameBoy
— my current go-to for "most accurate emulation to compare against" when going past the limits of GameBoy-Online. Saved my bacon a whole bunch of times,
especially in the emulation of Super Game Boy & Camera features.
-
Game Boy hardware database
– so incredibly useful to be able to look up games by which type of memory mapper chip they use so I know what to test.
… and also a whole bunch of other manuals and documents: