![]() |
Routines |
| Prev: 58452 | Up: Map | Next: 58530 |
|
Used by the routine at Controls_CheckDown.
|
|||||
|
Did the player press up?
|
|||||
| Controls_CheckUp | 58491 | CP 8 | Jump to Controls_CheckRightDown if the player didn't press up (8). | ||
| 58493 | JR NZ,Controls_CheckRightDown | ||||
|
Up movement checks for boundaries and the home box.
|
|||||
| MoveUp_Checks | 58495 | LD A,(55340) | A=*DestinationCursor_Y_Position. | ||
|
Can the player move up?
|
|||||
| 58498 | CP 5 | If *DestinationCursor_Y_Position is at or beyond the top-most boundary jump to Handler_CursorMovement. | |||
| 58500 | JP M,Handler_CursorMovement | ||||
|
Is the player below the home box?
This is position 2/ 6:
|
|||||
| 58503 | CP 6 | If *DestinationCursor_Y_Position is not 6 (which confirms the player can't be below the home box), jump to MoveUp. | |||
| 58505 | JR NZ,MoveUp | ||||
|
If the horizontal co-ordinate is 2 and the vertical co-ordinate is 6 then the player is below the home box. As the home box can only be entered from the right side, we treat the bottom side as a boundary and don't allow the player to move through it.
|
|||||
| 58507 | LD A,(55341) | Now compare *DestinationCursor_X_Position with 2. | |||
| 58510 | CP 2 | ||||
| 58512 | JP Z,Handler_CursorMovement | If *DestinationCursor_X_Position is 2 (which confirms that yes, the player is below the home box), jump to Handler_CursorMovement to prevent the movement from happening. | |||
|
Normal up movement.
|
|||||
| 58515 | LD A,(55340) | Reload *DestinationCursor_Y_Position into A. | |||
| MoveUp | 58518 | SUB 4 | Move 4 rows up. | ||
| 58520 | LD (55340),A | Update *DestinationCursor_Y_Position. | |||
|
Update the tile ID the player has now landed on.
|
|||||
| 58523 | LD A,(HL) | Subtract 7 from *HL. | |||
| 58524 | SUB 7 | ||||
| 58526 | LD (HL),A | ||||
| 58527 | JP Handler_CursorMovement | Jump to Handler_CursorMovement. | |||
| Prev: 58452 | Up: Map | Next: 58530 |