gameboyr

Crates.iogameboyr
lib.rsgameboyr
version0.4.0
sourcesrc
created_at2022-07-12 13:34:19.30194
updated_at2023-04-18 02:33:53.47467
descriptionA Gameboy emulator written in Rust
homepage
repositoryhttps://github.com/jordanshatford/gameboy-r
max_upload_size
id624365
size335,911
Jordan Shatford (jordanshatford)

documentation

README


Logo

GameboyR

Language: Rust Crates.io version Crates.io downloads Crates.io license MIT

A Gameboy emulator written in Rust.
crates.io/crates/gameboyr ยป

A Gameboy emulator written in Rust. This emulator supports both Gameboy and Gameboy Color. A checklist of implemented features can be found below.

How to Use:

You can run the emulator using the following command and specifying the path to your rom:

$ cargo run --release -- "./path/to/rom.gb"

The following options can be specified

-s, --save          Path to .sav file of the specified ROM (Default: location of ROM)
-x, --scale         Scale the window by a factor of 1, 2, 4 (Default: 1)
    --skip-checks   Skip header checksum and nintendo logo checks for ROM
    --no-audio      Run the emulator without using audio

With Crates.io

You can install the emulator from Crates.io using:

$ cargo install gameboyr

Then run the emulator using:

$ gameboyr "./path/to/rom.gb"

The options specified above are also available here.

Controls:

                    __________________________
                  |                          |
                  | .----------------------. |
                  | |  .----------------.  | |
                  | |  |                |  | |
                  | |  |                |  | |
                  | |  |                |  | |
                  | |  |                |  | |
                  | |  |                |  | |
                  | |  |                |  | |
                  | |  |                |  | |
                  | |  '----------------'  | |
                  | |______________________/ |
                  |                          |
                  |    .    GAMEBOY R        |
     Up           |  _| |_              .-.  | ---> Z
Left + Right <--- |-[_   _]-       .-. (   ) |
    Down          |   |_|         (   ) '-'  | ---> X
                  |    '           '-'   A   |
                  |                 B        |
                  |          ___   ___       |
                  |         (___) (___)  ,., | ---> Space / Enter
                  |        select start ;:;: |
                  |                    ,;:;' /
                  |                   ,:;:'.'
                  '-----------------------`

Implemented:

  • CPU
    • Registers & Flags
    • Instruction Set
    • Timing
  • MMU
    • Work RAM (WRAM)
    • High Ram (HRAM)
    • HDMA & GDMA
    • Speed switch
  • I/O
    • Video Display (PPU)
    • Sound Controller (APU)
    • Joypad Input
    • Serial Data Transfer
    • Timer
  • Cartridges
    • None (32KByte ROM only)
    • MBC1 (max 2MByte ROM and/or 32KByte RAM)
    • MBC2 (max 256KByte ROM and 512x4 bits RAM)
    • MBC3 (max 2MByte ROM and/or 64KByte RAM and Timer)
    • MBC5 (max 8MByte ROM and/or 128KByte RAM)

References:

Commit count: 127

cargo fmt