Patch:F10 Y Cheat

From KeenWiki
Jump to: navigation, search

The F10 + Y or show secrets cheat in Keen Galaxy overlays foreground tiles with other tiles from the tileset which should show how the tiles block Keen, including sides and top\bottom slopes. The end result of this is that secret passages become visible. In practice this only works in Keen 5 since in Keen 4\6 the cheat isn't properly implemented and the tiles used for overlaying are either used by other graphics or absent (Resulting in gibberish being displayed.) The tiles used are always cached so they can be displayed in-level, this takes up memory. The cheat can be made to work in mods in Keen 4/6 at the sacrifice of the first row of the tileset. The text displayed as the tile graphics are overlaid is somewhat idiosyncratic.


These patches control the window size and the text displayed. (See Patch:Text patches.)

Keen 4

#Show tile properties window
%patch $724E [$0003W] #Window height
%patch $7252 [$0018W] #Window width
%patch $725E [$04A4W] #Text called from

%patch $2F314 "WORKING" $00

Keen 5

#Show tile properties window
%patch $7203 [$0003W] #Window height
%patch $7207 [$0018W] #Window width
%patch $7213 [$0420W] #Text called from

%patch $30760 "WORKING" $00

Keen 6

#Show tile properties window
%patch $701D [$0003W] #Height
%patch $7021 [$0018W] #Width
%patch $702D [$041CW] #Text called from

%patch $3114C "WORKING" $00

Key that activates cheat

This patch alters what key activates the level warp cheat. (See Patch:Scancodes.) By default this is 'y' Setting this to $C647, $BCAF or $C7D5 (in Keen 4, Keen 5 and Keen 6 respectively.) will disable the cheat .

Keen 4

#F10 + Y key
%patch $77FC {$C671W}

Keen 5

#F10 + Y key
%patch $77B1 {$BCD9W}

Keen 6

#F10 + Y key
%patch $75D1 {$C7FFW}


These patches disable the F10 Y cheat entirely. Notice that aside from the space freed shown here, the entire tile display space is also freed up.

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

Tiles used

It is possible to alter what tiles are used by the F10 + Y cheat. There are four different sets used, the first two are each eight tiles long and cover the different top and bottom slopes of tiles. The second two are one tile in size and cover the left and right blocking edges of tiles. Combined this is almost one entire 18 tile row of tileset. Notice that tiles are cached before they are used; the cache value is the tile value plus the value of the first tile chunk. (This is complex, but simply increase\decrease the cache values by the same amount you alter your lowest tile value. And remember, all your tiles should be in on place, right after each other.)

Keen 4

#Tiles used by F10 + Y
%patch $726F [$0787W]	#Start of tiles to cache
%patch $727F [$0797W]	#End of tiles to cache
%patch $72AB [$006BW]	#Yellow top (Inc next 7)
%patch $72CB [$0073W]	#Red-bottom (Inc next 7)
%patch $732F [$0072W]	#Yellow-left
%patch $7393 [$007AW]	#Red-right

Keen 5

#Tiles used by F10 + Y
%patch $7224 [$0816W]	#Start of tiles to cache
%patch $7234 [$0826W]	#End of tiles to cache
%patch $7260 [$006BW]	#Yellow top (Inc next 7)
%patch $7280 [$0073W]	#Red-bottom (Inc next 7)
%patch $72E4 [$0072W]	#Yellow-left
%patch $7348 [$007AW]	#Red-right

Keen 6

#Tiles used by F10 + Y
%patch $703E [$0B6AW]	#Start of tiles to cache
%patch $704E [$0B7AW]	#End of tiles to cache
%patch $707A [$006BW]	#Yellow top (Inc next 7)
%patch $709A [$0073W]	#Red-bottom (Inc next 7)
%patch $70FE [$0072W]	#Yellow-left
%patch $7162 [$007AW]	#Red-right

WallDebug errors

These are tileinfo errors that occur when the game encounters a tile that has values for either its left or right sides that are not 0 or 1. (Pass or block.) It will occur when the F10 + Y cheat is used in a level containing a problematic tile. The number of the first tile that has this problem will be given with the error, allowing quick identification and fixing.

It is possible for this to occur via bugs in the program used to edit tileinfo or by a patch being placed within the tileinfo segment of the game. In this case it will always appear in a similar situation and depend on specific tile(s). If a nonsensical number (Say 0 or a negative number.) is given as the affected tile, or the tile number keeps changing randomly or is not given at all, then it is possible the bug is a 'scrambling error' caused by a patch in another area of code becoming scrambled and accidentally referring to the error code. In this case testing of recent patches may solve the problem. See also: Game errors.

WallDebug errors

#Keen 4:
%patch $72EC  [$04ACW] #Text called from
%patch $2F31C "WallDebug: East wall other than 1:" $00

%patch $7350  [$04CFW] #Text called from
%patch $2F33F "WallDebug: West wall other than 1:" $00

#Keen 5:
%patch $72A1  [$0428W] #Text called from
%patch $30768 "WallDebug: East wall other than 1:" $00

%patch $7305  [$044BW] #Text called from
%patch $3078B "WallDebug: West wall other than 1:" $00

#Keen 6:
%patch $70BB  [$0424W] #Text called from
%patch $31154 "WallDebug: East wall other than 1:" $00

%patch $711F  [$0447W] #Text called from
%patch $31177 "WallDebug: West wall other than 1:" $00

Remove WallDebug error messages

Errant tiles are unlikely to appear in a Keen game; they cannot appear in a released game that has been checked for them and modern tileinfo tools are stable enough to avoid the production of bugs. The error also occurs only when the F10 + Y cheat is run so is not detrimental to gameplay.

As such it is possible to simply remove the error messages; an errant tile should behave exactly as it would if blocking, though using the F10 + Y cheat will cause an unexpected tile to appear over the errant tile instead of the usual blocking tile. This may be considered far less damaging than having the game crash. it also frees some space.

In the more complex 'disable both reports' patch the two blue values are the tiles used for the right\left side markers.

Remove WallDebug error reports

#Keen 4: Disable individual reports
%patch $72E6 $EB $40 #Right (Frees $72E8-$7327)
%patch $734A $EB $40 #Left (Frees $734C-$738B)

#Keen 4: Disable both reports (Frees $7328-$73AB)
%patch $7286 $0093W
%patch $7294 $0084W
%patch $72E6 $0B $FF $74 $0E $8B $C7 $05 [$0072W]  $50 $56 $0E $E8 $FEECW  $83
             $C4 $04 $8E $06 $A1 $C8 $26 $8A $84 $DE $2D $B4 $00 $25 $07 $00
             $8B $F8 $0B $FF $74 $0E $8B $C7 $05 [$007AW]  $50 $56 $0E $E8 $FECAW
                 $83 $C4 $04 $46 $81 $FE $64 $0B $7D $03 $E9 $FF64W  $5F $5E
             $5D $CB

Remove WallDebug error reports

#Keen 5: Disable individual reports
%patch $729B $EB $40 #Right (Frees $729D-$72DC)
%patch $72FF $EB $40 #Left (Frees $7301-$7340)

Remove WallDebug error reports

#Keen 6: Disable individual reports
%patch $72E6 $EB $40 #Right (Frees $72E8-$7327)
%patch $734A $EB $40 #Left (Frees $734C-$738B)