![]() |
Routines |
| Prev: D0E4 | Up: Map | Next: D1B9 |
|
Used by the routine at 947A.
|
||||
| D14D | LD A,($A0BD) | Return if Rex is jumping | ||
| D150 | OR A | |||
| D151 | RET NZ | |||
| D152 | LD A,($A0B7) | Add falling speed to y-position of Rex | ||
| D155 | LD HL,$A0BC | |||
| D158 | ADD A,(HL) | |||
| D159 | CP $BA | if y-position is greater then 186 jump to check bottom room | ||
| D15B | JP NC,$D19B | |||
| D15E | LD ($A0B7),A | Set the new y-position | ||
| D161 | AND $07 | Return if y-position is not grid fixed | ||
| D163 | OR A | |||
| D164 | RET NZ | |||
| D165 | LD A,($A0B6) | Set A0AF the x-position of Rex | ||
| D168 | LD ($A0AF),A | |||
| D16B | LD A,($A0B7) | Set A0B7 the y-position of Rex | ||
| D16E | LD ($A0B0),A | |||
| D171 | LD A,($A0BB) | Set A the face direction | ||
| D174 | CALL $A503 | Computes address position in tile type buffer based on (x,y) position on screen | ||
| D177 | LD DE,$0061 | Set HL to point into tile type buffer under Rex feet | ||
| D17A | ADD HL,DE | |||
| D17B | LD A,(HL) | Set A the tile type | ||
| D17C | CALL $D08B | Check if tile type is 'background' | ||
| D17F | JP NZ,$D196 | Jump to stop falling if not background | ||
| D182 | INC HL | Increment address | ||
| D183 | LD A,(HL) | Set A the tile type | ||
| D184 | CALL $D08B | Check if tile type is 'background' | ||
| D187 | JP NZ,$D196 | Jump to stop falling if not background | ||
| D18A | LD A,($A0BC) | Increase falling speed by 2 | ||
| D18D | ADD A,$02 | |||
| D18F | CP $06 | Return if falling speed greater than 4 | ||
| D191 | RET Z | |||
| D192 | LD ($A0BC),A | Set the new falling speed | ||
| D195 | RET | |||
|
Rex has finished falling
|
||||
| D196 | XOR A | Set falling speed to 0 | ||
| D197 | LD ($A0BC),A | |||
| D19A | RET | |||
|
Rex has fallen through bottom room
|
||||
| D19B | LD A,($A08F) | If no bottom room connection then jump to kill Rex | ||
| D19E | OR A | |||
| D19F | JP Z,$D1AE | |||
| D1A2 | LD ($A0B8),A | Set the new room | ||
| D1A5 | LD A,$08 | Set the new y-position of Rex as 8 | ||
| D1A7 | LD ($A0B7),A | |||
| D1AA | POP BC | Restore BC | ||
| D1AB | JP $C95A | Check for end game room | ||
|
No room connection, kill Rex
|
||||
| D1AE | XOR A | Set Rex to not jumping nor falling | ||
| D1AF | LD ($A0BC),A | |||
| D1B2 | LD ($A0BD),A | |||
| D1B5 | CALL $9BDA | Handle Rex dead | ||
| D1B8 | RET | |||
| Prev: D0E4 | Up: Map | Next: D1B9 |