Logo Pierre Techer
ProjectsArticles
Frensh flag
English flag
Githubtecherpierre.pro@gmail.com

Chip8 emulator

A Chip-8 emulator written in TypeScript that runs directly in the browser.

Pong game emulator

🎯 Why this project?

This project was born from the desire to take on a stimulating technical challenge. Emulating an architecture like CHIP-8 requires a deep understanding of how it works, while translating those mechanisms into a typed and structured language. It's an excellent way to improve both algorithmic thinking, software architecture, and TypeScript skills.

🎮 Why choose Chip-8?

CHIP-8 is known for its simplicity, making it a great starting point for building a first emulator. It's a concrete way to learn how a virtual CPU works, how machine instructions are executed, and how graphics are rendered — all without the complexity of a real console. This project allowed me to dive deep into the fundamentals of emulation.

🕹️ Some details

What is CHIP-8?

CHIP-8 is an embedded system used in the 70s and 80s for very simple games. To learn more, you can refer to the CHIP-8 Wikipedia page.

Architecture used

To implement my emulator, I chose to use object-oriented programming (OOP) with TypeScript. OOP allowed me to separate the different parts of the emulator into distinct objects: CPU, display, memory, etc. This helped me better visualize the different components to emulate while keeping the architecture clear.

📙 Notes

  • The CHIP-8 emulator I built is not fully functional. Some bugs persist and make it unusable for now, especially regarding keyboard input.

🔗 Useful links

To complete this project, I had to dive into CHIP-8 and emulator documentation. Here are some useful resources to learn more and explore the source code:

  • A tutorial on building a Chip-8 emulator in C (in French)
  • A list of Chip-8 opcodes
  • The GitHub repository of the project