Prev: 862E Up: Map Next: 86F2
8672: Drive the hoppers: the spiky creature and the second ghost
Drives two runs of codes, $5E-$5F (a spiky creature) and $68-$69 (the second ghost). A counter in +$0A climbs from -7 to 7 and, halved, is the vertical velocity; each time it tops out it is reset and RANDOM_VELOCITY picks a new direction, so these creatures hop.
MOVE_HOPPER 8672 CALL ACTOR_TO_WORKSPACE
8675 LD A,($EA91)
8678 CP (IX+$01)
867B JP NZ,ACTOR_TICK_TIMER
867E LD HL,$5E25
8681 INC (HL)
8682 LD (IX+$0F),$00
8686 CALL CHECK_HIT
8689 DEC E
868A JP Z,MONSTER_CAUGHT_PLAYER
868D CALL CHECK_SHOT_HIT
8690 DEC E
8691 JP Z,KILL_MONSTER
8694 LD A,(IX+$0A)
8697 RRA
8698 AND $01
869A LD C,A
869B LD A,(IX+$00)
869E AND $FE
86A0 ADD A,C
86A1 LD (IX+$00),A
86A4 LD DE,($5E1D)
86A8 INC (IX+$0A)
86AB LD A,(IX+$0A)
86AE CP $07
86B0 JR NZ,MOVE_HOPPER_0
86B2 CALL RANDOM_VELOCITY
86B5 LD (IX+$0A),$F9
MOVE_HOPPER_0 86B9 SRA A
86BB ADD A,(IX+$04)
86BE LD C,A
86BF SUB $68
86C1 JP P,MOVE_HOPPER_2
86C4 NEG
86C6 CP D
86C7 JR C,MOVE_HOPPER_1
86C9 LD (IX+$09),$02
86CD SET 1,(IX+$06)
86D1 BIT 7,(IX+$0A)
86D5 JR Z,MOVE_HOPPER_1
86D7 LD (IX+$0A),$00
MOVE_HOPPER_1 86DB LD (IX+$04),C
86DE JP STEP_ACTOR
MOVE_HOPPER_2 86E1 CP D
86E2 JR C,MOVE_HOPPER_1
86E4 RES 1,(IX+$06)
86E8 LD (IX+$09),$FE
86EC LD (IX+$0A),$F9
86F0 JR MOVE_HOPPER_1
Prev: 862E Up: Map Next: 86F2