Open
Description
Over the years, CHIP-8 emulators have accumulated different "quirks" or differences in the way certain instructions are supposed to behave.
More information is available at:
- https://chip-8.github.io/extensions/
- https://chip8.gulrak.net/
- https://github.com/Timendus/chip8-test-suite#quirks-test (and thread on Reddit: https://www.reddit.com/r/EmuDev/comments/viri5r/i_wrote_a_chip8_test_suite/)
- http://johnearnest.github.io/Octo/ (check the options under Toolbox -> Compatibility)
We could introduce a bitmask or individual flags for the quirks which are checked at runtime in each emulator cycle, or we could implement different sub-interpreters (e.g. classic CHIP8, S-CHIP, XO-CHIP, etc.). The performance penalty should be negligible thanks to CPU branch predictors.
Sketch (taken from here):
type :: quirks
logical :: VfReset
logical :: Memory
logical :: DisplayBlank
logical :: Clipping
logical :: Shifting
logical :: Jumping
end type
Metadata
Metadata
Assignees
Labels
No labels