CHIP-8 Emulator

In this project in pairs, we worked on developing a Chip-8 Emulator.
Chip-8 was originally used on the COSMAC VIP during the 1970s. 
The objective was to be able to create an emulator that could interpret and run Chip-8 ROMs.

Project Overview

In order to develop a program that can emulate Chip-8’s, we first needed to study the documentation and research how Chip-8 interpreted binary files.

I developed a disassembler that could translate binary ROM files into the corresponding Chip-8 assembly instructions. This meant parsing the different types of instructions and its possible arguments by using Chip-8’s documentation as a reference.

Once we had the assembly instructions, we were able to emulate the different hardware parts by using C++ classes (a vector simulating the system’s RAM, an stack for the flow of execution, etc.)
The final step was creating C++ counterparts to the assembly function we had parsed previously, such as adding a value to a specific register, making a conditional jump, etc.
Once we had everything set up, we could run and play different Chip-8 ROMs from the internet.

Other Projects