Routines |
Prev: 29192 | Up: Map | Next: 29277 |
The address of this uninterruptible subcommand routine is placed into bytes 17 and 18 of the bike's buffer by the routine at 29278. It controls the bike when it is wheeling along on its own (after ERIC has dismounted), or when ERIC is standing on the saddle.
|
||||
29194 | LD HL,32752 | 32752 holds the bike's momentum | ||
29197 | LD A,(HL) | Pick this up in A | ||
29198 | SUB 7 | Is it time for the bike to come to rest? | ||
29200 | JR NC,29223 | Jump if not | ||
It's time for the bike to come to rest.
|
||||
29202 | LD L,237 | HL=32749 (ERIC's status flags) | ||
29204 | BIT 7,(HL) | Is ERIC standing on the saddle of the bike? | ||
29206 | JR Z,29210 | Jump if not | ||
29208 | LD (HL),16 | Set bit 4 at 32749: ERIC is falling and will not land on his feet | ||
29210 | LD H,211 | 211=bike | ||
29212 | CALL 25012 | Update the SRB for the bike's current animatory state and location | ||
29215 | DEC A | A=animatory state of the bike resting on the floor | ||
29216 | LD L,18 | Remove the address of this routine from bytes 17 and 18 of the bike's buffer | ||
29218 | LD (HL),0 | |||
29220 | JP 24880 | Update the bike's animatory state and update the SRB | ||
The bike still has some momentum left. Check whether it has hit anything.
|
||||
29223 | LD (HL),A | Set the bike's remaining momentum at 32752 | ||
29224 | LD HL,(54016) | E=bike's x-coordinate, A=bike's animatory state | ||
29227 | LD A,L | |||
29228 | LD E,H | |||
29229 | CALL 28672 | Check for walls, closed doors or ALBERT in the bike's path | ||
29232 | LD L,237 | HL=32749 (ERIC's status flags) | ||
29234 | JR NC,29242 | Jump if ALBERT's not impeding the bike's progress | ||
29236 | BIT 7,(HL) | Is ERIC standing on the saddle of the bike? | ||
29238 | JR Z,29252 | Jump if not | ||
29240 | LD (HL),16 | Set bit 4: ERIC is falling and will not land on his feet | ||
29242 | JR NZ,29252 | Jump if there are no walls or closed doors in the bike's path | ||
29244 | BIT 7,(HL) | Is ERIC standing on the saddle of the bike? | ||
29246 | JR Z,29210 | Jump if not | ||
29248 | LD (HL),64 | Set bit 6: ERIC has hit a wall or closed door while standing on the saddle of the bike | ||
29250 | JR 29210 | |||
29252 | LD H,211 | 211=bike | ||
29254 | CALL 29264 | Move the bike and one space forward and update the SRB | ||
29257 | LD A,(32749) | 32749 holds ERIC's status flags | ||
29260 | RLCA | Is ERIC standing on the saddle of the bike? | ||
29261 | RET NC | Return if not | ||
This entry point is used by the routine at 29278.
|
||||
29262 | LD H,210 | 210=ERIC | ||
This entry point is used by the routine at 30380.
|
||||
29264 | CALL 25012 | Update the SRB for the character's current animatory state and location | ||
29267 | RLCA | |||
29268 | RRCA | |||
29269 | JR C,29273 | Jump if the character is facing right | ||
29271 | DEC E | |||
29272 | DEC E | |||
29273 | INC E | Now E=x-coordinate of the spot in front of the character | ||
29274 | JP 31723 | Update the character's location, update the SRB, and scroll the screen if necessary |
Prev: 29192 | Up: Map | Next: 29277 |