This is a hobby project to learn Rust and explore hardware emulation. The goal is to emulate the original GameBoy—not to create a final product, but as a way to learn and have fun in the process.
Note: This project is not intended to be a production tool. The focus is on learning and exploring hardware emulation in a hands-on way.
✅ Emulation of the GameBoy's Z80-like CPU
✅ Implementation of the memory bus and register mapping
✅ Rendering via PPU (in development)
✅ Support for the GameBoy boot ROM (in development)
✅ Compatibility with games and hardware tests (in development)
✅ CLI to run the emulator, execute tests, or disassemble memory sections
These resources have been essential for building the emulator:
- 📚 PanDocs - GameBoy Specifications
- 🛠️ Mooneye - Testing and debugging tools
- 🔢 GameBoy OpCode Table
- 🏁 Disassembly of the GameBoy Boot ROM
- 🏁 sm83 - GameBoy CPU JSON tests
1️⃣ Clone the repository:
git clone https://github.com/joserochadev/EmuChan.git
cd EmuChan
2️⃣ Compile the project:
cargo build --release
3️⃣ Run the CLI:
The CLI allows you to:
- Run the emulator
- Execute a specific test
- Disassemble a memory section
Run the emulator with a ROM:
cargo run --release -- run path/to/rom.gb
Run a specific test from a JSON file:
cargo run --release -- test path/to/test.json
Disassemble a section of memory:
cargo run --release -- disassembler 0x0000 256
(This disassembles 256 bytes starting at address 0x0000.)
Show help message:
cargo run --release -- help
This project is not commercial and is intended for learning purposes. However, if you have suggestions or improvements, feel free to open an issue or submit a pull request! 🚀