Prev: C61D Up: Map Next: C68D
C66A: Add a step in the direction he faces
Used by the routine at MOVE_PLAYER.
First adds the nudge in +$0E and +$0F, which an arch leaves to steer the player onto its middle line (ARCH_NUDGE_TO_CENTRE), to the U and V steps, and clears it; then adds 3 in the direction of the facing, through WALK_STEP_TBL. So the nudge only acts while he walks.
The last three instructions are a jump through a table of four addresses by the facing of the object at IX; ARCH_NUDGE_TO_CENTRE uses it too.
Input
IX The player's legs
CALC_PLYR_DUV C66A LD A,(IX+$09) The U and V steps plus the nudge
C66D ADD A,(IX+$0E)
C670 LD (IX+$09),A
C673 LD A,(IX+$0A)
C676 ADD A,(IX+$0F)
C679 LD (IX+$0A),A
C67C XOR A The nudge is used up
C67D LD (IX+$0E),A
C680 LD (IX+$0F),A
C683 LD BC,WALK_STEP_TBL The table of steps
This entry point is used by the routine at ARCH_NUDGE_TO_CENTRE.
DISPATCH_ON_FACING C686 CALL GET_SPRITE_DIR Jump to the entry for the facing (the main loop's own dispatch at START does the rest)
C689 LD L,A
C68A JP JUMP_TO_TBL_ENTRY
Prev: C61D Up: Map Next: C68D