![]() |
Routines |
| Prev: D8E5 | Up: Map | Next: DAEF |
|
|
|||||||||||||||
|
Character state variables/ flags.
|
|||||||||||||||
| Bandit_Draw | DA0C | DEFB $00 | |||||||||||||
| Bandit_Draw_Frame_01 | DA0D | DEFB $08 | Character frame index 1. | ||||||||||||
| Bandit_Draw_Frame_02 | DA0E | DEFB $08 | Character frame index 2. | ||||||||||||
| Bandit_Draw_Frame_03 | DA0F | DEFB $09 | Character frame index 3. | ||||||||||||
| Bandit_Draw_Frame_04 | DA10 | DEFB $07 | Character frame index 4. | ||||||||||||
| Bandit_Draw_State_Reference | DA11 | DEFB $05 | The current character state. | ||||||||||||
| Bandit_Draw_Timer_01 | DA12 | DEFB $00 | Character timer 1. | ||||||||||||
| Bandit_Draw_Timer_02 | DA13 | DEFB $00 | Character timer 2. | ||||||||||||
| Bandit_Draw_Timer_03 | DA14 | DEFB $00 | Character timer 3. | ||||||||||||
| Bandit_Draw_Timer_04 | DA15 | DEFB $00 | Character timer 4. | ||||||||||||
| Bandit_Draw_Timer_05 | DA16 | DEFB $00 | Character timer 5. | ||||||||||||
|
This routine looks at the current character state and routes to the correct subroutine.
|
|||||||||||||||
| Bandit_Draw_Open_Routing | DA17 | LD HL,$DA11 | A=Bandit_Draw_State_Reference. | ||||||||||||
| DA1A | LD A,(HL) | ||||||||||||||
| DA1B | DEC A | Work out which routine to use based on the current state.
|
|||||||||||||
| DA1C | JR Z,Bandit_Draw_Open_01 | ||||||||||||||
| DA1E | DEC A | ||||||||||||||
| DA1F | JR Z,Bandit_Draw_Open_02 | ||||||||||||||
| DA21 | DEC A | ||||||||||||||
| DA22 | JR Z,Bandit_Draw_Open_03 | ||||||||||||||
| DA24 | DEC A | ||||||||||||||
| DA25 | JR Z,Bandit_Draw_Open_04 | ||||||||||||||
| DA27 | JR Bandit_Draw_Open_05 | ||||||||||||||
|
Handle door frame 1 countdown/ transition to door frame 2.
|
|||||||||||||||
| Bandit_Draw_Open_01 | DA29 | LD A,($DA12) | Decrease Bandit_Draw_Timer_01 by one, return if result is not zero. | ||||||||||||
| DA2C | DEC A | ||||||||||||||
| DA2D | LD ($DA12),A | ||||||||||||||
| DA30 | RET NZ | ||||||||||||||
| DA31 | INC (HL) | Move onto next character state. | |||||||||||||
| DA32 | LD A,($DA0D) | Grab the character frame index from Bandit_Draw_Frame_01. | |||||||||||||
| DA35 | CALL Draw_DoorFrame02 | Call Draw_DoorFrame02 and return. | |||||||||||||
| DA38 | RET | ||||||||||||||
|
Handle door frame 2 countdown/ transition to door frame 3.
|
|||||||||||||||
| Bandit_Draw_Open_02 | DA39 | LD A,($DA13) | Decrease Bandit_Draw_Timer_02 by one, return if result is not zero. | ||||||||||||
| DA3C | DEC A | ||||||||||||||
| DA3D | LD ($DA13),A | ||||||||||||||
| DA40 | RET NZ | ||||||||||||||
| DA41 | INC (HL) | Move onto next character state. | |||||||||||||
| DA42 | LD A,($DA0D) | Grab the character frame index from Bandit_Draw_Frame_01. | |||||||||||||
| DA45 | CALL Draw_DoorFrame03 | Call Draw_DoorFrame03 and return. | |||||||||||||
| DA48 | RET | ||||||||||||||
|
Handle door frame 3 countdown/ transition to door frame 4.
|
|||||||||||||||
| Bandit_Draw_Open_03 | DA49 | LD A,($DA14) | Decrease Bandit_Draw_Timer_03 by one, return if result is not zero. | ||||||||||||
| DA4C | DEC A | ||||||||||||||
| DA4D | LD ($DA14),A | ||||||||||||||
| DA50 | RET NZ | ||||||||||||||
| DA51 | INC (HL) | Move onto next character state. | |||||||||||||
| DA52 | LD A,($DA0D) | Grab the character frame index from Bandit_Draw_Frame_01. | |||||||||||||
| DA55 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||
| DA58 | RET | ||||||||||||||
|
Handles state countdown.
|
|||||||||||||||
| Bandit_Draw_Open_04 | DA59 | LD DE,$D037 | Call Hit_Detection with a callback to Todo_Door_Reset. | ||||||||||||
| DA5C | CALL Hit_Detection | ||||||||||||||
| DA5F | LD A,($DA15) | Decrease Bandit_Draw_Timer_04 by one, return if result is not zero. | |||||||||||||
| DA62 | DEC A | ||||||||||||||
| DA63 | LD ($DA15),A | ||||||||||||||
| DA66 | RET NZ | ||||||||||||||
| DA67 | INC (HL) | Move onto next character state. | |||||||||||||
| DA68 | LD A,($DA0E) | Grab the character frame index from Bandit_Draw_Frame_02. | |||||||||||||
| DA6B | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||
| DA6E | RET | ||||||||||||||
|
Handles state countdown.
|
|||||||||||||||
| Bandit_Draw_Open_05 | DA6F | LD DE,$D040 | Call Hit_Detection with a callback to D040. | ||||||||||||
| DA72 | CALL Hit_Detection | ||||||||||||||
| DA75 | LD A,($DA16) | Decrease Bandit_Draw_Timer_05 by one, return if result is not zero. | |||||||||||||
| DA78 | DEC A | ||||||||||||||
| DA79 | LD ($DA16),A | ||||||||||||||
| DA7C | RET NZ | ||||||||||||||
| DA7D | INC A | Else write $01 to D2FE, call Reset___ and return. | |||||||||||||
| DA7E | LD ($D2FE),A | ||||||||||||||
| DA81 | CALL Reset___ | ||||||||||||||
| DA84 | RET | ||||||||||||||
|
This routine looks at the current character state and routes to the correct subroutine.
|
|||||||||||||||
| Bandit_Draw_Close_Routing | DA85 | LD HL,$DA11 | A=Bandit_Draw_State_Reference. | ||||||||||||
| DA88 | LD A,(HL) | ||||||||||||||
| DA89 | DEC A | Work out which routine to use based on the current state.
|
|||||||||||||
| DA8A | JR Z,Bandit_Draw_Close_01 | ||||||||||||||
| DA8C | DEC A | ||||||||||||||
| DA8D | JR Z,Bandit_Draw_Close_02 | ||||||||||||||
| DA8F | DEC A | ||||||||||||||
| DA90 | JR Z,Bandit_Draw_Close_03 | ||||||||||||||
| DA92 | DEC A | ||||||||||||||
| DA93 | JR Z,Bandit_Draw_Close_04 | ||||||||||||||
| DA95 | JR Bandit_Draw_Close_05 | ||||||||||||||
|
Handles state countdown.
|
|||||||||||||||
| Bandit_Draw_Close_01 | DA97 | LD A,($DA12) | Decrease Bandit_Draw_Timer_01 by one, return if result is not zero. | ||||||||||||
| DA9A | DEC A | ||||||||||||||
| DA9B | LD ($DA12),A | ||||||||||||||
| DA9E | RET NZ | ||||||||||||||
| DA9F | INC (HL) | Move onto next character state. | |||||||||||||
| DAA0 | LD A,($DA0F) | Grab the character frame index from Bandit_Draw_Frame_03. | |||||||||||||
| DAA3 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04 and return. | |||||||||||||
| DAA6 | RET | ||||||||||||||
|
Handles state countdown.
|
|||||||||||||||
| Bandit_Draw_Close_02 | DAA7 | LD A,($DA13) | Decrease Bandit_Draw_Timer_02 by one, return if result is not zero. | ||||||||||||
| DAAA | DEC A | ||||||||||||||
| DAAB | LD ($DA13),A | ||||||||||||||
| DAAE | RET NZ | ||||||||||||||
| DAAF | INC (HL) | Move onto next character state. | |||||||||||||
| DAB0 | LD A,($DA10) | Grab the character frame index from Bandit_Draw_Frame_04. | |||||||||||||
| DAB3 | CALL Draw_DoorFrame04 | Call Draw_DoorFrame04. | |||||||||||||
| DAB6 | LD A,($DA0C) | Return if Bandit_Draw is zero. | |||||||||||||
| DAB9 | AND A | ||||||||||||||
| DABA | RET Z | ||||||||||||||
| DABB | INC A | Else write $01 to D2FE and return. | |||||||||||||
| DABC | LD ($D2FE),A | ||||||||||||||
| DABF | RET | ||||||||||||||
|
Handle door frame 4 countdown/ transition to door frame 3.
|
|||||||||||||||
| Bandit_Draw_Close_03 | DAC0 | LD A,($DA14) | Decrease Bandit_Draw_Timer_03 by one, return if result is not zero. | ||||||||||||
| DAC3 | DEC A | ||||||||||||||
| DAC4 | LD ($DA14),A | ||||||||||||||
| DAC7 | RET NZ | ||||||||||||||
| DAC8 | INC (HL) | Move onto next character state. | |||||||||||||
| DAC9 | LD A,($DA10) | Grab the character frame index from Bandit_Draw_Frame_04. | |||||||||||||
| DACC | CALL Draw_DoorFrame03 | Call Draw_DoorFrame03 and return. | |||||||||||||
| DACF | RET | ||||||||||||||
|
Handle door frame 3 countdown/ transition to door frame 2.
|
|||||||||||||||
| Bandit_Draw_Close_04 | DAD0 | LD A,($DA15) | Decrease Bandit_Draw_Timer_04 by one, return if result is not zero. | ||||||||||||
| DAD3 | DEC A | ||||||||||||||
| DAD4 | LD ($DA15),A | ||||||||||||||
| DAD7 | RET NZ | ||||||||||||||
| DAD8 | INC (HL) | Move onto next character state. | |||||||||||||
| DAD9 | LD A,($DA10) | Grab the character frame index from Bandit_Draw_Frame_04. | |||||||||||||
| DADC | CALL Draw_DoorFrame02 | Call Draw_DoorFrame02 and return. | |||||||||||||
| DADF | RET | ||||||||||||||
|
Handle door frame 2 countdown/ transition to door frame 1.
|
|||||||||||||||
| Bandit_Draw_Close_05 | DAE0 | LD A,($DA16) | Decrease Bandit_Draw_Timer_05 by one, return if result is not zero. | ||||||||||||
| DAE3 | DEC A | ||||||||||||||
| DAE4 | LD ($DA16),A | ||||||||||||||
| DAE7 | RET NZ | ||||||||||||||
| DAE8 | CALL Draw_DoorFrame1 | Call Draw_DoorFrame1 (i.e. no character/ door is shut). | |||||||||||||
| DAEB | CALL Reset___ | Call Reset___ and return. | |||||||||||||
| DAEE | RET | ||||||||||||||
| Prev: D8E5 | Up: Map | Next: DAEF |