Patch:Patch space

From KeenWiki
Jump to navigation Jump to search

This page relates to patches that free up space for other patches to use. This is useful to patchers who need code space to place anything from new text windows to new sprites.

Some patches are not really useful in and of themselves and so are reproduced in full on this page only. Others have sections on other pages and are simply linked here. In those cases the link to the patch is in the section title.

The page is divided into two main sections; the first section contains patches with no 'side effects'. That is, adding the patch to a patchfile will not affect the default behavior of the game, nothing is 'sacrificed' to make it work. The second section contains patches that disable or alter something, these will make mention of what is lost in the section title or description.

Each main section is further divided into three subsections, one for Keen Vorticons, one for Keen Dreams and one for Keen Galaxy. This is because each of these three 'groups' of games often have the same patches available for each game in the series but not for other games.

Within each section patches are arranged by how much space they free up. Patches that only free a few dozen bytes are not included as they are of minimal utility.


Patches that don't disable functions

As mentioned in the introduction, the patches in this section do not alter the default gameplay. Broadly they involve more efficient or different ways of doing things the game already does. (Some 'side effects' such as incrementally slower gameplay or requiring an external file are not considered here as they do not affect gameplay in general.)

These patches may interfere with other patches however. For example, a patch that alters Keen's shooting code to be more efficient will be expected to not be compatible with other patches to alter the same shooting code.


Keen Vorticons

Slow tile code -15Kb

This patch for Keen 1 frees up space by making the tile drawing code slightly slower. However this should not be noticeable on modern computer setups.


Unused screenshot code -350 bytes

All three Keen Vorticons games contain unused code that takes screenshots. (This was used to make the PREVIEWS images included with Keen 1.) As it is unused, replacing it has no effects on the game whatsoever.

Unused screenshot code space

#Unused screenshot code space -Keen 1: $0AF2-$0C50
%patch $0AF1 $C3

#Unused screenshot code space -Keen 2: $0AF2-$0C50
%patch $0AF1 $C3

#Unused screenshot code space -Keen 3: $0B5F-$0CB4
%patch $0B5E $C3


The big versatile status box patch

This patch for Keen 1 frees up a small amount of code space which has historically been used by some patches. It also allows complete customization of the status window.


Keen Dreams

Don't compress game data -265 bytes

Certain graphics and sound programs (Notably KeenWave and Keengraph) produce 'minimally compressed' data, that is, data that is essentially uncompressed but still adheres to the basic compression schematic. If all of a game's data is 'compressed' in this manner then all the compression does is slow loading times.

As such it is possible to remove the compression entirely, replacing it with code that simply copies the input to the output. Doing so greatly decreases loading times as well as freeing up code space. This does however require that all data is treated this way, which is only the case when certain specific programs are used.

This shouldn't affect the gameplay in any way, but will require a little effort from the mod creator.

Totally remove Huffman compression

#Keen Dreams - remove Huffman compression (Frees $B4B6-$B5BF)
%patch $B497  $55 $8B $EC $56 $57 $8C $DA $C4 $7E $0A $C5 $76 $06 $8B $4E $0E
              $D1 $E9 $FC $F3 $A5 $73 $01 $A4 $8E $DA $5F $5E $5D $CB


Unused tile interaction -158 bytes

This patch disables a tile interaction that doesn't seem to be used by the game. (As such even this disabling patch is probably not needed.) The code indicates it should be used by Keen when he is napping, but no reference to it can be found in the code. Even so it should be used carefully as there still remains the possibility of unforeseen side effects.

Keen Dreams

#Disable unused tile interaction: Free 158 bytes at $7BB4
%patch $7BB3 $CB


Unused screen fade -157 bytes

This patch disables a screen fade that doesn't seem to be used by the game. (As such even this disabling patch is probably not needed.)

Keen Dreams

#Disable white fades: Free 157 bytes at $CBEB
%patch $CBEB $CB


Compact cheat codes -124 bytes

