Patch:Keen shooting (Galaxy)

From KeenWiki
Jump to: navigation, search

This page contains patches that cover Keen shooting and his firing rate, as well as his shots. Some patches will overlap other game actions, such as patches relating to Keen shooting on a pole. Since the three Galaxy games are so similar patches for all three are treated together on this page. Patches for individual episodes that relate to the player can be found at Patch:Keen (Keen 4), Patch:Keen (Keen 5) and Patch:Keen (Keen 6). Patches relating to the player's shot itself can be found at Patch:Keen's shot (Galaxy).


Remove impossible bullet

This patch removes the 'impossible bullet' bug in Keen 6. As a side effect it will affect Keen's interaction with the Flect.

Patch: Keen 6
#No impossible bullet
%patch $BE7A $EB


Continuous firing

This patch allows Keen to fire continuously, that is, hold down the fire key and produce a constant (Though not very fast) stream of shots. Several patches are required due to the different things Keen can be doing while shooting.

Patch: Keen 4
#Continuous firing when shooting while...
%patch $BAA8 $EB $04
#Standing still
%patch $BEB7 $EB $04
#Walking
%patch $C464 $EB $04
#Jumping
%patch $C5E0 $EB $04
#Pogoing
%patch $C64F $EB $04
#On poles

Patch: Keen 5
#Continuous firing when shooting while...
%patch $AE70 $EB $04
#Standing still
%patch $B27C $EB $04
#Walking
%patch $B882 $EB $04
#Jumping
%patch $B9FE $EB $04
#Pogoing
%patch $BA6D $EB $04
#On poles

Patch: Keen 6
#Continuous firing when shooting while...
%patch $ACBE $EB $04
#Standing still
%patch $B0B8 $EB $04
#Walking
%patch $B665 $EB $04
#Jumping
%patch $B7E1 $EB $04
#Pogoing
%patch $B850 $EB $04
#On poles


Increase shot rate

This increases the rate Keen can shoot slightly faster. It has the advantage of making the shot rate directly proportional to Keen's shooting animation speed. (1 shot per animation.)

Patch: Keen 4
#Increase firing rate
%patch $2FBF6 $098CW
#Shoot left\right
%patch $2FC32 $098CW
#Shoot up
%patch $30088 $11A2W
#Shoot left\right in air
%patch $300E2 $11A2W
#Shoot up in air
%patch $3013C $11A2W
#Shoot down in air
%patch $2FE6C $0EF0W
#Shoot left\right on pole
%patch $2FEA8 $0EF0W
#Shoot up on pole
%patch $2FEE4 $0EF0W
#Shoot down on pole


Multiple shots per fire

This patch makes Keen produce several shots each time he fires (Except when in the air.) The exact number of shots will depend on the animation speed of his shooting. The default is five shots.

Patch: Multiple shots per firing
#Multiple shots per firing -Keen 4
%patch $2FBDE $0003W
#Shot left\right
%patch $2FC1A $0003W
#Shoot up
%patch $2FE54 $0003W
#Shoot left\right on pole
%patch $2FE90 $0003W
#Shoot up on pole
%patch $2FECC $0003W
#Shoot down on pole
#Multiple shots per firing -Keen 5
%patch $30F32 $0003W
#Shot left\right
%patch $30F6E $0003W
#Shoot up
%patch $31202 $0003W
#Shoot left\right on pole
%patch $3123E $0003W
#Shoot up on pole
%patch $3127A $0003W
#Shoot down on pole


What decreases when Keen shoots

When Keen shoots he loses one from his ammo counter. it is possible to change this so that something else is diminished. (See patch:Game stats.)

Patch: What decreases when Keen shoots
#Decrease ammo by 1 per shot -Keen 4
%patch $E57E $FF $0E $7A58W
#Decrease this by 1 per shot
#Decrease ammo by 1 per shot -Keen 5
%patch $DCAD $FF $0E $6F56W
#Decrease this by 1 per shot
#Decrease ammo by 1 per shot -Keen 6
%patch $D818 $FF $0E $7590W
#Decrease this by 1 per shot


Keen doesn't lose a shot when shooting

This patch stops Keen losing a shot when he shoots, which means as long as he has any shots at all he can shoot as much as he wants.

Patch: Don't lose a shot when shooting
#Don't lose a shot when shooting -Keen 4
%patch $E57E $9090W $9090W
#Don't lose a shot when shooting -Keen 5
%patch $DCAD $9090W $9090W
#Don't lose a shot when shooting -Keen 6
%patch $D818 $9090W $9090W


Keen doesn't lose a shot under some conditions

This patch adds a check to Keen's shooting code that skips the 'lose a shot' code under certain conditions. This can include if he has an item or is in a certain level. (Here the patch causes Keen not to lose shots in level 13.) As a side effect the 'bad dir' error does not occur and crash the game if Keen shoots invalidly instead causing Keen to do nothing.

The first line checks Keen's ammo, it is the second line that performs the loss check.

Patch: Don't lose a shot when shooting
#Modify shooting code to not decrement ammo in level 13
%patch $DC95 $55 $8B $EC $83 $3E $6F56W $00 $75 $07 $B8 $0015W $50 $E9 $0090W $83 $3E $9E55W $0D $74 $05 %patch $DD36 $9A $196E09EFRL $83 $C4 $02 $5D $CB %patch $DD55 $1046W
#Left (At $DCF6)
$108EW
#INVALID (At $DD3E)
$1056W
#Up (At $DD06)
$108EW
#INVALID (At $DD3E)
$1066W
#Right (At $DD16)
$108EW
#INVALID (At $DD3E)


Keen doesn't need ammo

