![]() |
Routines |
Prev: 31110 | Up: Map |
Called from the main loop at 61483.
|
||||||||
31126 | LD A,(32750) | A=current game mode (0-4) | ||||||
31129 | AND A | Is it demo mode? | ||||||
31130 | JP NZ,60082 | Jump if not | ||||||
It's demo mode.
|
||||||||
31133 | CALL 60121 | Collect the ASCII code of the last key pressed in A | ||||||
31136 | JP NZ,61674 | Start a new game if a game key was pressed | ||||||
31139 | LD A,38 | Message 38: 'PRESS A KEY TO PLAY' | ||||||
31141 | LD (32722),A | Store this message number at 32722 so that it can be monitored | ||||||
31144 | CALL 30975 | Is this message in the message queue? | ||||||
31147 | CALL NZ,28357 | If not, add it to the message queue (again) | ||||||
31150 | LD A,248 | Set bits 3-7 at 32746, effectively giving Sam the keys to all the houses | ||||||
31152 | LD (32746),A | |||||||
31155 | LD A,(58891) | Pick up byte 11 of Sam's buffer (which holds his destination y-coordinate) | ||||||
31158 | AND A | Has a destination been set for Sam yet? | ||||||
31159 | JR NZ,31188 | Jump if so | ||||||
We need to set a new destination for Sam.
|
||||||||
31161 | CALL 61823 | Get an even random number between 134 and 148 in A | ||||||
31164 | AND 14 | |||||||
31166 | ADD A,134 | |||||||
31168 | LD L,A | Point HL at an entry in the table of locations at 31110 | ||||||
31169 | LD H,121 | |||||||
31171 | LD E,(HL) | Collect the location coordinates in DE | ||||||
31172 | INC L | |||||||
31173 | LD D,(HL) | |||||||
31174 | LD HL,58890 | Copy the location coordinates into bytes 10 and 11 of Sam's buffer | ||||||
31177 | LD (HL),E | |||||||
31178 | INC L | |||||||
31179 | LD (HL),D | |||||||
31180 | LD C,1 | Assume a z-coordinate of 1 (indoors) | ||||||
31182 | CALL 60743 | Obtain an identifier for the location | ||||||
31185 | LD L,12 | Copy the destination location identifier into byte 12 of Sam's buffer | ||||||
31187 | LD (HL),A | |||||||
31188 | LD H,230 | 230=Sam | ||||||
31190 | CALL 60812 | Determine the next move Sam should make to reach his destination | ||||||
31193 | AND A | Is Sam already at his destination? | ||||||
31194 | JR Z,31161 | Jump back to set a new destination if so | ||||||
Sam's destination has been set. Now to simulate a keypress that will make him take the next step towards it.
|
||||||||
31196 | ADD A,127 | Point HL at the offset of the appropriate keypress to simulate in the table at 31104 | ||||||
31198 | LD L,A | |||||||
31199 | LD H,121 | |||||||
31201 | LD A,(HL) | Pick up the keypress offset | ||||||
31202 | AND A | Make sure the zero flag is reset to indicate that a simulated keypress was made (this instruction is redundant) | ||||||
31203 | RET |
Prev: 31110 | Up: Map |