This patch frees up space by compacting the F10 cheat codes. The cheats behave identically to the unaltered game, playing sound $03 when each is activated. The window for all cheats (Aside from F10-W.) is $03x$10 wide. This is all set in the first paragraph of code.

Each cheat also has its own unique text(s) as well as various variables that are changed. These are best dissected on the cheat's individual pages. Because this rearranges so much code it is essentially incompatible with most cheat code patches (Except those dealing with the warp cheat, which are unaffected.)

Keen Dreams

#Compact cheats (Free $3879-$38F6)
#F10-G
%patch $37B0 $55 $8B $EC $4C $4C $56 $83 $3E {$E4CEW}  [$00] {$74} $55 $83 $3E {$E9EAW}
                 [$00] {$74} $4E $83 $3E $6FAAW  [$00] {$74} $05 $B8 [$00AEW]  $EB $03
             $B8 [$00BBW]  $50 $81 $36 $6FAAW  $0001W  $9A $0CA507D5RL     $B8
             [$0002W]  $50 $B8 [$0010W]  $50 $9A $11FA1C64RL     $83 $C4 $04 $9A
             $11FA1A1ERL     $B8 [$0003W]  $50 $9A $10BB1282RL     $83 $C4 $04
             $9A $0CA508C0RL     $9A $0FE40C8ERL     $B8 $0001W  $5E $8B $E5
             $5D $CB

#F10-I
%patch $3812 $83 $3E {$E4B8W}  [$00] {$74} $18 $B8 [$00C7W]  $50 $C7 $06 {$711EW}  [$0063W]
                 $C7 $06 {$711CW}  [$0063W]  $C7 $06 {$7122W}  [$0063W]  $EB $A9

#F10-J
%patch $3831 $83 $3E {$E4D2W}  [$00] {$74} $18 $81 $36 $7012W  $0001W  $83 $3E $7012W
                 [$00] {$74} $05 $B8 [$00D3W]  $EB $03 $B8 [$00E1W]  $50 $EB $8A

#F10-S
%patch $3850 $83 $3E {$E4C8W}  [$00] {$74} $20 $83 $3E $E9EAW  [$00] {$74} $19 $81 $36
             $7014W  $0001W  $83 $3E $7014W  [$00] {$74} $05 $B8 [$00F0W]  $EB $03
             $B8 [$00FFW]  $50 $E9 $FF63W  $EB $7E


Ignore low memory on startup -116 bytes

This patch disables the low memory check. It will not disable the game crashing if there is not enough memory, only borderline cases. (Which should not occur on modern setups at any rate.)

In theory it is possible if this patch is used for a game to load with low memory and eventually crash. But the likelihood of this happening is exceedingly low on modern systems.

As well as freeing code space, it also frees up considerable text space; notably 290 bytes starting at $23C62.

Ignore Keen Dreams low memory error

#Ignore low memory (Frees $3A45-$3AB8)
%patch $3A43 $EB $74


Keen Galaxy

Disable EGAGRAPH check -389 bytes

This patch disables the EGAGRAPH file check when the game boots up. Since EGAGRAPH should always be present this check should be redundant. (It is absent in Keen 5.) It creates 389 bytes of free space.

Disable EGAGRAPH check

#Disable EGAGRAPH check in Keen 4 (Frees 389 bytes at $3CF6)
%patch $3CE5 $90 $90

#Disable EGAGRAPH check in Keen 5 (Frees 389 bytes at $3CF0)
%patch $3CDF $90 $90


Unused level entry window -366 bytes

