Prev: B09D Up: Map Next: B0E6
B09F: Check for user input and act on it
Used by the routines at 8184 and F177.
B09F LD IY,($B09D) Point IY at the current player buffer.
B0A3 LD A,(IY+$0F) Mark the current player's room as the current one. (B951).
B0A6 LD ($B951),A
B0A9 CALL $AFC4 Drop the player to ground if they are in mid-air.
B0AC LD A,(IY+$46) Set flag (?) to 0. (BCAD)
B0AF OR A
B0B0 JP NZ,$B1B9 If not zero, make the character jump.
B0B3 LD A,(IY+$37) Is the character on the ground? (???)
B0B6 OR A
B0B7 JP NZ,$B197 If not, make them fall one level.
B0BA CALL $B06D Was 'jump' pressed?
B0BD OR A
B0BE JP NZ,$B1A6 If it was, make the character jump.
B0C1 LD (IY+$3C),$00
B0C5 CALL $B00B Was 'right' pressed?
B0C8 OR A
B0C9 JR Z,$B0D6 Jump forward if it wasn't.
B0CB LD (IY+$3C),$01 Set the direction to "right".
B0CF LD (IY+$41),$01
B0D3 JP $B288 Move the character.
B0D6 CALL $B03C Was 'left' pressed?
B0D9 OR A
B0DA RET Z Return if it wasn't, no input made.
B0DB LD (IY+$3C),$FF Set the direction to "left".
B0DF LD (IY+$41),$FF
B0E3 JP $B288 Move the character.
Prev: B09D Up: Map Next: B0E6