Live data from Hacker News

The art of CHIP-8

beyondloom.com

1–10 of 13 posts

Re: The art of CHIP-8

#3
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).

Re: The art of CHIP-8

#5
Hah, I wrote an interpreter for this in C years back after hearing that it was a good first project for people who have an interest in virtual machines and emulation.

I think I actually used some of the diagnosis/test suite ROMs that the author linked to smooth out the last few issues my implementation had.

I also implemented the quirk flags and made them GUI-toggleable.

Re: The art of CHIP-8

#6
Brings back memories of writing a Chip-8 emulator when bored out of my mind in an introductory programming class in undergrad. It's such an underrated project.

Producing something that can actually run some full games in a first/second year undergrad class would do so much for how seriously students might take the CS/CE curriculum.

Re: The art of CHIP-8

#8
post #2

The author runs his own chip8 game jams which is pretty fun. He also runs his own webcomic: https://beyondloom.com/comic/index.html

Funny, I just learned of this website from elsewhere, and I bookmarked this arguably much more interesting project: https://beyondloom.com/decker/index.html

Re: The art of CHIP-8

#9
I wrote an interpreter in Zig not too long ago. I’d definitely recommend more folks try it out. It’s a straight-forward enough project to dip your toes in emulation and see if it’s your jam. And it’s not a big enough project that you’ll get overwhelmed before you finish.

Re: The art of CHIP-8

#10
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!

Post reply on HN