Prev: 54019 Up: Map Next: 54162
54023: Action Controls
Used by the routine at 53977.
On entry A will contain one of;
Value Bits Door
16 00010000 Door 2
17 00010001 Door 3
18 00010010 Door 1
This is written to Controls_Byte, and then decoded into writing a 1 2 or 3 to Hit to represent which door has been shot at. This routine also writes 1 to One, Two and Three to represent the same thing. Before returning, HL is set to the screen location for displaying the shot mask/ shot image in the centre of the door.
Action_Controls 54023 LD HL,54022 Writes A to Controls_Byte and sets HL=Hit.
54026 LD (HL),A
54027 LD HL,54016
54030 LD A,C
54031 BIT 0,A If "3" was pressed then jump to Shot_Three (a check for if bit 0 is set).
54033 JR NZ,Shot_Three
54035 BIT 1,A If "1" was pressed then jump to Shot_One (a check for if bit 1 is set).
54037 JR NZ,Shot_One
Handles settings flags and shot drawing location for door 2.
Shot_Two 54039 LD A,(54019) If Two is not zero then return.
54042 AND A
54043 RET NZ
54044 LD (54020),A Sets the other two door flags to zero (Three and One).
54047 LD (54021),A
54050 INC A Indicate the the middle door is being shot at (write 1 to Two and 2 to Hit).
54051 LD (54019),A
54054 LD A,2
54056 LD (HL),A
54057 LD HL,55468 Increase 55468 by one.
54060 INC (HL)
54061 LD HL,18479 Sets the screen location for this shot to 18479 and stash it.
54064 PUSH HL
54065 CALL Draw_GunShot_Mask Draw the shot mask.
54068 POP HL Grab the screen location again, and now draw the shot.
54069 CALL Draw_GunShot
54072 JP Shot_Sound_01_Alias Jump to Shot_Sound_01_Alias.
Handles settings flags and shot drawing location for door 3.
Shot_Three 54075 LD A,(54020) If Three is not zero then return.
54078 AND A
54079 RET NZ
54080 LD (54019),A Sets the other two door flags to zero (Two and One).
54083 LD (54021),A
54086 INC A Indicate the the right door is being shot at (write 1 to Three and 3 to Hit).
54087 LD (54020),A
54090 LD A,3
54092 LD (HL),A
54093 LD HL,55468 Shifts the value at 55468 to the left with bit 7 moved to the carry flag and bit 0 reset (zeroed).
54096 SLA (HL)
54098 LD HL,18490 Sets the screen location for this shot to 18490 and stash it.
54101 PUSH HL
54102 CALL Draw_GunShot_Mask Draw the shot mask.
54105 POP HL Grab the screen location again, and now draw the shot.
54106 CALL Draw_GunShot
54109 JP Shot_Sound_02_Alias Jump to Shot_Sound_02_Alias.
Handles settings flags and shot drawing location for door 1.
Shot_One 54112 LD A,(54021) If One is not zero then return.
54115 AND A
54116 RET NZ
54117 LD (54019),A Sets the other two door flags to zero (Two and Three).
54120 LD (54020),A
54123 INC A Indicate the the left door is being shot at (write 1 to One and 1 to Hit).
54124 LD (54021),A
54127 LD A,1
54129 LD (HL),A
54130 LD HL,55468 Shifts the value at 55468 to the left with bit 7 moved to the carry flag and bit 0 reset (zeroed).
54133 SLA (HL)
54135 LD HL,18468 Sets the screen location for this shot to 18468 and stash it.
54138 PUSH HL
54139 CALL Draw_GunShot_Mask Draw the shot mask.
54142 POP HL Grab the screen location again, and now draw the shot.
54143 CALL Draw_GunShot
54146 CALL Shot_Sound_03_Alias Jump to Shot_Sound_03_Alias.
54149 RET Return.
Sets the flag for indicating "right" has been pressed by the player.
Set_Right 54150 LD HL,54017 Write 1 to Right and return.
54153 LD (HL),1
54155 RET
Sets the flag for indicating "left" has been pressed by the player.
Set_Left 54156 LD HL,54018 Write 1 to Left and return.
54159 LD (HL),1
54161 RET
Prev: 54019 Up: Map Next: 54162