This patch removes the ammo check (and decrease) when Keen shoots, so he can keep firing his stunner as many times as he wants, with his ammo counter remaining the same. (This means that he doesn't need rayguns or the ammo counter.)

Patch: Keen 4
#Keen can always shoot, don't lose ammo
%patch $E56E $EB $12

Patch: Keen 5
#Keen can always shoot, don't lose ammo
%patch $DC9D $EB $12

Patch: Keen 6
#Keen can always shoot, don't lose ammo
%patch $D802 $EB $18


What Keen needs to shoot

By default Keen needs any amount of ammunition that is not 0 to shoot. even negative ammunition will work. It is possible to allow Keen to shoot only in all sorts of strange situation (Such as having a keycard or not being able to shoot in a certain level.) using game stats.

Patch: Keen 4
#What Keen needs to shoot
%patch $E56B $7A58W $00 $75
#Keen has not 0 shots

Patch: Keen 5
#What Keen needs to shoot
%patch $DC9A $6F56W $00 $75
#Keen has not 0 shots

Patch: Keen 6
#What Keen needs to shoot
%patch $D804 $7590W $00 $75
#Keen has not 0 shots


Keen is always out of ammo

This patch makes Keen 'gunclick' no matter how much ammunition he has. That is, he will still make a shooting animation and a sound.

Patch: Keen 4
#Keen never shoots
%patch $E56E $90 $90

Patch: Keen 5
#Keen never shoots
%patch $DC9D $90 $90

Patch: Keen 6
#Keen never shoots
%patch $D807 $90 $90


Machine gun patch

This patch combines several of the above patches allowing Keen to shoot a continuous stream of shots (except again when falling through the air.) A side effect is that the limit for how many enemies\objects that can be placed in the level is reduced by about 10, since so many shots (each one itself a sprite) can be onscreen at one time. Using this patch without the 'don't lose a shot' line results in Keen's ammo being depleted very fast.

Patch: Keen 4 Machinegun patch
#Don't lose a shot
%patch $E57E $9090W $9090W
#Multiple shots when firing
%patch $BAA8 $EB $04
#Standing still
%patch $BEB7 $EB $04
#Walking
%patch $C464 $EB $04
#Jumping
%patch $C5E0 $EB $04
#Pogoing
%patch $C64F $EB $04
#On poles
#Increase firing rate
%patch $2FBF6 $098CW
#Shoot left\right
%patch $2FC32 $098CW
#Shoot up
%patch $30088 $11A2W
#Shoot left\right in air
%patch $300E2 $11A2W
#Shoot up in air
%patch $3013C $11A2W
#Shoot down in air
%patch $2FE6C $0EF0W
#Shoot left\right on pole
%patch $2FEA8 $0EF0W
#Shoot up on pole
%patch $2FEE4 $0EF0W
#Shoot down on pole
#Multiple shots per firing
%patch $2FBDE $0003W
#Shot left\right
%patch $2FC1A $0003W
#Shoot up
%patch $2FE54 $0003W
#Shoot left\right on pole
%patch $2FE90 $0003W
#Shoot up on pole
%patch $2FECC $0003W
#Shoot down on pole


Slingshot patch

This patch allows Keen to shoot in an arc, like in Keen Dreams. This is done in several steps. Firstly shots must be allowed vertical and horizontal directions (By default they have either/or.) Then all four different shot directions are given two speeds, a vertical and horizontal speed. Finally the shot is made to fall like a Berkeloid's shot. A side effect of this specific patch is that only one of Keen's shot frames will be shown, the other three are neglected.

Patch: Keen 4 Slingshot patch
#Keen shoots in an arc not a line:
#Set up shot to have h and v speeds
%patch $E59E $C7 $47 $0E $0001W %patch $E5A7 $C7 $47 $10 $0001W
#Shot speeds
#Up
%patch $E5D0 $C7 $47 $18 $FFB4W
#Vertical
%patch $E5DB $C7 $47 $16 $0030W
#Horizontal
#Right
%patch $E5E0 $C7 $47 $18 $FFE8W
#Vertical
%patch $E5EB $C7 $47 $16 $0000W
#Horizontal
#Down
%patch $E5F0 $C7 $47 $18 $0020W
#Vertical
%patch $E5FB $C7 $47 $16 $FFC0W
#Horizontal
#Left
%patch $E600 $C7 $47 $18 $FFE8W
#Vertical
%patch $E5CB $C7 $47 $16 $0000W
#Horizontal
#Change shot actions to work like Berkeloid shots, leaves three frames free
%patch $305A8 $00B1W $00B1W $00B1W $0000W $0000W $0002W $0000W $0000W $09DC16E5RL $00000000L $0D8F0E32RL $1738W


Stop Keen shooting

These patches selectively stop Keen shooting in certain situations. All of them together will stop Keen shooting entirely.


Disable shooting while pogoing

This patch stops Keen from shooting while pogoing.

Patch: Disable shooting while pogoing
#Disable shooting while pogoing
%patch $C5DE $EB


Disable shooting while jumping

This patch stops Keen from shooting while jumping\falling.

Patch: Disable shooting while jumping
#Disable shooting while jumping
%patch $C462 $EB


Disable shooting or jumping on poles

These patches disable Keen's ability to jump off poles, shoot on poles or both. (Keen can leave poles by turning left\right at the top of poles or moving off the bottom, so disabling jumping does not lock him onto poles permanently.)

Patch: Keen 4
#Disable jumping off poles (Frees $C682-$C6D2)
%patch $C680 $EB
#Disable shooting on poles (Frees $C648-$C67A)
%patch $C646 $EB
#Disable shooting and jumping on poles (Frees $C64F-$C6D2)
%patch $C641 $5E $5D $CB


Keen's shooting sprites

This section contains patches that relate to the action properties of Keen when he is shooting. These are such things as his speed, animations used and sprite collision.


Sprite Actions

In Keen galaxy Keen's shooting-related actions can be divided into three major types, shooting on the ground, shooting in the air and shooting on a pole. Each of these groups comes in two or three subgroups, shooting horizontally, shooting up and shooting down. Each shooting subgroup consists of two or three actions. The first action is 'preparatory'; it readies Keen for making a shot, setting his animation and other parameters. The second actually produces the shot and the third is a 'post shooting' action used in some cases to reset certain variables so Keen can continue doing what he was doing beforehand.

There are also 'confirmation' actions; these are checks in the code that check if Keen is already shooting and thus stop him starting to shoot while he is already shooting. This must be the same as the first shooting action, if it is not Keen will get 'stuck' in his first shooting action and be unable to shoot.

Each shooting sequence has one or more situations under which it can be initiated. When landing on the ground two checks are made to see if Keen is shooting left\right or up. For both these actions Keen then changes to shooting on the ground. (If Keen is shooting downwards in the air he will lose his shot.)


Keen 4

Actions:
$098CW #Keen standing
$0C02W #Keen looking up
$0D6AW #Keen shooting horizontally 1
$0D88W #Keen shooting horizontally 2
$0DA6W #Keen shooting up 1
$0DC4W #Keen shooting up 2
$0EF0W #Keen still on a pole
$0FE0W #Keen shooting horizontally on a pole 1
$0FFEW #Keen shooting horizontally on a pole 2
$101CW #Keen shoots up on pole 1
$103AW #Keen shoots up on pole 2
$1058W #Keen shooting down on a pole 1
$1076W #Keen shooting down on a pole 2
$11A2W #Keen falling
$11DEW #Keen start shooting horizontally in air 
$11FCW #Keen shoot horizontally in air 1
$121AW #Keen shoot horizontally in air 2
$1238W #Keen start shooting upwards in air 
$1256W #Keen shooting up in air 1
$1274W #Keen shooting up in air 2
$1292W #Keen start shooting downwards in air 
$12B0W #Keen shoot down in air 1
$12CEW #Keen shoot down in air 2

Patch: Shooting when landing
#When Keen lands on ground...
%patch $D50A $11DEW
#...if shooting left\right...
%patch $D50F $0D6AW
#...go to shooting left\right on ground, else...
%patch $D520 $1238W
#...if shooting upwards...
%patch $D525 $0DA6W
#...go to shooting up on ground

Patch: Shooting horizontally while standing
#Start shooting...
%patch $BAC0 $0D6AW
#While standing
%patch $BED1 $0D6AW
#While walking
#Check if Keen is already shooting
%patch $C99F $0D6AW
#Shooting horizontally while standing sequence
%patch $2FBF6 $0D88W %patch $2FC14 $098CW

Patch: Shooting up while standing
#Start shooting...
%patch $BAB8 $0DA6W
#While standing
%patch $BEC7 $0DA6W
#While walking
#Shooting check
%patch $CA62 $0DA6W
#Shooting up while standing sequence
%patch $2FC32 $0DC4W %patch $2FC50 $0C02W

Patch: Shooting horizontally while jumping\falling or pogoing
#Start shooting...
%patch $C488 $11DEW
#While jumping\falling
%patch $C604 $11DEW
#While pogoing
#Shooting check
%patch $C9E2 $11FCW
#Shooting up while jumping\falling or pogoing sequence
%patch $3006A $11FCW %patch $30088 $121AW %patch $300A6 $11A2W

Patch: Shooting up while jumping\falling or pogoing
#Start shooting...
%patch $C480 $1238W
#While jumping\falling
%patch $C5FC $1238W
#While pogoing
#Shooting check
%patch $CA42 $1256W
#Keen start shooting (Unknown)
#Shooting up while jumping\falling or pogoing sequence
%patch $300C4 $1256W %patch $300E2 $1274W %patch $30100 $11A2W

Patch: Shooting down while jumping\falling or pogoing
#Start shooting...
%patch $C490 $1292W
#While jumping\falling
%patch $C60C $1292W
#While pogoing
#Shooting check
%patch $CA21 $12B0W
#Shooting down while jumping\falling or pogoing sequence
%patch $3011E $12B0W %patch $3013C $12CEW %patch $3015A $11A2W

Patch: Shooting horizontally on a pole
#Start shooting
%patch $C672 $0FE0W
#Shooting check
%patch $CA82 $0FE0W
#Shooting horizontally on a pole sequence
%patch $2FE6C $0FFEW %patch $2FE8A $0EF0W

Patch: Shooting up on a pole
#Start shooting
%patch $C66B $101CW
#Shooting check
%patch $CAC5 $101CW
#Shooting up on a pole sequence
%patch $2FEA8 $103AW %patch $2FEC6 $0EF0W

Patch: Shooting down on a pole
#Start shooting
%patch $C679 $1058W
#Shooting check
%patch $CB06 $1058W
#Shooting down on a pole sequence
%patch $2FEE4 $1076W %patch $2FF02 $0EF0W


Keen 5

Actions:
$0888W #Keen standing
$0AC2W #Keen looking up
$0BEEW #Keen shooting horizontally 1
$0C0CW #Keen shooting horizontally 2
$0C2AW #Keen shooting up 1
$0C48W #Keen shooting up 2
$0DCEW #Keen still on a pole
$0EBEW #Keen shooting horizontally on a pole 1
$0EDCW #Keen shooting horizontally on a pole 2
$0EFAW #Keen shoots up on pole 1
$0F18W #Keen shoots up on pole 2
$0F36W #Keen shooting down on a pole 1
$0F54W #Keen shooting down on a pole 2
$109EW #Keen falling
$10BCW #Keen start shooting horizontally in air 
$10DAW #Keen shoot horizontally in air 1
$10F8W #Keen shoot horizontally in air 2
$1116W #Keen start shooting upwards in air 
$1134W #Keen shooting up in air 1
$1152W #Keen shooting up in air 2
$1170W #Keen start shooting downwards in air 
$118EW #Keen shoot down in air 1
$11ACW #Keen shoot down in air 2

Patch: Shooting horizontally while standing
#Shooting horizontally while standing sequence
%patch $30F4A $0C0CW %patch $30F68 $0888W

Patch: Shooting up while standing
#Shooting up while standing sequence
%patch $30F86 $0C48W %patch $30FA4 $0AC2W

Patch: Shooting horizontally while jumping\falling or pogoing
#Shooting up while jumping\falling or pogoing sequence
%patch $31418 $10DAW %patch $31436 $10F8W %patch $31454 $1080W

Patch: Shooting up while jumping\falling or pogoing
#Shooting up while jumping\falling or pogoing sequence
%patch $31472 $1134W %patch $31490 $1152W %patch $314AE $1080W

Patch: Shooting down while jumping\falling or pogoing
#Shooting down while jumping\falling or pogoing sequence
%patch $314CC $118EW %patch $314EA $11ACW %patch $31508 $1080W

Patch: Shooting horizontally on a pole
#Shooting horizontally on a pole sequence
%patch $3121A $0EDCW %patch $31238 $0DCEW

Patch: Shooting up on a pole
#Shooting up on a pole sequence
%patch $31256 $0F18W %patch $31274 $0DCEW

Patch: Shooting down on a pole
#Shooting down on a pole sequence
%patch $31292 $0F54W %patch $312B0 $0DCEW


Keen 6

Actions:
$089AW #Keen standing
$0AB6W #Keen looking up
$0BE2W #Keen shooting horizontally 1
$0C00W #Keen shooting horizontally 2
$0C1EW #Keen shooting up 1
$0C3CW #Keen shooting up 2
$0D68W #Keen still on a pole
$0E58W #Keen shooting horizontally on a pole 1
$0E76W #Keen shooting horizontally on a pole 2
$0E94W #Keen shoots up on pole 1
$0EB2W #Keen shoots up on pole 2
$0ED0W #Keen shooting down on a pole 1
$0EEEW #Keen shooting down on a pole 2
$101AW #Keen falling
$1056W #Keen start shooting horizontally in air 
$1074W #Keen shoot horizontally in air 1
$1092W #Keen shoot horizontally in air 2
$10B0W #Keen start shooting upwards in air 
$10CEW #Keen shooting up in air 1
$10ECW #Keen shooting up in air 2
$110AW #Keen start shooting downwards in air 
$1128W #Keen shoot down in air 1
$1146W #Keen shoot down in air 2

Patch: Shooting when landing
#When Keen lands on ground...
%patch $C629 $1056W
#...if shooting left\right...
%patch $C62E $0BE2W
#...go to shooting left\right on ground, else...
%patch $C63F $10B0W
#...if shooting upwards...
%patch $C644 $0C1EW
#...go to shooting up on ground

Patch: Shooting horizontally while standing
#Start shooting...
%patch $ACD6 $0BE2W
#While standing
%patch $BD02 $0BE2W
#While walking
#Shooting check
%patch $BBA0 $0BE2W
#Shooting horizontally while standing sequence
%patch $3192E $0C00W %patch $3194C $089AW

Patch: Shooting up while standing
#Start shooting...
%patch $ACCE $0C1EW
#While standing
%patch $BC08 $0C1EW
#While walking
#Shooting check
%patch $BC63 $0C1EW
#Shooting up while standing sequence
%patch $3196A $0C3CW %patch $31988 $0AB6W

Patch: Shooting horizontally while jumping\falling or pogoing
#Start shooting...
%patch $B689 $1056W
#While jumping\falling
%patch $B805 $1056W
#While pogoing
#Shooting checks
%patch $BBE3 $1074W %patch $C629 $1056W
#Shooting up while jumping\falling or pogoing sequence
%patch $31DA2 $1074W %patch $31DC0 $1092W %patch $31DDE $101AW

Patch: Shooting up while jumping\falling or pogoing
#Start shooting...
%patch $B691 $10B0W
#While jumping\falling
%patch $B7FD $10B0W
#While pogoing
#Shooting check
%patch $BC43 $10CEW
#Keen start shooting (Unknown)
#Shooting up while jumping\falling or pogoing sequence
%patch $31DFC $10CEW %patch $31E1A $10ECW %patch $31E38 $101AW

Patch: Shooting down while jumping\falling or pogoing
#Start shooting...
%patch $B691 $110AW
#While jumping\falling
%patch $B80D $110AW
#While pogoing
#Shooting check
%patch $BC22 $1128W
#Shooting down while jumping\falling or pogoing sequence
%patch $31E56 $1128W %patch $31E74 $1146W %patch $31E92 $101AW

Patch: Shooting horizontally on a pole
#Start shooting
%patch $B873 $0E58W
#Shooting check
%patch $BC83 $0E58W
#Shooting horizontally on a pole sequence
%patch $31BA4 $0E76W %patch $31BC2 $0D68W

Patch: Shooting up on a pole
#Start shooting
%patch $B86C $0E94W
#Shooting check
%patch $BCC6 $0E94W
#Shooting up on a pole sequence
%patch $31BE0 $0EB2W %patch $31BFE $0D68W

Patch: Shooting down on a pole
#Start shooting
%patch $B87A $0ED0W
#Shooting check
%patch $BD07 $0ED0W
#Shooting down on a pole sequence
%patch $31C1C $0EEEW %patch $31C3A $0D68W


Sprite Behavior

Keen's shooting sequence can be divided into two kinds of action, 'active' and 'inactive'. Active actions produce the shot, there is one of these per shooting sequence. Inactive actions, as mentioned above, change various variables when starting or stopping shooting.

All actions where a shot is actually created use the 'spawnshot' behavior; the same behavior is used whether Keen is shooting in the air, on the ground or on poles. This behavior creates a shot (Or no ammo sound) at a certain position relative to Keen depending on his action and direction. This behavior must be used at least once in each shooting sequence. If it is replaced Keen cannot shoot using that sequence.

For ground and pole based shooting the 'inactive' shooting actions (those where a shot is not created.) use no behavior at all. This means the player cannot 'interrupt' the shooting sequence by pressing other keys. For air-based shooting the general 'move through the air' behavior is used that causes Keen to fall under gravity. This stops Keen from 'floating' in the air while his shooting sequence runs.


Keen 4

Behaviors:
$09DC16C9RL #Move through the air
$0B801195RL #Shooting (Spawn Keen's shot in arrow direction)

Patch: Keen 4
#Shooting horizontally while standing
%patch $2FBEA $0B801195RL %patch $2FC08 $00000000L
#Shooting up while standing
%patch $2FC26 $0B801195RL %patch $2FC44 $00000000L
#Shooting horizontally on poles
%patch $2FE60 $0B801195RL %patch $2FE7E $00000000L
#Shooting up on poles
%patch $2FE9C $0B801195RL %patch $2FEBA $00000000L
#Shooting down on poles
%patch $2FED8 $0B801195RL %patch $2FEF6 $00000000L
#Shooting horizontally while jumping\falling or pogoing
%patch $3005E $09DC16C9RL %patch $3007C $0B801195RL %patch $3009A $09DC16C9RL
#Shooting up while jumping\falling or pogoing
%patch $300B8 $09DC16C9RL %patch $300D6 $0B801195RL %patch $300F4 $09DC16C9RL
#Shooting down while jumping\falling or pogoing
%patch $30112 $09DC16C9RL %patch $30130 $0B801195RL %patch $3014E $09DC16C9RL


Keen's shot behavior code

This is the complete behavior code for Keen shooting. On he first line the game checks to see if Keen has any ammunition. If he doesn't then sound $15 is played and the code ends. If he does however then his ammunition counter is decremented 1 at the end of line 2 and a type 1 sprite (Keen's shot) is produced.

