![]() |
Routines |
| Prev: 31110 | Up: Map | Next: 31204 |
|
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 | Next: 31204 |