Gameboy Emulator written in C, based on Low Level Devel's tutorials on YouTube. Tested and working on Fedora Linux, but should also be compatible with most other distros.
- CPU Instruction set
- CPU Interrupts
- Timers
- DMA
- LCD
- PPU
- Gamepad
You will need the following build packages:
gcccmakechecksdl2-compatSDL2_ttf
To install all the necessary packages use the following command on Fedora Linux:
sudo dnf install -y gcc cmake sdl2-compat-devel SDL2_ttf-devel check-develTo build the project, go into the code directory. From there
mkdir build
cd build
cmake ..
makeTo run the emulator from the build directory, use the following command:
gbemu/gbemu <path-to-rom-file>In the roms directory are provided ROMs used for testing.
.
βββ code
βΒ Β βββ cmake
βΒ Β βΒ Β βββ config.h.in
βΒ Β βΒ Β βββ COPYING-CMAKE-SCRIPTS.txt
βΒ Β βΒ Β βββ FindCheck.cmake
βΒ Β βΒ Β βββ sdl2
βΒ Β βΒ Β βββ Copyright.txt
βΒ Β βΒ Β βββ FindSDL2.cmake
βΒ Β βΒ Β βββ FindSDL2_gfx.cmake
βΒ Β βΒ Β βββ FindSDL2_image.cmake
βΒ Β βΒ Β βββ FindSDL2_mixer.cmake
βΒ Β βΒ Β βββ FindSDL2_net.cmake
βΒ Β βΒ Β βββ FindSDL2_ttf.cmake
βΒ Β βΒ Β βββ README.md
βΒ Β βββ CMakeLists.txt
βΒ Β βββ gbemu
βΒ Β βΒ Β βββ CMakeLists.txt
βΒ Β βΒ Β βββ main.c
βΒ Β βββ include
βΒ Β βΒ Β βββ bus.h
βΒ Β βΒ Β βββ cart.h
βΒ Β βΒ Β βββ common.h
βΒ Β βΒ Β βββ cpu.h
βΒ Β βΒ Β βββ dbg.h
βΒ Β βΒ Β βββ dma.h
βΒ Β βΒ Β βββ emu.h
βΒ Β βΒ Β βββ instructions.h
βΒ Β βΒ Β βββ interrupts.h
βΒ Β βΒ Β βββ io.h
βΒ Β βΒ Β βββ ppu.h
βΒ Β βΒ Β βββ ram.h
βΒ Β βΒ Β βββ stack.h
βΒ Β βΒ Β βββ timer.h
βΒ Β βΒ Β βββ ui.h
βΒ Β βββ lib
βΒ Β βΒ Β βββ bus.c
βΒ Β βΒ Β βββ cart.c
βΒ Β βΒ Β βββ CMakeLists.txt
βΒ Β βΒ Β βββ cpu.c
βΒ Β βΒ Β βββ cpu_fetch.c
βΒ Β βΒ Β βββ cpu_proc.c
βΒ Β βΒ Β βββ cpu_util.c
βΒ Β βΒ Β βββ dbg.c
βΒ Β βΒ Β βββ dma.c
βΒ Β βΒ Β βββ emu.c
βΒ Β βΒ Β βββ instructions.c
βΒ Β βΒ Β βββ interrupts.c
βΒ Β βΒ Β βββ io.c
βΒ Β βΒ Β βββ ppu.c
βΒ Β βΒ Β βββ ram.c
βΒ Β βΒ Β βββ stack.c
βΒ Β βΒ Β βββ timer.c
βΒ Β βΒ Β βββ ui.c
βΒ Β βββ NotoSansMono-Medium.ttf
βΒ Β βββ tests
βΒ Β βββ check_gbe.c
βΒ Β βββ CMakeLists.txt
βββ docs
βΒ Β βββ gbctr.pdf
βΒ Β βββ The Cycle-Accurate Game Boy Docs.pdf
βββ .gitignore
βββ Readme.md
βββ roms
βββ 01-special.gb
βββ 02-interrupts.gb
βββ 03-op sp,hl.gb
βββ 04-op r,imm.gb
βββ 05-op rp.gb
βββ 06-ld r,r.gb
βββ 07-jr,jp,call,ret,rst.gb
βββ 08-misc instrs.gb
βββ 09-op r,r.gb
βββ 10-bit ops.gb
βββ 11-op a,(hl).gb
βββ cpu_instrs.gb
βββ dmg-acid2.gb
βββ mem_timing.gb
10 directories, 68 files
