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 $01, $02 or $03 to Hit to represent which door has been shot at. This routine also writes $01 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 $01 to Two and $02 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 $482F 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 $01 to Three and $03 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 $483A 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 $01 to One and $01 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 $4824 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 $01 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 $01 to Left and return.
54159 LD (HL),1
54161 RET
Prev: 54019 Up: Map Next: 54162