|  | Routines | 
| Prev: 54884 | Up: Map | Next: 55237 | 
|  | |||||||||||||||
| 
Character state variables/ flags.
 | |||||||||||||||
| Bandit_State_Reference | 55070 | DEFB 4 | The current character state. | ||||||||||||
| Bandit_Timer_01 | 55071 | DEFB 8 | Character timer 1. | ||||||||||||
| Bandit_Timer_02 | 55072 | DEFB 8 | Character timer 2. | ||||||||||||
| Bandit_Timer_03 | 55073 | DEFB 0 | Character timer 3. | ||||||||||||
| Bandit_Timer_04 | 55074 | DEFB 85 | Character timer 4. | ||||||||||||
| 55075 | DEFB 8 | ||||||||||||||
| 55076 | DEFB 8 | ||||||||||||||
| 
This routine looks at the current character state and routes to the correct subroutine.
 | |||||||||||||||
| Bandit_Open_Routing | 55077 | LD HL,55070 | A=Bandit_State_Reference. | ||||||||||||
| 55080 | LD A,(HL) | ||||||||||||||
| 55081 | DEC A | Work out which routine to use based on the current state. 
 | |||||||||||||
| 55082 | JR Z,Bandit_Open_01 | ||||||||||||||
| 55084 | DEC A | ||||||||||||||
| 55085 | JR Z,Bandit_Open_02 | ||||||||||||||
| 55087 | DEC A | ||||||||||||||
| 55088 | JR Z,Bandit_Open_03 | ||||||||||||||
| 55090 | JR Bandit_Open_04 | ||||||||||||||
| 
Handle door frame 1 countdown/ transition to door frame 2.
 | |||||||||||||||
| Bandit_Open_01 | 55092 | LD A,(55071) | Decrease Bandit_Timer_01 by one, return if result is not zero. | ||||||||||||
| 55095 | DEC A | ||||||||||||||
| 55096 | LD (55071),A | ||||||||||||||
| 55099 | RET NZ | ||||||||||||||
| 55100 | INC (HL) | Move onto next character state. | |||||||||||||
| 55101 | CALL Draw_DoorFrame02 | Pass character frame index (draw | 0) to Draw_DoorFrame02 and return. | |||||||||||||
| 55104 | RET | ||||||||||||||
| 
Handle door frame 2 countdown/ transition to door frame 3.
 | |||||||||||||||
| Bandit_Open_02 | 55105 | LD A,(55072) | Decrease Bandit_Timer_02 by one, return if result is not zero. | ||||||||||||
| 55108 | DEC A | ||||||||||||||
| 55109 | LD (55072),A | ||||||||||||||
| 55112 | RET NZ | ||||||||||||||
| 55113 | INC (HL) | Move onto next character state. | |||||||||||||
| 55114 | CALL Draw_DoorFrame03 | Pass character frame index (draw | 0) to Draw_DoorFrame03 and return. | |||||||||||||
| 55117 | RET | ||||||||||||||
| 
Handle door frame 3 countdown/ transition to door frame 4.
 | |||||||||||||||
| Bandit_Open_03 | 55118 | LD A,(55073) | Decrease Bandit_Timer_03 by one, return if result is not zero. | ||||||||||||
| 55121 | DEC A | ||||||||||||||
| 55122 | LD (55073),A | ||||||||||||||
| 55125 | RET NZ | ||||||||||||||
| 55126 | INC (HL) | Move onto next character state. | |||||||||||||
| 55127 | CALL Draw_DoorFrame04 | Pass character frame index (draw | 0) to Draw_DoorFrame04 and return. | |||||||||||||
| 55130 | RET | ||||||||||||||
| 
Handle door frame 4 timer...
 | |||||||||||||||
| Bandit_Open_04 | 55131 | LD DE,52952 | Calls Hit_Detection with DE=$CED8. | ||||||||||||
| 55134 | CALL Hit_Detection | ||||||||||||||
| 55137 | LD A,(55074) | Decrease Bandit_Timer_04 by one, return if result is not zero. | |||||||||||||
| 55140 | DEC A | ||||||||||||||
| 55141 | LD (55074),A | ||||||||||||||
| 55144 | RET NZ | ||||||||||||||
| 55145 | INC A | Writes $01 to 54014. | |||||||||||||
| 55146 | LD (54014),A | ||||||||||||||
| 55149 | CALL Reset___ | Call Reset___. | |||||||||||||
| 55152 | RET | Return. | |||||||||||||
| 
This routine looks at the current character state and routes to the correct subroutine.
 | |||||||||||||||
