The Octo Jam is a yearly CHIP-8 ``game jam'' I enjoy participating in; it gives me an excuse to work on naught but CHIP-8 games, and every year I participate by using mine MMC targeted at CHIP-8, being one of the few participants who doesn't use the assembler provided by the organizer. I successfully completed two games for the seventh Octo Jam event, falling horribly short of my goal of nine or so.
I'm forced to wonder if having such a goal was necessarily unreasonable. Whilst it's certain that I wrote some of the smaller games, neither submission is necessarily finished, nor fully optimized. I can see myself tweaking them a great deal more before I could consider them finished. I avoided the trap of abstaining from writing any machine code until October, then falling short anyway, which has preyed on me before; I wrote three games for the event and then reimplemented two of them during the event itself, failing to rewrite one that proved too difficult for me to continue bothering with it.
I've decided to break out of that trap even further by trying, although likely failing, to write one new game on a roughly monthly schedule. The actual event is of little interest to me, compared with its after-jam streams in which the games are played; I'd be pleased having my work shown either way.
For most of this jam, I'd no issue with that reimplementation of mine MMC targeted at CHIP-8, unlike prior jams in which the tool helped me greatly, but inhibited me due to flaws in its implementation. Unfortunately, I came across a single flaw I've not yet sought out and corrected, involving the name system: rather rarely, a name association would be botched, which is both disconcerting and damning.
I've determined the flaw likely lurks in the name deletion system, yet it's haunted me for days now, and has revealed to me that my reimplementation is still fundamentally flawed, despite being a known improvement over its predecessor design. As can be so common, I didn't go nearly far enough with my redesigning its internals. I added structure, but not enough, and the tool internally maintains two separate structures, for the program and its metadata, but these should be intertwined in every way, which eliminates the chances for flaws I'd noticed. I'd recognized this design earlier, but finding such flaws has so disconcerted me that I'm convinced of it; I should practice a heavy deoptimization in the following implementations, which is ironic for a tool intended for writing such machine code.
I can, however, be content knowing that the isolated machine code I write with it is easily perfect.
I don't have the energy required for rewriting the MMC targeted at CHIP-8 again so soon, and so will persist with it, and correct this and other flaws as I find them. It's not comforting in any way to look at other software to find disgusting, glaring, and unacceptable flaws in each of them; it shows how immature and damned this field of endeavour is in the present. Another issue I've not addressed is how the metadata is more general than the tool will ever generate. I'll also be correcting that.
In the coming months, I'd like to write a nonogram game which pushes the Super CHIP-8 to its limits, a blackbox game, some familiar arcade clones, a Gunpey clone, and a small tennis game. Those former two weren't even begun, as both rely on calculations involving matrices which are difficult to write optimally, and which I've still been thinking over; I'm free to write versions which infinitesimally approach this now, however. The small tennis game would've been very simple, but I'd wanted to have self-modifying code enabling many game modes in a very small amount of space, and this was difficult to balance with other considerations in the time limit. I see no reason I won't finish these games.
I already anticipate the next Octo Jam, and CHIP-8 continues to be a reasonable source of amusement. I'll be moving to ever more rigorous targetings of mine MMC design from now on, but perhaps I'll use another reimplementation of this CHIP-8 targeting with next year. Hope is an evil, but I'm hopeful.