A Gameboy Classic and Gameboy Color emulator written in Rust
- Clone the repository into your desired directory
- Change to the project directory
- You can either run the shell script using
./run.shor runcargo build --release - Running the emulator can be done by
cargo run --releaseor by changing directory totarget/release. - You can add this binary to
~/.local/bin/in linux orPATHin windows. - You can run test roms and sample games added in
/test-roms. You can run any.gband.gbcroms on this emulator. (Note: Make sure to extract the ROMs before running).
Then you can explore the ability of the emulator by gb_em --help. Which outputs
A Gameboy Colour emulator written in Rust
Usage: eb_em [OPTIONS] <filename>
Arguments:
<filename> Sets the ROM file to load
Options:
-s, --serial Prints the data from the serial port to stdout
-p, --printer Emulates a gameboy printer
-c, --classic Forces the emulator to run in classic Gameboy mode
-x, --scale <scale> Sets the scale of the interface. Default: 2
-a, --audio Enables audio
--skip-checksum Skips verification of the cartridge checksum
--test-mode Starts the emulator in a special test mode
-h, --help Print help
-V, --version Print version
Now you can look below for the Keybindings section below.
| Key on Keyboard | Emulator Key |
|---|---|
| Z | A |
| X | B |
| Up/Down/Left/Right | Up/Down/Left/Right |
| Space | Select |
| Return/Enter | Start |
| Key on Keyboard | Emulator Action |
|---|---|
| 1 | Switch to 1:1 scale |
| R | Restore scale given on command line |
| Left Shift (Hold) | Unrestricted Speed Mode |
| T | Change pixel interpolation |
- CPU
- All instructions correct
- All timings correct
- Double speed mode
- GPU
- Normal mode
- Color mode
- Keypad
- Timer
- Audio
- MMU
- MBC-less
- MBC1
- MBC3 (with RTC)
- MBC5
- save games
- Printing
- GameBoy Advance support
- Making the emulator cycle-accurate
- Adding better support for sound
- Adding UI support for ROM opening
- Game save and reload
The test mode, activated with the --test-mode flag, provides some functionality for running
GBEmulatorShootout. This is still under development.