Chip-8 is a virtual machine created in 1977. It was used on several platforms to run games. It has become popular again on the HP48 series calculators around 1990.
The Chip-8 is widely known by university students around the world for one reason: to play games on a HP48S/SX/G/GX calculator, the best resource would be the SHIP48 Emulator for that same device.
The first known Chip-8 emulator was written by Andreas Gustaffson and it is due to his documentation that further Chip-8 implementations have been possible.
Most of the information known today about the internals of the Chip-8 came however from David Winter. A copy of his original documentation can be found here:
His current website dedicated to Chip-8 emulation is:
The original HP files can be found here:
Paul Robson also did a very early Chip-8 emulator and his site still contains valuable information:
Being a big emulator fan, I always considered programming an emulator by my own. However, my knowledge about the C language is somewhat limited, specially when it comes to use all the libraries available for Windows.
As I am familiar with Visual Basic 6, the next excuse was the severe lack of time. The truth is that programming an emulator is not exactly something you do over a couple of hours!
Then I came across the Chip-8 and a few emulators for it and I suddenly realized that this is the challenge I was waiting for! It took me two days (in total more or less 4-5 hours) to program the very first Chip-8 emulator for Visual Basic.
Because the Chip-8 is really a virtual machine, one cannot consider a Chip-8 emulator to be a 100% real emulator: there never existed a Chip-8 computer! Chip-8, being a virtual machine is somewhat similar to the concept used by Sun with their Java virtual machine. It is like a computer platform that was never build, but is fully specified.
Because the Chip-8 definitions are indeed very close to real hardware (CPU, RAM, graphics, sound, keyboard), you can consider the Chip-8 emulator as much an emulator as you would consider an amoeba an animal...
The first reason is obviously because it is VB6 I know best. But then, there are other reasons, like there are many C implementations already available, including source code or because it would open some insight to people familiar with Basic, who cannot read C source code.
The freeware games pack can be downloaded here.
Please note that I found these games on the web and they where mentioned to be freeware / public domain.
If this is not true and YOU are the owner of the copyright, please let me know - I will remove the game.
- You need the VB6 runtimes installed, as well as the CommonDialog OCX. Search the web for it.
- Currently, Chip-8 is fully emulated, at least all known games work. Super Chip-8 is supported, but there seem to be a few bug's left, as not all games are playable.
- The virtual keyboard is to be used to define the keys on your keyboard. Press any of the 16 keys and then chose the keyboard key you want to map.
- The debug option will slow the emulator down a lot, but might be interesting for those that want to look at the disassembled code. Note that the four numbers represent the four opcodes of any Chip-8 instruction (always two bytes).
- At present, the emulator is not cycle correct. This means that the timing of the game is not correct - games may run faster or slower at some instances than a regular Chip-8 computer would. I did not find any information about cycles, so there is not much I can do now.
- The emulator is based on C source code I found on the internet. The original code was called "Miracle Chip 8" and I don't know who the author is. You can download the "Miracle Chip 8" here (source code only). This is actually the best documentation I found on the Chip-8.
Mail me at: vma AT fe DOT up DOT pt