jsGB: A Gameboy emulator in JavaScript
jsGB is an interpretive emulator of the Gameboy, designed to be run from within a web browser. Yes, it's written in JavaScript.
Current progress
- ROM loading
- At present, the test run can load a ROM given a known path to the server. This is done by fancy AJAX, and thus it should be possible to display a dialog of available ROM files, or allow for upload of ROM files. That's for later, of course.
- CPU
- All instructions in place; all the common ones are tested working. One known issue is that half-carry isn't calculated.
- GPU
- Background: Palette in place, Y-scroll and X-scroll tested working. The BIOS "Nintendo" logo appears. Windows: missing.
- Sound
- I've no idea how this can be done from JavaScript; this is unlikely to be implemented.
Test Results
The emulator currently works in the following browsers:
- Firefox 3.6 (slightly slow, as to be expected)
- Opera 10 (quick)
Screenshots
- Tetris
Acknowledgements
The following people have helped contribute to this project:
- Pan/ATX, nocash and others: Pandocs specification document
- Sean Young (CS dept, Vrije University): Z80 opcode map and specification document
- Mostek: Z80 timing specs
- Pat Fagan: Diff sheet between Z80 and Gameboy Z80 CPUs
- Kevin Mantey (Physics dept, UIUC): First microscopic dump of the Gameboy BIOS
- Arvidsson/Eklund/Murphy: ExCanvas for IE
- Andy Na: XHR binary file reader
Imran Nazar <tf@imrannazar.com>, May 2009 - Aug 2010