This is a series of posts in which I analyse the Chip-8 interpreter as implemented on the RCA COSMAC VIP. They are primarily intended to be of use to anyone writing a Chip-8 interpreter for another platform. However, they will also be of use to anyone wanting to know more about the COSMAC VIP in general.
1802 Overture – This is a good place to start if you are not familiar with the RCA CDP1802 microprocessor at the heart of the COSMAC VIP.
Chip 8 RAM (or memory management with Chip 8) – This post discusses the memory map on the COSMAC VIP when it is running the Chip-8 interpreter. This is recommended reading before approaching any of the posts analysing the interpreter.
The following posts analyse different parts of the interpreter. These are useful if you want to ensure that your implementations of Chip-8 instructions follow the behaviour of the original interpreter:
Chip-8 on the COSMAC VIP: Initialisation
Chip-8 on the COSMAC VIP: The Call Routine (Fetch and Decode)
Chip-8 on the COSMAC VIP: Machine Code Integration
Chip-8 on the COSMAC VIP: Branch and Call Instructions
Chip-8 on the COSMAC VIP: Skip Instructions
Chip-8 on the COSMAC VIP: Loading and Saving Variables
Chip-8 on the COSMAC VIP: Arithmetic and Logic Instructions
Chip-8 on the COSMAC VIP: Interrupts
Chip-8 on the COSMAC VIP: Generating Random Numbers
Chip-8 on the COSMAC VIP: Drawing Sprites
Chip-8 on the COSMAC VIP: The General Purpose Timer
Chip-8 on the COSMAC VIP: Keyboard Input
Chip-8 on the COSMAC VIP: Sound
Chip-8 on the COSMAC VIP: Indexing the Memory
Chip-8 on the COSMAC VIP: The Character Set
Chip-8 on the COSMAC VIP: Binary Coded Decimal
These posts are also indexed by their relevance to Chip-8 instructions.
Here is a PDF with the complete CHIP-8 Interpreter Disassembly.
Related posts:
Rebuilding Chip-8: About my attempts to build a Chip-8 interpreter for Mac OS X
Thank you for your extensive and detailed analysis of the COSMAC VIP version of CHIP-8! We recently found out about CHIP-8 when it was mentioned in a talk about an unrelated virtual machine, and reading through your blog posts has really solidified our understanding of how it originally worked.