Skip to content

Chip8 v1.02

Compare
Choose a tag to compare
@tomdaley92 tomdaley92 released this 13 Apr 22:33
· 92 commits to master since this release

Improvements/Changes:

  • Passes all standard CHIP-8 tests with "SC Test.ch8" (displays error 23, which is the first SCHIP test)
  • Rendering/event/timing systems overhauled
  • Opcode fixes (DXYN, 8XYE, FX0A, and others)
  • Two more command line options (chip-8 quirks)
  • Variable instruction speed

Overall, this build is much more stable and offers significantly higher ROM compatibility. The instruction speed is now adjustable with the PageUp and PageDown keys (Fn + ArrowUp and Fn+ ArrowDown on MacOS).

All the rendering is now done on the main thread since SDL's Render API is not designed to be used from multiple threads. This finally knocked out the full-screen toggling issue on MacOS while keeping the CPU usage extremely low. There are two new options added to the interpreter that allow you to enable the two quirks of the CHIP-8 CPU.

Some games require these quirks to be ENABLED to run correctly. They are DISABLED by default.

Load/Store quirks - Instructions 0xFX55 and 0xFX65 increment the value of the I register but some CHIP-8 programs assume that they don't. Enabling this quirk causes the I register to become unchanged after the instruction.

Shift quirks - Shift instructions 0x8XY6 and 0x8XYE originally shift register VY and store the result in register VX. Some CHIP-8 programs incorrectly assume that the VX register is shifted by this instruction, and that VY remains unmodified. Enabling this quirk causes VX to become shifted with VY remaining untouched.

Here's an incomplete list of programs and their required quirks to run properly: #9

*Binaries built and tested on Windows 10 and MacOS Sierra.

Planned for future releases:

  • Config files support
  • Audio
  • Built in GUI debugger
  • Assembler/Disassembler
  • SCHIP instructions support