Home

Awesome

Super Chip 8 emulator

The goal of this project is to extend my chip 8 emulator project to suport super chip 8 games.

Super Chip 8

CHIP-8 is an interpreted programming language, developed by Joseph Weisbecker. It was initially used on the COSMAC VIP and Telmac 1800 8-bit microcomputers in the mid-1970s. CHIP-8 programs are run on a CHIP-8 virtual machine. It was made to allow video games to be more easily programmed for said computers. (Wikipedia)

Super Chip 8 is a more recent version of Chip 8, with more advanced graphical functions such as screen scrolling, 16x16 sprite diplay or 16x10 fonts.

Structure

The emulator is represented by two classes : CPU and GPU (which treat Keyboard interrupt too, because the window is generated by this class).

The main function fetch and parse the opcode and call the right function whether a CPU or a GPU method.

Compilation

git clone https://github.com/zaymat/chip8
cd chip8
make
make clean
chmod +x chip 8

Execution

./chip8 path_to_game [-s] [-l]

Flags:

Load_quirk and Shift_quirk

Explanation of the flags

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

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

[https://github.com/tomdaley92/Kiwi8/issues/9]

List of games needing those flags

Enabling load_quirk is recommended for:

Enabling shift_quirk is recommended for:

Enabling both shift_quirk AND load_quirk is recommended for:

Improvements