What is this?
This is an interpreter and emulator for a 1970's era programming language called Chip8 that was used on hobby computers for games like Pong, Space Invaders, etc. To summarize part of the article that inspired me to make this:
An emulator is a computer program that mimics the internal design and functionality of a computer system (System A). It allows users to run software designed for this specific system (Sytem A) on a totally different system (System B).
For example, Pong was originally developed by Atari for their systems. However, people made other versions of the game to run on rival platforms such as Amstrad, Amiga and the C64.
Since not every Pong game was licensed by Atari to run on these platforms, it also meant that not every game was running the code from Atari. Basically what happened is that people created their own implementation (clones) of the game Pong. In this case they simulated the looks and game behavior of Pong.
In case of an emulator, we choose not to re-implement the game Pong for our system. Instead, we re-create the environment with a computer program which allows us to run the original machine code of Pong. A benefit of this is that it won't just allow us to run Pong, but also any other application developed for that platform.
You can read more details in the blog article. I had a blast putting this together, so stick around and play a while or check out my code on github and let let me know if you have any issues or suggestions.