Coder Social home page Coder Social logo

oxidegb's Introduction

OxideGB

OxideGB is a Game Boy emulator written in Rust, mainly for learning purposes. A lot of features are currently work in progress, most games work, but expect some bugs!

The emulator is implemented as a lib with a simple CLI frontend using pixels for display and winit for handling input. The MSRV is tied to the latest Rust stable release.

Usage

The CLI is as follows:

Usage: oxidegb [OPTIONS] <FILE>

Arguments:
  <FILE>  The rom file to load

Options:
  -s, --save-file <SAVE_FILE>        The save file path to use. By default, oxidegb will load and save from a sav file with the same base name as the rom file
  -b, --bootrom-file <BOOTROM_FILE>  The bootrom file to load
  -i, --info                         Display rom header info
  -d, --debug                        Enable the debugger
  -f, --fast-forward                 Do not limit fps
  -h, --help                         Print help
  -V, --version                      Print version

Controls are hardcoded for now to the following keys:

  • D-Pad: Keyboard keys
  • Buttons:
    • A: K
    • B: J
    • Start: I
    • Select: U
  • Save states: 1-10 to save in the corresponding slot, Caps + 1-10 to load
  • Fast forward toggle: F
  • Start debugger: P (type help for a list of commands)

Progress status

  • What's working
    • CPU and PPU implementation
    • Most mappers (Rom only, MBC1, MBC2, MBC3 with RTC, MBC5)
    • Basic command line debugger
    • Cartridge RAM save, including RTC data
    • Save states
  • What's not:
    • APU (in progress)
    • Game Boy Color mode

Validations ROMs

Blargg Rom Status
cgb_sound
cpu_instrs ✔️
dmg_sound
halt_bug
instr_timing ✔️
interrupt_time
mem_timing ✔️
mem_timing_2 ✔️
oam_bug

oxidegb's People

Contributors

kanabenki avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.