> For example, if you know the carry flag will always be clear at the jump point, and if the jump distance is within branching range, you can replace JMP with BCC.
However if the BCC crosses a page boundary it'll take 4 cycles, one cycle longer than a JMP.
> having tried to sabotage its Kickstarter campaign back in 2018 by viciously attacking me and attempting to have me "cancelled" for opposing his hysterical far-left views supporting the LGBT agenda and the degenerate filth of unfathomably evil "trans people" aka demonic monsters (views which, for the record as a conservative Christian, I unapologetically find utterly vile and abominable).
Flagged because people like this don't need attention
The anti-trans spew is on the front page.
But I agree that it's useful to highlight this kind of thing. If you disagree with the author, you probably won't then want to give them your time and attention, let alone your money. But, on the other hand, if you agree, maybe you'll feel the other way! Which is a roundabout way of describing my favourite thing about the internet, since I'm old enough to remember what it was like Before: whoever your people are, for good or for ill, you'll be able to find them.
I love the stacking of boolean ops before branches, too.
If I remember correctly Chris ported from the Spectrum. The data structures are particularly interesting using tokens/lookup tables to compress the data as much as possible.
https://www.icemark.com/tower/index.html
Also some notes on Doomdark's Revenge where Singleton managed to create a bigger map and feature more characters.
It's a fascinating contrast to the modern 'move fast and break things' approach. Back then, if your routine was 3 cycles too slow, the sprite didn't just 'lag'—the entire raster effect collapsed. There was a level of deterministic discipline that we've largely abstracted away in favor of developer velocity.