MagenBoy icon indicating copy to clipboard operation
MagenBoy copied to clipboard

GameBoy and GameBoy Color emulator written in Rust

MagenBoy

A GameBoy emulator developed by me.

The main goal of this project is to be able to play Pokemon on my own emulator.

Implemented Cartridges Types

  • Rom (No MBC controller)
  • MBC1
  • MBC3

More will be added if neccessary (and by neccessary I mean if games I want to play will require them)

How to use

magenboy [path_to_rom] [other_optional_flags]

Optional flags

  • --log - Print logs in debug mode to a file
  • --file-audio - Saves the audio to a file
  • --full-screen - Full screen mode
  • --no-vsync - Disable vsync
  • --bootrom [path to bootrom file] - Specify the path for a bootrom (If not specified the emualtor will look for dmg_boot.bin at the cwd)
  • --rom_menu [path to roms folder] - Opens an interactive dialog uopn start to choose the rom from the folder

Building

cargo build --release --features [optional_features]

Optional features:

  • static-sdl - will link statically to sdl2. On by default (to turn off pass --no-default-features)
  • sdl-resample - Use the audio resampler from sdl2 library and a manual one I wrote
  • push-audio - Use a push methododlogy instead of pull for the delivery of the sound samples to sdl2
  • static-scale - Will use a fixed scale values for the renderer instead of addapting to the screen size
  • u16pixel - pixels are represented by 16 bits and not 32 bits - neccessary for interfacing the ili9341 spi lcd
  • rpi - Input is from the RPI GPIO pins and output is to an ili9341 spi lcd connected to the RPI GPIO pins, activates the u16pixel feature.
  • mmio - Will interface the spi lcd screen using the Memory Mapped IO interface of the RPI for better performance (uses the DMA peripherals as well, activates the rpi feature.

GameBoy

Development Status

Games Tested

  • Pokemon Red - :thumbsup:
  • Tetris - :thumbsup:

GameBoy Color

Curerently there is no Support (support is planned in the future)

Resources