/chip-8

Primary LanguageC#GNU General Public License v3.0GPL-3.0

mrkronus/chip-8

This project is a Chip-8 emulator written in C# for windows. It works well enough to play a number of games but is not complete. This project was made primarily as a learning exercise for myself to get familiar with concepts used in emulation. Maybe I will come back to this at a later date and finish it.

tetris

To compile, just open the sln in Visual Studio and build/run.

The current status is:

Complete

  • Basic emulation with most opcodes implemented
  • A way to render (using SDL in this case)
  • Input support
  • Fix enough bugs to play a game
  • Pass the tests in the chip8-test-rom

Incomplete

  • Sound
  • Functional UX/settings
  • Settings
  • Some way to load roms at runtime instead of hard coding them 😅
  • Accurate timing
  • Support for Super Chip-8 and other extensions (https://chip-8.github.io/extensions/)

Resources

The following is a list of the resources I used when developing this emulator. The first link explains a lot of the concepts of emulation in an easy to digest form, so if you are working on your emulator, I would suggest starting there. The rest are handy references I found along the way.

For roms, there's quite a few with these links:

I also used the following to get an idea of how to use SDL in C#: