Caution
Firstly, this doesn't compile and from the brief 30 minutes I put into it, is not trivial to fix
This is very bad rust code. It is not performant at all. I rebuilt a Go version in a couple weeks that beats this in about every metric.
I only leave it up here for those that are nonetheless curious.
For me, at the time I remember being very obsessed with understanding algebraic data types and definitely approached this project with a mentality that a single hammer is all you need. This was a learning moment for me that simplicity cannot be understated, and to be considerate about the techniques you choose to deploy in your applications.
Regardless, I'm still proud that I put a lot of effort into trying to make it work !
Cause that hasnt been done before.
- The code is extremely rough. View at your own discretion.
- Software Renderer
- Parse and decode instructions from gameboy binaries
Render image of Tetris main screen
- CPU - Passing blargg's cpu_instr test suite, sans interrupts
- Pass "02-interrupts.gb"
- Create Github Action to test these gb files by reading from I/O port
- MEM - Some memory access issues are still in place.
- Research, fix memory R/W issues
- SOUND
- This will be a long one. Low priority
- GFX
- Still some inaccuracies. I will not be implementing the full PPU operations
- WebAssembly Port
- Writing a Game Boy emulator, Cinoop, CTurt: https://cturt.github.io/cinoop.html
- GameBoy Emulation in JavaScript: GPU Timings, Imran Nazar: http://imrannazar.com/GameBoy-Emulation-in-JavaScript:-GPU-Timings
- GameBoy Opcode Summary, Jeff Frohwein: http://www.devrs.com/gb/files/opcodes.html
- GameBoy CPU Manual, Pan of Anthrox et al.: https://realboyemulator.files.wordpress.com/2013/01/gbcpuman.pdf
- Pan Docs, Pan of ATX et al.: https://gbdev.io/pandocs/
- mooneye-gb, Game Boy research project and emulator, Joonas Javanainen: https://github.com/Gekkio/mooneye-gb