![]() |
Routines |
| Prev: 862E | Up: Map | Next: 86F2 |
|
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 |