Prev: 8C8C Up: Map Next: 8D32
8CB7: Raise the player back out of the floor
The handler for sprite $66, and the mirror of DYING: +$06 counts up instead of down and the sprite rises. It is what runs at the start of a game as well as after a death, which is why the player's sprite byte reads $66 for several seconds before a new game is really under way -- and why CHECK_HIT, which only counts sprites below $31 as a player, cannot register a hit during it.
MATERIALISING 8CB7 LD A,($5E3C) For the first 104 frames of a life the score flashes instead (FLASH_COUNT, set by PLACE_PLAYER).
8CBA AND A
8CBB JR NZ,FLASH_SCORE
8CBD LD A,($5C78) One step in four frames.
8CC0 AND $03
8CC2 JP NZ,ANIMATE_COLOUR
8CC5 INC (IX+$06) Up a little further.
8CC8 LD A,(IX+$07)
8CCB CALL SPRITE_ADDRESS
8CCE LD A,(DE)
8CCF CP (IX+$06) At the top, so become a player again.
8CD2 JR Z,FINISH_MATERIALISING
This entry point is used by the routine at DYING.
ANIMATE_SHAPE 8CD4 PUSH DE
8CD5 PUSH HL
8CD6 LD B,H
8CD7 LD C,L
8CD8 LD A,(IX+$04)
8CDB LD (IX+$02),A
8CDE SUB (IX+$06)
8CE1 LD (IX+$04),A
8CE4 LD L,(IX+$06)
8CE7 LD H,$00
8CE9 ADD HL,HL
8CEA ADD HL,DE
8CEB LD A,H
8CEC LD (BC),A
8CED DEC BC
8CEE LD A,L
8CEF LD (BC),A
8CF0 PUSH HL
8CF1 LD C,(HL)
8CF2 LD B,(IX+$00)
8CF5 PUSH BC
8CF6 LD (HL),$01
8CF8 LD A,(IX+$07)
8CFB LD (IX+$00),A
8CFE CALL DRAW_THING
8D01 POP BC
8D02 POP HL
8D03 LD (HL),C
8D04 LD (IX+$00),B
8D07 LD A,(IX+$02)
8D0A LD (IX+$04),A
8D0D POP HL
8D0E POP DE
8D0F LD (HL),D
8D10 DEC HL
8D11 LD (HL),E
This entry point is used by the routine at DYING.
ANIMATE_COLOUR 8D12 LD A,(IX+$05)
8D15 PUSH AF
8D16 LD A,($5C78)
8D19 RRCA
8D1A RRCA
8D1B AND $07
8D1D JR NZ,MATERIALISING_0
8D1F INC A
MATERIALISING_0 8D20 OR $40
8D22 LD (IX+$05),A
8D25 LD A,(IX+$06)
8D28 CALL DRAW_AT_A
8D2B POP AF
8D2C LD (IX+$05),A
8D2F JP SOUND_RISE_SINK
Prev: 8C8C Up: Map Next: 8D32