A Game Boy emulator written in Java.
Render engine: libGDX
Sound engine: TuningFork
The Rust programming language is kinda sexy, isn't it? The problem is, I can't speak nor write it. To change that and make learning a new language not quite so boring, I wrote this emulator as a base for a port. The plan is to rewrite Anemulator in Rust, hopefully learning the language in the process.
Due to the special reason for Anemulator's existence (see Motivation), the code has a few oddities:
- I put little emphasis on accuracy
- There is a lot of duplicate code, e.g. in the implementation of the CPU instructions, to have a good documentation base
- I didn't implement hardware I didn't feel like reproducing: serial port, cycle accurate DMA transfer, some MBCs
- Renders the TileMap and BG-Map next to the Game Boy screen
- No GUI support for loading ROMs
- GPU/PPU renders a full scanline per tick
Taking into account that I didn't really care too much about hardware accuracy, most games run surprisingly well.
On the other side... most Test Roms fail.
A few games I've tested:
ROM | Result |
---|---|
Dr. Mario | ✅ |
Tetris | ✅ |
Kirby's Dream Land | ✅ |
Super Mario Land | ✅ |
Donkey Kong Land | ✅ |
Pinball Deluxe | ✅ |
F-1 Race | ✅ |
Alleyway | ❌ |
Bionic Battler | ✅ |
Batman - The Video Game | ✅ |
Boxxle II | ✅ |
Mega Man - Dr. Wily's Revenge | ✅ |
Super Mario Land 2 - 6 Golden Coins | ✅ |
Pokemon - Blue Edition | ✅ |
Super Mario Land 4 | ✅ |
Legend of Zelda, The - Link's Awakening | ✅ |
Jurassic Park | ✅ |
Legend of Zelda, The - Link's Awakening DX | ✅ |