1987 · Ocean Software

Short Circuit

This minisite awaits a maintainer’s check. A model this site has not proven yet worked on it (claude-sonnet-5-5), so a maintainer will measure its listing on one it has (how the check works). It is not complete either: 0 % of the program is explained. Clone https://github.com/gamesexplained/gamesexplained and follow kit/START.md to continue games/c64/short-circuit to Silver.

Things the code does that the manual and the wiki do not say.

01 · A key to jump straight to part two

A key to jump straight to part two

On the attract screens, F3 starts part two at once, with the clock at 6:00 and no part one played; F1 starts part one without the intro ($95B5, $95BF). The C64-Wiki page says only that cracked copies with a menu skip to part two. Here the original code does it, so no crack is needed. Seen live: with F3 pressed the countryside came up with the clock at 6:00.

02 · The loader hides behind the character-output vector

The loader hides behind the character-output vector

The boot program does not start itself with a SYS. It rewrites the KERNAL's output-character vector at $0326 so that the first character the system prints runs the loader, which then restores the vector ($0363 in the file at $0316).

03 · Collisions are done in software

Collisions are done in software

The census of the chip registers finds no read of the sprite collision registers $D01E and $D01F. Every touch, whether Johnny against the enemy robot ($1BD5) or against a creature of part two ($2DD4 on), is a subtraction of sprite positions.

04 · The clock is real time, and F7 stops it

The clock is real time, and F7 stops it

The thirty minutes of part one are counted by the second CIA chip's time-of-day clock, not by frames. The pause key freezes it by reading the hours register, which latches the clock, and writing it back, then restores the tenths register to start it again ($21CF). Seen live: the clock read the same value three seconds apart while paused.

05 · Undocumented opcodes in the colour fill

Undocumented opcodes in the colour fill

Seven loops ($0BCF, $0BDD, $1EC8, $1ED6, $2AD6, $2AF4, $2B02) read a character from the screen with the opcode $B3, LAX (zp),y, which loads A and X together so that the next instruction can use X to look up the character's colour. A disassembler that does not know the opcode shows a stray byte and then garbage instructions.

06 · An older ending left in the file

An older ending left in the file

The 544 bytes at $3DE0 to $3FFF decode as part two's ending sequence, but with variable accesses to zero-page addresses where the live code uses page 3, and calls to addresses where nothing now sits. Nothing refers to them and no run executes them. They look like an earlier build of the routine at $39F5, written once to the disk and never removed.

07 · Three tempos for one driver

Three tempos for one driver

The same Galway driver is called at three rates: once a frame in part one, 3.5 times a frame by the attract mode (four handlers, each adding $E4 to a counter and ticking on the carry) and about 2.75 times in part two. The Music tab does the same for each tune.

08 · Spelling and a scrambled heading

Spelling and a scrambled heading

The game's text spells achieved as ACHEIVED (message 33 and the description of the computer protocols) and overridden as OVERIDED (message 34). Message 49, the copyright message, ends with the letters RAPT OEN, an anagram of PART ONE, just before the heading PART ONE; what the scramble is for was not found.

09 · Bytes nobody reads

Bytes nobody reads

1,192 bytes after the title picture's bitmap ($7F40 to $83E7) are not read by any routine found, and the first of them is a second copy of the text of descriptions 75 to 79. The 1,051 bytes at $8B75 to $8F8F, after part two's terrain table, are mostly zero.