Emulation Basics


The first emulator I wrote was the chip8 system. This system only has 35 instructions so it only took me about 4 hours to implement including I/O and sound, so I highly recommend you start your emulation journey with this system. This system does not contain everything you will ever need to know to tackle all systems. There are no interupts, no memory paging, no DMA transfers and the sound is far easier to emulate than on most systems as it only plays the one beep noise. However it makes the learning curve for the next system a little easier.

This part of my site will eventually contain links to tutorials I write and example code for different approaches to emulation. It was my intention to write a lengthy tutorial on opcodes, system registers, memory, graphic and sound emulation that would give you everything you needed to start the chip8 system. However I have the following pdf which does a great job of that. It is a few hundred pages long and can be quite hard going, but it really is an excellent book on emulation programming. Infact it is that good that I spent 15 pounds ($30) on having it printed out and I now sleep with it under my pillow.

When you have finished reading it you will have enough knowledge to tackle your first emulator so head over to the chip8 page here and lets get started.

However if you already have the knowledge to code a chip8 emulator and a gameboy emulator then this part of the site can help you advance in emulation programming. In the near future I will put tutorials here on generic sound programming, dynamic recompilation (dynarec), threaded interpretation, dirty rectangles and more to get the most out of your emulator. When I have finished coding my master system emulator I will start writing the generic sound tutorials along with threaded interpretation and dirty rectangles. The rest will come with time.

I may also upload tutorials here written by others if I like them.