Galaxy Jailbreak
|
|
|
Notes
A bug exists in at least some batches of cassettes where corruption randomly occurs within the top and bottom border areas. This is due to a CALL at location $4224 incorrectly specifying $C606 instead of $4606, i.e. it calls the the mirror copy 32K higher in the memory map.
The routine at $4606 is as follows:
$4606 E5 PUSH HL $4607 D5 PUSH DE $4608 ED5B3340 LD DE,($4033) $460C 2A3240 LD HL,(SEED) $460F 19 ADD HL,DE $4610 223240 LD (SEED),HL $4613 7D LD A,L $4614 D1 POP DE $4615 E1 POP HL $4616 C9 RET
Since the routine executes from memory that has address line 15 set, any instruction opcodes where data bit 6 is reset are interpreted as video data and hence results in pixel data being output. Although a random mix of bit patterns appears to occur in the border areas, these are all due to the same character codes being output into the video stream and it is the value of the hardware scan line counter that determines which pattern is visible. As a result, there can only be 8 different corruption patterns.
The routine actually executed as follows:
$C606 E5 PUSH HL $C607 D5 PUSH DE $C608 ED5B3340 LD DE,($4033) $C60C 2A NOP $C60D 32 NOP $C60E 40 LD B,B $C60F 19 NOP $C610 22 NOP $C611 32 NOP $C612 40 LD B,B $C613 7D LD A,L $C614 D1 POP DE $C615 E1 POP HL $C616 C9 RET
The routine controls the random selection of the direction that the captured Generals move in. The routine is called correctly from 6 other locations and so the Generals still appear to move correctly.