MagenBoy
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 fordmg_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 theu16pixel
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 therpi
feature.
GameBoy
Development Status
- CPU - Cycle accurate CPU
- PPU - Cycle accurate fifo PPU
- Timer - Mostly accurate timer
- APU - Cycle mostly accurate APU
- Tests
- Blargg's cpu_instrs - :thumbsup:
- dmg-acid2 - :thumbsup:
- TurtleTests - :thumbsup:
- CPU cycle accurate - :thumbsup:
- APU passes some of blargs dmg_sound tests- :thumbsup:
- Timer passes most of mooneye-gb tests - :thumbsup:
Games Tested
- Pokemon Red - :thumbsup:
- Tetris - :thumbsup:
GameBoy Color
Curerently there is no Support (support is planned in the future)