Prev: 8ADB Up: Map Next: 8B6A
8AFF: Drive the humpback
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