Prev: C4C8 Up: Map Next: C58D
C56C: Start a jump
Used by the routine at PLAYER_LEGS.
A jump needs the jump control held, the walk into a room over, no jump already under way, and the player standing on something: bit 2 of +$0C, which the collision code (ADJ_FOR_OUT_OF_BOUNDS) sets when it stops a move down. Knight Lore tests the Z step here instead. The jump starts at 8 units up a turn; MOVE_PLAYER's gravity takes it away again.
Input
IX The player's legs
C The controls
HANDLE_JUMP C56C BIT 3,C Jump not held
C56E RET Z
C56F LD A,(IX+$0C) Not during the walk into a room
C572 AND $F0
C574 RET NZ
C575 BIT 3,(IX+$0C) Already jumping
C579 RET NZ
C57A BIT 2,(IX+$0C) Not standing on anything
C57E RET Z
C57F SET 3,(IX+$0C) Jumping, 8 up
C583 LD (IX+$0B),$08
C587 PUSH BC The jump's sound (JUMP_SOUND), the controls kept
C588 CALL JUMP_SOUND
C58B POP BC
C58C RET
Prev: C4C8 Up: Map Next: C58D