Prev: $2BB0 Up: Map Next: $2CD8
$2CA5: Make BOY WONDER fire his catapult now and then
This corresponds to $7000 in the ZX Spectrum version.
The address of this continual subcommand routine is placed into BOY WONDER's buffer by command lists $8C, $94, $9C, $A4, $AC, $B2, $C2 and $D8.
$2CA5 LDA $FC Pick up BOY WONDER's x-coordinate from $FC.
$2CA7 AND #$03 Is it a multiple of 4?
$2CA9 BNE $2CD7 Return if not.
$2CAB LDA $26 Pick up BOY WONDER's animatory state from $26.
$2CAD LSR A Is BOY WONDER midstride?
$2CAE BCS $2CD7 Return if so.
$2CB0 JSR $1C8E Is BOY WONDER on a staircase?
$2CB3 BCS $2CD7 Return if so.
$2CB5 LDA $D41B Generate a random value in A.
$2CB8 LSR A Is it odd?
$2CB9 BCS $2CD7 Return if so.
$2CBB JSR $0E59 Can BOY WONDER be seen by a teacher at this moment?
$2CBE BCS $2CD7 Return if so.
$2CC0 LDA #$8A Prepare to address the character buffer for BOY WONDER's pellet at $8A60.
$2CC2 STA $4F
$2CC4 LDA #$60
$2CC6 STA $4E
$2CC8 LDY #$01 Pick up the pellet's x-coordinate.
$2CCA LDA ($4E),Y
$2CCC ASL A Is the pellet already airborne?
$2CCD BCC $2CD7 Return if so.
$2CCF LDA #$2B Place the address of the uninterruptible subcommand routine at $2B21 into BOY WONDER's buffer.
$2CD1 STA $B1
$2CD3 LDA #$21
$2CD5 STA $B0
$2CD7 RTS Return to the character-handling routine at $3B5E, which then has the opportunity of moving BOY WONDER midstride before he begins firing. This is a bug.
Prev: $2BB0 Up: Map Next: $2CD8