| Bandit_Close_Routing | 55153 | LD HL,55070 | A=Bandit_State_Reference. | ||||||||||||
| 55156 | LD A,(HL) | ||||||||||||||
| 55157 | DEC A | Work out which routine to use based on the current state. 
 | |||||||||||||
| 55158 | JR Z,Bandit_Shot_Action | ||||||||||||||
| 55160 | DEC A | ||||||||||||||
| 55161 | JR Z,Bandit_Close_04 | ||||||||||||||
| 55163 | DEC A | ||||||||||||||
| 55164 | JR Z,Bandit_Close_03 | ||||||||||||||
| 55166 | DEC A | ||||||||||||||
| 55167 | JR Z,Bandit_Close_02 | ||||||||||||||
| 55169 | JR Bandit_Close_01 | ||||||||||||||
| 
Handles the transition to the (shot | 1) frame in the open doorway.
 | |||||||||||||||
| Bandit_Shot_Action | 55171 | INC (HL) | Move onto next character state. | ||||||||||||
| 55172 | INC A | Move onto next character frame (i.e. shot | 1). | |||||||||||||
| 55173 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||
| 55176 | RET | ||||||||||||||
| 
Handle "floor frame in open doorway" countdown.
 | |||||||||||||||
| Bandit_Close_04 | 55177 | LD A,(55071) | Decrease Bandit_Timer_01 by one, return if result is not zero. | ||||||||||||
| 55180 | DEC A | ||||||||||||||
| 55181 | LD (55071),A | ||||||||||||||
| 55184 | RET NZ | ||||||||||||||
| 55185 | INC (HL) | Move onto next character state. | |||||||||||||
| 55186 | LD A,2 | Pass character frame index (floor | 2) to Draw_DoorFrame04 and return. | |||||||||||||
| 55188 | CALL Draw_DoorFrame04 | ||||||||||||||
| 55191 | RET | ||||||||||||||
| 
Handle door frame 4 countdown/ transition to door frame 3.
 | |||||||||||||||
| Bandit_Close_03 | 55192 | LD A,(55072) | Decrease Bandit_Timer_02 by one, return if result is not zero. | ||||||||||||
| 55195 | DEC A | ||||||||||||||
| 55196 | LD (55072),A | ||||||||||||||
| 55199 | RET NZ | ||||||||||||||
| 55200 | INC (HL) | Move onto next character state. | |||||||||||||
| 55201 | LD A,2 | Pass character frame index (floor | 2), pass it to Draw_DoorFrame03 and return. | |||||||||||||
| 55203 | CALL Draw_DoorFrame03 | ||||||||||||||
| 55206 | RET | ||||||||||||||
| 
Handle door frame 3 countdown/ transition to door frame 2.
 | |||||||||||||||
| Bandit_Close_02 | 55207 | LD A,(55073) | Decrease Bandit_Timer_03 by one, return if result is not zero. | ||||||||||||
| 55210 | DEC A | ||||||||||||||
| 55211 | LD (55073),A | ||||||||||||||
| 55214 | RET NZ | ||||||||||||||
| 55215 | INC (HL) | Move onto next character state. | |||||||||||||
| 55216 | LD A,2 | Pass character frame index (floor | 2), pass it to Draw_DoorFrame02 and return. | |||||||||||||
| 55218 | CALL Draw_DoorFrame02 | ||||||||||||||
| 55221 | RET | ||||||||||||||
| 
Handle door frame 2 countdown/ transition to door frame 1.
 | |||||||||||||||
| Bandit_Close_01 | 55222 | LD A,(55074) | Decrease Bandit_Timer_04 by one, return if result is not zero. | ||||||||||||
| 55225 | DEC A | ||||||||||||||
| 55226 | LD (55074),A | ||||||||||||||
| 55229 | RET NZ | ||||||||||||||
| 55230 | CALL Draw_DoorFrame1 | Call Draw_DoorFrame1 (i.e. no character/ door is shut). | |||||||||||||
| 55233 | CALL Reset___ | Call Reset___. | |||||||||||||
| 55236 | RET | Return. | |||||||||||||
| Prev: 54884 | Up: Map | Next: 55237 |