A CHIP-8 emulator written in Odin.
Note: This has only been tested on macOS arm64, but it should work on all platforms on which Odin can run.
- Build the application.
make build-desktop- Run the application and pass a ROM as the only positional argument.
./build/desktop/app.bin ../../roms/BRIXNote: The web build is currently hardcoded to the Space Invaders ROM.
- Build the application.
make build-web- Run it.
cd build/web
python -m http.server # or your preferred method for running an HTTP server- Navigate to
http://localhost:8000
Raylib is used as the frontend in the app package in this repository, however, there is no particular frontend implementation tied to the CHIP-8 library in lib/chip8. You could use the chip8 package as an emulator library and add your own frontend with another graphics library in place of Raylib or the web build.
I'm early in my Odin learning and emulators have begun to interest me, so it seemed like a great opportunity to combine the two. Yes, there are many CHIP-8 emulators out there, but this one is mine written in Odin.
- Cowgod's technical reference - The technical reference.
- CHIP-8 Rust book and ROMS - This book was immensely helpful with great explanations and examples.
- JavaScript blog post - A useful blog post of an emulator written in JavaScript.
- CHIP-8 ROM test suite - Useful ROMS for testing your emulator.
- Beep - The beep sound from OpenGameArt.
- Odin Raylib Web Template - Karl's amazing template for Odin Raylib apps on the web.
