Patch:Keen look
This page contains patches that relate to the player looking up or down and under what conditions the player starts and stops doing so. These actions can also be used to make Keen 'crouch'. Other patches relating to Keen can be found under Patch:Keen (Keen 4), Patch:Keen (Keen 5), Patch:Keen (Keen 6) and Patch:Keen (Keen Dreams).
Note that Keen looking up when the player leaves him idle for a time is Keen bored. In Keen Dreams Keen cannot move the screen and so his looking sequences are far simpler and less useful.
Sprite Actions
There are 7 actions relating to Keen's looking, two for looking up and five for looking down. (One of which is unused.) The game's in-level camera checks for two actions so that it can move up or down. These are two specific actions from Keen's looking sequences and are what actually allows the player to manipulate the screen position. (As such this has nothing to do with Keen's looking action's code or behavior.)
Keen will start looking up in two situations. The first is when the up arrow key is pressed while he is standing still. The second is after he shoots upwards while standing. After the first 'look up' action Keen will go to the second, which will trigger the camera to move. This action will do nothing further as long as the up arrow remains pressed. Once the key is released it will immediately return Keen to standing.
Keen will start looking down in two situations. The first is when the down key is pressed. The second occurs when Keen is moving down a pole that ends in ground. He will dismount the pole rather than attempt to sink into the ground. If Keen is on a 'one way up' platform and looks down while pressing 'jump' he will fall down.
Keen's first 'look down' action goes to a second, then a third. The third action triggers the camera to move down and will not change until the down arrow is no longer pressed. When that happens Keen will change into his 'stop looking down' action which will then return to standing.
There is an unused action that is very similar to Keen stopping looking down. Indications are that it was meant to act as a 'Keen jump down from one way platforms' action but was ultimately not used.
Keen 4
Keen 4 actions: $0C02W #Keen start looking up $0C20W #Keen looking up $0C3EW #Keen start looking down $0C5CW #Keen looking down 1 $0C7AW #Keen looking down 2 $0C98W #Keen stop looking down $0CB6W #Keen jump down from one-way-up platforms (Unused)
Sprite actions
#This action makes the screen move up
%patch $874C [$0C20W]
#Keen start looking up
%patch $BB76 [$0C02W]
#Look up after shooting up on ground
%patch $2FC50 [$0C02W]
#Look up sequence
%patch $2FA8E [$0C20W]
%patch $2FAAC [$0000W]
#Keen stop looking down when key not pressed
%patch $BCD5 [$098CW]
#This action makes the screen move down
%patch $8782 [$0C7AW]
#Keen start looking down
%patch $BB8D [$0C3EW]
#Keen jump down from one-way-up platforms
%patch $BDDB [$11A2W]
#Keen go to looking down at bottom of poles
%patch $D8C4 [$0C3EW]
#Look down sequence
%patch $2FACA [$0C5CW]
%patch $2FAE8 [$0C7AW]
%patch $2FB06 [$0000W]
#Keen stop looking down when key not pressed
%patch $BE24 [$0C98W]
#Stop looking down sequence
%patch $2FB24 [$089CW]
#Unused jump-down goes to falling
%patch $2FB42 [$11A2W]
Keen 5
Keen 5 actions: $0AC2W #Keen start looking up $0AE0W #Keen looking up $0AFEW #Keen start looking down $0B1CW #Keen looking down $0B3AW #Keen stop looking down 1 $0B58W #Keen stop looking down $0B76W #Keen jump down from one-way-up platforms (Unused)
Keen 5
#This action makes the screen move up
%patch $86C8 [$0AE0W]
#Keen start looking up
%patch $AF3E [$0AC2W]
#Look up after shooting up on ground
%patch $30FA4 [$0AC2W]
#Looking sequence
%patch $30E1E [$0AE0W]
%patch $30E3C [$0000W]
#Keen stop looking down when key not pressed
%patch $B09A [$0888W]
#This action makes the screen move down
%patch $86FE [$0B3AW]
#Keen start looking down
%patch $AF55 [$0AFEW]
#Keen jump down from one-way-up platforms
%patch $B1A0 [$1080W]
#Keen go to looking down at bottom of poles
%patch $CC88 [$0AFEW]
#Look down sequence
%patch $30E5A [$0B1CW]
%patch $30E78 [$0B3AW]
%patch $30E96 [$0000W]
#Keen stop looking down when key not pressed
%patch $B1E9 [$0B58W]
#Stop looking down sequence
%patch $30EB4 [$0888W]
#Unused jump-down goes to falling
%patch $30ED2 [$1080W]
Keen 6
Keen 6 actions: $0AB6W #Keen start looking up $0AD4W #Keen looking up $0AF2W #Keen start looking down $0B10W #Keen looking down 1 $0B2EW #Keen looking down 2 $0B4CW #Keen stop looking down $0B6AW #Keen jump down from one-way-up platforms (Unused)
Keen 6
#This action makes the screen move up
%patch $84F4 [$0AD4W]
#Keen start looking up
%patch $AD8C [$0AB6W]
#Look up after shooting up on ground
%patch $31988 [$0AB6W]
#Looking sequence
%patch $31802 [$0AD4W]
%patch $31820 [$0000W]
#Keen stop looking down when key not pressed
%patch $AED6 [$089AW]
#This action makes the screen move down
%patch $852B [$0B2EW]
#Keen start looking down
%patch $ADA3 [$0AF2W]
#Keen jump down from one-way-up platforms
%patch $AFDC [$101AW]
#Keen go to looking down at bottom of poles
%patch $CA3B [$0AF2W]
#Look down sequence
%patch $3183E [$0B10W]
%patch $3185C [$0B2EW]
%patch $3187A [$0000W]
#Keen stop looking down when key not pressed
%patch $B025 [$0B4CW]
#Stop looking down sequence
%patch $31898 [$089AW]
#Unused jump-down goes to falling
%patch $318B6 [$101AW]
Keen Dreams
In Keen Dreams Keen's looking actions are far simpler. This is because the game does not support moving the camera. When up is pressed all that happens is that Keen's sprite changes. The same is true when looking down. Both actions also keep referring to themselves as long as the arrow keys remain pressed.
Keen Dreams also has an unused jump-down action that would in theory go to falling on one-way-up platforms.
Actions: $1130W #Keen look up $114EW #Keen crouch $116CW #Keen jump down from one-way-up platforms (Unused)
Keen Dreams
#Start looking up
%patch $6D5B [$1130W]
#Look up keeps looking up
%patch $24BBC [$1130W]
#Start looking down
%patch $6D74 [$114EW]
#Looking down keeps looking down
%patch $24BDA [$114EW]
#Keen stop looking down when key not pressed
%patch $6F21 [$0ED8W]
#Keen jump down from one-way-up platforms
%patch $6FF7 [$150EW]
#Unused jump-down goes to falling
%patch $24BF8 [$150EW]
Actions if disturbed while looking
When looking up or down and thus using his second sprite collision Keen can be disturbed by Platforms or Bounders; in both cases he will revert to his falling action.
Keen 4
#Be disturbed by
%patch $CE54 [$11A2W] #Platforms
%patch $CE8C [$11A2W] #Bounders
Sprite Behavior
There are three unique behaviors Keen uses while looking. The first is when looking up, the second when looking down and the third when finishing looking down. The first two behaviors simply revert Keen to standing when certain keys like jump are pressed (And of course when the up/down arrows aren't being pressed.) The actual screen movement code is handled by the game camera and is triggered by Keen using a specific action.
The unused action's behavior simply sets Keen's clipping to 1.
Keen 4
#Look up
%patch $2FA82 $0B80049ARL #Start
%patch $2FAA0 $0B80049ARL
#Look down
%patch $2FABE $0B8004E2RL #Start
%patch $2FADC $0B8004E2RL
%patch $2FAFA $0B8004E2RL
#Stop looking down
%patch $2FB18 $00000000L
#Unused jump-down
%patch $2FB36 $0B8010D1RL
Keen 5
#Look up
%patch $30E12 $0AAF056FRL
%patch $30E30 $0AAF056FRL
#Look down
%patch $30E4D $0AAF05B7RL #Start
%patch $30E6C $0AAF05B7RL
%patch $30E8A $0AAF05B7RL
#Stop looking down
%patch $30EA8 $00000000L
#Unused jump-down
%patch $30EC6 $0AAF11FFRL
Keen 6
#Look up
%patch $317F6 $0AA2047BRL
%patch $31814 $0AA2047BRL
#Look down
%patch $31832 $0AA204C3RL
%patch $31850 $0AA204C3RL
%patch $3186E $0AA204C3RL
#Stop looking down
%patch $3188C $00000000L
#Unused jump-down
%patch $318AA $0AA210B2RL
Keen Dreams
In Keen Dreams there exists code for standing Keen to respond to player input. This is called if arrow input is detected, otherwise Keen will check his bored code. Keen looking up uses this code directly as a behavior, which means it can respond to all the arrow inputs Keen does while standing (without the possibility of being bored).
When looking down Keen uses a behavior that also calls this code, in much the same way standing Keen does. However it also returns Keen to standing if the down arrow isn't pressed, and will make him jump down from one-way-up platforms if 'jump' is pressed.
Just like in Galaxy,the unused jump-down behavior simply sets Keen's clipping to 1.
Keen Dreams
#Look up
%patch $24BB0 $05E80E1FRL
#Look down
%patch $24BCE $05E8108CRL
#Unused look-down
%patch $24BEC $05E81197RL
Behavior codes
Look up code
This is the complete code for Keen's looking up behavior. It consists of a number of variable checks to see whether Keen should stop looking up and revert to his standing action, $0888W. The first of these is Keen's vertical direction variable, set in part by the up arrow. Next is Keen's horizontal direction set by the left\right arrows. The remaining variables check whether Keen is attempting jumping, shooting or pogoing. (In order they are JumpNew, JumpOld, PogoNew, PogoOld and ShootNew)
Keen look up sprite behavior code
#Keen look up sprite behavior code -Keen 4
%patch $BC9A $55 $8B $EC $56 $8B $76 $06 $83 $3E {$A7D0W} [$FF] {$75} $2A $83 $3E
{$A7CEW} [$00] {$75} $23 $83 $3E {$C5C9W} [$00] {$74} $07 $83 $3E {$C5C7W}
[$00] {$74} $15 $83 $3E {$C5C5W} [$00] {$74} $07 $83 $3E {$C5C3W} [$00] {$74}
$07 $83 $3E {$C5C1W} [$00] {$74} $0D $C7 $44 $1C [$098CW] $56 $0E $E8
$FD89W $83 $C4 $02 $5E $5D $CB
#Keen look up sprite behavior code -Keen 5
%patch $B05F $55 $8B $EC $56 $8B $76 $06 $83 $3E {$9E38W} [$FF] {$75} $2A $83 $3E
{$9E36W} [$00] {$75} $23 $83 $3E {$BC31W} [$00] {$74} $07 $83 $3E {$BC2FW}
[$00] {$74} $15 $83 $3E {$BC2DW} [$00] {$74} $07 $83 $3E {$BC2BW} [$00] {$74}
$07 $83 $3E {$BC29W} [$00] {$74} $0D $C7 $44 $1C [$0888W] $56 $0E $E8
$FD7AW $83 $C4 $02 $5E $5D $CB
Look down code
This is the complete code for Keen's looking down behavior. It consists of a number of variable checks to see whether Keen should stop looking down. First jumping (JumpNew, JumpOld) is checked, if Keen is attempting a jump while looking down then a check relating to Keen's top tile collision is performed. On line 12 a check involving the SpriteSync variable occurs, followed by an OnPlatform check. The sum of these lines is to check if Keen is standing on some sort of one-way platform or tile that he can drop down from. If so then he does and uses his 'falling 1' action $0180W as well as playing sound $14.
The second section relates to stopping looking down on 'normal' surfaces. First Keen's vertical and horizontal variables are checked, to see if the down arrow is being pressed and not the left or right arrows. After that PogoNew, PogoOld and ShootNew are checked. If any of these checks are failed Keen will revert to his 'stop looking down 2' action.
Keen 5
#Keen look down sprite behavior code
%patch $B0A7 $55 $8B $EC $83 $EC $08 $56 $57 $8B $76 $06 $83 $3E {$BC31W} [$00]
{$75} $03 $E9 $0100W $83 $3E {$BC2FW} [$00] {$74} $03 $E9 $00F6W $8B
$44 {$36} $25 $0007W $3D [$0001W] {$74} $03 $E9 $00E8W $C7 $06 {$BC2FW}
[$0001W] $8B $44 $32 $89 $46 $FA $A1 {$9E51W} $33 $D2 $8B $5E
$FA $D1 $E3 $8B $9F $87 $BF $D1 $EB $D1 $E3 $03 $D3 $8B $5C $34
$D1 $E3 $03 $D3 $89 $46 $FE $89 $56 $FC $C4 $5E $FC $26 $8B $3F
$8E $06 $61 $BF $26 $80 $BD $FA $2F [$00] {$74} $03 $E9 $00D5W $26
$80 $BD $EA $18 [$00] {$74} $03 $E9 $00CAW $26 $80 $BD $72 $24 [$00]
{$74} $03 $E9 $00BFW $A1 {$9E4CW} $D1 $E0 $01 $46 $FC $C4 $5E $FC
$26 $8B $3F $8E $06 $61 $BF $26 $80 $BD $FA $2F [$00] {$74} $03 $E9
$00A2W $26 $80 $BD $EA $18 [$00] {$74} $03 $E9 $0097W $26 $80 $BD
$72 $24 [$00] {$74} $03 $E9 $008CW $83 $3E {$9BB4W} [$04] {$73} $05 $B8
[$0004W] $EB $03 $A1 {$9BB4W} $B1 $04 $D3 $E0 $89 $46 $F8 $83 $3E
{$6F6EW} [$00] {$74} $0A $8B $1E {$6F6EW} $8B $47 $14 $01 $46 $F8 $8B
$46 $F8 $01 $44 $28 $C7 $06 {$6F6EW} [$0000W] $01 $44 $0C $33 $C0
$A3 {$BF83W} $A3 {$BF85W} $C7 $44 $1C [$1080W] $33 $C0 $89 $44 $18
$89 $44 $16 $B8 [$0014W] $50 $9A $196E09EFRL $83 $C4 $02 $5F
$5E $8B $E5 $5D $CB
%patch $B1BC $83 $3E [$9E38W] [$01] {$75} $23 $83 $3E {$9E36W}
[$00] {$75} $1C $83 $3E {$BC31W} [$00] {$74} $07 $83 $3E {$BC2FW} [$00] {$74}
$0E $83 $3E {$BC2DW} [$00] {$74} $0C $83 $3E {$BC2BW} [$00] {$75} $05 $C7
$44 $1C [$0B58W] $5F $5E $8B $E5 $5D $CB
Speed and Jump Height
Keen doesn't move while looking. As such his animation speeds are zero and no other speeds apply.
Keen 4
#Look up
%patch $2FA7E [$0000W $0000W] #Start
%patch $2FA9C [$0000W $0000W]
#Look down
%patch $2FABA [$0000W $0000W] #Start
%patch $2FAD8 [$0000W $0000W]
%patch $2FAF6 [$0000W $0000W]
#Stop looking down
%patch $2FB14 [$0000W $0000W]
#Unused jump-down
%patch $2FB32 [$0000W $0000W]
Keen 5
#Look up
%patch $30E0E [$0000W $0000W] #Start
%patch $30E2C [$0000W $0000W]
#Look down
%patch $30E4A [$0000W $0000W] #Start
%patch $30E68 [$0000W $0000W]
%patch $30E86 [$0000W $0000W]
#Stop looking down
%patch $30EA4 [$0000W $0000W]
#Unused jump-down
%patch $30EC2 [$0000W $0000W]
Keen 6
#Look up
%patch $317F2 [$0000W $0000W]
%patch $31810 [$0000W $0000W]
#Look down
%patch $3182E [$0000W $0000W]
%patch $3184C [$0000W $0000W]
%patch $3186A [$0000W $0000W]
#Stop looking down
%patch $31888 [$0000W $0000W]
#Unused jump-down
%patch $318A6 [$0000W $0000W]
Keen Dreams
#Look up
%patch $24BAC [$0000W $0000W]
#Look down
%patch $24BCA [$0000W $0000W]
#Unused jump down from one-way-up platforms
%patch $24BE8 [$0000W $0000W]
Sprite Collision
Most of Keen's sprite collisions while looking are those of his default 'standing\walking' pose. ($0B8014A9RL, $0AAF1597RL in Keen 4 and Keen 5 respectively.) But those actions where the screen moves in the direction he looks use his second collision, used for Keen 'sitting' (Such as when he is on poles.) This allows him to be 'disturbed' by things like moving platforms in this state, 'jolting' him out of looking.
Keen 4
#Look up
%patch $2FA86 $0B8014A9RL #Start
%patch $2FAA4 $0B801632RL
#Look down
%patch $2FAC2 $0B8014A9RL #Start
%patch $2FAE0 $0B801632RL
%patch $2FAFE $0B801632RL
#Stop looking down
%patch $2FB1C $0B8014A9RL
#Unused jump-down
%patch $2FB3A $0B8014A9RL
Keen 5
#Look up
%patch $30E16 $0AAF1597RL #Start
%patch $30E34 $0AAF167FRL
#Look down
%patch $30E52 $0AAF1597RL #Start
%patch $30E70 $0AAF167FRL
%patch $30E8E $0AAF167FRL
#Stop looking down
%patch $30EAC $0AAF1597RL
#Unused jump-down
%patch $30ECA $0AAF1597RL
Keen 6
#Look up
%patch $317FA $0AA2144ARL
%patch $31818 $0AA2154CRL
#Look down
%patch $31836 $0AA2144ARL
%patch $31854 $0AA2154CRL
%patch $31872 $0AA2154CRL
#Stop looking down
%patch $31890 $0AA2144ARL
#Unused jump-down
%patch $318AE $0AA2144ARL
Keen Dreams
In Keen Dreams Keen only uses his regular collision in all his actions.
Keen Dreams
#Look up
%patch $24BB4 $05E817FCRL
#Look down
%patch $24BD2 $05E817FCRL
#Unused jump down from one-way-up platforms
%patch $24BF0 $05E817FCRL
Animations
Keen uses one animation per action when looking; it doesn't matter if he was facing left or right. When looking up there is no difference between starting and looking proper. When looking down a 'halfway' animation is used for the first action. The last two actions use the same animation.
When Keen stops looking down he returns to the 'halfway' animation. This is also used by the unused action.
Animation speed governs how quickly Keen progresses through his actions, but the final look up\down actions have no animation speed as they wait for the arrow keys not to be pressed.
Keen 4
#Keen look up
%patch $2FA72 [$0092W $0092W]
%patch $2FA7C [$001EW] #Animation speed
%patch $2FA90 [$0092W $0092W]
%patch $2FA9A [$0000W] #Wait for keypress to stop
#Keen look down
%patch $2FAAE [$00A0W $00A0W]
%patch $2FAB8 [$0006W] #Animation speed
%patch $2FACC [$00A1W $00A1W]
%patch $2FAD6 [$0018W] #Animation speed
%patch $2FAEA [$00A1W $00A1W]
%patch $2FAF4 [$0000W] #Wait for keypress to stop
#Keen stop looking down
%patch $2FB08 [$00A0W $00A0W]
%patch $2FB12 [$0006W] #Bending time
#Unused jump-down
%patch $2FB26 [$00A0W $00A0W]
%patch $2FB30 [$0000W] #Animation speed
Keen 5
#Keen look up
%patch $30E02 $007CW $007CW
%patch $30E0C $001EW #Animation speed
%patch $30E20 $007CW $007CW
%patch $30E2A $0000W #Wait for keypress to stop
#Keen look down
%patch $30E3E $0089W $0089W
%patch $30E48 $0006W #Animation speed
%patch $30E5C $008AW $008AW
%patch $30E66 $0018W #Animation speed
%patch $30E7A $008AW $008AW
%patch $30E84 $0000W #Wait for keypress to stop
#Keen stop looking down
%patch $30E98 $0089W $0089W
%patch $30EA2 $0006W #Bending time
#Unused jump-down
%patch $30EB6 $0089W $0089W
%patch $30EC0 $0000W #Animation speed
Keen 6
#Look up
%patch $317E6 $0044W $0044W
%patch $317F0 $001EW #Animation speed
%patch $31804 $0044W $0044W
%patch $3180E $0000W #Wait for keypress to stop
#Look down
%patch $31822 $0051W $0051W
%patch $3182C $0006W #Animation speed
%patch $31840 $0052W $0052W
%patch $3184A $0018W #Animation speed
%patch $3185E $0052W $0052W
%patch $31868 $0000W #Wait for keypress to stop
#Stop looking down
%patch $3187C $0051W $0051W
%patch $31886 $0006W #Bending time
#Unused jump-down
%patch $3189A $0051W $0051W
%patch $318A4 $0000W #Animation speed
Keen Dreams
In Keen Dreams the player has two distinct sprites depending on whether they re facing left or right.
Keen Dreams
#Look up
%patch $24BA0 $005FW $0058W
%patch $24BAA $0000W #Animation speed
#Look down
%patch $24BBE $006BW $006AW
%patch $24BC8 $0000W #Animation speed
#Unused jump down from one-way-up platforms
%patch $24BDC $006BW $006AW
%patch $24BE6 $0000W #Animation speed
Sprite-tile interaction
Keen's looking actions use his 'standard' tile interaction, the same one that is used when doing things like walking. The unused action uses the same tile interaction as Keen does when on poles,but this doesn't matter.
Keen 4
#Keen look up
%patch $2FA8A $0B801AA2RL
%patch $2FAA8 $0B801AA2RL
#Keen look down
%patch $2FAC6 $0B801AA2RL
%patch $2FAE4 $0B801AA2RL
%patch $2FB02 $0B801AA2RL
#Keen stop looking down
%patch $2FB20 $0B801AA2RL
#Unused jump-down
%patch $2FB3E $0B801A7BRL
Keen 5
#Keen look up
%patch $30E1A $0AAF1AC6RL
%patch $30E38 $0AAF1AC6RL
#Keen look down
%patch $30E56 $0AAF1AC6RL
%patch $30E74 $0AAF1AC6RL
%patch $30E92 $0AAF1AC6RL
#Keen stop looking down
%patch $30EB0 $0AAF1AC6RL
#Unused jump-down
%patch $30ECE $0AAF1A9FRL
Keen 6
#Look up
%patch $317FE $0AA2197CRL
%patch $3181C $0AA2197CRL
#Look down
%patch $3183A $0AA2197CRL
%patch $31858 $0AA2197CRL
%patch $31876 $0AA2197CRL
#Stop looking down
%patch $31894 $0AA2197CRL
#Unused jump-down
%patch $318B2 $0AA21955RL
Keen Dreams
#Look up
%patch $24BB8 $05E81AE2RL
#Look down
%patch $24BD6 $05E81AE2RL
#Unused jump-down
%patch $24BF4 $05E81ABARL
Action type
When starting to look up or down Keen needs to react quickly to arrow keypresses and also animate. These actions are type 3. When in the 'screen moving' stage Keen merely needs to react quickly (there is no animation) so these actions are type 2.
Keen's stopping looking down action is a basic animation and thus type 0, as is the unused action.
Keen 4
#Keen look up
%patch $2FA76 [$0003W]
%patch $2FA94 [$0002W]
#Keen look down
%patch $2FAB2 [$0003W]
%patch $2FAD0 [$0003W]
%patch $2FAEE [$0002W]
#Keen stop looking down
%patch $2FB0C [$0000W]
#Unused jump-down
%patch $2FB2A [$0000W]
Keen 5
#Keen look up
%patch $30E06 [$0003W]
%patch $30E24 [$0002W]
#Keen look down
%patch $30E42 [$0003W]
%patch $30E60 [$0003W]
%patch $30E7E [$0002W]
#Keen stop looking down
%patch $30E9C [$0000W]
#Unused jump-down
%patch $30EBA [$0000W]
Keen 6
#Look up
%patch $317EA [$0003W]
%patch $31808 [$0002W]
#Look down
%patch $31826 [$0003W]
%patch $31844 [$0003W]
%patch $31862 [$0002W]
#Stop looking down
%patch $31880 [$0000W]
#Unused jump-down
%patch $3189E [$0000W]
Keen Dreams
#Look up
%patch $24BA4 [$0002W]
#Look down
%patch $24BC2 [$0002W]
#Unused jump down from one-way-up platforms
%patch $24BE0 [$0000W]
Deprotect and stick to ground
As Keen is on the ground the 'stick to ground' variable for all his actions is 1, just to be on the safe side, even though he doesn't move while looking.
Keen 4
#Keen look up
%patch $2FA78 [$0000W $0001W]
%patch $2FA96 [$0000W $0001W]
#Keen look down
%patch $2FAB4 [$0000W $0001W]
%patch $2FAD2 [$0000W $0001W]
%patch $2FAF0 [$0000W $0001W]
#Keen stop looking down
%patch $2FB0E [$0000W $0001W]
#Unused jump-down
%patch $2FB2C [$0000W $0000W]
Keen 5
#Keen look up
%patch $30E08 [$0000W $0001W]
%patch $30E26 [$0000W $0001W]
#Keen look down
%patch $30E44 [$0000W $0001W]
%patch $30E62 [$0000W $0001W]
%patch $30E80 [$0000W $0001W]
#Keen stop looking down
%patch $30E9E [$0000W $0001W]
#Unused jump-down
%patch $30EBC [$0000W $0000W]
Keen 6
#Look up
%patch $317EC [$0000W $0001W]
%patch $3180A [$0000W $0001W]
#Look down
%patch $31828 [$0000W $0001W]
%patch $31846 [$0000W $0001W]
%patch $31864 [$0000W $0001W]
#Stop looking down
%patch $31882 [$0000W $0001W]
#Unused jump-down
%patch $318A0 [$0000W $0000W]
Keen Dreams
#Look up
%patch $24BA6 [$0000W $0001W]
#Look down
%patch $24BC4 [$0000W $0001W]
#Unused jump down from one-way-up platforms
%patch $24BE2 [$0000W $0000W]