![]() |
Routines |
Prev: 60936 | Up: Map | Next: 61094 |
Used by the routines at PlayerControls_Kempston and PlayerControls.
|
||||
Handler_Doors | 61019 | LD IX,(23510) | IX=*ReferenceDoors. | |
61023 | LD BC,(62001) | BC=*TablePlayerAttributes. | ||
Are we done?
|
||||
Handler_Doors_Loop | 61027 | LD A,(IX+0) | Return if the terminator character has been received instead of a co-ordinate (255). | |
61030 | CP 255 | |||
61032 | RET Z | |||
Simple collision detection.
|
||||
61033 | SUB C | Jump to Handler_Doors_Next if subtracting the players horizontal position from the door position is higher than 2. | ||
61034 | CP 2 | |||
61036 | JR NC,Handler_Doors_Next | |||
61038 | LD A,(IX+1) | Jump to FoundDoorMatch if the door vertical position minus one is equal to the players vertical position. | ||
61041 | DEC A | |||
61042 | CP B | |||
61043 | JR Z,FoundDoorMatch | |||
The door was not found to match the players position, so move onto the next one.
|
||||
Handler_Doors_Next | 61045 | LD DE,4 | IX+=0004. | |
61048 | ADD IX,DE | |||
61050 | JR Handler_Doors_Loop | Jump to Handler_Doors_Loop. | ||
We found a matching door! But check if it's the "bad door" (the CYAN door in room #10) else, change the current room.
|
||||
FoundDoorMatch | 61052 | LD A,(IX+3) | Call Handler_BadDoor if *IX+3 is equal to 21. | |
61055 | CP 21 | |||
61057 | CALL Z,Handler_BadDoor | |||
This entry point is used by the routine at InitialiseGame.
|
||||
ChangeRoom | 61060 | LD (23507),A | Write A to *CurrentRoom. | |
61063 | LD A,0 | Write 0 to: | ||
61065 | LD (62017),A | |||
61068 | LD (62171),A | |||
61071 | LD (58489),A | |||
61074 | LD (62236),A | |||
61077 | LD A,1 | Write 1 to *62018. | ||
61079 | LD (62018),A | |||
Write the front-facing player sprite to be the active frame.
This ensures the player appears to be emerging from the door.
|
||||
61082 | LD A,152 | Write 152 to *PlayerSpriteID. | ||
61084 | LD (62007),A | |||
This also draws the new room to the screen.
|
||||
61087 | CALL PrintStatusBar | Call PrintStatusBar. | ||
61090 | CALL ResetSoundFlags | Call ResetSoundFlags. | ||
61093 | RET | Return. |
Prev: 60936 | Up: Map | Next: 61094 |