Skip to content

Arikatsu/Nemu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nemu

A Game Boy (DMG) emulator written in Rust.

This repo contains:

  • nemu-core: Core emulation logic as a Rust library + a built-in debugger binary + custom boot ROM source code
  • nemu-gui: GUI for running ROMs

Getting Started

Requirements:

Clone with submodules:

git clone --recurse-submodules https://github.com/Arikatsu/nemu.git

Build the boot ROM:

cd nemu_core/bootrom
./build.sh # OR .\build.ps1 on Windows PowerShell

Run tests:

cargo test -p nemu-core --lib

Run with the debugger:

cargo run -p nemu-core --features debugger

Run with the GUI (supports game saves):

cargo run -p nemu-gui -- <path_to_rom>

Current Status

Features implemented so far:

  • Full CPU instruction set and emulation
  • Bus and memory mapping (partial, will evolve as more features are implemented)
  • Timer
  • Interrupt handling
  • Debugger
  • Background/Window rendering and PPU mode switching
  • Sprite rendering
  • Joypad input
  • Custom Boot ROM (currently only does basic initialization, plan to show my own boot animation later)
  • GUI for running ROMs (nemu-gui)
  • MBC cartridges
    • ROM only
    • MBC1 (ROM + RAM + BATTERY)
  • Serial
  • Sound
  • Save states

List items may be updated or even changed as development progresses and does not indicate a strict roadmap.

Passing Tests

  • Blargg's CPU instruction tests
  • Blargg's CPU and Memory instruction timing tests
  • dmg-acid2 test ROM

(need to test more lol)

Notes

  • The project is still under active development and may contain bugs or incomplete behavior.
  • Contributions, bug reports, and feedback are welcome.
  • Yes, I have NOT come around to adding the HALT bug yet.

About

A complete Gameboy (DMG) emulator in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages