Octojam 7: The CHIP-8 game jam
octojam.com
octojam.com
The Octo IDE discussed here looks awesome. One of the problems that I had with CHIP-8 implementations in the past is that my games would run differently on all of them.
There's a colorful history to how and why a number of mutual incompatibilities crept into CHIP-8 specs and programs over the decades. In addition to a range of "quirks mode" flags to adapt to differences in behavior, Octo recently gained a tracing linter (Toolbox -> Binary Tools -> Linter Mode) which can flag the use of features which differ between VIP CHIP-8 and SCHIP.
[0]https://www.researchgate.net/publication/338558857_Aplicacio...
You can also use Octo's assembler from the commandline if you wish, although you will need to pair it with a separate emulator for that workflow. Tom Swan has a high-quality emulator suitable for this purpose, for example[0].
The Octo github page links[1] third-party syntax highlighting modes for a wide variety of external text editors. The Sublime mode is the most actively-maintained; if anyone likes using Vim, Emacs, Atom, or so on, you could help out by sprucing up any that are out of date.
I used to do this thing on my HP48 where I would switch between two GROBs rapidly and the slow screen would give me white, gray, and black. Any of the chip8 emulators support that?
https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/XO-Ch...
https://johnearnest.github.io/chip8Archive/
Games are categorized as being CHIP-8, SCHIP, or XO-CHIP, include any necessary quirks-mode settings, and often come with source code.
I blame the Vita interpreter, myself.
The most common problem is disagreement over the semantics of the shift instructions and how load/store treat the index register "i". In a nutshell, SCHIP on the HP-48 got these wrong, and so modern programs are a mix of depending on VIP-style CHIP-8 semantics or SCHIP-style semantics. If an interpreter is based on reference information derived from "Cowgod's reference", it likely contains the mistakes introduced in SCHIP.
Out of the box, Octo behaves mostly like the original CHIP-8, but you can configure it to work more like SCHIP. With care it's possible to write programs that run correctly on both; see the linter I mentioned elsewhere in this discussion.
: main
i := ball
loop
sprite v0 v1 7
v0 += 3
v1 += 5
again
: ball
0x38 0x74 0xFA 0xFE 0xFE 0x7C 0x38
I understand v0 and v1 -- makes sense they're initialized to zero, and the language must not require declarations -- but i is a mystery. ball is assigned to it, but then nobody refers to it again.Check out this reference: http://devernay.free.fr/hacks/chip8/C8TECH10.HTM
I'm not sure when I'll be in the right headspace to work on comics again, but I do have plenty of ideas.