Keen Galaxy contains apparently unused code for a Keen Dreams style level entry window. (The code is loaded but then immediately unloaded when the game starts.) As such this space can be used in its entirety without any loss of function. (Even these disabling patches aren't needed.)

Unused level entry window

#Disable level entry window -Keen 4: Free 366 bytes at $140B0
%patch $140B0 $CB

#Disable level entry window -Keen 5: Free 366 bytes at $1504D
%patch $1504D $CB

#Disable level entry window -Keen 6: Free 366 bytes at $13BE1
%patch $13BE1 $CB


Don't compress game data -265 bytes

Certain graphics and sound programs (Notably KeenWave and Keengraph) produce 'minimally compressed' data, that is, data that is essentially uncompressed but still adheres to the basic compression schematic. If all of a game's data is 'compressed' in this manner then all the compression does is slow loading times.

As such it is possible to remove the compression entirely, replacing it with code that simply copies the input to the output. Doing so greatly decreases loading times as well as freeing up code space. This does however require that all data is treated this way, which is only the case when certain specific programs are used.

This shouldn't affect the gameplay in any way, but will require a little effort from the mod creator.

Totally remove Huffman compression

#Keen 4 - remove Huffman compression (Frees $12D4B-$12E54)
%patch $12D2C $55 $8B $EC $56 $57 $8C $DA $C4 $7E $0A $C5 $76 $06 $8B $4E $0E
              $D1 $E9 $FC $F3 $A5 $73 $01 $A4 $8E $DA $5F $5E $5D $CB

#Keen 5 - remove Huffman compression (Frees $13CE8-$13DF1
%patch $13CC9 $55 $8B $EC $56 $57 $8C $DA $C4 $7E $0A $C5 $76 $06 $8B $4E $0E
              $D1 $E9 $FC $F3 $A5 $73 $01 $A4 $8E $DA $5F $5E $5D $CB

#Keen 6 - remove Huffman compression (Frees $1287C-$12985)
%patch $1285D $55 $8B $EC $56 $57 $8C $DA $C4 $7E $0A $C5 $76 $06 $8B $4E $0E
              $D1 $E9 $FC $F3 $A5 $73 $01 $A4 $8E $DA $5F $5E $5D $CB


Change Keen's shot code -220 bytes

These patches alter Keen's shooting behavior to make it more efficient (If more complex.) This frees up 220 bytes of space where Keen's shooting behavior initially started. ($0B801195RL in Keen 4, $0AAF12C3RL in Keen 5 and $0AA21176RL in Keen 6.)

This patch is incompatible with any patches altering Keen's shot position relative to the player. (This should not need to be altered often.)


Keen 4

#The Great KeenShot Compression: Free $C995-$CA71 (220 bytes)
#Shoot horizontally in air =$0B801272RL
%patch $CA72 $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $0D $B8 $0002W 
             $50 $8B $44 $0C $05 $0020W  $50 $EB $5D $B8 $0006W  $50 $8B $44
             $0C $05 $0020W  $50 $FF $74 $0A $E9 $00A2W

#Shoot down =$0B80129DRL
%patch $CA9D $55 $8B $EC $56 $8B $76 $06 $B8 $0004W  $50 $8B $44 $0C $05 $0120W
                 $50 $8B $44 $0A $05 $0080W  $E9 $0086W

#Shoot up air\ground =$0B8012B8RL
%patch $CAB8 $55 $8B $EC $56 $8B $76 $06 $33 $C0 $50 $8B $44 $0C $2D $00A0W
             $50 $8B $44 $0A $05 $0050W  $EB $6D

#Shoot horizontally on\off poles =$0B8012D1RL
%patch $CAD1 $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $13 $B8 $0002W 
             $50 $8B $44 $0C $05 $0040W  $50 $8B $44 $0A $05 $0100W  $EB $4D
             $B8 $0006W  $50 $8B $44 $0C $05 $0040W  $50 $8B $44 $0A $2D $0080W
                 $EB $3A

#Shoot up on poles =$0B801304RL
%patch $CB04 $55 $8B $EC $56 $8B $76 $06 $33 $C0 $50 $8B $44 $0C $05 $0040W
                 $50 $EB $12

#Shoot down on poles =$0B801317RL
%patch $CB17 $55 $8B $EC $56 $8B $76 $06 $B8 $0004W  $50 $8B $44 $0C $05 $0180W
                 $50 $83 $7C $0E $01 $75 $09 $8B $44 $0A $05 $0060W  $50 $EB
             $07 $8B $44 $0A $05 $00C0W  $50 $9A $0D8F0C76RL     $83 $C4 $06
             $5E $5D $CB

#Change behaviors to match codes
%patch $2FBEA $0B8012D1RL #Shooting horizontally while standing
%patch $2FC26 $0B8012B8RL #Shooting up while standing
%patch $2FE60 $0B8012D1RL #Shooting horizontally on poles
%patch $2FE9C $0B801304RL #Shooting up on poles
%patch $2FED8 $0B801317RL #Shooting down on poles
%patch $3007C $0B801272RL #Shooting horizontally while in air
%patch $300D6 $0B8012B8RL #Shooting up while in air
%patch $30130 $0B80129DRL #Shooting down while in air

Keen 5

#The Great KeenShot Compression: Free $BDB3-$BE8F (220 bytes)
#Shoot horizontally in air =$0AAF13A0RL
%patch $BE90 $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $0D $B8 $0002W 
             $50 $8B $44 $0C $05 $0020W  $50 $EB $5D $B8 $0006W  $50 $8B $44
             $0C $05 $0020W  $50 $FF $74 $0A $E9 $00A2W

#Shoot down =$0AAF13CBRL
%patch $BEBB $55 $8B $EC $56 $8B $76 $06 $B8 $0004W  $50 $8B $44 $0C $05 $0120W
                 $50 $8B $44 $0A $05 $0080W  $E9 $0086W

#Shoot up air\ground =$0AAF13E6RL
%patch $BED6 $55 $8B $EC $56 $8B $76 $06 $33 $C0 $50 $8B $44 $0C $2D $00A0W
             $50 $8B $44 $0A $05 $0050W  $EB $6D

#Shoot horizontally on\off poles =$0AAF13FFRL
%patch $BEEF $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $13 $B8 $0002W 
             $50 $8B $44 $0C $05 $0040W  $50 $8B $44 $0A $05 $0100W  $EB $4D
             $B8 $0006W  $50 $8B $44 $0C $05 $0040W  $50 $8B $44 $0A $2D $0080W
                 $EB $3A

#Shoot up on poles =$0AAF1432RL
%patch $BF22 $55 $8B $EC $56 $8B $76 $06 $33 $C0 $50 $8B $44 $0C $05 $0040W
                 $50 $EB $12

#Shoot down on poles =$0AAF1445RL
%patch $BF35 $55 $8B $EC $56 $8B $76 $06 $B8 $0004W  $50 $8B $44 $0C $05 $0180W
                 $50 $83 $7C $0E $01 $75 $09 $8B $44 $0A $05 $0060W  $50 $EB
             $07 $8B $44 $0A $05 $00C0W  $50 $9A $0CCB0FE5RL         $83 $C4
             $06 $5E $5D $CB

#Change behaviors to match codes
%patch $30F3E $0AAF13FFRL #Shooting horizontally while standing
%patch $30F7A $0AAF13E6RL #Shooting up while standing
%patch $3120E $0AAF13FFRL #Shooting horizontally on poles
%patch $3124A $0AAF1432RL #Shooting up on poles
%patch $31286 $0AAF1445RL #Shooting down on poles
%patch $3142A $0AAF13A0RL #Shooting horizontally while in air
%patch $31484 $0AAF13E6RL #Shooting up while in air
%patch $314DE $0AAF13CBRL #Shooting down while in air

Keen 6

#The Great KeenShot Compression: Free $BB96-$BC72 (220 bytes)
#Shoot horizontally in air =$0AA21253RL
%patch $BC73 $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $0D $B8 $0002W 
             $50 $8B $44 $0C $05 $0020W  $50 $EB $5D $B8 $0006W  $50 $8B $44
             $0C $05 $0020W  $50 $FF $74 $0A $E9 $00A2W

#Shoot down =$0AA2127ERL
%patch $BC9E $55 $8B $EC $56 $8B $76 $06 $B8 $0004W  $50 $8B $44 $0C $05 $0120W
                 $50 $8B $44 $0A $05 $0080W  $E9 $0086W

#Shoot up air\ground =$0AA21299RL
%patch $BCB9 $55 $8B $EC $56 $8B $76 $06 $33 $C0 $50 $8B $44 $0C $2D $00A0W
             $50 $8B $44 $0A $05 $0050W  $EB $6D

#Shoot horizontally on\off poles =$0AA212B2RL
%patch $BCD2 $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $13 $B8 $0002W 
             $50 $8B $44 $0C $05 $0040W  $50 $8B $44 $0A $05 $0100W  $EB $4D
             $B8 $0006W  $50 $8B $44 $0C $05 $0040W  $50 $8B $44 $0A $2D $0080W
                 $EB $3A

#Shoot up on poles =$0AA212E5RL
%patch $BD05 $55 $8B $EC $56 $8B $76 $06 $33 $C0 $50 $8B $44 $0C $05 $0040W
                 $50 $EB $12

#Shoot down on poles =$0AA212F8RL
%patch $BD18 $55 $8B $EC $56 $8B $76 $06 $B8 $0004W  $50 $8B $44 $0C $05 $0180W
                 $50 $83 $7C $0E $01 $75 $09 $8B $44 $0A $05 $0060W  $50 $EB
             $07 $8B $44 $0A $05 $00C0W  $50 $9A $0CA60D9ERL     $83 $C4 $06
             $5E $5D $CB

#Change behaviors to match codes
%patch $31922 $0AA212B2RL #Shooting horizontally while standing
%patch $3195E $0AA21299RL #Shooting up while standing
%patch $31B98 $0AA212B2RL #Shooting horizontally on poles
%patch $31BD4 $0AA212E5RL #Shooting up on poles
%patch $31C10 $0AA212F8RL #Shooting down on poles
%patch $31DB4 $0AA21253RL #Shooting horizontally while in air
%patch $31E0E $0AA21299RL #Shooting up while in air
%patch $31E68 $0AA2127ERL #Shooting down while in air


Unused screen fade -167 bytes

This patch disables a screen fade that doesn't seem to be used by the games. (As such even this disabling patch is probably not needed.)

Disable white fades

#Disable white fades in Keen 4: Free 167 bytes at $1D275
%patch $1D275 $CB

#Disable white fades in Keen 5: Free 167 bytes at $1E211
%patch $1E211 $CB

#Disable white fades in Keen 6: Free 167 bytes at $1D18F
%patch $1D18F $CB


Patches that disable functions

As noted in the page introduction, these patches free up space, but at the cost of some game functionality. The best options only disable things that are rarely used or that have a minimal impact on gameplay.


Keen Vorticons

Disable ending sequence

Keen 3 -666 bytes

This patch disables the entire Keen 3 ending sequence. When Keen wins the game he is taken directly to the finale screen with its text wind. ('The end... for now.')

No award level, go straight to finale image

#No award level, go straight to finale image
%patch $5A52 $E9 $029AW


Disable Joystick configuration window -592 bytes

This disables the ability of the player to change the joystick controls. The player can change the controls by loading the game directly (Unless it has been so heavily patched that this is impossible.) Or controls can be set by the modder or copied from a clean version of the game (By copying the CTLPANEL.CKx file.) Note that the joystick itself is not disbled.

Disable Joystick Window

#Disable Joystick Window, Keen 1: (Free $4FA9-$51F9)
%patch $0D06 $EB $24

#Disable Joystick Window, Keen 2: (Free $157C-$17CC)
%patch $0D06 $EB $24

#Disable Joystick Window, Keen 3: (Free $153A-$1781)
%patch $0D5B $EB $25


Disable C-T-Space cheat -137 bytes

This removes the C-T-Space cheat entirely, when the player presses the cheat keys, nothing happens.

Keen 1

#Disable CTSpace cheat (Frees $0DB0-$0E39):
%patch $11F3 $EB $16

Keen 2

#Disable CTSpace cheat (Frees $0DB0-$0E39):
%patch $11AD $EB $16

Keen 3

#Disable CTSpace cheat: (Frees $0E1D-$0EA6)
%patch $114E $EB $16


Don't display Ordering Info text -130 bytes

This stops all of the O.I text appearing. The text space may then be used somewhere else. This patch also frees up significant code space.

Keen 1

#Blank O.I text (Free $A497-$A565; 520 chars free at $1632C)
%patch $A497 $C3

Keen 2

#Blank O.I text (Free $9F32-$9FD5; 520 chars free at $1AADA)
%patch $9F32 $C3

Keen 3

#Blank O.I text (Free $AE34-$AEB6; 533 chars spare at $1CBEE)
%patch $AE33 $C3


About Id screen has no text -90 bytes

These patches stop any text appearing in the About Id window, leaving the text space free as well as the screen. 90 bytes of code are also freed up.

Keen 1

#About Id is blank (Frees $97F1-$984B)
%patch $97F0 $C3

Keen 2

#About Id is blank (Frees $9272-$92CC)
%patch $9271 $C3

Keen 3

#About Id is blank (Frees $A0CB-$A124)
%patch $A0CA $C3


Keen Dreams

Disable all F10 cheats -516 bytes

This patch completely remove all of the 'F10 cheats' in Keen Dreams. Doing this frees a sizeable amount of space in the cheat code.

Disable F10 cheats

#Keen Dreams (Frees $37B0-$39B4)
%patch $45BA $EB


Disable F10-S cheat -77 bytes

This patch disables the F10 S cheat entirely.

Keen Dreams

#Disable F10-S (Free $38A9-38F6)
%patch $38A7 $EB $4E


Disable level entry window -68 bytes

This patch disables the level entry window, causing the screen to freeze for a moment when Keen enters levels.

Disable level entry window

#Disable level entry window -Free 68 bytes at $C569
%patch $C567 $EB $44


Keen Galaxy

Disable all F10 cheats -1516 bytes

These patches completely remove all of the 'F10 cheats' in Keen Galaxy. Doing this frees an enormous amount of space not only in the cheat code but also the ancillary codes used by various cheats such as the demo recording cheat.

Disable F10 cheats

#Keen 4 (Frees $7469-$749E, $64A0-$6631, $15339-$15380, $7243 - $782F, $6BDB-$70BD,
#$77FC-780D, $7243-$73AB, $6BDB-$6C5E)
%patch $7ABE $EB

#Keen 5 (Frees $741E-$7453, $6456-$65EC, $162D6-$1631D, $71F8-$77E4,
#$77B1-77C2, $71F8-$7360, $6B90-$6C13)
%patch $7A79 $EB

#Keen 6 (Frees $7238-$726D, $6270-$6401, $14E6A-$14EB1, $7012-$75FE,
#$75D1-75E2, $7012-$717A, $69AA-$6A2D)
%patch $7852 $EB


Skip game initialization screen -1343 bytes

This patch completely skips the initialization screen (although there is a pause as the game initializes.) The screen can be replaced to an extent via other means and frees up considerable space.

Keen 4

#Skip initialization screen (Frees $19AAA-$19FE9)
%patch $38AD $90 $90 $90 $90 $90 #Don't load B800
%patch $38D0 $90 $90 $90 $90 $90 #Don't display game info, 'Loading...' text
%patch $39B2 $90 $90 $90 $90 $90 #Don't wait for key, show 'Ready' text

Keen 5

#Skip initialization screen (Frees $1AA48-$1AEE9)
%patch $38AD $90 $90 $90 $90 $90 #Don't load B800
%patch $38D0 $90 $90 $90 $90 $90 #Don't display game info, 'Loading...' text
%patch $39B2 $90 $90 $90 $90 $90 #Don't wait for key, show 'Ready' text

Keen 6

#Skip initialization screen
%patch $388E $90 $90 $90 $90 $90 #Don't load B800
%patch $38B1 $90 $90 $90 $90 $90 #Don't display game info, 'Loading...' text
%patch $3993 $90 $90 $90 $90 $90 #Don't wait for key, show 'Ready' text


Skip creature question (Keen 6) -697 bytes

These patches skip over the creature question entirely, removing it from the game. Both are included as, for unknown reasons, one of the patches may fail to work in some circumstances.

Keen 6

#Skip creature question 1(Frees $1CC7F - $1CF38)
%patch $1CC7B $B8 $0001W $CB

#Skip creature question 2(Frees $1CC93 - $1CF38)
%patch $1CC88 $90 $90


No map flags -632 bytes

This patch eliminates the map flags entirely. Levels will not be marked by a flag sprite under any circumstances. This frees up space relating to the flag spawning and landing. It is notable that much less space is freed in Keen 5 since that game doesn't use code to make flags flip into a holder.

No flags

#No flags - Keen 4 (Frees $E2ED-$E565)
%patch $6134 $EB $25

#No flags - Keen 5 (Frees $DC37-$DC94)
%patch $60EA $EB $11

#No flags - Keen 6 (Frees $D4E4-$D7FD)
%patch $5F04 $EB $25


Disable F10-D cheat -401\71\53 bytes

These patches disable the F10-D cheat entirely. This frees a little space in the cheat code but also frees up considerably more in the demo-record code itself. (As well as a little code that sets up the demo recording. It may also free up other associated code elsewhere.) Since players should have little need to record demos this cheat shouldn't be missed.

Disable demo cheat

#Disable Keen 4 F10-D (Frees $7469-$749E, $64A0-$6631, $15339-$15380)
%patch $7467 $EB $35

#Disable Keen 5 F10-D (Frees $741E-$7453, $6456-$65EC, $162D6-$1631D)
%patch $741C $EB $35

#Disable Keen 6 F10-D (Frees $7238-$726D, $6270-$6401, $14E6A-$14EB1)
%patch $7236 $EB $35


Disable F10-T cheat -390 bytes

This cheat will disable the sprite test cheat entirely. It frees up a small amount of space in the main cheat code, but significantly more in the unused cheat window code.

Keen 4

#Disable sprite test cheat (Free $6D39-$6EBF)
%patch $76C4 $EB $12

Keen 5

#Disable sprite test cheat (Free $6CEE-$6E74)
%patch $7679 $EB $12

Keen 6

#Disable sprite test cheat (Free $6B08-$6C8E)
%patch $7499 $EB $12


Keen Dreams style level entry window -380 bytes

This patch changes the Keen Galaxy level entry window so that it appears identical to the one used in Keen Dreams; lacking Keen's thumbs up sequence and instead displaying a progress bar. This frees up the entire level entry window code used by the games.

It is also possible to simply disable the window entirely; in this case space is saved not only at the level entry window code, but also the 'alternate', Keen Dreams style, code. (This exact patch is provided in the 'o disabling' section of the page.)

Keen Dreams style level loading box

#Keen Dreams style level loading box -Keen 4: Free 380 bytes at $62AD
%patch $38FF $EB $22

#Keen Dreams style level loading box -Keen 5: Free 380 bytes at $6268
%patch $38FF $EB $22

#Keen Dreams style level loading box -Keen 6: Free 380 bytes at $62AD
%patch $38E0 $EB $22

Disable level entry window

#Disable level entry window -Keen 4: Free 379 bytes at $62AE
%patch $62AD $CB

#Disable level entry window -Keen 5: Free 379 bytes at $6269
%patch $6268 $CB

#Disable level entry window -Keen 6: Free 379 bytes at $607E
%patch $607D $CB


Disable F10-Y cheat -360 bytes

These patches disable the F10 Y cheat entirely. While only a few bytes is freed in the cheat code, the entire window code (Contained elsewhere) is also freed.

Keen 4

#Disable F10-Y (Free $77FC-780D, $7243-$73AB)
%patch $77FA $EB $12

Keen 5

#Disable F10-Y (Free $77B1-77C2, $71F8-$7360)
%patch $77AF $EB $12

Keen 6

#Disable F10-Y (Free $75D1-75E2, $7012-$717A)
%patch $75CF $EB $12


Disable F10-V and F10-S -245 bytes

As well as disabling the F10 V cheat, this patch disables the F10-S cheat. This is slightly more impactful that disabling one cheat.

Keen 4

#Disable F10-S AND F10-V (Free $766B-7760)
%patch $7668 $E9 $00F6W

Keen 5

#Disable F10-S AND F10-V (Free $761D-7712)
%patch $761D $E9 $00F6W

Keen 6

#Disable F10-S AND F10-V (Free $7440-7535)
%patch $743D $E9 $00F6W


Disable F10-B cheat -148 bytes

This patch disables the F10 B cheat entirely.

Keen 4

#Disable F10-B (Frees $73B7-$744B)
%patch $73B4 $E9 $0095W

Keen 5

#Disable F10-B (Frees $736C-$7400)
%patch $7369 $E9 $0095W

Keen 6

#Disable F10-B (Frees $7186-$721A)
%patch $7183 $E9 $0095W


Disable F10-V -133 bytes

This patch disables the F10 V cheat entirely. As a relatively pointless cheat on modern systems it should not be missed.

Keen 4

#Disable Add VBLs (Free $76DB-$7760)
%patch $76D8 $E9 $0086W

Keen 5

#Disable Add VBLs (Free $7690-$7715)
%patch $768D $E9 $0086W

Keen 6

#Disable Add VBLs (Free $74B0-$7535)
%patch $74AD $E9 $0086W


Disable F10-C cheat -131 bytes

This patch disables the F10 C cheat completely. It frees up only a small amount of space in the cheat code, but a significant amount in the cheat's unique window.

Keen 4

#Count objects cheat disabled (Free $6BDB-$6C5E)
%patch $744C $EB $19

Keen 5

#Count objects cheat disabled (Free $6B90-$6C13)
%patch $7401 $EB $19

Keen 6

#Count objects cheat disabled (Free $69AA-$6A2D)
%patch $721B $EB $19


Disable F10-N cheat -123 bytes

This patch disables the F10 N cheat entirely.

Keen 4

#Disable F10-N (Free $75EC-7667)
%patch $75EA $EB $63

Keen 4

#Disable F10-N (Free $75A1-7603)
%patch $759F $EB $63

Keen 6

#Disable F10-N (Free $73C1-7423)
%patch $73BF $EB $63


Don't show COMMANDER and\or KEEN images -95\117 bytes

These patches allow a modder to selectively remove one or both of the background terminator images from the sequence. This also frees up a little patch space. Note however that both images will still appear in the 'zooming out' section at the end of the sequence.

Keen 4

#Don't display 'KEEN' (Free $4F3F-$4F9E)
%patch $4F3E $60

#Don't display 'COMMANDER' (Free $4FFF-$5074)
%patch $4FFC $E9 $00ACW


Disable B-A-T cheat -116 bytes

This patch completely disables the B A T cheat. It frees a few bytes in the main code but more in the cheat code itself (Located elsewhere.)

Keen 4

#Disable the B A T cheat (Frees $7830-$78A4)
%patch $7A99 $EB $17

Keen 5

#Disable the B A T cheat (Frees $77E5 - $785F)
%patch $7A54 $EB $17

Keen 6

#Disable the B A T cheat (Frees $7605 - $7679)
%patch $782D $EB $17


Disable Boss cheat -87 bytes

The following patches disable the boss cheat entirely.

Disable F9 cheat

#Disable F9 cheat - Keen 4 (Frees $7A3C-$7A98)
%patch $7A3B $EB $5C

#Disable F9 cheat - Keen 5 (Frees $79F7 -$7A4E)
%patch $79F6 $EB $5C

#Disable F9 cheat - Keen 6 (Frees $77D0 -$7827)
%patch $77CF $EB $5C


Disable F10-S cheat -83 bytes

This patch disables the F10 S cheat entirely.

Keen 4

#Disable F10-S (Free $7670-76C3)
%patch $7668 $EB $5A

Keen 5

#Disable F10-S (Free $7670-76C3)
%patch $761D $EB $5A

Keen 6

#Disable F10-S
%patch $743D $EB $5A

Keen Dreams

#Disable F10-S
%patch $38A7 $EB $4E