1bb3d8512a38d22bcb41c51f94158095de6d3692
Previously, gbdb had to check several signals, including the current PC, to determine when do_run() should stop. This code was hotpath and unecessarily slow. Instead, leverage a n undefined instruction (0xd3) as a breakpoint instruction. When the CPU emulation encounters this instruction, it will call a callback which is implemented by gbdb. This can set a simple flag which is less expensive to query. Finally, both the signal handler and the breakpoint callback set specific "paused" flags and a generic "pause" flag. Now, do_run() can simply check the generic "paused" flag, then use the specific flags to determine the stop reason. This change increased performance by ~10% on Raspberry Pi.
A work-in-progress Gameboy emulator with a terminal-based UI and a basic assembler.
Compilation
make config-release
make
Docs
doxygen ./doxygen.config
Tests
make config-default
make check
Coverage
make config-coverage
make coverage-report
Description
Languages
C
98.2%
Makefile
1.8%