Prev: D0DC Up: Map Next: D16F
D123: Make Dan jump
Used by the routine at CFD9.
D123 LD A,($C876) Put the height fallen by (C876) in L.
D126 LD L,A
D127 LD A,($C874) Put Dan's flags (C874) in B.
D12A LD B,A
D12B LD A,($C877) Put the current jump height (C877) in H.
D12E LD H,A
D12F BIT 2,B Is bit 2 (falling onto a trampoline) set?
D131 JR NZ,$D14B
D133 LD A,L
D134 CP H
D135 JR NZ,$D145
D137 SET 2,B Set bit 2 (falling onto a trampoline).
D139 LD L,$00
D13B PUSH HL
D13C LD A,($CFCB) Get the current note to play while in mid-air. (CFCB)
D13F CALL $DB01 Play a sound.
D142 POP HL
D143 JR $D155
D145 INC L Increase the height fallen (what comes up must come down!)
D146 CALL $D567 Move Dan upwards while jumping.
D149 JR $D155
D14B INC L Increase the height fallen.
D14C CALL $D607 Fall through the air.
D14F LD A,L
D150 CP H
D151 JR NZ,$D155
D153 RES 0,B
D155 BIT 3,B Does Dan need changing direction?
D157 JR Z,$D165 Skip the next bit of code if not.
Dan needs changing direction.
D159 BIT 1,B Is Dan facing right?
D15B JR Z,$D162 Skip the next bit if not.
D15D CALL $D4B5 Move Dan right.
D160 JR $D165 Skip the next bit.
D162 CALL $D3EC Move Dan left.
Write all the data back out to memory.
D165 LD A,B Write the flags back to memory.
D166 LD ($C874),A
D169 LD A,L Write the height fallen back to memory.
D16A LD ($C876),A
D16D JR $D1CE Redraw Dan and do any collision detection.
Prev: D0DC Up: Map Next: D16F