|  | 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 |