![]() |
Routines |
| Prev: 8ADB | Up: Map | Next: 8B6A |
|
Sprites $9C to $9F. If one of the eight collectables at $EB18 is in its room (SCAN_COLLECTABLES) it walks to it and takes it -- the record is emptied, so the object is gone for the game; otherwise it stands still. Its touch costs sixteen a pass (LOSE_FOOD_SIXTEEN). While the player is not in play it walks to the top of the room. MOVE_ACTOR's exemption mask singles it out: masking with $FC and comparing against $9C matches all four of its frames.
|
||||
| MOVE_HUMPBACK | 8AFF | CALL ACTOR_TO_WORKSPACE | ||
| 8B02 | CALL CHECK_HIT | |||
| 8B05 | DEC E | |||
| 8B06 | CALL Z,LOSE_FOOD_SIXTEEN | |||
| 8B09 | XOR A | |||
| 8B0A | LD (IX+$09),A | |||
| 8B0D | LD (IX+$08),A | |||
| 8B10 | CALL SCAN_COLLECTABLES | |||
| 8B13 | DEC C | |||
| 8B14 | JP NZ,MOVE_HUMPBACK_2 | |||
| 8B17 | CALL HOME_IN | |||
| 8B1A | LD A,C | |||
| 8B1B | CP $03 | |||
| 8B1D | JR NZ,MOVE_HUMPBACK_1 | |||
| 8B1F | CALL SCAN_COLLECTABLES | |||
| 8B22 | LD DE,$0004 | |||
| 8B25 | AND A | |||
| 8B26 | SBC HL,DE | |||
| 8B28 | PUSH IX | |||
| 8B2A | LD IX,$0000 | |||
| 8B2E | EX DE,HL | |||
| 8B2F | ADD IX,DE | |||
| 8B31 | LD A,($EA91) | |||
| 8B34 | CP (IX+$01) | |||
| 8B37 | JR NZ,MOVE_HUMPBACK_0 | |||
| 8B39 | CALL DRAW_THING | |||
| MOVE_HUMPBACK_0 | 8B3C | LD (IX+$00),$00 | ||
| 8B40 | POP IX | |||
| 8B42 | JP MOVE_HUMPBACK_2 | |||
| MOVE_HUMPBACK_1 | 8B45 | LD A,(IX+$00) | ||
| 8B48 | AND $FC | |||
| 8B4A | LD C,A | |||
| 8B4B | LD A,($5E12) | |||
| 8B4E | RRA | |||
| 8B4F | RRA | |||
| 8B50 | AND $03 | |||
| 8B52 | ADD A,C | |||
| 8B53 | LD (IX+$00),A | |||
| 8B56 | LD DE,$3C3C | |||
| MOVE_HUMPBACK_2 | 8B59 | LD A,($EA90) | ||
| 8B5C | CP $31 | |||
| 8B5E | JP C,STEP_ACTOR | |||
| 8B61 | LD DE,$3A58 | |||
| 8B64 | CALL HOME_IN | |||
| 8B67 | JP STEP_ACTOR | |||
| Prev: 8ADB | Up: Map | Next: 8B6A |