Max Regan 1bb3d8512a cpu,gbdb: implement better breakpoints
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.
2018-07-01 23:59:50 +00:00
2017-05-31 22:23:02 -07:00
2018-02-18 12:51:10 -08:00
2018-07-01 21:54:27 +00:00
2017-05-10 22:40:12 -07:00

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
No description provided
Readme 444 KiB
Languages
C 98.2%
Makefile 1.8%