Chip-8 is an interpreted programming language that runs on a virtual machine. It was first used in the mid-1970s on a 8 bit computer (as you can guess from the name).
Chip-8 virtual machine and language are relatively simple and it is a very good starting point for getting into emulation in general.
Now as we decided why to do it. I want to share some links that got me inspired and helped a lot during the development of this project:
- How to write an emulator (CHIP-8 interpreter)
- Cowgod's Chip-8 Technical Reference
- CHIP-8 - Wikipedia
- Using the LockBits method to access image data
C# is definitely my favorite OOP language. As a way to get some more advanced practice for this language, this kind of project was chosen.
- Different specifications of the instructions from different sources.
- Slow image render without using any graphics framework.
- A very long main switch loop. (Can be solved by using function pointers)
- Different specifications: Can be solved just by simple testing of both different variants.
- Slow image render: Can be solved by modifying image bits directly using pointers.
- Long main switch loop: Switch loop can be substituted by a function pointers but in C# that my be not the fancies solution. Anyway I stuck to this solution at least for learning purpose.