A SuperChip-8 emulator written in C++ utilizing raylib for graphics and sound.
Introduction
This project is a SuperChip-8 emulator written in C++ using the raylib library for graphics and sound. It allows the user to load a SuperChip-8 ROM and play it on their computer. Complete with user input, sound, and graphics, the emulator is a faithful representation of the original SuperChip-8 system.
This project's goal was to learn more about emulation and to create a project that would be fun to work on.
The SuperChip-8 system was chosen because it is a simple system (few opcodes) that is easy to emulate.
It also has a few extra features compared to the original Chip-8 system that I thought would be interesting to implement (mainly scrolling and a high resolution mode).
This was a great stepping stone for me to learn more about emulation and to work on more complex systems in the future.
I learned about memory management in an emulator, how to handle user input and the importance of timing in an emulator, and utilizing vblanks to update the screen.
Generate the executable
The project uses CMake to generate the makefile.
The executable is then generated by running make.
Run a ROM
The emulator can be run by passing a SuperChip-8 ROM as an argument to the executable.
The emulator will then load the ROM and start running it.
Increase cpu cycles
To run smoothly (avoid flickering), some games might require a higher number of cpu cycles.
This can be done through the `-c` option (default is 10 cycles per frame).
LowRes games
The emulator can run games that use the low resolution mode (64x32 pixels).
[example: RPS]
HighRes games
The emulator can run games that use the high resolution mode (128x64 pixels).
[example: Rockto]