This sprite has a foreground value of 0, type of 3 and activity of 2. (The activity is especially important, allowing Keen's shot to act offscreen.) Sound $04 is then played.

At this point the shot's horizontal and vertical directions are set. To do this it refers to a list 6 + 1 entries long at $E625 ($D8F0 + $0D35). The entry number read here is set when Keen's shots are positioned. Three entries are invalid, crashing the game if used. (This should never happen.) The four remaining pointers point to code that sets the vertical and horizontal directions to 1, 0 or -1. All four codes then jump over the error code (Error $184C) to set the shot's action as $1738W.

Patch: Keen 4
#Keen shooting behavior code
%patch $E566 $55 $8B $EC $83 $3E $7A58W $00 $75 $0E $B8 $0015W $50 $9A $187409F1RL $83 $C4 $02 $5D $CB $FF $0E $7A58W $B8 $0001W $50 $9A $06BD1E11RL $83 $C4 $02 $8B $1E $D8 $A7 $8B $46 $06 $89 $47 $0A $8B $46 $08 $89 $47 $0C $C7 $47 $20 $0000W $C7 $07 $0003W $C7 $47 $02 $0002W $B8 $0004W $50 $9A $187409F1RL $83 $C4 $02 $8B $5E $0A $83 $FB $06 $77 $47 $D1 $E3 $2E $FF $A7 $0D35W $8B $1E $D8 $A7 $C7 $47 $0E $0000W $C7 $47 $10 $FFFFW $EB
#Left shot directions
$3C $8B $1E $D8 $A7 $C7 $47 $0E $0001W $C7 $47 $10 $0000W $EB
#Up shot directions
$2C $8B $1E $D8 $A7 $C7 $47 $0E $0000W $C7 $47 $10 $0001W $EB
#Right shot directions
$1C $8B $1E $D8 $A7 $C7 $47 $0E $FFFFW $C7 $47 $10 $0000W $EB
#Down shot directions
$0C $B8 $184CW $50 $9A $037D022FRL $83 $C4 $02 $B8 $1738W $50 $FF $36 $D8 $A7 $9A $09DC118CRL $83 $C4 $04 $5D $CB
#Shot direction pointer list
%patch $E625 $0CD7W
#Left (At $E5C7)
$0D17W
#INVALID (At $E607)
$0CE7W
#Up (At $E5D7)
$0D17W
#INVALID (At $E607)
$0CF7W
#Right (At $E5E7)
$0D17W
#INVALID (At $E607)
$0D07W
#Down (At $E5F7)


Keen 5

Behaviors:
$090B1710RL #Move through the air
$0AAF12C3RL #Keen shoot (Spawn shot)

Patch: Keen 5
#Shooting horizontally while standing
%patch $30F3D $0AAF12C3RL %patch $30F5C $00000000L
#Shooting up while standing
%patch $30F7A $0AAF12C3RL %patch $30F98 $00000000L
#Shooting horizontally on poles
%patch $3120D $0AAF12C3RL %patch $3122C $00000000L
#Shooting up on poles
%patch $3124A $0AAF12C3RL %patch $31268 $00000000L
#Shooting down on poles
%patch $31286 $0AAF12C3RL %patch $312A4 $00000000L
#Shooting horizontally while jumping\falling or pogoing
%patch $3140C $090B1710RL %patch $3142A $0AAF12C3RL %patch $31448 $090B1710RL
#Shooting up while jumping\falling or pogoing
%patch $31466 $090B1710RL %patch $31484 $0AAF12C3RL %patch $314A2 $090B1710RL
#Shooting down while jumping\falling or pogoing
%patch $314C0 $090B1710RL %patch $314DD $0AAF12C3RL %patch $314FC $090B1710RL


Keen's shot behavior code

This is the complete behavior code for Keen shooting. On he first line the game checks to see if Keen has any ammunition. If he doesn't then sound $15 is played and the code ends. If he does however then his ammunition counter is decremented 1 at the end of line 2 and a type 1 sprite (Keen's shot) is produced.

