This works on macOS/Linux and Windows 11 through WSLg (Sorry old Windows users!)
- Clone this repo (https://github.com/BUGS-NYU/gbemu-demo)
- Build it (install make first)
- To run the game, after running make, run
./build/gbemu tetris.gb
- To run the game, after running make, run
- Two instructions are broken in opcodes.cc, try to fix them!
- Get Tetris working!
- There are two instructions that are broken in /src/opcodes.cc: _opcode_and(u8 value) and _opcode_adc(u8 value).
- Work on the
and
instruction first! - Note: Use the pandocs (https://gbdev.io/pandocs/CPU_Instruction_Set.html)
Your goal is to fix two broken instructions (_opcode_adc(u8 value), _opcode_and(u8 value)). Use the pandocs for help.
Original readme below
gbemu
is a Nintendo Gameboy emulator written in C++. It was written as an exercise (and for fun!) so its goals are exploration of modern C++ and clean code rather than total accuracy.
Building the emulator requires cmake
and SDL and has been tested on macOS and Debian. To compile the project, run:
$ make
This builds two versions of the emulator:
gbemu
- the main emulator, using SDL for graphics and inputgbemu-test
- a headless version of the emulator for debugging & running tests
usage: gbemu <rom_file> [--debug] [--trace] [--silent] [--exit-on-infinite-jr] [--print-serial-output]
arguments:
--debug Enable the debugger
--exit-on-infinite-jr Stop emulation if an infinite JR loop is detected
--print-serial-output Print data sent to the serial port
--trace Enable trace logging
--silent Disable logging
The key bindings are: ↑, ↓, ←, →, X, Z, Enter, Backspace.
The emulator is tested using Blargg's tests - these can be ran with ./scripts/run_test_roms
.
The test it fails is due to the lack of a timer implementation.
Currently, gbemu
only supports Gameboy games. I'm working on Gameboy Color support off-and-on at the moment. There's also no audio support yet.
Menu | Gameplay |
---|---|