A WIP Gameboy (Color) emulator written in C++ and packaged in Conan
The emulator currently passes all of blargg's cpu instruction tests and runs a decent amount of GB/GBC games.
The Qt wrap includes variety of interactive GUI debug tools:
- A fully-featured CPU debugger with step in, step over, step out, etc.
- A real-time video RAM (VRAM) viewer
- A real-time audio channel viewer
- Some GBC games do not boot up
- Qt wrap needs some improvement
- CMake 3.x
- Python 3.x
- pip3
- Conan.io via pip
- Conan package SDL/2.0.8@josh/stable
pip3 install conan --user
conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
git clone https://github.com/joshgamer474/GBCEmulator.git
cd GBCEmulator
conan install . -if=build --build=outdated -s compiler.cppstd=17
conan build . -bf=build
git clone https://github.com/joshgamer474/GBCEmulator.git
cd GBCEmulator
conan export conanfile.py josh/testing
cd qt_wrap
conan install . -if=build --build=outdated -s compiler.cppstd=17
conan build . -bf=build
git clone https://github.com/joshgamer474/GBCEmulator.git
cd GBCEmulator
conan export . josh/testing
mkdir android && cd android
conan install GBCEmulator/<version>@josh/testing --build=outdated --profile:host=../profiles/android --profile:build=/home/<username>/.conan/profiles/default -s arch=<desired build arch> -o shared=True -s compiler.cppstd=17
Now you should have built .so Android library files in android/lib/
Open the built GBCEmulator.exe or GBCEmulator_qt.exe and drag and drop your favorite rom in.
- GPU Sprite Rendering
- Input handling using SDL
- Add timing and sleeping to core while() loop so the emulator runs at its proper speed
- Sound
- Controls
- Create a GUI (maybe Qt?)
- Linux build support
- Android build support
- Implement Conan.io packaging for libraries
- Implement Conan.io package for this repo
- Include CMake building
- Memory Bank Controllers
- Interrupt handling correctness
- GPU background rollover testing
- Get a game to actually boot
- Implement for blargg's cpu_instrs
- Implement for blargg's dmg_sound
- Implement for blargg's instr_timing
- Implement for blargg's interrupt_time
- Implement for blargg's oam_bug
- Implement for blargg's mem_timing
- Implement for blargg's mem_timing-2
- Implement for blargg's cgb_sound