This sprite has a foreground value of 0, type of 3 and activity of 2. (The activity is especially important, allowing Keen's shot to act offscreen.) Sound $04 is then played.

At this point the shot's horizontal and vertical directions are set. To do this it refers to a list 6 + 1 entries long at $DD55 ($CCB0 + $10A5). The entry number read here is set when Keen's shots are positioned. Three entries are invalid, crashing the game if used. (This should never happen.) The four remaining pointers point to code that sets the vertical and horizontal directions to 1, 0 or -1. All four codes then jump over the error code (Error $1631) to set the shot's action as $1502W.

Patch: Keen 5
#Keen shooting behavior code
%patch $DC95 $55 $8B $EC $83 $3E $6F56W $00 $75 $0E $B8 $0015W $50 $9A $196E09EFRL $83 $C4 $02 $5D $CB $FF $0E $6F56W $B8 $0001W $50 $9A $06B91DCDRL $83 $C4 $02 $8B $1E $40 $9E $8B $46 $06 $89 $47 $0A $8B $46 $08 $89 $47 $0C $C7 $47 $20 $0000W $C7 $07 $0003W $C7 $47 $02 $0002W $B8 $0004W $50 $9A $196E09EFRL $83 $C4 $02 $8B $5E $0A $83 $FB $06 $77 $47 $D1 $E3 $2E $FF $A7 $10A5W $8B $1E $40 $9E $C7 $47 $0E $0000W $C7 $47 $10 $FFFFW $EB $3C $8B $1E $40 $9E $C7 $47 $0E $0001W $C7 $47 $10 $0000W $EB $2C $8B $1E $40 $9E $C7 $47 $0E $0000W $C7 $47 $10 $0001W $EB $1C $8B $1E $40 $9E $C7 $47 $0E $FFFFW $C7 $47 $10 $0000W $EB $0C $B8 $1631W $50 $9A $037D022FRL $83 $C4 $02 $B8 $1502W $50 $FF $36 $40 $9E $9A $090B11C4RL $83 $C4 $04 $5D $CB
#Shot direction pointer list
%patch $DD55 $1046W
#Left (At $DCF6)
$1086W
#INVALID (At $DD36)
$1056W
#Up (At $DD06)
$1086W
#INVALID (At $DD36)
$1066W
#Right (At $DD16)
$1086W
#INVALID (At $DD36)
$1076W
#Down (At $DD26)


Sprite Collision

These are the values of the sprite actions Keen uses when shooting. Keen has two collision he uses for the majority of his actions. The first collision is the most complex and responds to things like the Foot. This is used by nearly all of Keen's shooting actions.

The second sprite collision is used when Keen shoots on poles. It is far simpler, meaning pole-shooting Keen cannot do things like grab item sprites. It is completely separate from the first collision.

The end result of this is that shooting Keen uses the same collision as what he did before shooting. This avoids anomalies when Keen shoots.


Keen 4

For patches relating to the second sprite collision see the link.

Collisions:
$0B8014A9RL #First Keen collision
$0B801632RL #Second Keen collision

Patch: Keen 4
#Shooting horizontally while standing
%patch $329EE $0B8014A9RL %patch $32A0C $0B8014A9RL
#Shooting up while standing
%patch $32A2A $0B8014A9RL %patch $32A48 $0B8014A9RL
#Shooting horizontally on poles
%patch $32C64 $0B801632RL %patch $32C82 $0B801632RL
#Shooting up on poles
%patch $32CA0 $0B801632RL %patch $32CBE $0B801632RL
#Shooting down on poles
%patch $32CDC $0B801632RL %patch $32CFA $0B801632RL
#Shooting horizontally while jumping\falling or pogoing
%patch $32E62 $0B8014A9RL
#Keen jump shoot l/r
%patch $32E80 $0B8014A9RL
#Keen jump shoot l/r
%patch $32E9E $0B8014A9RL
#Keen jump shoot l/r
#Shooting up while jumping\falling or pogoing
%patch $32EBC $0B8014A9RL %patch $32EDA $0B8014A9RL %patch $32EF8 $0B8014A9RL
#Shooting down while jumping\falling or pogoing
%patch $32F16 $0B8014A9RL %patch $32F34 $0B8014A9RL %patch $32F52 $0B8014A9RL


Keen 5

Collisions:
$0AAF1597RL #First Keen collision
$0AAF167FRL #Second Keen collision

Patch: Keen 5
#Shooting horizontally while standing
%patch $30F42 $0AAF1597RL %patch $30F60 $0AAF1597RL
#Shooting up while standing
%patch $30F7E $0AAF1597RL %patch $30F9C $0AAF1597RL
#Shooting horizontally on poles
%patch $31212 $0AAF167FRL %patch $31230 $0AAF167FRL
#Shooting up on poles
%patch $3124E $0AAF167FRL %patch $3126C $0AAF167FRL
#Shooting down on poles
%patch $3128A $0AAF167FRL %patch $312A8 $0AAF167FRL
#Shooting horizontally while jumping\falling or pogoing
%patch $31410 $0AAF1597RL %patch $3142E $0AAF1597RL %patch $3144C $0AAF1597RL
#Shooting up while jumping\falling or pogoing
%patch $3146A $0AAF1597RL %patch $31488 $0AAF1597RL %patch $314A6 $0AAF1597RL
#Shooting down while jumping\falling or pogoing
%patch $314C4 $0AAF1597RL %patch $314E2 $0AAF1597RL %patch $31500 $0AAF1597RL


Keen 6

Collisions:
$0AA2144ARL #First Keen collision
$0AA2154CRL Second Keen collision

Patch: Keen 6
#Shooting horizontally while standing
%patch $31926 $0AA2144ARL %patch $31944 $0AA2144ARL
#Shooting up while standing
%patch $31962 $0AA2144ARL %patch $31980 $0AA2144ARL
#Shooting horizontally on poles
%patch $31B9C $0AA2154CRL %patch $31BBA $0AA2154CRL
#Shooting up on poles
%patch $31BD8 $0AA2154CRL %patch $31BF6 $0AA2154CRL
#Shooting down on poles
%patch $31C14 $0AA2154CRL %patch $31C32 $0AA2154CRL
#Shooting horizontally while jumping\falling or pogoing
%patch $31D9A $0AA2144ARL %patch $31DB8 $0AA2144ARL %patch $31DD6 $0AA2144ARL
#Shooting up while jumping\falling or pogoing
%patch $31DF4 $0AA2144ARL %patch $31E12 $0AA2144ARL %patch $31E30 $0AA2144ARL
#Shooting down while jumping\falling or pogoing
%patch $31E4E $0AA2144ARL %patch $31E6C $0AA2144ARL %patch $31E8A $0AA2144ARL


Animations

Patch: Keen 4
#Keen shoot l/r
%patch $2FBDA $00A7W $00ACW %patch $2FBE4 $0009W
#Pause before shot
%patch $2FBF8 $00A7W $00ACW %patch $2FC02 $0006W
#Pause before standing
#Shooting up
%patch $2FC16 $00ABW $00ABW %patch $2FC20 $0009W
#Pause before shot
%patch $2FC34 $00ABW $00ABW %patch $2FC3E $0006W
#Pause before standing
#Keen shooting l/r on a pole
%patch $2FE50 $00C2W $00C3W %patch $2FE5A $0009W
#Pause before shooting
%patch $2FE6E $00C2W $00C3W %patch $2FE78 $0006W
#Pause before going back
#Keen shoots up on pole
%patch $2FE8C $00BEW $00BFW %patch $2FE96 $0009W
#Pause before shooting
%patch $2FEAA $00BEW $00BFW %patch $2FEB4 $0006W
#Pause before going back
#Keen shooting down on a pole
%patch $2FEC8 $00C1W $00C0W %patch $2FED2 $0009W
#Pause before shooting
%patch $2FEE6 $00C1W $00C0W %patch $2FEF0 $0006W
#Pause before going back
#Keen shoot l/r in air
%patch $3004E $00A8W $00ADW %patch $30058 $0009W
#Pause before shot
%patch $3006C $00A8W $00ADW %patch $30076 $0001W
#Pause before going to falling 1
%patch $3008A $00A8W $00ADW %patch $30094 $0006W
#Pause before going to falling 2
#Keen shooting up in air
%patch $300A8 $00AAW $00AAW %patch $300B2 $0009W
#Pause before shot
%patch $300C6 $00AAW $00AAW %patch $300D0 $0001W
#Pause before going to falling 2
%patch $300E4 $00AAW $00AAW %patch $300EE $0006W
#Pause before going to falling 2
#Shoot down in air
%patch $30102 $00A9W $00A9W %patch $3010C $0009W
#Pause before shot
%patch $30120 $00A9W $00A9W %patch $3012A $0001W
#Pause before going to falling 1
%patch $3013E $00A9W $00A9W %patch $30148 $0006W
#Pause before going to falling 2

Patch: Keen 5
#Shoot l/r
%patch $30F2E $0092W $0097W
#Shoot l/r
%patch $30F38 $0009W
#Pause before shot
%patch $30F4C $0092W $0097W
#Shoot l/r
%patch $30F56 $0006W
#Pause before stop shooting
#Shoot up
%patch $30F6A $0096W $0096W
#Shoot up
%patch $30F74 $0009W
#Pause before shot
%patch $30F88 $0096W $0096W
#Shoot up
%patch $30F92 $0006W
#Pause before stop shooting
#Pole shoot l/r
%patch $311FE $00ADW $00AEW
#Pole shoot l/r
%patch $31208 $0009W
#Pause before shot
%patch $3121C $00ADW $00AEW
#Pole shoot l/r
%patch $31226 $0006W
#Pause before stop shooting
#Pole shoot up
%patch $3123A $00A9W $00AAW
#Pole shoot up
%patch $31244 $0009W
#Pause before shot
%patch $31258 $00A9W $00AAW
#Pole shoot up
%patch $31262 $0006W
#Pause before stop shooting
#Pole shoot down
%patch $31276 $00ACW $00ABW
#Pole shoot down
%patch $31280 $0009W
#Pause before shot
%patch $31294 $00ACW $00ABW
#Pole shoot down
%patch $3129E $0006W
#Pause before stop shooting
#Shoot l/r in air
%patch $313FC $0093W $0098W
#Shoot l/r in air
%patch $31406 $0009W
#Pause before shot
%patch $3141A $0093W $0098W
#Shoot l/r in air
%patch $31424 $0001W
#Pause before stop shooting
%patch $31438 $0093W $0098W
#Shoot l/r in air
%patch $31442 $0006W
#Pause before keep falling
#Shoot up in air
%patch $31456 $0095W $0095W
#Shoot up in air
%patch $31460 $0009W
#Pause before shot
%patch $31474 $0095W $0095W
#Shoot up in air
%patch $3147E $0001W
#Pause before stop shooting
%patch $31492 $0095W $0095W
#Shoot up in air
%patch $3149C $0006W
#Pause before keep falling
#Shoot d in air
%patch $314B0 $0094W $0094W
#Shoot d in air
%patch $314BA $0009W
#Pause before shot
%patch $314CE $0094W $0094W
#Shoot d in air
%patch $314D8 $0001W
#Pause before stop shooting
%patch $314EC $0094W $0094W
#Shoot d in air
%patch $314F6 $0006W
#Pause before keep falling

Patch: Keen 6
#Shoot standing
%patch $31920 $0059W $005EW
#Keen shoots l/r
%patch $3192A $0009W
#Animation speed
%patch $3193E $0059W $005EW
#Keen shoots l/r (Make bullet, go to standing)
%patch $31948 $0006W
#Animation speed
%patch $3195C $005DW $005DW
#Keen shoots up
%patch $31966 $0009W
#Animation speed
%patch $3197A $005DW $005DW
#Keen shoots up (Make bullet, go to looking up)
%patch $31984 $0006W
#Animation speed
#Shoot in air
%patch $31D94 $005AW $005FW
#Keen shoots l/r in air
%patch $31D9E $0009W
#Animation speed
%patch $31DB2 $005AW $005FW
#Keen shoots l/r in air (Make bullet)
%patch $31DBC $0001W
#Animation speed
%patch $31DD0 $005AW $005FW
#Keen shoots l/r in air (Goes to falling)
%patch $31DDA $0006W
#Animation speed
%patch $31DEE $005CW $005CW
#Keen shoots up in air
%patch $31DF8 $0009W
#Animation speed
%patch $31E0C $005CW $005CW
#Keen shoots up in air (Make bullet)
%patch $31E16 $0001W
#Animation speed
%patch $31E2A $005CW $005CW
#Keen shoots up in air (Go to falling)
%patch $31E34 $0006W
#Animation speed
%patch $31E48 $005BW $005BW
#Keen shoots down in air
%patch $31E52 $0009W
#Animation speed
%patch $31E66 $005BW $005BW
#Keen shoots down in air (Make bullets)
%patch $31E70 $0001W
#Animation speed
%patch $31E84 $005BW $005BW
#Keen shoots down in air (Go back to falling)
%patch $31E8E $0006W
#Animation speed
#Shoot on pole
%patch $31B96 $0074W $0075W
#Keen shoot l/r on a pole
%patch $31BA0 $0009W
#Animation speed
%patch $31BB4 $0074W $0075W
#Keen shoot l/r on a pole (Make bullet, go to Keen on pole)
%patch $31BBE $0006W
#Animation speed
%patch $31BD2 $0070W $0071W
#Keen shoot up on a pole
%patch $31BDC $0009W
#Animation speed
%patch $31BF0 $0070W $0071W
#Keen shoot up on a pole (Make bullet, go back to Keen on pole)
%patch $31BFA $0006W
#Animation speed
%patch $31C0E $0073W $0072W
#Keen shoot down on a pole
%patch $31C18 $0009W
#Animation speed
%patch $31C2C $0073W $0072W
#Keen shoot down on a pole (Make bullet, go back to Keen on pole)
%patch $31C36 $0006W
#Animation speed


Sounds

There are three sounds associated with Keen shooting. The first two are that made by his shot when it is produced and the sound made when that shot smashes. These are more properly associated with Keen's shot itself. The third sound is that made when Keen does not have any ammo, the 'gunclick' sound. All these sounds can be blocked

Patch: Keen 4
#Keen gunclick sound
%patch $E571 $15
#Don't play Keen gunclick sound
%patch $E570 $5D $CB
#Keen shoots sound
%patch $E5AD $04
#Don't play Keen shoots sound
%patch $E5AC $EB $0A
#Keen's shot smashes sound
%patch $E64C $19
#Don't play Keen's shot smashes sound
%patch $E64B $EB $0A

Patch: Keen 5
#Gunclick sound
%patch $DCA0 $15
#Don't play Gunclick sound
%patch $DC9F $5D $CB
#Keen shoot sound
%patch $DCDC $04
#Don't play Keen shoot sound
%patch $DCDB $EB $0A
#Keen's shot smashes sound
%patch $DD7C $19
#Don't play Keen's shot smashes sound
%patch $DD7B $EB $0A

Patch: Keen 6
#Gunclick sound
%patch $D80A $15
#Don't play Gunclick sound
%patch $D809 $5D $CB
#Keen shoot sound
%patch $D847 $04
#Don't play Keen shoot sound
%patch $D846 $EB $0A
#Keen's shot smashes sound
%patch $D93B $19
#Don't play Keen's shot smashes sound
%patch $D93A $EB $0A


Action type

Keen uses action type 3 when shooting on the ground or on poles. This creates one shot and uses the appropriate delay between shots. In the air Keen uses type 3 which allows him to fall smoothly while using the delay. (Keen's shot time is set to 1 tic to avoid multiple shots being made when using this type.)

Patch: Keen 4
#Shooting left/right
%patch $2FBDE $0000W
#Keen shooting left/right 1
%patch $2FBFC $0000W
#Keen shooting left/right 2
#Shooting up/down
%patch $2FC1A $0000W
#Keen shooting up 1
%patch $2FC38 $0000W
#Keen shooting up 2
#Keen shoot left/right on pole
%patch $2FE54 $0000W
#Keen shooting left/right on a pole 1
%patch $2FE72 $0000W
#Keen shooting left/right on a pole 2
#Keen shoo up on pole
%patch $2FE90 $0000W
#Keen shoots up on pole 1
%patch $2FEAE $0000W
#Keen shoots up on pole 2
#Keen shoot down on pole
%patch $2FECC $0000W
#Keen shooting down on a pole 1
%patch $2FEEA $0000W
#Keen shooting down on a pole 2
#Keen shoot left/right in air
%patch $30052 $0003W
#Keen shoot left/right in air 1
%patch $30070 $0003W
#Keen shoot left/right in air 2
%patch $3008E $0003W
#Keen shoot left/right in air 3
#Keen shoot up in air
%patch $300AC $0003W
#Keen shooting up 1
%patch $300CA $0003W
#Keen shooting up 2
%patch $300E8 $0003W
#Keen shooting up 3
#Keen shoot down in air
%patch $30106 $0003W
#Keen shoot down 1
%patch $30124 $0003W
#Keen shoot down 2
%patch $30142 $0003W
#Keen shoot down 3

Patch: Keen 5
#Shooting left/right
%patch $30F32 $0000W %patch $30F50 $0000W
#Shooting up/down
%patch $30F6E $0000W %patch $30F8C $0000W
#Keen shoot left/right on pole
%patch $31202 $0000W %patch $31220 $0000W
#Keen shoo up on pole
%patch $3123E $0000W %patch $3125C $0000W
#Keen shoot down on pole
%patch $3127A $0000W %patch $31298 $0000W
#Keen shoot left/right in air
%patch $31400 $0003W %patch $3141E $0003W %patch $3143C $0003W
#Keen shoot up in air
%patch $3145A $0003W %patch $31478 $0003W %patch $31496 $0003W
#Keen shoot down in air
%patch $314B4 $0003W %patch $314D2 $0003W %patch $314F0 $0003W


Shot spawn position relative to Keen

Depending on what action is being used when shooting and sometimes on what direction Keen is facing, Keen's shot will spawn at different positions relative to him. This is because different animations are different sizes and different appearances. A single shot position would look exceedingly awkward.

In essence the game checks every possible shooting action individually, shooting left\right, shooting up, shooting up while jumping... In the case of shooting left\right the game also checks what direction Keen is facing, as those actions have different animations for Keen facing either way, each of which needs a unique shot position and direction.

To understand the following patches it is helpful to have some knowledge of Sprite positioning and jump conditions. Note that two of the sprite positions are negative, despite having positive values. (They are reversed.) A knowledge of galaxy sprite parameters will assist in making unique patches by altering the action\direction checks to something more complex.

And of course, when in doubt, simply tweak the relevant patch until the desired result is obtained.

The following patches are given by episode, in each section of patches are subsections for each different shooting action. There are a total of 15 unique positions in the following order: Shoot left, Shoot right, Jump Shoot left, Jump Shoot right, Jump Shoot down, Jump Shoot up, Shoot up, Shoot left on poles, Shoot right on poles, Shoot up on poles, and Shoot down on poles.

Note that shot direction is also included in the position; this is actually based in the Spawn_Shot code at another location, but the upshot is that no patchable value is up, 2 is right, 4 down and 6 left. Other values will cause an error and crash. (Bad dir.)

Patch: Keen 4 shot positions
#Check direction and action - Shoot left\right
%patch $C99D $7C $1C $0D6AW $75 $3C $83 $7C $0E $01 $75
#Right Keen - Right 256,64
%patch $C9AA $0002W
#Direction
%patch $C9B1 $0040W
#Vertical position
%patch $C9B8 $0100W
#Horizontal position
#Left Keen - Left -128,64
%patch $C9C6 $0006W
#Direction
%patch $C9CD $0040W
#Vertical position
%patch $C9D4 $0080W
#Horizontal position
#Check direction and action - Shoot left\right jumping
%patch $C9E0 $7C $1C $11FCW $75 $38 $83 $7C $0E $01 $75
#Right Keen - Right 32,256
%patch $C9ED $0002W
#Direction
%patch $C9F4 $0020W
#Vertical position
%patch $C9FB $0100W
#Horizontal position
#Left Keen - Left 32,0
%patch $CA09 $0006W
#Direction
%patch $CA10 $0020W
#Vertical position
#Check action - Shoot down jumping
%patch $CA1F $7C $1C $12B0W $75
#Keen - Down 288,128
%patch $CA26 $0004W
#Direction
%patch $CA2D $0120W
#Vertical position
%patch $CA34 $0080W
#Horizontal position
#Check action - Shoot up jumping
%patch $CA40 $7C $1C $1256W $75
#Keen - Up 160,80
%patch $CA4D $00A0W
#Vertical position
%patch $CA54 $0050W
#Horizontal position
#Check action - Shoot up
%patch $CA60 $7C $1C $0DA6W $75
#Keen - Up 160,80
%patch $CA6D $00A0W
#Vertical position
%patch $CA74 $0050W
#Horizontal position
#Check direction and action - Shoot left\right on poles
%patch $CA80 $7C $1C $0FE0W $75 $3C $83 $7C $0E $01 $75
#Right Keen - Right 64,256
%patch $CA8D $0002W
#Direction
%patch $CA94 $0040W
#Vertical position
%patch $CA9B $0100W
#Horizontal position
#Left Keen - Left 64,128
%patch $CAA9 $0002W
#Direction
%patch $CAB0 $0040W
#Vertical position
%patch $CAB7 $0080W
#Horizontal position
#Check direction and action - Shoot up on poles
%patch $CAC3 $7C $1C $101CW $75 $3A $83 $7C $0E $01 $75
#Right Keen - Up 64,96
%patch $CAD6 $0040W
#Vertical position
%patch $CADD $0060W
#Horizontal position
#Left Keen - Up 64,192
%patch $CAF1 $0040W
#Vertical position
%patch $CAF8 $00C0W
#Horizontal position
#Check direction and action - Shoot down on poles
%patch $CB04 $7C $1C $1058W $75 $3D $83 $7C $0E $01 $75
#Right Keen - Down 384,96
%patch $CB11 $0004W
#Direction
%patch $CB18 $0180W
#Vertical position
%patch $CB1F $0060W
#Horizontal position
#Left Keen - Down 384,192
%patch $CB2E $0004W
#Direction
%patch $CB35 $0180W
#Vertical position
%patch $CB3C $00C0W
#Horizontal position

Patch: Keen 5 shot positions
#Check direction and action - Shoot left\right
%patch $BDBB $7C $1C $0BEEW $75 $3C $83 $7C $0E $01 $75
#Right Keen - Right 256,64
%patch $BDC8 $0002W
#Direction
%patch $BDCF $0040W
#Vertical position
%patch $BDD6 $0100W
#Horizontal position
#Left Keen - Left -128,64
%patch $BDE4 $0006W
#Direction
%patch $BDEB $0040W
#Vertical position
%patch $BDF2 $0080W
#Horizontal position
#Check direction and action - Shoot left\right jumping
%patch $BDFE $7C $1C $10DAW $75 $38 $83 $7C $0E $01 $75
#Right Keen - Right 32,256
%patch $BE0B $0002W
#Direction
%patch $BE12 $0020W
#Vertical position
%patch $BE19 $0100W
#Horizontal position
#Left Keen - Left 32,0
%patch $BE27 $0006W
#Direction
%patch $BE2E $0020W
#Vertical position
#Check action - Shoot down jumping
%patch $BE3D $7C $1C $118EW $75
#Keen - Down 288,128
%patch $BE44 $0004W
#Direction
%patch $BE4B $0120W
#Vertical position
%patch $BE52 $0080W
#Horizontal position
#Check action - Shoot up jumping
%patch $BE5E $7C $1C $1134W $75
#Keen - Up 160,80
%patch $BE6B $00A0W
#Vertical position
%patch $BE72 $0050W
#Horizontal position
#Check action - Shoot up
%patch $BE7E $7C $1C $0C2AW $75
#Keen - Up 160,80
%patch $BE8B $00A0W
#Vertical position
%patch $BE92 $0050W
#Horizontal position
#Check direction and action - Shoot left\right on poles
%patch $BE9E $7C $1C $0EBEW $75 $3C $83 $7C $0E $01 $75
#Right Keen - Right 64,256
%patch $BEAB $0002W
#Direction
%patch $BEB2 $0040W
#Vertical position
%patch $BEB9 $0100W
#Horizontal position
#Left Keen - Left 64,128
%patch $BEC7 $0002W
#Direction
%patch $BECE $0040W
#Vertical position
%patch $BED5 $0080W
#Horizontal position
#Check direction and action - Shoot up on poles
%patch $BEE1 $7C $1C $0EFAW $75 $3A $83 $7C $0E $01 $75
#Right Keen - Up 64,96
%patch $BEF4 $0040W
#Vertical position
%patch $BEFB $0060W
#Horizontal position
#Left Keen - Up 64,192
%patch $BF0F $0040W
#Vertical position
%patch $BF16 $00C0W
#Horizontal position
#Check direction and action - Shoot down on poles
%patch $BF22 $7C $1C $0F36W $75 $3D $83 $7C $0E $01 $75
#Right Keen - Down 384,96
%patch $BF2F $0004W
#Direction
%patch $BF36 $0180W
#Vertical position
%patch $BF3D $0060W
#Horizontal position
#Left Keen - Down 384,192
%patch $BF4C $0004W
#Direction
%patch $BF53 $0180W
#Vertical position
%patch $BF5A $00C0W
#Horizontal position

Patch: Keen 6 shot positions
#Check direction and action - Shoot left\right
%patch $BB9E $7C $1C $0BE2W $75 $3C $83 $7C $0E $01 $75
#Right Keen - Right 256,64
%patch $BBAB $0002W
#Direction
%patch $BBB2 $0040W
#Vertical position
%patch $BBB9 $0100W
#Horizontal position
#Left Keen - Left -128,64
%patch $BBC7 $0006W
#Direction
%patch $BBCE $0040W
#Vertical position
%patch $BBD5 $0080W
#Horizontal position
#Check direction and action - Shoot left\right jumping
%patch $BBE1 $7C $1C $1074W $75 $38 $83 $7C $0E $01 $75
#Right Keen - Right 32,256
%patch $BBEE $0002W
#Direction
%patch $BBF5 $0020W
#Vertical position
%patch $BBFC $0100W
#Horizontal position
#Left Keen - Left 32,0
%patch $BC0A $0006W
#Direction
%patch $BC11 $0020W
#Vertical position
#Check action - Shoot down jumping
%patch $BC20 $7C $1C $1128W $75
#Right Keen - Down 288,128
%patch $BC27 $0004W
#Direction
%patch $BC2E $0120W
#Vertical position
%patch $BC35 $0080W
#Horizontal position
#Check action - Shoot up jumping
%patch $BC41 $7C $1C $10CEW $75
#Keen - Up 160,80
%patch $BC4E $00A0W
#Vertical position
%patch $BC55 $0050W
#Horizontal position
#Check action - Shoot up
%patch $BC61 $7C $1C $0C1EW $75
#Keen - Up 160,80
%patch $BC6E $00A0W
#Vertical position
%patch $BC75 $0050W
#Horizontal position
#Check direction and action - Shoot left\right on poles
%patch $BC81 $7C $1C $0E58W $75 $3C $83 $7C $0E $01 $75
#Right Keen - Right 64,256
%patch $BC8E $0002W
#Direction
%patch $BC95 $0040W
#Vertical position
%patch $BC9C $0100W
#Horizontal position
#Left Keen - Left 64,128
%patch $BCAA $0002W
#Direction
%patch $BCB1 $0040W
#Vertical position
%patch $BCB8 $0080W
#Horizontal position
#Check direction and action - Shoot up on poles
%patch $BCC4 $7C $1C $0E94W $75 $3A $83 $7C $0E $01 $75
#Right Keen - Up 64,96
%patch $BCD7 $0040W
#Vertical position
%patch $BCDE $0060W
#Horizontal position
#Left Keen - Up 64,192
%patch $BCF2 $0040W
#Vertical position
%patch $BCF9 $00C0W
#Horizontal position
#Check direction and action - Shoot down on poles
%patch $BD05 $7C $1C $0ED0W $75 $3D $83 $7C $0E $01 $75
#Right Keen - Down 384,96
%patch $BD12 $0004W
#Direction
%patch $BD19 $0180W
#Vertical position
%patch $BD20 $0060W
#Horizontal position
#Left Keen - Down 384,192
%patch $BD2F $0004W
#Direction
%patch $BD36 $0180W
#Vertical position
%patch $BD3D $00C0W
#Horizontal position


Misc

Patches in this section do not fit neatly into the above sections.


Keen can teleport to where his shots smash

This patch and related ones are covered on Keen's shot's page.