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.sh
or runcargo build --release
- Running the emulator can be done by
cargo run --release
or by changing directory totarget/release
. - You can add this binary to
~/.local/bin/
in linux orPATH
in windows. - You can run test roms and sample games added in
/test-roms
. You can run any.gb
and.gbc
roms 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.