A Gameboy emulator written in Rust, compiled to WebAssembly, and running in the browser.
Visit the website, load your ROM and begin playing! The emulator uses:
- Arrow keys for Up, Down, Left, and Right
- A and S for A and B
- Enter and Space for Start and Select.
To try it out locally:
$ cd www
$ make
The emulator will be running at localhost:8080
.
Note: These images were taken with a different colorization algorithm. The current version of the emulator uses a slightly different algorithm for efficiency and colors will appear different.
I am grateful to the direct and indirect help from several people to make this emulator possible.
SameBoy: Initially my emulator didn't refer much to SameBoy but as accuracy became of interest I heavily copied some of SameBoy's approach to accurately emulate the more complicated parts. In particular I want to thank the creator of SameBoy (The Great) LIJI, whom I hounded with questions almost daily on the gbdev discord server.
Binjigb: I used this as a reference for implementing some of the frontend logic. This includes an event based emulation driver, as well as some WASM stuff.
WasmBoy: I want to thank torch2424, the creator of WasmBoy for initially suggesting using an event based emulation driver as well as offering advice on switching from RAF to setTimeout.
gbdev: I wouldn't have been able to complete the emulator without the daily help I got from members of the gbdev discord community.
Pandocs, Blargg, Mooneye-gb, AntonioND, mattcurrie: These docs and tests were invaluable!