The Art of CHIP-8: A Guide to Writing Portable Programs for a Vintage Virtual Machine
CHIP-8, a programming language from 1977, remains a popular way to learn emulator development. But decades of divergent implementations have left the ecosystem fragmented. John Earnest, creator of the Octo assembler, distills his experience into a practical guide for writing CHIP-8 programs that run on all but the buggiest interpreters. He covers the instruction set, common quirks, and portable coding techniques, drawing on his work standardizing 'quirks flags' and developing test suites.
For historical platforms to live, rather than simply be preserved, we must write new software for them.
- enygmata
When I was writing my own CHIP-8 emulator I struggled to find info on timings as info on the COSMAC VIP was scarce. I resorted to arbitrary sleeping which solved most of the issued for the roms I tried back then.
It had a JIT recompiler based on sljit.
- Joker_vD
Ah, detached "while" as a replacement for if-guarded "break". A concept that, syntactically, can very easily be fitted onto ALGOL/Pascal-like languages but not onto the C-likes:
loop stmt1; while condA; stmt2; while condB; stmt again
loop while condA; stmt again
loop stmt; while condA again
How do you fit that into {}-bracketed blocks elegantly?
More on the topic of the article itself, don't you just love quirks of the older emulators that you, as an emulator writer, now have to support because everybody else expects them? What about the quirks that half of those "everybody" expect to exist, while the other half expects the opposite behaviour? And of course, as the application writer, you know have to know about and stay away from those quirks. Arcane trivia FTW!
- ms-fellag
If you want a "brief" history tour of the COSMAC Hardware under Chip-8 (From the ELF to the VIP) and the man behind it all (Joseph Weisbecker) then you're in luck because @TechTimeTraveller has just dropped a video on the subject https://www.youtube.com/watch?v=H3Pdf8iRw5E (the history part ends around the 17min mark).