<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://keenwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Levellass</id>
	<title>KeenWiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://keenwiki.shikadi.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Levellass"/>
	<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/wiki/Special:Contributions/Levellass"/>
	<updated>2026-05-30T10:42:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Levels_(Vorticons)&amp;diff=47478</id>
		<title>Patch:Levels (Vorticons)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Levels_(Vorticons)&amp;diff=47478"/>
		<updated>2023-10-07T06:57:23Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Format tweak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page deals with patches relating to level in Keen Vorticons. It does not cover all patches relating to the [[Patch:Map|map level.]] For patches relating to the cities that need to be saved in [[Keen 2]] see [[Patch:Cities]]. Other patches relating to levels can be found at [[Patch:Levels]]. See also [[Patch:Done markers]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Level format and editing ==&lt;br /&gt;
&lt;br /&gt;
In Keen Vorticons levels are individual external files loaded by the game as needed. There are a number of editors available of which perhaps the most advanced is [[Mindbelt]]. Playing new levels does not require any patching.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 32 levels ==&lt;br /&gt;
&lt;br /&gt;
In Keen Vorticons it is possible to use levels between 30-100 on the map, though only some work and none will be done properly (They will be replayable after exit.) It is also possible that they may be unstable and\or overwrite important stuff. To properly set up levels there is a patch that fits 32 level into the space for the default 16. This affects the [[Patch:Item bytes|item bytes]] of these levels, each becomes 1 byte long. (So level 1 in Keen 1 is still $AAA6W, but level 2 is $AAA7W and so on.)&lt;br /&gt;
&lt;br /&gt;
Changing the &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;$01&amp;lt;/font&amp;gt; to &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;$00&amp;lt;/font&amp;gt; will allow Keen to replay all the levels as many times as he wants. [[Patch:Levels#Infinite_replays| (See below.)]] The &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;$20&amp;lt;/font&amp;gt; is how many levels are available, the maximum using this patch is 32, but any number less than this can also be used.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#32 levels:&lt;br /&gt;
#Let Keen enter levels if these values are 0&lt;br /&gt;
%patch $7D3A  $90 $90 $80 $BF {$AAA6W}  $00&lt;br /&gt;
%patch $7FCA  $90 $90 $80 $BF {$AAA5W}  $00&lt;br /&gt;
#When starting a new game, make all 32 levels not done&lt;br /&gt;
%patch $9065  $90 $90 $C6 $87 {$AAA6W}  $00 $90&lt;br /&gt;
%patch $9073  [$20]&lt;br /&gt;
#Change things when marking a level as done&lt;br /&gt;
%patch $8013  $90 $90 $C6 $87 {$AAA5W}  [$01] $90&lt;br /&gt;
%patch $7E4B  [$20]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#32 levels:&lt;br /&gt;
#Let Keen enter levels if these values are 0&lt;br /&gt;
%patch $8146  $90 $90 $80 $BF {$9ABCW}  $00&lt;br /&gt;
%patch $83C9  $90 $90 $80 $BF {$9ABBW}  $00&lt;br /&gt;
#When starting a new game, make all 32 levels not done&lt;br /&gt;
%patch $8AF9  $90 $90 $C6 $87 {$9ABCW}  $00 $90&lt;br /&gt;
%patch $8B07  [$20]&lt;br /&gt;
#Change things when marking a level as done&lt;br /&gt;
%patch $8412  $90 $90 $C6 $87 {$9ABBW}  [$01] $90&lt;br /&gt;
%patch $8253  [$20]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#32 levels:&lt;br /&gt;
#Let Keen enter levels if these values are 0&lt;br /&gt;
%patch $8AE2  $90 $90 $80 $BF {$9D26W}  $00&lt;br /&gt;
%patch $8D9A  $90 $90 $80 $BF {$9D25W}  $00&lt;br /&gt;
#When starting a new game, make all 32 levels not done&lt;br /&gt;
%patch $9944  $90 $90 $C6 $87 {$9D26W}  $00 $90&lt;br /&gt;
%patch $994F  [$20]&lt;br /&gt;
#Change things when marking a level as done&lt;br /&gt;
%patch $8DE1  $90 $90 $C6 $87 {$9D25W}  [$01] $90&lt;br /&gt;
%patch $8BF9  [$20]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Infinite replays ==&lt;br /&gt;
&lt;br /&gt;
This allows a player to play the level as many times as they want. The level is not marked as completed when Keen exits it. If the Vorticons 32 level patch is being used this must be after it. (It can be built into that patch, [[Patch:Levels_(Vorticons)#Extra_levels| see above.)]]  Use only one of the possibilities given at a time, they are mutually exclusive.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Infinite replays of all levels:&lt;br /&gt;
%patch $8019 $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Infinite replays of all levels:&lt;br /&gt;
%patch $8DE7 $00&lt;br /&gt;
&lt;br /&gt;
#Only levels [$04] and below get marked as done, others are infinite replay&lt;br /&gt;
%patch $8BF9 [$04]&lt;br /&gt;
%patch $8DA1 $90 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Infinite replays of certain levels ==&lt;br /&gt;
&lt;br /&gt;
This patch allows the player to replay any level that cannot produce a [[Patch:Done markers|DONE marker.]] This can be done in several ways. The first is to make its entrance out of 2 or 3 squares, the second is to place a single level entrance square in the top left of the map level. Both will prevent a DONE marker being produced when the level is completed so the player can replay it. This patch is completely compatible with the 32 level patch.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Can replay any level that doesn&#039;t make a DONE marker:&lt;br /&gt;
%patch $7FD1 $90 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Can replay any level that doesn&#039;t make a DONE marker:&lt;br /&gt;
%patch $83D0 $90 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Can replay any level that doesn&#039;t make a DONE marker:&lt;br /&gt;
%patch $8DA1 $90 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Complete levels to win ==&lt;br /&gt;
&lt;br /&gt;
These patches allow Keen to win the game only if he completes either a specific level or a specific number of levels. (For Keen 3 this is level 16.) For the Keen 1 &#039;level 16 to win&#039; patch you will need to see [[Patch:Item bytes|item bytes]]. See also [[Patch:Mangling Machine]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Complete [x+1] levels to win:&lt;br /&gt;
#SIDE EFFECT: Ship parts don&#039;t matter&lt;br /&gt;
%patch $8020 $83 $BF {$AAA6W} [$0x] $75 $1E $E8 $62 $01 $EB $29&lt;br /&gt;
&lt;br /&gt;
#Complete the game when level 16 is done:&lt;br /&gt;
%patch $8022 {$AAC4W} $00 $74 #The byte C4 sets a win condition to level 16, level&lt;br /&gt;
%patch $8029 {$AAC4W} $00 $74 #15 is C2, etc. For the 32 levels patch use B5 with&lt;br /&gt;
%patch $8030 {$AAC4W} $00 $74 #level 15 as B4, etc. This patch means you can have&lt;br /&gt;
%patch $8037 {$AAC4W} $00 $74 #up to four levels as winning conditions&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Only win when exiting level [$0x]&lt;br /&gt;
%patch $8436  $83 $3E $3C $80 [$0x] $90 $90 $90 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Only win when exiting level [$xx]&lt;br /&gt;
%patch $8DF2 [$00xxW] $75 #Win game&lt;br /&gt;
%patch $85D2 [$xx] $75    #MM text sequence&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Everything in levels is pulled sideways ==&lt;br /&gt;
&lt;br /&gt;
This patch creates a &#039;breeze&#039; in levels; a sort of sideways gravity that pulls everything sideways all the time. Note that this patch will be incompatible with any other patches that use the &amp;lt;tt&amp;gt;$55EF&amp;lt;/tt&amp;gt; line to free up space, such as the [[Patch:Keen_shooting_(Vorticons)#Control_Keen.27s_shot_angle_with_up_and_down_arrow_keys|&#039;shoot up\down patch&#039;]], so check your patchfile before adding this patch.&lt;br /&gt;
&lt;br /&gt;
The value marked in blue is the &#039;breeze&#039;, set here to very low rightwards. Negative values will pull things left.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Levels have a breeze (Pull ALL sprites and Keen in one direction steadily)&lt;br /&gt;
%patch $55EF $EB $4A&lt;br /&gt;
%patch $4D1E $E9 $08D0W&lt;br /&gt;
%patch $55F1 $B8 $0000W $A3 $823EW  $B8 [$0040W]   $A3 $823CW   $33 $C0 $E9 $F724W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screen automatically scrolls from left to right ==&lt;br /&gt;
&lt;br /&gt;
This patch makes the screen scroll left or right, killing Keen when he touches the left edge. The speed of the scrolling can be changed. As a side effect levels &#039;loop&#039;; there is not left or right level edge, instead going off the right level &#039;edge&#039; will make Keen appear on the left &#039;edge&#039; of the level. (However the player will not notice the transition, it is seamless.) The camera will also not follow the player.&lt;br /&gt;
&lt;br /&gt;
Keen can also not pass the right edge of the screen, though he may fall or climb as much as he wants. The right edge is the first blue value in the patch below. (It is set here to the visible edge of the screen, but this is not necessary.)&lt;br /&gt;
&lt;br /&gt;
The remaining blue variables control other aspects oft he game. The right side pushback is how much the right side of the screen pushes Keen back when he tries to leave the right side of the screen. This should be at &#039;&#039;least&#039;&#039; $10 more than the scrolling speed. The left side push forward is similar, but should be no more than given here ($40) and should be made smaller if it starts pushing Keen through solid tiles.&lt;br /&gt;
&lt;br /&gt;
The scrolling speed controls how fast and in what direction the screen scrolls. (It is advised you stick with a right scrolling screen.) Finally the two breeze strengths do what they do in the above patch, move objects in the level in a certain direction. The first breeze is positive (right) and the second negative and &#039;&#039;equal&#039;&#039; (and left.) In this patch they are set to be equal to the scroll speed, but you can also make them zero.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Right screen boundary (22 tiles)&lt;br /&gt;
%patch $800 $B8 [$0016W]&lt;br /&gt;
&lt;br /&gt;
#add boundary checking to pogo ground&lt;br /&gt;
%patch $40E7 $E8 $7B $F2&lt;br /&gt;
&lt;br /&gt;
#update keen movement boundaries&lt;br /&gt;
%patch $3368                                 $66 $A1 $2C $82 $66 $3B $06 $4A&lt;br /&gt;
             $56 $7F $21 $C7 $06 $3C $82 [$0210W]  $C7 $06 $40 $82 $30 $00 $E8 #Right side pushback&lt;br /&gt;
             $15 $F9 $A9 $04 $00 $74 $0D $33 $C0 $A3 $40 $82 $A3 $42 $82 $E8&lt;br /&gt;
             $1A $0F $EB $31 $66 $A1 $34 $82 $66 $3B $06 $AC $5D $7C $26 $C7&lt;br /&gt;
             $06 $3C $82 $A0 $FF $66 $A1 $AC $5D $66 $A3 $34 $82 $EB $16&lt;br /&gt;
&lt;br /&gt;
#Auto screen scroll&lt;br /&gt;
%patch $3458                                 $66 $A1 $D0 $6E $66 [$0040W]  $00 #Left push forward&lt;br /&gt;
             $00 $7D $15 $66 $B8 [$0200W]  $00 $00 $66 $01 $06 $D0 $6E $66 $01 #Scroll speed&lt;br /&gt;
             $06 $4A $56 $66 $01 $06 $AC $5D $1E $68 $20 $82 $1E $68 $DA $6E&lt;br /&gt;
             $B9 $36 $00 $E8 $15 $AE $C7 $06 $3C $82 [$0200W]  $E8 $08 $F8 $A9 #Right breeze strength&lt;br /&gt;
             $04 $00 $74 $06 $C7 $06 $3C $82 [$FE00W]  $A1 $3C $82 $66 $98 $66 #Left breeze strength&lt;br /&gt;
             $01 $06 $24 $82 $E8 $94 $F5 $66 $A1 $2C $82 $66 $05 $80 $00 $00&lt;br /&gt;
             $00 $66 $3B $06 $D0 $6E $7D $0B $33 $C0 $A3 $40 $82 $A3 $42 $82&lt;br /&gt;
             $E8 $E9 $0D $1E $68 $DA $6E $1E $68 $20 $82 $B9 $36 $00 $E8 $CA&lt;br /&gt;
             $AD $EB $1F&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Levels|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Status_Window_(Vorticons)&amp;diff=47477</id>
		<title>Patch:Status Window (Vorticons)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Status_Window_(Vorticons)&amp;diff=47477"/>
		<updated>2023-10-07T06:45:17Z</updated>

		<summary type="html">&lt;p&gt;Levellass: COORECT an added patch. Must be rusty.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The status window in Keen Vorticons appears when the spacebar is pressed during normal gameplay. It displays what Keen has, keys, shots, score and suchlike. This page covers patches relating to this window, divided into two sections. The first section contains patches relating to the window&#039;s behavior, what causes it to appear and what it does. The second section contains patches that relate to what the window looks like, its construction and content.&lt;br /&gt;
&lt;br /&gt;
Patches for other status windows can be found at [[Patch:Status_Window_(Galaxy)]] and [[Patch:Status_Window_(Dreams)]]. These patches also require some knowledge of [[Patch:Game stats]] and [[Patch:Text patches]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Disable status window =&lt;br /&gt;
&lt;br /&gt;
This patch completely disables the status window, meaning it cannot be called during gameplay. The map is treated differently from levels, meaning it is possible to disable the status window in only one of these.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable status window&lt;br /&gt;
%patch $124F $5D $C3 #In-level&lt;br /&gt;
%patch $7FA3 $EB $08 #On map&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $1209  $5D $C3 #In-level&lt;br /&gt;
%patch $83A0  $EB $08 #On map&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $11AD  $5D $C3 #In-level&lt;br /&gt;
%patch $8D6C  $EB $08 #On map&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Status window behavior =&lt;br /&gt;
&lt;br /&gt;
This section contains patches that alter how the status window behaves, what causes it to appear and what it does.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change controls ==&lt;br /&gt;
&lt;br /&gt;
These patches change what key activates the status screen. By default this is the spacebar. in the example here it is changed to enter. Using these patches requires some knowledge of [[Patch:Scancodes]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $1251  [$5048W]&lt;br /&gt;
%patch $7FA3  [$5048W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $120B  [$5024W]&lt;br /&gt;
%patch $83A2  [$5024W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $11AF  [$5274W]&lt;br /&gt;
%patch $8D6E  [$5274W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Galaxy style status window controls ===&lt;br /&gt;
&lt;br /&gt;
This changes the controls of the game to be more like Keen Galaxy. Spacebar shoots, enter brings up the status screen. See #http://andy.durdin.net/keen/modding/viewtopic.php?t=433 for the original topic. In essence this is a longer version of the above patches, with extra lines altering Keen&#039;s shot keys.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the controls to Space, shoot; Enter, status. &lt;br /&gt;
%patch $1251  [$5048W]&lt;br /&gt;
%patch $7FA3  [$5048W]&lt;br /&gt;
%patch $3B23  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3C4E  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3DB9  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3DCC  $90 $90 &lt;br /&gt;
%patch $3E6D  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3FFC  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $40AA  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the controls to: Space, shoot; Enter, status.&lt;br /&gt;
%patch $120B  [$5024W]&lt;br /&gt;
%patch $83A2  [$5024W]&lt;br /&gt;
%patch $6965  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6A90  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6BFB  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6C0E  $90 $90 &lt;br /&gt;
%patch $6CAF  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6E3E  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6EEC  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the controls to: Space, shoot; Enter, status.&lt;br /&gt;
%patch $11AF  [$5274W]&lt;br /&gt;
%patch $8D6E  [$5274W]&lt;br /&gt;
%patch $71C9  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $72FA  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $7461  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $7474  $90 $90 &lt;br /&gt;
%patch $7515  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $76A1  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $7750  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Status window construction and appearance =&lt;br /&gt;
&lt;br /&gt;
== Status screen appearance ==&lt;br /&gt;
&lt;br /&gt;
The status screen is at heart a text window with 16x16 tiles drawn over it at certain positions, followed by variables like the score. &lt;br /&gt;
&lt;br /&gt;
For text, a lot of &#039;short lines&#039; (separators) little more than one character long are used, as well as some &#039;long lines&#039; with actual labels on them. Short lines are often shifted across a few characters.&lt;br /&gt;
&lt;br /&gt;
There is also a &#039;big versatile status screen patch&#039; that allows total customization of the Keen 1 status window. It is the last entry in this section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Status box size:&lt;br /&gt;
%patch $0E53 [$000CW] #Height (In lines of text)&lt;br /&gt;
%patch $0E57 [$001CW] #width (In letters)&lt;br /&gt;
&lt;br /&gt;
#Text read from&lt;br /&gt;
%patch $0E6B [$1E02W] #First line (SCORE...EXTRA KEEN AT)&lt;br /&gt;
%patch $0E7C [$1E20W] #Second line - Score\EKA separator&lt;br /&gt;
%patch $0E85 [$1E23W] #Third line (KEENS...SHIP)&lt;br /&gt;
%patch $0E96 [$1E41W] #Fourth line - Lives\Parts separator 1&lt;br /&gt;
%patch $0EA7 [$1E44W] #Fifth line - Lives\Parts separator 2&lt;br /&gt;
%patch $0EB8 [$1E47W] #Sixth line - Lives\Parts separator 3&lt;br /&gt;
%patch $0EC1 [$1E4AW] #Seventh line (RAYGUN...KEYS)&lt;br /&gt;
%patch $0ED2 [$1E68W] #Eighth line - Raygun\Pogo separator 1&lt;br /&gt;
%patch $0EE0 [$1E6AW] #Eighth line - Pogo\Keycard separator 1&lt;br /&gt;
%patch $0EF1 [$1E6DW] #Ninth line -Raygun\Pogo separator 2&lt;br /&gt;
%patch $0EFF [$1E6FW] #Ninth line -Pogo\Keycard separator 2&lt;br /&gt;
%patch $0F10 [$1E72W] #Tenth line - Raygun\Pogo separator 3&lt;br /&gt;
%patch $0F1E [$1E74W] #Tenth line - Pogo\Keycard separator 3&lt;br /&gt;
%patch $0F27 [$1E77W] #Eleventh line (CHARGE)&lt;br /&gt;
%patch $0F35 [$1E81W] #Eleventh line - Pogo\Keycard separator 4&lt;br /&gt;
%patch $0F46 [$1E84W] #Twelfth line - Charge\Pogo separator&lt;br /&gt;
%patch $0F54 [$1E86W] #Twelfth line - Pogo\Keycard separator 5&lt;br /&gt;
%patch $0F5D [$1E89W] #Thirteenth line (PRESS A KEY)&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $14E52 &amp;quot;    SCORE     EXTRA KEEN AT &amp;quot; $0A $00&lt;br /&gt;
%patch $14E70 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E73 &amp;quot;    KEENS       SHIP PARTS  &amp;quot; $0A $00&lt;br /&gt;
%patch $14E91 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E94 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E97 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E9A &amp;quot; RAYGUN   POGO    KEYCARDS  &amp;quot; $0A $00&lt;br /&gt;
%patch $14EB8 &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14EBA &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14EBD &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14EBF &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14EC2 &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14EC4 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14EC7 &amp;quot; CHARGE  &amp;quot;                    $00&lt;br /&gt;
%patch $14ED1 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14ED4 &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14ED6 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14ED9 &amp;quot;     PLEASE PRESS A KEY     &amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Score&lt;br /&gt;
%patch $0F66 [$0A]    #Base to show Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F6F {$AACCW} #Variable (Low)&lt;br /&gt;
%patch $0F73 {$AACAW} #Variable (High)&lt;br /&gt;
&lt;br /&gt;
#Extra Keen score&lt;br /&gt;
%patch $0FA0 [$0A]    #Base to show Extra Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0FA8 {$6EC4W} #Variable (Low)&lt;br /&gt;
%patch $0FAC {$6EC2W} #Variable (High)&lt;br /&gt;
%patch $0FB0 {$4E20W} #Minimum EKA score&lt;br /&gt;
&lt;br /&gt;
#Lives&lt;br /&gt;
%patch $1001 {$AAC6W}  #Lives variable&lt;br /&gt;
%patch $0FE5 [$0003W]  #Vertical position of lives&lt;br /&gt;
%patch $0FF0 $90 $90 #Lives spaced 8 pixels apart, not 16&lt;br /&gt;
%patch $1007 [$06]     #Maximum number of lives to show&lt;br /&gt;
%patch $0FDE $EB $1E #Don&#039;t show Lives&lt;br /&gt;
%patch $1003 $90 $90 #Always show maximum number of Keens no matter how many lives Keen has&lt;br /&gt;
&lt;br /&gt;
#Raygun tile&lt;br /&gt;
%patch $1166 [$019EW] #Tile&lt;br /&gt;
%patch $116D [$0007W] #V position, squares&lt;br /&gt;
%patch $1176 [$0004W] #V position, pixels&lt;br /&gt;
%patch $117C [$0003W] #H position&lt;br /&gt;
&lt;br /&gt;
#Shots counter&lt;br /&gt;
%patch $1198 {$AAC8W} #Variable&lt;br /&gt;
%patch $1188 [$0003W] #H position&lt;br /&gt;
%patch $1191 [$000BW] #V position&lt;br /&gt;
&lt;br /&gt;
#Pogo tile&lt;br /&gt;
%patch $11A7 [$019FW] #Tile&lt;br /&gt;
%patch $11AE [$0008W] #V position, squares&lt;br /&gt;
%patch $11B7 [$0004W] #V position, pixels&lt;br /&gt;
%patch $11BD [$000BW] #H position&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change the lives sprite ====&lt;br /&gt;
&lt;br /&gt;
This patch allows the sprite used for lives to be changed. The first blue value is the sprite used * 4. (Here sprite 31 x 4 = 124 = $7B.) The second blue value is the vertical position of the sprites, originally this was 3 but because of he patch it must now be 9 larger (12 or $0C). This patch is incompatible with several of the patches in the above section that alter the lives counter.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the lives sprite&lt;br /&gt;
%patch $0FDE $B8 [$007BW]  $50 $8B $46 $FE $05 [$000CW]  $D1 $E0 $D1 $E0&lt;br /&gt;
             $50 $8B $C7 $D1 $E0 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t show ship parts ====&lt;br /&gt;
&lt;br /&gt;
This patch removes the ship parts from the status window, converting it into more space to show Keen&#039;s lives. The blue variable is how many lives can now be shown in the status window.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t display ship parts&lt;br /&gt;
%patch $100A $E9 $00B9W&lt;br /&gt;
%patch $14E90 $0A $0A $0A $00&lt;br /&gt;
%patch $0E8D $EB $31&lt;br /&gt;
%patch $1007 [$0D]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Status box size:&lt;br /&gt;
%patch $0E53 [$000CW] #Height (In lines of text)&lt;br /&gt;
%patch $0E57 [$001CW] #width (In letters)&lt;br /&gt;
&lt;br /&gt;
#Text read from&lt;br /&gt;
%patch $0E69 [$219CW] #First line (SCORE...EXTRA KEEN AT)&lt;br /&gt;
%patch $0E7A [$21BAW] #Second line&lt;br /&gt;
%patch $0E83 [$21BDW] #Third line (KEENS...PISTOL)&lt;br /&gt;
%patch $0E94 [$21DBW] #Fourth line&lt;br /&gt;
%patch $0EA5 [$21DEW] #Fifth line&lt;br /&gt;
%patch $0EB6 [$21E1W] #Sixth line&lt;br /&gt;
%patch $0EBF [$21E1W] #Seventh line (TARGETS...KEYS)&lt;br /&gt;
%patch $0ED0 [$2202W] #Eighth line&lt;br /&gt;
%patch $0EE1 [$2205W] #Ninth line&lt;br /&gt;
%patch $0EF2 [$2208W] #Tenth line&lt;br /&gt;
%patch $0F03 [$220BW] #Eleventh line&lt;br /&gt;
%patch $0F0C [$220EW] #Twelfth line (PRESS A KEY)&lt;br /&gt;
%patch $10A4 [$222BW] #London&lt;br /&gt;
%patch $10C0 [$2232W] #Cairo&lt;br /&gt;
%patch $10DC [$2238W] #Sydney&lt;br /&gt;
%patch $10F8 [$223FW] #New York&lt;br /&gt;
%patch $1118 [$2248W] #Paris&lt;br /&gt;
%patch $1138 [$224EW] #Rome&lt;br /&gt;
%patch $1158 [$2253W] #Moscow&lt;br /&gt;
%patch $1178 [$225AW] #Washington&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $1991C &amp;quot;    SCORE     EXTRA KEEN AT &amp;quot; $0A $00&lt;br /&gt;
%patch $1993A &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1993D &amp;quot;    KEENS            PISTOL &amp;quot; $0A $00&lt;br /&gt;
%patch $1995B &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1995E &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19961 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19964 &amp;quot;   TARGETS SAVED      KEYS  &amp;quot; $0A $00&lt;br /&gt;
%patch $19982 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19985 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19988 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1998B &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1998E &amp;quot;     PLEASE PRESS A KEY     &amp;quot; $0A $00&lt;br /&gt;
%patch $199AB &amp;quot;London&amp;quot; $00&lt;br /&gt;
%patch $199B2 &amp;quot;Cairo&amp;quot; $00&lt;br /&gt;
%patch $199B8 &amp;quot;Sydney&amp;quot; $00&lt;br /&gt;
%patch $199BF &amp;quot;New York&amp;quot; $00&lt;br /&gt;
%patch $199C8 &amp;quot;Paris&amp;quot; $00&lt;br /&gt;
%patch $199CE &amp;quot;Rome&amp;quot; $00&lt;br /&gt;
%patch $199D3 &amp;quot;Moscow&amp;quot; $00&lt;br /&gt;
%patch $199DA &amp;quot;Wash D.C.&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#H position of separating lines (Short lines)&lt;br /&gt;
%patch $0E74 [$0A] #SCORE-EXTRA square&lt;br /&gt;
%patch $0E8E [$13] #KEENS-PISTOL separator 1&lt;br /&gt;
%patch $0E9F [$13] #KEENS-PISTOL separator 2&lt;br /&gt;
%patch $0EB0 [$13] #KEENS-PISTOL separator 3&lt;br /&gt;
%patch $0ECA [$13] #TARGETS-KEYS separator 1&lt;br /&gt;
%patch $0ED8 [$13] #TARGETS-KEYS separator 2&lt;br /&gt;
%patch $0EEC [$13] #TARGETS-KEYS separator 3&lt;br /&gt;
%patch $0EFD [$13] #TARGETS-KEYS separator 4&lt;br /&gt;
&lt;br /&gt;
#Score&lt;br /&gt;
%patch $0F15 [$0A]    #Base to show Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F1E {$9AE2W} #Variable (Low)&lt;br /&gt;
%patch $0F22 {$9AE0W} #Variable (High)&lt;br /&gt;
&lt;br /&gt;
#Extra Keen score&lt;br /&gt;
%patch $0F4E [$0A]    #Base to show Extra Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F56 {$6EA0W} #Variable (Low)&lt;br /&gt;
%patch $0F5A {$6E9EW} #Variable (High)&lt;br /&gt;
%patch $0F5E {$4E20W} #Minimum EKA score&lt;br /&gt;
&lt;br /&gt;
#Lives&lt;br /&gt;
%patch $0FB7 {$9ADCW}  #Lives variable&lt;br /&gt;
%patch $0FBC [$0009W]  #Maximum number of lives to show&lt;br /&gt;
%patch $0F8B [$0000W]  #Hide x lives from START of lives (None hidden by default)&lt;br /&gt;
%patch $0F95 [$0003W]  #Vertical position of lives&lt;br /&gt;
%patch $0FA1 $90 $90 #Lives spaced 8 pixels apart, not 16&lt;br /&gt;
%patch $0F8F $EB $1E #Don&#039;t show Lives&lt;br /&gt;
%patch $0FB9 $90 $90 #Always show maximum number of Keens no matter how many lives Keen has&lt;br /&gt;
&lt;br /&gt;
#Raygun tile&lt;br /&gt;
%patch $0FC1 [$019EW] #Tile&lt;br /&gt;
%patch $0FC7 [$0003W] #V position, squares&lt;br /&gt;
%patch $0FD0 [$0004W] #V position, pixels&lt;br /&gt;
%patch $0FD6 [$0015W] #H position&lt;br /&gt;
&lt;br /&gt;
#Shots&lt;br /&gt;
%patch $0FE2 [$0018W] #H position&lt;br /&gt;
%patch $0FEA [$0004W] #V position&lt;br /&gt;
&lt;br /&gt;
#Keycards&lt;br /&gt;
%patch $0FFB [$0015W] #Keycards horizontal position&lt;br /&gt;
%patch $1003 [$0007W] #Keycards vertical position&lt;br /&gt;
%patch $1010 [$01A8W] #Keycard A tile&lt;br /&gt;
%patch $102F [$01A9W] #Keycard B tile&lt;br /&gt;
%patch $1040 [$0003W] #Keycard B horizontal offset (3 squares left of Key A)&lt;br /&gt;
%patch $1051 [$01AAW] #Keycard C tile&lt;br /&gt;
%patch $105E [$0010W] #Keycard C vertical offset (two squares down from Key A)&lt;br /&gt;
%patch $1073 [$01ABW] #Keycard D tile&lt;br /&gt;
%patch $1080 [$0010W] #Keycard D vertical offset(two squares down from Key A)&lt;br /&gt;
%patch $1087 [$0003W] #Keycard D offset offset (3 squares left of Key A)&lt;br /&gt;
%patch $1032 $90 #Don&#039;t show keycard B&lt;br /&gt;
%patch $1054 $90 #Don&#039;t show keycard C&lt;br /&gt;
%patch $1076 $90 #Don&#039;t show keycard D&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change the lives sprite ====&lt;br /&gt;
&lt;br /&gt;
This patch allows the sprite used for lives to be changed. The first blue value is the sprite used * 4. (Here sprite 31 x 4 = 124 = $7B.) The second blue value is the vertical position of the sprites, originally this was 3 but because of he patch it must now be 9 larger (12 or $0C). This patch is incompatible with several of the patches in the above section that alter the lives counter.&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the lives sprite&lt;br /&gt;
%patch $0F8F $B8 [$007BW]  $50 $8B $C7 $05 [$000CW]  $D1 $E0 $D1 $E0&lt;br /&gt;
             $50 $8B $46 $FE $D1 $E0 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Status box size:&lt;br /&gt;
%patch $0EC0 [$000BW] #Height (In lines of text)&lt;br /&gt;
%patch $0EC4 [$001CW] #width (In letters)&lt;br /&gt;
&lt;br /&gt;
#Text read from:&lt;br /&gt;
%patch $0ED5 [$22D4W] #1st line&lt;br /&gt;
%patch $0EE5 [$22F2W]&lt;br /&gt;
%patch $0EED [$22F5W] #3rd&lt;br /&gt;
%patch $0EFD [$2313W]&lt;br /&gt;
%patch $0F0D [$2316W]&lt;br /&gt;
%patch $0F1D [$2319W]&lt;br /&gt;
%patch $0F25 [$231CW] #7th&lt;br /&gt;
%patch $0F35 [$233AW]&lt;br /&gt;
%patch $0F45 [$233DW]&lt;br /&gt;
%patch $0F55 [$2340W]&lt;br /&gt;
%patch $0F5D [$2343W] #11th&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $1BAF4 &amp;quot;    SCORE     EXTRA KEEN AT &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB12 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB15 &amp;quot;    KEENS            PISTOL &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB33 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB36 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB39 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB3C &amp;quot; ANKH TIME      KEY CARDS   &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB5A &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB5D &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB60 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB63 &amp;quot;     PLEASE PRESS A KEY     &amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Horizontal position of some text (In characters)&lt;br /&gt;
%patch $0EDF [$000CW] #2nd line&lt;br /&gt;
%patch $0EF7 [$0013W] #4th line&lt;br /&gt;
%patch $0F07 [$0013W] #5th line&lt;br /&gt;
%patch $0F17 [$0013W] #6th line&lt;br /&gt;
%patch $0F2F [$000BW] #8th&lt;br /&gt;
%patch $0F3F [$000BW] #9th&lt;br /&gt;
%patch $0F4F [$000BW] #10th&lt;br /&gt;
&lt;br /&gt;
#Position of values (Score and suchlike)&lt;br /&gt;
%patch $0F65 [$0A] #Score base (0A = 10 = decimal, $10 =hex, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F86 [$0A] #Score h position&lt;br /&gt;
%patch $102F [$18] #Ammo h position&lt;br /&gt;
%patch $1037 [$04] #Ammo v position&lt;br /&gt;
%patch $1066 [$07] #Ankh time h position&lt;br /&gt;
%patch $106E [$08] #Ankh time v position&lt;br /&gt;
&lt;br /&gt;
#EKA structure&lt;br /&gt;
%patch $0F9C [$0A]    #Extra Keen counter base (like above, $00, don&#039;t show)&lt;br /&gt;
%patch $0FC5 [$1A]    #Extra Keen counter h position&lt;br /&gt;
%patch $0FA4 {$70F0W} #Variable (Low)&lt;br /&gt;
%patch $0FA8 {$70EEW} #Variable (High)&lt;br /&gt;
%patch $0FAC {$4E20W} #Minimum EKA score&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s lives structure&lt;br /&gt;
%patch $100A [$09]     #Maximum number of lives to show&lt;br /&gt;
%patch $0FD7 [$0000W]  #Hide x lives from START of lives (None hidden by default)&lt;br /&gt;
%patch $0FD7 [$00]     #Lives h position (Lives stop at $12, so $0A doesn&#039;t show lives)&lt;br /&gt;
%patch $0FE1 [$0003W]  #Sprite vertical position&lt;br /&gt;
%patch $0FED $90 $90 #Sprites close together (Change spacing of sprites)&lt;br /&gt;
&lt;br /&gt;
#Raygun&lt;br /&gt;
%patch $100E [$00D8W] #Raygun tile&lt;br /&gt;
%patch $1014 [$0003W] #Vertical position (lines)&lt;br /&gt;
%patch $101D [$0004W] #Plus xx pixels&lt;br /&gt;
%patch $1023 [$0015W] #H position&lt;br /&gt;
%patch $103E {$9D48W} #What counter tracks&lt;br /&gt;
&lt;br /&gt;
#Ankh&lt;br /&gt;
%patch $1045 [$00D6W] #Ankh tile&lt;br /&gt;
%patch $104B [$0007W] #V position&lt;br /&gt;
%patch $1054 [$0004W] #Plus xx pixels&lt;br /&gt;
%patch $105A [$0003W] #H position&lt;br /&gt;
%patch $1074 {$9946W} #What counter tracks&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show Ankh tile&lt;br /&gt;
%patch $105D $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Keycards&lt;br /&gt;
%patch $1084 [$000DW] #Keycards h position (4 keycards start here)&lt;br /&gt;
%patch $108C [$0008W] #Keycards v position (All 4 keycards this height)&lt;br /&gt;
%patch $1099 [$00D9W] #Yellow keycard tile&lt;br /&gt;
%patch $10BB [$00DAW] #Red keycard tile&lt;br /&gt;
%patch $10CF [$0004W] #Red keycard left of yellow by this much&lt;br /&gt;
%patch $10E0 [$00DBW] #Green keycard tile&lt;br /&gt;
%patch $10F4 [$0008W] #Green keycard left of yellow by this much&lt;br /&gt;
%patch $1105 [$00DCW] #Blue keycard tile&lt;br /&gt;
%patch $1119 [$000CW] #Blue keycard left of yellow by this much&lt;br /&gt;
&lt;br /&gt;
%patch $1094 [$0001W] #Always show yellow keycard&lt;br /&gt;
%patch $10B6 [$0001W] #Always show red keycard&lt;br /&gt;
%patch $10DB [$0001W] #Always show green keycard&lt;br /&gt;
%patch $1100 [$0001W] #Always show blue keycard&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change the lives sprite ====&lt;br /&gt;
&lt;br /&gt;
This patch allows the sprite used for lives to be changed. The first blue value is the sprite used * 4. (Here sprite 30 x 4 = 120 = $77.) The second blue value is the vertical position of the sprites, originally this was 3 but because of he patch it must now be 9 larger (12 or $0C). This patch is incompatible with several of the patches in the above section that alter the lives counter.&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the lives sprite&lt;br /&gt;
%patch $0FDB $B8 [$0077W]  $50 $8B $C7 $05 [$000CW]  $D1 $E0 $D1 $E0&lt;br /&gt;
             $50 $8B $46 $FE $D1 $E0 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The big versatile Keen 1 status box patch ==&lt;br /&gt;
&lt;br /&gt;
This patch fully customizes the status window, allowing the smart patcher to remove or rearrange things to their will. Along with the tiles and variables, it contains their positions and even allows entire blocks of code to be skipped. In addition to this, it frees up space for use with other patches.&lt;br /&gt;
&lt;br /&gt;
The status file is just an external text file of 392 bytes in size. A default example can be found here: [https://files.shikadi.net/keenwiki/misc/STATUS.CK1 STATUS.CK1]&lt;br /&gt;
&lt;br /&gt;
Values in brown are related to [[Patch:Item bytes]] which control *what* is shown, or [[Patch:Jump conditions|jumps]] which control whether or not something is shown. Values in blue are positions (In 8x8 tiles) or 16x16 tiles displayed&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;#Big versatile status window patch:&lt;br /&gt;
#Patch in the long-integer drawing function &lt;br /&gt;
%patch $11B4                   $55 $89 $E5 $B8 $0A $00 $50 $B8 $90 $82 $50 $FF &lt;br /&gt;
               $76 $06 $FF $76 $04 $E8 $03 $C2 $83 $C4 $08 $B8 $90 $82 $50 $E8 &lt;br /&gt;
               $A5 $C5 $44 $44 $8B $56 $08 $29 $C2 $89 $16 $82 $82 $8B $46 $0A &lt;br /&gt;
               $A3 $F8 $82 $B8 $90 $82 $50 $E8 $E8 $50 $44 $44 $89 $EC $5D $C3 &lt;br /&gt;
&lt;br /&gt;
#Patch in the name of the status dialog text file, you&#039;ll need to create a file with this name and put your status&lt;br /&gt;
#text in it or Keen will crash.&lt;br /&gt;
%patch $14E52  &amp;quot;STATUS.CK1&amp;quot; $00 &lt;br /&gt;
&lt;br /&gt;
# Patch in the code to draw the status text (coordinates are measured in characters--8 pixel blocks)&lt;br /&gt;
%patch $0E6A                                           $B8 $00 $3D $BA $1E02W   # Show status window (0E6A)&lt;br /&gt;
               $CD $21 $89 $C3 $BF $27 $00 $C6 $06 $9A $82 $00 $B9 $0A $00 $BA&lt;br /&gt;
               $90 $82 $B4 $3F $CD $21 $53 $B8 $90 $82 $50 $E8 $2E $97 $44 $44&lt;br /&gt;
               $5B $4F $75 $E8 $B4 $3E $CD $21 &lt;br /&gt;
&lt;br /&gt;
#Draw the status window, you can fiddle around with this code&lt;br /&gt;
#Draw extra Keen score at 01,0A&lt;br /&gt;
%patch $0E98                               $8B $46 $FE $05 [$0001W]  $50 $89 &lt;br /&gt;
               $F0 $05 [$000AW]  $50 $FF $36 $CC $AA $FF $36 $CA $AA $E8 $04 $03&lt;br /&gt;
               $83 $C4 $08 &lt;br /&gt;
&lt;br /&gt;
#Draw extra Keen score at 01,1A&lt;br /&gt;
%patch $0EB3               $8B $46 $FE $05 [$0001W]  $50 $89 $F0 $05 [$001AW]  $50&lt;br /&gt;
               $A1 $C4 $6E $8B $16 $C2 $6E $81 $C2 $20 $4E $15 $00 $00 $50 $52&lt;br /&gt;
               $E8 $E1 $02 $83 $C4 $08&lt;br /&gt;
&lt;br /&gt;
#Draw Keen&#039;s lives, count $AAC6W, show sprite $007B \ 4 at 03,01 &lt;br /&gt;
%patch $0ED6                           $31 $FF $3B $3E {$AAC6W}  $7D $29 $83 $FF&lt;br /&gt;
               $06 $7D $24 $B8 [$007BW]  $50 $8B $46 $FE $05 [$0003W]  $B1 $03 $D3&lt;br /&gt;
               $E0 $90 $90 $50 $89 $F8 $D1 $E0 $05 [$0001W]  $01 $F0 $50 $E8 $2C&lt;br /&gt;
               $AC $83 $C4 $06 $47 $EB $D1&lt;br /&gt;
&lt;br /&gt;
#Draw joystick, check $AA94, if 0 show tile $0141 else show tile $013D at position 3.5 (3 + 4 pixels),10&lt;br /&gt;
%patch $0F07                               $B8 [$0141W]  $83 $3E {$AA94W}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$013DW]  $50 $8B $46 $FE $05 [$0003W]  $B1 $03 $D3 $E0 $05&lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0010W]  $50 $E8 $0D $AA $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw battery, check $AA9C, if 0 show tile $0142 else show tile $013E at position 3.5,13&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$0142W]  $83 $3E {$AA9CW}  [$00] {$74} $03 $B8 [$013EW]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0003W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0013W]&lt;br /&gt;
               $50 $E8 $E5 $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw vacuum, check $AA96, if 0 show tile $0143 else show tile $013F at position 3.5,16&lt;br /&gt;
                                           $B8 [$0143W]  $83 $3E {$AA96W}  [$00] {$74} &lt;br /&gt;
               $03 $B8 [$013FW]  $50 $8B $46 $FE $05 [$0003W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0016W]  $50 $E8 $BD $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw whiskey, check $AA98, if 0 show tile $0144 else show tile $0140 at position 3.5,19&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$0144W]  $83 $3E {$AA98W}  [$00] {$74} $03 $B8 [$0140W]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0003W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0019W]&lt;br /&gt;
               $50 $E8 $95 $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key A, check $AA9E, if 0 show tile $022E else show tile $01A8 at position 7.5,13&lt;br /&gt;
%patch $0FA7                               $B8 [$022EW]  $83 $3E {$AA9EW}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$01A8W]  $50 $8B $46 $FE $05 [$0007W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0013W]  $50 $E8 $6D $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key B, check $AAA0, if 0 show tile $022E else show tile $01A9 at position 7.5,17&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$022EW]  $83 $3E {$AAA0W}  [$00] {$74} $03 $B8 [$01A9W]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0007W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0017W]&lt;br /&gt;
               $50 $E8 $45 $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key C, check $AAA2, if 0 show tile $022E else show tile $01AA at position 9.5,13&lt;br /&gt;
                                           $B8 [$022EW]  $83 $3E {$AAA2W}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$01AAW]  $50 $8B $46 $FE $05 [$0009W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0013W]  $50 $E8 $1D $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key D, check $AAA4, if 0 show tile $022E else show tile $01AB at position 9.5,17&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$022EW]  $83 $3E {$AAA4W}  [$00] {$74} $03 $B8 [$01ABW]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0009W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0017W] &lt;br /&gt;
               $50 $E8 $F5 $A8 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Pogo, check $AA9A, if 0 show tile $000B else show tile $019F at position 8.5,0B&lt;br /&gt;
%patch $1047                               $B8 [$000BW]  $83 $3E {$AA9AW}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$019FW]  $50 $8B $46 $FE $05 [$0008W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$000BW]  $50 $E8 $CD $A8 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Ammo value, count $AAC8, at position 0B,06&lt;br /&gt;
                                                                           $8B&lt;br /&gt;
               $46 $FE $05 [$000BW]  $50 $89 $F0 $05 [$0006W]  $50 $31 $C0 $50 $FF &lt;br /&gt;
               $36 [$AAC8W]  $E8 $2E $01 $83 $C4 $08&lt;br /&gt;
&lt;br /&gt;
#Draw Raygun at position 7.5,03 (Change first two bytes to $EB $1C to skip)&lt;br /&gt;
                                                   $B8 [$019EW]  $50 $8B $46 $FE&lt;br /&gt;
               $05 [$0007W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0003W]&lt;br /&gt;
               $50 $E8 $95 $A8 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Wait for key and return&lt;br /&gt;
                                           $E8 $90 $4B $31 $C0 $50 $E8 $1E $AD&lt;br /&gt;
               $44 $44 $E8 $81 $A6 $E8 $D1 $F1 $E8 $CE $F1 $E8 $7C $4B $8B $46 &lt;br /&gt;
               $FC $8B $56 $FA $89 $16 $35 $51 $A3 $37 $51 $5F $5E $89 $EC $5D &lt;br /&gt;
               $C3 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Text|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Status_Window_(Vorticons)&amp;diff=47476</id>
		<title>Patch:Status Window (Vorticons)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Status_Window_(Vorticons)&amp;diff=47476"/>
		<updated>2023-10-07T06:44:28Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add patches for Keen 2 and 3 for disabling status window&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The status window in Keen Vorticons appears when the spacebar is pressed during normal gameplay. It displays what Keen has, keys, shots, score and suchlike. This page covers patches relating to this window, divided into two sections. The first section contains patches relating to the window&#039;s behavior, what causes it to appear and what it does. The second section contains patches that relate to what the window looks like, its construction and content.&lt;br /&gt;
&lt;br /&gt;
Patches for other status windows can be found at [[Patch:Status_Window_(Galaxy)]] and [[Patch:Status_Window_(Dreams)]]. These patches also require some knowledge of [[Patch:Game stats]] and [[Patch:Text patches]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Disable status window =&lt;br /&gt;
&lt;br /&gt;
This patch completely disables the status window, meaning it cannot be called during gameplay. The map is treated differently from levels, meaning it is possible to disable the status window in only one of these.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable status window&lt;br /&gt;
%patch $124F $5D $C3 #In-level&lt;br /&gt;
%patch $7FA3 $EB $08 #On map&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $1209  $5D $C3 #In-level&lt;br /&gt;
%patch $83A0  $EB $08 #On map&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $11AF  $5D $C3 #In-level&lt;br /&gt;
%patch $8D6E  $EB $08 #On map&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Status window behavior =&lt;br /&gt;
&lt;br /&gt;
This section contains patches that alter how the status window behaves, what causes it to appear and what it does.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change controls ==&lt;br /&gt;
&lt;br /&gt;
These patches change what key activates the status screen. By default this is the spacebar. in the example here it is changed to enter. Using these patches requires some knowledge of [[Patch:Scancodes]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $1251  [$5048W]&lt;br /&gt;
%patch $7FA3  [$5048W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $120B  [$5024W]&lt;br /&gt;
%patch $83A2  [$5024W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change status window key&lt;br /&gt;
%patch $11AF  [$5274W]&lt;br /&gt;
%patch $8D6E  [$5274W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Galaxy style status window controls ===&lt;br /&gt;
&lt;br /&gt;
This changes the controls of the game to be more like Keen Galaxy. Spacebar shoots, enter brings up the status screen. See #http://andy.durdin.net/keen/modding/viewtopic.php?t=433 for the original topic. In essence this is a longer version of the above patches, with extra lines altering Keen&#039;s shot keys.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the controls to Space, shoot; Enter, status. &lt;br /&gt;
%patch $1251  [$5048W]&lt;br /&gt;
%patch $7FA3  [$5048W]&lt;br /&gt;
%patch $3B23  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3C4E  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3DB9  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3DCC  $90 $90 &lt;br /&gt;
%patch $3E6D  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $3FFC  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00 &lt;br /&gt;
%patch $40AA  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5065W] $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the controls to: Space, shoot; Enter, status.&lt;br /&gt;
%patch $120B  [$5024W]&lt;br /&gt;
%patch $83A2  [$5024W]&lt;br /&gt;
%patch $6965  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6A90  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6BFB  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6C0E  $90 $90 &lt;br /&gt;
%patch $6CAF  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6E3E  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&lt;br /&gt;
%patch $6EEC  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5041W]  $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the controls to: Space, shoot; Enter, status.&lt;br /&gt;
%patch $11AF  [$5274W]&lt;br /&gt;
%patch $8D6E  [$5274W]&lt;br /&gt;
%patch $71C9  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $72FA  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $7461  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $7474  $90 $90 &lt;br /&gt;
%patch $7515  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $76A1  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&lt;br /&gt;
%patch $7750  $90 $90 $90 $90 $90 $90 $90 $80 $3E [$5291W]  $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Status window construction and appearance =&lt;br /&gt;
&lt;br /&gt;
== Status screen appearance ==&lt;br /&gt;
&lt;br /&gt;
The status screen is at heart a text window with 16x16 tiles drawn over it at certain positions, followed by variables like the score. &lt;br /&gt;
&lt;br /&gt;
For text, a lot of &#039;short lines&#039; (separators) little more than one character long are used, as well as some &#039;long lines&#039; with actual labels on them. Short lines are often shifted across a few characters.&lt;br /&gt;
&lt;br /&gt;
There is also a &#039;big versatile status screen patch&#039; that allows total customization of the Keen 1 status window. It is the last entry in this section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Status box size:&lt;br /&gt;
%patch $0E53 [$000CW] #Height (In lines of text)&lt;br /&gt;
%patch $0E57 [$001CW] #width (In letters)&lt;br /&gt;
&lt;br /&gt;
#Text read from&lt;br /&gt;
%patch $0E6B [$1E02W] #First line (SCORE...EXTRA KEEN AT)&lt;br /&gt;
%patch $0E7C [$1E20W] #Second line - Score\EKA separator&lt;br /&gt;
%patch $0E85 [$1E23W] #Third line (KEENS...SHIP)&lt;br /&gt;
%patch $0E96 [$1E41W] #Fourth line - Lives\Parts separator 1&lt;br /&gt;
%patch $0EA7 [$1E44W] #Fifth line - Lives\Parts separator 2&lt;br /&gt;
%patch $0EB8 [$1E47W] #Sixth line - Lives\Parts separator 3&lt;br /&gt;
%patch $0EC1 [$1E4AW] #Seventh line (RAYGUN...KEYS)&lt;br /&gt;
%patch $0ED2 [$1E68W] #Eighth line - Raygun\Pogo separator 1&lt;br /&gt;
%patch $0EE0 [$1E6AW] #Eighth line - Pogo\Keycard separator 1&lt;br /&gt;
%patch $0EF1 [$1E6DW] #Ninth line -Raygun\Pogo separator 2&lt;br /&gt;
%patch $0EFF [$1E6FW] #Ninth line -Pogo\Keycard separator 2&lt;br /&gt;
%patch $0F10 [$1E72W] #Tenth line - Raygun\Pogo separator 3&lt;br /&gt;
%patch $0F1E [$1E74W] #Tenth line - Pogo\Keycard separator 3&lt;br /&gt;
%patch $0F27 [$1E77W] #Eleventh line (CHARGE)&lt;br /&gt;
%patch $0F35 [$1E81W] #Eleventh line - Pogo\Keycard separator 4&lt;br /&gt;
%patch $0F46 [$1E84W] #Twelfth line - Charge\Pogo separator&lt;br /&gt;
%patch $0F54 [$1E86W] #Twelfth line - Pogo\Keycard separator 5&lt;br /&gt;
%patch $0F5D [$1E89W] #Thirteenth line (PRESS A KEY)&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $14E52 &amp;quot;    SCORE     EXTRA KEEN AT &amp;quot; $0A $00&lt;br /&gt;
%patch $14E70 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E73 &amp;quot;    KEENS       SHIP PARTS  &amp;quot; $0A $00&lt;br /&gt;
%patch $14E91 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E94 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E97 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14E9A &amp;quot; RAYGUN   POGO    KEYCARDS  &amp;quot; $0A $00&lt;br /&gt;
%patch $14EB8 &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14EBA &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14EBD &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14EBF &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14EC2 &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14EC4 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14EC7 &amp;quot; CHARGE  &amp;quot;                    $00&lt;br /&gt;
%patch $14ED1 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14ED4 &amp;quot; &amp;quot;                            $00&lt;br /&gt;
%patch $14ED6 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $14ED9 &amp;quot;     PLEASE PRESS A KEY     &amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Score&lt;br /&gt;
%patch $0F66 [$0A]    #Base to show Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F6F {$AACCW} #Variable (Low)&lt;br /&gt;
%patch $0F73 {$AACAW} #Variable (High)&lt;br /&gt;
&lt;br /&gt;
#Extra Keen score&lt;br /&gt;
%patch $0FA0 [$0A]    #Base to show Extra Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0FA8 {$6EC4W} #Variable (Low)&lt;br /&gt;
%patch $0FAC {$6EC2W} #Variable (High)&lt;br /&gt;
%patch $0FB0 {$4E20W} #Minimum EKA score&lt;br /&gt;
&lt;br /&gt;
#Lives&lt;br /&gt;
%patch $1001 {$AAC6W}  #Lives variable&lt;br /&gt;
%patch $0FE5 [$0003W]  #Vertical position of lives&lt;br /&gt;
%patch $0FF0 $90 $90 #Lives spaced 8 pixels apart, not 16&lt;br /&gt;
%patch $1007 [$06]     #Maximum number of lives to show&lt;br /&gt;
%patch $0FDE $EB $1E #Don&#039;t show Lives&lt;br /&gt;
%patch $1003 $90 $90 #Always show maximum number of Keens no matter how many lives Keen has&lt;br /&gt;
&lt;br /&gt;
#Raygun tile&lt;br /&gt;
%patch $1166 [$019EW] #Tile&lt;br /&gt;
%patch $116D [$0007W] #V position, squares&lt;br /&gt;
%patch $1176 [$0004W] #V position, pixels&lt;br /&gt;
%patch $117C [$0003W] #H position&lt;br /&gt;
&lt;br /&gt;
#Shots counter&lt;br /&gt;
%patch $1198 {$AAC8W} #Variable&lt;br /&gt;
%patch $1188 [$0003W] #H position&lt;br /&gt;
%patch $1191 [$000BW] #V position&lt;br /&gt;
&lt;br /&gt;
#Pogo tile&lt;br /&gt;
%patch $11A7 [$019FW] #Tile&lt;br /&gt;
%patch $11AE [$0008W] #V position, squares&lt;br /&gt;
%patch $11B7 [$0004W] #V position, pixels&lt;br /&gt;
%patch $11BD [$000BW] #H position&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change the lives sprite ====&lt;br /&gt;
&lt;br /&gt;
This patch allows the sprite used for lives to be changed. The first blue value is the sprite used * 4. (Here sprite 31 x 4 = 124 = $7B.) The second blue value is the vertical position of the sprites, originally this was 3 but because of he patch it must now be 9 larger (12 or $0C). This patch is incompatible with several of the patches in the above section that alter the lives counter.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the lives sprite&lt;br /&gt;
%patch $0FDE $B8 [$007BW]  $50 $8B $46 $FE $05 [$000CW]  $D1 $E0 $D1 $E0&lt;br /&gt;
             $50 $8B $C7 $D1 $E0 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t show ship parts ====&lt;br /&gt;
&lt;br /&gt;
This patch removes the ship parts from the status window, converting it into more space to show Keen&#039;s lives. The blue variable is how many lives can now be shown in the status window.&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t display ship parts&lt;br /&gt;
%patch $100A $E9 $00B9W&lt;br /&gt;
%patch $14E90 $0A $0A $0A $00&lt;br /&gt;
%patch $0E8D $EB $31&lt;br /&gt;
%patch $1007 [$0D]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Status box size:&lt;br /&gt;
%patch $0E53 [$000CW] #Height (In lines of text)&lt;br /&gt;
%patch $0E57 [$001CW] #width (In letters)&lt;br /&gt;
&lt;br /&gt;
#Text read from&lt;br /&gt;
%patch $0E69 [$219CW] #First line (SCORE...EXTRA KEEN AT)&lt;br /&gt;
%patch $0E7A [$21BAW] #Second line&lt;br /&gt;
%patch $0E83 [$21BDW] #Third line (KEENS...PISTOL)&lt;br /&gt;
%patch $0E94 [$21DBW] #Fourth line&lt;br /&gt;
%patch $0EA5 [$21DEW] #Fifth line&lt;br /&gt;
%patch $0EB6 [$21E1W] #Sixth line&lt;br /&gt;
%patch $0EBF [$21E1W] #Seventh line (TARGETS...KEYS)&lt;br /&gt;
%patch $0ED0 [$2202W] #Eighth line&lt;br /&gt;
%patch $0EE1 [$2205W] #Ninth line&lt;br /&gt;
%patch $0EF2 [$2208W] #Tenth line&lt;br /&gt;
%patch $0F03 [$220BW] #Eleventh line&lt;br /&gt;
%patch $0F0C [$220EW] #Twelfth line (PRESS A KEY)&lt;br /&gt;
%patch $10A4 [$222BW] #London&lt;br /&gt;
%patch $10C0 [$2232W] #Cairo&lt;br /&gt;
%patch $10DC [$2238W] #Sydney&lt;br /&gt;
%patch $10F8 [$223FW] #New York&lt;br /&gt;
%patch $1118 [$2248W] #Paris&lt;br /&gt;
%patch $1138 [$224EW] #Rome&lt;br /&gt;
%patch $1158 [$2253W] #Moscow&lt;br /&gt;
%patch $1178 [$225AW] #Washington&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $1991C &amp;quot;    SCORE     EXTRA KEEN AT &amp;quot; $0A $00&lt;br /&gt;
%patch $1993A &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1993D &amp;quot;    KEENS            PISTOL &amp;quot; $0A $00&lt;br /&gt;
%patch $1995B &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1995E &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19961 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19964 &amp;quot;   TARGETS SAVED      KEYS  &amp;quot; $0A $00&lt;br /&gt;
%patch $19982 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19985 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $19988 &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1998B &amp;quot; &amp;quot;                            $0A $00&lt;br /&gt;
%patch $1998E &amp;quot;     PLEASE PRESS A KEY     &amp;quot; $0A $00&lt;br /&gt;
%patch $199AB &amp;quot;London&amp;quot; $00&lt;br /&gt;
%patch $199B2 &amp;quot;Cairo&amp;quot; $00&lt;br /&gt;
%patch $199B8 &amp;quot;Sydney&amp;quot; $00&lt;br /&gt;
%patch $199BF &amp;quot;New York&amp;quot; $00&lt;br /&gt;
%patch $199C8 &amp;quot;Paris&amp;quot; $00&lt;br /&gt;
%patch $199CE &amp;quot;Rome&amp;quot; $00&lt;br /&gt;
%patch $199D3 &amp;quot;Moscow&amp;quot; $00&lt;br /&gt;
%patch $199DA &amp;quot;Wash D.C.&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#H position of separating lines (Short lines)&lt;br /&gt;
%patch $0E74 [$0A] #SCORE-EXTRA square&lt;br /&gt;
%patch $0E8E [$13] #KEENS-PISTOL separator 1&lt;br /&gt;
%patch $0E9F [$13] #KEENS-PISTOL separator 2&lt;br /&gt;
%patch $0EB0 [$13] #KEENS-PISTOL separator 3&lt;br /&gt;
%patch $0ECA [$13] #TARGETS-KEYS separator 1&lt;br /&gt;
%patch $0ED8 [$13] #TARGETS-KEYS separator 2&lt;br /&gt;
%patch $0EEC [$13] #TARGETS-KEYS separator 3&lt;br /&gt;
%patch $0EFD [$13] #TARGETS-KEYS separator 4&lt;br /&gt;
&lt;br /&gt;
#Score&lt;br /&gt;
%patch $0F15 [$0A]    #Base to show Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F1E {$9AE2W} #Variable (Low)&lt;br /&gt;
%patch $0F22 {$9AE0W} #Variable (High)&lt;br /&gt;
&lt;br /&gt;
#Extra Keen score&lt;br /&gt;
%patch $0F4E [$0A]    #Base to show Extra Keens score in ($0A = 10, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F56 {$6EA0W} #Variable (Low)&lt;br /&gt;
%patch $0F5A {$6E9EW} #Variable (High)&lt;br /&gt;
%patch $0F5E {$4E20W} #Minimum EKA score&lt;br /&gt;
&lt;br /&gt;
#Lives&lt;br /&gt;
%patch $0FB7 {$9ADCW}  #Lives variable&lt;br /&gt;
%patch $0FBC [$0009W]  #Maximum number of lives to show&lt;br /&gt;
%patch $0F8B [$0000W]  #Hide x lives from START of lives (None hidden by default)&lt;br /&gt;
%patch $0F95 [$0003W]  #Vertical position of lives&lt;br /&gt;
%patch $0FA1 $90 $90 #Lives spaced 8 pixels apart, not 16&lt;br /&gt;
%patch $0F8F $EB $1E #Don&#039;t show Lives&lt;br /&gt;
%patch $0FB9 $90 $90 #Always show maximum number of Keens no matter how many lives Keen has&lt;br /&gt;
&lt;br /&gt;
#Raygun tile&lt;br /&gt;
%patch $0FC1 [$019EW] #Tile&lt;br /&gt;
%patch $0FC7 [$0003W] #V position, squares&lt;br /&gt;
%patch $0FD0 [$0004W] #V position, pixels&lt;br /&gt;
%patch $0FD6 [$0015W] #H position&lt;br /&gt;
&lt;br /&gt;
#Shots&lt;br /&gt;
%patch $0FE2 [$0018W] #H position&lt;br /&gt;
%patch $0FEA [$0004W] #V position&lt;br /&gt;
&lt;br /&gt;
#Keycards&lt;br /&gt;
%patch $0FFB [$0015W] #Keycards horizontal position&lt;br /&gt;
%patch $1003 [$0007W] #Keycards vertical position&lt;br /&gt;
%patch $1010 [$01A8W] #Keycard A tile&lt;br /&gt;
%patch $102F [$01A9W] #Keycard B tile&lt;br /&gt;
%patch $1040 [$0003W] #Keycard B horizontal offset (3 squares left of Key A)&lt;br /&gt;
%patch $1051 [$01AAW] #Keycard C tile&lt;br /&gt;
%patch $105E [$0010W] #Keycard C vertical offset (two squares down from Key A)&lt;br /&gt;
%patch $1073 [$01ABW] #Keycard D tile&lt;br /&gt;
%patch $1080 [$0010W] #Keycard D vertical offset(two squares down from Key A)&lt;br /&gt;
%patch $1087 [$0003W] #Keycard D offset offset (3 squares left of Key A)&lt;br /&gt;
%patch $1032 $90 #Don&#039;t show keycard B&lt;br /&gt;
%patch $1054 $90 #Don&#039;t show keycard C&lt;br /&gt;
%patch $1076 $90 #Don&#039;t show keycard D&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change the lives sprite ====&lt;br /&gt;
&lt;br /&gt;
This patch allows the sprite used for lives to be changed. The first blue value is the sprite used * 4. (Here sprite 31 x 4 = 124 = $7B.) The second blue value is the vertical position of the sprites, originally this was 3 but because of he patch it must now be 9 larger (12 or $0C). This patch is incompatible with several of the patches in the above section that alter the lives counter.&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the lives sprite&lt;br /&gt;
%patch $0F8F $B8 [$007BW]  $50 $8B $C7 $05 [$000CW]  $D1 $E0 $D1 $E0&lt;br /&gt;
             $50 $8B $46 $FE $D1 $E0 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Status box size:&lt;br /&gt;
%patch $0EC0 [$000BW] #Height (In lines of text)&lt;br /&gt;
%patch $0EC4 [$001CW] #width (In letters)&lt;br /&gt;
&lt;br /&gt;
#Text read from:&lt;br /&gt;
%patch $0ED5 [$22D4W] #1st line&lt;br /&gt;
%patch $0EE5 [$22F2W]&lt;br /&gt;
%patch $0EED [$22F5W] #3rd&lt;br /&gt;
%patch $0EFD [$2313W]&lt;br /&gt;
%patch $0F0D [$2316W]&lt;br /&gt;
%patch $0F1D [$2319W]&lt;br /&gt;
%patch $0F25 [$231CW] #7th&lt;br /&gt;
%patch $0F35 [$233AW]&lt;br /&gt;
%patch $0F45 [$233DW]&lt;br /&gt;
%patch $0F55 [$2340W]&lt;br /&gt;
%patch $0F5D [$2343W] #11th&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $1BAF4 &amp;quot;    SCORE     EXTRA KEEN AT &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB12 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB15 &amp;quot;    KEENS            PISTOL &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB33 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB36 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB39 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB3C &amp;quot; ANKH TIME      KEY CARDS   &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB5A &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB5D &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB60 &amp;quot; &amp;quot; $0A $00&lt;br /&gt;
%patch $1BB63 &amp;quot;     PLEASE PRESS A KEY     &amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Horizontal position of some text (In characters)&lt;br /&gt;
%patch $0EDF [$000CW] #2nd line&lt;br /&gt;
%patch $0EF7 [$0013W] #4th line&lt;br /&gt;
%patch $0F07 [$0013W] #5th line&lt;br /&gt;
%patch $0F17 [$0013W] #6th line&lt;br /&gt;
%patch $0F2F [$000BW] #8th&lt;br /&gt;
%patch $0F3F [$000BW] #9th&lt;br /&gt;
%patch $0F4F [$000BW] #10th&lt;br /&gt;
&lt;br /&gt;
#Position of values (Score and suchlike)&lt;br /&gt;
%patch $0F65 [$0A] #Score base (0A = 10 = decimal, $10 =hex, $01 = binary, $00 don&#039;t show)&lt;br /&gt;
%patch $0F86 [$0A] #Score h position&lt;br /&gt;
%patch $102F [$18] #Ammo h position&lt;br /&gt;
%patch $1037 [$04] #Ammo v position&lt;br /&gt;
%patch $1066 [$07] #Ankh time h position&lt;br /&gt;
%patch $106E [$08] #Ankh time v position&lt;br /&gt;
&lt;br /&gt;
#EKA structure&lt;br /&gt;
%patch $0F9C [$0A]    #Extra Keen counter base (like above, $00, don&#039;t show)&lt;br /&gt;
%patch $0FC5 [$1A]    #Extra Keen counter h position&lt;br /&gt;
%patch $0FA4 {$70F0W} #Variable (Low)&lt;br /&gt;
%patch $0FA8 {$70EEW} #Variable (High)&lt;br /&gt;
%patch $0FAC {$4E20W} #Minimum EKA score&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s lives structure&lt;br /&gt;
%patch $100A [$09]     #Maximum number of lives to show&lt;br /&gt;
%patch $0FD7 [$0000W]  #Hide x lives from START of lives (None hidden by default)&lt;br /&gt;
%patch $0FD7 [$00]     #Lives h position (Lives stop at $12, so $0A doesn&#039;t show lives)&lt;br /&gt;
%patch $0FE1 [$0003W]  #Sprite vertical position&lt;br /&gt;
%patch $0FED $90 $90 #Sprites close together (Change spacing of sprites)&lt;br /&gt;
&lt;br /&gt;
#Raygun&lt;br /&gt;
%patch $100E [$00D8W] #Raygun tile&lt;br /&gt;
%patch $1014 [$0003W] #Vertical position (lines)&lt;br /&gt;
%patch $101D [$0004W] #Plus xx pixels&lt;br /&gt;
%patch $1023 [$0015W] #H position&lt;br /&gt;
%patch $103E {$9D48W} #What counter tracks&lt;br /&gt;
&lt;br /&gt;
#Ankh&lt;br /&gt;
%patch $1045 [$00D6W] #Ankh tile&lt;br /&gt;
%patch $104B [$0007W] #V position&lt;br /&gt;
%patch $1054 [$0004W] #Plus xx pixels&lt;br /&gt;
%patch $105A [$0003W] #H position&lt;br /&gt;
%patch $1074 {$9946W} #What counter tracks&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show Ankh tile&lt;br /&gt;
%patch $105D $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Keycards&lt;br /&gt;
%patch $1084 [$000DW] #Keycards h position (4 keycards start here)&lt;br /&gt;
%patch $108C [$0008W] #Keycards v position (All 4 keycards this height)&lt;br /&gt;
%patch $1099 [$00D9W] #Yellow keycard tile&lt;br /&gt;
%patch $10BB [$00DAW] #Red keycard tile&lt;br /&gt;
%patch $10CF [$0004W] #Red keycard left of yellow by this much&lt;br /&gt;
%patch $10E0 [$00DBW] #Green keycard tile&lt;br /&gt;
%patch $10F4 [$0008W] #Green keycard left of yellow by this much&lt;br /&gt;
%patch $1105 [$00DCW] #Blue keycard tile&lt;br /&gt;
%patch $1119 [$000CW] #Blue keycard left of yellow by this much&lt;br /&gt;
&lt;br /&gt;
%patch $1094 [$0001W] #Always show yellow keycard&lt;br /&gt;
%patch $10B6 [$0001W] #Always show red keycard&lt;br /&gt;
%patch $10DB [$0001W] #Always show green keycard&lt;br /&gt;
%patch $1100 [$0001W] #Always show blue keycard&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change the lives sprite ====&lt;br /&gt;
&lt;br /&gt;
This patch allows the sprite used for lives to be changed. The first blue value is the sprite used * 4. (Here sprite 30 x 4 = 120 = $77.) The second blue value is the vertical position of the sprites, originally this was 3 but because of he patch it must now be 9 larger (12 or $0C). This patch is incompatible with several of the patches in the above section that alter the lives counter.&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Change the lives sprite&lt;br /&gt;
%patch $0FDB $B8 [$0077W]  $50 $8B $C7 $05 [$000CW]  $D1 $E0 $D1 $E0&lt;br /&gt;
             $50 $8B $46 $FE $D1 $E0 $90&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The big versatile Keen 1 status box patch ==&lt;br /&gt;
&lt;br /&gt;
This patch fully customizes the status window, allowing the smart patcher to remove or rearrange things to their will. Along with the tiles and variables, it contains their positions and even allows entire blocks of code to be skipped. In addition to this, it frees up space for use with other patches.&lt;br /&gt;
&lt;br /&gt;
The status file is just an external text file of 392 bytes in size. A default example can be found here: [https://files.shikadi.net/keenwiki/misc/STATUS.CK1 STATUS.CK1]&lt;br /&gt;
&lt;br /&gt;
Values in brown are related to [[Patch:Item bytes]] which control *what* is shown, or [[Patch:Jump conditions|jumps]] which control whether or not something is shown. Values in blue are positions (In 8x8 tiles) or 16x16 tiles displayed&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;#Big versatile status window patch:&lt;br /&gt;
#Patch in the long-integer drawing function &lt;br /&gt;
%patch $11B4                   $55 $89 $E5 $B8 $0A $00 $50 $B8 $90 $82 $50 $FF &lt;br /&gt;
               $76 $06 $FF $76 $04 $E8 $03 $C2 $83 $C4 $08 $B8 $90 $82 $50 $E8 &lt;br /&gt;
               $A5 $C5 $44 $44 $8B $56 $08 $29 $C2 $89 $16 $82 $82 $8B $46 $0A &lt;br /&gt;
               $A3 $F8 $82 $B8 $90 $82 $50 $E8 $E8 $50 $44 $44 $89 $EC $5D $C3 &lt;br /&gt;
&lt;br /&gt;
#Patch in the name of the status dialog text file, you&#039;ll need to create a file with this name and put your status&lt;br /&gt;
#text in it or Keen will crash.&lt;br /&gt;
%patch $14E52  &amp;quot;STATUS.CK1&amp;quot; $00 &lt;br /&gt;
&lt;br /&gt;
# Patch in the code to draw the status text (coordinates are measured in characters--8 pixel blocks)&lt;br /&gt;
%patch $0E6A                                           $B8 $00 $3D $BA $1E02W   # Show status window (0E6A)&lt;br /&gt;
               $CD $21 $89 $C3 $BF $27 $00 $C6 $06 $9A $82 $00 $B9 $0A $00 $BA&lt;br /&gt;
               $90 $82 $B4 $3F $CD $21 $53 $B8 $90 $82 $50 $E8 $2E $97 $44 $44&lt;br /&gt;
               $5B $4F $75 $E8 $B4 $3E $CD $21 &lt;br /&gt;
&lt;br /&gt;
#Draw the status window, you can fiddle around with this code&lt;br /&gt;
#Draw extra Keen score at 01,0A&lt;br /&gt;
%patch $0E98                               $8B $46 $FE $05 [$0001W]  $50 $89 &lt;br /&gt;
               $F0 $05 [$000AW]  $50 $FF $36 $CC $AA $FF $36 $CA $AA $E8 $04 $03&lt;br /&gt;
               $83 $C4 $08 &lt;br /&gt;
&lt;br /&gt;
#Draw extra Keen score at 01,1A&lt;br /&gt;
%patch $0EB3               $8B $46 $FE $05 [$0001W]  $50 $89 $F0 $05 [$001AW]  $50&lt;br /&gt;
               $A1 $C4 $6E $8B $16 $C2 $6E $81 $C2 $20 $4E $15 $00 $00 $50 $52&lt;br /&gt;
               $E8 $E1 $02 $83 $C4 $08&lt;br /&gt;
&lt;br /&gt;
#Draw Keen&#039;s lives, count $AAC6W, show sprite $007B \ 4 at 03,01 &lt;br /&gt;
%patch $0ED6                           $31 $FF $3B $3E {$AAC6W}  $7D $29 $83 $FF&lt;br /&gt;
               $06 $7D $24 $B8 [$007BW]  $50 $8B $46 $FE $05 [$0003W]  $B1 $03 $D3&lt;br /&gt;
               $E0 $90 $90 $50 $89 $F8 $D1 $E0 $05 [$0001W]  $01 $F0 $50 $E8 $2C&lt;br /&gt;
               $AC $83 $C4 $06 $47 $EB $D1&lt;br /&gt;
&lt;br /&gt;
#Draw joystick, check $AA94, if 0 show tile $0141 else show tile $013D at position 3.5 (3 + 4 pixels),10&lt;br /&gt;
%patch $0F07                               $B8 [$0141W]  $83 $3E {$AA94W}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$013DW]  $50 $8B $46 $FE $05 [$0003W]  $B1 $03 $D3 $E0 $05&lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0010W]  $50 $E8 $0D $AA $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw battery, check $AA9C, if 0 show tile $0142 else show tile $013E at position 3.5,13&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$0142W]  $83 $3E {$AA9CW}  [$00] {$74} $03 $B8 [$013EW]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0003W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0013W]&lt;br /&gt;
               $50 $E8 $E5 $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw vacuum, check $AA96, if 0 show tile $0143 else show tile $013F at position 3.5,16&lt;br /&gt;
                                           $B8 [$0143W]  $83 $3E {$AA96W}  [$00] {$74} &lt;br /&gt;
               $03 $B8 [$013FW]  $50 $8B $46 $FE $05 [$0003W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0016W]  $50 $E8 $BD $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw whiskey, check $AA98, if 0 show tile $0144 else show tile $0140 at position 3.5,19&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$0144W]  $83 $3E {$AA98W}  [$00] {$74} $03 $B8 [$0140W]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0003W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0019W]&lt;br /&gt;
               $50 $E8 $95 $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key A, check $AA9E, if 0 show tile $022E else show tile $01A8 at position 7.5,13&lt;br /&gt;
%patch $0FA7                               $B8 [$022EW]  $83 $3E {$AA9EW}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$01A8W]  $50 $8B $46 $FE $05 [$0007W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0013W]  $50 $E8 $6D $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key B, check $AAA0, if 0 show tile $022E else show tile $01A9 at position 7.5,17&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$022EW]  $83 $3E {$AAA0W}  [$00] {$74} $03 $B8 [$01A9W]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0007W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0017W]&lt;br /&gt;
               $50 $E8 $45 $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key C, check $AAA2, if 0 show tile $022E else show tile $01AA at position 9.5,13&lt;br /&gt;
                                           $B8 [$022EW]  $83 $3E {$AAA2W}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$01AAW]  $50 $8B $46 $FE $05 [$0009W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$0013W]  $50 $E8 $1D $A9 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Key D, check $AAA4, if 0 show tile $022E else show tile $01AB at position 9.5,17&lt;br /&gt;
                                                                           $B8&lt;br /&gt;
               [$022EW]  $83 $3E {$AAA4W}  [$00] {$74} $03 $B8 [$01ABW]  $50 $8B $46 $FE &lt;br /&gt;
               $05 [$0009W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0017W] &lt;br /&gt;
               $50 $E8 $F5 $A8 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Pogo, check $AA9A, if 0 show tile $000B else show tile $019F at position 8.5,0B&lt;br /&gt;
%patch $1047                               $B8 [$000BW]  $83 $3E {$AA9AW}  [$00] {$74}&lt;br /&gt;
               $03 $B8 [$019FW]  $50 $8B $46 $FE $05 [$0008W]  $B1 $03 $D3 $E0 $05 &lt;br /&gt;
               [$0004W]  $50 $89 $F0 $05 [$000BW]  $50 $E8 $CD $A8 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Draw Ammo value, count $AAC8, at position 0B,06&lt;br /&gt;
                                                                           $8B&lt;br /&gt;
               $46 $FE $05 [$000BW]  $50 $89 $F0 $05 [$0006W]  $50 $31 $C0 $50 $FF &lt;br /&gt;
               $36 [$AAC8W]  $E8 $2E $01 $83 $C4 $08&lt;br /&gt;
&lt;br /&gt;
#Draw Raygun at position 7.5,03 (Change first two bytes to $EB $1C to skip)&lt;br /&gt;
                                                   $B8 [$019EW]  $50 $8B $46 $FE&lt;br /&gt;
               $05 [$0007W]  $B1 $03 $D3 $E0 $05 [$0004W]  $50 $89 $F0 $05 [$0003W]&lt;br /&gt;
               $50 $E8 $95 $A8 $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Wait for key and return&lt;br /&gt;
                                           $E8 $90 $4B $31 $C0 $50 $E8 $1E $AD&lt;br /&gt;
               $44 $44 $E8 $81 $A6 $E8 $D1 $F1 $E8 $CE $F1 $E8 $7C $4B $8B $46 &lt;br /&gt;
               $FC $8B $56 $FA $89 $16 $35 $51 $A3 $37 $51 $5F $5E $89 $EC $5D &lt;br /&gt;
               $C3 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Text|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=46529</id>
		<title>User talk:Malvineous</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=46529"/>
		<updated>2023-02-07T21:51:48Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Patch wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Been whined at by Lemm and assorted people, apparently the term &#039;sprite&#039; applies to graphics only and the terms I should have been using for all the &#039;sprite&#039; patch stuff is &#039;actor&#039;; is there any way to systematically change the term &#039;sprite&#039; in patch page titles (and maybe text) to &#039;actor&#039;? If not, leave it, but if so, it might be something to think about. --[[User:Levellass|Levellass]] 02:41, 17 July 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: It is possible to do a bulk search and replace across pages, but the pages themselves will need to be renamed manually.  [[User:DHeadshot]] has access to do this, perhaps you can ask him?  If he renames pages when logged in as a bot, it&#039;s possible to avoid creating those redirect pages too. -- [[User:Malvineous|Malvineous]] 03:00, 17 July 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;More talk...&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The older conversations on this page have been archived to keep the content current.  To read the previous content on this page, please see:&lt;br /&gt;
* 2010-08: [http://www.shikadi.net/wiki/keen/index.php?title=User_talk:Malvineous&amp;amp;oldid=15924 revision 15924]&lt;br /&gt;
* 2008-04: [http://www.shikadi.net/wiki/keen/index.php?title=User_talk:Malvineous&amp;amp;oldid=9028 revision 9028]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Please post new topics at the top of the page --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Needs pictures error ==&lt;br /&gt;
&lt;br /&gt;
This page [[Keen 1 640x480 Redux]] has itself listed under &#039;needs pictures&#039; despite having pictures. This appears to be because the pictures on the page are resized. Is there any way aside from using fullsized pictures (Which ruins the page) to fix this? -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 02:21, 29 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Thanks for pointing that out!  I don&#039;t want to automatically resize all images in the infobox, because that makes it too easy to upload 640x400 images by accident as screenshots.  So as a compromise I added an ImageScale option to the infobox, which will scale the image and takes care of the &#039;Needs pictures&#039; category.  Hopefully people won&#039;t abuse this and upload 320x200 screenshots scaled up to 640x400! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:39, 19 September 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deletion for stupid redirect ==&lt;br /&gt;
&lt;br /&gt;
The page http://www.shikadi.net/keenwiki/Patch:Keen_sstanding_(Vorticons) is obviously misspelled and needs to be deleted. The correct redirect link has already been created so nothing of value will be lost. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 07:55, 15 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You&#039;re an admin so you should have no trouble deleting the page!  The delete link might be hidden under the &#039;More&#039; drop down, next to the Read/Edit/History tabs at the top of the page.  Let me know if you can&#039;t find it or it doesn&#039;t work for some reason. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 08:12, 15 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Jeez, have I been such an butt in the past? ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv. I&#039;ve not been on in ages, and I was looking at some of my past edits. I have just realized I was acting a total ass, and you should have banned me for what I did. Your patience (and Shadow Master&#039;s) with me, legendary as it is, was stretched to the limit, and I&#039;m sorry for what I did to this wiki, with that fiasco wih KeenRush, and me smarting off to you over the preview button and all. I was going through a rather hard period im my life then, and it shows--looking at the comments and such, it looks as if they were written by someone else. Again, I&#039;d like to apologize for any discord I&#039;ve caused this place. -[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 17:02, 19 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hey Xt - no worries, I figured it was something you would grow out of eventually ;-) -- [[User:Malvineous|Malvineous]] 23:50, 19 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: And I was looking at the [[Talk: Viva|Viva talkpage]] yesterday. &amp;quot;Xterra-ism&amp;quot;. :-) At least I&#039;ve gotten SOMETHING besides a Nissan SUV named after me. Again, I must compliment you on your patience with me. -[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 18:07, 20 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Abandoned mods / level packs ==&lt;br /&gt;
&lt;br /&gt;
Hello Malvineous. As I mentioned on [[Talk:Vorticon Mods#Missing_Download_links|Talk:Vorticon Mods]], I still have a few abandoned mods/level packs by different people that are not available for download anymore (at least according to the wiki). Various mods and packs have been directly uploaded to shikadi.net/wiki/, thus I sent one mod to Tulip who contributed a lot to the Vorticons Mods page. He replied two weeks ago, but since then no download has been added for &amp;quot;Mars Kingdoms&amp;quot;, so I assume he is just too busy for editing. As you run this wiki, I wonder if I can also send them to you? --[[User:Grandy02|Grandy02]] 09:48, 20 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Sure, just e-mail them to malvineous@shikadi.net and I will upload them to shikadi.net/wiki/ if you&#039;d be willing to add the necessary links to the article pages! -- [[User:Malvineous|Malvineous]] 10:27, 20 November 2011 (GMT)&lt;br /&gt;
::Great, I&#039;ll send them this day! :-) --[[User:Grandy02|Grandy02]] 11:46, 20 November 2011 (GMT)&lt;br /&gt;
:::Sent. The names of the zip files are those of the original downloads (if I remember correctly), rename them as you please. The mail includes demos of Redemption, Lord of the Rings (two demos), and Mars Kingdoms. There is also a beta of Bp&#039;s &amp;quot;mod&amp;quot; Marooned on Mars Forever, but I think it seems more like a level pack (no changed graphics, no patches and only minimal edits of the story text). What do you think? --[[User:Grandy02|Grandy02]] 16:01, 20 November 2011 (GMT)&lt;br /&gt;
::::Not really sure, whatever you think is best would be fine.  And thanks, I&#039;ve put them into http://www.shikadi.net/wiki/files/Mods/abandoned/ so you can link to them directly there. -- [[User:Malvineous|Malvineous]] 22:24, 20 November 2011 (GMT)&lt;br /&gt;
:::::Thanks a lot! I added Bp&#039;s work to level packs, as I think that changed titles in the story text do not really make it a mod. Anyway, I noticed that the various download links for dosclassics.com are not working anymore. I haven&#039;t been able to access the site for quite a while. Do you know anything? Does the site even exist anymore? --[[User:Grandy02|Grandy02]] 14:09, 21 November 2011 (GMT)&lt;br /&gt;
::::::I haven&#039;t heard anything but as of a year ago it seemed to be online only for &amp;quot;nostalgic reasons&amp;quot; so I guess it&#039;s finally offline now.  You could try contacting Xtraverse (xtraverse@hotmail.com) and see if he still has a copy of the site... -- [[User:Malvineous|Malvineous]] 00:17, 22 November 2011 (GMT)&lt;br /&gt;
:::::::Okay, I sent him a mail. I wonder, if he doesn&#039;t want to put the site online anymore, would it be possible to archive the site at shikadi.net just like CC314? --[[User:Grandy02|Grandy02]] 17:35, 23 November 2011 (GMT)&lt;br /&gt;
::::::::Certainly I&#039;m happy to do that, if Xtra is willing to send the files across or upload them to my server. -- [[User:Malvineous|Malvineous]] 22:56, 23 November 2011 (GMT)&lt;br /&gt;
:::::::::Yeah, it would be great to keep that fine piece of Keen community history. By the way, the hotmail account seems to be inactive (I got &amp;quot;mailbox unavailable&amp;quot; as a response), so now I&#039;m hoping that he&#039;ll answer the mail I sent to his @spatang.com address... --[[User:Grandy02|Grandy02]] 14:41, 24 November 2011 (GMT)&lt;br /&gt;
::::::::::Hi again. I sent you another abandoned mod, &amp;quot;Trouble on Xion 2&amp;quot; (Keen 4 this time). On a side note, the zip file for [[Trapped Keen]] includes the KEEN3.EXE, which should probably be removed. Also, no answer from Xtraverse yet. --[[User:Grandy02|Grandy02]] 11:22, 26 November 2011 (GMT)&lt;br /&gt;
:::::::::::Thanks, uploaded.  Thanks also for pointing out keen3.exe, I have removed it from the zip. -- [[User:Malvineous|Malvineous]] 01:50, 27 November 2011 (GMT)&lt;br /&gt;
::::::::::::Darn, I guess I should have been more vigilant in copying the levels and mods over to the keenwiki server... -- [[User:Flaose|Flaose]] 04:01, 30 November 2011 (GMT)&lt;br /&gt;
:::::::::::::Meh, you couldn&#039;t get the official Keen3 game out of it anyway thanks to the modifications, so it&#039;s more a courtesy to id than anything else :-) -- [[User:Malvineous|Malvineous]] 11:18, 30 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
==PCKF Archive==&lt;br /&gt;
Thanks again! On a side note, could you delete Norp3 title.png, please? But now something completely different: Maybe you have noticed that the old PCKF (its ezBoard incarnation) is not available in the Wayback Archive anymore since the Archive&#039;s new version was introduced. Due to the attack on ezBoard back in 2005, this means that basically all pre-2005 topics of the PCKF are lost now. I have basically not followed the community this year, do you know if there have been any reactions on this incident? The thing is, I saved a bunch of topics before the old Archive was taken down, and I&#039;d like to send them over to someone who wants to turn that mess into something more comfortable on the web. But maybe I&#039;m just late to the party and there already have been efforts to save the old PCKF. Has anything been said? --[[User:Grandy02|Grandy02]] 15:55, 27 November 2011 (GMT)&lt;br /&gt;
: Done.  And I&#039;m not sure about the PCKF - after all those old topics were lost it seemed a bit hit and miss to save it.  Plus it was all in HTML so it&#039;s difficult to convert - there was some discussion about importing all the topics into the current PCKF.  I&#039;ve also spent hardly any time at the PCKF for a long while, so I&#039;m not sure what the mood is.  I think many people who had topics then are no longer active, it seems to be quite a different group of people there now! -- [[User:Malvineous|Malvineous]] 07:16, 28 November 2011 (GMT)&lt;br /&gt;
::Okay, I see. I might create a topic on this issue in the PCKF this week (after a quick look, there still are quite a few of the &amp;quot;old ones&amp;quot;, though). But if nobody has archived anything, would you mind to host certain topics I saved (of course, not every &amp;quot;W00t! 3000 Posts!!!111!1!&amp;quot; thing)? I might select interesting topics bit by bit - but first I have to know if that is even possible. --[[User:Grandy02|Grandy02]] 17:01, 28 November 2011 (GMT)&lt;br /&gt;
:::Sure, but in that case it&#039;ll be easier to give you some webspace so you can manage it all yourself, if you&#039;re prepared to do so! -- [[User:Malvineous|Malvineous]] 23:21, 28 November 2011 (GMT)&lt;br /&gt;
::::Thanks for your offer! I&#039;ll create a topic in the PCKF first this weekend and see what others did (if anything), then I&#039;ll get back to you. --[[User:Grandy02|Grandy02]] 14:27, 29 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
I had talked with tulip per mail the last few days. According to him, there was nothing on the forum about archiving the ezBoard, and as he is one of the most active members, that has to be the truth. I created a thread nonetheless, but I don&#039;t expect much. So I&#039;d greatly appreciate if you really gave me some webspace. :-) --[[User:Grandy02|Grandy02]] 18:27, 6 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
Hello. I neither have mail nor FTP access right now, so could you write your answer on my last mail at this place (in case you already responded)? Also, could you do me a really big favour and make a little edit to the index.htm of the PCKF Archive? Actually, I finally wanted to post, but today I noticed that the page is incorretly displayed in certain browsers due to a little error on my side. Please change&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;logotext&amp;quot;&amp;gt;PCKF Archive&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;logotext&amp;quot;&amp;gt;PCKF Archive&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and it should be fixed. Thanks in advance! :-) --[[User:Grandy02|Grandy02]] 20:05, 22 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Done.  There was a suspected intrusion on my web host, so my provider reset everyone&#039;s passwords as a precaution.  Your new password is in your e-mail. -- [[User:Malvineous|Malvineous]] 22:39, 22 January 2012 (GMT)&lt;br /&gt;
:: Thank you! :-D --[[User:Grandy02|Grandy02]] 21:06, 29 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
==DOS Classics is back!==&lt;br /&gt;
Good news: Xtraverse replied and put DOS Classics back online! Oh, and by the way, he already created a little PCKF [http://dosclassics.com/old/pckf/ archive] of sorts in the past - well, those topics can be quite... entertaining. ;-) --[[User:Grandy02|Grandy02]] 17:37, 30 November 2011 (GMT)&lt;br /&gt;
:Great news, good to have the site back. -- [[User:Malvineous|Malvineous]] 22:43, 30 November 2011 (GMT)&lt;br /&gt;
::In a second message, he thanks you for your offer to host DOS Classics, but he intends to keep up the site for &amp;quot;the long haul.&amp;quot; DOS Classics was just offline due to a DNS error he forgot to fix. Anyway, yeah, it&#039;s great to have it back, I learned lots of Keen stuff at that place, and it got me into modding. --[[User:Grandy02|Grandy02]] 20:06, 1 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Another apology ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv. Recently, I made a couple of unnecessary double-edits on accident. Sorry if this irks you.-[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 04:29, 24 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Source of creatures&#039; names ==&lt;br /&gt;
&lt;br /&gt;
Hello. I&#039;m new here but I hope to be a good contributor :) What I&#039;d like to know is where the names of the creatures from Keen Dreams and Keen 6 were found because Keen Dreams doesn&#039;t seem to list them all while Keen 6 doesn&#039;t even contain a help section and some of the names mentioned in Keen 6 user manual are different from the names listed here. Can you help? Levellass hasn&#039;t answered yet. [[User:Saluton|Saluton]] 05:46, 4 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hi Saluton and welcome to the wiki!  Things do move a little more slowly here so you might have to give people a week or two to respond :-)  As far as I&#039;m aware all the names are correct - if you can tell me which ones are wrong and let me know where the correct name is we will certainly fix it!  Most of the names came from official sources like the manuals, while one or two were supplied by Tom Hall himself.  I believe there are a few which have been named by fans lacking a more official source, but it should mention this on those creature pages.  -- [[User:Malvineous|Malvineous]] 08:17, 4 February 2013 (GMT)&lt;br /&gt;
:: Sorry, I was wrong, the names in Keen 6 user manual and here do match, but I couldn&#039;t find a user manual for Keen Dreams. Where should I look? In any case, it&#039;s only better for all the wiki articles to refer to sources. :) [[User:Saluton|Saluton]] 09:22, 4 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: The rule so far is that the creature names come from the help text for Keens 1-5+Dreams and from the manual for Keen 6.  Anything different and it&#039;s mentioned in the article.  If you have a look at [[Keen Dreams Creatures]] it will tell you that the names come from the help text in version 1.0 of the game.  This information was removed from later versions. -- [[User:Malvineous|Malvineous]] 10:49, 4 February 2013 (GMT)&lt;br /&gt;
:::: OK, I was wrong here, too :( but citations would still be useful. On another point, wouldn&#039;t it be better to combine those articles on creatures so that there&#039;s only one article per game? There can hardly be any information on most of the creatures anyway, apart from what they look like, how they move, and what they do. Most articles will forever be two- or three-paragraph stubs. [[User:Saluton|Saluton]] 14:59, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: I guess citations could be useful - they are already there on most if not all the Dreams pages, but there is a lot of more important work needed on all the mod pages so this is a fairly low priority for us.  Combining the creatures onto a single page has already been done - each episode has a summary page for the creatures.  But we decided long ago it was still worth having a dedicated page for each creature as that gives us more room for additional details, like which levels the creature appears in, bugs in its behaviour, tricks for avoiding it, and so on.  It also makes it easier to link to creatures - otherwise we&#039;d have dozens of redirect pages anyway.  But likewise we also decided that mods should not have individual pages for each creature, as there would be thousands of unnecessary pages then. -- [[User:Malvineous|Malvineous]] 19:45, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: I see, thanks. Why is there no page on [[Bobby Prince]]? Was anything decided on that? [[User:Saluton|Saluton]] 06:11, 7 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::: No, there has been no decision there.  If you have some information about Bobby Prince related to Commander Keen, by all means go ahead and create a page for him.  But if you&#039;re looking for things to do, there are [[Vorticon Mods|lots of]] [[Galaxy Mods|mods]] that don&#039;t have pages created yet, and each page needs infoboxes, screenshots, level lists, etc.  This is where most of the work is being done at the moment.  Have a look at [[Episode Null]] for what we&#039;re aiming for on each mod&#039;s page. -- [[User:Malvineous|Malvineous]] 22:03, 8 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::: I don&#039;t think pages on the creators of Keen should only contain information related to Keen. To my mind, a proper encyclopedic article about a person should give a complete view of their biography even if it&#039;s in a Keen encyclopedia, but anyway, we&#039;ll see about that when I have enough time to actually edit articles. Thanks for this discussion :) [[User:Saluton|Saluton]] 07:46, 11 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::: Of course you can include non Keen-related information, but since it&#039;s a Commander Keen encyclopaedia it makes sense to give a greater focus on things related to Commander Keen.  Otherwise you may as well just link to the Wikipedia article instead! -- [[User:Malvineous|Malvineous]] 23:01, 15 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::::: I would suggest just linking to the Wikipedia article of Bobby Prince and other creators of Keen when needed.  There&#039;s no reason to repeat something that is stated better elsewhere. -- [[User:Flaose|Flaose]] 15:48, 20 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Goodbye, Galaxy! ==&lt;br /&gt;
&lt;br /&gt;
Why is there no punctuation in the title [[Goodbye Galaxy]]? [[User:Saluton|Saluton]] 14:47, 11 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Very good point.  I&#039;ve renamed the page - thanks! -- [[User:Malvineous|Malvineous]] 23:01, 15 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Moving of pages and their location on alphabetical lists ==&lt;br /&gt;
&lt;br /&gt;
I notice when a page is moved, it remains in the same place as the old page would when listed in a category. This could be confusing, is there any way to circumvent it? -[[User:Levellass|Always so much to do!]] 09:22, 16 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: It shouldn&#039;t - do you have any examples?  Keep in mind the category pages are cached so it can take a few page views before they all get updated after a rename.  Certainly by 24 hours later they should all be correct and up to date. -- [[User:Malvineous|Malvineous]] 21:27, 16 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Delete some pages ==&lt;br /&gt;
&lt;br /&gt;
[[:Category:Incompatible Patches]] is an invalid category, it seems that such pages should always have a small &#039;p&#039; in patches due to the way the wiki works. This page is thus extra and should be deleted post haste. -[[User:Levellass|Always so much to do!]]&lt;br /&gt;
: The following pages can also be deleted, having no other pages linking to them and being the subject of double redirects; [[Moving Platform]], [[Patch:Keens Left]] and [[Patches:Game start]], results of poor syntax -[[User:Levellass|Always so much to do!]]&lt;br /&gt;
&lt;br /&gt;
:: Done! -- [[User:Malvineous|Malvineous]] 14:48, 20 March 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: Many thanks, that clears things up a bit, I dislike superfluous pages. -[[User:Levellass|Always so much to do!]] 19:28, 20 March 2013 (GMT)&lt;br /&gt;
:::: Bleah, found yet another duplicated page, (Mind the original was very old and in need of updating.) Could you please remove [[Patch:Light Switch]], it has stuff on it, but nothing that isn&#039;t on the original page now. (Also there&#039;s only one page that links directly to the light switch page, so it was easy to make sure there&#039;s no links to the duplicate page.)&lt;br /&gt;
&lt;br /&gt;
::::: Done.  I&#039;ve also made you an administrator of the wiki so you should be able to delete pages yourself in future (there&#039;s a new tab at the top of each page you will see once you log out and back in again.) -- [[User:Malvineous|Malvineous]] 00:06, 2 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: Thanks, that should help, assuming I don;t make any more dumb mistakes like the mess you just fixed up. -[[User:Levellass|Always so much to do!]] 09:08, 8 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: Hahaha no worries, everyone makes mistakes :-) -- [[User:Malvineous|Malvineous]] 11:56, 8 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== About my Cosmo Mod ==&lt;br /&gt;
&lt;br /&gt;
Thanks for the heads-up. I didn&#039;t know there was a page at the Modding Wiki for Cosmo Mods. I&#039;ll make sure to put the mod article there next time.&lt;br /&gt;
[[User:T-Squared|T-Squared]] ([[User talk:T-Squared|talk]]) 22:32, 23 February 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== A bug ==&lt;br /&gt;
I tried to get my three mods in the Keen 1, Keen 2, and Keen 3 mods page. But I can&#039;t do it, because it won&#039;t do it. Sorry about the edits I&#039;ve done. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 23:52, 15 March 2015 (UTC)&lt;br /&gt;
:Hello Quinton. You did everything right, but those pages are not always refreshed automatically. To purge a page&#039;s cached version, add &amp;quot;?action=purge&amp;quot; to the page title in the address bar and commit, e.g. &amp;lt;nowiki&amp;gt;http://www.shikadi.net/keenwiki/Keen_1_mods?action=purge&amp;lt;/nowiki&amp;gt;. You can also read about this in the source code of the mod lists. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 07:59, 16 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mod title confusion ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv. I&#039;m currently creating stubs for the remaining missing mods, but I&#039;m confused about the wiki&#039;s handling of mod titles, especially those with subtitles. Sometimes the main (series) title(+episode number) is used (e.g. [[The Clones of Evil 1]], [[Death to the Vorticons 3]]), but for others the subtitle/episode name (e.g. [[Vanished To Venus]], [[Kidnapped Keen]], TUIT trilogy), while in some cases the full title is given to the article (e.g. [[Onward: Silcar 1: Nightmare Before Teatime]]). Are there any rules for this? And a unique case seems to be [[OrbKeen1]], which is given its production name rather than actual title. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:37, 21 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not sure - I don&#039;t think there&#039;s a specific rule at the moment, but if you want to come up with one then by all means.  I guess what you want is something unique, so MyMod1, MyMod2, MyMod3, etc. aren&#039;t very good because they are too similar.  Likewise the Onward: Silcar one is probably a bit too long.  I&#039;d be happy renaming that to [[Nightmare Before Teatime]] and then applying that rule to the others.  There&#039;s probably no need to have the series name in the title, as the previous/next episodes in a series are listed in the infobox on each page.  What do you think? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:22, 21 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I&#039;m okay with both using the full title or only the episode&#039;s name. Sure, there would be quite a few lengthy page titles in case of the former option, so it might be better to choose the latter one. My only concern is that some mods could be more commonly known by the series name+number rather than the subtitles from what I&#039;ve seen (e.g. Norp the Yorp, Shadow Keen, Marta). Do you think that would be still acceptable? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 11:03, 22 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I think so.  Providing the common name(s) appear in the article itself then it will show up in a search for those names, so it shouldn&#039;t be a problem locating a mod.  If it&#039;s really bad then we can always create a redirect, although personally I would try to manage without redirects first, as I&#039;d rather not see every mod come with a dozen redirects attached as it will make it more difficult to maintain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:49, 22 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Sounds good. Though I think there would generally have to be one redirect for the affected pages. For example, &amp;quot;Brain Damage&amp;quot; would have &amp;quot;Norp the Yorp 3&amp;quot; so that visitors can also find the mod when typing &amp;quot;Norp&amp;quot;. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 19:49, 25 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: That&#039;s fine, although if it&#039;s only searching you&#039;re worried about, on the mod page putting something like &amp;quot;Brain Damage (also known as Norp the Yorp 3)&amp;quot; should be enough. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:44, 29 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::: I think it would be more comfortable so that a visitor gets directly to the correct page when typing the title they are used to. So, could a rule for this be created? Also, would it affect the names of the zip files? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 08:10, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::: Can you give me an example?  When I type &amp;quot;Norp the Yorp 3&amp;quot; into the search bar the mod is the first result, and if I type &amp;quot;Brain Damage&amp;quot; it&#039;s the second result.  Wouldn&#039;t that be enough for people to find it using whatever name they prefer?  Or you just prefer if it goes straight to the page if there&#039;s an exact match?  I don&#039;t mind just as long as there&#039;s a good reason for doing it one way over the other.  One thing I want to avoid is having a dozen redirects for each mod, with only things like capitalisation being the difference between some of them. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:07, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::::Yeah, I&#039;m only referring to going straight to the pages. I personally don&#039;t mind if I have to do one more click, just thought that some visitors wouldn&#039;t like that when entering a mod&#039;s common name a list of search results appears first. I fully understand that the number of redirects has to be kept small, never intended to add different capitalisations and stuff. If anything, I only imagined one per mod if it is relevant at all (as in case of the Norp mods). If a rule is made, would the zip files also have to be renamed? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:54, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::::: Fair enough if there aren&#039;t huge numbers of them.  Remember that redirects aren&#039;t supposed to be categorised though, they&#039;re only supposed to be used for pages that used to exist on the wiki but were deleted/merged, so that any external sites linking to the old page still work.  Up to you whether you want to rename the files, but I think we should stick to one title per filename though.  Most people will only see the filenames temporarily while they download mods, so there should be no need to cram too much information into the filename! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:25, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m almost done with with adding pages for the missing mods. However, I have a question related to the download links in the mod galleries. In most cases, only the download for the latest version is needed there. But what about downloads of remakes, e.g. those of Yorphius II, ShadowKeen and Crash on Gobo III? Maybe even a separate box (though not a separate article) that also includes the remake author&#039;s name? If there&#039;s one mod that definitely needs two download links, it is [[The Grand Intellect: Doomship Dilemma|Doomship Dilemma]], because the mods by Levellass and Szemigi are basically two different works based on the same beta. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 07:38, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Nice work!  If the mods are that different then they probably deserve their own pages, like [[The Grand Intellect: Doomship Dilemma (Levellass version)]], [[Yorphius II (Deluxe)]] or [[Crash on Gobo III (remake)]].  However I think we need to come up with some criteria to make sure we don&#039;t get a different page for every revision of a mod.  I think the criteria should be:&lt;br /&gt;
:* If the remake is by the same author as the original, then it should be considered the latest version and only that version included in the list (but the older versions of course listed on the article page.)  This is to encourage mod authors to make new mods instead of endlessly tinkering with existing ones.  It is fine to have screenshots of the different versions and to explain why they were released, but only one infobox can go on a page (otherwise it will break the categories and mod lists.)&lt;br /&gt;
:* If a mod builds on another one (by the same or a different author), then a new article for it should not be created, and the new mod should be listed as an alternate version on the original mod&#039;s page.  This is to avoid having people change a couple of graphics and get their own mod listed.  The way [[Yorphius II]] is written now is perfect.&lt;br /&gt;
:* An exception to the previous rule is allowed for substantial changes, such as a complete levelpack for an existing mod.  If you are unsure whether a mod-mod counts or not, then it doesn&#039;t.  It should be very obviously a whole new mod based on an existing one, and not just a few changes or a couple of new levels.  This means [[Gridlock&#039;s Dead in the Desert Levelpack]] should have its article deleted, and the content moved onto [[Dead in the Desert]] where it should be listed as an alternate version by a different author.&lt;br /&gt;
: Using this criteria, Doomship Dilemma would get split into two mods/pages, Yorphius II would have an alternate version listed (unchanged to how it is now), and Crash on Gobo III would have the more recent change listed as the latest version.&lt;br /&gt;
: What do you think, does this seem fair? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:06, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I agree with the most points, but regarding Gridlock&#039;s level pack, I&#039;m not sure. I mean, level &amp;quot;packs&amp;quot; with just one level based on the original games also have their own articles, so I think a small level pack for a mod is as worthy. But any way, what to do with level packs in general? Most pages don&#039;t use any mod/level pack-specific templates yet (though several have the level template). Should they also use the mod infobox and thus appear in the mod lists? Or a slightly altered template and separate lists? I think there should be a way to differentiate between them. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:03, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I&#039;m not so keen on having an entirely different list for full mods vs level packs, but what if we modify the current mod lists so that under each mod (where it currently has a download link, the number of levels, and the mod status) we include a new item that says whether the mod includes new graphics?  That way full mods would say yes here, and level packs say no, but everything could be in the same mod list.  This item can pull from the existing mod infobox, so current pages wouldn&#039;t have to be updated to include the new info.  Would that work? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:30, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Good idea. Okay, now the only remaining issue is the sheer number of level packs that don&#039;t have a page yet (more than 40). Of course I could do it all on my own again, but the progress would be very slow, and the outdated links would continue to be in the navigation. It would be a different case if just putting infoboxes on those pages would be enough for stubs, not sure about that. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:29, 21 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::The page only needs an infobox to appear in the list, and ideally a screenshot, but really, as much or as little as you can manage is fine.  Maybe you can come up with a simple procedure explaining what to copy/paste and recruit some help from the PCKF? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:43, 27 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::I&#039;ll ask the PCKF members to help with screenshots and red links once I&#039;m done with the few missing &amp;quot;blue links&amp;quot;. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:50, 24 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::::Sounds good!  Thanks for all your effort cleaning up the mod lists, it&#039;s great to have someone willing to put the time in to do this properly! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:37, 24 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
==File name problems==&lt;br /&gt;
I moved [[Commander Keen &amp;amp; the Morticore]] to [[The Morticore]], and I have encountered a problem. The files are now broken, because the mod title has changed. I don&#039;t want to upload a duplicate of the file, so is there anything else I can do? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 16:22, 23 May 2015 (UTC)&lt;br /&gt;
:I&#039;ve &amp;quot;moved&amp;quot; the files. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 16:30, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Translation mods ==&lt;br /&gt;
&lt;br /&gt;
Hi, I&#039;ve two questions regarding mods that act as translations of the original games, more specifically the Hungarian translations by Szemigi. First, would each one of those mods have its own page just like other skin mods? Texts and text graphics are changed. And second, how to localise the downloads? The zip files contain installers for Windows. Should the zip archives include the actual game files or the installer executables? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 19:15, 26 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hmm, they&#039;re not really &amp;quot;mods&amp;quot; in the gameplay sense so they kind of belong on the main episode pages instead.  Do you think we could put them somewhere there?  Maybe we need to expand each episode&#039;s page to contain a bit more info as well as things like this.  As for the download, technically we can&#039;t distribute modified versions of the game so it should be the usual patch files that sit on top of the original game.  You don&#039;t need an installer for this so hopefully that can be removed, especially since it won&#039;t work for anyone running a Mac, Linux, or a real DOS PC. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:54, 26 July 2015 (UTC)&lt;br /&gt;
::Yeah, I was thinking the same, it would require an additional emulator for non-Windows users, so I&#039;d zip the extracted files for the localised downloads. Maybe we could have a page named &amp;quot;Translations&amp;quot;? &amp;quot;Keen 1 Translations&amp;quot; and so on would have too little content each, so one page for all translations would be enough, and each episode page would have a link to it. What do you think? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 15:03, 13 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: That sounds fine to me, feel free to go ahead and create it! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:27, 15 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
The translations are essentially skin mods, too, aren&#039;t they? What about a collective page for skin mods (that could also include the translations then)? I&#039;ve to agree that it&#039;s hard to draw the line, and things like &amp;quot;play in CGA&amp;quot; or &amp;quot;play as Vorticon (Keen&#039;s sprites simply replaced by Vorticon&#039;s)&amp;quot; probably don&#039;t need their own pages. But I wouldn&#039;t like a complete exclusion of them, either. Not to mention that the wiki provides the downloads for all of them since more than two years. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 10:41, 20 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;m still not so keen on listing skin mods.  To me they are not much different to changing the sounds or music and leaving the game otherwise unchanged.  It&#039;s like an incomplete mod, and incomplete mods should not be listed here unless they are abandoned and enough progress has been made that playing them is significantly different to the original game.  I guess it hinges on whether the KeenWiki is supposed to be a database of every single mod, no matter how insignificant, or whether it should be an index of the better more complete mods.  I am of the opinion that you need to change more than one or two things in order for the mod to feature here.  If a skin mod is good enough, then someone over at the PCKF will surely use it in a full mod and then there&#039;s no problem listing it here.  For the completists, who want every single little change preserved, maybe other sites like moddb.com would be a better match?  Translations are a special case as they make the original games accessible to a wider audience - in my opinion they aren&#039;t really mods, as the content is the same as the original game, just in another language. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:13, 19 September 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;ve created [[User:Grandy02/Test|a list]] with all the skin mods + translations. Do you think the SGA mods would count as &amp;quot;translations&amp;quot;, even though the language remains English? Regarding the skin mods, a few words have been exchanged in the [https://pckf.com/viewtopic.php?t=3206&amp;amp;start=15 PCKF topic]. Personally, I wouldn&#039;t mind if they had pages. Technically, the abandoned mods without changed levels are a similar case. But I wouldn&#039;t create pages for the &amp;quot;Military&amp;quot; mods, for example, as only some sprites have been changed and nothing else, but in those cases I&#039;d keep download links somewhere due to their &amp;quot;historical&amp;quot; value (made during the early years of Keen modding). Not sure about Cybernetic Dreams, though, as quite a few graphics have been edited, while there is nothing else like patching or text edits. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:24, 20 December 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Translation mods definitely deserve a place, but I think they should be separate to mods and listed close to the official games, since the idea is that they are the same as the official games but open them up to a wider audience.  An SGA translation mod is interesting, but if it&#039;s changing the English parts to SGA then it&#039;s more of a curiosity than something I think anyone would choose to play.&lt;br /&gt;
&lt;br /&gt;
: For skin mods, I think we need something similar to Wikipedia&#039;s notability guidelines.  Skin mods may be worth listing if they are historically significant (such as one of the first ever mods) but beyond that I personally feel that unless there are new levels, the mod doesn&#039;t add anything new to the original games.  Playing the original games is fun - but playing them with a different sprite here or there is boring - you aren&#039;t going to make any new discoveries.  I see skin mods as being lazy, and when people complain about having to make even just one new level, that just reinforces the idea that they are being lazy and want a mod page with the least amount of effort possible.&lt;br /&gt;
&lt;br /&gt;
: How about asking the people over at Keen:Modding what they think?  If you can get the modders themselves to cast a vote about whether we should include skin mods or not, then I am willing to go with their decision. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:30, 20 December 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Galaxy Mods - adding additional topic ==&lt;br /&gt;
&lt;br /&gt;
Hey Malvineous, quick question to that [[Galaxy Mods|Galaxy Mod]] page: What about adding a new topic like &#039;&#039;Notable Demos&#039;&#039;. This section would comprise round about 12 alpha-mods and it might give a bit more clarity.&lt;br /&gt;
I can take care of it, as soon as you give me your &amp;quot;OK&amp;quot; for doing so. -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 21:21, 6 April 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not quite sure exactly what you are proposing, but you are welcome to make a start and then get some opinions about whether people like what you&#039;re doing or not.  It&#039;s a community wiki so it&#039;s not up to me :-)  However do bear in mind that per the note at the top of [[Galaxy Mods]], that page will be deleted once all the mods are moved off it.  If you&#039;re going to start classifying mods as notable though, make sure the criteria you are using are very clear, otherwise everyone will want to add their own mods to the list! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:41, 25 April 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== What happened to the voting system? ==&lt;br /&gt;
&lt;br /&gt;
I noticed that the voting system that is found inside the CK mod info boxes appears to be disabled. Is this because of some nasty bug happened or was this done on purpose? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 05:45, 14 May 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It seems that the extension was not updated and/or it&#039;s source is not longer available. @Malvineous: But there is an alternative extension available. The installation seems pretty straight forward. See: https://www.mediawiki.org/wiki/Extension:VoteNY -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 20:10, 25 March 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Possible username change? ==&lt;br /&gt;
&lt;br /&gt;
Hey there, Malvineous. I was wondering if you admins have the power to rename user names or not. If so, then I would appreciate it if you could change my username into &amp;quot;Quillax&amp;quot;, my current name in the PCKF and K:M. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 02:33, 26 March 2017 (UTC)&lt;br /&gt;
: I don&#039;t think we can do so easily, but if you are able to find some SQL that can do it for MediaWiki then I&#039;m happy to run that. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:31, 1 October 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Weird thing with adding new external links ==&lt;br /&gt;
&lt;br /&gt;
I was updating the download link and adding a new one to my site in The Sunnylands. During the security thing, however, the images are only displayed as &amp;quot;V1 SHUTDOWN ON 2018-03-31&amp;quot; and no sounds are played when doing the audio challenge. I thought things broke at first, but I typed the text in the image and it was working fine.  I feel like I should let you know about this, though, just in case. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 14:31, 7 April 2018 (UTC)&lt;br /&gt;
:Oh, it seems like anything will work in the security thing. I think it might be good to fix it if possible. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 14:52, 7 April 2018 (UTC)&lt;br /&gt;
::Thanks for the heads up!  I&#039;m glad it&#039;s not stopping people from adding links.  I am (slowly) working towards moving the wiki onto a new server so I&#039;ll probably remove it when that happens.  The requirement for people to fill out a biography when they register has so far kept out 100% of the spam, so hopefully that keeps up and we won&#039;t need the external link captcha any longer. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:42, 8 April 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== My Mortimer skin for Keen 5 and 6 got deleted ==&lt;br /&gt;
&lt;br /&gt;
Hey, Nisaba from PCKF removed my Mortimer skin for Keen 5 and 6 and I cannot recover these anymore. These contained the EXE files, but this should have been updated, so these won&#039;t have the EXEs anymore. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 13:45, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: If it was a skin mod (only graphics changed) then it&#039;s against the [[KeenWiki:Guidelines|Guidelines]] so that might be why.  You&#039;ll have to change more than just the graphics to justify including it here.  Knowing how many popular mods you make though, I&#039;m sure you&#039;ll have no trouble making some new levels for it!  Then we can include it here. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 13:49, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Strange, because Mortimer McMire Keen 5 and 6 skin changes has only sprite and some other graphic edits. What about Keen 1-3 skins then?--[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 14:23, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: My personal preference is to delete them, but some in the community want to keep them, so we&#039;re still a bit undecided.  If you have some good ideas let me know.  I just want to avoid the KeenWiki becoming a dumping ground for fan art, when there are much better sites for that type of thing (e.g. DeviantArt) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:54, 28 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== EXE files in Keen 2,3,5,6 mods ==&lt;br /&gt;
&lt;br /&gt;
Hey, I saw that some of the Keen 2,3,5,6 mods contain the EXE files. What to do? Because I have mods as well that has EXE and I should update them sometimes. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 14:36, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: We are trying to update these mods to delete the .EXE files where we can.  If you are updating your mods it is best to set it up so that the player unzips the mod over the top of a working copy of the game, so that the .EXE is not distributed on the wiki.  That would be very helpful if you have mods like this that you can update! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:54, 28 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Semantic questions ==&lt;br /&gt;
&lt;br /&gt;
Hey there, Malvineous. I&#039;ve been updating mod pages to fit in the latest style, but I thought I&#039;d ask you a few questions. First, I&#039;d like to mention the ending and title screen levels in the Vorticon mods. I&#039;ve been including them since your adding a mod tutorial requested so, but what I&#039;m wondering about is if they should be considered required or not. I&#039;ve been setting them to &amp;quot;Yes&amp;quot;, since I figured that one has to go through them to beat the game, but I just want to make sure. Also, should the items in the title screens be counted for points or no? That is something I&#039;m not so sure about.&lt;br /&gt;
&lt;br /&gt;
Another thing I want to bring up is hazards. In my mods, I put them into the actors list with their replacements stated. However though, I now feel like listing the tile hazards as replacing something is kinda dumb, as it&#039;s really easy for one to add more tile hazards and they don&#039;t have much differences between each other (especially in Vorticons mods). I think it&#039;s alright if it replaces a hazard that has something to do with a sprite, though, such as the Underwater Mine. I think it&#039;d be nice to either have the ModActorImage template updated to have something for if it&#039;s a tile hazard or not or a new template (something like ModHazardImage?).&lt;br /&gt;
&lt;br /&gt;
Finally, I want to bring up something that has to do with the regular Sqeeks and levels from therealdopefish&#039;s levelpacks. Both have been used in more than one mod, with the former replacing different creatures (although they act nearly identical) and the latter using different level numbers. I&#039;m not sure how to explain it but if you were to look Flames on Earth and The Sqeek Battle for the former and therealdopefish&#039;s two levelpacks for the latter, I think you&#039;ll be able to see that there is a problem. It&#039;d be nice if it can be fixed, although I think therealdopefish&#039;s levelpacks are a lot like each other, with one just having extra levels, so those two could probably just be merged. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 20:09, 11 November 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hey, very good questions!  I&#039;m a bit out of the loop at the moment so not sure which levelpacks you mean, but (although I haven&#039;t tested it), in theory you should be able to put multiple &amp;lt;nowiki&amp;gt;{{LevelImage}}&amp;lt;/nowiki&amp;gt; templates on a level page to have the same level appear in multiple mods.  If this doesn&#039;t work let me know and I&#039;ll fix it.&lt;br /&gt;
&lt;br /&gt;
: With the hazards my opinion is that they are just tiles so they should not be listed (otherwise we&#039;d be listing every single tile that&#039;s changed) however exceptions can be made if one of the hazard replacements is particularly notable for whatever reason.  Otherwise I&#039;d leave them out.  The mod pages are after all just meant to be a summary of the important bits rather than a list of every single change.  If you think it would be better to have a ModHazardImage then by all means go ahead and create one - just copy the existing one and modify as needed, that&#039;s perfectly fine.&lt;br /&gt;
&lt;br /&gt;
: The &#039;required&#039; attribute was meant to indicate whether the level must be *played* in order to finish the game so I guess by that logic the title and ending levels can be set to false for most mods, unless somehow the player ends up in them intentionally and cannot finish the game otherwise.  Interesting point though, I had not considered the non-level levels!  I would still count it for points though, just for curiosity&#039;s sake, but at the same time I wouldn&#039;t give it a high priority so it&#039;s fine if it&#039;s left blank.  However I am now wondering whether these should be included at all, since if there&#039;s no way to play the level without cheating, isn&#039;t not really a level... -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:58, 11 November 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ModActorImage request ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv, could you take a look at [[Template talk:ModActorImage]], please? I think the template needs a &amp;quot;Link&amp;quot; parameter just like the one used by ItemImage. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:57, 18 May 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry for the late reply, I didn&#039;t get a notification for some reason and I&#039;m a bit behind on all this stuff at the moment!  I replied on the [[Template talk:ModActorImage|Talk page]] but essentially to avoid the wiki becoming a dumping ground for all sorts of random fan art, there are some restrictions on what can be uploaded.  Generally speaking it&#039;s one page per mod, and all the actor info, story, etc. should be on that single page.  We found early on that having a separate article for each mod actor was too much work because they would never be completed fully, so by keeping everything on the one page it makes it easier to maintain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 04:24, 13 July 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
::No problem, thanks for your reply. I answered on the talk page. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:35, 13 July 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== New version of a file doesn&#039;t work ==&lt;br /&gt;
&lt;br /&gt;
Some minutes ago, I uploaded a new version of The Ultra Omegamatic in-game image with new tiles, but it is the same as the first version of the image, how I can change it?--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 18:54, 8 September 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You have to clear the cache of your browser in order to see the changes take effect. &lt;br /&gt;
: -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 23:50, 8 September 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== All the fangames use the new infobox ==&lt;br /&gt;
&lt;br /&gt;
Hi, I would like to tell you I checked all the fangames infobox and all of them use the new infobox, so there is a thing to remove in the list of &amp;quot;To do things&amp;quot;. Soon I&#039;ll check the unused images--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 20:07, 8 October 2020 (UTC)&lt;br /&gt;
: Nice job!  Feel free to remove it from the list if you&#039;re satisfied it&#039;s done!  (And feel free to add anything else you think is important.) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:34, 9 October 2020 (UTC)&lt;br /&gt;
I now finished to check the unused images: some of them are present in their articles but it says they&#039;re unused, the others have been hidden so an administrator can delete them except for the 1st level of The Prisoner&#039;s Dilemma. It can be utilised when it&#039;ll be released--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 10:59, 9 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I also uploaded some fangames images to fix the broken links, but I&#039;ve done an error moving a file and uploading another image for [[Keen: Next (fangame)|Keen: Next]] because I didn&#039;t know both the files have the same name. The rest of the fangames that need pictures are unplayable on my PC so I can&#039;t do some screenshots of them--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 20:09, 9 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just finished putting all the files into categories. The remaining are 12: An image of Bobby Prince, some images of my mod in development that need to be deleted, some levels of Keen 3 Part 2 which are the same as the originals and which I think should be deleted and some screenshots of some other Mod. Keen Aqua 3 I think--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 07:41, 11 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
: That&#039;s great, thanks so much for all your effort!  I&#039;ve made you an administrator of the wiki so you should now have access to delete files if you want to tidy up that last little bit.  Sometimes the wiki software can be a little slow to realise an image is in use if you have only just added it to a page, but if you use the [http://www.shikadi.net/wiki/keen/api.php?action=query&amp;amp;meta=siteinfo&amp;amp;siprop=statistics statistics API] and look at the &amp;quot;jobs&amp;quot; value then once it has reached zero everything should be up to date.  If this is zero but you still have an image listed as unused when it&#039;s definitely in use, let me know and I&#039;ll investigate.  Remember that filenames on the wiki are case sensitive so it&#039;s possible it&#039;s a duplicate if the case is different. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:19, 12 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Obviously I&#039;ll have to get used to it. Because I don&#039;t know how certain functions work so by mistake I reversed your edits but quiet I fixed everything--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 08:01, 12 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I also deleted all the unused images and the duplicates. The remaining images are from unreleased mods(They can be utilized when the mods will be finished) and levels that are present in their articles(even if it says they&#039;re unused) . So this work is finished&lt;br /&gt;
&lt;br /&gt;
: I refreshed the wiki link database as it looked like the unused images shouldn&#039;t have been there, and sure enough now it has realised which ones were in use and most of them have gone from the list.  There are still a few unused images so hopefully those can easily be sorted. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:57, 14 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Good. So I can sort the rest--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 10:40, 14 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Creatures and Hazards ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv, since some years, the creatures and hazards of the original games appear on the main page of a game rather than on separate pages (though certain pages like [[Keen 1 Hazards]], [[Keen 6 Hazards]] and [[Keen GBC Creatures]] were not changed to redirects). While the template EpisodeInfo still contains separate links for creatures and hazards, both of them appear under the heading &amp;quot;Actors&amp;quot;. Personally, I&#039;d prefer to have separate sections for them (Nisaba agreed). What do you think? I guess that would not only require a new template, but also some new properties? Or would there be another way to split them on the game page? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:07, 11 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I couldn&#039;t help but read. It would be a very nice idea to create separate pages for each hazard. It would help readers to know more about these--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 08:34, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Actually, I was referring to separate sections on a game&#039;s main page rather than separate pages for the various hazards. Most of them are just deadly tiles, though I wouldn&#039;t mind if pages were made for ice cannon, laser cannon, jack, underwater mine, etc., since these stand out. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 15:24, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Both are cool ideas. So let&#039;s wait Malvineous&#039;s reply--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 18:00, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: I just dropped by to let you guys know that I second Grandy02 suggestions. &lt;br /&gt;
:::: -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 19:49, 27 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Are you saying you just want the creatures under the &amp;quot;Actors&amp;quot; heading split into two headings, &amp;quot;Creatures&amp;quot; and &amp;quot;Hazards&amp;quot;?  I&#039;m fine with that (I think those pages could do with a revamp in general) but do we need to agree on the criteria for what goes where?  e.g. if you say hazards are anything that is a tile then what about a [[Pat Pat]], isn&#039;t it a creature?  Maybe hazards are things that are environmental, but then the Ice Cannon doesn&#039;t really qualify...&lt;br /&gt;
::::: There is an existing property for &#039;harms keen&#039; that could be used to split the sections but it sounds like this isn&#039;t what you are after.  If you need to add a new property then that&#039;s no problem, let&#039;s just agree on how to classify it first.  Perhaps it&#039;s worth asking on the PCKF or K:M for opinions there?  I don&#039;t think too many active community members keep an eye on these talk pages.  Either way we&#039;ll need to create a page for each hazard so we can use the Semantic MediaWiki query tools to populate the lists. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:14, 28 July 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::Splitting into two headings (possibly as subheadings of &amp;quot;Actors&amp;quot;) sounds good. What about an additional parameter for the &amp;quot;ActorImage&amp;quot; template that allows to distinguish between the two? The Pat Pat is indeed a tricky one, technically it&#039;s just a deadly tile, maybe an exception could be made for that one. I&#039;d list everything as &amp;quot;hazards&amp;quot; what has been referred to as such on the &amp;quot;Hazards&amp;quot; pages (including Ice Cannon, Jack, Dart Gun, Laser Cannon etc.). Not sure about the &amp;quot;Stranded Fish&amp;quot; (or whatever it is), though. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 16:03, 7 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== HTTPS &amp;amp; New URL ==&lt;br /&gt;
&lt;br /&gt;
I see the URL for the KeenWiki has changed and the site is now HTTPS - when did that change and, out of interest, were you contacted by a user called &amp;quot;mr_pants&amp;quot; requesting it?  It&#039;s just that I was contacted via IRC this morning under the mistaken assumption that I had control of that part of the wiki. -- [[User:DHeadshot|DHeadshot]] ([[User talk:DHeadshot|talk]]) 16:39, 11 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No, nobody has contacted me about it.  It is something I have wanted to do for a long time, starting the process [https://pckf.com/viewtopic.php?f=3&amp;amp;t=4396 over two years ago] and only finishing [https://pckf.com/viewtopic.php?t=9247 a couple of months back]. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:30, 12 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Camoto: Dangerous Dave - graphic problems ==&lt;br /&gt;
&lt;br /&gt;
Hey! Today I translated (only hexadecimally unfortunately) Dangerous Dave 1 to Hungarian. I wanted to translate the graphic signs like &amp;quot;DAVES:&amp;quot; &amp;quot;GO THRU THE DOOR&amp;quot;, etc. as well, but when I exported original VGA (!) graphic stuff and then I modificated it and re-imported it, the graphics were screwed up when I started new game. (Even the blazing Dangerous Dave sign had little glitch as well). Help me! [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 20:48, 3 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: This is a known problem that was only very recently fixed.  I&#039;m not working on the old Camoto version any longer, but you can try the incomplete development version of the new Camoto version that runs in a web browser.  It can&#039;t do as many things as the old Camoto yet but it can modify the Dave graphics without corrupting them.  See https://camoto.shikadi.net -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:36, 3 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Adding a Demo/Beta release date to infoboxes? ==&lt;br /&gt;
&lt;br /&gt;
Right now, it seems half the time the first release date is the release of a demo/beta (such as with [[Atroxian Realm]]), and half the time it&#039;s the first full release (such as with [[Operation Ocflore]]). It&#039;s inconsistent.&lt;br /&gt;
&lt;br /&gt;
In my opinion, the best way to fix this would be to add a Demo/Beta Release date to the info box and rename the Release date to Official Release Date. [[User:Pandakeen|Pandakeen]] ([[User talk:Pandakeen|talk]]) 18:43, 7 August 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Fair point.  I&#039;m less keen on the demo/beta release date because mods shouldn&#039;t have pages made for them until they are finished (as this acts as motivation to finish the mod instead of abandoning it shortly after the demo has been done) so I&#039;d be fine with only having the date of the full release and not worrying about any demos or betas. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:56, 9 August 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;ll go ahead and correct the dates, then. [[User:Pandakeen|Pandakeen]] ([[User talk:Pandakeen|talk]]) 13:27, 20 October 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Thanks for the admin access! ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv, thanks for giving me access to administrator tools, including mass-editing! A few days ago, I fixed tons of download links to reflect the KeenWiki server change. It took me a while to figure out how to use the mass-editing tool, but once I got it down it was a breeze. The download links seem to be working now. I also upgraded them so that they use HTTPS instead of HTTP -- hope that doesn&#039;t do any harm!&lt;br /&gt;
&lt;br /&gt;
When I first took care of the fan-game download links, I made a slight mistake. It messed up the &amp;quot;List of fan-games&amp;quot; page, but thankfully, I got that fixed. The individual fan-game pages seem to be alright, so I didn&#039;t bother with those, but I thought I&#039;d point out the mistake just in case something else did get messed up. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 07:10, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: All good, I wasn&#039;t sure if you got my e-mail or not!  As long as you can fix any problems you create then it&#039;s no issue :) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:23, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Is Keen 1 Randomiser a mod or a tool? ==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve been thinking of making an article about Multimania&#039;s [https://davidgow.net/keen/randomiser.html  Keen 1 Randomiser], but I can&#039;t decide if it&#039;s a mod or a tool. On one hand, the index page of Multimania&#039;s website describes it as a tool and it looks like it could be used with mods, or at least the simple ones. On the other hand, however, it seems to be made more for playing rather than creation. What do you think? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 07:10, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: In my opinion if it&#039;s a patch you run as part of the game then it&#039;s a mod, and if it&#039;s a program you run that produces a mod you then run as a second step (and can distribute independently), that&#039;s a tool.  However if the difference is that slight then it won&#039;t hurt to list it in both categories. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:23, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Well, you can run a program (RANDKEEN.EXE) that will generate the randomized levels and patch file, which could be independently distributed. On the other hand, however, you can run a batch file (RNDKEEN1.BAT) that will run RANDKEEN.EXE and then runs the game with the produced levels and patch file. Since the [[Random Maze Generator]] is considered a tool, I&#039;m slightly leaning towards the tool category. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 06:36, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: It certainly is a borderline one.  Is its primary purpose for people to play (like a mod), or to make levels for other modders to incorporate into their own levels (like a tool)?  How many mods have made use of it as a tool?  If there aren&#039;t too many that suggests it&#039;s a mod first, but also listed in tools second. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 07:00, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::I just created an article about it, and it&#039;s classified as a tool. I saw your message after uploading the first image and while creating the article. I&#039;m sure it&#039;s made for people to play, and I haven&#039;t seen any mods make use of it (at least not yet). I made it a tool, though, since I feel like it makes more sense and classifying it as a mod might make the article look awkward. Feel free to change it, though. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 08:44, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Mirror Keen in Second Dome of Darkness ==&lt;br /&gt;
&lt;br /&gt;
Hello. In the Second Dome of Darkness you can see a mirror Keen with the SGA sign &amp;quot;ICU&amp;quot;. Is it really fake? [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 13:45, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
: I think so.  If you look at the [[Second Dome of Darkness|level map]] there&#039;s nothing there - you can open the game in a level editor to confirm it for yourself.  You can also extract the Keen 6 sprites and look through them to see if you can find any of the sprites you can see in the video.  You can use the F10+T cheat in the game to view all the sprites loaded for the level and look for a mirror Keen sprite there.  If it was real, I&#039;m sure there would be more than a single video of it.  I suppose the question now is, will someone make a Keen 6 mod to turn it into reality :)  It looks like the video was of a Keen mod.  I suppose if there is a background tile that animates quickly with enough frames it would be easy enough to do.  You are a very experienced modder, I&#039;m sure you would be able to work out how it was done and solve the mystery! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 14:33, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: Well, I&#039;m planning Keen 6 v2.0, which will be a Keen 6 mod based on v1.5, so I&#039;ll try everything. :) [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 16:06, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Patch wiki issues ==&lt;br /&gt;
&lt;br /&gt;
So I&#039;ve just come back and noticed the patch wiki is broken. All the patches are an ugly red color, the [] and {} highlights are broken, the titles of patches that used to be present have been totally erased, the whole thing&#039;s a mess. What happened? What&#039;s this weird &#039;syntaxhighlight lang=&amp;quot;asm&amp;quot;&#039; stuff? If this is permanent it&#039;ll require a massive overhaul of all patch pages to remove the brackets and the descriptions that used the fact that brqackets highlighted stuff different colors. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 23:31, 30 January 2023 (GMT)&lt;br /&gt;
&lt;br /&gt;
: I&#039;ve had a look at a few pages (e.g. [[Patch:A 2 Enter]] and [[Patch:Deadly tiles]]) and they seem to be displaying fine.  Which pages are you seeing that are broken?  The version of MediaWiki that powers the KeenWiki had to be upgraded a year or so ago to get the latest security patches, and the new version wasn&#039;t compatible with the old syntax highlighting feature we were using for the patches.  Instead there was a &amp;quot;syntaxhighlight&amp;quot; extension (used for highlighting code) and after investigating a few options, the assembly language (asm) option gave the least-worst highlighting for CKPatch code, so we went with that.  We did a bulk replace across all wiki pages so all patches should be wrapped in asm syntaxhighlight tags now instead, and the old patch titles should now have been moved to headings shown above the patch instead.  Unfortunately there wasn&#039;t a lot we could do but I&#039;m open to suggestions if you have any better ideas! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:32, 31 January 2023 (GMT)&lt;br /&gt;
:: Are you not seeing lines like &#039;%patch $825D {$BCEBW}&#039; with the curly brackets? Those can&#039;t be copied into a patch file and were previously used for highlighting. If there&#039;s no way to revert they should be cut out of all the patches, along with the square brackets. A lot of text mentions the old highlight colors, which are now complete nonsense. If you&#039;re NOT seeing those brackets I can get a screenshot, as this might be a browser issue. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 10:59, 3 February 2023 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: Ohh sorry you&#039;re right, I misunderstood and thought you meant you were seeing &amp;quot;syntaxhighlight asm&amp;quot; instead of the actual patch.  I do see the curly braces and never noticed they weren&#039;t supposed to be there.  Hmm.  Not so keen on removing them especially if the text references them, but I&#039;m not sure how easy it will be to correct.  I guess the [https://github.com/Malvineous/ckpatch-highlight old CKPatch extension] will need to be updated to work with the latest Mediawiki release.  Don&#039;t suppose anyone has any PHP skills and would be willing to update it?  If it can be updated then we can go back to using it again like before. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 13:20, 3 February 2023 (GMT)&lt;br /&gt;
:::: Yeah and square brackets too. Boy I wish I had PHP skills. It sounds like some effort will be needed either to clean up the changed highlights or get the old system working to be compatible. Quite a pity. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 21:51, 7 February 2023 (GMT)&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=46514</id>
		<title>User talk:Malvineous</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=46514"/>
		<updated>2023-02-03T10:59:41Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Patch wiki stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Been whined at by Lemm and assorted people, apparently the term &#039;sprite&#039; applies to graphics only and the terms I should have been using for all the &#039;sprite&#039; patch stuff is &#039;actor&#039;; is there any way to systematically change the term &#039;sprite&#039; in patch page titles (and maybe text) to &#039;actor&#039;? If not, leave it, but if so, it might be something to think about. --[[User:Levellass|Levellass]] 02:41, 17 July 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: It is possible to do a bulk search and replace across pages, but the pages themselves will need to be renamed manually.  [[User:DHeadshot]] has access to do this, perhaps you can ask him?  If he renames pages when logged in as a bot, it&#039;s possible to avoid creating those redirect pages too. -- [[User:Malvineous|Malvineous]] 03:00, 17 July 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;More talk...&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The older conversations on this page have been archived to keep the content current.  To read the previous content on this page, please see:&lt;br /&gt;
* 2010-08: [http://www.shikadi.net/wiki/keen/index.php?title=User_talk:Malvineous&amp;amp;oldid=15924 revision 15924]&lt;br /&gt;
* 2008-04: [http://www.shikadi.net/wiki/keen/index.php?title=User_talk:Malvineous&amp;amp;oldid=9028 revision 9028]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Please post new topics at the top of the page --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Needs pictures error ==&lt;br /&gt;
&lt;br /&gt;
This page [[Keen 1 640x480 Redux]] has itself listed under &#039;needs pictures&#039; despite having pictures. This appears to be because the pictures on the page are resized. Is there any way aside from using fullsized pictures (Which ruins the page) to fix this? -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 02:21, 29 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Thanks for pointing that out!  I don&#039;t want to automatically resize all images in the infobox, because that makes it too easy to upload 640x400 images by accident as screenshots.  So as a compromise I added an ImageScale option to the infobox, which will scale the image and takes care of the &#039;Needs pictures&#039; category.  Hopefully people won&#039;t abuse this and upload 320x200 screenshots scaled up to 640x400! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:39, 19 September 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deletion for stupid redirect ==&lt;br /&gt;
&lt;br /&gt;
The page http://www.shikadi.net/keenwiki/Patch:Keen_sstanding_(Vorticons) is obviously misspelled and needs to be deleted. The correct redirect link has already been created so nothing of value will be lost. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 07:55, 15 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You&#039;re an admin so you should have no trouble deleting the page!  The delete link might be hidden under the &#039;More&#039; drop down, next to the Read/Edit/History tabs at the top of the page.  Let me know if you can&#039;t find it or it doesn&#039;t work for some reason. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 08:12, 15 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Jeez, have I been such an butt in the past? ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv. I&#039;ve not been on in ages, and I was looking at some of my past edits. I have just realized I was acting a total ass, and you should have banned me for what I did. Your patience (and Shadow Master&#039;s) with me, legendary as it is, was stretched to the limit, and I&#039;m sorry for what I did to this wiki, with that fiasco wih KeenRush, and me smarting off to you over the preview button and all. I was going through a rather hard period im my life then, and it shows--looking at the comments and such, it looks as if they were written by someone else. Again, I&#039;d like to apologize for any discord I&#039;ve caused this place. -[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 17:02, 19 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hey Xt - no worries, I figured it was something you would grow out of eventually ;-) -- [[User:Malvineous|Malvineous]] 23:50, 19 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: And I was looking at the [[Talk: Viva|Viva talkpage]] yesterday. &amp;quot;Xterra-ism&amp;quot;. :-) At least I&#039;ve gotten SOMETHING besides a Nissan SUV named after me. Again, I must compliment you on your patience with me. -[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 18:07, 20 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Abandoned mods / level packs ==&lt;br /&gt;
&lt;br /&gt;
Hello Malvineous. As I mentioned on [[Talk:Vorticon Mods#Missing_Download_links|Talk:Vorticon Mods]], I still have a few abandoned mods/level packs by different people that are not available for download anymore (at least according to the wiki). Various mods and packs have been directly uploaded to shikadi.net/wiki/, thus I sent one mod to Tulip who contributed a lot to the Vorticons Mods page. He replied two weeks ago, but since then no download has been added for &amp;quot;Mars Kingdoms&amp;quot;, so I assume he is just too busy for editing. As you run this wiki, I wonder if I can also send them to you? --[[User:Grandy02|Grandy02]] 09:48, 20 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Sure, just e-mail them to malvineous@shikadi.net and I will upload them to shikadi.net/wiki/ if you&#039;d be willing to add the necessary links to the article pages! -- [[User:Malvineous|Malvineous]] 10:27, 20 November 2011 (GMT)&lt;br /&gt;
::Great, I&#039;ll send them this day! :-) --[[User:Grandy02|Grandy02]] 11:46, 20 November 2011 (GMT)&lt;br /&gt;
:::Sent. The names of the zip files are those of the original downloads (if I remember correctly), rename them as you please. The mail includes demos of Redemption, Lord of the Rings (two demos), and Mars Kingdoms. There is also a beta of Bp&#039;s &amp;quot;mod&amp;quot; Marooned on Mars Forever, but I think it seems more like a level pack (no changed graphics, no patches and only minimal edits of the story text). What do you think? --[[User:Grandy02|Grandy02]] 16:01, 20 November 2011 (GMT)&lt;br /&gt;
::::Not really sure, whatever you think is best would be fine.  And thanks, I&#039;ve put them into http://www.shikadi.net/wiki/files/Mods/abandoned/ so you can link to them directly there. -- [[User:Malvineous|Malvineous]] 22:24, 20 November 2011 (GMT)&lt;br /&gt;
:::::Thanks a lot! I added Bp&#039;s work to level packs, as I think that changed titles in the story text do not really make it a mod. Anyway, I noticed that the various download links for dosclassics.com are not working anymore. I haven&#039;t been able to access the site for quite a while. Do you know anything? Does the site even exist anymore? --[[User:Grandy02|Grandy02]] 14:09, 21 November 2011 (GMT)&lt;br /&gt;
::::::I haven&#039;t heard anything but as of a year ago it seemed to be online only for &amp;quot;nostalgic reasons&amp;quot; so I guess it&#039;s finally offline now.  You could try contacting Xtraverse (xtraverse@hotmail.com) and see if he still has a copy of the site... -- [[User:Malvineous|Malvineous]] 00:17, 22 November 2011 (GMT)&lt;br /&gt;
:::::::Okay, I sent him a mail. I wonder, if he doesn&#039;t want to put the site online anymore, would it be possible to archive the site at shikadi.net just like CC314? --[[User:Grandy02|Grandy02]] 17:35, 23 November 2011 (GMT)&lt;br /&gt;
::::::::Certainly I&#039;m happy to do that, if Xtra is willing to send the files across or upload them to my server. -- [[User:Malvineous|Malvineous]] 22:56, 23 November 2011 (GMT)&lt;br /&gt;
:::::::::Yeah, it would be great to keep that fine piece of Keen community history. By the way, the hotmail account seems to be inactive (I got &amp;quot;mailbox unavailable&amp;quot; as a response), so now I&#039;m hoping that he&#039;ll answer the mail I sent to his @spatang.com address... --[[User:Grandy02|Grandy02]] 14:41, 24 November 2011 (GMT)&lt;br /&gt;
::::::::::Hi again. I sent you another abandoned mod, &amp;quot;Trouble on Xion 2&amp;quot; (Keen 4 this time). On a side note, the zip file for [[Trapped Keen]] includes the KEEN3.EXE, which should probably be removed. Also, no answer from Xtraverse yet. --[[User:Grandy02|Grandy02]] 11:22, 26 November 2011 (GMT)&lt;br /&gt;
:::::::::::Thanks, uploaded.  Thanks also for pointing out keen3.exe, I have removed it from the zip. -- [[User:Malvineous|Malvineous]] 01:50, 27 November 2011 (GMT)&lt;br /&gt;
::::::::::::Darn, I guess I should have been more vigilant in copying the levels and mods over to the keenwiki server... -- [[User:Flaose|Flaose]] 04:01, 30 November 2011 (GMT)&lt;br /&gt;
:::::::::::::Meh, you couldn&#039;t get the official Keen3 game out of it anyway thanks to the modifications, so it&#039;s more a courtesy to id than anything else :-) -- [[User:Malvineous|Malvineous]] 11:18, 30 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
==PCKF Archive==&lt;br /&gt;
Thanks again! On a side note, could you delete Norp3 title.png, please? But now something completely different: Maybe you have noticed that the old PCKF (its ezBoard incarnation) is not available in the Wayback Archive anymore since the Archive&#039;s new version was introduced. Due to the attack on ezBoard back in 2005, this means that basically all pre-2005 topics of the PCKF are lost now. I have basically not followed the community this year, do you know if there have been any reactions on this incident? The thing is, I saved a bunch of topics before the old Archive was taken down, and I&#039;d like to send them over to someone who wants to turn that mess into something more comfortable on the web. But maybe I&#039;m just late to the party and there already have been efforts to save the old PCKF. Has anything been said? --[[User:Grandy02|Grandy02]] 15:55, 27 November 2011 (GMT)&lt;br /&gt;
: Done.  And I&#039;m not sure about the PCKF - after all those old topics were lost it seemed a bit hit and miss to save it.  Plus it was all in HTML so it&#039;s difficult to convert - there was some discussion about importing all the topics into the current PCKF.  I&#039;ve also spent hardly any time at the PCKF for a long while, so I&#039;m not sure what the mood is.  I think many people who had topics then are no longer active, it seems to be quite a different group of people there now! -- [[User:Malvineous|Malvineous]] 07:16, 28 November 2011 (GMT)&lt;br /&gt;
::Okay, I see. I might create a topic on this issue in the PCKF this week (after a quick look, there still are quite a few of the &amp;quot;old ones&amp;quot;, though). But if nobody has archived anything, would you mind to host certain topics I saved (of course, not every &amp;quot;W00t! 3000 Posts!!!111!1!&amp;quot; thing)? I might select interesting topics bit by bit - but first I have to know if that is even possible. --[[User:Grandy02|Grandy02]] 17:01, 28 November 2011 (GMT)&lt;br /&gt;
:::Sure, but in that case it&#039;ll be easier to give you some webspace so you can manage it all yourself, if you&#039;re prepared to do so! -- [[User:Malvineous|Malvineous]] 23:21, 28 November 2011 (GMT)&lt;br /&gt;
::::Thanks for your offer! I&#039;ll create a topic in the PCKF first this weekend and see what others did (if anything), then I&#039;ll get back to you. --[[User:Grandy02|Grandy02]] 14:27, 29 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
I had talked with tulip per mail the last few days. According to him, there was nothing on the forum about archiving the ezBoard, and as he is one of the most active members, that has to be the truth. I created a thread nonetheless, but I don&#039;t expect much. So I&#039;d greatly appreciate if you really gave me some webspace. :-) --[[User:Grandy02|Grandy02]] 18:27, 6 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
Hello. I neither have mail nor FTP access right now, so could you write your answer on my last mail at this place (in case you already responded)? Also, could you do me a really big favour and make a little edit to the index.htm of the PCKF Archive? Actually, I finally wanted to post, but today I noticed that the page is incorretly displayed in certain browsers due to a little error on my side. Please change&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;logotext&amp;quot;&amp;gt;PCKF Archive&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;logotext&amp;quot;&amp;gt;PCKF Archive&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and it should be fixed. Thanks in advance! :-) --[[User:Grandy02|Grandy02]] 20:05, 22 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Done.  There was a suspected intrusion on my web host, so my provider reset everyone&#039;s passwords as a precaution.  Your new password is in your e-mail. -- [[User:Malvineous|Malvineous]] 22:39, 22 January 2012 (GMT)&lt;br /&gt;
:: Thank you! :-D --[[User:Grandy02|Grandy02]] 21:06, 29 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
==DOS Classics is back!==&lt;br /&gt;
Good news: Xtraverse replied and put DOS Classics back online! Oh, and by the way, he already created a little PCKF [http://dosclassics.com/old/pckf/ archive] of sorts in the past - well, those topics can be quite... entertaining. ;-) --[[User:Grandy02|Grandy02]] 17:37, 30 November 2011 (GMT)&lt;br /&gt;
:Great news, good to have the site back. -- [[User:Malvineous|Malvineous]] 22:43, 30 November 2011 (GMT)&lt;br /&gt;
::In a second message, he thanks you for your offer to host DOS Classics, but he intends to keep up the site for &amp;quot;the long haul.&amp;quot; DOS Classics was just offline due to a DNS error he forgot to fix. Anyway, yeah, it&#039;s great to have it back, I learned lots of Keen stuff at that place, and it got me into modding. --[[User:Grandy02|Grandy02]] 20:06, 1 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Another apology ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv. Recently, I made a couple of unnecessary double-edits on accident. Sorry if this irks you.-[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 04:29, 24 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Source of creatures&#039; names ==&lt;br /&gt;
&lt;br /&gt;
Hello. I&#039;m new here but I hope to be a good contributor :) What I&#039;d like to know is where the names of the creatures from Keen Dreams and Keen 6 were found because Keen Dreams doesn&#039;t seem to list them all while Keen 6 doesn&#039;t even contain a help section and some of the names mentioned in Keen 6 user manual are different from the names listed here. Can you help? Levellass hasn&#039;t answered yet. [[User:Saluton|Saluton]] 05:46, 4 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hi Saluton and welcome to the wiki!  Things do move a little more slowly here so you might have to give people a week or two to respond :-)  As far as I&#039;m aware all the names are correct - if you can tell me which ones are wrong and let me know where the correct name is we will certainly fix it!  Most of the names came from official sources like the manuals, while one or two were supplied by Tom Hall himself.  I believe there are a few which have been named by fans lacking a more official source, but it should mention this on those creature pages.  -- [[User:Malvineous|Malvineous]] 08:17, 4 February 2013 (GMT)&lt;br /&gt;
:: Sorry, I was wrong, the names in Keen 6 user manual and here do match, but I couldn&#039;t find a user manual for Keen Dreams. Where should I look? In any case, it&#039;s only better for all the wiki articles to refer to sources. :) [[User:Saluton|Saluton]] 09:22, 4 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: The rule so far is that the creature names come from the help text for Keens 1-5+Dreams and from the manual for Keen 6.  Anything different and it&#039;s mentioned in the article.  If you have a look at [[Keen Dreams Creatures]] it will tell you that the names come from the help text in version 1.0 of the game.  This information was removed from later versions. -- [[User:Malvineous|Malvineous]] 10:49, 4 February 2013 (GMT)&lt;br /&gt;
:::: OK, I was wrong here, too :( but citations would still be useful. On another point, wouldn&#039;t it be better to combine those articles on creatures so that there&#039;s only one article per game? There can hardly be any information on most of the creatures anyway, apart from what they look like, how they move, and what they do. Most articles will forever be two- or three-paragraph stubs. [[User:Saluton|Saluton]] 14:59, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: I guess citations could be useful - they are already there on most if not all the Dreams pages, but there is a lot of more important work needed on all the mod pages so this is a fairly low priority for us.  Combining the creatures onto a single page has already been done - each episode has a summary page for the creatures.  But we decided long ago it was still worth having a dedicated page for each creature as that gives us more room for additional details, like which levels the creature appears in, bugs in its behaviour, tricks for avoiding it, and so on.  It also makes it easier to link to creatures - otherwise we&#039;d have dozens of redirect pages anyway.  But likewise we also decided that mods should not have individual pages for each creature, as there would be thousands of unnecessary pages then. -- [[User:Malvineous|Malvineous]] 19:45, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: I see, thanks. Why is there no page on [[Bobby Prince]]? Was anything decided on that? [[User:Saluton|Saluton]] 06:11, 7 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::: No, there has been no decision there.  If you have some information about Bobby Prince related to Commander Keen, by all means go ahead and create a page for him.  But if you&#039;re looking for things to do, there are [[Vorticon Mods|lots of]] [[Galaxy Mods|mods]] that don&#039;t have pages created yet, and each page needs infoboxes, screenshots, level lists, etc.  This is where most of the work is being done at the moment.  Have a look at [[Episode Null]] for what we&#039;re aiming for on each mod&#039;s page. -- [[User:Malvineous|Malvineous]] 22:03, 8 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::: I don&#039;t think pages on the creators of Keen should only contain information related to Keen. To my mind, a proper encyclopedic article about a person should give a complete view of their biography even if it&#039;s in a Keen encyclopedia, but anyway, we&#039;ll see about that when I have enough time to actually edit articles. Thanks for this discussion :) [[User:Saluton|Saluton]] 07:46, 11 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::: Of course you can include non Keen-related information, but since it&#039;s a Commander Keen encyclopaedia it makes sense to give a greater focus on things related to Commander Keen.  Otherwise you may as well just link to the Wikipedia article instead! -- [[User:Malvineous|Malvineous]] 23:01, 15 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::::: I would suggest just linking to the Wikipedia article of Bobby Prince and other creators of Keen when needed.  There&#039;s no reason to repeat something that is stated better elsewhere. -- [[User:Flaose|Flaose]] 15:48, 20 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Goodbye, Galaxy! ==&lt;br /&gt;
&lt;br /&gt;
Why is there no punctuation in the title [[Goodbye Galaxy]]? [[User:Saluton|Saluton]] 14:47, 11 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Very good point.  I&#039;ve renamed the page - thanks! -- [[User:Malvineous|Malvineous]] 23:01, 15 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Moving of pages and their location on alphabetical lists ==&lt;br /&gt;
&lt;br /&gt;
I notice when a page is moved, it remains in the same place as the old page would when listed in a category. This could be confusing, is there any way to circumvent it? -[[User:Levellass|Always so much to do!]] 09:22, 16 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: It shouldn&#039;t - do you have any examples?  Keep in mind the category pages are cached so it can take a few page views before they all get updated after a rename.  Certainly by 24 hours later they should all be correct and up to date. -- [[User:Malvineous|Malvineous]] 21:27, 16 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Delete some pages ==&lt;br /&gt;
&lt;br /&gt;
[[:Category:Incompatible Patches]] is an invalid category, it seems that such pages should always have a small &#039;p&#039; in patches due to the way the wiki works. This page is thus extra and should be deleted post haste. -[[User:Levellass|Always so much to do!]]&lt;br /&gt;
: The following pages can also be deleted, having no other pages linking to them and being the subject of double redirects; [[Moving Platform]], [[Patch:Keens Left]] and [[Patches:Game start]], results of poor syntax -[[User:Levellass|Always so much to do!]]&lt;br /&gt;
&lt;br /&gt;
:: Done! -- [[User:Malvineous|Malvineous]] 14:48, 20 March 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: Many thanks, that clears things up a bit, I dislike superfluous pages. -[[User:Levellass|Always so much to do!]] 19:28, 20 March 2013 (GMT)&lt;br /&gt;
:::: Bleah, found yet another duplicated page, (Mind the original was very old and in need of updating.) Could you please remove [[Patch:Light Switch]], it has stuff on it, but nothing that isn&#039;t on the original page now. (Also there&#039;s only one page that links directly to the light switch page, so it was easy to make sure there&#039;s no links to the duplicate page.)&lt;br /&gt;
&lt;br /&gt;
::::: Done.  I&#039;ve also made you an administrator of the wiki so you should be able to delete pages yourself in future (there&#039;s a new tab at the top of each page you will see once you log out and back in again.) -- [[User:Malvineous|Malvineous]] 00:06, 2 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: Thanks, that should help, assuming I don;t make any more dumb mistakes like the mess you just fixed up. -[[User:Levellass|Always so much to do!]] 09:08, 8 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: Hahaha no worries, everyone makes mistakes :-) -- [[User:Malvineous|Malvineous]] 11:56, 8 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== About my Cosmo Mod ==&lt;br /&gt;
&lt;br /&gt;
Thanks for the heads-up. I didn&#039;t know there was a page at the Modding Wiki for Cosmo Mods. I&#039;ll make sure to put the mod article there next time.&lt;br /&gt;
[[User:T-Squared|T-Squared]] ([[User talk:T-Squared|talk]]) 22:32, 23 February 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== A bug ==&lt;br /&gt;
I tried to get my three mods in the Keen 1, Keen 2, and Keen 3 mods page. But I can&#039;t do it, because it won&#039;t do it. Sorry about the edits I&#039;ve done. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 23:52, 15 March 2015 (UTC)&lt;br /&gt;
:Hello Quinton. You did everything right, but those pages are not always refreshed automatically. To purge a page&#039;s cached version, add &amp;quot;?action=purge&amp;quot; to the page title in the address bar and commit, e.g. &amp;lt;nowiki&amp;gt;http://www.shikadi.net/keenwiki/Keen_1_mods?action=purge&amp;lt;/nowiki&amp;gt;. You can also read about this in the source code of the mod lists. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 07:59, 16 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mod title confusion ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv. I&#039;m currently creating stubs for the remaining missing mods, but I&#039;m confused about the wiki&#039;s handling of mod titles, especially those with subtitles. Sometimes the main (series) title(+episode number) is used (e.g. [[The Clones of Evil 1]], [[Death to the Vorticons 3]]), but for others the subtitle/episode name (e.g. [[Vanished To Venus]], [[Kidnapped Keen]], TUIT trilogy), while in some cases the full title is given to the article (e.g. [[Onward: Silcar 1: Nightmare Before Teatime]]). Are there any rules for this? And a unique case seems to be [[OrbKeen1]], which is given its production name rather than actual title. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:37, 21 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not sure - I don&#039;t think there&#039;s a specific rule at the moment, but if you want to come up with one then by all means.  I guess what you want is something unique, so MyMod1, MyMod2, MyMod3, etc. aren&#039;t very good because they are too similar.  Likewise the Onward: Silcar one is probably a bit too long.  I&#039;d be happy renaming that to [[Nightmare Before Teatime]] and then applying that rule to the others.  There&#039;s probably no need to have the series name in the title, as the previous/next episodes in a series are listed in the infobox on each page.  What do you think? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:22, 21 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I&#039;m okay with both using the full title or only the episode&#039;s name. Sure, there would be quite a few lengthy page titles in case of the former option, so it might be better to choose the latter one. My only concern is that some mods could be more commonly known by the series name+number rather than the subtitles from what I&#039;ve seen (e.g. Norp the Yorp, Shadow Keen, Marta). Do you think that would be still acceptable? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 11:03, 22 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I think so.  Providing the common name(s) appear in the article itself then it will show up in a search for those names, so it shouldn&#039;t be a problem locating a mod.  If it&#039;s really bad then we can always create a redirect, although personally I would try to manage without redirects first, as I&#039;d rather not see every mod come with a dozen redirects attached as it will make it more difficult to maintain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:49, 22 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Sounds good. Though I think there would generally have to be one redirect for the affected pages. For example, &amp;quot;Brain Damage&amp;quot; would have &amp;quot;Norp the Yorp 3&amp;quot; so that visitors can also find the mod when typing &amp;quot;Norp&amp;quot;. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 19:49, 25 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: That&#039;s fine, although if it&#039;s only searching you&#039;re worried about, on the mod page putting something like &amp;quot;Brain Damage (also known as Norp the Yorp 3)&amp;quot; should be enough. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:44, 29 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::: I think it would be more comfortable so that a visitor gets directly to the correct page when typing the title they are used to. So, could a rule for this be created? Also, would it affect the names of the zip files? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 08:10, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::: Can you give me an example?  When I type &amp;quot;Norp the Yorp 3&amp;quot; into the search bar the mod is the first result, and if I type &amp;quot;Brain Damage&amp;quot; it&#039;s the second result.  Wouldn&#039;t that be enough for people to find it using whatever name they prefer?  Or you just prefer if it goes straight to the page if there&#039;s an exact match?  I don&#039;t mind just as long as there&#039;s a good reason for doing it one way over the other.  One thing I want to avoid is having a dozen redirects for each mod, with only things like capitalisation being the difference between some of them. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:07, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::::Yeah, I&#039;m only referring to going straight to the pages. I personally don&#039;t mind if I have to do one more click, just thought that some visitors wouldn&#039;t like that when entering a mod&#039;s common name a list of search results appears first. I fully understand that the number of redirects has to be kept small, never intended to add different capitalisations and stuff. If anything, I only imagined one per mod if it is relevant at all (as in case of the Norp mods). If a rule is made, would the zip files also have to be renamed? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:54, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::::: Fair enough if there aren&#039;t huge numbers of them.  Remember that redirects aren&#039;t supposed to be categorised though, they&#039;re only supposed to be used for pages that used to exist on the wiki but were deleted/merged, so that any external sites linking to the old page still work.  Up to you whether you want to rename the files, but I think we should stick to one title per filename though.  Most people will only see the filenames temporarily while they download mods, so there should be no need to cram too much information into the filename! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:25, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m almost done with with adding pages for the missing mods. However, I have a question related to the download links in the mod galleries. In most cases, only the download for the latest version is needed there. But what about downloads of remakes, e.g. those of Yorphius II, ShadowKeen and Crash on Gobo III? Maybe even a separate box (though not a separate article) that also includes the remake author&#039;s name? If there&#039;s one mod that definitely needs two download links, it is [[The Grand Intellect: Doomship Dilemma|Doomship Dilemma]], because the mods by Levellass and Szemigi are basically two different works based on the same beta. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 07:38, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Nice work!  If the mods are that different then they probably deserve their own pages, like [[The Grand Intellect: Doomship Dilemma (Levellass version)]], [[Yorphius II (Deluxe)]] or [[Crash on Gobo III (remake)]].  However I think we need to come up with some criteria to make sure we don&#039;t get a different page for every revision of a mod.  I think the criteria should be:&lt;br /&gt;
:* If the remake is by the same author as the original, then it should be considered the latest version and only that version included in the list (but the older versions of course listed on the article page.)  This is to encourage mod authors to make new mods instead of endlessly tinkering with existing ones.  It is fine to have screenshots of the different versions and to explain why they were released, but only one infobox can go on a page (otherwise it will break the categories and mod lists.)&lt;br /&gt;
:* If a mod builds on another one (by the same or a different author), then a new article for it should not be created, and the new mod should be listed as an alternate version on the original mod&#039;s page.  This is to avoid having people change a couple of graphics and get their own mod listed.  The way [[Yorphius II]] is written now is perfect.&lt;br /&gt;
:* An exception to the previous rule is allowed for substantial changes, such as a complete levelpack for an existing mod.  If you are unsure whether a mod-mod counts or not, then it doesn&#039;t.  It should be very obviously a whole new mod based on an existing one, and not just a few changes or a couple of new levels.  This means [[Gridlock&#039;s Dead in the Desert Levelpack]] should have its article deleted, and the content moved onto [[Dead in the Desert]] where it should be listed as an alternate version by a different author.&lt;br /&gt;
: Using this criteria, Doomship Dilemma would get split into two mods/pages, Yorphius II would have an alternate version listed (unchanged to how it is now), and Crash on Gobo III would have the more recent change listed as the latest version.&lt;br /&gt;
: What do you think, does this seem fair? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:06, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I agree with the most points, but regarding Gridlock&#039;s level pack, I&#039;m not sure. I mean, level &amp;quot;packs&amp;quot; with just one level based on the original games also have their own articles, so I think a small level pack for a mod is as worthy. But any way, what to do with level packs in general? Most pages don&#039;t use any mod/level pack-specific templates yet (though several have the level template). Should they also use the mod infobox and thus appear in the mod lists? Or a slightly altered template and separate lists? I think there should be a way to differentiate between them. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:03, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I&#039;m not so keen on having an entirely different list for full mods vs level packs, but what if we modify the current mod lists so that under each mod (where it currently has a download link, the number of levels, and the mod status) we include a new item that says whether the mod includes new graphics?  That way full mods would say yes here, and level packs say no, but everything could be in the same mod list.  This item can pull from the existing mod infobox, so current pages wouldn&#039;t have to be updated to include the new info.  Would that work? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:30, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Good idea. Okay, now the only remaining issue is the sheer number of level packs that don&#039;t have a page yet (more than 40). Of course I could do it all on my own again, but the progress would be very slow, and the outdated links would continue to be in the navigation. It would be a different case if just putting infoboxes on those pages would be enough for stubs, not sure about that. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:29, 21 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::The page only needs an infobox to appear in the list, and ideally a screenshot, but really, as much or as little as you can manage is fine.  Maybe you can come up with a simple procedure explaining what to copy/paste and recruit some help from the PCKF? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:43, 27 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::I&#039;ll ask the PCKF members to help with screenshots and red links once I&#039;m done with the few missing &amp;quot;blue links&amp;quot;. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:50, 24 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::::Sounds good!  Thanks for all your effort cleaning up the mod lists, it&#039;s great to have someone willing to put the time in to do this properly! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:37, 24 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
==File name problems==&lt;br /&gt;
I moved [[Commander Keen &amp;amp; the Morticore]] to [[The Morticore]], and I have encountered a problem. The files are now broken, because the mod title has changed. I don&#039;t want to upload a duplicate of the file, so is there anything else I can do? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 16:22, 23 May 2015 (UTC)&lt;br /&gt;
:I&#039;ve &amp;quot;moved&amp;quot; the files. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 16:30, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Translation mods ==&lt;br /&gt;
&lt;br /&gt;
Hi, I&#039;ve two questions regarding mods that act as translations of the original games, more specifically the Hungarian translations by Szemigi. First, would each one of those mods have its own page just like other skin mods? Texts and text graphics are changed. And second, how to localise the downloads? The zip files contain installers for Windows. Should the zip archives include the actual game files or the installer executables? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 19:15, 26 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hmm, they&#039;re not really &amp;quot;mods&amp;quot; in the gameplay sense so they kind of belong on the main episode pages instead.  Do you think we could put them somewhere there?  Maybe we need to expand each episode&#039;s page to contain a bit more info as well as things like this.  As for the download, technically we can&#039;t distribute modified versions of the game so it should be the usual patch files that sit on top of the original game.  You don&#039;t need an installer for this so hopefully that can be removed, especially since it won&#039;t work for anyone running a Mac, Linux, or a real DOS PC. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:54, 26 July 2015 (UTC)&lt;br /&gt;
::Yeah, I was thinking the same, it would require an additional emulator for non-Windows users, so I&#039;d zip the extracted files for the localised downloads. Maybe we could have a page named &amp;quot;Translations&amp;quot;? &amp;quot;Keen 1 Translations&amp;quot; and so on would have too little content each, so one page for all translations would be enough, and each episode page would have a link to it. What do you think? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 15:03, 13 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: That sounds fine to me, feel free to go ahead and create it! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:27, 15 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
The translations are essentially skin mods, too, aren&#039;t they? What about a collective page for skin mods (that could also include the translations then)? I&#039;ve to agree that it&#039;s hard to draw the line, and things like &amp;quot;play in CGA&amp;quot; or &amp;quot;play as Vorticon (Keen&#039;s sprites simply replaced by Vorticon&#039;s)&amp;quot; probably don&#039;t need their own pages. But I wouldn&#039;t like a complete exclusion of them, either. Not to mention that the wiki provides the downloads for all of them since more than two years. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 10:41, 20 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;m still not so keen on listing skin mods.  To me they are not much different to changing the sounds or music and leaving the game otherwise unchanged.  It&#039;s like an incomplete mod, and incomplete mods should not be listed here unless they are abandoned and enough progress has been made that playing them is significantly different to the original game.  I guess it hinges on whether the KeenWiki is supposed to be a database of every single mod, no matter how insignificant, or whether it should be an index of the better more complete mods.  I am of the opinion that you need to change more than one or two things in order for the mod to feature here.  If a skin mod is good enough, then someone over at the PCKF will surely use it in a full mod and then there&#039;s no problem listing it here.  For the completists, who want every single little change preserved, maybe other sites like moddb.com would be a better match?  Translations are a special case as they make the original games accessible to a wider audience - in my opinion they aren&#039;t really mods, as the content is the same as the original game, just in another language. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:13, 19 September 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;ve created [[User:Grandy02/Test|a list]] with all the skin mods + translations. Do you think the SGA mods would count as &amp;quot;translations&amp;quot;, even though the language remains English? Regarding the skin mods, a few words have been exchanged in the [https://pckf.com/viewtopic.php?t=3206&amp;amp;start=15 PCKF topic]. Personally, I wouldn&#039;t mind if they had pages. Technically, the abandoned mods without changed levels are a similar case. But I wouldn&#039;t create pages for the &amp;quot;Military&amp;quot; mods, for example, as only some sprites have been changed and nothing else, but in those cases I&#039;d keep download links somewhere due to their &amp;quot;historical&amp;quot; value (made during the early years of Keen modding). Not sure about Cybernetic Dreams, though, as quite a few graphics have been edited, while there is nothing else like patching or text edits. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:24, 20 December 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Translation mods definitely deserve a place, but I think they should be separate to mods and listed close to the official games, since the idea is that they are the same as the official games but open them up to a wider audience.  An SGA translation mod is interesting, but if it&#039;s changing the English parts to SGA then it&#039;s more of a curiosity than something I think anyone would choose to play.&lt;br /&gt;
&lt;br /&gt;
: For skin mods, I think we need something similar to Wikipedia&#039;s notability guidelines.  Skin mods may be worth listing if they are historically significant (such as one of the first ever mods) but beyond that I personally feel that unless there are new levels, the mod doesn&#039;t add anything new to the original games.  Playing the original games is fun - but playing them with a different sprite here or there is boring - you aren&#039;t going to make any new discoveries.  I see skin mods as being lazy, and when people complain about having to make even just one new level, that just reinforces the idea that they are being lazy and want a mod page with the least amount of effort possible.&lt;br /&gt;
&lt;br /&gt;
: How about asking the people over at Keen:Modding what they think?  If you can get the modders themselves to cast a vote about whether we should include skin mods or not, then I am willing to go with their decision. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:30, 20 December 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Galaxy Mods - adding additional topic ==&lt;br /&gt;
&lt;br /&gt;
Hey Malvineous, quick question to that [[Galaxy Mods|Galaxy Mod]] page: What about adding a new topic like &#039;&#039;Notable Demos&#039;&#039;. This section would comprise round about 12 alpha-mods and it might give a bit more clarity.&lt;br /&gt;
I can take care of it, as soon as you give me your &amp;quot;OK&amp;quot; for doing so. -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 21:21, 6 April 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not quite sure exactly what you are proposing, but you are welcome to make a start and then get some opinions about whether people like what you&#039;re doing or not.  It&#039;s a community wiki so it&#039;s not up to me :-)  However do bear in mind that per the note at the top of [[Galaxy Mods]], that page will be deleted once all the mods are moved off it.  If you&#039;re going to start classifying mods as notable though, make sure the criteria you are using are very clear, otherwise everyone will want to add their own mods to the list! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:41, 25 April 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== What happened to the voting system? ==&lt;br /&gt;
&lt;br /&gt;
I noticed that the voting system that is found inside the CK mod info boxes appears to be disabled. Is this because of some nasty bug happened or was this done on purpose? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 05:45, 14 May 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It seems that the extension was not updated and/or it&#039;s source is not longer available. @Malvineous: But there is an alternative extension available. The installation seems pretty straight forward. See: https://www.mediawiki.org/wiki/Extension:VoteNY -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 20:10, 25 March 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Possible username change? ==&lt;br /&gt;
&lt;br /&gt;
Hey there, Malvineous. I was wondering if you admins have the power to rename user names or not. If so, then I would appreciate it if you could change my username into &amp;quot;Quillax&amp;quot;, my current name in the PCKF and K:M. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 02:33, 26 March 2017 (UTC)&lt;br /&gt;
: I don&#039;t think we can do so easily, but if you are able to find some SQL that can do it for MediaWiki then I&#039;m happy to run that. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:31, 1 October 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Weird thing with adding new external links ==&lt;br /&gt;
&lt;br /&gt;
I was updating the download link and adding a new one to my site in The Sunnylands. During the security thing, however, the images are only displayed as &amp;quot;V1 SHUTDOWN ON 2018-03-31&amp;quot; and no sounds are played when doing the audio challenge. I thought things broke at first, but I typed the text in the image and it was working fine.  I feel like I should let you know about this, though, just in case. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 14:31, 7 April 2018 (UTC)&lt;br /&gt;
:Oh, it seems like anything will work in the security thing. I think it might be good to fix it if possible. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 14:52, 7 April 2018 (UTC)&lt;br /&gt;
::Thanks for the heads up!  I&#039;m glad it&#039;s not stopping people from adding links.  I am (slowly) working towards moving the wiki onto a new server so I&#039;ll probably remove it when that happens.  The requirement for people to fill out a biography when they register has so far kept out 100% of the spam, so hopefully that keeps up and we won&#039;t need the external link captcha any longer. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:42, 8 April 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== My Mortimer skin for Keen 5 and 6 got deleted ==&lt;br /&gt;
&lt;br /&gt;
Hey, Nisaba from PCKF removed my Mortimer skin for Keen 5 and 6 and I cannot recover these anymore. These contained the EXE files, but this should have been updated, so these won&#039;t have the EXEs anymore. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 13:45, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: If it was a skin mod (only graphics changed) then it&#039;s against the [[KeenWiki:Guidelines|Guidelines]] so that might be why.  You&#039;ll have to change more than just the graphics to justify including it here.  Knowing how many popular mods you make though, I&#039;m sure you&#039;ll have no trouble making some new levels for it!  Then we can include it here. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 13:49, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Strange, because Mortimer McMire Keen 5 and 6 skin changes has only sprite and some other graphic edits. What about Keen 1-3 skins then?--[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 14:23, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: My personal preference is to delete them, but some in the community want to keep them, so we&#039;re still a bit undecided.  If you have some good ideas let me know.  I just want to avoid the KeenWiki becoming a dumping ground for fan art, when there are much better sites for that type of thing (e.g. DeviantArt) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:54, 28 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== EXE files in Keen 2,3,5,6 mods ==&lt;br /&gt;
&lt;br /&gt;
Hey, I saw that some of the Keen 2,3,5,6 mods contain the EXE files. What to do? Because I have mods as well that has EXE and I should update them sometimes. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 14:36, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: We are trying to update these mods to delete the .EXE files where we can.  If you are updating your mods it is best to set it up so that the player unzips the mod over the top of a working copy of the game, so that the .EXE is not distributed on the wiki.  That would be very helpful if you have mods like this that you can update! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:54, 28 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Semantic questions ==&lt;br /&gt;
&lt;br /&gt;
Hey there, Malvineous. I&#039;ve been updating mod pages to fit in the latest style, but I thought I&#039;d ask you a few questions. First, I&#039;d like to mention the ending and title screen levels in the Vorticon mods. I&#039;ve been including them since your adding a mod tutorial requested so, but what I&#039;m wondering about is if they should be considered required or not. I&#039;ve been setting them to &amp;quot;Yes&amp;quot;, since I figured that one has to go through them to beat the game, but I just want to make sure. Also, should the items in the title screens be counted for points or no? That is something I&#039;m not so sure about.&lt;br /&gt;
&lt;br /&gt;
Another thing I want to bring up is hazards. In my mods, I put them into the actors list with their replacements stated. However though, I now feel like listing the tile hazards as replacing something is kinda dumb, as it&#039;s really easy for one to add more tile hazards and they don&#039;t have much differences between each other (especially in Vorticons mods). I think it&#039;s alright if it replaces a hazard that has something to do with a sprite, though, such as the Underwater Mine. I think it&#039;d be nice to either have the ModActorImage template updated to have something for if it&#039;s a tile hazard or not or a new template (something like ModHazardImage?).&lt;br /&gt;
&lt;br /&gt;
Finally, I want to bring up something that has to do with the regular Sqeeks and levels from therealdopefish&#039;s levelpacks. Both have been used in more than one mod, with the former replacing different creatures (although they act nearly identical) and the latter using different level numbers. I&#039;m not sure how to explain it but if you were to look Flames on Earth and The Sqeek Battle for the former and therealdopefish&#039;s two levelpacks for the latter, I think you&#039;ll be able to see that there is a problem. It&#039;d be nice if it can be fixed, although I think therealdopefish&#039;s levelpacks are a lot like each other, with one just having extra levels, so those two could probably just be merged. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 20:09, 11 November 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hey, very good questions!  I&#039;m a bit out of the loop at the moment so not sure which levelpacks you mean, but (although I haven&#039;t tested it), in theory you should be able to put multiple &amp;lt;nowiki&amp;gt;{{LevelImage}}&amp;lt;/nowiki&amp;gt; templates on a level page to have the same level appear in multiple mods.  If this doesn&#039;t work let me know and I&#039;ll fix it.&lt;br /&gt;
&lt;br /&gt;
: With the hazards my opinion is that they are just tiles so they should not be listed (otherwise we&#039;d be listing every single tile that&#039;s changed) however exceptions can be made if one of the hazard replacements is particularly notable for whatever reason.  Otherwise I&#039;d leave them out.  The mod pages are after all just meant to be a summary of the important bits rather than a list of every single change.  If you think it would be better to have a ModHazardImage then by all means go ahead and create one - just copy the existing one and modify as needed, that&#039;s perfectly fine.&lt;br /&gt;
&lt;br /&gt;
: The &#039;required&#039; attribute was meant to indicate whether the level must be *played* in order to finish the game so I guess by that logic the title and ending levels can be set to false for most mods, unless somehow the player ends up in them intentionally and cannot finish the game otherwise.  Interesting point though, I had not considered the non-level levels!  I would still count it for points though, just for curiosity&#039;s sake, but at the same time I wouldn&#039;t give it a high priority so it&#039;s fine if it&#039;s left blank.  However I am now wondering whether these should be included at all, since if there&#039;s no way to play the level without cheating, isn&#039;t not really a level... -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:58, 11 November 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ModActorImage request ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv, could you take a look at [[Template talk:ModActorImage]], please? I think the template needs a &amp;quot;Link&amp;quot; parameter just like the one used by ItemImage. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:57, 18 May 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry for the late reply, I didn&#039;t get a notification for some reason and I&#039;m a bit behind on all this stuff at the moment!  I replied on the [[Template talk:ModActorImage|Talk page]] but essentially to avoid the wiki becoming a dumping ground for all sorts of random fan art, there are some restrictions on what can be uploaded.  Generally speaking it&#039;s one page per mod, and all the actor info, story, etc. should be on that single page.  We found early on that having a separate article for each mod actor was too much work because they would never be completed fully, so by keeping everything on the one page it makes it easier to maintain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 04:24, 13 July 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
::No problem, thanks for your reply. I answered on the talk page. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:35, 13 July 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== New version of a file doesn&#039;t work ==&lt;br /&gt;
&lt;br /&gt;
Some minutes ago, I uploaded a new version of The Ultra Omegamatic in-game image with new tiles, but it is the same as the first version of the image, how I can change it?--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 18:54, 8 September 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You have to clear the cache of your browser in order to see the changes take effect. &lt;br /&gt;
: -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 23:50, 8 September 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== All the fangames use the new infobox ==&lt;br /&gt;
&lt;br /&gt;
Hi, I would like to tell you I checked all the fangames infobox and all of them use the new infobox, so there is a thing to remove in the list of &amp;quot;To do things&amp;quot;. Soon I&#039;ll check the unused images--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 20:07, 8 October 2020 (UTC)&lt;br /&gt;
: Nice job!  Feel free to remove it from the list if you&#039;re satisfied it&#039;s done!  (And feel free to add anything else you think is important.) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:34, 9 October 2020 (UTC)&lt;br /&gt;
I now finished to check the unused images: some of them are present in their articles but it says they&#039;re unused, the others have been hidden so an administrator can delete them except for the 1st level of The Prisoner&#039;s Dilemma. It can be utilised when it&#039;ll be released--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 10:59, 9 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I also uploaded some fangames images to fix the broken links, but I&#039;ve done an error moving a file and uploading another image for [[Keen: Next (fangame)|Keen: Next]] because I didn&#039;t know both the files have the same name. The rest of the fangames that need pictures are unplayable on my PC so I can&#039;t do some screenshots of them--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 20:09, 9 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just finished putting all the files into categories. The remaining are 12: An image of Bobby Prince, some images of my mod in development that need to be deleted, some levels of Keen 3 Part 2 which are the same as the originals and which I think should be deleted and some screenshots of some other Mod. Keen Aqua 3 I think--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 07:41, 11 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
: That&#039;s great, thanks so much for all your effort!  I&#039;ve made you an administrator of the wiki so you should now have access to delete files if you want to tidy up that last little bit.  Sometimes the wiki software can be a little slow to realise an image is in use if you have only just added it to a page, but if you use the [http://www.shikadi.net/wiki/keen/api.php?action=query&amp;amp;meta=siteinfo&amp;amp;siprop=statistics statistics API] and look at the &amp;quot;jobs&amp;quot; value then once it has reached zero everything should be up to date.  If this is zero but you still have an image listed as unused when it&#039;s definitely in use, let me know and I&#039;ll investigate.  Remember that filenames on the wiki are case sensitive so it&#039;s possible it&#039;s a duplicate if the case is different. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:19, 12 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Obviously I&#039;ll have to get used to it. Because I don&#039;t know how certain functions work so by mistake I reversed your edits but quiet I fixed everything--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 08:01, 12 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I also deleted all the unused images and the duplicates. The remaining images are from unreleased mods(They can be utilized when the mods will be finished) and levels that are present in their articles(even if it says they&#039;re unused) . So this work is finished&lt;br /&gt;
&lt;br /&gt;
: I refreshed the wiki link database as it looked like the unused images shouldn&#039;t have been there, and sure enough now it has realised which ones were in use and most of them have gone from the list.  There are still a few unused images so hopefully those can easily be sorted. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:57, 14 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Good. So I can sort the rest--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 10:40, 14 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Creatures and Hazards ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv, since some years, the creatures and hazards of the original games appear on the main page of a game rather than on separate pages (though certain pages like [[Keen 1 Hazards]], [[Keen 6 Hazards]] and [[Keen GBC Creatures]] were not changed to redirects). While the template EpisodeInfo still contains separate links for creatures and hazards, both of them appear under the heading &amp;quot;Actors&amp;quot;. Personally, I&#039;d prefer to have separate sections for them (Nisaba agreed). What do you think? I guess that would not only require a new template, but also some new properties? Or would there be another way to split them on the game page? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:07, 11 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I couldn&#039;t help but read. It would be a very nice idea to create separate pages for each hazard. It would help readers to know more about these--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 08:34, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Actually, I was referring to separate sections on a game&#039;s main page rather than separate pages for the various hazards. Most of them are just deadly tiles, though I wouldn&#039;t mind if pages were made for ice cannon, laser cannon, jack, underwater mine, etc., since these stand out. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 15:24, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Both are cool ideas. So let&#039;s wait Malvineous&#039;s reply--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 18:00, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: I just dropped by to let you guys know that I second Grandy02 suggestions. &lt;br /&gt;
:::: -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 19:49, 27 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Are you saying you just want the creatures under the &amp;quot;Actors&amp;quot; heading split into two headings, &amp;quot;Creatures&amp;quot; and &amp;quot;Hazards&amp;quot;?  I&#039;m fine with that (I think those pages could do with a revamp in general) but do we need to agree on the criteria for what goes where?  e.g. if you say hazards are anything that is a tile then what about a [[Pat Pat]], isn&#039;t it a creature?  Maybe hazards are things that are environmental, but then the Ice Cannon doesn&#039;t really qualify...&lt;br /&gt;
::::: There is an existing property for &#039;harms keen&#039; that could be used to split the sections but it sounds like this isn&#039;t what you are after.  If you need to add a new property then that&#039;s no problem, let&#039;s just agree on how to classify it first.  Perhaps it&#039;s worth asking on the PCKF or K:M for opinions there?  I don&#039;t think too many active community members keep an eye on these talk pages.  Either way we&#039;ll need to create a page for each hazard so we can use the Semantic MediaWiki query tools to populate the lists. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:14, 28 July 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::Splitting into two headings (possibly as subheadings of &amp;quot;Actors&amp;quot;) sounds good. What about an additional parameter for the &amp;quot;ActorImage&amp;quot; template that allows to distinguish between the two? The Pat Pat is indeed a tricky one, technically it&#039;s just a deadly tile, maybe an exception could be made for that one. I&#039;d list everything as &amp;quot;hazards&amp;quot; what has been referred to as such on the &amp;quot;Hazards&amp;quot; pages (including Ice Cannon, Jack, Dart Gun, Laser Cannon etc.). Not sure about the &amp;quot;Stranded Fish&amp;quot; (or whatever it is), though. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 16:03, 7 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== HTTPS &amp;amp; New URL ==&lt;br /&gt;
&lt;br /&gt;
I see the URL for the KeenWiki has changed and the site is now HTTPS - when did that change and, out of interest, were you contacted by a user called &amp;quot;mr_pants&amp;quot; requesting it?  It&#039;s just that I was contacted via IRC this morning under the mistaken assumption that I had control of that part of the wiki. -- [[User:DHeadshot|DHeadshot]] ([[User talk:DHeadshot|talk]]) 16:39, 11 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No, nobody has contacted me about it.  It is something I have wanted to do for a long time, starting the process [https://pckf.com/viewtopic.php?f=3&amp;amp;t=4396 over two years ago] and only finishing [https://pckf.com/viewtopic.php?t=9247 a couple of months back]. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:30, 12 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Camoto: Dangerous Dave - graphic problems ==&lt;br /&gt;
&lt;br /&gt;
Hey! Today I translated (only hexadecimally unfortunately) Dangerous Dave 1 to Hungarian. I wanted to translate the graphic signs like &amp;quot;DAVES:&amp;quot; &amp;quot;GO THRU THE DOOR&amp;quot;, etc. as well, but when I exported original VGA (!) graphic stuff and then I modificated it and re-imported it, the graphics were screwed up when I started new game. (Even the blazing Dangerous Dave sign had little glitch as well). Help me! [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 20:48, 3 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: This is a known problem that was only very recently fixed.  I&#039;m not working on the old Camoto version any longer, but you can try the incomplete development version of the new Camoto version that runs in a web browser.  It can&#039;t do as many things as the old Camoto yet but it can modify the Dave graphics without corrupting them.  See https://camoto.shikadi.net -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:36, 3 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Adding a Demo/Beta release date to infoboxes? ==&lt;br /&gt;
&lt;br /&gt;
Right now, it seems half the time the first release date is the release of a demo/beta (such as with [[Atroxian Realm]]), and half the time it&#039;s the first full release (such as with [[Operation Ocflore]]). It&#039;s inconsistent.&lt;br /&gt;
&lt;br /&gt;
In my opinion, the best way to fix this would be to add a Demo/Beta Release date to the info box and rename the Release date to Official Release Date. [[User:Pandakeen|Pandakeen]] ([[User talk:Pandakeen|talk]]) 18:43, 7 August 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Fair point.  I&#039;m less keen on the demo/beta release date because mods shouldn&#039;t have pages made for them until they are finished (as this acts as motivation to finish the mod instead of abandoning it shortly after the demo has been done) so I&#039;d be fine with only having the date of the full release and not worrying about any demos or betas. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:56, 9 August 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;ll go ahead and correct the dates, then. [[User:Pandakeen|Pandakeen]] ([[User talk:Pandakeen|talk]]) 13:27, 20 October 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Thanks for the admin access! ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv, thanks for giving me access to administrator tools, including mass-editing! A few days ago, I fixed tons of download links to reflect the KeenWiki server change. It took me a while to figure out how to use the mass-editing tool, but once I got it down it was a breeze. The download links seem to be working now. I also upgraded them so that they use HTTPS instead of HTTP -- hope that doesn&#039;t do any harm!&lt;br /&gt;
&lt;br /&gt;
When I first took care of the fan-game download links, I made a slight mistake. It messed up the &amp;quot;List of fan-games&amp;quot; page, but thankfully, I got that fixed. The individual fan-game pages seem to be alright, so I didn&#039;t bother with those, but I thought I&#039;d point out the mistake just in case something else did get messed up. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 07:10, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: All good, I wasn&#039;t sure if you got my e-mail or not!  As long as you can fix any problems you create then it&#039;s no issue :) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:23, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Is Keen 1 Randomiser a mod or a tool? ==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve been thinking of making an article about Multimania&#039;s [https://davidgow.net/keen/randomiser.html  Keen 1 Randomiser], but I can&#039;t decide if it&#039;s a mod or a tool. On one hand, the index page of Multimania&#039;s website describes it as a tool and it looks like it could be used with mods, or at least the simple ones. On the other hand, however, it seems to be made more for playing rather than creation. What do you think? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 07:10, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: In my opinion if it&#039;s a patch you run as part of the game then it&#039;s a mod, and if it&#039;s a program you run that produces a mod you then run as a second step (and can distribute independently), that&#039;s a tool.  However if the difference is that slight then it won&#039;t hurt to list it in both categories. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:23, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Well, you can run a program (RANDKEEN.EXE) that will generate the randomized levels and patch file, which could be independently distributed. On the other hand, however, you can run a batch file (RNDKEEN1.BAT) that will run RANDKEEN.EXE and then runs the game with the produced levels and patch file. Since the [[Random Maze Generator]] is considered a tool, I&#039;m slightly leaning towards the tool category. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 06:36, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: It certainly is a borderline one.  Is its primary purpose for people to play (like a mod), or to make levels for other modders to incorporate into their own levels (like a tool)?  How many mods have made use of it as a tool?  If there aren&#039;t too many that suggests it&#039;s a mod first, but also listed in tools second. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 07:00, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::I just created an article about it, and it&#039;s classified as a tool. I saw your message after uploading the first image and while creating the article. I&#039;m sure it&#039;s made for people to play, and I haven&#039;t seen any mods make use of it (at least not yet). I made it a tool, though, since I feel like it makes more sense and classifying it as a mod might make the article look awkward. Feel free to change it, though. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 08:44, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Mirror Keen in Second Dome of Darkness ==&lt;br /&gt;
&lt;br /&gt;
Hello. In the Second Dome of Darkness you can see a mirror Keen with the SGA sign &amp;quot;ICU&amp;quot;. Is it really fake? [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 13:45, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
: I think so.  If you look at the [[Second Dome of Darkness|level map]] there&#039;s nothing there - you can open the game in a level editor to confirm it for yourself.  You can also extract the Keen 6 sprites and look through them to see if you can find any of the sprites you can see in the video.  You can use the F10+T cheat in the game to view all the sprites loaded for the level and look for a mirror Keen sprite there.  If it was real, I&#039;m sure there would be more than a single video of it.  I suppose the question now is, will someone make a Keen 6 mod to turn it into reality :)  It looks like the video was of a Keen mod.  I suppose if there is a background tile that animates quickly with enough frames it would be easy enough to do.  You are a very experienced modder, I&#039;m sure you would be able to work out how it was done and solve the mystery! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 14:33, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: Well, I&#039;m planning Keen 6 v2.0, which will be a Keen 6 mod based on v1.5, so I&#039;ll try everything. :) [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 16:06, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Patch wiki issues ==&lt;br /&gt;
&lt;br /&gt;
So I&#039;ve just come back and noticed the patch wiki is broken. All the patches are an ugly red color, the [] and {} highlights are broken, the titles of patches that used to be present have been totally erased, the whole thing&#039;s a mess. What happened? What&#039;s this weird &#039;syntaxhighlight lang=&amp;quot;asm&amp;quot;&#039; stuff? If this is permanent it&#039;ll require a massive overhaul of all patch pages to remove the brackets and the descriptions that used the fact that brqackets highlighted stuff different colors. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 23:31, 30 January 2023 (GMT)&lt;br /&gt;
&lt;br /&gt;
: I&#039;ve had a look at a few pages (e.g. [[Patch:A 2 Enter]] and [[Patch:Deadly tiles]]) and they seem to be displaying fine.  Which pages are you seeing that are broken?  The version of MediaWiki that powers the KeenWiki had to be upgraded a year or so ago to get the latest security patches, and the new version wasn&#039;t compatible with the old syntax highlighting feature we were using for the patches.  Instead there was a &amp;quot;syntaxhighlight&amp;quot; extension (used for highlighting code) and after investigating a few options, the assembly language (asm) option gave the least-worst highlighting for CKPatch code, so we went with that.  We did a bulk replace across all wiki pages so all patches should be wrapped in asm syntaxhighlight tags now instead, and the old patch titles should now have been moved to headings shown above the patch instead.  Unfortunately there wasn&#039;t a lot we could do but I&#039;m open to suggestions if you have any better ideas! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:32, 31 January 2023 (GMT)&lt;br /&gt;
:: Are you not seeing lines like &#039;%patch $825D {$BCEBW}&#039; with the curly brackets? Those can&#039;t be copied into a patch file and were previously used for highlighting. If there&#039;s no way to revert they should be cut out of all the patches, along with the square brackets. A lot of text mentions the old highlight colors, which are now complete nonsense. If you&#039;re NOT seeing those brackets I can get a screenshot, as this might be a browser issue. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 10:59, 3 February 2023 (GMT)&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Music&amp;diff=46419</id>
		<title>Patch:Music</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Music&amp;diff=46419"/>
		<updated>2023-01-30T23:31:54Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add menu music patches. The patch wiki is broken!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers music related patches. As such, it relates mostly to Keen Galaxy. At present, about the only patches available are those that will change what song plays in a level.&lt;br /&gt;
&lt;br /&gt;
There is a patch and program created by [[User:Lemm]] to allow IMF files of up to 32 KB in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen Vorticons music ==&lt;br /&gt;
&lt;br /&gt;
The TSR [[TSMusic]] created by [[User:Lemm]] allows a modder to include as many IMF music files as they wish, one per level. To be used TSMusic requires the Keen engine to coomunicate with it, and thus a patch. The patches for Keen 1–3 (v1.31) are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music with TSMusic:&lt;br /&gt;
%patch $BE97 $65&lt;br /&gt;
%patch $BEE2 $65&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music with TSMusic:&lt;br /&gt;
%patch $B5AF $65&lt;br /&gt;
%patch $B5FA $65&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music with TSMusic:&lt;br /&gt;
%patch $C90D $65&lt;br /&gt;
%patch $C958 $65&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen Galaxy Level songs ==&lt;br /&gt;
&lt;br /&gt;
These patches change what song is played in a given level. You are limited only to songs in the &amp;lt;tt&amp;gt;AUDIO.CKx&amp;lt;/tt&amp;gt; file. For other music, the values used are not the song number, but the &#039;&#039;level&#039;&#039; number that plays the song you want, with some complications. (It is best to experiment with these later values, to see how things work.)&lt;br /&gt;
&lt;br /&gt;
Additional songs can be added to the game by using a chunk designated for sound to hold an extra songs.  In the executable, the audio chunk pointers are ordered so that the music chunk pointers are immediately after the sound chunk pointers.  Thus, if you shift the boundary between sound and music backwards, you create more space for music chunk pointers at the expense of sound chunk pointers.  This also shifts the existing song numbers correspondingly (e.g. if you shift by two chunks, a song that was originally song 3 becomes song 5, since the first music chunk is now two chunks earlier).  To use the extra songs patch, lower the existing start index of the song chunks by however many new songs you are adding.  Then lower the corresponding start of audio segment pointer by 2x however many songs you imported.  For example, in keen 5, if you were to add two songs, %patch $8C61 $00C0W would be lowered to $00BE, and %patch $8BF1 $BF45W would be lowered to $BF41W (along with the two subsequent patches).  Finally, you would have to change the total number of songs from 14 to 16.&lt;br /&gt;
&lt;br /&gt;
In Keen 4 it is also possible to play music in the [[Patch:Main menu]] or [[Patch:Computer_Wrist#Play_music_in_help|computer wrist]], see the pages for details.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Where music list is read from:&lt;br /&gt;
%patch $8CCD $0396W  #$2F206&lt;br /&gt;
%patch $8CA4 $14     #Total number of level entries&lt;br /&gt;
&lt;br /&gt;
#Song values:&lt;br /&gt;
#0: Shadowlands       1: Eat your Veggies&lt;br /&gt;
#2: Too hot           3: Slug village&lt;br /&gt;
#4: Kick in the pants 5: Ancients&lt;br /&gt;
&lt;br /&gt;
#This is the music played in each level:&lt;br /&gt;
#             VALUE   LEVEL                 MUSIC PLAYED         LEVEL No&lt;br /&gt;
%patch $2F206 [$0000W]  #Map                  (Shadowlands)          0&lt;br /&gt;
              [$0004W]  #Border Village       (Kick in the Pants)    1&lt;br /&gt;
              [$0003W]  #Slug Village         (Slug Village)         2&lt;br /&gt;
              [$0003W]  #Perilous Pit         (Slug Village)         3&lt;br /&gt;
              [$0002W]  #Cave of Descendants  (Too Hot)              4&lt;br /&gt;
              [$0002W]  #Chasm of Chills      (Too Hot)              5&lt;br /&gt;
              [$0004W]  #Crystalus            (Kick in the Pants)    6&lt;br /&gt;
              [$0003W]  #Hillville            (Slug Village)         7&lt;br /&gt;
              [$0001W]  #Sand Yego            (Eat your Veggies)     8&lt;br /&gt;
              [$0001W]  #Miragia              (Eat your Veggies)     9&lt;br /&gt;
              [$0001W]  #Lifewater Oasis      (Eat your Veggies)    10&lt;br /&gt;
              [$0002W]  #Pyramid of Moons     (Too Hot)             11&lt;br /&gt;
              [$0002W]  #Pyramid of Shadows   (Too Hot)             12&lt;br /&gt;
              [$0002W]  #Pyramid of Ancients  (Too Hot)             13&lt;br /&gt;
              [$0002W]  #Pyramid of Forbidden (Too Hot)             14&lt;br /&gt;
              [$0002W]  #Isle of Tar          (Too Hot)             15&lt;br /&gt;
              [$0002W]  #Isle of Fire         (Too Hot)             16&lt;br /&gt;
              [$0001W]  #Well of Wishes       (Eat your Veggies)    17&lt;br /&gt;
              [$0003W]  #Bwb Megarocket       (Slug Village)        18&lt;br /&gt;
              [$FFFFW]  #High scores          (No music, &amp;quot;Fanfare&amp;quot;) 19&lt;br /&gt;
&lt;br /&gt;
#Other music played: (Values here is number of LEVELS whose music is used)&lt;br /&gt;
%patch $5836 $000CW #Story demo (Too hot)&lt;br /&gt;
%patch $9CD7 $0007W #Ending Sequence (Slug Village)&lt;br /&gt;
%patch $F107 $FFFFW #Talking to Lindsey (Ancient)&lt;br /&gt;
%patch $F4CA $FFFFW #Talking to Ancient (Ancient)&lt;br /&gt;
&lt;br /&gt;
#Add new music&lt;br /&gt;
#Index of first music chunk within audio chunks:&lt;br /&gt;
%patch $8CEF $009CW&lt;br /&gt;
&lt;br /&gt;
#Start address of music chunks&lt;br /&gt;
#reduce start address by 2x that of &amp;quot;First Audio Entry&amp;quot;&lt;br /&gt;
%patch $8C75 $C895W #Clear_music()&lt;br /&gt;
%patch $8C83 $C895W #Clear_music()&lt;br /&gt;
%patch $8D83 $C895W #StartMusic()&lt;br /&gt;
%patch $8C91 $06    #Total Number of Songs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Where music list is read from:&lt;br /&gt;
%patch $8C3F $033AW  #$3067A&lt;br /&gt;
%patch $8C20 $14     #Total number of level entries&lt;br /&gt;
&lt;br /&gt;
#Song values:&lt;br /&gt;
#00 = Came In           01 = Armageddon Machine&lt;br /&gt;
#02 = High Scores       03 = Snooping&lt;br /&gt;
#04 = Bagpipes          05 = Wednesday on the Beach&lt;br /&gt;
#06 = Unknown           07 = Security Center&lt;br /&gt;
#08 = Help              09 = Be Sphereful With My Diamonds&lt;br /&gt;
#0A = Make it Tighter   0B = Omegamatic&lt;br /&gt;
#0C = Fanfare           0D = Quantum Explosion Dynamo&lt;br /&gt;
&lt;br /&gt;
#This is the music played in each level:&lt;br /&gt;
#             VALUE   LEVEL                      MUSIC PLAYED            LEVEL No&lt;br /&gt;
%patch $3067A [$000BW]  #Map                       (Omegamatic)              0&lt;br /&gt;
              [$0005W]  #Ion Ventilation System    (Wednesday on the Beach)  1&lt;br /&gt;
              [$0007W]  #Security Center           (Security Center)         2&lt;br /&gt;
              [$0009W]  #Defense Tunnel Vlook      (Be Sphereful)            3&lt;br /&gt;
              [$000AW]  #Energy Flow Systems       (Make it Tighter)         4&lt;br /&gt;
              [$0009W]  #Defense Tunnel Burrh      (Be Sphereful)            5&lt;br /&gt;
              [$000AW]  #Regulation Control Center (Make it Tighter)         6&lt;br /&gt;
              [$0009W]  #Defense Tunnel Sorra      (Be Sphereful)            7&lt;br /&gt;
              [$000AW]  #Neutrino Burst Injector   (Make it Tighter)         8&lt;br /&gt;
              [$0009W]  #Defense Tunnel Teln       (Be Sphereful)            9&lt;br /&gt;
              [$000AW]  #Brownian Motion Inducer   (Make it Tighter)         10&lt;br /&gt;
              [$0003W]  #Gravitational Damping Hub (Snooping)                11&lt;br /&gt;
              [$000DW]  #Quantum Explosion Dynamo  (QED)                     12&lt;br /&gt;
              [$0004W]  #Korath III Base           (Bagpipes)                13&lt;br /&gt;
              [$000CW]  #Ending                    (Fanfare)&lt;br /&gt;
              [$0002W]  #High Scores               (High Scores)             15&lt;br /&gt;
%patch $3069C [$0001W]  #Scrolling Story           (Armageddon Machine)&lt;br /&gt;
              [$0000W]  #Game Over                 (Came In)&lt;br /&gt;
              [$0008W]  #Help                      (Help)&lt;br /&gt;
&lt;br /&gt;
#Other music played: (Values here is number of LEVELS whose music is used)&lt;br /&gt;
%patch $5830 $0011W #Star Wars story&lt;br /&gt;
%patch $EABD $0013W #Help&lt;br /&gt;
%patch $EC67 $000EW #Ending sequence&lt;br /&gt;
%patch $F808 $0012W #Game over&lt;br /&gt;
&lt;br /&gt;
#Add new music&lt;br /&gt;
#Index of first music chunk within audio chunks:&lt;br /&gt;
%patch $8C61 $00C0W&lt;br /&gt;
&lt;br /&gt;
#Start address of music chunks&lt;br /&gt;
#reduce start address by 2x that of &amp;quot;First Audio Entry&amp;quot;&lt;br /&gt;
%patch $8BF1 $BF45W #Clear_music()&lt;br /&gt;
%patch $8BFF $BF45W #Clear_music()&lt;br /&gt;
%patch $8CF5 $BF45W #StartMusic()&lt;br /&gt;
%patch $8C0D $0E    #Total Number of Songs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Where music list is read from:&lt;br /&gt;
%patch $8AA7 $030EW  #$3103E&lt;br /&gt;
%patch $8A88 $14     #Total number of level entries&lt;br /&gt;
&lt;br /&gt;
#Song values:&lt;br /&gt;
#00 = A World of Wonderment  01 = Brer Tar&lt;br /&gt;
#02 = To the Future          03 = Faster&lt;br /&gt;
#04 = Space Funk             05 = Aliens Ate My Babysitter&lt;br /&gt;
#06 = Ominous                07 = Metal&lt;br /&gt;
#08 = Mamba Snake&lt;br /&gt;
&lt;br /&gt;
#This is the music played in each level:&lt;br /&gt;
#             VALUE   LEVEL                           MUSIC PLAYED              LEVEL No&lt;br /&gt;
%patch $3103E [$0005W]  #Map                            (Aliens Ate My Babysitter)  0&lt;br /&gt;
              [$0003W]  #Bloogwaters Crossing           (Faster)                    1&lt;br /&gt;
              [$0001W]  #Guard Post One                 (Brer Tar)                  2&lt;br /&gt;
              [$0008W]  #First Dome of Darkness         (Mamba Snake)               3&lt;br /&gt;
              [$0008W]  #Second Dome of Darkness        (Mamba Snake)               4&lt;br /&gt;
              [$0008W]  #Bloogdome                      (Mamba Snake)               5&lt;br /&gt;
              [$0007W]  #Bloogton Manufacturing         (Metal)                     6&lt;br /&gt;
              [$0002W]  #Bloogton Tower                 (To the Future)             7&lt;br /&gt;
              [$0007W]  #Bloogfoods, Inc.               (Metal)                     8&lt;br /&gt;
              [$0001W]  #Guard Post 2                   (Brer Tar)                  9&lt;br /&gt;
              [$0003W]  #Bloogville                     (Faster)                    10&lt;br /&gt;
              [$0002W]  #BASA                           (To the Future)             11&lt;br /&gt;
              [$0001W]  #Guard Post 3                   (Brer Tar)                  12&lt;br /&gt;
              [$0004W]  #Bloogbase Recreational District(Space Funk)                13&lt;br /&gt;
              [$0004W]  #Bloogbase Management District  (Space Funk)                14&lt;br /&gt;
              [$0006W]  #Bloog Control Center           (Ominous)                   15&lt;br /&gt;
              [$0002W]  #Blooglab Space Station         (To the Future)             16&lt;br /&gt;
              [$0000W]  #Bean-with-Bacon Megarocket     (A World of Wonderment)     17&lt;br /&gt;
              [$0000W]  #High Scores                    (A World of Wonderment)     18&lt;br /&gt;
&lt;br /&gt;
#Other music played: (Values here is number of LEVELS whose music is used)&lt;br /&gt;
%patch $563F $000DW #Star wars text (Space funk)&lt;br /&gt;
%patch $E33C $0001W #Molly ending (Faster)&lt;br /&gt;
&lt;br /&gt;
#Index of first music chunk within audio chunks:&lt;br /&gt;
%patch $8AC9 $00B4W&lt;br /&gt;
&lt;br /&gt;
#Add new music&lt;br /&gt;
#Start address of music chunks&lt;br /&gt;
#reduce start address by 2x that of &amp;quot;First Audio Entry&amp;quot;&lt;br /&gt;
%patch $8A59 $CA53W #Clear_music()&lt;br /&gt;
%patch $8A67 $CA53W #Clear_music()&lt;br /&gt;
%patch $8B5D $CA53W #StartMusic()&lt;br /&gt;
%patch $8A75 $09    #Total number of songs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Music and extra levels ==&lt;br /&gt;
&lt;br /&gt;
[[Patch:Levels#Extra_levels|It is possible to have extra levels in Keen Vorticons and Galaxy.]] For Vorticons there is no issue, the TSR program will provide music for any level. With Keen Galaxy the music list must be extended, this is done by simply adding new entries to the end of it. (This will overwrite some of the [[Patch:F10 M Cheat]] text.) The extra level patch also has an entry for the number of level song entries in the list. This should match the number of levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create a secondary song list ==&lt;br /&gt;
&lt;br /&gt;
This patch creates a secondary music subroutine that uses an alternate song list. What this means is that when called it will play a song from this list instead of the main level list. This is useful if music\level space is tight, or the modder wishes to play a song that does not appear in any possible level. It relies on using the [[Patch:EGAGRAPH|EGAGRAPH check skip]] and so is incompatible with any other patches that use this.&lt;br /&gt;
&lt;br /&gt;
Following the main part of the patch is a series of optional patches that make various situations in the game use this alternate song list. Any or all of them can be used or removed as desired. Note that the song to be played in these uses is highlighted in blue.&lt;br /&gt;
&lt;br /&gt;
As a note the [[Keen 6]] patch overwrites two &#039;Not enough memory to load levels&#039; error texts and disables the [[Patch:F10 V Cheat|VBL cheat.]]&lt;br /&gt;
&lt;br /&gt;
=== New song list -Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check (Frees 389 bytes at $3CF6)&lt;br /&gt;
%patch $3CE5 $90 $90&lt;br /&gt;
&lt;br /&gt;
#New music setting code = $037D0526RL&lt;br /&gt;
%patch $3CF6 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $83 $FE $14 $72 $11&lt;br /&gt;
             $83 $FE $FF $74 $0C $B8 $06CCW  $50 $9A $037D022FRL     $83 $C4&lt;br /&gt;
             $02 $9A $18740B15RL     $83 $FE $FF $75 $05 $BF $05 $00 $EB $08&lt;br /&gt;
             $8B $DE $D1 $E3 $8B $BF $018EW  $E9 $4F9EW&lt;br /&gt;
&lt;br /&gt;
#New music list (Max length 20 entries)&lt;br /&gt;
%patch $2EFFE $0000W&lt;br /&gt;
              $0001W&lt;br /&gt;
              $0002W&lt;br /&gt;
              $0003W&lt;br /&gt;
              $0004W&lt;br /&gt;
              $0005W&lt;br /&gt;
              $0006W&lt;br /&gt;
              $0007W&lt;br /&gt;
              $0008W&lt;br /&gt;
              $0009W&lt;br /&gt;
              $000AW&lt;br /&gt;
              $000BW&lt;br /&gt;
              $000CW&lt;br /&gt;
              $000DW&lt;br /&gt;
              $000EW&lt;br /&gt;
              $000FW&lt;br /&gt;
&lt;br /&gt;
#OPTIONAL USES OF NEW MUSIC LIST:&lt;br /&gt;
#Use new list in story demo&lt;br /&gt;
%patch $5835 $B8 [$0001W] $50 $9A $037D0526RL&lt;br /&gt;
&lt;br /&gt;
#Use new list in ending sequence&lt;br /&gt;
%patch $9CD6 $B8 [$0001W] $50 $9A $037D0526RL&lt;br /&gt;
&lt;br /&gt;
#Use new list talking to Lindsey&lt;br /&gt;
%patch $F106 $B8 [$0001W] $50 $9A $037D0526RL&lt;br /&gt;
&lt;br /&gt;
#Use new list when talking to Oracle Member&lt;br /&gt;
%patch $F4C9 $B8 [$0001W] $50 $9A $037D0526RL&lt;br /&gt;
&lt;br /&gt;
#Play music in the main menu&lt;br /&gt;
#SIDE EFFECT: Keen menu background color black, not cyan&lt;br /&gt;
%patch $1CC6A $B8 [$0015W]  $50 $9A $06BD20C7RL&lt;br /&gt;
&lt;br /&gt;
#Play music whenever help loaded (Overwrite cache graphic sub, thus can cause graphic glitch)&lt;br /&gt;
%patch $9924 $B8 [$0001W] $50 $9A $037D0526RL $83 $C4 $02&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New song list -Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check (Frees 389 bytes at $3CF0)&lt;br /&gt;
%patch $3CDF $90 $90&lt;br /&gt;
&lt;br /&gt;
#New music setting code = $037D0520RL&lt;br /&gt;
%patch $3CF0 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $83 $FE $14 $72 $11&lt;br /&gt;
             $83 $FE $FF $74 $0C $B8 $063EW  $50 $9A $037D022FRL     $83 $C4&lt;br /&gt;
             $02 $9A $196E0B13RL     $8B $DE $D1 $E3 $8B $BF $0147W  $E9 $4F20W&lt;br /&gt;
&lt;br /&gt;
#New music list (Max length 20 entries)&lt;br /&gt;
%patch $30487 $0000W&lt;br /&gt;
              $0001W&lt;br /&gt;
              $0002W&lt;br /&gt;
              $0003W&lt;br /&gt;
              $0004W&lt;br /&gt;
              $0005W&lt;br /&gt;
              $0006W&lt;br /&gt;
              $0007W&lt;br /&gt;
              $0008W&lt;br /&gt;
              $0009W&lt;br /&gt;
              $000AW&lt;br /&gt;
              $000BW&lt;br /&gt;
              $000CW&lt;br /&gt;
              $000DW&lt;br /&gt;
              $000EW&lt;br /&gt;
              $000FW&lt;br /&gt;
&lt;br /&gt;
#OPTIONAL USES OF NEW MUSIC LIST:&lt;br /&gt;
#Use new list in GAME OVER music&lt;br /&gt;
%patch $F807 $B8 [$0001W] $50 $9A $037D0520RL&lt;br /&gt;
&lt;br /&gt;
#Use new list in music in help menu&lt;br /&gt;
%patch $EABC $B8 [$0001W] $50 $9A $037D0520RL&lt;br /&gt;
&lt;br /&gt;
#Use new list in story demo&lt;br /&gt;
%patch $5830 $B8 [$0001W] $50 $9A $037D0520RL&lt;br /&gt;
&lt;br /&gt;
#Use new list in ending sequence&lt;br /&gt;
%patch $EC66 $B8 [$0001W] $50 $9A $037D0520RL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New song list -Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable Add VBLs (Free $74B0-$7535)&lt;br /&gt;
%patch $74AD $E9 $0086W&lt;br /&gt;
&lt;br /&gt;
#New music setting code = $069A0B10RL&lt;br /&gt;
%patch $74B0 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $83 $FE $14 $72 $11&lt;br /&gt;
             $83 $FE $FF $74 $0C $B8 $0636W  $50 $9A $037B0230RL     $83 $C4&lt;br /&gt;
             $02 $9A $183B0B15RL     $8B $DE $D1 $E3 $8B $BF  $027BW  $E9 $15C8W&lt;br /&gt;
&lt;br /&gt;
#New music list (Max length 24 entries)&lt;br /&gt;
%patch $30FAB $0000W&lt;br /&gt;
              $0001W&lt;br /&gt;
              $0002W&lt;br /&gt;
              $0003W&lt;br /&gt;
              $0004W&lt;br /&gt;
              $0005W&lt;br /&gt;
              $0006W&lt;br /&gt;
              $0007W&lt;br /&gt;
              $0008W&lt;br /&gt;
              $0009W&lt;br /&gt;
              $000AW&lt;br /&gt;
              $000BW&lt;br /&gt;
              $000CW&lt;br /&gt;
              $000DW&lt;br /&gt;
              $000EW&lt;br /&gt;
              $000FW&lt;br /&gt;
&lt;br /&gt;
#Use new list in story demo&lt;br /&gt;
%patch $563E $B8 [$0001W] $50 $9A $069A0B10RL&lt;br /&gt;
&lt;br /&gt;
#Use new list in ending sequence&lt;br /&gt;
%patch $E33B $B8 [$0001W] $50 $9A $069A0B10RL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Insufficient Memory to play music error ==&lt;br /&gt;
&lt;br /&gt;
This error occurs when after all the level and graphics have been loaded, there does not remain enough free memory to load the IMF music file selected for that level. The solution is to either use a smaller music file for the level or free up memory.&lt;br /&gt;
&lt;br /&gt;
This error is both easy to diagnose and remedy. The first step is to load the level with the error. Using the [[Patch:F10 M Cheat|memory test cheat]] (F10 + M) the amount of free memory &#039;&#039;without the music&#039;&#039; can be found. This can then be compared with the size of the IMF file needing to be played to give a good estimate of how much extra memory needs to be freed up. If a smaller music file is not desirable or cannot be found then more memory will have to be freed up. This can be constantly checked with the memory cheat.&lt;br /&gt;
&lt;br /&gt;
There are three main ways to free up memory. The first is to physically shrink the level&#039;s size; each tile removed will free up six bytes of memory, so trimming a large level can save a lot. This however is often not preferable.&lt;br /&gt;
&lt;br /&gt;
The second method is to lessen the number of different tiles in the level (This is why [[TED5]] has a function to tell you how many there are.) each background tile will save 128 bytes and each foreground tile 140 bytes of memory. Again this may not be preferable, but a large level often contains many tiles that do not really add anything to it.&lt;br /&gt;
&lt;br /&gt;
Finally certain sprites may be removed. [[Patch:Sprite cache|Each sprite caches all its graphics into memory so it can display them]] A sprite can easily take up tens of kilobytes of space, the larger and showier it is, the more memory it needs. To remove a sprite cache, &#039;&#039;all&#039;&#039; instances of the sprite must be removed from the level, not one can remain.&lt;br /&gt;
&lt;br /&gt;
A related solution is to edit the graphics, either making them smaller, or changing how many copies are placed into memory. (In theory this will make the sprite move less smoothy, but this is often hard to see.) This can halve or even quarter the amount of memory the sprite needs to run.&lt;br /&gt;
&lt;br /&gt;
Other errors can be found at [[Patch:Game errors]].&lt;br /&gt;
&lt;br /&gt;
=== Insufficient memory to play music ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Insufficient memory to play music window -Keen 4:&lt;br /&gt;
%patch $8D18  $EB    #Never show (Free 8D1A-8D7F)&lt;br /&gt;
%patch $8D1B  [$0008W] #Height&lt;br /&gt;
%patch $8D1F  [$0014W] #Width&lt;br /&gt;
%patch $8D30  [$06ECW] #Text called from&lt;br /&gt;
%patch $2F55C &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
              &amp;quot;for background music!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Insufficient memory to play music window -Keen 5:&lt;br /&gt;
%patch $8C8A  $EB    #Never show (Free 8C8C-8CEE)&lt;br /&gt;
%patch $8C8D  [$0008W] #Height&lt;br /&gt;
%patch $8C91  [$0014W] #Width&lt;br /&gt;
%patch $8CA2  [$065EW] #Text called from&lt;br /&gt;
%patch $3099E &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
              &amp;quot;for background music!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Insufficient memory to play music window -Keen 6:&lt;br /&gt;
%patch $8AF2  $EB    #Never show (Free 8AF4-8B69)&lt;br /&gt;
%patch $8AF5  [$0008W] #Height&lt;br /&gt;
%patch $8AF9  [$0014W] #Width&lt;br /&gt;
%patch $8B0A  [$0656W] #Text called from&lt;br /&gt;
%patch $31386 &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
              &amp;quot;for background music!&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable music ==&lt;br /&gt;
&lt;br /&gt;
These patches disable music entirely. Even if the player attempts to enable music this will fail. The first patch simply disables music. (Changing the $0000W to $0001W will force the game to always play music.) The second forces &#039;PC mode&#039; where there is no music and PC sounds only will play.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable music&lt;br /&gt;
%patch $18F54 $C7 $06 $C633W $0000W $90 $90&lt;br /&gt;
&lt;br /&gt;
#Force PC-mode&lt;br /&gt;
%patch $19022 $EB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable music&lt;br /&gt;
%patch $19EF2 $C7 $06 $BC9BW $0000W $90 $90&lt;br /&gt;
&lt;br /&gt;
#Force PC-mode&lt;br /&gt;
%patch $19FC0 $EB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable music&lt;br /&gt;
%patch $18BC4 $C7 $06 $C7C1W $0000W $90 $90&lt;br /&gt;
&lt;br /&gt;
#Force PC-mode&lt;br /&gt;
%patch $18C92 $EB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t play music in certain situations ==&lt;br /&gt;
&lt;br /&gt;
These patches remove music from playing or changing in given situations. For disabling music in a level the best option is to create an &#039;empty&#039; song with no sound and use that as the level music. (Though Keen 4 has the option of setting a song to -1 ($FFFFW) for silence.)&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#No music during Star Wars story:&lt;br /&gt;
%patch $5835 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music during ending sequence:&lt;br /&gt;
%patch $9CD6 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music during Lindsey talk&lt;br /&gt;
%patch $F106 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music during Oracle Member talk&lt;br /&gt;
%patch $F4C9 $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#No GAME OVER music&lt;br /&gt;
%patch $F807 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music in help menu:&lt;br /&gt;
%patch $EABC $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music during Star Wars story:&lt;br /&gt;
%patch $5830 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music during ending sequence:&lt;br /&gt;
%patch $EC66 $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#No music during Star Wars story:&lt;br /&gt;
%patch $563E $EB $0A&lt;br /&gt;
&lt;br /&gt;
#No music during ending sequence:&lt;br /&gt;
%patch $E33B $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Play a certain song while an item is got ==&lt;br /&gt;
&lt;br /&gt;
This patch causes a certain level&#039;s song to be played in any normal level while some condition is met. Here the map (level 0&#039;s) music is played while Keen has the [[Patch:V Card|V card]]. Loading a saved game or going to the help\menu will result in the &#039;default&#039; music restarting. By changing the &amp;lt;tt&amp;gt;$0000W&amp;lt;/tt&amp;gt; a different level&#039;s music can be selected.&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play a certain song while an item is got&lt;br /&gt;
%patch $C551 $E9 $FEFDW&lt;br /&gt;
%patch $C53B $E9 $FF19W&lt;br /&gt;
%patch $C3FC $55 $8B $EC $83 $EC $0C $56 $57 $8B $76 $06 $83 $3E {$6F5AW}  [$01]&lt;br /&gt;
             {$75} $0C $B8 [$0000W]  $50 $9A $06B92083RL     $83 $C4 $02 $8B $5C $2E $D1 $E3 $8B $87 $87&lt;br /&gt;
             $BF $D1 $E8 $E0D1W  $8B $16 $51 $9E $8B $5C $2C $D1 $E3 $03 $C3&lt;br /&gt;
             $89 $56 $FC $89 $46 $FA $8B $44 $30 $2B $44 $2C $40 $8B $16 $4C&lt;br /&gt;
             $9E $2B $D0 $89 $56 $F8 $8B $44 $2E $89 $46 $FE $E9 $00FBW  $8B&lt;br /&gt;
             $7C $2C $E9 $00E2W  $C4 $5E $FA $26 $8B $1F $8E $06 $61 $BF $26&lt;br /&gt;
             $8A $87 $0A $47 $B4 $00 $25 $7F $00 $89 $46 $F6 $0B $C0 $74 $16&lt;br /&gt;
             $8B $5E $F6 $83 $EB $03 $83 $FB $19 $77 $0B&lt;br /&gt;
%patch $8C7D $75 $08 $C7 $06 {$6F5AW}  [$0000W]  $EB $68 $FF $06 {$6F5AW}  $83 $3E&lt;br /&gt;
             {$6F5AW}  [$01] {$76} $06 $C7 $06 {$6F5AW}  [$0000W]  $EB $18&lt;br /&gt;
%patch $8CC3 $5F $5E $8B $E5 $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Play music in Galaxy menu ==&lt;br /&gt;
&lt;br /&gt;
This allows you to play music in the [[Patch:Main menu (Galaxy)|main menu.]] As a side effect the menu background color is black, not cyan. This only matters if your menu image is smaller than 320x200. The value used here is the level whose music is used. (For example a value of 0 will play the map level&#039;s music.) See [[Patch:Music]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music in the menu&lt;br /&gt;
%patch $1CC6F $06BD20C7RL&lt;br /&gt;
%patch $1CC6B [$0003W]      #Play this level&#039;s song&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music in the menu&lt;br /&gt;
%patch $1DC0C $06B92083RL&lt;br /&gt;
%patch $1DC08 [$0003W]      #Play this level&#039;s song&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music in the menu&lt;br /&gt;
%patch $1C8DE $069A20DBRL&lt;br /&gt;
%patch $1C8DA [$0003W]      #Play this level&#039;s song&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Galaxy menu doesn&#039;t stop game music ==&lt;br /&gt;
&lt;br /&gt;
This patch lets the game music keep playing when the menu is called. This means the music playing in the level or demo the player plays before calling the menu. When the game initially starts the menu will be silent.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t interrupt music when Main menu is called&lt;br /&gt;
%patch $7994 $90 $90 $90 $90&lt;br /&gt;
%patch $79A2 $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t interrupt music when Main menu is called&lt;br /&gt;
%patch $794F $90 $90 $90 $90&lt;br /&gt;
%patch $795D $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t interrupt music when Main menu is called&lt;br /&gt;
%patch $7728 $90 $90 $90 $90&lt;br /&gt;
%patch $7736 $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=46418</id>
		<title>User talk:Malvineous</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User_talk:Malvineous&amp;diff=46418"/>
		<updated>2023-01-30T23:31:01Z</updated>

		<summary type="html">&lt;p&gt;Levellass: The patch wiki is broken!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Been whined at by Lemm and assorted people, apparently the term &#039;sprite&#039; applies to graphics only and the terms I should have been using for all the &#039;sprite&#039; patch stuff is &#039;actor&#039;; is there any way to systematically change the term &#039;sprite&#039; in patch page titles (and maybe text) to &#039;actor&#039;? If not, leave it, but if so, it might be something to think about. --[[User:Levellass|Levellass]] 02:41, 17 July 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: It is possible to do a bulk search and replace across pages, but the pages themselves will need to be renamed manually.  [[User:DHeadshot]] has access to do this, perhaps you can ask him?  If he renames pages when logged in as a bot, it&#039;s possible to avoid creating those redirect pages too. -- [[User:Malvineous|Malvineous]] 03:00, 17 July 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;More talk...&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The older conversations on this page have been archived to keep the content current.  To read the previous content on this page, please see:&lt;br /&gt;
* 2010-08: [http://www.shikadi.net/wiki/keen/index.php?title=User_talk:Malvineous&amp;amp;oldid=15924 revision 15924]&lt;br /&gt;
* 2008-04: [http://www.shikadi.net/wiki/keen/index.php?title=User_talk:Malvineous&amp;amp;oldid=9028 revision 9028]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Please post new topics at the top of the page --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Needs pictures error ==&lt;br /&gt;
&lt;br /&gt;
This page [[Keen 1 640x480 Redux]] has itself listed under &#039;needs pictures&#039; despite having pictures. This appears to be because the pictures on the page are resized. Is there any way aside from using fullsized pictures (Which ruins the page) to fix this? -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 02:21, 29 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Thanks for pointing that out!  I don&#039;t want to automatically resize all images in the infobox, because that makes it too easy to upload 640x400 images by accident as screenshots.  So as a compromise I added an ImageScale option to the infobox, which will scale the image and takes care of the &#039;Needs pictures&#039; category.  Hopefully people won&#039;t abuse this and upload 320x200 screenshots scaled up to 640x400! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:39, 19 September 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deletion for stupid redirect ==&lt;br /&gt;
&lt;br /&gt;
The page http://www.shikadi.net/keenwiki/Patch:Keen_sstanding_(Vorticons) is obviously misspelled and needs to be deleted. The correct redirect link has already been created so nothing of value will be lost. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 07:55, 15 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You&#039;re an admin so you should have no trouble deleting the page!  The delete link might be hidden under the &#039;More&#039; drop down, next to the Read/Edit/History tabs at the top of the page.  Let me know if you can&#039;t find it or it doesn&#039;t work for some reason. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 08:12, 15 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Jeez, have I been such an butt in the past? ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv. I&#039;ve not been on in ages, and I was looking at some of my past edits. I have just realized I was acting a total ass, and you should have banned me for what I did. Your patience (and Shadow Master&#039;s) with me, legendary as it is, was stretched to the limit, and I&#039;m sorry for what I did to this wiki, with that fiasco wih KeenRush, and me smarting off to you over the preview button and all. I was going through a rather hard period im my life then, and it shows--looking at the comments and such, it looks as if they were written by someone else. Again, I&#039;d like to apologize for any discord I&#039;ve caused this place. -[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 17:02, 19 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hey Xt - no worries, I figured it was something you would grow out of eventually ;-) -- [[User:Malvineous|Malvineous]] 23:50, 19 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: And I was looking at the [[Talk: Viva|Viva talkpage]] yesterday. &amp;quot;Xterra-ism&amp;quot;. :-) At least I&#039;ve gotten SOMETHING besides a Nissan SUV named after me. Again, I must compliment you on your patience with me. -[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 18:07, 20 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Abandoned mods / level packs ==&lt;br /&gt;
&lt;br /&gt;
Hello Malvineous. As I mentioned on [[Talk:Vorticon Mods#Missing_Download_links|Talk:Vorticon Mods]], I still have a few abandoned mods/level packs by different people that are not available for download anymore (at least according to the wiki). Various mods and packs have been directly uploaded to shikadi.net/wiki/, thus I sent one mod to Tulip who contributed a lot to the Vorticons Mods page. He replied two weeks ago, but since then no download has been added for &amp;quot;Mars Kingdoms&amp;quot;, so I assume he is just too busy for editing. As you run this wiki, I wonder if I can also send them to you? --[[User:Grandy02|Grandy02]] 09:48, 20 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Sure, just e-mail them to malvineous@shikadi.net and I will upload them to shikadi.net/wiki/ if you&#039;d be willing to add the necessary links to the article pages! -- [[User:Malvineous|Malvineous]] 10:27, 20 November 2011 (GMT)&lt;br /&gt;
::Great, I&#039;ll send them this day! :-) --[[User:Grandy02|Grandy02]] 11:46, 20 November 2011 (GMT)&lt;br /&gt;
:::Sent. The names of the zip files are those of the original downloads (if I remember correctly), rename them as you please. The mail includes demos of Redemption, Lord of the Rings (two demos), and Mars Kingdoms. There is also a beta of Bp&#039;s &amp;quot;mod&amp;quot; Marooned on Mars Forever, but I think it seems more like a level pack (no changed graphics, no patches and only minimal edits of the story text). What do you think? --[[User:Grandy02|Grandy02]] 16:01, 20 November 2011 (GMT)&lt;br /&gt;
::::Not really sure, whatever you think is best would be fine.  And thanks, I&#039;ve put them into http://www.shikadi.net/wiki/files/Mods/abandoned/ so you can link to them directly there. -- [[User:Malvineous|Malvineous]] 22:24, 20 November 2011 (GMT)&lt;br /&gt;
:::::Thanks a lot! I added Bp&#039;s work to level packs, as I think that changed titles in the story text do not really make it a mod. Anyway, I noticed that the various download links for dosclassics.com are not working anymore. I haven&#039;t been able to access the site for quite a while. Do you know anything? Does the site even exist anymore? --[[User:Grandy02|Grandy02]] 14:09, 21 November 2011 (GMT)&lt;br /&gt;
::::::I haven&#039;t heard anything but as of a year ago it seemed to be online only for &amp;quot;nostalgic reasons&amp;quot; so I guess it&#039;s finally offline now.  You could try contacting Xtraverse (xtraverse@hotmail.com) and see if he still has a copy of the site... -- [[User:Malvineous|Malvineous]] 00:17, 22 November 2011 (GMT)&lt;br /&gt;
:::::::Okay, I sent him a mail. I wonder, if he doesn&#039;t want to put the site online anymore, would it be possible to archive the site at shikadi.net just like CC314? --[[User:Grandy02|Grandy02]] 17:35, 23 November 2011 (GMT)&lt;br /&gt;
::::::::Certainly I&#039;m happy to do that, if Xtra is willing to send the files across or upload them to my server. -- [[User:Malvineous|Malvineous]] 22:56, 23 November 2011 (GMT)&lt;br /&gt;
:::::::::Yeah, it would be great to keep that fine piece of Keen community history. By the way, the hotmail account seems to be inactive (I got &amp;quot;mailbox unavailable&amp;quot; as a response), so now I&#039;m hoping that he&#039;ll answer the mail I sent to his @spatang.com address... --[[User:Grandy02|Grandy02]] 14:41, 24 November 2011 (GMT)&lt;br /&gt;
::::::::::Hi again. I sent you another abandoned mod, &amp;quot;Trouble on Xion 2&amp;quot; (Keen 4 this time). On a side note, the zip file for [[Trapped Keen]] includes the KEEN3.EXE, which should probably be removed. Also, no answer from Xtraverse yet. --[[User:Grandy02|Grandy02]] 11:22, 26 November 2011 (GMT)&lt;br /&gt;
:::::::::::Thanks, uploaded.  Thanks also for pointing out keen3.exe, I have removed it from the zip. -- [[User:Malvineous|Malvineous]] 01:50, 27 November 2011 (GMT)&lt;br /&gt;
::::::::::::Darn, I guess I should have been more vigilant in copying the levels and mods over to the keenwiki server... -- [[User:Flaose|Flaose]] 04:01, 30 November 2011 (GMT)&lt;br /&gt;
:::::::::::::Meh, you couldn&#039;t get the official Keen3 game out of it anyway thanks to the modifications, so it&#039;s more a courtesy to id than anything else :-) -- [[User:Malvineous|Malvineous]] 11:18, 30 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
==PCKF Archive==&lt;br /&gt;
Thanks again! On a side note, could you delete Norp3 title.png, please? But now something completely different: Maybe you have noticed that the old PCKF (its ezBoard incarnation) is not available in the Wayback Archive anymore since the Archive&#039;s new version was introduced. Due to the attack on ezBoard back in 2005, this means that basically all pre-2005 topics of the PCKF are lost now. I have basically not followed the community this year, do you know if there have been any reactions on this incident? The thing is, I saved a bunch of topics before the old Archive was taken down, and I&#039;d like to send them over to someone who wants to turn that mess into something more comfortable on the web. But maybe I&#039;m just late to the party and there already have been efforts to save the old PCKF. Has anything been said? --[[User:Grandy02|Grandy02]] 15:55, 27 November 2011 (GMT)&lt;br /&gt;
: Done.  And I&#039;m not sure about the PCKF - after all those old topics were lost it seemed a bit hit and miss to save it.  Plus it was all in HTML so it&#039;s difficult to convert - there was some discussion about importing all the topics into the current PCKF.  I&#039;ve also spent hardly any time at the PCKF for a long while, so I&#039;m not sure what the mood is.  I think many people who had topics then are no longer active, it seems to be quite a different group of people there now! -- [[User:Malvineous|Malvineous]] 07:16, 28 November 2011 (GMT)&lt;br /&gt;
::Okay, I see. I might create a topic on this issue in the PCKF this week (after a quick look, there still are quite a few of the &amp;quot;old ones&amp;quot;, though). But if nobody has archived anything, would you mind to host certain topics I saved (of course, not every &amp;quot;W00t! 3000 Posts!!!111!1!&amp;quot; thing)? I might select interesting topics bit by bit - but first I have to know if that is even possible. --[[User:Grandy02|Grandy02]] 17:01, 28 November 2011 (GMT)&lt;br /&gt;
:::Sure, but in that case it&#039;ll be easier to give you some webspace so you can manage it all yourself, if you&#039;re prepared to do so! -- [[User:Malvineous|Malvineous]] 23:21, 28 November 2011 (GMT)&lt;br /&gt;
::::Thanks for your offer! I&#039;ll create a topic in the PCKF first this weekend and see what others did (if anything), then I&#039;ll get back to you. --[[User:Grandy02|Grandy02]] 14:27, 29 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
I had talked with tulip per mail the last few days. According to him, there was nothing on the forum about archiving the ezBoard, and as he is one of the most active members, that has to be the truth. I created a thread nonetheless, but I don&#039;t expect much. So I&#039;d greatly appreciate if you really gave me some webspace. :-) --[[User:Grandy02|Grandy02]] 18:27, 6 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
Hello. I neither have mail nor FTP access right now, so could you write your answer on my last mail at this place (in case you already responded)? Also, could you do me a really big favour and make a little edit to the index.htm of the PCKF Archive? Actually, I finally wanted to post, but today I noticed that the page is incorretly displayed in certain browsers due to a little error on my side. Please change&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;logotext&amp;quot;&amp;gt;PCKF Archive&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;logotext&amp;quot;&amp;gt;PCKF Archive&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and it should be fixed. Thanks in advance! :-) --[[User:Grandy02|Grandy02]] 20:05, 22 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Done.  There was a suspected intrusion on my web host, so my provider reset everyone&#039;s passwords as a precaution.  Your new password is in your e-mail. -- [[User:Malvineous|Malvineous]] 22:39, 22 January 2012 (GMT)&lt;br /&gt;
:: Thank you! :-D --[[User:Grandy02|Grandy02]] 21:06, 29 January 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
==DOS Classics is back!==&lt;br /&gt;
Good news: Xtraverse replied and put DOS Classics back online! Oh, and by the way, he already created a little PCKF [http://dosclassics.com/old/pckf/ archive] of sorts in the past - well, those topics can be quite... entertaining. ;-) --[[User:Grandy02|Grandy02]] 17:37, 30 November 2011 (GMT)&lt;br /&gt;
:Great news, good to have the site back. -- [[User:Malvineous|Malvineous]] 22:43, 30 November 2011 (GMT)&lt;br /&gt;
::In a second message, he thanks you for your offer to host DOS Classics, but he intends to keep up the site for &amp;quot;the long haul.&amp;quot; DOS Classics was just offline due to a DNS error he forgot to fix. Anyway, yeah, it&#039;s great to have it back, I learned lots of Keen stuff at that place, and it got me into modding. --[[User:Grandy02|Grandy02]] 20:06, 1 December 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Another apology ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv. Recently, I made a couple of unnecessary double-edits on accident. Sorry if this irks you.-[[User:Xterra1|&amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;Xt&amp;lt;/font&amp;gt;]][[User talk:Xterra1|&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;er&amp;lt;/font&amp;gt;]][[Special:Contributions/Xterra1|&amp;lt;font color=&amp;quot;gold&amp;quot;&amp;gt;r&amp;lt;/font&amp;gt;]][[Special:Random|&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;a1&amp;lt;/font&amp;gt;]] 04:29, 24 November 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Source of creatures&#039; names ==&lt;br /&gt;
&lt;br /&gt;
Hello. I&#039;m new here but I hope to be a good contributor :) What I&#039;d like to know is where the names of the creatures from Keen Dreams and Keen 6 were found because Keen Dreams doesn&#039;t seem to list them all while Keen 6 doesn&#039;t even contain a help section and some of the names mentioned in Keen 6 user manual are different from the names listed here. Can you help? Levellass hasn&#039;t answered yet. [[User:Saluton|Saluton]] 05:46, 4 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Hi Saluton and welcome to the wiki!  Things do move a little more slowly here so you might have to give people a week or two to respond :-)  As far as I&#039;m aware all the names are correct - if you can tell me which ones are wrong and let me know where the correct name is we will certainly fix it!  Most of the names came from official sources like the manuals, while one or two were supplied by Tom Hall himself.  I believe there are a few which have been named by fans lacking a more official source, but it should mention this on those creature pages.  -- [[User:Malvineous|Malvineous]] 08:17, 4 February 2013 (GMT)&lt;br /&gt;
:: Sorry, I was wrong, the names in Keen 6 user manual and here do match, but I couldn&#039;t find a user manual for Keen Dreams. Where should I look? In any case, it&#039;s only better for all the wiki articles to refer to sources. :) [[User:Saluton|Saluton]] 09:22, 4 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: The rule so far is that the creature names come from the help text for Keens 1-5+Dreams and from the manual for Keen 6.  Anything different and it&#039;s mentioned in the article.  If you have a look at [[Keen Dreams Creatures]] it will tell you that the names come from the help text in version 1.0 of the game.  This information was removed from later versions. -- [[User:Malvineous|Malvineous]] 10:49, 4 February 2013 (GMT)&lt;br /&gt;
:::: OK, I was wrong here, too :( but citations would still be useful. On another point, wouldn&#039;t it be better to combine those articles on creatures so that there&#039;s only one article per game? There can hardly be any information on most of the creatures anyway, apart from what they look like, how they move, and what they do. Most articles will forever be two- or three-paragraph stubs. [[User:Saluton|Saluton]] 14:59, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: I guess citations could be useful - they are already there on most if not all the Dreams pages, but there is a lot of more important work needed on all the mod pages so this is a fairly low priority for us.  Combining the creatures onto a single page has already been done - each episode has a summary page for the creatures.  But we decided long ago it was still worth having a dedicated page for each creature as that gives us more room for additional details, like which levels the creature appears in, bugs in its behaviour, tricks for avoiding it, and so on.  It also makes it easier to link to creatures - otherwise we&#039;d have dozens of redirect pages anyway.  But likewise we also decided that mods should not have individual pages for each creature, as there would be thousands of unnecessary pages then. -- [[User:Malvineous|Malvineous]] 19:45, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: I see, thanks. Why is there no page on [[Bobby Prince]]? Was anything decided on that? [[User:Saluton|Saluton]] 06:11, 7 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::: No, there has been no decision there.  If you have some information about Bobby Prince related to Commander Keen, by all means go ahead and create a page for him.  But if you&#039;re looking for things to do, there are [[Vorticon Mods|lots of]] [[Galaxy Mods|mods]] that don&#039;t have pages created yet, and each page needs infoboxes, screenshots, level lists, etc.  This is where most of the work is being done at the moment.  Have a look at [[Episode Null]] for what we&#039;re aiming for on each mod&#039;s page. -- [[User:Malvineous|Malvineous]] 22:03, 8 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::: I don&#039;t think pages on the creators of Keen should only contain information related to Keen. To my mind, a proper encyclopedic article about a person should give a complete view of their biography even if it&#039;s in a Keen encyclopedia, but anyway, we&#039;ll see about that when I have enough time to actually edit articles. Thanks for this discussion :) [[User:Saluton|Saluton]] 07:46, 11 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::: Of course you can include non Keen-related information, but since it&#039;s a Commander Keen encyclopaedia it makes sense to give a greater focus on things related to Commander Keen.  Otherwise you may as well just link to the Wikipedia article instead! -- [[User:Malvineous|Malvineous]] 23:01, 15 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::::: I would suggest just linking to the Wikipedia article of Bobby Prince and other creators of Keen when needed.  There&#039;s no reason to repeat something that is stated better elsewhere. -- [[User:Flaose|Flaose]] 15:48, 20 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Goodbye, Galaxy! ==&lt;br /&gt;
&lt;br /&gt;
Why is there no punctuation in the title [[Goodbye Galaxy]]? [[User:Saluton|Saluton]] 14:47, 11 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Very good point.  I&#039;ve renamed the page - thanks! -- [[User:Malvineous|Malvineous]] 23:01, 15 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Moving of pages and their location on alphabetical lists ==&lt;br /&gt;
&lt;br /&gt;
I notice when a page is moved, it remains in the same place as the old page would when listed in a category. This could be confusing, is there any way to circumvent it? -[[User:Levellass|Always so much to do!]] 09:22, 16 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
: It shouldn&#039;t - do you have any examples?  Keep in mind the category pages are cached so it can take a few page views before they all get updated after a rename.  Certainly by 24 hours later they should all be correct and up to date. -- [[User:Malvineous|Malvineous]] 21:27, 16 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Delete some pages ==&lt;br /&gt;
&lt;br /&gt;
[[:Category:Incompatible Patches]] is an invalid category, it seems that such pages should always have a small &#039;p&#039; in patches due to the way the wiki works. This page is thus extra and should be deleted post haste. -[[User:Levellass|Always so much to do!]]&lt;br /&gt;
: The following pages can also be deleted, having no other pages linking to them and being the subject of double redirects; [[Moving Platform]], [[Patch:Keens Left]] and [[Patches:Game start]], results of poor syntax -[[User:Levellass|Always so much to do!]]&lt;br /&gt;
&lt;br /&gt;
:: Done! -- [[User:Malvineous|Malvineous]] 14:48, 20 March 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: Many thanks, that clears things up a bit, I dislike superfluous pages. -[[User:Levellass|Always so much to do!]] 19:28, 20 March 2013 (GMT)&lt;br /&gt;
:::: Bleah, found yet another duplicated page, (Mind the original was very old and in need of updating.) Could you please remove [[Patch:Light Switch]], it has stuff on it, but nothing that isn&#039;t on the original page now. (Also there&#039;s only one page that links directly to the light switch page, so it was easy to make sure there&#039;s no links to the duplicate page.)&lt;br /&gt;
&lt;br /&gt;
::::: Done.  I&#039;ve also made you an administrator of the wiki so you should be able to delete pages yourself in future (there&#039;s a new tab at the top of each page you will see once you log out and back in again.) -- [[User:Malvineous|Malvineous]] 00:06, 2 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::: Thanks, that should help, assuming I don;t make any more dumb mistakes like the mess you just fixed up. -[[User:Levellass|Always so much to do!]] 09:08, 8 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::: Hahaha no worries, everyone makes mistakes :-) -- [[User:Malvineous|Malvineous]] 11:56, 8 April 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== About my Cosmo Mod ==&lt;br /&gt;
&lt;br /&gt;
Thanks for the heads-up. I didn&#039;t know there was a page at the Modding Wiki for Cosmo Mods. I&#039;ll make sure to put the mod article there next time.&lt;br /&gt;
[[User:T-Squared|T-Squared]] ([[User talk:T-Squared|talk]]) 22:32, 23 February 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== A bug ==&lt;br /&gt;
I tried to get my three mods in the Keen 1, Keen 2, and Keen 3 mods page. But I can&#039;t do it, because it won&#039;t do it. Sorry about the edits I&#039;ve done. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 23:52, 15 March 2015 (UTC)&lt;br /&gt;
:Hello Quinton. You did everything right, but those pages are not always refreshed automatically. To purge a page&#039;s cached version, add &amp;quot;?action=purge&amp;quot; to the page title in the address bar and commit, e.g. &amp;lt;nowiki&amp;gt;http://www.shikadi.net/keenwiki/Keen_1_mods?action=purge&amp;lt;/nowiki&amp;gt;. You can also read about this in the source code of the mod lists. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 07:59, 16 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Mod title confusion ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv. I&#039;m currently creating stubs for the remaining missing mods, but I&#039;m confused about the wiki&#039;s handling of mod titles, especially those with subtitles. Sometimes the main (series) title(+episode number) is used (e.g. [[The Clones of Evil 1]], [[Death to the Vorticons 3]]), but for others the subtitle/episode name (e.g. [[Vanished To Venus]], [[Kidnapped Keen]], TUIT trilogy), while in some cases the full title is given to the article (e.g. [[Onward: Silcar 1: Nightmare Before Teatime]]). Are there any rules for this? And a unique case seems to be [[OrbKeen1]], which is given its production name rather than actual title. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:37, 21 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not sure - I don&#039;t think there&#039;s a specific rule at the moment, but if you want to come up with one then by all means.  I guess what you want is something unique, so MyMod1, MyMod2, MyMod3, etc. aren&#039;t very good because they are too similar.  Likewise the Onward: Silcar one is probably a bit too long.  I&#039;d be happy renaming that to [[Nightmare Before Teatime]] and then applying that rule to the others.  There&#039;s probably no need to have the series name in the title, as the previous/next episodes in a series are listed in the infobox on each page.  What do you think? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:22, 21 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I&#039;m okay with both using the full title or only the episode&#039;s name. Sure, there would be quite a few lengthy page titles in case of the former option, so it might be better to choose the latter one. My only concern is that some mods could be more commonly known by the series name+number rather than the subtitles from what I&#039;ve seen (e.g. Norp the Yorp, Shadow Keen, Marta). Do you think that would be still acceptable? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 11:03, 22 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I think so.  Providing the common name(s) appear in the article itself then it will show up in a search for those names, so it shouldn&#039;t be a problem locating a mod.  If it&#039;s really bad then we can always create a redirect, although personally I would try to manage without redirects first, as I&#039;d rather not see every mod come with a dozen redirects attached as it will make it more difficult to maintain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:49, 22 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Sounds good. Though I think there would generally have to be one redirect for the affected pages. For example, &amp;quot;Brain Damage&amp;quot; would have &amp;quot;Norp the Yorp 3&amp;quot; so that visitors can also find the mod when typing &amp;quot;Norp&amp;quot;. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 19:49, 25 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: That&#039;s fine, although if it&#039;s only searching you&#039;re worried about, on the mod page putting something like &amp;quot;Brain Damage (also known as Norp the Yorp 3)&amp;quot; should be enough. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:44, 29 March 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::: I think it would be more comfortable so that a visitor gets directly to the correct page when typing the title they are used to. So, could a rule for this be created? Also, would it affect the names of the zip files? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 08:10, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::: Can you give me an example?  When I type &amp;quot;Norp the Yorp 3&amp;quot; into the search bar the mod is the first result, and if I type &amp;quot;Brain Damage&amp;quot; it&#039;s the second result.  Wouldn&#039;t that be enough for people to find it using whatever name they prefer?  Or you just prefer if it goes straight to the page if there&#039;s an exact match?  I don&#039;t mind just as long as there&#039;s a good reason for doing it one way over the other.  One thing I want to avoid is having a dozen redirects for each mod, with only things like capitalisation being the difference between some of them. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:07, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::::Yeah, I&#039;m only referring to going straight to the pages. I personally don&#039;t mind if I have to do one more click, just thought that some visitors wouldn&#039;t like that when entering a mod&#039;s common name a list of search results appears first. I fully understand that the number of redirects has to be kept small, never intended to add different capitalisations and stuff. If anything, I only imagined one per mod if it is relevant at all (as in case of the Norp mods). If a rule is made, would the zip files also have to be renamed? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:54, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::::: Fair enough if there aren&#039;t huge numbers of them.  Remember that redirects aren&#039;t supposed to be categorised though, they&#039;re only supposed to be used for pages that used to exist on the wiki but were deleted/merged, so that any external sites linking to the old page still work.  Up to you whether you want to rename the files, but I think we should stick to one title per filename though.  Most people will only see the filenames temporarily while they download mods, so there should be no need to cram too much information into the filename! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:25, 8 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m almost done with with adding pages for the missing mods. However, I have a question related to the download links in the mod galleries. In most cases, only the download for the latest version is needed there. But what about downloads of remakes, e.g. those of Yorphius II, ShadowKeen and Crash on Gobo III? Maybe even a separate box (though not a separate article) that also includes the remake author&#039;s name? If there&#039;s one mod that definitely needs two download links, it is [[The Grand Intellect: Doomship Dilemma|Doomship Dilemma]], because the mods by Levellass and Szemigi are basically two different works based on the same beta. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 07:38, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Nice work!  If the mods are that different then they probably deserve their own pages, like [[The Grand Intellect: Doomship Dilemma (Levellass version)]], [[Yorphius II (Deluxe)]] or [[Crash on Gobo III (remake)]].  However I think we need to come up with some criteria to make sure we don&#039;t get a different page for every revision of a mod.  I think the criteria should be:&lt;br /&gt;
:* If the remake is by the same author as the original, then it should be considered the latest version and only that version included in the list (but the older versions of course listed on the article page.)  This is to encourage mod authors to make new mods instead of endlessly tinkering with existing ones.  It is fine to have screenshots of the different versions and to explain why they were released, but only one infobox can go on a page (otherwise it will break the categories and mod lists.)&lt;br /&gt;
:* If a mod builds on another one (by the same or a different author), then a new article for it should not be created, and the new mod should be listed as an alternate version on the original mod&#039;s page.  This is to avoid having people change a couple of graphics and get their own mod listed.  The way [[Yorphius II]] is written now is perfect.&lt;br /&gt;
:* An exception to the previous rule is allowed for substantial changes, such as a complete levelpack for an existing mod.  If you are unsure whether a mod-mod counts or not, then it doesn&#039;t.  It should be very obviously a whole new mod based on an existing one, and not just a few changes or a couple of new levels.  This means [[Gridlock&#039;s Dead in the Desert Levelpack]] should have its article deleted, and the content moved onto [[Dead in the Desert]] where it should be listed as an alternate version by a different author.&lt;br /&gt;
: Using this criteria, Doomship Dilemma would get split into two mods/pages, Yorphius II would have an alternate version listed (unchanged to how it is now), and Crash on Gobo III would have the more recent change listed as the latest version.&lt;br /&gt;
: What do you think, does this seem fair? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:06, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I agree with the most points, but regarding Gridlock&#039;s level pack, I&#039;m not sure. I mean, level &amp;quot;packs&amp;quot; with just one level based on the original games also have their own articles, so I think a small level pack for a mod is as worthy. But any way, what to do with level packs in general? Most pages don&#039;t use any mod/level pack-specific templates yet (though several have the level template). Should they also use the mod infobox and thus appear in the mod lists? Or a slightly altered template and separate lists? I think there should be a way to differentiate between them. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:03, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I&#039;m not so keen on having an entirely different list for full mods vs level packs, but what if we modify the current mod lists so that under each mod (where it currently has a download link, the number of levels, and the mod status) we include a new item that says whether the mod includes new graphics?  That way full mods would say yes here, and level packs say no, but everything could be in the same mod list.  This item can pull from the existing mod infobox, so current pages wouldn&#039;t have to be updated to include the new info.  Would that work? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:30, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::Good idea. Okay, now the only remaining issue is the sheer number of level packs that don&#039;t have a page yet (more than 40). Of course I could do it all on my own again, but the progress would be very slow, and the outdated links would continue to be in the navigation. It would be a different case if just putting infoboxes on those pages would be enough for stubs, not sure about that. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:29, 21 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::The page only needs an infobox to appear in the list, and ideally a screenshot, but really, as much or as little as you can manage is fine.  Maybe you can come up with a simple procedure explaining what to copy/paste and recruit some help from the PCKF? -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 10:43, 27 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::::I&#039;ll ask the PCKF members to help with screenshots and red links once I&#039;m done with the few missing &amp;quot;blue links&amp;quot;. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:50, 24 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::::Sounds good!  Thanks for all your effort cleaning up the mod lists, it&#039;s great to have someone willing to put the time in to do this properly! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:37, 24 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
==File name problems==&lt;br /&gt;
I moved [[Commander Keen &amp;amp; the Morticore]] to [[The Morticore]], and I have encountered a problem. The files are now broken, because the mod title has changed. I don&#039;t want to upload a duplicate of the file, so is there anything else I can do? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 16:22, 23 May 2015 (UTC)&lt;br /&gt;
:I&#039;ve &amp;quot;moved&amp;quot; the files. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 16:30, 23 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Translation mods ==&lt;br /&gt;
&lt;br /&gt;
Hi, I&#039;ve two questions regarding mods that act as translations of the original games, more specifically the Hungarian translations by Szemigi. First, would each one of those mods have its own page just like other skin mods? Texts and text graphics are changed. And second, how to localise the downloads? The zip files contain installers for Windows. Should the zip archives include the actual game files or the installer executables? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 19:15, 26 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hmm, they&#039;re not really &amp;quot;mods&amp;quot; in the gameplay sense so they kind of belong on the main episode pages instead.  Do you think we could put them somewhere there?  Maybe we need to expand each episode&#039;s page to contain a bit more info as well as things like this.  As for the download, technically we can&#039;t distribute modified versions of the game so it should be the usual patch files that sit on top of the original game.  You don&#039;t need an installer for this so hopefully that can be removed, especially since it won&#039;t work for anyone running a Mac, Linux, or a real DOS PC. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:54, 26 July 2015 (UTC)&lt;br /&gt;
::Yeah, I was thinking the same, it would require an additional emulator for non-Windows users, so I&#039;d zip the extracted files for the localised downloads. Maybe we could have a page named &amp;quot;Translations&amp;quot;? &amp;quot;Keen 1 Translations&amp;quot; and so on would have too little content each, so one page for all translations would be enough, and each episode page would have a link to it. What do you think? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 15:03, 13 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: That sounds fine to me, feel free to go ahead and create it! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:27, 15 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
The translations are essentially skin mods, too, aren&#039;t they? What about a collective page for skin mods (that could also include the translations then)? I&#039;ve to agree that it&#039;s hard to draw the line, and things like &amp;quot;play in CGA&amp;quot; or &amp;quot;play as Vorticon (Keen&#039;s sprites simply replaced by Vorticon&#039;s)&amp;quot; probably don&#039;t need their own pages. But I wouldn&#039;t like a complete exclusion of them, either. Not to mention that the wiki provides the downloads for all of them since more than two years. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 10:41, 20 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;m still not so keen on listing skin mods.  To me they are not much different to changing the sounds or music and leaving the game otherwise unchanged.  It&#039;s like an incomplete mod, and incomplete mods should not be listed here unless they are abandoned and enough progress has been made that playing them is significantly different to the original game.  I guess it hinges on whether the KeenWiki is supposed to be a database of every single mod, no matter how insignificant, or whether it should be an index of the better more complete mods.  I am of the opinion that you need to change more than one or two things in order for the mod to feature here.  If a skin mod is good enough, then someone over at the PCKF will surely use it in a full mod and then there&#039;s no problem listing it here.  For the completists, who want every single little change preserved, maybe other sites like moddb.com would be a better match?  Translations are a special case as they make the original games accessible to a wider audience - in my opinion they aren&#039;t really mods, as the content is the same as the original game, just in another language. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 03:13, 19 September 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;ve created [[User:Grandy02/Test|a list]] with all the skin mods + translations. Do you think the SGA mods would count as &amp;quot;translations&amp;quot;, even though the language remains English? Regarding the skin mods, a few words have been exchanged in the [https://pckf.com/viewtopic.php?t=3206&amp;amp;start=15 PCKF topic]. Personally, I wouldn&#039;t mind if they had pages. Technically, the abandoned mods without changed levels are a similar case. But I wouldn&#039;t create pages for the &amp;quot;Military&amp;quot; mods, for example, as only some sprites have been changed and nothing else, but in those cases I&#039;d keep download links somewhere due to their &amp;quot;historical&amp;quot; value (made during the early years of Keen modding). Not sure about Cybernetic Dreams, though, as quite a few graphics have been edited, while there is nothing else like patching or text edits. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:24, 20 December 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Translation mods definitely deserve a place, but I think they should be separate to mods and listed close to the official games, since the idea is that they are the same as the official games but open them up to a wider audience.  An SGA translation mod is interesting, but if it&#039;s changing the English parts to SGA then it&#039;s more of a curiosity than something I think anyone would choose to play.&lt;br /&gt;
&lt;br /&gt;
: For skin mods, I think we need something similar to Wikipedia&#039;s notability guidelines.  Skin mods may be worth listing if they are historically significant (such as one of the first ever mods) but beyond that I personally feel that unless there are new levels, the mod doesn&#039;t add anything new to the original games.  Playing the original games is fun - but playing them with a different sprite here or there is boring - you aren&#039;t going to make any new discoveries.  I see skin mods as being lazy, and when people complain about having to make even just one new level, that just reinforces the idea that they are being lazy and want a mod page with the least amount of effort possible.&lt;br /&gt;
&lt;br /&gt;
: How about asking the people over at Keen:Modding what they think?  If you can get the modders themselves to cast a vote about whether we should include skin mods or not, then I am willing to go with their decision. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:30, 20 December 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Galaxy Mods - adding additional topic ==&lt;br /&gt;
&lt;br /&gt;
Hey Malvineous, quick question to that [[Galaxy Mods|Galaxy Mod]] page: What about adding a new topic like &#039;&#039;Notable Demos&#039;&#039;. This section would comprise round about 12 alpha-mods and it might give a bit more clarity.&lt;br /&gt;
I can take care of it, as soon as you give me your &amp;quot;OK&amp;quot; for doing so. -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 21:21, 6 April 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I&#039;m not quite sure exactly what you are proposing, but you are welcome to make a start and then get some opinions about whether people like what you&#039;re doing or not.  It&#039;s a community wiki so it&#039;s not up to me :-)  However do bear in mind that per the note at the top of [[Galaxy Mods]], that page will be deleted once all the mods are moved off it.  If you&#039;re going to start classifying mods as notable though, make sure the criteria you are using are very clear, otherwise everyone will want to add their own mods to the list! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:41, 25 April 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== What happened to the voting system? ==&lt;br /&gt;
&lt;br /&gt;
I noticed that the voting system that is found inside the CK mod info boxes appears to be disabled. Is this because of some nasty bug happened or was this done on purpose? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 05:45, 14 May 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It seems that the extension was not updated and/or it&#039;s source is not longer available. @Malvineous: But there is an alternative extension available. The installation seems pretty straight forward. See: https://www.mediawiki.org/wiki/Extension:VoteNY -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 20:10, 25 March 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Possible username change? ==&lt;br /&gt;
&lt;br /&gt;
Hey there, Malvineous. I was wondering if you admins have the power to rename user names or not. If so, then I would appreciate it if you could change my username into &amp;quot;Quillax&amp;quot;, my current name in the PCKF and K:M. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 02:33, 26 March 2017 (UTC)&lt;br /&gt;
: I don&#039;t think we can do so easily, but if you are able to find some SQL that can do it for MediaWiki then I&#039;m happy to run that. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:31, 1 October 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Weird thing with adding new external links ==&lt;br /&gt;
&lt;br /&gt;
I was updating the download link and adding a new one to my site in The Sunnylands. During the security thing, however, the images are only displayed as &amp;quot;V1 SHUTDOWN ON 2018-03-31&amp;quot; and no sounds are played when doing the audio challenge. I thought things broke at first, but I typed the text in the image and it was working fine.  I feel like I should let you know about this, though, just in case. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 14:31, 7 April 2018 (UTC)&lt;br /&gt;
:Oh, it seems like anything will work in the security thing. I think it might be good to fix it if possible. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 14:52, 7 April 2018 (UTC)&lt;br /&gt;
::Thanks for the heads up!  I&#039;m glad it&#039;s not stopping people from adding links.  I am (slowly) working towards moving the wiki onto a new server so I&#039;ll probably remove it when that happens.  The requirement for people to fill out a biography when they register has so far kept out 100% of the spam, so hopefully that keeps up and we won&#039;t need the external link captcha any longer. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:42, 8 April 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== My Mortimer skin for Keen 5 and 6 got deleted ==&lt;br /&gt;
&lt;br /&gt;
Hey, Nisaba from PCKF removed my Mortimer skin for Keen 5 and 6 and I cannot recover these anymore. These contained the EXE files, but this should have been updated, so these won&#039;t have the EXEs anymore. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 13:45, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: If it was a skin mod (only graphics changed) then it&#039;s against the [[KeenWiki:Guidelines|Guidelines]] so that might be why.  You&#039;ll have to change more than just the graphics to justify including it here.  Knowing how many popular mods you make though, I&#039;m sure you&#039;ll have no trouble making some new levels for it!  Then we can include it here. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 13:49, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: Strange, because Mortimer McMire Keen 5 and 6 skin changes has only sprite and some other graphic edits. What about Keen 1-3 skins then?--[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 14:23, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: My personal preference is to delete them, but some in the community want to keep them, so we&#039;re still a bit undecided.  If you have some good ideas let me know.  I just want to avoid the KeenWiki becoming a dumping ground for fan art, when there are much better sites for that type of thing (e.g. DeviantArt) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:54, 28 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== EXE files in Keen 2,3,5,6 mods ==&lt;br /&gt;
&lt;br /&gt;
Hey, I saw that some of the Keen 2,3,5,6 mods contain the EXE files. What to do? Because I have mods as well that has EXE and I should update them sometimes. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 14:36, 6 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: We are trying to update these mods to delete the .EXE files where we can.  If you are updating your mods it is best to set it up so that the player unzips the mod over the top of a working copy of the game, so that the .EXE is not distributed on the wiki.  That would be very helpful if you have mods like this that you can update! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 22:54, 28 July 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Semantic questions ==&lt;br /&gt;
&lt;br /&gt;
Hey there, Malvineous. I&#039;ve been updating mod pages to fit in the latest style, but I thought I&#039;d ask you a few questions. First, I&#039;d like to mention the ending and title screen levels in the Vorticon mods. I&#039;ve been including them since your adding a mod tutorial requested so, but what I&#039;m wondering about is if they should be considered required or not. I&#039;ve been setting them to &amp;quot;Yes&amp;quot;, since I figured that one has to go through them to beat the game, but I just want to make sure. Also, should the items in the title screens be counted for points or no? That is something I&#039;m not so sure about.&lt;br /&gt;
&lt;br /&gt;
Another thing I want to bring up is hazards. In my mods, I put them into the actors list with their replacements stated. However though, I now feel like listing the tile hazards as replacing something is kinda dumb, as it&#039;s really easy for one to add more tile hazards and they don&#039;t have much differences between each other (especially in Vorticons mods). I think it&#039;s alright if it replaces a hazard that has something to do with a sprite, though, such as the Underwater Mine. I think it&#039;d be nice to either have the ModActorImage template updated to have something for if it&#039;s a tile hazard or not or a new template (something like ModHazardImage?).&lt;br /&gt;
&lt;br /&gt;
Finally, I want to bring up something that has to do with the regular Sqeeks and levels from therealdopefish&#039;s levelpacks. Both have been used in more than one mod, with the former replacing different creatures (although they act nearly identical) and the latter using different level numbers. I&#039;m not sure how to explain it but if you were to look Flames on Earth and The Sqeek Battle for the former and therealdopefish&#039;s two levelpacks for the latter, I think you&#039;ll be able to see that there is a problem. It&#039;d be nice if it can be fixed, although I think therealdopefish&#039;s levelpacks are a lot like each other, with one just having extra levels, so those two could probably just be merged. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 20:09, 11 November 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Hey, very good questions!  I&#039;m a bit out of the loop at the moment so not sure which levelpacks you mean, but (although I haven&#039;t tested it), in theory you should be able to put multiple &amp;lt;nowiki&amp;gt;{{LevelImage}}&amp;lt;/nowiki&amp;gt; templates on a level page to have the same level appear in multiple mods.  If this doesn&#039;t work let me know and I&#039;ll fix it.&lt;br /&gt;
&lt;br /&gt;
: With the hazards my opinion is that they are just tiles so they should not be listed (otherwise we&#039;d be listing every single tile that&#039;s changed) however exceptions can be made if one of the hazard replacements is particularly notable for whatever reason.  Otherwise I&#039;d leave them out.  The mod pages are after all just meant to be a summary of the important bits rather than a list of every single change.  If you think it would be better to have a ModHazardImage then by all means go ahead and create one - just copy the existing one and modify as needed, that&#039;s perfectly fine.&lt;br /&gt;
&lt;br /&gt;
: The &#039;required&#039; attribute was meant to indicate whether the level must be *played* in order to finish the game so I guess by that logic the title and ending levels can be set to false for most mods, unless somehow the player ends up in them intentionally and cannot finish the game otherwise.  Interesting point though, I had not considered the non-level levels!  I would still count it for points though, just for curiosity&#039;s sake, but at the same time I wouldn&#039;t give it a high priority so it&#039;s fine if it&#039;s left blank.  However I am now wondering whether these should be included at all, since if there&#039;s no way to play the level without cheating, isn&#039;t not really a level... -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 21:58, 11 November 2018 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ModActorImage request ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv, could you take a look at [[Template talk:ModActorImage]], please? I think the template needs a &amp;quot;Link&amp;quot; parameter just like the one used by ItemImage. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 17:57, 18 May 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry for the late reply, I didn&#039;t get a notification for some reason and I&#039;m a bit behind on all this stuff at the moment!  I replied on the [[Template talk:ModActorImage|Talk page]] but essentially to avoid the wiki becoming a dumping ground for all sorts of random fan art, there are some restrictions on what can be uploaded.  Generally speaking it&#039;s one page per mod, and all the actor info, story, etc. should be on that single page.  We found early on that having a separate article for each mod actor was too much work because they would never be completed fully, so by keeping everything on the one page it makes it easier to maintain. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 04:24, 13 July 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
::No problem, thanks for your reply. I answered on the talk page. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 18:35, 13 July 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== New version of a file doesn&#039;t work ==&lt;br /&gt;
&lt;br /&gt;
Some minutes ago, I uploaded a new version of The Ultra Omegamatic in-game image with new tiles, but it is the same as the first version of the image, how I can change it?--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 18:54, 8 September 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
: You have to clear the cache of your browser in order to see the changes take effect. &lt;br /&gt;
: -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 23:50, 8 September 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== All the fangames use the new infobox ==&lt;br /&gt;
&lt;br /&gt;
Hi, I would like to tell you I checked all the fangames infobox and all of them use the new infobox, so there is a thing to remove in the list of &amp;quot;To do things&amp;quot;. Soon I&#039;ll check the unused images--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 20:07, 8 October 2020 (UTC)&lt;br /&gt;
: Nice job!  Feel free to remove it from the list if you&#039;re satisfied it&#039;s done!  (And feel free to add anything else you think is important.) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 01:34, 9 October 2020 (UTC)&lt;br /&gt;
I now finished to check the unused images: some of them are present in their articles but it says they&#039;re unused, the others have been hidden so an administrator can delete them except for the 1st level of The Prisoner&#039;s Dilemma. It can be utilised when it&#039;ll be released--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 10:59, 9 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I also uploaded some fangames images to fix the broken links, but I&#039;ve done an error moving a file and uploading another image for [[Keen: Next (fangame)|Keen: Next]] because I didn&#039;t know both the files have the same name. The rest of the fangames that need pictures are unplayable on my PC so I can&#039;t do some screenshots of them--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 20:09, 9 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just finished putting all the files into categories. The remaining are 12: An image of Bobby Prince, some images of my mod in development that need to be deleted, some levels of Keen 3 Part 2 which are the same as the originals and which I think should be deleted and some screenshots of some other Mod. Keen Aqua 3 I think--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 07:41, 11 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
: That&#039;s great, thanks so much for all your effort!  I&#039;ve made you an administrator of the wiki so you should now have access to delete files if you want to tidy up that last little bit.  Sometimes the wiki software can be a little slow to realise an image is in use if you have only just added it to a page, but if you use the [http://www.shikadi.net/wiki/keen/api.php?action=query&amp;amp;meta=siteinfo&amp;amp;siprop=statistics statistics API] and look at the &amp;quot;jobs&amp;quot; value then once it has reached zero everything should be up to date.  If this is zero but you still have an image listed as unused when it&#039;s definitely in use, let me know and I&#039;ll investigate.  Remember that filenames on the wiki are case sensitive so it&#039;s possible it&#039;s a duplicate if the case is different. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:19, 12 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Obviously I&#039;ll have to get used to it. Because I don&#039;t know how certain functions work so by mistake I reversed your edits but quiet I fixed everything--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 08:01, 12 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
I also deleted all the unused images and the duplicates. The remaining images are from unreleased mods(They can be utilized when the mods will be finished) and levels that are present in their articles(even if it says they&#039;re unused) . So this work is finished&lt;br /&gt;
&lt;br /&gt;
: I refreshed the wiki link database as it looked like the unused images shouldn&#039;t have been there, and sure enough now it has realised which ones were in use and most of them have gone from the list.  There are still a few unused images so hopefully those can easily be sorted. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 09:57, 14 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Good. So I can sort the rest--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 10:40, 14 October 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Creatures and Hazards ==&lt;br /&gt;
&lt;br /&gt;
Hi Malv, since some years, the creatures and hazards of the original games appear on the main page of a game rather than on separate pages (though certain pages like [[Keen 1 Hazards]], [[Keen 6 Hazards]] and [[Keen GBC Creatures]] were not changed to redirects). While the template EpisodeInfo still contains separate links for creatures and hazards, both of them appear under the heading &amp;quot;Actors&amp;quot;. Personally, I&#039;d prefer to have separate sections for them (Nisaba agreed). What do you think? I guess that would not only require a new template, but also some new properties? Or would there be another way to split them on the game page? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 21:07, 11 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I couldn&#039;t help but read. It would be a very nice idea to create separate pages for each hazard. It would help readers to know more about these--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 08:34, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Actually, I was referring to separate sections on a game&#039;s main page rather than separate pages for the various hazards. Most of them are just deadly tiles, though I wouldn&#039;t mind if pages were made for ice cannon, laser cannon, jack, underwater mine, etc., since these stand out. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 15:24, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Both are cool ideas. So let&#039;s wait Malvineous&#039;s reply--[[User:DarkAle|DarkAle]] ([[User talk:DarkAle|talk]]) 18:00, 12 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::: I just dropped by to let you guys know that I second Grandy02 suggestions. &lt;br /&gt;
:::: -- [[User:Nisaba|Nisaba]] ([[User talk:Nisaba|talk]]) 19:49, 27 November 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Are you saying you just want the creatures under the &amp;quot;Actors&amp;quot; heading split into two headings, &amp;quot;Creatures&amp;quot; and &amp;quot;Hazards&amp;quot;?  I&#039;m fine with that (I think those pages could do with a revamp in general) but do we need to agree on the criteria for what goes where?  e.g. if you say hazards are anything that is a tile then what about a [[Pat Pat]], isn&#039;t it a creature?  Maybe hazards are things that are environmental, but then the Ice Cannon doesn&#039;t really qualify...&lt;br /&gt;
::::: There is an existing property for &#039;harms keen&#039; that could be used to split the sections but it sounds like this isn&#039;t what you are after.  If you need to add a new property then that&#039;s no problem, let&#039;s just agree on how to classify it first.  Perhaps it&#039;s worth asking on the PCKF or K:M for opinions there?  I don&#039;t think too many active community members keep an eye on these talk pages.  Either way we&#039;ll need to create a page for each hazard so we can use the Semantic MediaWiki query tools to populate the lists. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 11:14, 28 July 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::Splitting into two headings (possibly as subheadings of &amp;quot;Actors&amp;quot;) sounds good. What about an additional parameter for the &amp;quot;ActorImage&amp;quot; template that allows to distinguish between the two? The Pat Pat is indeed a tricky one, technically it&#039;s just a deadly tile, maybe an exception could be made for that one. I&#039;d list everything as &amp;quot;hazards&amp;quot; what has been referred to as such on the &amp;quot;Hazards&amp;quot; pages (including Ice Cannon, Jack, Dart Gun, Laser Cannon etc.). Not sure about the &amp;quot;Stranded Fish&amp;quot; (or whatever it is), though. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 16:03, 7 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== HTTPS &amp;amp; New URL ==&lt;br /&gt;
&lt;br /&gt;
I see the URL for the KeenWiki has changed and the site is now HTTPS - when did that change and, out of interest, were you contacted by a user called &amp;quot;mr_pants&amp;quot; requesting it?  It&#039;s just that I was contacted via IRC this morning under the mistaken assumption that I had control of that part of the wiki. -- [[User:DHeadshot|DHeadshot]] ([[User talk:DHeadshot|talk]]) 16:39, 11 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:No, nobody has contacted me about it.  It is something I have wanted to do for a long time, starting the process [https://pckf.com/viewtopic.php?f=3&amp;amp;t=4396 over two years ago] and only finishing [https://pckf.com/viewtopic.php?t=9247 a couple of months back]. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:30, 12 May 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Camoto: Dangerous Dave - graphic problems ==&lt;br /&gt;
&lt;br /&gt;
Hey! Today I translated (only hexadecimally unfortunately) Dangerous Dave 1 to Hungarian. I wanted to translate the graphic signs like &amp;quot;DAVES:&amp;quot; &amp;quot;GO THRU THE DOOR&amp;quot;, etc. as well, but when I exported original VGA (!) graphic stuff and then I modificated it and re-imported it, the graphics were screwed up when I started new game. (Even the blazing Dangerous Dave sign had little glitch as well). Help me! [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 20:48, 3 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: This is a known problem that was only very recently fixed.  I&#039;m not working on the old Camoto version any longer, but you can try the incomplete development version of the new Camoto version that runs in a web browser.  It can&#039;t do as many things as the old Camoto yet but it can modify the Dave graphics without corrupting them.  See https://camoto.shikadi.net -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 23:36, 3 June 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Adding a Demo/Beta release date to infoboxes? ==&lt;br /&gt;
&lt;br /&gt;
Right now, it seems half the time the first release date is the release of a demo/beta (such as with [[Atroxian Realm]]), and half the time it&#039;s the first full release (such as with [[Operation Ocflore]]). It&#039;s inconsistent.&lt;br /&gt;
&lt;br /&gt;
In my opinion, the best way to fix this would be to add a Demo/Beta Release date to the info box and rename the Release date to Official Release Date. [[User:Pandakeen|Pandakeen]] ([[User talk:Pandakeen|talk]]) 18:43, 7 August 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: Fair point.  I&#039;m less keen on the demo/beta release date because mods shouldn&#039;t have pages made for them until they are finished (as this acts as motivation to finish the mod instead of abandoning it shortly after the demo has been done) so I&#039;d be fine with only having the date of the full release and not worrying about any demos or betas. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 00:56, 9 August 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: I&#039;ll go ahead and correct the dates, then. [[User:Pandakeen|Pandakeen]] ([[User talk:Pandakeen|talk]]) 13:27, 20 October 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Thanks for the admin access! ==&lt;br /&gt;
&lt;br /&gt;
Hey Malv, thanks for giving me access to administrator tools, including mass-editing! A few days ago, I fixed tons of download links to reflect the KeenWiki server change. It took me a while to figure out how to use the mass-editing tool, but once I got it down it was a breeze. The download links seem to be working now. I also upgraded them so that they use HTTPS instead of HTTP -- hope that doesn&#039;t do any harm!&lt;br /&gt;
&lt;br /&gt;
When I first took care of the fan-game download links, I made a slight mistake. It messed up the &amp;quot;List of fan-games&amp;quot; page, but thankfully, I got that fixed. The individual fan-game pages seem to be alright, so I didn&#039;t bother with those, but I thought I&#039;d point out the mistake just in case something else did get messed up. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 07:10, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: All good, I wasn&#039;t sure if you got my e-mail or not!  As long as you can fix any problems you create then it&#039;s no issue :) -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:23, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Is Keen 1 Randomiser a mod or a tool? ==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve been thinking of making an article about Multimania&#039;s [https://davidgow.net/keen/randomiser.html  Keen 1 Randomiser], but I can&#039;t decide if it&#039;s a mod or a tool. On one hand, the index page of Multimania&#039;s website describes it as a tool and it looks like it could be used with mods, or at least the simple ones. On the other hand, however, it seems to be made more for playing rather than creation. What do you think? [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 07:10, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
: In my opinion if it&#039;s a patch you run as part of the game then it&#039;s a mod, and if it&#039;s a program you run that produces a mod you then run as a second step (and can distribute independently), that&#039;s a tool.  However if the difference is that slight then it won&#039;t hurt to list it in both categories. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 12:23, 8 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Well, you can run a program (RANDKEEN.EXE) that will generate the randomized levels and patch file, which could be independently distributed. On the other hand, however, you can run a batch file (RNDKEEN1.BAT) that will run RANDKEEN.EXE and then runs the game with the produced levels and patch file. Since the [[Random Maze Generator]] is considered a tool, I&#039;m slightly leaning towards the tool category. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 06:36, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::: It certainly is a borderline one.  Is its primary purpose for people to play (like a mod), or to make levels for other modders to incorporate into their own levels (like a tool)?  How many mods have made use of it as a tool?  If there aren&#039;t too many that suggests it&#039;s a mod first, but also listed in tools second. -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 07:00, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::I just created an article about it, and it&#039;s classified as a tool. I saw your message after uploading the first image and while creating the article. I&#039;m sure it&#039;s made for people to play, and I haven&#039;t seen any mods make use of it (at least not yet). I made it a tool, though, since I feel like it makes more sense and classifying it as a mod might make the article look awkward. Feel free to change it, though. [[User:Quinton|Quinton]] ([[User talk:Quinton|talk]]) 08:44, 16 November 2021 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Mirror Keen in Second Dome of Darkness ==&lt;br /&gt;
&lt;br /&gt;
Hello. In the Second Dome of Darkness you can see a mirror Keen with the SGA sign &amp;quot;ICU&amp;quot;. Is it really fake? [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 13:45, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
: I think so.  If you look at the [[Second Dome of Darkness|level map]] there&#039;s nothing there - you can open the game in a level editor to confirm it for yourself.  You can also extract the Keen 6 sprites and look through them to see if you can find any of the sprites you can see in the video.  You can use the F10+T cheat in the game to view all the sprites loaded for the level and look for a mirror Keen sprite there.  If it was real, I&#039;m sure there would be more than a single video of it.  I suppose the question now is, will someone make a Keen 6 mod to turn it into reality :)  It looks like the video was of a Keen mod.  I suppose if there is a background tile that animates quickly with enough frames it would be easy enough to do.  You are a very experienced modder, I&#039;m sure you would be able to work out how it was done and solve the mystery! -- [[User:Malvineous|Malvineous]] ([[User talk:Malvineous|talk]]) 14:33, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: Well, I&#039;m planning Keen 6 v2.0, which will be a Keen 6 mod based on v1.5, so I&#039;ll try everything. :) [[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 16:06, 16 January 2022 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Patch wiki issues ==&lt;br /&gt;
&lt;br /&gt;
So I&#039;ve just come back and noticed the patch wiki is broken. All the patches are an ugly red color, the [] and {} highlights are broken, the titles of patches that used to be present have been totally erased, the whole thing&#039;s a mess. What happened? What&#039;s this weird &#039;syntaxhighlight lang=&amp;quot;asm&amp;quot;&#039; stuff? If this is permanent it&#039;ll require a massive overhaul of all patch pages to remove the brackets and the descriptions that used the fact that brqackets highlighted stuff different colors. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 23:31, 30 January 2023 (GMT)&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Main_menu_(Galaxy)&amp;diff=46417</id>
		<title>Patch:Main menu (Galaxy)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Main_menu_(Galaxy)&amp;diff=46417"/>
		<updated>2023-01-30T23:25:25Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add Keen 6 music patch, and is the patch wiki broken?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers patches relating to the main menu, the first menu the player is confronted with on starting the game. Related pages are [[Patch:Title screen]]. For patches relating to the main menu in other games see [[Patch:Main menu (Vorticons)]] and [[Patch:Main menu (Dreams)]].&lt;br /&gt;
&lt;br /&gt;
The Galaxy menu is more closely related to Keen Vorticons&#039; menu, but is also like the Dreams menu in that it also uses bitmaps (it even has its own fullscreen graphic). It is also much more complex than the Vorticons menus.&lt;br /&gt;
&lt;br /&gt;
This page is divided into several sections. The first two sections are minor and deal with disabling the entire menu and playing music when the menu is called. They are pretty self-explanatory. The third section deals with menu bitmaps in general and the range the menu can use. More useful is the fourth section which details &#039;menu segments&#039;; these control how the various menus are laid out, their texts and bitmaps, a very broad and powerful set of tools. The fifth section pertains to menu &#039;bars&#039;, that is horizontal lines that divide up the menus. The sixth section involves &#039;colors&#039; and deals with the colors of various texts and objects in the menus. The remaining two sections are minor and rather miscellaneous things.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable ==&lt;br /&gt;
&lt;br /&gt;
There are two parts to this patch, the first disables accessing the Main Menu during normal gameplay by pressing the F2-F6 keys or Esc. The second part skips going to the Main Menu when the game is first started, instead launching the [[Patch:Demo mode|demo mode]] game.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable Main Menu in-game&lt;br /&gt;
%patch $798E $E9 $00AAW&lt;br /&gt;
&lt;br /&gt;
#Skip Main Menu, go straight to new game on startup&lt;br /&gt;
%patch $51F8 $EB $05&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable Main Menu in-game&lt;br /&gt;
%patch $7949 $E9 $00AAW&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Disable Main Menu in-game&lt;br /&gt;
%patch $7722 $E9 $00AAW&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What blocks ingame menu ===&lt;br /&gt;
&lt;br /&gt;
This patch shows what controls the blocking of the Main Menu ingame. Ordinarily this is [[Patch:Demo mode|&#039;demo mode&#039;, a special gameplay mode activated by the &amp;lt;tt&amp;gt;-demo&amp;lt;/tt&amp;gt; switch.]] This can be changed however so that the menu is permanently or temporarily disabled.&lt;br /&gt;
&lt;br /&gt;
=== What blocks Main Menu ingame ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#What blocks Main Menu ingame -Keen 4&lt;br /&gt;
%patch $796E {$7A72W} [$00] {$74}&lt;br /&gt;
&lt;br /&gt;
#What blocks Main Menu ingame -Keen 5&lt;br /&gt;
%patch $7929 {$6F72W} [$00] {$74}&lt;br /&gt;
&lt;br /&gt;
#What blocks Main Menu ingame -Keen 6&lt;br /&gt;
%patch $7702 {$75AEW} [$00] {$74}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip menu on startup ===&lt;br /&gt;
&lt;br /&gt;
This patch changes things so that when the game is started there is no Main Menu, instead the player is sent straight to a new game. The second line controls the [[Patch:Difficulty Level|difficulty]] of that game; by default it is 2, or, normal.&lt;br /&gt;
&lt;br /&gt;
Note that the player can still access the menu and quit the game\start a different difficulty if they wish.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Skip Main Menu, go straight to new game on startup&lt;br /&gt;
%patch $51F8 $EB $05&lt;br /&gt;
&lt;br /&gt;
#Difficulty of new game&lt;br /&gt;
%patch $5209 [$0002W] &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Play music in menu ==&lt;br /&gt;
&lt;br /&gt;
This allows you to play music in the main menu. As a side effect the menu background color is black, not cyan. This only matters if your menu image is smaller than 320x200. The value used here is the level whose music is used. (For example a value of 0 will play the map level&#039;s music.) See [[Patch:Music]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music in the menu&lt;br /&gt;
%patch $1CC6F $06BD20C7RL&lt;br /&gt;
%patch $1CC6B [$0003W]      #Play this level&#039;s song&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music in the menu&lt;br /&gt;
%patch $1DC0C $06B92083RL&lt;br /&gt;
%patch $1DC08 [$0003W]      #Play this level&#039;s song&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Play music in the menu&lt;br /&gt;
%patch $1C8DE $069A20DBRL&lt;br /&gt;
%patch $1C8DA [$0003W]      #Play this level&#039;s song&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu doesn&#039;t stop game music ==&lt;br /&gt;
&lt;br /&gt;
This patch lets the game music keep playing when the menu is called. This means the music playing in the level or demo the player plays before calling the menu. When the game initially starts the menu will be silent.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t interrupt music when Main menu is called&lt;br /&gt;
%patch $7994 $90 $90 $90 $90&lt;br /&gt;
%patch $79A2 $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t interrupt music when Main menu is called&lt;br /&gt;
%patch $794F $90 $90 $90 $90&lt;br /&gt;
%patch $795D $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t interrupt music when Main menu is called&lt;br /&gt;
%patch $7728 $90 $90 $90 $90&lt;br /&gt;
%patch $7736 $EB $0A&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu bitmaps ==&lt;br /&gt;
&lt;br /&gt;
The Main Menu uses a variety of bitmaps. Primary among these is the &#039;background bitmap&#039; that fills the entire screen and over which other bitmaps are displayed. These &#039;sub bitmaps&#039; are called by various &#039;menu actions&#039; (See below.)&lt;br /&gt;
&lt;br /&gt;
As such all these bitmaps must be cached when the menu is first displayed. They are also displayed in the same location onscreen (despite being different sizes.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bitmap cache ===&lt;br /&gt;
&lt;br /&gt;
The bitmap cache controls all the possible bitmaps the Main Menu can display. Note that while the first value is a word, the second is only a byte. At the same time it also caches the required sprites for the [[Patch:Paddle war|Paddle War]] minigame and the &#039;DEMO&#039; sign for demo display. The &#039;&#039;sprite images&#039;&#039; used for Paddle War are cached at a different location when the minigame is loaded.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main menu bitmaps cache&lt;br /&gt;
%patch $1CBEF [$0058W] #Start&lt;br /&gt;
%patch $1CC04 [$67]    #End&lt;br /&gt;
&lt;br /&gt;
#Paddle War sprites\DEMO cache&lt;br /&gt;
%patch $1CC08 [$007CW] #Start&lt;br /&gt;
%patch $1CC1D [$0080W] #End&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main menu bitmaps cache&lt;br /&gt;
%patch $1DB8D [$0043W] #Start&lt;br /&gt;
%patch $1DBA2 [$52]    #End&lt;br /&gt;
&lt;br /&gt;
#Paddle War sprites\DEMO cache&lt;br /&gt;
%patch $1DBA6 [$0066W] #Start&lt;br /&gt;
%patch $1DBBB [$6A]    #End&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main menu bitmaps cache&lt;br /&gt;
%patch $1C85F [$000BW] #Start&lt;br /&gt;
%patch $1C874 [$1A]    #End&lt;br /&gt;
&lt;br /&gt;
#Paddle War sprites\DEMO cache&lt;br /&gt;
%patch $1C878 [$002EW] #Start&lt;br /&gt;
%patch $1C88D [$32]    #End&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Unused cache ====&lt;br /&gt;
&lt;br /&gt;
Interestingly Keen Galaxy contains an unused bitmap cache possibly from an older version of the Main Menu.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main menu bitmaps cache&lt;br /&gt;
%patch $306D0 [$0058W] #Start&lt;br /&gt;
%patch $3071A [$0067W] #End&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Background bitmap ===&lt;br /&gt;
&lt;br /&gt;
This is the &#039;background&#039; bitmap used for the main menu, in short Keen&#039;s computerwrist. If this is not displayed the game will show the menu text and bitmaps over a blank screen. There are two separate uses of the bitmap, one for all menus except Paddle War, and one for Paddle War itself.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main Menu background bitmap&lt;br /&gt;
%patch $1AC07 [$0067W] #Draw current menu&lt;br /&gt;
%patch $1C6D2 [$0067W] #Paddle War&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main Menu background bitmap&lt;br /&gt;
%patch $1BBA5 [$0052W] #Draw current menu&lt;br /&gt;
%patch $1D670 [$0052W] #Paddle War&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Menu name bitmap locations ===&lt;br /&gt;
&lt;br /&gt;
As stated above, all the menu name bitmaps are displayed in the same location, no matter how wide they are. (They are the same height.) The actual bitmap displayed depends on what menu the player is currently in.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Location of menu name bitmaps&lt;br /&gt;
%patch $1AB34 [$0030W] #Vertical&lt;br /&gt;
%patch $1AB38 [$0050W] #Horizontal&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Location of menu name bitmaps&lt;br /&gt;
%patch $1BDA2 [$0030W] #Vertical&lt;br /&gt;
%patch $1BDA6 [$0050W] #Horizontal&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Location of menu name bitmaps&lt;br /&gt;
%patch $1A7A4 [$0030W] #Vertical&lt;br /&gt;
%patch $1A7A8 [$0050W] #Horizontal&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu actions ==&lt;br /&gt;
&lt;br /&gt;
The structure of the Main menu&#039;s actions and options is discussed in detail [[Patch:Galaxy menu tutorial|in this tutorial page.]] Menu actions and options control most of the menu text, the number of options in menus and how they are laid out, the bitmaps that appear and more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debug menu ===&lt;br /&gt;
&lt;br /&gt;
This is a &#039;hidden&#039; menu not seen during normal gameplay used by the developers when debugging the game. By default it can be ignored. It contains only one option &#039;DEBUG&#039; and it is not known how functional this is.&lt;br /&gt;
&lt;br /&gt;
This menu uses the &#039;MAIN MENU&#039; bitmap and its only option is type 1.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Debug menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F854 $0000W $0000W $0058W $0000W $0000W $1F83RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F830 $0001W $0000W $0000W $477CW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $335EC &amp;quot;DEBUG&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Debug menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $206E4 $0000W $0000W $0043W $0000W $0000W $206CRW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $206C0 $0001W $0000W $0000W $3D98W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $340D8 &amp;quot;DEBUG&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Debug menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F6B4 $0000W $0000W $000BW $0000W $0000W $1F69RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F690 $0001W $0000W $0000W $41F6W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34F26 &amp;quot;DEBUG&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sound effects menu ===&lt;br /&gt;
&lt;br /&gt;
This menu allows the player to control how sounds are played in the game. It has four options, each of type 2. Each item uses its third value for a currently unknown function.&lt;br /&gt;
&lt;br /&gt;
The menu itself uses the &#039;SOUND EFFECTS MENU&#039; bitmap and positions all its options 8 pixels right of the Computerwrist&#039;s left side.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Sound menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F8CA $0008W $0000W $005DW $0000W $0000W $1F87RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F870 $0002W $0000W $0031W $4782W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F882 $0002W $0000W $0019W $4793W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F894 $0002W $0000W $001EW $479EW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F8A6 $0002W $0000W $0010W $47B1W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $335F2 &amp;quot;NO SOUND EFFECTS&amp;quot; $00&lt;br /&gt;
%patch $33603 &amp;quot;PC SPEAKER&amp;quot; $00&lt;br /&gt;
%patch $3360E &amp;quot;ADLIB/SOUNDBLASTER&amp;quot; $00&lt;br /&gt;
%patch $33621 &amp;quot;QUIET ADLIB/SOUNDBLASTER&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Sound menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $2075A $0008W $0000W $0048W $0000W $0000W $2070RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20700 $0002W $0000W $0031W $3D9EW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20712 $0002W $0000W $0019W $3DAFW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20724 $0002W $0000W $001EW $3DBAW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20736 $0002W $0000W $0010W $3DCDW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $340DE &amp;quot;NO SOUND EFFECTS&amp;quot; $00&lt;br /&gt;
%patch $340EF &amp;quot;PC SPEAKER&amp;quot; $00&lt;br /&gt;
%patch $340FA &amp;quot;ADLIB/SOUNDBLASTER&amp;quot; $00&lt;br /&gt;
%patch $3410D &amp;quot;QUIET ADLIB/SOUNDBLASTER&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Sound menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F72A $0008W $0000W $0010W $0000W $0000W $1F6DRW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F6D0 $0002W $0000W $0031W $41FCW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F6E2 $0002W $0000W $0019W $420DW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F6F4 $0002W $0000W $001EW $4218W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F706 $0002W $0000W $0010W $422BW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34F2C &amp;quot;NO SOUND EFFECTS&amp;quot; $00&lt;br /&gt;
%patch $34F3D &amp;quot;PC SPEAKER&amp;quot; $00&lt;br /&gt;
%patch $34F48 &amp;quot;ADLIB/SOUNDBLASTER&amp;quot; $00&lt;br /&gt;
%patch $34F5B &amp;quot;QUIET ADLIB/SOUNDBLASTER&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Music menu ===&lt;br /&gt;
&lt;br /&gt;
This menu allows the player to control how music is played in the game. It has two options, each of type 2. Each option&#039;s third value, $1E and $31 are the [[Patch:Scancodes|scancodes]] for each option&#039;s shortcut key, &#039;A&#039; and &#039;N&#039; respectively.&lt;br /&gt;
&lt;br /&gt;
The menu itself uses the &#039;MUSIC MENU&#039; bitmap and positions all its options 8 pixels right of the Computerwrist&#039;s left side.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Music menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F916 $0008W $0000W $005EW $0000W $0000W $1F8ERW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F8E0 $0002W $0000W $0031W $47CAW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F8F2 $0002W $0000W $001EW $47D3W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $3363A &amp;quot;NO MUSIC&amp;quot; $00&lt;br /&gt;
%patch $33643 &amp;quot;ADLIB/SOUNDBLASTER&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Music menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $207A6 $0008W $0000W $0049W $0000W $0000W $2077RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20770 $0002W $0000W $0031W $3DE6W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20782 $0002W $0000W $001EW $3DBAW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34126 &amp;quot;NO MUSIC&amp;quot; $00&lt;br /&gt;
%patch $340FA &amp;quot;ADLIB/SOUNDBLASTER&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Music menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F776 $0008W $0000W $0011W $0000W $0000W $1F74RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F740 $0002W $0000W $0031W $4244W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F752 $0002W $0000W $001EW $424DW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34F74 &amp;quot;NO MUSIC&amp;quot; $00&lt;br /&gt;
%patch $34F7D &amp;quot;ADLIB/SOUNDBLASTER&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New game menu ===&lt;br /&gt;
&lt;br /&gt;
This menu allows the player to select the difficulty of a new game from either Easy, Medium or Hard. It has three options, each of type 1. Each item uses its third value for a currently unknown function. The fifth value controls what kind of game is started; 5 starts an easy game, 6 normal and 7 hard.&lt;br /&gt;
&lt;br /&gt;
The menu itself uses the &#039;NEW GAME MENU&#039; bitmap and positions all its options 8 pixels right of the Computerwrist&#039;s left side. Its eighth value is 1 for unknown reasons. It is possible to [[Patch:Difficulty Level#Add_an_extra_difficulty_level_to_game|add a fourth difficulty option]] to this menu by using the (unused) debug menu.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 New game menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F978 $0008W $0000W $0059W $0000W $0000W $1F93RW $00000000L   $0001W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F930 $0001W $0000W $0012W $47E6W $0005W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F942 $0001W $0000W $0031W $47F6W $0006W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F954 $0001W $0000W $0023W $4808W $0007W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $33656 &amp;quot;BEGIN EASY GAME&amp;quot; $00&lt;br /&gt;
%patch $33666 &amp;quot;BEGIN NORMAL GAME&amp;quot; $00&lt;br /&gt;
%patch $33678 &amp;quot;BEGIN HARD GAME&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 New game menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $20808 $0008W $0000W $0044W $0000W $0000W $207CRW $00000000L   $0001W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $207C0 $0001W $0000W $0012W $3DEFW $0005W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $207D2 $0001W $0000W $0031W $3DFFW $0006W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $207E4 $0001W $0000W $0023W $3E11W $0007W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $3412F &amp;quot;BEGIN EASY GAME&amp;quot; $00&lt;br /&gt;
%patch $3413F &amp;quot;BEGIN NORMAL GAME&amp;quot; $00&lt;br /&gt;
%patch $34151 &amp;quot;BEGIN HARD GAME&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 New game menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F7D8 $0008W $0000W $000CW $0000W $0000W $1F79RW $00000000L   $0001W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F790 $0001W $0000W $0012W $4260W $0005W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F7A2 $0001W $0000W $0031W $4270W $0006W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F7B4 $0001W $0000W $0023W $4282W $0007W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34F90 &amp;quot;BEGIN EASY GAME&amp;quot; $00&lt;br /&gt;
%patch $34FA0 &amp;quot;BEGIN NORMAL GAME&amp;quot; $00&lt;br /&gt;
%patch $34FB2 &amp;quot;BEGIN HARD GAME&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Load\save menu ===&lt;br /&gt;
&lt;br /&gt;
This is one of the more complex menus. It has two menu setups as well as multiple &#039;blank&#039; options filled in by saved game data. The first menu is the load menu used when loading games while the second is the &#039;save&#039; menu used when saving games. Both menus offset their texts 4 pixels horizontally and 3 pixels vertically and use the same options. Each menu has its own unique code to run when in use.&lt;br /&gt;
&lt;br /&gt;
Each option is type 1 and its third value controls what game is loaded. (2 loads game 1 and so on.) Each option has no text associated with it, this is supplied by the saved game entry for that option.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Load menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1FA0E $0004W $0003W $005AW $0000W $0000W $1F99RW $1A891581RL  $0000W $0000W $0000W #Load&lt;br /&gt;
%patch $1FA24 $0004W $0003W $005BW $0000W $0000W $1F99RW $1A8918A6RL  $0000W $0000W $0000W #Save&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F990 $0001W $0000W $0002W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9A2 $0001W $0000W $0003W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9B4 $0001W $0000W $0004W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9C6 $0001W $0000W $0005W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9D8 $0001W $0000W $0006W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9EA $0001W $0000W $0007W $0000W $0000W $00000000L  $0000W $0000W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Load menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $2089E $0004W $0003W $0045W $0000W $0000W $2082RW $1B83157FRL  $0000W $0000W $0000W #Load&lt;br /&gt;
%patch $208B4 $0004W $0003W $0046W $0000W $0000W $2082RW $1B8318A4RL  $0000W $0000W $0000W #Save&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20820 $0001W $0000W $0002W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20832 $0001W $0000W $0003W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20844 $0001W $0000W $0004W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20856 $0001W $0000W $0005W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20868 $0001W $0000W $0006W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $2087A $0001W $0000W $0007W $0000W $0000W $00000000L  $0000W $0000W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Load menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1F86E $0004W $0003W $000DW $0000W $0000W $1F7FW $1A501581RL  $0000W $0000W $0000W #Load&lt;br /&gt;
%patch $1F884 $0004W $0003W $000EW $0000W $0000W $1F7FW $1A5018A6RL  $0000W $0000W $0000W #Save&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F7F0 $0001W $0000W $0002W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F802 $0001W $0000W $0003W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F814 $0001W $0000W $0004W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F826 $0001W $0000W $0005W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F838 $0001W $0000W $0006W $0000W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F84A $0001W $0000W $0007W $0000W $0000W $00000000L  $0000W $0000W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Configuration options|Options menu]] ===&lt;br /&gt;
&lt;br /&gt;
This menu allows the player to modify several options in the game such as turning the scorebox off and on. It uses the &#039;OPTIONS MENU&#039; bitmap and displays text 8 pixels right of the computerwrist&#039;s left side. There are also four &#039;option menus&#039; run by each menu option when it is selected.&lt;br /&gt;
&lt;br /&gt;
There are four menu options none of which has text since the text must change when the option is turned off or on. (The text must be patched another way.) It is not known what the text field does in these options, it appears to simply point to empty text strings to avoid displaying anything. The options are all type 3 and have their own unique codes to run when selected.&lt;br /&gt;
&lt;br /&gt;
The last four menus have no text offsets or bitmaps to display. Their function is to run code when a menu option is changed, changing that option and the text displayed.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Options menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1FAFA $0008W $0000W $0063W $0000W $0000W $1FAARW $00000000L  $0000W $0000W $0000W #Main&lt;br /&gt;
%patch $1FA3A $0000W $0000W $0000W $0000W $0000W $0000W  $1A890926RL $0000W $0000W $0000W #Scorebox&lt;br /&gt;
%patch $1FA50 $0000W $0000W $0000W $0000W $0000W $0000W  $1A8909D1RL $0000W $0000W $0000W #Two-button firing&lt;br /&gt;
%patch $1FA66 $0000W $0000W $0000W $0000W $0000W $0000W  $1A89095FRL $0000W $0000W $0000W #Jerky motion fix&lt;br /&gt;
%patch $1FA7C $0000W $0000W $0000W $0000W $0000W $0000W  $1A890998RL $0000W $0000W $0000W #SVGA compatibility&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FAA0 $0003W $0000W $001FW $4818W $0000W $1F9900AARL  $0000W $0000W&lt;br /&gt;
%patch $1FAB2 $0003W $0000W $0014W $4819W $0000W $1F9900C0RL  $0000W $0000W&lt;br /&gt;
%patch $1FAC4 $0003W $0000W $0032W $481AW $0000W $1F9900D6RL  $0000W $0000W&lt;br /&gt;
%patch $1FAD6 $0003W $0000W $002EW $481BW $0000W $1F9900ECRL  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts called from&lt;br /&gt;
%patch $1B106 [$4A04W] #Score on&lt;br /&gt;
%patch $1B10B [$4A13W] #Score off&lt;br /&gt;
%patch $1B11E [$4A23W] #Two-button on&lt;br /&gt;
%patch $1B123 [$4A3AW] #Two-button off&lt;br /&gt;
%patch $1B136 [$4A52W] #Fix on&lt;br /&gt;
%patch $1B13B [$4A68W] #Fix off&lt;br /&gt;
%patch $1B14E [$4A7FW] #SVGA on&lt;br /&gt;
%patch $1B153 [$4A97W] #SVGA off&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $33874 &amp;quot;SCORE BOX (ON)&amp;quot; $00&lt;br /&gt;
%patch $33883 &amp;quot;SCORE BOX (OFF)&amp;quot; $00&lt;br /&gt;
%patch $33893 &amp;quot;TWO-BUTTON FIRING (ON)&amp;quot; $00&lt;br /&gt;
%patch $338AA &amp;quot;TWO-BUTTON FIRING (OFF)&amp;quot; $00&lt;br /&gt;
%patch $338C2 &amp;quot;FIX JERKY MOTION (ON)&amp;quot; $00&lt;br /&gt;
%patch $338D8 &amp;quot;FIX JERKY MOTION (OFF)&amp;quot; $00&lt;br /&gt;
%patch $338EF &amp;quot;SVGA COMPATIBILITY (ON)&amp;quot; $00&lt;br /&gt;
%patch $33907 &amp;quot;SVGA COMPATIBILITY (OFF)&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Change texts called from&lt;br /&gt;
%patch $1B1D7  [$4AE1W] #Score on&lt;br /&gt;
%patch $1B1DC  [$4AF2W] #Score off&lt;br /&gt;
%patch $1B282  [$4B96W] #2-button on&lt;br /&gt;
%patch $1B287  [$4BAFW] #2-button off&lt;br /&gt;
%patch $1B1CC  [$4B04W] #Press any- Scorebox change&lt;br /&gt;
%patch $1B205  [$4B45W] #Press any- jerk change&lt;br /&gt;
%patch $1B23E  [$4B88W] #Press any- SVGA change&lt;br /&gt;
%patch $1B277  [$4BC9W] #Press any- 2-Button change&lt;br /&gt;
&lt;br /&gt;
#Change texts&lt;br /&gt;
%patch $33951 &amp;quot;Score box now on&amp;quot; $00&lt;br /&gt;
%patch $33962 &amp;quot;Score box now off&amp;quot; $00&lt;br /&gt;
%patch $33A06 &amp;quot;Two-button firing now on&amp;quot; $00&lt;br /&gt;
%patch $33A1F &amp;quot;Two-button firing now off&amp;quot; $00&lt;br /&gt;
%patch $33974 &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $339B5 &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $339F8 &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $33A39 &amp;quot;Press any key&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Options menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $2098A $0008W $0000W $004EW $0000W $0000W $2093RW $00000000L   $0000W $0000W $0000W #Main&lt;br /&gt;
%patch $208CA $0000W $0000W $0000W $0000W $0000W $0000W  $1B830924RL  $0000W $0000W $0000W #Scorebox&lt;br /&gt;
%patch $208E0 $0000W $0000W $0000W $0000W $0000W $0000W  $1B8309CFRL  $0000W $0000W $0000W #Two-button firing&lt;br /&gt;
%patch $208F6 $0000W $0000W $0000W $0000W $0000W $0000W  $1B83095DRL  $0000W $0000W $0000W #Jerky motion fix&lt;br /&gt;
%patch $2090C $0000W $0000W $0000W $0000W $0000W $0000W  $1B830996RL  $0000W $0000W $0000W #SVGA compatibility&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20930 $0003W $0000W $001FW $3D9DW $0000W $208200AARL $0000W $0000W&lt;br /&gt;
%patch $20942 $0003W $0000W $0014W $3D9DW $0000W $208200C0RL $0000W $0000W&lt;br /&gt;
%patch $20954 $0003W $0000W $0032W $3D9DW $0000W $208200D6RL $0000W $0000W&lt;br /&gt;
%patch $20966 $0003W $0000W $002EW $3D9DW $0000W $208200ECRL $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts called from&lt;br /&gt;
%patch $1C0A4 [$3FE4W] #Score on&lt;br /&gt;
%patch $1C0A9 [$3FF3W] #Score off&lt;br /&gt;
%patch $1C0BC [$4003W] #Two button on&lt;br /&gt;
%patch $1C0C1 [$4014W] #Two button off&lt;br /&gt;
%patch $1C0D4 [$4032W] #Jerk on&lt;br /&gt;
%patch $1C0D9 [$4048W] #Jerk off&lt;br /&gt;
%patch $1C0EC [$405FW] #SVGA on&lt;br /&gt;
%patch $1C0F1 [$4077W] #SVGA off&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34324 &amp;quot;SCORE BOX (ON)&amp;quot; $00&lt;br /&gt;
%patch $34333 &amp;quot;SCORE BOX (OFF)&amp;quot; $00&lt;br /&gt;
%patch $34343 &amp;quot;TWO-BUTTON FIRING (ON)&amp;quot; $00&lt;br /&gt;
%patch $3435A &amp;quot;TWO-BUTTON FIRING (OFF)&amp;quot; $00&lt;br /&gt;
%patch $34372 &amp;quot;FIX JERKY MOTION (ON)&amp;quot; $00&lt;br /&gt;
%patch $34388 &amp;quot;FIX JERKY MOTION (OFF)&amp;quot; $00&lt;br /&gt;
%patch $3439F &amp;quot;SVGA COMPATIBILITY (ON)&amp;quot; $00&lt;br /&gt;
%patch $343B7 &amp;quot;SVGA COMPATIBILITY (OFF)&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Change texts called from&lt;br /&gt;
%patch $1C175  [$40C1W] #Score on&lt;br /&gt;
%patch $1C17A  [$40D2W] #Score off&lt;br /&gt;
%patch $1C220  [$415AW] #2-button on&lt;br /&gt;
%patch $1C225  [$4173W] #2-button off&lt;br /&gt;
%patch $1C16A  [$40E4W] #Press any- Scorebox change&lt;br /&gt;
&lt;br /&gt;
#Change texts&lt;br /&gt;
%patch $34401 &amp;quot;Score box now on&amp;quot; $00&lt;br /&gt;
%patch $34412 &amp;quot;Score box now off&amp;quot; $00&lt;br /&gt;
%patch $3449A &amp;quot;Two-button firing now on&amp;quot; $00&lt;br /&gt;
%patch $344B3 &amp;quot;Two-button firing now off&amp;quot; $00&lt;br /&gt;
%patch $34424 &amp;quot;Press any key&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Options menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1F95A $0008W $0000W $0016W $0000W $0000W $1F90RW $00000000L   $0000W $0000W $0000W #Main&lt;br /&gt;
%patch $1F89A $0000W $0000W $0000W $0000W $0000W $0000W  $1A500926RL  $0000W $0000W $0000W #Scorebox&lt;br /&gt;
%patch $1F8B0 $0000W $0000W $0000W $0000W $0000W $0000W  $1A5009D1RL  $0000W $0000W $0000W #Two-button firing&lt;br /&gt;
%patch $1F8C6 $0000W $0000W $0000W $0000W $0000W $0000W  $1A50095FRL  $0000W $0000W $0000W #Jerky motion fix&lt;br /&gt;
%patch $1F8DC $0000W $0000W $0000W $0000W $0000W $0000W  $1A500998RL  $0000W $0000W $0000W #SVGA compatibility&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F900 $0003W $0000W $001FW $4292W $0000W $1F7F00AARL  $0000W $0000W&lt;br /&gt;
%patch $1F912 $0003W $0000W $0014W $4293W $0000W $1F7F00C0RL  $0000W $0000W&lt;br /&gt;
%patch $1F924 $0003W $0000W $0032W $4294W $0000W $1F7F00D6RL  $0000W $0000W&lt;br /&gt;
%patch $1F936 $0003W $0000W $002EW $4295W $0000W $1F7F00ECRL  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $351AE &amp;quot;SCORE BOX (ON)&amp;quot; $00&lt;br /&gt;
%patch $351BD &amp;quot;SCORE BOX (OFF)&amp;quot; $00&lt;br /&gt;
%patch $351CD &amp;quot;TWO-BUTTON FIRING (ON)&amp;quot; $00&lt;br /&gt;
%patch $351E4 &amp;quot;TWO-BUTTON FIRING (OFF)&amp;quot; $00&lt;br /&gt;
%patch $351FC &amp;quot;FIX JERKY MOTION (ON)&amp;quot; $00&lt;br /&gt;
%patch $35212 &amp;quot;FIX JERKY MOTION (OFF)&amp;quot; $00&lt;br /&gt;
%patch $35229 &amp;quot;SVGA COMPATIBILITY (ON)&amp;quot; $00&lt;br /&gt;
%patch $35241 &amp;quot;SVGA COMPATIBILITY (OFF)&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Change texts called from&lt;br /&gt;
%patch $1AE47  [$455BW] #Score on&lt;br /&gt;
%patch $1AE4C  [$456CW] #Score off&lt;br /&gt;
%patch $1AEF2  [$4610W] #2-button on&lt;br /&gt;
%patch $1AEF7  [$4629W] #2-button off&lt;br /&gt;
%patch $1AE3C  [$457EW] #Press any- Scorebox change&lt;br /&gt;
%patch $1AE75  [$45BFW] #Press any- jerk change&lt;br /&gt;
%patch $1AEAE  [$4602W] #Press any- SVGA change&lt;br /&gt;
%patch $1AEE7  [$4643W] #Press any- 2-Button change&lt;br /&gt;
&lt;br /&gt;
#Change texts&lt;br /&gt;
%patch $3528B &amp;quot;Score box now on&amp;quot; $00&lt;br /&gt;
%patch $3529C &amp;quot;Score box now off&amp;quot; $00&lt;br /&gt;
%patch $35340 &amp;quot;Two-button firing now on&amp;quot; $00&lt;br /&gt;
%patch $35359 &amp;quot;Two-button firing now off&amp;quot; $00&lt;br /&gt;
%patch $352AE &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $352EF &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $35332 &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $35373 &amp;quot;Press any key&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Movement setup menu ===&lt;br /&gt;
&lt;br /&gt;
This menu allows the player to change which keyboard keys move Keen in various directions. It has eight options all of type 1, one for each movement direction. Each option has its own text. The menu itself uses the &#039;MOVEMENT SETUP&#039; bitmap.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Movement setup menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FBB2 $0000W $0000W $0060W $0000W $0000W $1FB1RW $1A890C0ERL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FB10 $0001W $0000W $0000W $481CW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB22 $0001W $0000W $0000W $4826W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB34 $0001W $0000W $0000W $4829W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB46 $0001W $0000W $0000W $4834W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB58 $0001W $0000W $0000W $483AW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB6A $0001W $0000W $0000W $4847W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB7C $0001W $0000W $0000W $484CW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FB8E $0001W $0000W $0000W $4858W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $3368C &amp;quot;UP &amp;amp; LEFT&amp;quot; $00&lt;br /&gt;
%patch $33696 &amp;quot;UP&amp;quot; $00&lt;br /&gt;
%patch $33699 &amp;quot;UP &amp;amp; RIGHT&amp;quot; $00&lt;br /&gt;
%patch $336A4 &amp;quot;RIGHT&amp;quot; $00&lt;br /&gt;
%patch $336AA &amp;quot;DOWN &amp;amp; RIGHT&amp;quot; $00&lt;br /&gt;
%patch $336B7 &amp;quot;DOWN&amp;quot; $00&lt;br /&gt;
%patch $336BC &amp;quot;DOWN &amp;amp; LEFT&amp;quot; $00&lt;br /&gt;
%patch $336C8 &amp;quot;LEFT&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Movement setup menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $20A42 $0000W $0000W $004BW $0000W $0000W $209ARW $1B830C0CRL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $209A0 $0001W $0000W $0000W $3E21W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $209B2 $0001W $0000W $0000W $3E2BW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $209C4 $0001W $0000W $0000W $3E2EW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $209D6 $0001W $0000W $0000W $3E33W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $209E8 $0001W $0000W $0000W $3E39W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $209FA $0001W $0000W $0000W $3E46W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20A0C $0001W $0000W $0000W $3E4BW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20A1E $0001W $0000W $0000W $3E26W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34161 &amp;quot;UP &amp;amp; LEFT&amp;quot; $00&lt;br /&gt;
%patch $3416B &amp;quot;UP&amp;quot; $00&lt;br /&gt;
%patch $3416E &amp;quot;UP &amp;amp; RIGHT&amp;quot; $00&lt;br /&gt;
%patch $34173 &amp;quot;RIGHT&amp;quot; $00&lt;br /&gt;
%patch $34179 &amp;quot;DOWN &amp;amp; RIGHT&amp;quot; $00&lt;br /&gt;
%patch $34186 &amp;quot;DOWN&amp;quot; $00&lt;br /&gt;
%patch $3418B &amp;quot;DOWN &amp;amp; LEFT&amp;quot; $00&lt;br /&gt;
%patch $34166 &amp;quot;LEFT&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Movement setup menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FA12 $0000W $0000W $0013W $0000W $0000W $1F97RW $1A500C0ERL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1F970 $0001W $0000W $0000W $4296W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F982 $0001W $0000W $0000W $42A0W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F994 $0001W $0000W $0000W $42A3W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9A6 $0001W $0000W $0000W $42AEW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9B8 $0001W $0000W $0000W $42B4W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9CA $0001W $0000W $0000W $42C1W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9DC $0001W $0000W $0000W $42C6W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1F9EE $0001W $0000W $0000W $42D2W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34FC6 &amp;quot;UP &amp;amp; LEFT&amp;quot; $00&lt;br /&gt;
%patch $34FD0 &amp;quot;UP&amp;quot; $00&lt;br /&gt;
%patch $34FD3 &amp;quot;UP &amp;amp; RIGHT&amp;quot; $00&lt;br /&gt;
%patch $34FDE &amp;quot;RIGHT&amp;quot; $00&lt;br /&gt;
%patch $34FE4 &amp;quot;DOWN &amp;amp; RIGHT&amp;quot; $00&lt;br /&gt;
%patch $34FF1 &amp;quot;DOWN&amp;quot; $00&lt;br /&gt;
%patch $34FF6 &amp;quot;DOWN &amp;amp; LEFT&amp;quot; $00&lt;br /&gt;
%patch $35002 &amp;quot;LEFT&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Button setup menu ===&lt;br /&gt;
&lt;br /&gt;
This menu allows the player to change which keyboard keys make Keen jump, pogo and shoot. It has three options all of type 1, one for each action. Each option has its own text. The menu itself uses the &#039;BUTTON SETUP&#039; bitmap and uses the same code as the movement setup menu.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Button setup menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FC18 $0000W $0000W $0061W $0000W $0000W $1FBDRW $1A890C0ERL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FBD0 $0001W $0000W $0024W $485DW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FBE2 $0001W $0000W $0019W $4862W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FBF4 $0001W $0000W $0021W $4867W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $336CD &amp;quot;JUMP&amp;quot; $00&lt;br /&gt;
%patch $336D2 &amp;quot;POGO&amp;quot; $00&lt;br /&gt;
%patch $336D7 &amp;quot;FIRE&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Button setup menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $20AA8 $0000W $0000W $004CW $0000W $0000W $20A6RW $1B830C0CRL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20A60 $0001W $0000W $0024W $3E57W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20A72 $0001W $0000W $0019W $3E5CW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $20A84 $0001W $0000W $0021W $3E61W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $34197 &amp;quot;JUMP&amp;quot; $00&lt;br /&gt;
%patch $3419C &amp;quot;POGO&amp;quot; $00&lt;br /&gt;
%patch $341A1 &amp;quot;FIRE&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Button setup menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FA78 $0000W $0000W $0014W $0000W $0000W $1FA3RW $1A500C0ERL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FA30 $0001W $0000W $0024W $42D7W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FA42 $0001W $0000W $0019W $42DCW $0000W $00000000L  $0000W $0000W&lt;br /&gt;
%patch $1FA54 $0001W $0000W $0021W $42E1W $0000W $00000000L  $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $35007 &amp;quot;JUMP&amp;quot; $00&lt;br /&gt;
%patch $3500C &amp;quot;POGO&amp;quot; $00&lt;br /&gt;
%patch $35011 &amp;quot;FIRE&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keyboard\Joystick\Gravis menus ===&lt;br /&gt;
&lt;br /&gt;
This menu consists of two different parts. The first menu lets the player pick between the movement and button setup menus. It has two type 3options each with their own text and code to run when selected. The menu itself uses the &#039;KEYBOARD MENU&#039; bitmap.&lt;br /&gt;
&lt;br /&gt;
The second, third and fourth menus switch control to Joystick 1, Joystick 2 and the Gravis Gamepad respectively. They do not change the screen or menu and instead are called by the Configure menu, run some code then return control to the Configure menu. As such they are not quite separate menus. It can be seen that they have no options but do have their own bitmap to display.&lt;br /&gt;
&lt;br /&gt;
The two options themselves call two menus the movement and button configuration menus.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Keyboard\Joystick\Gravis menus ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1FC66 $0008W $0000W $005FW $0000W $0000W $1FC3RW $1A890BF1RL  $0000W $0000W $0000W #Keyboard&lt;br /&gt;
%patch $1FC7C $0000W $0000W $0062W $0000W $0000W $0000W  $1A891075RL  $0000W $0000W $0000W #Joystick 1&lt;br /&gt;
%patch $1FC92 $0000W $0000W $0062W $0000W $0000W $0000W  $1A8910B1RL  $0000W $0000W $0000W #Joystick 2&lt;br /&gt;
%patch $1FCA8 $0000W $0000W $0062W $0000W $0000W $0000W  $1A8912C8RL  $0000W $0000W $0000W #Gravis Gamepad&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FC30 $0003W $0000W $0032W $486CW $0000W $1FB100A2RL $0000W $0000W #Movement (Calls movement menu)&lt;br /&gt;
%patch $1FC42 $0003W $0000W $0030W $4875W $0000W $1FBD0048RL $0000W $0000W #Buttons (Calls button menu)&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $336DC &amp;quot;MOVEMENT&amp;quot; $00&lt;br /&gt;
%patch $336E5 &amp;quot;BUTTONS&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Keyboard\Joystick\Gravis menus ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $20AF6 $0008W $0000W $004AW $0000W $0000W $20ACRW $1B830BEFRL  $0000W $0000W $0000W #Keyboard&lt;br /&gt;
%patch $20B0C $0000W $0000W $004DW $0000W $0000W $0000W  $1B831073RL  $0000W $0000W $0000W #Joystick 1&lt;br /&gt;
%patch $20B22 $0000W $0000W $004DW $0000W $0000W $0000W  $1B8310AFRL  $0000W $0000W $0000W #Joystick 2&lt;br /&gt;
%patch $20B38 $0000W $0000W $004DW $0000W $0000W $0000W  $1B8312C6RL  $0000W $0000W $0000W #Gravis Gamepad&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20AC0 $0003W $0000W $0032W $3E66W $0000W $209A00A2RL $0000W $0000W #Movement (Calls movement menu)&lt;br /&gt;
%patch $20AD2 $0003W $0000W $0030W $3E6FW $0000W $20A60048RL $0000W $0000W #Buttons (Calls button menu)&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $341A6 &amp;quot;MOVEMENT&amp;quot; $00&lt;br /&gt;
%patch $341AF &amp;quot;BUTTONS&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Keyboard\Joystick\Gravis menus ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1FAC6 $0008W $0000W $0012W $0000W $0000W $1FA9RW $1A500BF1RL  $0000W $0000W $0000W #Keyboard&lt;br /&gt;
%patch $1FADC $0000W $0000W $0015W $0000W $0000W $0000W  $1A501075RL  $0000W $0000W $0000W #Joystick 1&lt;br /&gt;
%patch $1FAF2 $0000W $0000W $0015W $0000W $0000W $0000W  $1A5010B1RL  $0000W $0000W $0000W #Joystick 2&lt;br /&gt;
%patch $1FB08 $0000W $0000W $0015W $0000W $0000W $0000W  $1A5012C8RL  $0000W $0000W $0000W #Gravis Gamepad&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FA90 $0003W $0000W $0032W $42E6W $0000W $1F9700A2RL $0000W $0000W #Movement (Calls movement menu)&lt;br /&gt;
%patch $1FAA2 $0003W $0000W $0030W $42EFW $0000W $1FA30048RL $0000W $0000W #Buttons (Calls button menu)&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $35016 &amp;quot;MOVEMENT&amp;quot; $00&lt;br /&gt;
%patch $3501F &amp;quot;BUTTONS&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Configuration options|Configure menu]] ===&lt;br /&gt;
&lt;br /&gt;
This menu lets the player pick between the configuration menus. It is as such the most central menu. It has seven type 3 options, each with its own text. (Except that last which points to blank text.) The menu itself uses the &#039;CONFIGURATION MENU&#039; bitmap.&lt;br /&gt;
&lt;br /&gt;
Each option calls its own code, usually another menu. The last three options call a menu that doesn&#039;t change the screen and keeps the player in the options menu.&lt;br /&gt;
&lt;br /&gt;
Notice the last option has no text. This is because its text must change depending on whether or not the Gravis Gamepad is active. The fourth option (&#039;keyboard&#039;) has a second variable value of 8, which moves the next line down 8 pixels, creating a space between the first four and last three options.&lt;br /&gt;
&lt;br /&gt;
Patches relating to how the menu&#039;s code works (What variables it can alter, how it behaves when an option is selected.) are covered under [[Patch:Configuration options]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Configure menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1FD50 $0000W $0000W $005CW $0000W $0000W $1FCCRW $1A890A0ARL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FCC0 $0003W $0000W $001FW $487DW $0000W $1F87005ARL $0000W $0000W #Sound (Call Sound menu)&lt;br /&gt;
%patch $1FCD2 $0003W $0000W $0032W $4883W $0000W $1F8E0036RL $0000W $0000W #Music (Call music menu)&lt;br /&gt;
%patch $1FCE4 $0003W $0000W $0018W $4889W $0000W $1FAA005ARL $0000W $0000W #Options (Call main options menu)&lt;br /&gt;
%patch $1FCF6 $0003W $0008W $0025W $4891W $0000W $1FC30036RL $0000W $0000W #Keyboard (Call keyboard menu)&lt;br /&gt;
%patch $1FD08 $0003W $0000W $0002W $489EW $0000W $1FC3004CRL $0000W $0000W #Joystick 1 (Call Joy 1 menu)&lt;br /&gt;
%patch $1FD1A $0003W $0000W $0003W $48AEW $0000W $1FC30062RL $0000W $0000W #Joystick 2 (Call Joy 2 menu)&lt;br /&gt;
%patch $1FD2C $0003W $0000W $0022W $48BEW $0000W $1FC30078RL $0000W $0000W #Gravis (Call Gravis menu)&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $336ED &amp;quot;SOUND&amp;quot; $00&lt;br /&gt;
%patch $336F3 &amp;quot;MUSIC&amp;quot; $00&lt;br /&gt;
%patch $336F9 &amp;quot;OPTIONS&amp;quot; $00&lt;br /&gt;
%patch $33701 &amp;quot;USE KEYBOARD&amp;quot; $00&lt;br /&gt;
%patch $3370E &amp;quot;USE JOYSTICK #1&amp;quot; $00&lt;br /&gt;
%patch $3371E &amp;quot;USE JOYSTICK #2&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Other texts&lt;br /&gt;
%patch $33920 &amp;quot;USE GRAVIS GAMEPAD (ON)&amp;quot; $00&lt;br /&gt;
              &amp;quot;USE GRAVIS GAMEPAD (OFF)&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Configure menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $20BE0 $0000W $0000W $0047W $0000W $0000W $20B5RW $1B830A08RL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20B50 $0003W $0000W $001FW $3E77W $0000W $2070005ARL $0000W $0000W #Sound (Call Sound menu)&lt;br /&gt;
%patch $20B62 $0003W $0000W $0032W $3DE9W $0000W $20770036RL $0000W $0000W #Music (Call music menu)&lt;br /&gt;
%patch $20B74 $0003W $0000W $0018W $3E7DW $0000W $2093005ARL $0000W $0000W #Options (Call main options menu)&lt;br /&gt;
%patch $20B86 $0003W $0008W $0025W $3E85W $0000W $20AC0036RL $0000W $0000W #Keyboard (Call keyboard menu)&lt;br /&gt;
%patch $20B98 $0003W $0000W $0002W $3E92W $0000W $20AC004CRL $0000W $0000W #Joystick 1 (Call Joy 1 menu)&lt;br /&gt;
%patch $20BAA $0003W $0000W $0003W $3EA2W $0000W $20AC0062RL $0000W $0000W #Joystick 2 (Call Joy 2 menu)&lt;br /&gt;
%patch $20BBC $0003W $0000W $0022W $3D9DW $0000W $20AC0078RL $0000W $0000W #Gravis (Call Gravis menu)&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $341B7 &amp;quot;SOUND&amp;quot; $00&lt;br /&gt;
%patch $34129 &amp;quot;MUSIC&amp;quot; $00&lt;br /&gt;
%patch $341BD &amp;quot;OPTIONS&amp;quot; $00&lt;br /&gt;
%patch $341C5 &amp;quot;USE KEYBOARD&amp;quot; $00&lt;br /&gt;
%patch $341D2 &amp;quot;USE JOYSTICK #1&amp;quot; $00&lt;br /&gt;
%patch $341E2 &amp;quot;USE JOYSTICK #2&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Other texts called from&lt;br /&gt;
%patch $1C142 $4090W #Gravis on&lt;br /&gt;
%patch $1C147 $40A8W #Gravis off&lt;br /&gt;
&lt;br /&gt;
#Other texts&lt;br /&gt;
%patch $343D0 &amp;quot;USE GRAVIS GAMEPAD (ON)&amp;quot; $00&lt;br /&gt;
%patch $343E8 &amp;quot;USE GRAVIS GAMEPAD (OFF)&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Configure menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setups&lt;br /&gt;
%patch $1FBB0 $0000W $0000W $000FW $0000W $0000W $1FB2RW $1A500A0ARL  $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FB20 $0003W $0000W $001FW $42F7W $0000W $1F6D005ARL $0000W $0000W #Sound (Call Sound menu)&lt;br /&gt;
%patch $1FB32 $0003W $0000W $0032W $42FDW $0000W $1F740036RL $0000W $0000W #Music (Call music menu)&lt;br /&gt;
%patch $1FB44 $0003W $0000W $0018W $4303W $0000W $1F90005ARL $0000W $0000W #Options (Call main options menu)&lt;br /&gt;
%patch $1FB56 $0003W $0008W $0025W $430BW $0000W $1FA90036RL $0000W $0000W #Keyboard (Call keyboard menu)&lt;br /&gt;
%patch $1FB68 $0003W $0000W $0002W $4318W $0000W $1FA9004CRL $0000W $0000W #Joystick 1 (Call Joy 1 menu)&lt;br /&gt;
%patch $1FB7A $0003W $0000W $0003W $4328W $0000W $1FA90062RL $0000W $0000W #Joystick 2 (Call Joy 2 menu)&lt;br /&gt;
%patch $1FB8C $0003W $0000W $0022W $4338W $0000W $1FA90078RL $0000W $0000W #Gravis (Call Gravis menu)&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $35027 &amp;quot;SOUND&amp;quot; $00&lt;br /&gt;
%patch $3502D &amp;quot;MUSIC&amp;quot; $00&lt;br /&gt;
%patch $35033 &amp;quot;OPTIONS&amp;quot; $00&lt;br /&gt;
%patch $3503B &amp;quot;USE KEYBOARD&amp;quot; $00&lt;br /&gt;
%patch $35048 &amp;quot;USE JOYSTICK #1&amp;quot; $00&lt;br /&gt;
%patch $35058 &amp;quot;USE JOYSTICK #2&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Other texts&lt;br /&gt;
%patch $3525A &amp;quot;USE GRAVIS GAMEPAD (ON)&amp;quot; $00&lt;br /&gt;
              &amp;quot;USE GRAVIS GAMEPAD (OFF)&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Main menu ===&lt;br /&gt;
&lt;br /&gt;
This menu is the most central menu of the game, the one that first appears when the player leaves the title screen or presses &#039;Esc&#039; during gameplay. It leads to all other menus.&lt;br /&gt;
&lt;br /&gt;
It has only one menu setup using the &#039;MAIN MENU&#039; bitmap. Text is 20 pixels right and 4 pixels down from the top left of the Computerwrist screen.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Main menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FE22 $0020W $0004W $0058W $0000W $0000W $1FD8RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FD80 $0003W $0000W $0031W $48BFW $0000W $1F930048RL $0000W $0000W #New game (Call New game menu)&lt;br /&gt;
%patch $1FD92 $0003W $0000W $0026W $48C8W $0000W $1F99007ERL $0000W $0000W #Load game (Call load game menu)&lt;br /&gt;
%patch $1FDA4 $0003W $0000W $001FW $48D2W $0000W $1F990094RL $0000W $0000W #Save game (Call save game menu)&lt;br /&gt;
%patch $1FDB6 $0003W $0000W $002EW $48DCW $0000W $1FCC0090RL $0000W $0000W #Configure (Call configure menu)&lt;br /&gt;
%patch $1FDC8 $0001W $0000W $0013W $0000W $0001W $00000000L  $0000W $0000W #Return&lt;br /&gt;
%patch $1FDDA $0001W $0000W $0012W $48E6W $0002W $00000000L  $0000W $0000W #End game&lt;br /&gt;
%patch $1FDEC $0003W $0000W $0019W $48EFW $0000W $1FCC00A6RL $0000W $0000W #Paddle war (Call Paddle menu)&lt;br /&gt;
%patch $1FDFE $0001W $0000W $0010W $48FAW $0003W $00000000L  $0000W $0000W #Quit&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $3372F &amp;quot;NEW GAME&amp;quot; $00&lt;br /&gt;
%patch $33738 &amp;quot;LOAD GAME&amp;quot; $00&lt;br /&gt;
%patch $33742 &amp;quot;SAVE GAME&amp;quot; $00&lt;br /&gt;
%patch $3374C &amp;quot;CONFIGURE&amp;quot; $00&lt;br /&gt;
%patch $33CCA &amp;quot;RETURN TO GAME&amp;quot; $00&lt;br /&gt;
%patch $33CD9 &amp;quot;RETURN TO DEMO&amp;quot; $00&lt;br /&gt;
%patch $33756 &amp;quot;END GAME&amp;quot; $00&lt;br /&gt;
%patch $3375F &amp;quot;PADDLE WAR&amp;quot; $00&lt;br /&gt;
%patch $3376A &amp;quot;QUIT&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Main menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $20CB2 $0020W $0004W $0043W $0000W $0000W $20C1RW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $20C10 $0003W $0000W $0031W $3EB2W $0000W $207C0048RL $0000W $0000W #New game (Call New game menu)&lt;br /&gt;
%patch $20C22 $0003W $0000W $0026W $3EBBW $0000W $2082007ERL $0000W $0000W #Load game (Call load game menu)&lt;br /&gt;
%patch $20C34 $0003W $0000W $001FW $3EC5W $0000W $20820094RL $0000W $0000W #Save game (Call save game menu)&lt;br /&gt;
%patch $20C46 $0003W $0000W $002EW $3ECFW $0000W $20B50090RL $0000W $0000W #Configure (Call configure menu)&lt;br /&gt;
%patch $20C58 $0001W $0000W $0013W $0000W $0001W $00000000L  $0000W $0000W #Return&lt;br /&gt;
%patch $20C6A $0001W $0000W $0012W $3ED9W $0002W $00000000L  $0000W $0000W #End game&lt;br /&gt;
%patch $20C7C $0003W $0000W $0019W $3EE2W $0000W $20B500A6RL $0000W $0000W #Paddle war (Call Paddle menu)&lt;br /&gt;
%patch $20C8E $0001W $0000W $0010W $3EEDW $0003W $00000000L  $0000W $0000W #Quit&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $341F2 &amp;quot;NEW GAME&amp;quot; $00&lt;br /&gt;
%patch $341FB &amp;quot;LOAD GAME&amp;quot; $00&lt;br /&gt;
%patch $34205 &amp;quot;SAVE GAME&amp;quot; $00&lt;br /&gt;
%patch $3420F &amp;quot;CONFIGURE&amp;quot; $00&lt;br /&gt;
%patch $3469A &amp;quot;RETURN TO GAME&amp;quot; $00&lt;br /&gt;
%patch $346A9 &amp;quot;RETURN TO DEMO&amp;quot; $00&lt;br /&gt;
%patch $34219 &amp;quot;END GAME&amp;quot; $00&lt;br /&gt;
%patch $34222 &amp;quot;PADDLE WAR&amp;quot; $00&lt;br /&gt;
%patch $3422D &amp;quot;QUIT&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Main menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FC82 $0020W $0004W $000BW $0000W $0000W $1FBERW $00000000L   $0000W $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Menu options&lt;br /&gt;
%patch $1FBE0 $0003W $0000W $0031W $4339W $0000W $1F790048RL $0000W $0000W #New game (Call New game menu)&lt;br /&gt;
%patch $1FBF2 $0003W $0000W $0026W $4342W $0000W $1F7F007ERL $0000W $0000W #Load game (Call load game menu)&lt;br /&gt;
%patch $1FC04 $0003W $0000W $001FW $434CW $0000W $1F7F0094RL $0000W $0000W #Save game (Call save game menu)&lt;br /&gt;
%patch $1FC16 $0003W $0000W $002EW $4356W $0000W $1FB20090RL $0000W $0000W #Configure (Call configure menu)&lt;br /&gt;
%patch $1FC28 $0001W $0000W $0013W $0000W $0001W $00000000L  $0000W $0000W #Return&lt;br /&gt;
%patch $1FC3A $0001W $0000W $0012W $4360W $0002W $00000000L  $0000W $0000W #End game&lt;br /&gt;
%patch $1FC4C $0003W $0000W $0019W $4369W $0000W $1FB200A6RL $0000W $0000W #Paddle war (Call Paddle menu)&lt;br /&gt;
%patch $1FC5E $0001W $0000W $0010W $4374W $0003W $00000000L  $0000W $0000W #Quit&lt;br /&gt;
&lt;br /&gt;
#Menu texts&lt;br /&gt;
%patch $35069 &amp;quot;NEW GAME&amp;quot; $00&lt;br /&gt;
%patch $35072 &amp;quot;LOAD GAME&amp;quot; $00&lt;br /&gt;
%patch $3507C &amp;quot;SAVE GAME&amp;quot; $00&lt;br /&gt;
%patch $35086 &amp;quot;CONFIGURE&amp;quot; $00&lt;br /&gt;
%patch $35604 &amp;quot;RETURN TO GAME&amp;quot; $00&lt;br /&gt;
%patch $35613 &amp;quot;RETURN TO DEMO&amp;quot; $00&lt;br /&gt;
%patch $35090 &amp;quot;END GAME&amp;quot; $00&lt;br /&gt;
%patch $35099 &amp;quot;PADDLE WAR&amp;quot; $00&lt;br /&gt;
%patch $350A4 &amp;quot;QUIT&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Other texts&lt;br /&gt;
%patch $35604 &amp;quot;RETURN TO GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;RETURN TO DEMO&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Paddle war menu ===&lt;br /&gt;
&lt;br /&gt;
This menu is called by the Main menu when the player selects the &#039;Paddle war&#039; option. It runs the Paddle war code. It has no options or text or bitmaps to display as that is handled by the Paddle war code.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 Paddle War menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FD66 $0000W $0000W $0000W $0000W $0000W $0000W  $1A891E34RL  $0000W $0000W $0000W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 Paddle War menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $20BF6 $0000W $0000W $0000W $0000W $0000W $0000W  $1B831E32RL  $0000W $0000W $0000W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Paddle War menu ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Menu setup&lt;br /&gt;
%patch $1FBC6 $0000W $0000W $0000W $0000W $0000W $0000W  $1A501E34RL  $0000W $0000W $0000W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Menu loading text ===&lt;br /&gt;
&lt;br /&gt;
This text appears when the menu is loading; either after a demo loop entry or when the player loads the menu from a current game. The text is replaced by the menu once it loads.&lt;br /&gt;
&lt;br /&gt;
=== Menu loading text ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $1CC37  [$4E78W] #Text called from&lt;br /&gt;
%patch $33CE8 &amp;quot;Control Panel&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $1DBD4  [$4378W] #Text called from&lt;br /&gt;
%patch $346B8 &amp;quot;Control Panel&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $1C8A6  [$48F2W] #Text called from&lt;br /&gt;
%patch $35622 &amp;quot;Control Panel&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other menu related texts ===&lt;br /&gt;
&lt;br /&gt;
These are strings of text used in the various menus that are not currently patchable using the above listed menu patches. More complete patches can be found on other pages such as [[Patch:Quit Windows]].&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Text&lt;br /&gt;
%patch $33792 &amp;quot;ESC TO BACK OUT&amp;quot; $00&lt;br /&gt;
%patch $337A2 &amp;quot;REALLY END CURRENT GAME?&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO END IT&amp;quot; $00&lt;br /&gt;
%patch $337CD &amp;quot;REALLY QUIT?&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO QUIT&amp;quot; $00&lt;br /&gt;
%patch $337EA &amp;quot;YOU&#039;RE IN A GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO LOAD GAME&amp;quot; $00&lt;br /&gt;
%patch $33810 &amp;quot;YOU&#039;RE IN A GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y FOR NEW GAME&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Options menu&lt;br /&gt;
%patch $33951 &amp;quot;Score box now on&amp;quot; $00&lt;br /&gt;
              &amp;quot;Score box now off&amp;quot; $00&lt;br /&gt;
              &amp;quot;Press any key&amp;quot; $00&lt;br /&gt;
%patch $33CCA &amp;quot;RETURN TO GAME&amp;quot; $00 &lt;br /&gt;
              &amp;quot;RETURN TO DEMO&amp;quot; $00&lt;br /&gt;
%patch $33D11 &amp;quot;Quitting...&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Text&lt;br /&gt;
%patch $34253 &amp;quot;ESC TO BACK OUT&amp;quot; $00&lt;br /&gt;
%patch $34263 &amp;quot;REALLY END CURRENT GAME?&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO END IT&amp;quot; $00&lt;br /&gt;
%patch $3428E &amp;quot;REALLY QUIT?&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO QUIT&amp;quot; $00&lt;br /&gt;
%patch $342AB &amp;quot;YOU&#039;RE IN A GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO LOAD GAME&amp;quot; $00&lt;br /&gt;
%patch $342D1 &amp;quot;PRESS Y FOR NEW GAME&amp;quot; $00&lt;br /&gt;
%patch $3469A &amp;quot;RETURN TO GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;RETURN TO DEMO&amp;quot; $00&lt;br /&gt;
%patch $346E1 &amp;quot;Quitting...&amp;quot; $00 &lt;br /&gt;
&lt;br /&gt;
#Options menu text:&lt;br /&gt;
%patch $34401 &amp;quot;Score box now on&amp;quot; $00&lt;br /&gt;
              &amp;quot;Score box now off&amp;quot; $00&lt;br /&gt;
              &amp;quot;Press any key&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Text&lt;br /&gt;
%patch $350CC &amp;quot;ESC TO BACK OUT&amp;quot; $00&lt;br /&gt;
%patch $350DC &amp;quot;REALLY END CURRENT GAME?&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO END IT&amp;quot; $00&lt;br /&gt;
%patch $35107 &amp;quot;REALLY QUIT?&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO QUIT&amp;quot; $00&lt;br /&gt;
%patch $35124 &amp;quot;YOU&#039;RE IN A GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y TO LOAD GAME&amp;quot; $00&lt;br /&gt;
%patch $3514A &amp;quot;YOU&#039;RE IN A GAME&amp;quot; $00&lt;br /&gt;
              &amp;quot;PRESS Y FOR NEW GAME&amp;quot; $00&lt;br /&gt;
%patch $3564B &amp;quot;Quitting...&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Options menu&lt;br /&gt;
%patch $3528B &amp;quot;Score box now on&amp;quot; $00&lt;br /&gt;
              &amp;quot;Score box now off&amp;quot; $00&lt;br /&gt;
              &amp;quot;Press any key&amp;quot; $00&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bars ==&lt;br /&gt;
&lt;br /&gt;
The bars are horizontal lines of color that separate various sections of the menu. The Main menu has two, a top and bottom bar. All bars have four variables of interest. The first is the bar&#039;s color, the second how far down the screen it appears and the last two are the left and right ends of the bar. There is also a patch to remove the bars entirely. (Or their vertical position can be set to 0.)&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Top menu bar&lt;br /&gt;
%patch $1AB14 [$000AW] #Color&lt;br /&gt;
%patch $1AB18 [$0085W] #Vertical position&lt;br /&gt;
%patch $1AB1C [$00E7W] #Right end&lt;br /&gt;
%patch $1AB20 [$004DW] #Left start&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show top bar&lt;br /&gt;
%patch $1AB13 $EB $16&lt;br /&gt;
&lt;br /&gt;
#Bottom menu bar&lt;br /&gt;
%patch $1AAC1 [$000AW] #Color&lt;br /&gt;
%patch $1AAC5 [$0085W] #Vertical position&lt;br /&gt;
%patch $1AAC9 [$00E7W] #Right end&lt;br /&gt;
%patch $1AACD [$004DW] #Left start&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show bottom bar&lt;br /&gt;
%patch $1AAC0 $8B $E5 $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Top menu bar&lt;br /&gt;
%patch $1BAB2 [$000AW] #Color&lt;br /&gt;
%patch $1BAB6 [$0085W] #Vertical position&lt;br /&gt;
%patch $1BABA [$00E7W] #Right end&lt;br /&gt;
%patch $1BABE [$004DW] #Left start&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show top bar&lt;br /&gt;
%patch $1BAB1 $EB $16&lt;br /&gt;
&lt;br /&gt;
#Bottom menu bar&lt;br /&gt;
%patch $1BA5F [$000AW] #Color&lt;br /&gt;
%patch $1BA63 [$0085W] #Vertical position&lt;br /&gt;
%patch $1BA67 [$00E7W] #Right end&lt;br /&gt;
%patch $1BA6B [$004DW] #Left start&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show bottom bar&lt;br /&gt;
%patch $1BA5E $8B $E5 $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Top menu bar&lt;br /&gt;
%patch $1A784 [$000AW] #Color&lt;br /&gt;
%patch $1A788 [$0085W] #Vertical position&lt;br /&gt;
%patch $1A78C [$00E7W] #Right end&lt;br /&gt;
%patch $1A790 [$004DW] #Left start&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show top bar&lt;br /&gt;
%patch $1A783 $EB $16&lt;br /&gt;
&lt;br /&gt;
#Bottom menu bar&lt;br /&gt;
%patch $1A731 [$000AW] #Color&lt;br /&gt;
%patch $1A735 [$0085W] #Vertical position&lt;br /&gt;
%patch $1A739 [$00E7W] #Right end&lt;br /&gt;
%patch $1A73D [$004DW] #Left start&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show bottom bar&lt;br /&gt;
%patch $1A730 $8B $E5 $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
&lt;br /&gt;
There are numerous functions that set watch text and background colors, allowing you to have different colors in different parts of the watch.  The following patch is appended with numerous notes which are invaluable for understanding what each section of the patch does.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main Menu&lt;br /&gt;
%patch $1A9C6 $B0 [$08] $50 #Background 1 (Dark grey)&lt;br /&gt;
              $B0 [$08] $50 #Background 2 (Should match back 1)&lt;br /&gt;
              $B0 [$9F] $50 #Width of background box&lt;br /&gt;
%patch $1AA06 [$02]         #Selected text color (Light green)*&lt;br /&gt;
%patch $1AA0D [$0A]         #Unselected text color (Dark green)*&lt;br /&gt;
%patch $1AA33 [$0F]         #Unknown text color (Light grey)*&lt;br /&gt;
%patch $1AB14 [$0A]         #Top line color (Light green)&lt;br /&gt;
%patch $1AAC1 [$0A]         #Bottom line color (Light green)&lt;br /&gt;
%patch $1AA40 [$0A]         #Menu bottom text color (Dark green)*&lt;br /&gt;
%patch $1AABF [$00]         #Unknown menu bottom text color (Black)*&lt;br /&gt;
&lt;br /&gt;
#Menu message box&lt;br /&gt;
%patch $1AC75 [$0A] #Top of box (Light green)&lt;br /&gt;
%patch $1AC90 [$0A] #Bottom of box (Light green)&lt;br /&gt;
%patch $1ACAE [$0A] #Left side of box (Light green)&lt;br /&gt;
%patch $1ACC9 [$0A] #Right side of box (Light green)&lt;br /&gt;
%patch $1AC5B [$08] #Background color (Dark grey)&lt;br /&gt;
%patch $1AE6C [$02] #Top text (Light green)*&lt;br /&gt;
%patch $1AEA3 [$0A] #Bar in the middle (Light green)&lt;br /&gt;
%patch $1AEC8 [$0A] #Bottom text (Dark green)*&lt;br /&gt;
&lt;br /&gt;
#Configure menu&lt;br /&gt;
%patch $1B2F6 [$0A] #Control text&lt;br /&gt;
&lt;br /&gt;
#Change keyboard keys menu&lt;br /&gt;
%patch $1B50E $B0 [$08] $50 #Background 1 (Dark grey)&lt;br /&gt;
              $B0 [$08] $50 #Background 2 (Should match back 1)&lt;br /&gt;
              $B0 [$9F] $50 #Width of background (Should match main menu width above)&lt;br /&gt;
%patch $1B543 [$02]         #Selected text (Light green)*&lt;br /&gt;
%patch $1B547 [$0A]         #Unselected text (Dark green)*&lt;br /&gt;
%patch $1B572 [$08]         #Normal box color (XOR)&lt;br /&gt;
%patch $1B595 [$08]         #Normal box background&lt;br /&gt;
%patch $1B33B [$02]         #Changing key box color 1 (Dark green)&lt;br /&gt;
%patch $1B35E [$08]         #Changing key box color 2 (Dark grey, XOR)&lt;br /&gt;
%patch $1B381 [$08]         #Changing key box background&lt;br /&gt;
&lt;br /&gt;
#Change joystick buttons menu&lt;br /&gt;
%patch $1B64F [$08] #Background color&lt;br /&gt;
%patch $1B670 [$02] #Text color (Light green)*&lt;br /&gt;
&lt;br /&gt;
#Change gamepad button menu&lt;br /&gt;
%patch $1B987 [$08] #Background color&lt;br /&gt;
%patch $1BB9C [$02] #Text color (Light green)*&lt;br /&gt;
&lt;br /&gt;
#Save\load game menu&lt;br /&gt;
%patch $1BC73 [$02] #Selected text and box&lt;br /&gt;
%patch $1BC77 [$0A] #Unselected text and box&lt;br /&gt;
%patch $1BC7E [$08] #Text color modifier&lt;br /&gt;
%patch $1BEA7 [$08] #Box background color&lt;br /&gt;
%patch $1BFAF [$02] #Saving game text color&lt;br /&gt;
%patch $1BFB1 [$08] #Saving game background color&lt;br /&gt;
&lt;br /&gt;
#Load menu&lt;br /&gt;
%patch $1CC69 [$0F] #Unknown text color (Black)&lt;br /&gt;
%patch $1CD8E [$0F] #Loading menu text (Black)&amp;lt;/syntaxhighlight&amp;gt;                              &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== NOTES ===&lt;br /&gt;
&lt;br /&gt;
All values in the patches below are the default values. If you get confused it is a simple matter to replace all of one value with another value. (Say $0A with $0B)&lt;br /&gt;
&lt;br /&gt;
The colors of fonts are opposite those of other items. Thus $02 is dark green and $0A is light green for most menu components, but the exact opposite is true for fonts. Items that involve font colors are marked with an * so the patcher can be made aware of this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Things that can&#039;t be patched ====&lt;br /&gt;
&lt;br /&gt;
Two sorts of menu items cannot be patched, or rather cannot be changed by patching. these are the 8x8 tiles (Used for the menu cursor for example) and the menu graphics (For example the image that says &#039;MAIN MENU&#039; in the main menu.) These need to be altered with a graphics program to change their colors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Main Menu and general setup ====&lt;br /&gt;
&lt;br /&gt;
This is the menu the player is first presented with. It&#039;s graphic reads &#039;MAIN MENU&#039; and it lists all the other options and sub-menus the player can access.&lt;br /&gt;
&lt;br /&gt;
It consists of three parts, a top section, (Containing a single divider line and the menu graphic.) the middle section containing various options and a bottom section (Containing a divider and menu controls text.)&lt;br /&gt;
&lt;br /&gt;
The Main Menu setup is used by most of the sub-menus (Such as the configure menu) so patches here have the widest effects.&lt;br /&gt;
&lt;br /&gt;
The first thing that can be changed is the background. When the menu is drawn, first the menu graphic is drawn onscreen, then a box of a certain width and color is drawn over it. THEN the text is drawn over this. Changing the background color will also change the color of the font displayed on it, so be careful.&lt;br /&gt;
&lt;br /&gt;
By default the background is $08 or dark grey so as not to interfere with font color. In the patch above two values for this are given, both must match. It is not wise to change the width of the background box, for if the text is too large for it, much confusion results.&lt;br /&gt;
&lt;br /&gt;
It is also possible to change the color of the menu text. There are three main colors, selected, unselected and the text that appears at the bottom of the menu (Telling you to use the arrows to move and so on.) There are two less well known text colors, one light grey, one black. Finally the top and bottom divider line colors can be changed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Menu Message Box ====&lt;br /&gt;
&lt;br /&gt;
This box appears over the main menu, such as when the player selects the &#039;Quit&#039; option. It is made of a top, bottom, left and right line with a bar in the middle that separates the top and bottom texts. It also has a background color that works the same way as the main menu. Each of these item&#039;s color can be changed. (Notice this box can have different text in it depending on what it&#039;s being used for, but the colors will remain the same.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Configure menu ====&lt;br /&gt;
&lt;br /&gt;
This mostly uses the Main Menu&#039;s colors except for the text explaining what currently controls Keen (Keyboard or joystick.) this has its own color.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Change keys menu ====&lt;br /&gt;
&lt;br /&gt;
This is part of the configure menu and appears when the player wants to change what keys move Keen. It consists of two separate, but similar menus that consist of a list of actions paired with boxes showing what key controls that action.&lt;br /&gt;
&lt;br /&gt;
As a separate menu it has its own background color setup, identical to that of the main menu&#039;s. It is also possible to change the selected and unselected text colors as well as the border color and background color of the boxes that show the current control keys.&lt;br /&gt;
&lt;br /&gt;
Things get more complicated when a key is selected. The boxes containing the control key get their color from the selected and unselected text, plus a modifier. By default this modifier has no effect, but if it is patched, odd things can happen, so it is suggested that patchers be very careful when altering it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Joystick\gamepad menu ====&lt;br /&gt;
&lt;br /&gt;
These menus are much simpler than the keyboard menu, having only a background and text color.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Save\Load game menu ====&lt;br /&gt;
&lt;br /&gt;
This consists of a series of savegame positions, each a name enclosed in a box. The color of the box is controlled by the same variable that controls that of the text. The &#039;selected&#039; text color is the color of the selected game and also the color its box &#039;blinks&#039; The text color modifier affects text color by adding to it. It thus affects both the selected and unselected text colors. By default it is $08. There is no point in patching this. There is also a background color, as well as a text AND background color for when the player is typing a name for their saved game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Loading menu ====&lt;br /&gt;
&lt;br /&gt;
This applies to windows that appear when the menu is being loaded or closed. (Such as the &#039;Demo&#039; window when a demo is starting or &#039;Control panel&#039; when the menu appears.) All that can currently be patched is the text color in these windows. They are not really part of the main menu proper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu mask ==&lt;br /&gt;
&lt;br /&gt;
When certain actions are selected, such as the &#039;Quit&#039; option, the menu is masked to show its inacessibility. By default this uses a masked bitmap that is a checkerboard pattern of grey pixels, placed over the menu screen to half-erase the text. The bitmap can be changed, moved and even prevented from appearing entirely.&lt;br /&gt;
&lt;br /&gt;
=== Main Menu Mask ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 Main menu bitmap mask&lt;br /&gt;
%patch $1AC2D [$0079W] #Bitmap&lt;br /&gt;
%patch $1AC31 [$0030W] #Horizontal position&lt;br /&gt;
%patch $1AC35 [$004AW] #Vertical position&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t mask&lt;br /&gt;
%patch $1AC2C $EB $12&lt;br /&gt;
&lt;br /&gt;
#Keen 5 Main menu bitmap mask&lt;br /&gt;
%patch $1BBCB [$0063W] #Bitmap&lt;br /&gt;
%patch $1BBCF [$0030W] #Horizontal position&lt;br /&gt;
%patch $1BBD3 [$004AW] #Vertical position&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t mask&lt;br /&gt;
%patch $1BBCA $EB $12&lt;br /&gt;
&lt;br /&gt;
#Keen 6 Main menu bitmap mask&lt;br /&gt;
%patch $1A89D [$002BW] #Bitmap&lt;br /&gt;
%patch $1A8A1 [$0030W] #Horizontal position&lt;br /&gt;
%patch $1A8A5 [$004AW] #Vertical position&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t mask&lt;br /&gt;
%patch $1A89C $EB $12&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Main Menu Demo Loop ==&lt;br /&gt;
&lt;br /&gt;
The main menu [[Patch:Demo|demo loop]] is the sequence of events that plays out whenever the player selects &#039;Return to demo&#039; from the main menu. The default sequence is &#039;play demo 1, story screen, demo 2 [[Patch:High Scores|highscore demo]], demo 3, demo 4&#039; (Then the [[Patch:Terminator text|terminator text]] will display, resetting the cycle.&lt;br /&gt;
&lt;br /&gt;
To remove an item from the loop simply replace its &#039;$9A $xxxxxxxxRL&#039; string with &#039;$90 $90 $90 $90 $90&#039; Items can also be rearranged, though this takes a little more nuance. It is also possible to rearrange the order the demos play in by changing the numbers before the demo calls. (See section below on demo numbers\disabling demos.)&lt;br /&gt;
&lt;br /&gt;
=== Demo Loop ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4&lt;br /&gt;
%patch $3C2F $33 $C0 $50 {$9A $03ED1A31RL}     $83 $C4 $02 $EB $65 {$9A}         #Play demo 1&lt;br /&gt;
     {$03ED18B8RL}     $EB $5E $B8 [$0001W]  $50 {$9A $03ED1A31RL}     $83 $C4 $02 #Story screen\demo 2&lt;br /&gt;
             $EB $50 {$9A $03ED1D55RL}     $EB $49 $B8 [$0002W]  $50 {$9A}         #Highscores&lt;br /&gt;
     {$03ED1A31RL}     $83 $C4 $02 $EB $3B $33 $FF $B8 [$0003W]  $50 {$9A}         #Demo 3&lt;br /&gt;
     {$03ED1A31RL}     $83 $C4 $02                                             #Demo 4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Demo loop list ===&lt;br /&gt;
&lt;br /&gt;
This is the pointer list to all the items in the above code. By simply swapping various pointers around it is possible to change the order that various actions appear or replace one action with another. A novel option is to replace the terminator text with the [[Patch:Story Screen (Galaxy)|star wars story]]&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Main menu actions list&lt;br /&gt;
%patch $3CB9 {$0448W} #3C18: Terminator sequence and title screen&lt;br /&gt;
             {$045FW} #3C2F: Demo 1&lt;br /&gt;
             {$046CW} #3C3C: Star wars story&lt;br /&gt;
             {$0473W} #3C43: Demo 2&lt;br /&gt;
             {$0481W} #3C51: High score demo&lt;br /&gt;
             {$0488W} #3C58: Demo 3&lt;br /&gt;
             {$0496W} #3C66: Demo 4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Configuration|}}&lt;br /&gt;
{{PatchCategories|Misc|}}&lt;br /&gt;
{{PatchCategories|Text|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch_talk:Executable_Maps&amp;diff=45551</id>
		<title>Patch talk:Executable Maps</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch_talk:Executable_Maps&amp;diff=45551"/>
		<updated>2022-03-25T11:52:47Z</updated>

		<summary type="html">&lt;p&gt;Levellass: /* Crediting of information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Crediting of information ==&lt;br /&gt;
I want to contribute some information I found about the Keen 2 executable, but the page credits the executable map to Levellass, and so far Levellass has been the only one editing the page. What do I do about this? [[User:TheBigV|TheBigV]] ([[User talk:TheBigV|talk]]) 20:58, 13 August 2021 (GMT)&lt;br /&gt;
:Do it, I&#039;m sure she won&#039;t mind. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 11:52, 25 March 2022 (GMT)&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Title_screen&amp;diff=41957</id>
		<title>Patch:Title screen</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Title_screen&amp;diff=41957"/>
		<updated>2020-08-14T08:56:24Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add third titlescreen patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers patches relating to the title screen. The title screen in Keen Vorticons is where the [[Patch:Main menu|main menu]] appears. In Keen Dreams it is the image that appears &#039;&#039;before&#039;&#039; the [[Patch:Main menu|main menu]] as well as including the [[Patch:High Scores (Dreams)|High Scores table.]] In Keen Galaxy it is again a simple image leading to the main menu. Associated patches are [[Patch:Main menu]] and [[Patch:Start sequence]].&lt;br /&gt;
&lt;br /&gt;
In Keen Vorticons a level is displayed that can be edited in a level editor. The level used is a screen from &amp;lt;tt&amp;gt;LEVEL90.CKx&amp;lt;/tt&amp;gt;. In Dreams, the title screen image can be edited with [[Keengraph]]. In Galaxy, the title screen image can be edited with [[ModKeen]] along with most other Galaxy graphics.&lt;br /&gt;
&lt;br /&gt;
Due to the different natures of the title screens, this page will be divided into three sections, Vorticons, Dreams and Galaxy. Patches for relevant episodes and outcomes will be listed under these sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorticons title ==&lt;br /&gt;
&lt;br /&gt;
At present, it is possible to patch the location and [[Patch:Images|bitmaps]] used for the title and the &amp;quot;F1 for help&amp;quot; graphics. (Note that the title graphic cannot be changed easily, as it is not given a value in the code, because it uses bitmap 0.) All values are the default values. For help with graphic location patches, see [[Patch:Images]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $97C0 [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $97B2 [$0001W] #Title V&lt;br /&gt;
%patch $97B6 [$0008W] #Title H&lt;br /&gt;
%patch $97C4 [$00B6W] #F1 V&lt;br /&gt;
%patch $97C8 [$0010W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $97CB $90 $90 $90 #F1&lt;br /&gt;
%patch $97B9 $90 $90 $90 #Title&lt;br /&gt;
%patch $97AB $C3         #F1 AND title&lt;br /&gt;
%patch $97E4 $90         #F1 AND title when menu is open (Has side effects!)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $9241 [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $9233 [$0001W] #Title V&lt;br /&gt;
%patch $9237 [$0008W] #Title H&lt;br /&gt;
%patch $9245 [$00B6W] #F1 V&lt;br /&gt;
%patch $9249 [$0010W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $924C $90 $90 $90 #F1&lt;br /&gt;
%patch $923A $90 $90 $90 #Title&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $A09A [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $A08C [$0001W] #Title V&lt;br /&gt;
%patch $A090 [$0008W] #Title H&lt;br /&gt;
%patch $A09E [$00B6W] #F1 V&lt;br /&gt;
%patch $A0A2 [$0013W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $A0A5 $90 $90 $90 #F1&lt;br /&gt;
%patch $A093 $90 $90 $90 #Title&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dreams title ==&lt;br /&gt;
&lt;br /&gt;
The Dreams title consists of a &#039;demo loop&#039; that displays the title screen and the [[Patch:High Scores (Dreams)|High scores]] in a constant cycle. Though loading level 20 this is never shown in the game. (In the patchable version at least.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Screen image file and errors ===&lt;br /&gt;
&lt;br /&gt;
The screen image is loaded and decompressed form a separate file archive in which it is the only chunk. See also [[Patch:Files and filenames]].&lt;br /&gt;
&lt;br /&gt;
There are three possible errors. The first occurs when the titlescreen archive file cannot be found. The second occurs if the file itself is corrupt and doesn&#039;t fit the expected parameters. The third occurs if the title chunk &#039;&#039;inside&#039;&#039; the file is corrupt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Dreams titlescreen archive&lt;br /&gt;
%patch $435C  [$038DW] #Look for this file&lt;br /&gt;
%patch $438A  [$038DW] #Load this file&lt;br /&gt;
%patch $23DFD &amp;quot;KDREAMS.CMP&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Title screen file&lt;br /&gt;
%patch $23E23 &amp;quot;TITLESCR.LBM&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#No titlescreen archive&lt;br /&gt;
%patch $436D  [$0399W]&lt;br /&gt;
%patch $23E09 &amp;quot;Couldn&#039;t find KDREAMS.CMP&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Can&#039;t read titlescreen error&lt;br /&gt;
%patch $439D  [$03C0W]&lt;br /&gt;
%patch $23E30 &amp;quot;Can&#039;t load TITLE SCREEN&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Can&#039;t read title chunk error&lt;br /&gt;
%patch $9C61  [$25EDW]&lt;br /&gt;
%patch $2605D &amp;quot;Error Loading Compressed lib shape!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Time titlescreen is visible for ===&lt;br /&gt;
&lt;br /&gt;
By default the &#039;title sequence&#039; loops between the titlescreen and the high score table. The first appearance of the title, when the game first loads, is especially long, while later appearances are shorter.&lt;br /&gt;
&lt;br /&gt;
As such there are two times involved, the first for the special initial appearance and the second for the &#039;looping appearances&#039;. Note that the first, longer, time is the &#039;&#039;sum&#039;&#039; of &#039;&#039;both&#039;&#039; times rather than a standalone value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Titlescreen display time&amp;quot;&amp;gt;&lt;br /&gt;
#Titlescreen display time&lt;br /&gt;
%patch $43FA [$0118W] #First appearance extra time&lt;br /&gt;
%patch $4447 [$00D2W] #Loop appearances&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip titlescreen, go straight to menu ===&lt;br /&gt;
&lt;br /&gt;
The first patch causes the game to go straight to the menu instead of displaying the titlescreen. In fact there is no way to view the titlescreen (Or High score table that goes with it.), it is completely disabled.&lt;br /&gt;
&lt;br /&gt;
The second patch is related, except the titlescreen appears, the player is sent to the menu after a time instead of seeing the High Scores.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to menu&amp;quot;&amp;gt;&lt;br /&gt;
#Skip titlescreen go straight to Main Menu&lt;br /&gt;
%patch $4395 $E9 $00FFW&lt;br /&gt;
&lt;br /&gt;
#Go to menu after titlescreen&lt;br /&gt;
%patch $4408 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip titlescreen, go straight to game ===&lt;br /&gt;
&lt;br /&gt;
This patch causes the game to go straight to a new game instead of displaying the titlescreen. In fact there is no way to view the titlescreen (Or High score table that goes with it.), it is completely disabled and pressing &#039;esc&#039; in-game will cause the entire game to &#039;reset&#039;.&lt;br /&gt;
&lt;br /&gt;
There are two variables that can be altered, thedifficulty level of the game and the first level entered. In this patch they are &#039;easy&#039; and level 0 (the map).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to game&amp;quot;&amp;gt;&lt;br /&gt;
#Skip titlescreen go straight to game&lt;br /&gt;
%patch $4395  $E9 $00FFW&lt;br /&gt;
%patch $28B32 $4AB8W&lt;br /&gt;
%patch $5D01  $C7 $06 $7128W [$0001W] #Difficulty&lt;br /&gt;
%patch $3C0C  $7124W [$0000W]         #Level to start in&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== High scores table ===&lt;br /&gt;
&lt;br /&gt;
The [[Patch:High Scores (Dreams)|High Score table]] appears after the title screen then, after a period of time, returns to the title screen again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== No High Scores in title sequence ====&lt;br /&gt;
&lt;br /&gt;
This patch removes the High Score table in the title sequence only. While the palyer can enter a new high score and see the table at a Game Over they will not see the table when first starting the game and waiting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;No High Scores in title sequence&amp;quot;&amp;gt;&lt;br /&gt;
#No High scores in title sequence&lt;br /&gt;
%patch $4475 $EB $09&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Time score table is visible ====&lt;br /&gt;
&lt;br /&gt;
These patches control how long the High Scores table is visible before the title screen appears. There are two different situations, Game Over and title sequence, with different times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;High Score display time&amp;quot;&amp;gt;&lt;br /&gt;
#High Scores display time&lt;br /&gt;
%patch $4484  [$01A4W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Go to main menu after Title\High Scores ====&lt;br /&gt;
&lt;br /&gt;
These patches cause the game to go to the [[Patch:Main menu (Dreams)|main menu]] after the titlescreen or high scores are displayed, even if the player doesn&#039;t press a key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go to main menu even if no key is pressed&amp;quot;&amp;gt;&lt;br /&gt;
#Go to main menu after title displays&lt;br /&gt;
%patch $4455 $EB&lt;br /&gt;
&lt;br /&gt;
#Go to main menu after High Score table displays&lt;br /&gt;
%patch $4492 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Galaxy title ==&lt;br /&gt;
&lt;br /&gt;
The Galaxy title screen is much less involved than the Vorticons one. Like Dreams it is a fullscreen image, appearing after the [[Patch:Terminator text|&#039;terminator text&#039;]] sequence has completed or been aborted by the player. (Check the terminator sequence page for related patches.)&lt;br /&gt;
&lt;br /&gt;
There are in fact &#039;&#039;three&#039;&#039; situations where the titlescreen is displayed. The first is when the player allows the [[Patch:Terminator text|&#039;terminator text&#039;]] to play out, whereupon the screen will fade to the title. The second situation is when the player presses a key, causing the titlescreen to appear. The third is after a [[Patch:Game over (Galaxy)|game over]] where pressing a key in the High Scores demo will cause the title to appear.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip screen, go to Main Menu ===&lt;br /&gt;
&lt;br /&gt;
These patches skip the titlescreen, going straight to the [[Patch:Main menu (Galaxy)|Main Menu]]. But this only happens if the player skips the [[Patch:Terminator text|&#039;terminator text&#039;]]; allowing it to play out will still cause the title fade.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Skip Title screens&amp;quot;&amp;gt;&lt;br /&gt;
#Skip title, go to Main Menu -Keen 4&lt;br /&gt;
%patch $51BC $EB&lt;br /&gt;
&lt;br /&gt;
#Skip title, go to Main Menu -Keen 5&lt;br /&gt;
%patch $51B6 $EB&lt;br /&gt;
&lt;br /&gt;
#Skip title, go to Main Menu -Keen 6&lt;br /&gt;
%patch $4FC5 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Title screen image ===&lt;br /&gt;
&lt;br /&gt;
As noted above, there are in fact, three different title screens that can be shown. The first appears when the [[Patch:Terminator text|&#039;terminator text&#039;]] is allowed to scroll uninterrupted. This will result in a &#039;titelscreen fade&#039; where the title slowly appears from a black screen. The second title screen appears instantly if the player presses any key. The third appears after a Game Over and the High Scores demo plays out. By default all three of these title imagess are identical, but they don&#039;t have to be.&lt;br /&gt;
&lt;br /&gt;
Like all bitmaps, the title screen must be cached before it can be displayed. The number given in these patches is the chunk number (Properly labelled by [[Keengraph]]; [[ModKeen]] will label the bitmap with a different number.) As such there are a total of four lines of code, two for each title screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Galaxy Title screens&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 titlescreen images&lt;br /&gt;
%patch $4EDC [$006DW] #Cache for title fade&lt;br /&gt;
%patch $4CF4 [$006DW] #Display in title fade&lt;br /&gt;
%patch $51C4 [$006DW] #Cache for title jump&lt;br /&gt;
%patch $51D0 [$006DW] #Display in title jump&lt;br /&gt;
%patch $58A4 [$006DW] #Cache for after Game Over&lt;br /&gt;
%patch $58B0 [$006DW] #Display for after Game Over&lt;br /&gt;
&lt;br /&gt;
#Keen 5 titlescreen images&lt;br /&gt;
%patch $4ED6 [$0058W] #Cache for title fade&lt;br /&gt;
%patch $4CEE [$0058W] #Display in title fade&lt;br /&gt;
%patch $51BE [$0058W] #Cache for title jump&lt;br /&gt;
%patch $51CA [$0058W] #Display in title jump&lt;br /&gt;
%patch $589E [$0058W] #Cache for after Game Over&lt;br /&gt;
%patch $58AA [$0058W] #Display for after Game Over&lt;br /&gt;
&lt;br /&gt;
#Keen 6 titlescreen images&lt;br /&gt;
%patch $4CF7 [$0022W] #Cache for title fade&lt;br /&gt;
%patch $4B0F [$0022W] #Display in title fade&lt;br /&gt;
%patch $4FCD [$0022W] #Cache for title jump&lt;br /&gt;
%patch $4FD9 [$0022W] #Display in title jump&lt;br /&gt;
%patch $56AD [$0022W] #Cache for after Game Over&lt;br /&gt;
%patch $56B9 [$0022W] #Display for after Game Over&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keygem_door&amp;diff=41956</id>
		<title>Patch:Keygem door</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keygem_door&amp;diff=41956"/>
		<updated>2020-08-12T03:55:13Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gem doors require a [[Patch:Keygems|keygem]] to open and work in a similar way to switches, by animating tiles with an animate property, but no animation time. While doors can be any height, by default they must be made of three different tiles by default and will animate four frames. Door sprites control the number of door frames and animation speeds.&lt;br /&gt;
&lt;br /&gt;
There are three kinds of door in Galaxy that Keen can enter. The most common kind are [[Patch:Doors (Galaxy)|&#039;passage&#039; doors]], allowing Keen to move between two points in the level, found in all Keen Galaxy games. The second kind are keygem doors found in all galaxy games. The third type are [[Patch:V Card Door|V card doors]] which require a [[Patch:Keycard (Galaxy)|V card]] to open and usually exit the level. Patches relating to Keen himself opening doors can be found at [[Patch:Keen opening doors]].&lt;br /&gt;
&lt;br /&gt;
This page is divided into four sections. The first deals with keyholders, the tiles that activate doors. The second deals with doors themselves, the tiles that alter when a door is opened and how they do so. The third section deals with door metasprites, the invisible objects that control what happens to doors. The final section covers door related game errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keyholders =&lt;br /&gt;
&lt;br /&gt;
== Gem holder  tile code ==&lt;br /&gt;
&lt;br /&gt;
The gem holder [[Patch:Tiles|tile code]] is responsible for initiating the opening of doors. The gem holder code is somewhat complicated. The first section of the code deals with checks. The first check checks to see if the gem holder tile is 1 tile below Keen&#039;s head (So Keen cannot open just any gem holder tile.) The next check determines whether the tile &#039;&#039;below&#039;&#039; the gem holder is upwards blocking (So Keen cannot open gem holders in the air.) On the second line Keen&#039;s [[Patch:Sprite actions|action]] is checked and if he is already placing a gem then the following code is skipped. (This avoids Keen constantly trying to place a gem but being unable to do so, see also [[Patch:Jump conditions]].)&lt;br /&gt;
&lt;br /&gt;
The next check, on line 3, looks to see if Keen has the right kind of gem (See [[Patch:Game stats]].); four values are checked starting with the red gem. After all these checks are passed then Keen&#039;s action is set to &#039;turn away from screen&#039;, starting the door opening sequence and he begins to &#039;slide&#039; into alignment with the holder. The final check looks to see that this alignment is complete (Otherwise he will try to use the wrong tile as a door locator causing a &#039;bad spot&#039; error.) if so then the second section is run.&lt;br /&gt;
&lt;br /&gt;
The second section causes Keen to go to the door opening code where his action is set to &#039;place gem&#039; and a gem is removed from his inventory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $D186 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0E1EW]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB $07 $D1 $E3 $83 $BF {$7A60W}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C $0E3CW  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB $07 $D1 $E3 $FF $8F {$7A60W}&lt;br /&gt;
                 $B8 [$0E1EW]  $50 $56 $9A $09DC120ARL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $C499 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0CA2W]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB $07 $D1 $E3 $83 $BF {$6F60W}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C [$0CC0W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB $07 $D1 $E3 $FF $8F {$6F60W}&lt;br /&gt;
                 $B8 [$0CA2W]  $50 $56 $9A $090B1242RL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gem holders vanish instead of animating ==&lt;br /&gt;
&lt;br /&gt;
This patch causes gem holders to simply be removed from the level rather than being animated to another tile. (This in itself will appear like animation anyway.) This means all keyholders will behave the same way and removes the need for them to have specific, filled, tiles in the tileset.&lt;br /&gt;
&lt;br /&gt;
In actuality the tile is changed to another tile, tile 0 by default. This value can be changed to make keyholders all animate to the same, non-zero, tile without triggering an animation error when the level loads.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keyholders are removed, not animated&lt;br /&gt;
%patch $C286 $57 $56 $50 $1E $B8 [$00BCW]  $50 $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Replacement tile&lt;br /&gt;
%patch $2EF2C [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gem holder doesn&#039;t animate ==&lt;br /&gt;
&lt;br /&gt;
This patch stops the keyholder animating; as such it can be used as many times as Keen has gems, &#039;re-opening&#039; a door each time. (When Keen runs out of gems he will be unable to use the holder until he finds more.)&lt;br /&gt;
&lt;br /&gt;
An issue with this patch is that Keen will use &#039;&#039;all&#039;&#039; the keygems he has at once if he has more than one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t animate keyholder (Free $C283-$C299)&lt;br /&gt;
%patch $C281 $EB $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Doors and door tiles =&lt;br /&gt;
&lt;br /&gt;
== Number of different tiles in door ==&lt;br /&gt;
&lt;br /&gt;
As stated above a door is made of three tiles, a top tile, of which there can be as many as desired, a middle and a bottom tile. If a door is made of more or less different tiles &#039;static tile&#039; errors will occur. It is however possible to patch this. By default a door animates as many top tiles as it find in a vertical column, then will animate two more tiles below it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Number of different tiles in door&amp;quot;&amp;gt;&lt;br /&gt;
#Number of different tiles in door -1, Keen 4&lt;br /&gt;
%patch $E8D2 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Number of different tiles in door -1, Keen 5&lt;br /&gt;
%patch $E002 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Number of different tiles in door -1, Keen 6&lt;br /&gt;
%patch $DBC1 [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doors of any (fixed) height or width in Keen 4 ==&lt;br /&gt;
&lt;br /&gt;
This patch alters the door code so that rather than animating special tiles, it copies a block of the level (Both foreground and background) from another location onto the door, much like how [[Patch:Miragia|Miragia]] works. It relies on using the [[Patch:EGAGRAPH|EGAGRAPH check skip]] and so is incompatible with any other patches that use this.&lt;br /&gt;
&lt;br /&gt;
This means that doors can be of any height or width, not just a single column. It also means any tiles may be used in a door, including animating ones and switches. The disadvantage is that &#039;&#039;all&#039;&#039; doors in a level will use the same tiles at the same location and so will do the same thing. This means that while doors can do more things, all doors in a level must do the same thing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check (Frees 389 bytes at $3CF6) 037D0H&lt;br /&gt;
%patch $3CE5 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Doors use new behaviors below&lt;br /&gt;
%patch $3066C $037D0526RL #Door opens&lt;br /&gt;
%patch $3068A $037D054ERL #Door opens&lt;br /&gt;
%patch $306A8 $037D0576RL #Door opens&lt;br /&gt;
&lt;br /&gt;
#Door tile replacement code, 2x4 block starting at 0,0 in the level&lt;br /&gt;
#Door 1, 2x4 at 0,0 in level&lt;br /&gt;
%patch $3CF6  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 2, 2x4 at 4,0 in level&lt;br /&gt;
%patch $3D1E  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0004W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 2, 2x4 at 8,0 in level&lt;br /&gt;
%patch $3D46  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0008W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alternate patch and example ===&lt;br /&gt;
&lt;br /&gt;
This alternate patch does not use the EGA skip, and so is compatible with other patches that use it. It instead disables the [[Patch:F10 T Cheat|sprite test cheat]]. In this example four frames are used for the door instead of three and the doors are 2x3 tiles in size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable sprite test cheat&lt;br /&gt;
%patch $6D39 $CB&lt;br /&gt;
&lt;br /&gt;
#Door tile replacement code, 2x3 block starting at 0,0 in the level&lt;br /&gt;
#Door 1, 2x3 at 0,0 in level&lt;br /&gt;
%patch $6D3A  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 2, 2x3 at 0,4 in level&lt;br /&gt;
%patch $6D62  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0004W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 3, 2x3 at 0,8 in level&lt;br /&gt;
%patch $6D8A  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0008W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 4, 2x3 at 0,12 in level&lt;br /&gt;
%patch $6DB2  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$000CW]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door sprite actions:&lt;br /&gt;
%patch $3065C $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD016ARL   $00000000L    $00000000L    $180AW&lt;br /&gt;
%patch $3067A $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD0192RL   $00000000L    $00000000L    $1828W&lt;br /&gt;
%patch $30698 $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD01BARL   $00000000L    $00000000L    $02D7W&lt;br /&gt;
%patch $2F147 $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD01E2RL   $00000000L    $00000000L    $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doors of any (fixed) height or width in Keen 5 ==&lt;br /&gt;
&lt;br /&gt;
This patch alters the door code so that a door can be of any size, instead of a single column of tiles. It works by copying the [[Patch:V Card Door|V card door]] code and making the door sprite use it, with some alterations.  It relies on using the [[Patch:EGAGRAPH|EGAGRAPH check skip]] and so is incompatible with any other patches that use this.&lt;br /&gt;
&lt;br /&gt;
The tiles sued as a door require a very specific setup, exactly like the tiles used for the V-door; the door frames must be placed next to each other in the tileset in their totality and each tile must animate without an animation speed. Looking at how the V-door tiles are set up may help here.&lt;br /&gt;
&lt;br /&gt;
It is possible to change the width and height of the door, as well as the number of opening frames (By altering how many door sprite actions are used.) Note that the &#039;door width in tileset&#039; &#039;&#039;must&#039;&#039; be equal to the door&#039;s width to avoid problems. The animation speed of the door sprite controls how quickly the door opens.&lt;br /&gt;
&lt;br /&gt;
Note: There appears to be a bug with this patch that means that only doors of the same width and frames as the [[Patch:V Card Door|V card door]] can be used. This is rather limiting and it is not known how this may be overcome at present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Custom door sizes in Keen 5&lt;br /&gt;
#Disable EGAGRAPH check in Keen 5 (Frees 389 bytes at $3CF0)&lt;br /&gt;
%patch $3CDF $90 $90&lt;br /&gt;
&lt;br /&gt;
#New-door opening code&lt;br /&gt;
%patch $3CF0 $55 $8B $EC $83 $EC $26 $56 $57 $8D $46 $DA $8B $F8 $8B $5E $06&lt;br /&gt;
             $8B $5F $0C $D1 $E3 $8B $87 $87 $BF $D1 $E8 $D1 $E0 $8B $16 $51&lt;br /&gt;
             $9E $8B $5E $06 $8B $5F $0A $D1 $E3 $03 $C3 $89 $56 $FC $89 $46&lt;br /&gt;
             $FA $C7 $46 $FE $00 $00 $EB $29 $33 $F6 $EB $15 $8B $C6 $D1 $E0&lt;br /&gt;
             $C4 $5E $FA $03 $D8 $26 $8B $07 $2D [$0004W]  $89 $05 $83 $C7 $02 #Door width in tileset&lt;br /&gt;
             $46 $83 $FE $04 $7C $E6 $FF $46 $FE $A1 $4C $9E $D1 $E0 $01 $46&lt;br /&gt;
             $FA $83 $7E $FE $04 $7C $D1 $B8 [$0004W]  $50 $B8 [$0004W]  $50 $8B #Door size h AND v = 4x4&lt;br /&gt;
             $5E $06 $FF $77 $0C $FF $77 $0A $B8 $0001W  $50 $16 $8D $46 $DA&lt;br /&gt;
             $50 $9A $174E0F25RL     $83 $C4 $0E $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Alter door actions to use new V-card type behavior&lt;br /&gt;
%patch $318F6  $0000W $0000W $0000W $0000W $0000W [$000FW] $0000W $0000W&lt;br /&gt;
               $037D0520RL   $00000000L    $00000000L    $15D4W&lt;br /&gt;
%patch $31914  $0000W $0000W $0000W $0000W $0000W [$000FW] $0000W $0000W&lt;br /&gt;
               $037D0520RL   $00000000L    $00000000L    $15F2W&lt;br /&gt;
%patch $31932  $0000W $0000W $0000W $0000W $0000W [$000FW] $0000W $0000W&lt;br /&gt;
               $037D0520RL   $00000000L    $00000000L    $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Door sprites =&lt;br /&gt;
&lt;br /&gt;
Door sprites are invisible [[Patch:Meta sprites|metasprite]] that are created when Keen places a keygem. They animate the door tiles and are then removed. In this respect they are very similar to [[Patch:Miragia|Miragia sprites]]. The following is the default action data for all three sprites:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite actions:&lt;br /&gt;
%patch $3065C [$0000W $0000W] $0000W $0000W $0000W [$000AW] $0000W $0000W&lt;br /&gt;
              {$0D8F0F85RL}   $00000000L    $00000000L    {$180AW}&lt;br /&gt;
%patch $3067A [$0000W $0000W] $0000W $0000W $0000W [$000AW] $0000W $0000W&lt;br /&gt;
              {$0D8F0F85RL}   $00000000L    $00000000L    {$1828W}&lt;br /&gt;
%patch $30698 [$0000W $0000W] $0000W $0000W $0000W [$000AW] $0000W $0000W&lt;br /&gt;
              {$0D8F0F85RL}   $00000000L    $00000000L    {$0000W}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As can be seen each patch is one action and there are three of them. Four values per action are highlighted here as they are the most important. The first blue value is the sprite animation, door sprites do not have any, but they may be added if some sort of effect is desired along with the animating tiles. The second is the animation speed, this controls how fast each frame of the door animates (And thus controls the door opening speed.) This can be tweaked for some interesting effects.&lt;br /&gt;
&lt;br /&gt;
The first brown value is the door behavior, this is what makes the tile animate. The second brown value is the next action, by default the first two lead to the next action, the final one is zero or &#039;remove sprite&#039; This allows you to control the number of frames of door animation there are; making more actions then linking to them will allow more frames, it&#039;s even possible to link the last action back to the first in a  loop, if the door tiles also loop in their animation then when a gem is placed the door will start animating forever. This allows the use of gems as &#039;animation activators&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Sprite type|Sprite Type]] ===&lt;br /&gt;
&lt;br /&gt;
Doors use sprite type 1 which is used only by miscellaneous sprites and doesn&#039;t affect anything else.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Door sprite type&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite type -Keen 4&lt;br /&gt;
%patch $C346 [$01]&lt;br /&gt;
&lt;br /&gt;
#Door sprite type -Keen 5&lt;br /&gt;
%patch $B764 [$01]&lt;br /&gt;
&lt;br /&gt;
#Door sprite type -Keen 6&lt;br /&gt;
%patch $B547 [$01]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Sprite actions|Door actions]] ===&lt;br /&gt;
&lt;br /&gt;
Door actions control how many &#039;frames&#039; of animation a door has. (By default three.) When Keen places a keygem a door metasprite is inserted into the level where the keyholder points to. The door opening sequence is three actions long, each action animating the door 1 frame. after the third action the door metasprite vanishes.&lt;br /&gt;
&lt;br /&gt;
 Actions -Keen 4&lt;br /&gt;
 $17ECW #Door open 1&lt;br /&gt;
 $180AW #Door open 2&lt;br /&gt;
 $1828W #Door open 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Gem door placed in level&lt;br /&gt;
%patch $C349  [$17ECW]&lt;br /&gt;
&lt;br /&gt;
#Door sequence&lt;br /&gt;
%patch $30678 [$180AW]&lt;br /&gt;
%patch $30696 [$1828W]&lt;br /&gt;
%patch $306B4 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Actions -Keen 5&lt;br /&gt;
 $15B6W #Open door 1&lt;br /&gt;
 $15D4W #Open door 2&lt;br /&gt;
 $15F2W #Open door 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Gem door placed in level&lt;br /&gt;
%patch $B767  [$15B6W]&lt;br /&gt;
&lt;br /&gt;
#Door sequence&lt;br /&gt;
%patch $31912 [$15D4W]&lt;br /&gt;
%patch $31930 [$15F2W]&lt;br /&gt;
%patch $3194E [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Actions -Keen 6&lt;br /&gt;
 $15F2W #Door open 1&lt;br /&gt;
 $1610W #Door open 2&lt;br /&gt;
 $162EW #Door open 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Gem door placed in level&lt;br /&gt;
%patch $B54A  [$15F2W]&lt;br /&gt;
&lt;br /&gt;
#Door sequence&lt;br /&gt;
%patch $3233E [$1610W]&lt;br /&gt;
%patch $3235C [$162EW]&lt;br /&gt;
%patch $3237A [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite behavior|Sprite Behavior]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have one behavior, this is the behavior that alters the door tiles. It is used for all three actions thus causing doors to have three &#039;frames&#039; of opening.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite behaviors&amp;quot;&amp;gt;&lt;br /&gt;
#Door opening behaviors -Keen 4&lt;br /&gt;
%patch $3066C $0D8F0F85RL&lt;br /&gt;
%patch $3068A $0D8F0F85RL&lt;br /&gt;
%patch $306A8 $0D8F0F85RL&lt;br /&gt;
&lt;br /&gt;
#Door opening behaviors -Keen 5&lt;br /&gt;
%patch $31906 $0CCB12F5RL&lt;br /&gt;
%patch $31924 $0CCB12F5RL&lt;br /&gt;
%patch $31942 $0CCB12F5RL&lt;br /&gt;
&lt;br /&gt;
#Door opening behaviors -Keen 6&lt;br /&gt;
%patch $32332 $0CA61104RL&lt;br /&gt;
%patch $32350 $0CA61104RL&lt;br /&gt;
%patch $3236E $0CA61104RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite speed|Speed]] ==&lt;br /&gt;
&lt;br /&gt;
The doors, as metasprites, do not move. Their animation speeds are zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite speeds&amp;quot;&amp;gt;&lt;br /&gt;
#Door movement speeds -Keen 4&lt;br /&gt;
%patch $30668 [$0000W $0000W]&lt;br /&gt;
%patch $30686 [$0000W $0000W]&lt;br /&gt;
%patch $306A4 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door movement speeds -Keen 5&lt;br /&gt;
%patch $31902 [$0000W $0000W]&lt;br /&gt;
%patch $31920 [$0000W $0000W]&lt;br /&gt;
%patch $3193E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door movement speeds -Keen 6&lt;br /&gt;
%patch $3232E [$0000W $0000W]&lt;br /&gt;
%patch $3234C [$0000W $0000W]&lt;br /&gt;
%patch $3236A [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite animations|Animations]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have no animations and so do not appear to the player in-level. Giving doors animations can cause issues. (In fact this cannot be done without altering the door&#039;s tile interaction to allow it to display images.)&lt;br /&gt;
&lt;br /&gt;
Of greater importance is the animation speed, which controls how long each &#039;frame&#039; of door opening takes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Door sprite animations&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite animations -Keen 4&lt;br /&gt;
%patch $3065C $0000W $0000W&lt;br /&gt;
%patch $30666 $000AW        #Animation speed&lt;br /&gt;
%patch $3067A $0000W $0000W&lt;br /&gt;
%patch $30684 $000AW        #Animation speed&lt;br /&gt;
%patch $30698 $0000W $0000W&lt;br /&gt;
%patch $306A2 $000AW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Door sprite animations -Keen 5&lt;br /&gt;
%patch $318F6 $0000W $0000W&lt;br /&gt;
%patch $31900 $000AW        #Animation speed&lt;br /&gt;
%patch $31914 $0000W $0000W&lt;br /&gt;
%patch $3191E $000AW        #Animation speed&lt;br /&gt;
%patch $31932 $0000W $0000W&lt;br /&gt;
%patch $3193C $000AW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Door sprite animations -Keen 6&lt;br /&gt;
%patch $32322 $0000W $0000W&lt;br /&gt;
%patch $3232C $000AW        #Animation speed&lt;br /&gt;
%patch $32340 $0000W $0000W&lt;br /&gt;
%patch $3234A $000AW        #Animation speed&lt;br /&gt;
%patch $3235E $0000W $0000W&lt;br /&gt;
%patch $32368 $000AW        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite collision|Sprite Collision]] ==&lt;br /&gt;
&lt;br /&gt;
Doors are not supposed to interact with other sprites, so they have no sprite collision.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite collisions&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite collisions -Keen 4&lt;br /&gt;
%patch $30670 $00000000L&lt;br /&gt;
%patch $3068E $00000000L&lt;br /&gt;
%patch $306AC $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite collisions -Keen 5&lt;br /&gt;
%patch $3190A $00000000L&lt;br /&gt;
%patch $31928 $00000000L&lt;br /&gt;
%patch $31946 $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite collisions -Keen 6&lt;br /&gt;
%patch $32336 $00000000L&lt;br /&gt;
%patch $32354 $00000000L&lt;br /&gt;
%patch $32372 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite clipping and foreground|Clipping and foreground]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have no clipping so that they won&#039;t be messed about by solid tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Door clipping&amp;quot;&amp;gt;&lt;br /&gt;
#Door clipping -Keen 4&lt;br /&gt;
%patch $C342 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door clipping -Keen 5&lt;br /&gt;
%patch $B760 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door clipping -Keen 6&lt;br /&gt;
%patch $B543 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite Activity Variable|Sprite Activity]] ==&lt;br /&gt;
&lt;br /&gt;
Doors need to open whether or not Keen is near them. As such they have an activity value of 2, causing them to act wherever the player is. If this is changed to 1 then doors will only open when the player is close to them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Doors sprite activity&amp;quot;&amp;gt;&lt;br /&gt;
#Doors sprite activity -Keen 4&lt;br /&gt;
%patch $C33D [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Doors sprite activity -Keen 5&lt;br /&gt;
%patch $B75B [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Doors sprite activity -Keen 6&lt;br /&gt;
%patch $B53E [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sounds|Sounds]] ==&lt;br /&gt;
&lt;br /&gt;
These are the sounds doors use in the game. A single sound is played when a keygem is placed and a door is opened. This can be muted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Door open sound&lt;br /&gt;
%patch $C29B $12&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Doors open sound&lt;br /&gt;
%patch $C29A $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Door open sound&lt;br /&gt;
%patch $B6B9  $3C&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Doors open sound&lt;br /&gt;
%patch $B6B8 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Door open sound&lt;br /&gt;
%patch $B49C $12&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Doors open sound&lt;br /&gt;
%patch $B49B $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite-tile interaction|Sprite-tile interaction]] ==&lt;br /&gt;
&lt;br /&gt;
Doors are not meant to interact with tiles, though their behavior does cause them to alter a level&#039;s tiles. As such they have no tile interaction. Note that this also means that the door can have no animation as displaying sprite images is handled by the tile interaction code of a sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite tile interactions&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite tile interactions -Keen 4&lt;br /&gt;
%patch $30674 $00000000L&lt;br /&gt;
%patch $30692 $00000000L&lt;br /&gt;
%patch $306B0 $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite tile interactions -Keen 5&lt;br /&gt;
%patch $3190E $00000000L&lt;br /&gt;
%patch $3192C $00000000L&lt;br /&gt;
%patch $3194A $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite tile interactions -Keen 6&lt;br /&gt;
%patch $3233A $00000000L&lt;br /&gt;
%patch $32358 $00000000L&lt;br /&gt;
%patch $32376 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Action_Type|Action type]] ==&lt;br /&gt;
&lt;br /&gt;
Door actions are basic in the extreme and thus type 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite action types&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite action types -Keen 4&lt;br /&gt;
%patch $30660 [$0000W]&lt;br /&gt;
%patch $3067E [$0000W]&lt;br /&gt;
%patch $3069C [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door sprite action types -Keen 5&lt;br /&gt;
%patch $318FA [$0000W]&lt;br /&gt;
%patch $31918 [$0000W]&lt;br /&gt;
%patch $31936 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door sprite action types -Keen 6&lt;br /&gt;
%patch $32326 [$0000W]&lt;br /&gt;
%patch $32344 [$0000W]&lt;br /&gt;
%patch $32362 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have no need for either of these variables and so have a value of 0 for both in all of their actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite deprotect, stick&amp;quot;&amp;gt;&lt;br /&gt;
#Door deprotect, stick -Keen 4&lt;br /&gt;
%patch $30662 [$0000W $0000W]&lt;br /&gt;
%patch $30680 [$0000W $0000W]&lt;br /&gt;
%patch $3069E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door deprotect, stick -Keen 5&lt;br /&gt;
%patch $318FC [$0000W $0000W]&lt;br /&gt;
%patch $3191A [$0000W $0000W]&lt;br /&gt;
%patch $31938 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door deprotect, stick -Keen 6&lt;br /&gt;
%patch $32328 [$0000W $0000W]&lt;br /&gt;
%patch $32346 [$0000W $0000W]&lt;br /&gt;
%patch $32364 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Game errors|Errors]] =&lt;br /&gt;
&lt;br /&gt;
Doors and keygems can cause a number of [[Patch:Game errors|errors.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyholder points to bad spot ==&lt;br /&gt;
&lt;br /&gt;
This error should occur when the player tries to place a key gem to open a door. It occurs when the keyholder does not have a correct sprite value over it. usually this happens when the modder forgets to put a value in, giving a default value of 0,0. Other invalid values are those outside the level borders. This error is easy enough to fix since there should only be a small number of keyholders in the level to check for validity.&lt;br /&gt;
&lt;br /&gt;
This error may also occur if a &#039;hidden&#039; keyholder is triggered, say if the modder accidentally gives a tile the keyholder property. (The hidden holder will of course not be given a value and can be hard to find until the player accidentally runs into one while having the right colored gem.)&lt;br /&gt;
&lt;br /&gt;
In either case the best course of action is to play the level and note exactly where the game crashes. This will be the exact location of the broken keyholder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keyholder errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $C2E0  [$1426W] #Text called from&lt;br /&gt;
%patch $30296 &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $B6FE  [$130EW] #Text called from&lt;br /&gt;
%patch $3164E &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $B4E1  [$129EW] #Text called from&lt;br /&gt;
%patch $31FCE &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Door tiles become gibberish ==&lt;br /&gt;
&lt;br /&gt;
This occurs when the game tries to turn a door tile into a tile that&#039;s not in the level. This is usually a tile bug, where the modder hasn&#039;t given each door tile the right number of animation frames. It can also occur when the modder changes how many different tiles can be in the door or how many frames it takes to open.&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_actions&amp;diff=41955</id>
		<title>Patch:Sprite actions</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_actions&amp;diff=41955"/>
		<updated>2020-08-12T03:11:20Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add some links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial on patching sprite actions. A sprite action is a segment of code 30 bytes long that sets the variables for almost everything relating to a sprite in Keen Galaxy (and Dreams). First is a brief description of the action with links to pages explaining each section, then follows a section listing the default values of actions in the games.&lt;br /&gt;
&lt;br /&gt;
As such, patching an entire sprite action is difficult because of the many variables involved. In general a modder will wish to patch a segment of the action, such as the sprite speeds. Therefore this page will simply outline the action&#039;s structure and function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
An action is 30 bytes long, composed of 9 words and 3 dwords. Information on each section is given in links in the table below&lt;br /&gt;
&lt;br /&gt;
 Int     Description		Values&lt;br /&gt;
 Int 0:  [[Patch:Sprite animations|Left sprite]]		Valid animations only&lt;br /&gt;
 Int 2:  [[Patch:Sprite animations|Right sprite]]		Valid animations only&lt;br /&gt;
 Int 4:  [[Patch:Galaxy Action Parameters#Action_Type|Action type]]		0-4&lt;br /&gt;
 Int 6:  [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect]]		0/1&lt;br /&gt;
 Int 8:  [[Patch:Galaxy Action Parameters#Deprotect_Animation|Stick to ground]]		0/1&lt;br /&gt;
 Int 10: [[Patch:Sprite animations|Delay (Anim speed)]]	0-8000&lt;br /&gt;
 Int 12: [[Patch:Sprite speed|H anim move amount]]	+- any value&lt;br /&gt;
 Int 14: [[Patch:Sprite speed|V anim move amount]]	+- any value&lt;br /&gt;
 Int 16: [[Patch:Sprite behavior|Behavior]]		Start of behavior codes only&lt;br /&gt;
 Int 20: [[Patch:Sprite collision|Check sprites]]		Start of check sprite codes only&lt;br /&gt;
 Int 24: [[Patch:Sprite-tile interaction|Check tiles]]		Start of check tile code only&lt;br /&gt;
 Int 30: [[Patch:Sprite actions#List_of_sprite_actions|Next action]]		Valid actions only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actions are treated like text strings (See [[Patch:Text patches]]) and are referred to by a text pointer, this includes the &#039;next action&#039; word at the end of each action. As an example is a patch for changing what the [[Arachnut]] spawns as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn walking Arachnut&lt;br /&gt;
%patch $1056B $2378W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List of sprite actions ==&lt;br /&gt;
&lt;br /&gt;
Each action has its own value (Actually a pointer to its location.) This is seen most often in the &#039;next action&#039; variable, which tells a sprite what set of action instructions to follow next. Listed below are the default values found in Keen games plus a brief description of what they do.&lt;br /&gt;
&lt;br /&gt;
Since this is a location pointer, it is possible for a modder to create totally new actions and refer to them.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Null action (Vanish)&lt;br /&gt;
 $098CW #[[Patch:Demo Sign|Demo sign in Highscores level (Invisible)]]&lt;br /&gt;
 $098CW #Keen standing&lt;br /&gt;
 $09AAW #[[Patch:Keen bored|Keen looks up (Bored)]]&lt;br /&gt;
 $09C8W #[[Patch:Keen bored|Keen shrugs 1(Bored more)]]&lt;br /&gt;
 $09E6W #[[Patch:Keen bored|Keen shrugs 2]]&lt;br /&gt;
 $0A04W #[[Patch:Keen bored|Keen shrugs 3]]&lt;br /&gt;
 $0A22W #[[Patch:Keen bored|Keen shrugs 4]]&lt;br /&gt;
 $0A40W #[[Patch:Keen bored|Keen shrugs 5]]&lt;br /&gt;
 $0A5EW #[[Patch:Keen bored|Keen shrugs 6]]&lt;br /&gt;
 $0A7CW #[[Patch:Keen_mooning|Keen moons 1]]&lt;br /&gt;
 $0A9AW #[[Patch:Keen_mooning|Keen moons 2]]&lt;br /&gt;
 $0AB8W #[[Patch:Keen_mooning|Keen moons 3]]&lt;br /&gt;
 $0AD6W #[[Patch:Keen bored|Keen starts reading book 1]]&lt;br /&gt;
 $0AF4W #[[Patch:Keen bored|Keen starts reading book 2]]&lt;br /&gt;
 $0B12W #[[Patch:Keen bored|Keen starts reading book 3]]&lt;br /&gt;
 $0B30W #[[Patch:Keen bored|Keen starts reading book 4]]&lt;br /&gt;
 $0B4EW #[[Patch:Keen bored|Keen reads book 1]]&lt;br /&gt;
 $0B6CW #[[Patch:Keen bored|Keen reads book 2]]&lt;br /&gt;
 $0B8AW #[[Patch:Keen bored|Keen reads book 3]]&lt;br /&gt;
 $0BA8W #[[Patch:Keen bored|Keen stops reading book 1]]&lt;br /&gt;
 $0BC6W #[[Patch:Keen bored|Keen stops reading book 2]]&lt;br /&gt;
 $0BE4W #[[Patch:Keen bored|Keen stops reading book 3]]&lt;br /&gt;
 $0C02W #[[Patch:Keen look|Keen start looking up]]&lt;br /&gt;
 $0C20W #[[Patch:Keen look|Keen looking up]]&lt;br /&gt;
 $0C3EW #[[Patch:Keen look|Keen start looking down]]&lt;br /&gt;
 $0C5CW #[[Patch:Keen look|Keen looking down 1]]&lt;br /&gt;
 $0C7AW #[[Patch:Keen look|Keen looking down 2]]&lt;br /&gt;
 $0C98W #[[Patch:Keen look|Keen stop looking down]]&lt;br /&gt;
 $0CB6W #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $0CD4W #[[Patch:Keen_dying_(Keen_4)|Defunct dead action]]&lt;br /&gt;
 $0CF2W #[[Patch:Keen_dying_(Keen_4)|Keen dies sprawled (Exits level if offscreen.)]]&lt;br /&gt;
 $0D10W #[[Patch:Keen_dying_(Keen_4)|Keen dies clutched (Exits level if offscreen.)]]&lt;br /&gt;
 $0D2EW #[[Patch:Keen_dying_(Keen_4)|Keen die swimming sprawled (Exits level if offscreen.)]]&lt;br /&gt;
 $0D4CW #[[Patch:Keen_dying_(Keen_4)|Keen die swimming clutched (Exits level if offscreen.)]]&lt;br /&gt;
 $0D6AW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally 1]]&lt;br /&gt;
 $0D88W #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally 2]]&lt;br /&gt;
 $0DA6W #[[Patch:Keen shooting (Galaxy)|Keen shooting up 1]]&lt;br /&gt;
 $0DC4W #[[Patch:Keen shooting (Galaxy)|Keen shooting up 2]]&lt;br /&gt;
 $0DE2W #[[Patch:Keen Flipping Switches|Keen starts flicking switches]]&lt;br /&gt;
 $0E00W #[[Patch:Keen Flipping Switches|Keen finishes flicking switches]]&lt;br /&gt;
 $0E1EW #[[Patch:Keen opening doors|Keen places gem, door opens]]&lt;br /&gt;
 $0E3CW #Keen adjust position&lt;br /&gt;
 $0E5AW #[[Patch:Keen entering doors|Keen walks into door 1]]&lt;br /&gt;
 $0E78W #[[Patch:Keen entering doors|Keen walks into door 2]]&lt;br /&gt;
 $0E96W #[[Patch:Keen entering doors|Keen walks into door 3]]&lt;br /&gt;
 $0EB4W #[[Patch:Keen entering doors|Keen walks into door 4]]&lt;br /&gt;
 $0ED2W #[[Patch:Keen entering doors|Keen walks into door 5]]&lt;br /&gt;
 $0EF0W #[[Patch:Keen on poles|Keen sitting still on a pole]]&lt;br /&gt;
 $0F0EW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0F2CW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0F4AW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0F68W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0F86W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0FA4W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0FC2W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0FE0W #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole 1]]&lt;br /&gt;
 $0FFEW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole 2]]&lt;br /&gt;
 $101CW #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole 1]]&lt;br /&gt;
 $103AW #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole 2]]&lt;br /&gt;
 $1058W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole 1]]&lt;br /&gt;
 $1076W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole 2]]&lt;br /&gt;
 $1094W #[[Patch:Keen walking (Galaxy)|Keen standing (Walking action)]]&lt;br /&gt;
 $10B2W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $10D0W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $10EEW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $110CW #[[Patch:Keen pogoing (Galaxy)|Keen start pogoing]]&lt;br /&gt;
 $112AW #[[Patch:Keen pogoing (Galaxy)|Keen pogoing]]&lt;br /&gt;
 $1148W #[[Patch:Keen pogoing (Galaxy)|Keen pogo bouncing]]&lt;br /&gt;
 $1166W #[[Patch:Keen jumping (Galaxy)|Keen jumping 1]]&lt;br /&gt;
 $1184W #[[Patch:Keen jumping (Galaxy)|Keen jumping 2]]&lt;br /&gt;
 $11A2W #[[Patch:Keen jumping (Galaxy)|Keen falling 1]]&lt;br /&gt;
 $11C0W #[[Patch:Keen jumping (Galaxy)|Keen falling 2]]&lt;br /&gt;
 $11DEW #[[Patch:Keen shooting (Galaxy)|Keen start shooting horizontally in air]]&lt;br /&gt;
 $11FCW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air 1]]&lt;br /&gt;
 $121AW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air 2]]&lt;br /&gt;
 $1238W #[[Patch:Keen shooting (Galaxy)|Keen start shooting upwards in air]]&lt;br /&gt;
 $1256W #[[Patch:Keen shooting (Galaxy)|Keen shooting up in air 1]]&lt;br /&gt;
 $1274W #[[Patch:Keen shooting (Galaxy)|Keen shooting up in air 2]]&lt;br /&gt;
 $1292W #[[Patch:Keen shooting (Galaxy)|Keen start shooting downwards in air ]]&lt;br /&gt;
 $12B0W #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air 1]]&lt;br /&gt;
 $12CEW #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air 2]]&lt;br /&gt;
 $12ECW #[[Patch:Keen grabs ledge|Keen gripping ledge 1]]&lt;br /&gt;
 $130AW #[[Patch:Keen grabs ledge|Keen gripping ledge 2]]&lt;br /&gt;
 $1328W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 1]]&lt;br /&gt;
 $1346W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 2]]&lt;br /&gt;
 $1364W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 3]]&lt;br /&gt;
 $1382W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 4]]&lt;br /&gt;
 $13A0W #[[Patch:Keen grabs ledge|Keen standing on air (After pulling himself up. Doesn&#039;t fall)]]&lt;br /&gt;
 $1456W #[[Patch:Demo Sign|Invisible Demo sign (For normal gameplay)]]&lt;br /&gt;
 $1474W #[[Patch:Demo Sign|Demo sign (Unusable usually)]]&lt;br /&gt;
 $1492W #[[Patch:Keen_on_map_(Galaxy)|Map Keen riding foot]]&lt;br /&gt;
 $14B0W #[[Patch:Keen_on_map_(Galaxy)|Map Keen riding foot]]&lt;br /&gt;
 $14CEW #[[Patch:Keen_on_map_(Galaxy)|Map Keen swimming]]&lt;br /&gt;
 $14ECW #[[Patch:Keen_on_map_(Galaxy)|Map Keen standing still]]&lt;br /&gt;
 $150AW #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1528W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1546W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1564W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1582W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $15A0W #[[Patch:Keen_on_map_(Galaxy)|Map Keen moving]]&lt;br /&gt;
 $15EEW #[[Patch:Flags|Keen K flag waving 1]]&lt;br /&gt;
 $160CW #[[Patch:Flags|Keen K flag waving 2]]&lt;br /&gt;
 $162AW #[[Patch:Flags|Keen K flag waving 3]]&lt;br /&gt;
 $1648W #[[Patch:Flags|Keen K flag waving 4]]&lt;br /&gt;
 $1666W #[[Patch:Flags|Keen flag flips into holder 1]]&lt;br /&gt;
 $1684W #[[Patch:Flags|Keen flag flips into holder 2]]&lt;br /&gt;
 $16A2W #[[Patch:Flags|Keen flag flips into holder 3]]&lt;br /&gt;
 $16C0W #[[Patch:Flags|Keen flag flips into holder 4]]&lt;br /&gt;
 $16DEW #[[Patch:Flags|Keen flag flips into holder 5]]&lt;br /&gt;
 $16FCW #[[Patch:Flags|Keen flag flips into holder 6]]&lt;br /&gt;
 $171AW #[[Patch:Flags|Keen flag flips into holder 7]]&lt;br /&gt;
 $1738W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $1756W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $1774W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $1792W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $17B0W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullets zaps]]&lt;br /&gt;
 $17CEW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullets zaps]]&lt;br /&gt;
 $17ECW #[[Patch:Keygem_door|Door open 1]]&lt;br /&gt;
 $180AW #[[Patch:Keygem_door|Door open 2]]&lt;br /&gt;
 $1828W #[[Patch:Keygem_door|Door open 3]]&lt;br /&gt;
 $1846W #[[Patch:Scorebox|Something to do with scoreboard display]]&lt;br /&gt;
 $19ECW #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A0AW #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A28W #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A46W #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A64W #[[Patch:Keen_swimming|Bubble 1]]&lt;br /&gt;
 $1A82W #[[Patch:Keen_swimming|Bubble 2]]&lt;br /&gt;
 $1AA0W #[[Patch:Keen_swimming|Bubble 3]]&lt;br /&gt;
 $1ABEW #[[Patch:Keen_swimming|Bubble 4]]&lt;br /&gt;
 $1DFCW #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E1AW #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E38W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E56W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E74W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E92W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1EB0W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1ECEW #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1EECW #[[Patch:Items|Items 1]]&lt;br /&gt;
 $1F0AW #[[Patch:Items|Items 2]]&lt;br /&gt;
 $1F28W #[[Patch:Items|Stuff got]]&lt;br /&gt;
 $1F46W #[[Patch:Items|Raindrop splash 1]]&lt;br /&gt;
 $1F64W #[[Patch:Items|Raindrop splash 2]]&lt;br /&gt;
 $1F82W #[[Patch:Items|Raindrop splash 3]]&lt;br /&gt;
 $1FB8W #[[Patch:Council member|Walking Council member]]&lt;br /&gt;
 $1FD6W #[[Patch:Council member|Walking Council member]]&lt;br /&gt;
 $1FF4W #[[Patch:Council member|Thinking Council Member]]&lt;br /&gt;
 $2012W #[[Patch:Poison Slug|Poison Slug]]&lt;br /&gt;
 $2030W #[[Patch:Poison Slug|Poison slug]]&lt;br /&gt;
 $204EW #[[Patch:Poison Slug|Poison Slug sliming]]&lt;br /&gt;
 $206CW #[[Patch:Poison Slug|Short stunned poison slug]]&lt;br /&gt;
 $208AW #[[Patch:Poison Slug|Tall stunned poison slug]]&lt;br /&gt;
 $20A8W #[[Patch:Poison Slug|Slug Slime]]&lt;br /&gt;
 $20C6W #[[Patch:Poison Slug|Slug Slime drying]]&lt;br /&gt;
 $20E4W #[[Patch:Mad Mushroom|Mad Mushroom start]]&lt;br /&gt;
 $2102W #[[Patch:Mad Mushroom|Mad Mushroom ]]&lt;br /&gt;
 $2120W #[[Patch:Egg|Egg]]&lt;br /&gt;
 $213EW #[[Patch:Egg|Big bit of eggshell on ground]]&lt;br /&gt;
 $215CW #[[Patch:Egg|Small bit of shell 1]]&lt;br /&gt;
 $217AW #[[Patch:Egg|Small bit of shell 2]]&lt;br /&gt;
 $2198W #[[Patch:Egg|Small bit of shell 3]]&lt;br /&gt;
 $21B6W #[[Patch:Egg|BlueBird hatched]]&lt;br /&gt;
 $21D4W #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $21F2W #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $2210W #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $222EW #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $224CW #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $226AW #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $2288W #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $22A6W #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $22C4W #[[Patch:Blue Bird|Bluebird go to land]]&lt;br /&gt;
 $22E2W #[[Patch:Blue Bird|Stunned Bluebird]]&lt;br /&gt;
 $2300W #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $231EW #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $233CW #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $235AW #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $2378W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $2396W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $23B4W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $23D2W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $23F0W #[[Patch:Arachnut|Arachnut stunned]]&lt;br /&gt;
 $240EW #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $242CW #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $244AW #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $2468W #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $2486W #[[Patch:Skypest|Skypest flying]]&lt;br /&gt;
 $24A4W #[[Patch:Skypest|Skypest flying]]&lt;br /&gt;
 $24C2W #[[Patch:Skypest|Skypest squished]]&lt;br /&gt;
 $24E0W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $24FEW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $251CW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $253AW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2558W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2576W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2594W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $25B2W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $25D0W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $25EEW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $260CW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $262AW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2648W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2666W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2684W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $26A2W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $26C0W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $26DEW #[[Patch:Wormouth|Wormouth small moving]]&lt;br /&gt;
 $26FCW #[[Patch:Wormouth|Wormouth small looking around]]&lt;br /&gt;
 $271AW #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2738W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2756W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2774W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2792W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $27B0W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $27CEW #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $27ECW #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $280AW #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2828W #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2846W #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2864W #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2882W #[[Patch:Wormouth|Wormouth stunned]]&lt;br /&gt;
 $28A0W #[[Patch:Cloud|Cloud asleep]]&lt;br /&gt;
 $28BEW #[[Patch:Cloud|Cloud awake and still]]&lt;br /&gt;
 $28DCW #[[Patch:Cloud|Cloud moving]]&lt;br /&gt;
 $28FAW #[[Patch:Cloud|Cloud turning\starting moving]]&lt;br /&gt;
 $2918W #[[Patch:Cloud|Cloud moving]]&lt;br /&gt;
 $2936W #[[Patch:Cloud|Cloud zapping Keen]] &lt;br /&gt;
 $2954W #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $2972W #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $2990W #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $29AEW #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $29CCW #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $29EAW #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $2A08W #[[Patch:Cloud|Cloud zapping Keen]]&lt;br /&gt;
 $2A26W #[[Patch:Cloud|Cloud zapping Keen (Lightning strikes)]]&lt;br /&gt;
 $2A44W #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2A62W #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2A80W #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2A9EW #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2ABCW #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2ADAW #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2AF8W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B16W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B34W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B52W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B70W #[[Patch:Berkeloid|Berkeloid ready to flame]]&lt;br /&gt;
 $2B8EW #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2BACW #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2BCAW #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2BE8W #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2C06W #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2C24W #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C42W #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C60W #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C7EW #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C9CW #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2CBAW #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2CD8W #[[Patch:Berkeloid|Berkeloid tossed flame 1]]&lt;br /&gt;
 $2CF6W #[[Patch:Berkeloid|Berkeloid tossed flame 2]]&lt;br /&gt;
 $2D14W #[[Patch:Berkeloid|Berkeloid landed flame 3]]&lt;br /&gt;
 $2D32W #[[Patch:Berkeloid|Berkeloid landed flame 4]]&lt;br /&gt;
 $2D50W #[[Patch:Berkeloid|Berkeloid landed flame 5]]&lt;br /&gt;
 $2D6EW #[[Patch:Berkeloid|Berkeloid landed flame 6]]&lt;br /&gt;
 $2D8CW #[[Patch:Berkeloid|Berkeloid landed flame 7]]&lt;br /&gt;
 $2DAAW #[[Patch:Berkeloid|Berkeloid landed flame 8]]&lt;br /&gt;
 $2DAAW #[[Patch:Berkeloid|Berkeloid landed flame 9]]&lt;br /&gt;
 $2DE6W #[[Patch:Berkeloid|Berkeloid landed flame 10]]&lt;br /&gt;
 $2E04W #[[Patch:Berkeloid|Berkeloid landed flame 11]]&lt;br /&gt;
 $2E22W #[[Patch:Foot|Foot appearing smoke 1]]&lt;br /&gt;
 $2E40W #[[Patch:Foot|Foot appearing smoke 2]]&lt;br /&gt;
 $2E5EW #[[Patch:Foot|Foot appearing smoke 3]]&lt;br /&gt;
 $2E7CW #[[Patch:Foot|Foot appearing smoke 4]]&lt;br /&gt;
 $2E9AW #[[Patch:Inchworm|Inchworm 1]]&lt;br /&gt;
 $2EB8W #[[Patch:Inchworm|Inchworm 2]]&lt;br /&gt;
 $2ED6W #[[Patch:Foot|The Foot (Spawned by Inchworms)]]&lt;br /&gt;
 $2EF4W #[[Patch:Foot|The Foot (Placed in P.O.T.F.)]]&lt;br /&gt;
 $2F12W #[[Patch:Bounder|Bounder bouncing vertically]]&lt;br /&gt;
 $2F30W #[[Patch:Bounder|Bounder bouncing vertically]]&lt;br /&gt;
 $2F4EW #[[Patch:Bounder|Bounder bouncing left/right]]&lt;br /&gt;
 $2F6CW #[[Patch:Bounder|Bounder bouncing left/right]]&lt;br /&gt;
 $2F8AW #[[Patch:Bounder|Stunned Bounder in air]]&lt;br /&gt;
 $2FA8W #[[Patch:Bounder|Stunned Bounder on ground]]&lt;br /&gt;
 $2FC6W #[[Patch:Lick|Lick]]&lt;br /&gt;
 $2FE4W #[[Patch:Lick|Lick]]&lt;br /&gt;
 $3002W #[[Patch:Lick|Lick ready to jump]]&lt;br /&gt;
 $3020W #[[Patch:Lick|Lick landing/jumping]]&lt;br /&gt;
 $303EW #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $305CW #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $307AW #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $3098W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $30B6W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $30D4W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $30F2W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $3110W #[[Patch:Lick|Lick done flaming]]&lt;br /&gt;
 $312EW #[[Patch:Lick|Stunned Lick in air]]&lt;br /&gt;
 $314CW #[[Patch:Lick|Stunned Lick]]&lt;br /&gt;
 $316AW #[[Patch:Platform_(Keen_4)|Controllable Airboard]] &lt;br /&gt;
 $3188W #[[Patch:Platform_(Keen_4)|Airboard still]]&lt;br /&gt;
 $31A6W #[[Patch:Platform_(Keen_4)|Airboard fall]]&lt;br /&gt;
 $31C4W #[[Patch:Platform_(Keen_4)|Airboard rise]]&lt;br /&gt;
 $31E2W #[[Patch:Smirky|Smirky (a.k.a. Gnosticene Ancient / Red Guy who steals points)]]&lt;br /&gt;
 $3200W #[[Patch:Smirky|Smirky]]&lt;br /&gt;
 $321EW #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $323CW #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $325AW #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $3278W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $3296W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $32B4W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $32D2W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $32F0W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $330EW #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $332CW #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $334AW #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $3368W #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $3386W #[[Patch:Smirky|Shot Smirky]]&lt;br /&gt;
 $33A4W #[[Patch:Smirky|Stunned Smirky]]&lt;br /&gt;
 $33C2W #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $33E0W #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $33FEW #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $341CW #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $343AW #[[Patch:Mimrock|Mimrock stuck to ground]]&lt;br /&gt;
 $3458W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $3476W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $3494W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $34B2W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $34D0W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $34EEW #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $350CW #[[Patch:Mimrock|Mimrock jumping]]&lt;br /&gt;
 $352AW #[[Patch:Mimrock|Mimrock jumping]]&lt;br /&gt;
 $3548W #[[Patch:Mimrock|Mimrock jumping]]&lt;br /&gt;
 $3566W #[[Patch:Mimrock|Mimrock upside down bouncing]]&lt;br /&gt;
 $3584W #[[Patch:Mimrock|Shot Mimrock]]&lt;br /&gt;
 $35A2W #[[Patch:Mimrock|Stunned Mimrock]]&lt;br /&gt;
 $35C0W #[[Patch:Dopefish|Dopefish swimming]]&lt;br /&gt;
 $35DEW #[[Patch:Dopefish|Dopefish swimming]]&lt;br /&gt;
 $35FCW #[[Patch:Dopefish|Dopefish chomping (Mouth wide open)]]&lt;br /&gt;
 $361AW #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3638W #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3656W #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3674W #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3692W #[[Patch:Dopefish|Dead Schoolfish]]&lt;br /&gt;
 $36B0W #[[Patch:Dopefish|Keen eaten by Dopefish (Stays still so can&#039;t be seen behind fish)]]&lt;br /&gt;
 $36CEW #[[Patch:Keen dying (Keen 4)|Didn&#039;t make it past.. (Well of Wishes eaten death)]]&lt;br /&gt;
 $36ECW #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $370AW #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $3728W #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $3746W #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $3764W #[[Patch:Schoolfish|Schoolfish]]&lt;br /&gt;
 $3782W #[[Patch:Schoolfish|Schoolfish]]&lt;br /&gt;
 $37A0W #[[Patch:Sprite|Sprite]]&lt;br /&gt;
 $37BEW #[[Patch:Sprite|Sprite aiming]]&lt;br /&gt;
 $37DCW #[[Patch:Sprite|Sprite shooting]]&lt;br /&gt;
 $37FAW #[[Patch:Sprite|Sprite shooting]]&lt;br /&gt;
 $3818W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3836W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3854W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3872W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3890W #[[Patch:Underwater Mine|Mine moving]]&lt;br /&gt;
 $38AEW #[[Patch:Underwater Mine|Mine explodes 1]]&lt;br /&gt;
 $38CCW #[[Patch:Underwater Mine|Mine explodes 2]]&lt;br /&gt;
 $38EAW #[[Patch:Lindsey|Princess Lindsey (Floats up offscreen)]]&lt;br /&gt;
 $3908W #[[Patch:Lindsey|Princess Lindsey]]&lt;br /&gt;
 $3926W #[[Patch:Lindsey|Princess Lindsey]]&lt;br /&gt;
 $3944W #[[Patch:Lindsey|Princess Lindsey]]&lt;br /&gt;
 $3962W #[[Patch:Dart_Gun|Dart shooter (All four, by default sprite freezes, then shoots upwards dart)]]&lt;br /&gt;
 $3980W #[[Patch:Dart_Gun|Dart left/right]]&lt;br /&gt;
 $399EW #[[Patch:Dart_Gun|Dart left/right (Shoots immediately)]]&lt;br /&gt;
 $39BCW #[[Patch:Dart_Gun|Dart up]]&lt;br /&gt;
 $39DAW #[[Patch:Dart_Gun|Dart up (Shoots immediately)]]&lt;br /&gt;
 $39F8W #[[Patch:Dart_Gun|Dart down]]&lt;br /&gt;
 $3A16W #[[Patch:Dart_Gun|Dart down (Shoots immediately)]]&lt;br /&gt;
 $3A34W #[[Patch:Wetsuit|The Wetsuit]]&lt;br /&gt;
 $3ABBW #Keen enters Shadowlands (Sometimes takes a life if used wrong.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Null action (Vanish)&lt;br /&gt;
 $0788W #[[Patch:Demo Sign|Demo sign in Highscores level (Invisible)]]&lt;br /&gt;
 $0888W #Keen standing&lt;br /&gt;
 $08A6W #[[Patch:Keen on Platforms|Keen on Platforms]]&lt;br /&gt;
 $08C4W #[[Patch:Keen bored|Keen looks up (Bored)]]&lt;br /&gt;
 $08E2W #[[Patch:Keen bored|Keen shrugs 1 (Bored more)]]&lt;br /&gt;
 $0900W #[[Patch:Keen bored|Keen shrugs 2]]&lt;br /&gt;
 $091EW #[[Patch:Keen bored|Keen shrugs 3]]&lt;br /&gt;
 $093CW #[[Patch:Keen bored|Keen shrugs 4]]&lt;br /&gt;
 $095AW #[[Patch:Keen bored|Keen shrugs 5]]&lt;br /&gt;
 $0978W #[[Patch:Keen bored|Keen shrugs 6]]&lt;br /&gt;
 $0996W #[[Patch:Keen bored|Keen starts reading book 1]]&lt;br /&gt;
 $09B4W #[[Patch:Keen bored|Keen starts reading book 2]]&lt;br /&gt;
 $09D2W #[[Patch:Keen bored|Keen starts reading book 3]]&lt;br /&gt;
 $09F0W #[[Patch:Keen bored|Keen starts reading book 4]]&lt;br /&gt;
 $0A0EW #[[Patch:Keen bored|Keen reads book 1]]&lt;br /&gt;
 $0A2CW #[[Patch:Keen bored|Keen reads book 2]]&lt;br /&gt;
 $0A4AW #[[Patch:Keen bored|Keen reads book 3]]&lt;br /&gt;
 $0A68W #[[Patch:Keen bored|Keen stops reading book 1]]&lt;br /&gt;
 $0A86W #[[Patch:Keen bored|Keen stops reading book 2]]&lt;br /&gt;
 $0AA4W #[[Patch:Keen bored|Keen stops reading book 3]]&lt;br /&gt;
 $0AC2W #[[Patch:Keen look|Keen start looking up]]&lt;br /&gt;
 $0AE0W #[[Patch:Keen look|Keen looking up]]&lt;br /&gt;
 $0AFEW #[[Patch:Keen look|Keen start looking down]]&lt;br /&gt;
 $0B1CW #[[Patch:Keen look|Keen looking down 1]]&lt;br /&gt;
 $0B3AW #[[Patch:Keen look|Keen looking down 2]]&lt;br /&gt;
 $0B58W #[[Patch:Keen look|Keen stop looking down]]&lt;br /&gt;
 $0B76W #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $0B94W #[[Patch:Keen dying (Keen 5)|Defunct dead action]]&lt;br /&gt;
 $0BB2W #[[Patch:Keen dying (Keen 5)|Keen dies sprawled (Restarts level if offscreen.)]]&lt;br /&gt;
 $0BD0W #[[Patch:Keen dying (Keen 5)|Keen dies clutched (Restarts level if offscreen.)]]&lt;br /&gt;
 $0BEEW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally start]]&lt;br /&gt;
 $0C0CW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally]]&lt;br /&gt;
 $0C2AW #[[Patch:Keen shooting (Galaxy)|Keen shooting up start]]&lt;br /&gt;
 $0C48W #[[Patch:Keen shooting (Galaxy)|Keen shooting up]]&lt;br /&gt;
 $0C66W #[[Patch:Keen Flipping Switches|Keen starts flicking switches]]&lt;br /&gt;
 $0C84W #[[Patch:Keen Flipping Switches|Keen finishes flicking switches]]&lt;br /&gt;
 $0CA2W #Keen places gem&lt;br /&gt;
 $0CC0W #[[Patch:Keen opening doors|Keen start interaction with gem holders/ walk-in doors]]&lt;br /&gt;
 $0CDEW #[[Patch:Keen entering doors|Keen attempt to open V-door]]&lt;br /&gt;
 $0CFCW #[[Patch:Keen entering doors|Keen fail to open V-door (Unused)]]&lt;br /&gt;
 $0D1AW #[[Patch:Keen entering doors|Keen walks into door 1]]&lt;br /&gt;
 $0D38W #[[Patch:Keen entering doors|Keen walks into door 2]]&lt;br /&gt;
 $0D56W #[[Patch:Keen entering doors|Keen walks into door 3]]&lt;br /&gt;
 $0D74W #[[Patch:Keen entering doors|Keen walks into door 4]]&lt;br /&gt;
 $0D92W #[[Patch:Keen entering doors|Keen walks into door 5]]&lt;br /&gt;
 $0DB0W #[[Patch:Keen entering doors|Keen walks into door 6]]&lt;br /&gt;
 $0DCEW #[[Patch:Keen on poles|Keen still on a pole]]&lt;br /&gt;
 $0DECW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0E0AW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0E28W #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0E46W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0E64W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0E82W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0EA0W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0EBEW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole start]]&lt;br /&gt;
 $0EDCW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole]]&lt;br /&gt;
 $0EFAW #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole start]]&lt;br /&gt;
 $0F18W #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole]]&lt;br /&gt;
 $0F36W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole start]]&lt;br /&gt;
 $0F54W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole]]&lt;br /&gt;
 $0F72W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F90W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0FAEW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0FCCW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0FEAW #[[Patch:Keen pogoing (Galaxy)|Keen start pogoing]]&lt;br /&gt;
 $1008W #[[Patch:Keen pogoing (Galaxy)|Keen pogoing]]&lt;br /&gt;
 $1026W #[[Patch:Keen pogoing (Galaxy)|Keen pogo bouncing]]&lt;br /&gt;
 $1044W #[[Patch:Keen jumping (Galaxy)|Keen jumping 1]]&lt;br /&gt;
 $1062W #[[Patch:Keen jumping (Galaxy)|Keen jumping 2]]&lt;br /&gt;
 $1080W #[[Patch:Keen jumping (Galaxy)|Keen falling 1]]&lt;br /&gt;
 $109EW #[[Patch:Keen jumping (Galaxy)|Keen falling 2]]&lt;br /&gt;
 $10BCW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air start]]&lt;br /&gt;
 $10DAW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air (Make shot)]]&lt;br /&gt;
 $10F8W #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air]]&lt;br /&gt;
 $1116W #[[Patch:Keen shooting (Galaxy)|Keen shoot up in air start]]&lt;br /&gt;
 $1134W #[[Patch:Keen shooting (Galaxy)|Keen shoot up in air (Make shot)]]&lt;br /&gt;
 $1152W #[[Patch:Keen shooting (Galaxy)|Keen shoot up in air]]&lt;br /&gt;
 $1170W #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air start]]&lt;br /&gt;
 $118EW #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air (Make shot)]]&lt;br /&gt;
 $11ACW #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air]]&lt;br /&gt;
 $11CAW #[[Patch:Keen grabs ledge|Keen gripping ledge start]]&lt;br /&gt;
 $11E8W #[[Patch:Keen grabs ledge|Keen gripping ledge]]&lt;br /&gt;
 $1206W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 1]]&lt;br /&gt;
 $1224W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 2]]&lt;br /&gt;
 $1242W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 3]]&lt;br /&gt;
 $1260W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 4]]&lt;br /&gt;
 $127EW #[[Patch:Keen grabs ledge|Keen stands back up]]&lt;br /&gt;
 $133EW #[[Patch:Demo Sign|Invisible demo sign]]&lt;br /&gt;
 $135CW #[[Patch:Demo Sign|Demo sign]]&lt;br /&gt;
 $137AW #[[Patch:Keen_on_map_(Galaxy)|Map Keen standing (clear walking animations)]]&lt;br /&gt;
 $1398W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wait (Maintain existing animation until keypress)]]&lt;br /&gt;
 $13B6W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 1]]&lt;br /&gt;
 $13D4W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 2]]&lt;br /&gt;
 $13F2W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 3]]&lt;br /&gt;
 $1410W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 4]]&lt;br /&gt;
 $142EW #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 5]]&lt;br /&gt;
 $144CW #[[Patch:Keen_on_map_(Galaxy)|Map Keen moving]]&lt;br /&gt;
 $148AW #[[Patch:Flags|Keen K flag waving 1]]&lt;br /&gt;
 $14A8W #[[Patch:Flags|Keen K flag waving 2]]&lt;br /&gt;
 $14C6W #[[Patch:Flags|Keen K flag waving 3]]&lt;br /&gt;
 $14E4W #[[Patch:Flags|Keen K flag waving 4]]&lt;br /&gt;
 $1502W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 1]]&lt;br /&gt;
 $1520W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 2]]&lt;br /&gt;
 $153EW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 3]]&lt;br /&gt;
 $155CW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 4]]&lt;br /&gt;
 $157AW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot smash 1]]&lt;br /&gt;
 $1598W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot smash 2]]&lt;br /&gt;
 $15B6W #[[Patch:Keygem_door|Open door 1]]&lt;br /&gt;
 $15D4W #[[Patch:Keygem_door|Open door 2]]&lt;br /&gt;
 $15F2W #[[Patch:Keygem_door|Open door 3]]&lt;br /&gt;
 $1610W #Open V-card door&lt;br /&gt;
 $1946W #[[Patch:Items|Items 1]]&lt;br /&gt;
 $1964W #[[Patch:Items|Items 2]]&lt;br /&gt;
 $1982W #[[Patch:Items|Blooglet gem-type item 1 (Unused)]]&lt;br /&gt;
 $19A0W #[[Patch:Items|Blooglet gem-type item 2 (Unused)]]&lt;br /&gt;
 $19BEW #[[Patch:Items|Stuff got]]&lt;br /&gt;
 $19DCW #[[Patch:Vitalin|Vitalin got 1]]&lt;br /&gt;
 $19FAW #[[Patch:Vitalin|Vitalin got 2]]&lt;br /&gt;
 $1A18W #[[Patch:Vitalin|Vitalin got 3]]&lt;br /&gt;
 $1A36W #[[Patch:Vitalin|Vitalin got 4]]&lt;br /&gt;
 $1A6EW #[[Patch:Teleporter_(Sprite)|Teleporter upper zap 1]]&lt;br /&gt;
 $1A8CW #[[Patch:Teleporter_(Sprite)|Teleporter upper zap 2]]&lt;br /&gt;
 $1AAAW #[[Patch:Teleporter_(Sprite)|Teleporter lower zap 1]]&lt;br /&gt;
 $1AC8W #[[Patch:Teleporter_(Sprite)|Teleporter lower zap 2]]&lt;br /&gt;
 $1AE6W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 1]]&lt;br /&gt;
 $1B04W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 2]]&lt;br /&gt;
 $1B22W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 3]]&lt;br /&gt;
 $1B40W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 4 (Invisible, behavior sets up fuse\Q.E.D window\ending)]]&lt;br /&gt;
 $1B5EW #[[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Red Platform]]&lt;br /&gt;
 $1B7CW #[[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Purple Platform 1]]&lt;br /&gt;
 $1B9AW #[[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Purple Platform 2]]&lt;br /&gt;
 $1BB8W #[[Patch:Dropping Platform (Keen 5)|Dropping Red Platform sit]]&lt;br /&gt;
 $1BD6W #[[Patch:Dropping Platform (Keen 5)|Dropping Red Platform fall]]&lt;br /&gt;
 $1BF4W #[[Patch:Dropping Platform (Keen 5)|Dropping Red Platform rise]]&lt;br /&gt;
 $1C12W #[[Patch:Sitting Platform (Keen 5)|Sitting Red Platform]]&lt;br /&gt;
 $1C30W #[[Patch:Goplat (Keen 5)|Red Goplat]]&lt;br /&gt;
 $1C4EW #[[Patch:Goplat (Keen 5)|Purple Goplat 1]]&lt;br /&gt;
 $1C6CW #[[Patch:Goplat (Keen 5)|Purple Goplat 2]]&lt;br /&gt;
 $1CCCW #[[Patch:Volte-face|Volte-Face 1]]&lt;br /&gt;
 $1CEAW #[[Patch:Volte-face|Volte-Face 2]]&lt;br /&gt;
 $1D08W #[[Patch:Volte-face|Volte-Face 3]]&lt;br /&gt;
 $1D26W #[[Patch:Volte-face|Volte-Face 4]]&lt;br /&gt;
 $1D44W #[[Patch:Volte-face|Volte-Face stunned]]&lt;br /&gt;
 $1DA4W #[[Patch:Sneaky Platform (Keen 5)|Sneaky Platform wait]]&lt;br /&gt;
 $1DC2W #[[Patch:Sneaky Platform (Keen 5)|Sneaky Platform flee]]&lt;br /&gt;
 $1DE0W #[[Patch:Sneaky Platform (Keen 5)|Sneaky Platform return]]&lt;br /&gt;
 $1DFEW #[[Patch:Enemy_shooter_(Keen_5)|Gun wait]]&lt;br /&gt;
 $1E1CW #[[Patch:Enemy_shooter_(Keen_5)|Gun make shot]]&lt;br /&gt;
 $1E3AW #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 1]]&lt;br /&gt;
 $1E58W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 2]]&lt;br /&gt;
 $1E76W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 3]]&lt;br /&gt;
 $1E94W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 4]]&lt;br /&gt;
 $1EB2W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot zaps 1]]&lt;br /&gt;
 $1ED0W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot zaps 2]]&lt;br /&gt;
 $1F0CW #[[Patch:Sparky|Sparky walk 1]]&lt;br /&gt;
 $1F2AW #[[Patch:Sparky|Sparky walk 2]]&lt;br /&gt;
 $1F48W #[[Patch:Sparky|Sparky walk 3]]&lt;br /&gt;
 $1F66W #[[Patch:Sparky|Sparky walk 4]]&lt;br /&gt;
 $1F84W #[[Patch:Sparky|Sparky look 1]]&lt;br /&gt;
 $1FA2W #[[Patch:Sparky|Sparky look 2]]&lt;br /&gt;
 $1FC0W #[[Patch:Sparky|Sparky look 3]]&lt;br /&gt;
 $1FDEW #[[Patch:Sparky|Sparky look 4]]&lt;br /&gt;
 $1FFCW #[[Patch:Sparky|Sparky look 5]]&lt;br /&gt;
 $201AW #[[Patch:Sparky|Sparky look 6]]&lt;br /&gt;
 $2038W #[[Patch:Sparky|Sparky look 7]]&lt;br /&gt;
 $2056W #[[Patch:Sparky|Sparky look 8]]&lt;br /&gt;
 $2074W #[[Patch:Sparky|Sparky prepare to charge 1]]&lt;br /&gt;
 $2092W #[[Patch:Sparky|Sparky prepare to charge 2]]&lt;br /&gt;
 $20B0W #[[Patch:Sparky|Sparky prepare to charge 3]]&lt;br /&gt;
 $20CEW #[[Patch:Sparky|Sparky prepare to charge 4]]&lt;br /&gt;
 $20ECW #[[Patch:Sparky|Sparky charge 1]]&lt;br /&gt;
 $210AW #[[Patch:Sparky|Sparky charge 2]]&lt;br /&gt;
 $2128W #[[Patch:Sparky|Sparky charge 3]]&lt;br /&gt;
 $2146W #[[Patch:Sparky|Sparky charge 4]]&lt;br /&gt;
 $2164W #[[Patch:Sparky|Sparky turn 1]]&lt;br /&gt;
 $2182W #[[Patch:Sparky|Sparky turn 2]]&lt;br /&gt;
 $21A0W #[[Patch:Sparky|Sparky turn 3]]&lt;br /&gt;
 $21BEW #[[Patch:Sparky|Stunned Sparky]]&lt;br /&gt;
 $21DCW #[[Patch:Little_Ampton|Lil Ampton walk 1]]&lt;br /&gt;
 $21FAW #[[Patch:Little_Ampton|Lil Ampton walk 2]]&lt;br /&gt;
 $2218W #[[Patch:Little_Ampton|Lil Ampton walk 3]]&lt;br /&gt;
 $2236W #[[Patch:Little_Ampton|Lil Ampton walk 4]]&lt;br /&gt;
 $2254W #[[Patch:Little_Ampton|Lil Ampton turn]]&lt;br /&gt;
 $2272W #[[Patch:Little_Ampton|Lil Ampton start pole slide 1]]&lt;br /&gt;
 $2290W #[[Patch:Little_Ampton|Lil Ampton start pole slide 2]]&lt;br /&gt;
 $22AEW #[[Patch:Little_Ampton|Lil Ampton pole slide]]&lt;br /&gt;
 $22CCW #[[Patch:Little_Ampton|Lil Ampton stop pole slide 1]]&lt;br /&gt;
 $22EAW #[[Patch:Little_Ampton|Lil Ampton stop pole slide 2]]&lt;br /&gt;
 $2308W #[[Patch:Little_Ampton|Lil Ampton flip switch 1]]&lt;br /&gt;
 $2326W #[[Patch:Little_Ampton|Lil Ampton flip switch 2]]&lt;br /&gt;
 $2344W #[[Patch:Little_Ampton|Lil Ampton flip switch 3]]&lt;br /&gt;
 $2362W #[[Patch:Little_Ampton|Lil Ampton flip switch 4]]&lt;br /&gt;
 $2380W #[[Patch:Little_Ampton|Lil Ampton flip switch 5]]&lt;br /&gt;
 $239EW #[[Patch:Little_Ampton|Stunned Ampton]]&lt;br /&gt;
 $23BCW #[[Patch:Slicestar|u/d/horizontally Slicestar]]&lt;br /&gt;
 $23DAW #[[Patch:Slicestar|Bouncy Slicestar]]&lt;br /&gt;
 $23F8W #[[Patch:Slicestar|lSlicestar smashed]]&lt;br /&gt;
 $2416W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $2434W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $2452W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $2470W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $248EW #[[Patch:Shelly|Shelly prepare to jump]]&lt;br /&gt;
 $24ACW #[[Patch:Shelly|Shelly jump]]&lt;br /&gt;
 $24CAW #[[Patch:Shelly|Shelly fall]]&lt;br /&gt;
 $24E8W #[[Patch:Shelly|Shelly fall]]&lt;br /&gt;
 $2506W #[[Patch:Shelly|Shelly smash]]&lt;br /&gt;
 $2524W #[[Patch:Shelly|Shelly smash]]&lt;br /&gt;
 $2542W #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $2560W #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $257EW #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $259CW #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $25BAW #[[Patch:Shelly|Shelly fragments]]&lt;br /&gt;
 $25D8W #[[Patch:Shelly|Shelly fragments]]&lt;br /&gt;
 $2608W #[[Patch:Shikadi Mine|Shikadi mine sit]]&lt;br /&gt;
 $2626W #[[Patch:Shikadi Mine|Shikadi mine move]]&lt;br /&gt;
 $2644W #[[Patch:Shikadi Mine|Shikadi mine change direction]]&lt;br /&gt;
 $2662W #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $2680W #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $269EW #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $26BCW #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $26DAW #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $26F8W #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $2716W #[[Patch:Shikadi Mine|Shikadi mine fragments]]&lt;br /&gt;
 $2734W #[[Patch:Robo Red|Robo Red move]]&lt;br /&gt;
 $2752W #[[Patch:Robo Red|Robo Red pause before shooting]]&lt;br /&gt;
 $2770W #[[Patch:Robo Red|Robo Red shoot]]&lt;br /&gt;
 $278EW #[[Patch:Robo Red|Robo Red shoot (Make shot)]]&lt;br /&gt;
 $27ACW #[[Patch:Robo Red|Robo Red&#039;s shot]]&lt;br /&gt;
 $27CAW #[[Patch:Robo Red|Robo Red&#039;s shot]]&lt;br /&gt;
 $27E8W #[[Patch:Robo Red|Robo Red&#039;s shot smash]]&lt;br /&gt;
 $2806W #[[Patch:Robo Red|Robo Red&#039;s shot smash]]&lt;br /&gt;
 $2824W #[[Patch:Spirogrip|Spirogrip pause down]]&lt;br /&gt;
 $2842W #[[Patch:Spirogrip|Spirogrip reverse down (Move up)]]&lt;br /&gt;
 $2860W #[[Patch:Spirogrip|Spirogrip pause left]]&lt;br /&gt;
 $287EW #[[Patch:Spirogrip|Spirogrip reverse left (Move right)]]&lt;br /&gt;
 $289CW #[[Patch:Spirogrip|Spirogrip pause up]]&lt;br /&gt;
 $28BAW #[[Patch:Spirogrip|Spirogrip reverse up]]&lt;br /&gt;
 $28D8W #[[Patch:Spirogrip|Spirogrip pause right]]&lt;br /&gt;
 $28F6W #[[Patch:Spirogrip|Spirogrip reverse right]]&lt;br /&gt;
 $2914W #[[Patch:Spirogrip|Spirogrip spin 1]]&lt;br /&gt;
 $2932W #[[Patch:Spirogrip|Spirogrip spin 2]]&lt;br /&gt;
 $2950W #[[Patch:Spirogrip|Spirogrip spin 3]]&lt;br /&gt;
 $296EW #[[Patch:Spirogrip|Spirogrip spin 4]]&lt;br /&gt;
 $298CW #[[Patch:Spirogrip|Spirogrip spin 5]]&lt;br /&gt;
 $29AAW #[[Patch:Spirogrip|Spirogrip spin 6]]&lt;br /&gt;
 $29C8W #[[Patch:Spirogrip|Spirogrip spin 7]]&lt;br /&gt;
 $29E6W #[[Patch:Spirogrip|Spirogrip spin 8]]&lt;br /&gt;
 $2A04W #[[Patch:Spirogrip|Spirogrip move down]]&lt;br /&gt;
 $2A22W #[[Patch:Spirogrip|Spirogrip move left]]&lt;br /&gt;
 $2A40W #[[Patch:Spirogrip|Spirogrip move up]]&lt;br /&gt;
 $2A5EW #[[Patch:Spirogrip|Spirogrip move right]]&lt;br /&gt;
 $2A7CW #[[Patch:Spindred|Spindred 1]]&lt;br /&gt;
 $2A9AW #[[Patch:Spindred|Spindred 2]]&lt;br /&gt;
 $2AB8W #[[Patch:Spindred|Spindred 3]]&lt;br /&gt;
 $2AD6W #[[Patch:Spindred|Spindred 4]]&lt;br /&gt;
 $2AF4W #[[Patch:Shikadi Master|Shikadi Master stand 1]]&lt;br /&gt;
 $2B12W #[[Patch:Shikadi Master|Shikadi Master stand 2]]&lt;br /&gt;
 $2B30W #[[Patch:Shikadi Master|Shikadi Master stand 3]]&lt;br /&gt;
 $2B4EW #[[Patch:Shikadi Master|Shikadi Master stand 4]]&lt;br /&gt;
 $2B6CW #[[Patch:Shikadi Master|Shikadi Master shoot]]&lt;br /&gt;
 $2B8AW #[[Patch:Shikadi Master|Shikadi Master shoot (Make shot)]]&lt;br /&gt;
 $2BA8W #[[Patch:Shikadi Master|Shikadi Master teleport 1]]&lt;br /&gt;
 $2BC6W #[[Patch:Shikadi Master|Shikadi Master teleport 2 (make groundsparks, vanish)]]&lt;br /&gt;
 $2BE4W #[[Patch:Shikadi Master|Shikadi Master teleport 3 (reappear, fall)]]&lt;br /&gt;
 $2C02W #[[Patch:Shikadi Master|Shikadi Master teleport 4]]&lt;br /&gt;
 $2C20W #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 1]]&lt;br /&gt;
 $2C3EW #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 2]]&lt;br /&gt;
 $2C5CW #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 3]]&lt;br /&gt;
 $2C7AW #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 4]]&lt;br /&gt;
 $2C98W #[[Patch:Shikadi Master|Shikadi Master sparks 1]]&lt;br /&gt;
 $2CB6W #[[Patch:Shikadi Master|Shikadi Master sparks 2]]&lt;br /&gt;
 $2CD4W #[[Patch:Shikadi Master|Shikadi Master sparks 3]]&lt;br /&gt;
 $2CF2W #[[Patch:Shikadi Master|Shikadi Master sparks 4]]&lt;br /&gt;
 $2D10W #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D2EW #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D4CW #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D6AW #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D88W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2DA6W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2DC4W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2DE2W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2E00W #[[Patch:Shikadi|Shikadi polezaps]]&lt;br /&gt;
 $2E1EW #[[Patch:Shikadi|Shikadi polezaps]]&lt;br /&gt;
 $2E3CW #[[Patch:Shikadi|Shikadi stunned]]&lt;br /&gt;
 $2E5AW #[[Patch:Shikadi|Shikadi polezap]]&lt;br /&gt;
 $2E78W #[[Patch:Shikadi|Shikadi polezap]]&lt;br /&gt;
 $2E96W #[[Patch:Shockshund|Shocksund sit 1]]&lt;br /&gt;
 $2EB4W #[[Patch:Shockshund|Shocksund sit 2]]&lt;br /&gt;
 $2ED2W #[[Patch:Shockshund|Shocksund bark 1]]&lt;br /&gt;
 $2EF0W #[[Patch:Shockshund|Shocksund bark 2]]&lt;br /&gt;
 $2F0EW #[[Patch:Shockshund|Shocksund walk 1]]&lt;br /&gt;
 $2F2CW #[[Patch:Shockshund|Shocksund walk 2]]&lt;br /&gt;
 $2F4AW #[[Patch:Shockshund|Shocksund walk 3]]&lt;br /&gt;
 $2F68W #[[Patch:Shockshund|Shocksund walk 4]]&lt;br /&gt;
 $2F86W #[[Patch:Shockshund|Shocksund jump]]&lt;br /&gt;
 $2FA4W #[[Patch:Shockshund|Shocksund&#039;s shot 1]]&lt;br /&gt;
 $2FC2W #[[Patch:Shockshund|Shocksund&#039;s shot 2]]&lt;br /&gt;
 $2FE0W #[[Patch:Shockshund|Shocksund&#039;s shot smash 1]]&lt;br /&gt;
 $2FFEW #[[Patch:Shockshund|Shocksund&#039;s shot smash 2]]&lt;br /&gt;
 $301CW #[[Patch:Shockshund|Shocksund stunned]]&lt;br /&gt;
 $303AW #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $3058W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $3076W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $3094W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $30B2W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $30D2W #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $30F0W #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $310EW #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $312CW #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $314AW #[[Patch:Korath|Korath sit]]&lt;br /&gt;
 $3168W #[[Patch:Korath|Korath stunned]]&lt;br /&gt;
 $3186W #[[Patch:Q.E.D_(Sprite)|QED\Fuse counter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Null action (Vanish)&lt;br /&gt;
 $089AW #Keen standing&lt;br /&gt;
 $08B8W #[[Patch:Keen bored|Keen look up (Bored)]]&lt;br /&gt;
 $08D6W #[[Patch:Keen bored|Keen bored, hands on hips, looks at player]]&lt;br /&gt;
 $08F4W #[[Patch:Keen bored|Keen hands on hips, blinks]]&lt;br /&gt;
 $0912W #[[Patch:Keen bored|Keen hands on hips, looks at player 2]]&lt;br /&gt;
 $0930W #[[Patch:Keen bored|Keen hands on hips, blinks 2]]&lt;br /&gt;
 $094EW #[[Patch:Keen bored|Keen hands on hips, looks at player 3]]&lt;br /&gt;
 $096CW #[[Patch:Keen bored|Keen shrugs]]&lt;br /&gt;
 $098AW #[[Patch:Keen bored|Keen gets out book 1]]&lt;br /&gt;
 $09A8W #[[Patch:Keen bored|Keen gets out book 2]]&lt;br /&gt;
 $09C6W #[[Patch:Keen bored|Keen gets out book 3]]&lt;br /&gt;
 $09E4W #[[Patch:Keen bored|Keen gets out book 4]]&lt;br /&gt;
 $0A02W #[[Patch:Keen bored|Keen reads book]]&lt;br /&gt;
 $0A20W #[[Patch:Keen bored|Keen bored, looks up from book 1]]&lt;br /&gt;
 $0A3EW #[[Patch:Keen bored|Keen bored, looks up from book 2]]&lt;br /&gt;
 $0A5CW #[[Patch:Keen bored|Keen stops reading book 1]]&lt;br /&gt;
 $0A7AW #[[Patch:Keen bored|Keen stops reading book 2]]&lt;br /&gt;
 $0A98W #[[Patch:Keen bored|Keen stops reading book 3]]&lt;br /&gt;
 $0AB6W #[[Patch:Keen look|Keen start looking up]]&lt;br /&gt;
 $0AD4W #[[Patch:Keen look|Keen looking up]]&lt;br /&gt;
 $0AF2W #[[Patch:Keen look|Keen start looking down]]&lt;br /&gt;
 $0B10W #[[Patch:Keen look|Keen looking down 1]]&lt;br /&gt;
 $0B2EW #[[Patch:Keen look|Keen looking down 2]]&lt;br /&gt;
 $0B4CW #[[Patch:Keen look|Keen stop looking down]]&lt;br /&gt;
 $0B6AW #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $0B88W #[[Patch:Keen dying (Keen 6)|Defunct dead action]]&lt;br /&gt;
 $0BA6W #[[Patch:Keen dying (Keen 6)|Keen dies clutched (Exits level if offscreen.)]]&lt;br /&gt;
 $0BC4W #[[Patch:Keen dying (Keen 6)|Keen dies sprawled (Exits level if offscreen.)]]&lt;br /&gt;
 $0BE2W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally 1]]&lt;br /&gt;
 $0C00W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally 2]]&lt;br /&gt;
 $0C1EW #[[Patch:Keen shooting (Galaxy)|Keen shoots up 1]]&lt;br /&gt;
 $0C3CW #[[Patch:Keen shooting (Galaxy)|Keen shoots up 2]]&lt;br /&gt;
 $0C5AW #Keen places gem&lt;br /&gt;
 $0C78W #Keen places gem&lt;br /&gt;
 $0C96W #Keen places gem and opens door&lt;br /&gt;
 $0CB4W #Keen adjust position&lt;br /&gt;
 $0CD2W #[[Patch:Keen entering doors|Keen walks into door 1]]&lt;br /&gt;
 $0CF0W #[[Patch:Keen entering doors|Keen walks into door 2]]&lt;br /&gt;
 $0D0EW #[[Patch:Keen entering doors|Keen walks into door 3]]&lt;br /&gt;
 $0D2CW #[[Patch:Keen entering doors|Keen walks into door 4]]&lt;br /&gt;
 $0D4AW #[[Patch:Keen entering doors|Keen walks into door 5]]&lt;br /&gt;
 $0D68W #[[Patch:Keen on poles|Keen sit on a pole]]&lt;br /&gt;
 $0D86W #[[Patch:Keen on poles|Keen moving up a pole]]&lt;br /&gt;
 $0DA4W #[[Patch:Keen on poles|Keen moving up a pole]]&lt;br /&gt;
 $0DC2W #[[Patch:Keen on poles|Keen moving up a pole]]&lt;br /&gt;
 $0DE0W #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0DFEW #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0E1CW #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0E3AW #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0E58W #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally on a pole 1]]&lt;br /&gt;
 $0E76W #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally on a pole 2]]&lt;br /&gt;
 $0E94W #[[Patch:Keen shooting (Galaxy)|Keen shoot up on a pole 1]]&lt;br /&gt;
 $0EB2W #[[Patch:Keen shooting (Galaxy)|Keen shoot up on a pole 2]]&lt;br /&gt;
 $0ED0W #[[Patch:Keen shooting (Galaxy)|Keen shoot down on a pole 1]]&lt;br /&gt;
 $0EEEW #[[Patch:Keen shooting (Galaxy)|Keen shoot down on a pole 2]]&lt;br /&gt;
 $0F0CW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F2AW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F48W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F66W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F84W #[[Patch:Keen pogoing (Galaxy)|Keen start pogoing]]&lt;br /&gt;
 $0FA2W #[[Patch:Keen pogoing (Galaxy)|Keen pogoing]]&lt;br /&gt;
 $0FC0W #[[Patch:Keen pogoing (Galaxy)|Keen pogo bouncing]]&lt;br /&gt;
 $0FDEW #[[Patch:Keen jumping (Galaxy)|Keen jumping 1]]&lt;br /&gt;
 $0FFCW #[[Patch:Keen jumping (Galaxy)|Keen jumping 2]]&lt;br /&gt;
 $101AW #[[Patch:Keen jumping (Galaxy)|Keen falling 1]]&lt;br /&gt;
 $1038W #[[Patch:Keen jumping (Galaxy)|Keen falling 2]]&lt;br /&gt;
 $1056W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally in air 1]]&lt;br /&gt;
 $1074W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally in air 2]]&lt;br /&gt;
 $1092W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally in air 3]]&lt;br /&gt;
 $10B0W #[[Patch:Keen shooting (Galaxy)|Keen shoots up in air 1]]&lt;br /&gt;
 $10CEW #[[Patch:Keen shooting (Galaxy)|Keen shoots up in air 2]]&lt;br /&gt;
 $10ECW #[[Patch:Keen shooting (Galaxy)|Keen shoots up in air 3]]&lt;br /&gt;
 $110AW #[[Patch:Keen shooting (Galaxy)|Keen shoots down in air 1]]&lt;br /&gt;
 $1128W #[[Patch:Keen shooting (Galaxy)|Keen shoots down in air 2]]&lt;br /&gt;
 $1146W #[[Patch:Keen shooting (Galaxy)|Keen shoots down in air 3]]&lt;br /&gt;
 $1164W #[[Patch:Keen grabs ledge|Keen gripping ledge start]]&lt;br /&gt;
 $1182W #[[Patch:Keen grabs ledge|Keen gripping ledge]]&lt;br /&gt;
 $11A0W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $11BEW #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $11DCW #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $11FAW #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $1218W #[[Patch:Keen grabs ledge|Keen standing after ledgegrip]]&lt;br /&gt;
 $130AW #[[Patch:Keen_on_map_(Galaxy)|Map Keen stand]]&lt;br /&gt;
 $1328W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $1346W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $1364W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $1382W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $13A0W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $13BEW #[[Patch:Keen_on_map_(Galaxy)|Map Keen moving]]&lt;br /&gt;
 $13F4W #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $1412W #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $1430W #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $144EW #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $146CW #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $148AW #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $14A8W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $14C6W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $14E4W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $1502W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $1520W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $153EW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $155CW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $157AW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $1598W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $15B6W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot hits]]&lt;br /&gt;
 $15D4W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot hits]]&lt;br /&gt;
 $15F2W #[[Patch:Keygem_door|Door open 1]]&lt;br /&gt;
 $1610W #[[Patch:Keygem_door|Door open 2]]&lt;br /&gt;
 $162EW #[[Patch:Keygem_door|Door open 3]]&lt;br /&gt;
 $1868W #[[Patch:Keen stunned (Galaxy)|Keen stunned]]&lt;br /&gt;
 $196AW #[[Patch:Items|Items 1]]&lt;br /&gt;
 $1988W #[[Patch:Items|Items 2]]&lt;br /&gt;
 $19A6W #[[Patch:Items|Blooglet Items 1]]&lt;br /&gt;
 $19C4W #[[Patch:Items|Blooglet Items 2]]&lt;br /&gt;
 $19E2W #[[Patch:Items|Items got]]&lt;br /&gt;
 $1A00W #[[Patch:Items|Viva got 1]]&lt;br /&gt;
 $1A1EW #[[Patch:Items|Viva got 2]]&lt;br /&gt;
 $1A3CW #[[Patch:Items|Viva got 3]]&lt;br /&gt;
 $1A5AW #[[Patch:Items|Viva got 4]]&lt;br /&gt;
 $1A90W #[[Patch:Grabbiter|Grabbiter hungry 1]]&lt;br /&gt;
 $1AAEW #[[Patch:Grabbiter|Grabbiter hungry 2]]&lt;br /&gt;
 $1ACCW #[[Patch:Grabbiter|Grabbiter napping 1]]&lt;br /&gt;
 $1AEAW #[[Patch:Grabbiter|Grabbiter napping 2]]&lt;br /&gt;
 $1B08W #[[Patch:Bloogstar Rocket|Rocket sit]]&lt;br /&gt;
 $1B26W #[[Patch:Bloogstar Rocket|Rocket flying]]&lt;br /&gt;
 $1B44W #[[Patch:Bloogstar Rocket|Rocket flying]]&lt;br /&gt;
 $1B62W #[[Patch:Bloogstar Rocket|Keen taking Rocket trip]]&lt;br /&gt;
 $1B80W #[[Patch:Keen 6 map items|Climbable cliff (Invisible)]]&lt;br /&gt;
 $1B9EW #[[Patch:Keen 6 map items|Keen throw rope]]&lt;br /&gt;
 $1BBCW #[[Patch:Keen 6 map items|Keen throw rope]]&lt;br /&gt;
 $1BDAW #[[Patch:Keen 6 map items|Keen climb rope]]&lt;br /&gt;
 $1BF8W #[[Patch:Keen 6 map items|Keen climb rope]]&lt;br /&gt;
 $1C16W #[[Patch:Keen 6 map items|Rope on map]]&lt;br /&gt;
 $1C34W #[[Patch:Keen 6 map items|Rope being thrown]]&lt;br /&gt;
 $1C52W #[[Patch:Satellite|Satellite dropoff point]]&lt;br /&gt;
 $1C70W #[[Patch:Satellite|Keen hang from satellite]]&lt;br /&gt;
 $1C8EW #[[Patch:Satellite|Satellite 1]]&lt;br /&gt;
 $1CACW #[[Patch:Satellite|Satellite 2]]&lt;br /&gt;
 $1CCAW #[[Patch:Satellite|Satellite 3]]&lt;br /&gt;
 $1CE8W #[[Patch:Satellite|Satellite 4]]&lt;br /&gt;
 $1D06W #[[Patch:Keen 6 map items|Sandwich]]&lt;br /&gt;
 $1D24W #[[Patch:Keen 6 map items|Rope]]&lt;br /&gt;
 $1D42W #[[Patch:Keen 6 map items|Card]]&lt;br /&gt;
 $1D60W #[[Patch:Molly|Molly 1]]&lt;br /&gt;
 $1D7EW #[[Patch:Molly|Molly 2]]&lt;br /&gt;
 $1D9CW #[[Patch:Molly|Molly 3]]&lt;br /&gt;
 $1DBAW #[[Patch:Molly|Molly 4]]&lt;br /&gt;
 $1DD8W #[[Patch:Platform (Keen 6)|u/d/horizontally airboard]]&lt;br /&gt;
 $1DF6W #[[Patch:Platform (Keen 6)|Drop/rise airboard sit]]&lt;br /&gt;
 $1E14W #[[Patch:Platform (Keen 6)|Drop/rise airboard fall]]&lt;br /&gt;
 $1E32W #[[Patch:Platform (Keen 6)|Drop/rise airboard rise]]&lt;br /&gt;
 $1E50W #[[Patch:Platform (Keen 6)|Sit airboard]]&lt;br /&gt;
 $1E6EW #[[Patch:Platform (Keen 6)|Info path airboard]]&lt;br /&gt;
 $1E8CW #[[Patch:Platform (Keen 6)|Sneaky Airboard sit]]&lt;br /&gt;
 $1EAAW #[[Patch:Platform (Keen 6)|Sneaky Airboard flee]]&lt;br /&gt;
 $1EC8W #[[Patch:Platform (Keen 6)|Sneaky Airboard return]]&lt;br /&gt;
 $1EE6W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F04W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F22W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F40W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F5EW #[[Patch:Bloog|Bloog stunned]]&lt;br /&gt;
 $1F7CW #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1F9AW #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1FB8W #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1FD6W #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1FF4W #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $2012W #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $2030W #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $204EW #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $206CW #[[Patch:Blooguard|Blooguard stunned]]&lt;br /&gt;
 $208AW #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $20A8W #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $20C6W #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $20E4W #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $2102W #[[Patch:Blooglet|Red Blooglet stunned]]&lt;br /&gt;
 $2120W #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $213EW #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $215CW #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $217AW #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $2198W #[[Patch:Blooglet|Yellow Blooglet stunned]]&lt;br /&gt;
 $21B6W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $21D4W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $21F2W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $2210W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $222EW #[[Patch:Blooglet|Blue Blooglet stunned]]&lt;br /&gt;
 $224CW #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $226AW #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $2288W #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $22A6W #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $22C4W #[[Patch:Blooglet|Green Blooglet stunned]]&lt;br /&gt;
 $2460W #[[Patch:Nospike|Nospike sit]]&lt;br /&gt;
 $247EW #[[Patch:Nospike|Nospike walk 1]]&lt;br /&gt;
 $249CW #[[Patch:Nospike|Nospike walk 2]]&lt;br /&gt;
 $24BAW #[[Patch:Nospike|Nospike walk 3]]&lt;br /&gt;
 $24D8W #[[Patch:Nospike|Nospike walk 4]]&lt;br /&gt;
 $24F6W #[[Patch:Nospike|Nospike charge 1]]&lt;br /&gt;
 $2514W #[[Patch:Nospike|Nospike charge 2]]&lt;br /&gt;
 $2532W #[[Patch:Nospike|Nospike charge 3]]&lt;br /&gt;
 $2550W #[[Patch:Nospike|Nospike charge 4]]&lt;br /&gt;
 $256EW #[[Patch:Nospike|Nospike hanging in air]]&lt;br /&gt;
 $258CW #[[Patch:Nospike|Nospike make a &#039;?&#039;]]&lt;br /&gt;
 $25AAW #[[Patch:Nospike|Nospike with &#039;?&#039;]]&lt;br /&gt;
 $25C8W #[[Patch:Nospike|Nospike fall (Will not hit ground unless it has Nospike property)]]&lt;br /&gt;
 $25E6W #[[Patch:Nospike|Stunned Nospike]]&lt;br /&gt;
 $2604W #[[Patch:Gik|Gik walking]]&lt;br /&gt;
 $2622W #[[Patch:Gik|Gik walking]]&lt;br /&gt;
 $2640W #[[Patch:Gik|Gik walking]]&lt;br /&gt;
 $265EW #[[Patch:Gik|Gik jumping]]&lt;br /&gt;
 $267CW #[[Patch:Gik|Gik slide 1]]&lt;br /&gt;
 $269AW #[[Patch:Gik|Gik slide 2]]&lt;br /&gt;
 $26B8W #[[Patch:Gik|Gik recover]]&lt;br /&gt;
 $26F6W #[[Patch:Enemy shooter (Keen 6)|Enemy gun wait]]&lt;br /&gt;
 $2714W #[[Patch:Enemy shooter (Keen 6)|Enemy gun shoot]]&lt;br /&gt;
 $2732W #[[Patch:Enemy shooter (Keen 6)|Pink bullet 1]]&lt;br /&gt;
 $2750W #[[Patch:Enemy shooter (Keen 6)|Pink bullet 2]]&lt;br /&gt;
 $276EW #[[Patch:Enemy shooter (Keen 6)|Pink bullet 3]]&lt;br /&gt;
 $278CW #[[Patch:Enemy shooter (Keen 6)|Pink bullet 4]]&lt;br /&gt;
 $27AAW #[[Patch:Enemy shooter (Keen 6)|Pink bullet smash 1]]&lt;br /&gt;
 $27C8W #[[Patch:Enemy shooter (Keen 6)|Pink bullet smash 2]]&lt;br /&gt;
 $27E6W #[[Patch:Orbatrix|Orbatrix float 1]]&lt;br /&gt;
 $2804W #[[Patch:Orbatrix|Orbatrix float 2]]&lt;br /&gt;
 $2822W #[[Patch:Orbatrix|Orbatrix curls 1]]&lt;br /&gt;
 $2840W #[[Patch:Orbatrix|Orbatrix curls 2]]&lt;br /&gt;
 $285EW #[[Patch:Orbatrix|Orbatrix curls 3]]&lt;br /&gt;
 $287CW #[[Patch:Orbatrix|Orbatrix uncurls 1]]&lt;br /&gt;
 $289AW #[[Patch:Orbatrix|Orbatrix uncurls 2]]&lt;br /&gt;
 $28B8W #[[Patch:Orbatrix|Orbatrix uncurls 3]]&lt;br /&gt;
 $28D6W #[[Patch:Orbatrix|Orbatrix uncurls 4]]&lt;br /&gt;
 $28F4W #[[Patch:Orbatrix|Orbatrix uncurls 5]]&lt;br /&gt;
 $2912W #[[Patch:Orbatrix|Orbatrix uncurls 6]]&lt;br /&gt;
 $2930W #[[Patch:Orbatrix|Orbatrix bounding 1]]&lt;br /&gt;
 $294EW #[[Patch:Orbatrix|Orbatrix bounding 2]]&lt;br /&gt;
 $296CW #[[Patch:Orbatrix|Orbatrix bounding 3]]&lt;br /&gt;
 $298AW #[[Patch:Orbatrix|Orbatrix bounding 4]]&lt;br /&gt;
 $29A8W #[[Patch:Bip|Bip standing]]&lt;br /&gt;
 $29C6W #[[Patch:Bip|Bip walking 1]]&lt;br /&gt;
 $29E4W #[[Patch:Bip|Bip walking 2]]&lt;br /&gt;
 $2A02W #[[Patch:Bip|Bip walking 3]]&lt;br /&gt;
 $2A20W #[[Patch:Bip|Bip walking 4]]&lt;br /&gt;
 $2A3EW #[[Patch:Bip|Bip squished]]&lt;br /&gt;
 $2A5CW #[[Patch:Bipship|Bipship moving horizontally]]&lt;br /&gt;
 $2A7AW #[[Patch:Bipship|Bipship&#039;s shot]]&lt;br /&gt;
 $2A98W #[[Patch:Bipship|Bipship turning 1]]&lt;br /&gt;
 $2AB6W #[[Patch:Bipship|Bipship turning 2]]&lt;br /&gt;
 $2AD4W #[[Patch:Bipship|Bipship turning 3]]&lt;br /&gt;
 $2AF2W #[[Patch:Bipship|Bipship turning 4]]&lt;br /&gt;
 $2B10W #[[Patch:Bipship|Bipship falling]]&lt;br /&gt;
 $2B2EW #[[Patch:Bipship|Bipship crashing]]&lt;br /&gt;
 $2B4CW #[[Patch:Bipship|Bipship wreckage]]&lt;br /&gt;
 $2B6AW #[[Patch:Bipship|Bipship smoke 1]]&lt;br /&gt;
 $2B88W #[[Patch:Bipship|Bipship smoke 2]]&lt;br /&gt;
 $2BA6W #[[Patch:Flect|Flect standing]]&lt;br /&gt;
 $2BC4W #[[Patch:Flect|Flect turning]]&lt;br /&gt;
 $2BE2W #[[Patch:Flect|Flect walking 1]]&lt;br /&gt;
 $2C00W #[[Patch:Flect|Flect walking 2]]&lt;br /&gt;
 $2C1EW #[[Patch:Flect|Flect walking 3]]&lt;br /&gt;
 $2C3CW #[[Patch:Flect|Flect walking 4]]&lt;br /&gt;
 $2C5AW #[[Patch:Flect|Flect stunned]]&lt;br /&gt;
 $2C78W #[[Patch:Fleex|Fleex walking 1]]&lt;br /&gt;
 $2C96W #[[Patch:Fleex|Fleex walking 2]]&lt;br /&gt;
 $2CB4W #[[Patch:Fleex|Fleex chasing 1]]&lt;br /&gt;
 $2CD2W #[[Patch:Fleex|Fleex chasing 2]]&lt;br /&gt;
 $2CF0W #[[Patch:Fleex|Fleex chasing 3]]&lt;br /&gt;
 $2D0EW #[[Patch:Fleex|Fleex chasing 4]]&lt;br /&gt;
 $2D2CW #[[Patch:Fleex|Fleex looking 1]]&lt;br /&gt;
 $2D4AW #[[Patch:Fleex|Fleex looking 2]]&lt;br /&gt;
 $2D68W #[[Patch:Fleex|Fleex stunned]]&lt;br /&gt;
 $2D86W #[[Patch:Bobba|Bobba jump]]&lt;br /&gt;
 $2DA4W #[[Patch:Bobba|Bobba fall]]&lt;br /&gt;
 $2DC2W #[[Patch:Bobba|Bobba land]]&lt;br /&gt;
 $2DE0W #[[Patch:Bobba|Bobba shoot]]&lt;br /&gt;
 $2DFEW #[[Patch:Bobba|Bobba eye twinkle 1]]&lt;br /&gt;
 $2E1CW #[[Patch:Bobba|Bobba eye twinkle 2]]&lt;br /&gt;
 $2E3AW #[[Patch:Bobba|Bobba eye twinkle 3]]&lt;br /&gt;
 $2E58W #[[Patch:Bobba|Bobba eye twinkle 4]]&lt;br /&gt;
 $2E76W #[[Patch:Bobba|Bobba fireball 1]]&lt;br /&gt;
 $2E94W #[[Patch:Bobba|Bobba fireball 2]]&lt;br /&gt;
 $2EB2W #[[Patch:Bobba|Bobba fireball 3]]&lt;br /&gt;
 $2ED0W #[[Patch:Bobba|Bobba fireball 4]]&lt;br /&gt;
 $2EEEW #[[Patch:Bobba|Bobba fireball smash 1]]&lt;br /&gt;
 $2F0CW #[[Patch:Bobba|Bobba fireball smash 2]]&lt;br /&gt;
 $2F2AW #[[Patch:Bobba|Bobba fireball smash 3]]&lt;br /&gt;
 $2F48W #[[Patch:Babobba|Babobba jump]]&lt;br /&gt;
 $2F66W #[[Patch:Babobba|Babobba fall]]&lt;br /&gt;
 $2F84W #[[Patch:Babobba|Babobba land]]&lt;br /&gt;
 $2FA2W #[[Patch:Babobba|Babobba shoot]]&lt;br /&gt;
 $2FC0W #[[Patch:Babobba|Babobba stunned]]&lt;br /&gt;
 $2FDEW #[[Patch:Babobba|Babobba stunned and landed]]&lt;br /&gt;
 $2FFCW #[[Patch:Babobba|Babobba napping 1]]&lt;br /&gt;
 $301AW #[[Patch:Babobba|Babobba napping 2]]&lt;br /&gt;
 $3038W #[[Patch:Babobba|Babobba napping 3]]&lt;br /&gt;
 $3056W #[[Patch:Babobba|Babobba napping 4 (Asleep)]]&lt;br /&gt;
 $3074W #[[Patch:Babobba|Babobba napping 5]]&lt;br /&gt;
 $3092W #[[Patch:Babobba|Babobba napping 6]]&lt;br /&gt;
 $30B0W #[[Patch:Babobba|Babobba napping 7 (Wake up)]]&lt;br /&gt;
 $30CEW #[[Patch:Babobba|Babobba cinder tossed]]&lt;br /&gt;
 $30ECW #[[Patch:Babobba|Babobba cinder landed 1]]&lt;br /&gt;
 $310AW #[[Patch:Babobba|Babobba cinder landed 2]]&lt;br /&gt;
 $3128W #[[Patch:Babobba|Babobba cinder dying 1]]&lt;br /&gt;
 $3146W #[[Patch:Babobba|Babobba cinder dying 2]]&lt;br /&gt;
 $3164W #[[Patch:Blorb|Blorb 1]]&lt;br /&gt;
 $3182W #[[Patch:Blorb|Blorb 2]]&lt;br /&gt;
 $31A0W #[[Patch:Blorb|Blorb 3]]&lt;br /&gt;
 $31BEW #[[Patch:Ceilick|Ceilick waiting]]&lt;br /&gt;
 $31DCW #[[Patch:Ceilick|Ceilick attack 1]]&lt;br /&gt;
 $31FAW #[[Patch:Ceilick|Ceilick attack 2]]&lt;br /&gt;
 $3218W #[[Patch:Ceilick|Ceilick attack 3]]&lt;br /&gt;
 $3236W #[[Patch:Ceilick|Ceilick attack 4]]&lt;br /&gt;
 $3254W #[[Patch:Ceilick|Ceilick attack 5]]&lt;br /&gt;
 $3272W #[[Patch:Ceilick|Ceilick attack 6]]&lt;br /&gt;
 $3290W #[[Patch:Ceilick|Ceilick attack 7]]&lt;br /&gt;
 $32AEW #[[Patch:Ceilick|Ceilick attack 8]]&lt;br /&gt;
 $32CCW #[[Patch:Ceilick|Ceilick attack 9]]&lt;br /&gt;
 $32EAW #[[Patch:Ceilick|Ceilick attack 10]]&lt;br /&gt;
 $3308W #[[Patch:Ceilick|Ceilick attack, hide]]&lt;br /&gt;
 $3326W #[[Patch:Ceilick|Ceilick laugh  1]]&lt;br /&gt;
 $3344W #[[Patch:Ceilick|Ceilick laugh  2]]&lt;br /&gt;
 $3362W #[[Patch:Ceilick|Ceilick laugh  3]]&lt;br /&gt;
 $3380W #[[Patch:Ceilick|Ceilick laugh  4]]&lt;br /&gt;
 $339EW #[[Patch:Ceilick|Ceilick laugh  5]]&lt;br /&gt;
 $33BCW #[[Patch:Ceilick|Ceilick laugh  6]]&lt;br /&gt;
 $33DAW #[[Patch:Ceilick|Ceilick laugh  7]]&lt;br /&gt;
 $33F8W #[[Patch:Ceilick|Ceilick laugh  8]]&lt;br /&gt;
 $3416W #[[Patch:Ceilick|Ceilick laugh  9]]&lt;br /&gt;
 $3434W #[[Patch:Ceilick|Ceilick stunned]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen Dreams sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Nothing at all&lt;br /&gt;
 $0BB4W #???&lt;br /&gt;
 $0BD2W #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown 1]]&lt;br /&gt;
 $0BF0W #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown 2]]&lt;br /&gt;
 $0C0EW #[[Patch:Boobus Bombs|Boobus bombs thrown 1]]&lt;br /&gt;
 $0C2CW #[[Patch:Boobus Bombs|Boobus bombs thrown 2]]&lt;br /&gt;
 $0C4AW #[[Patch:Boobus Bombs|Boobus Bomb explode 1]]&lt;br /&gt;
 $0C68W #[[Patch:Boobus Bombs|Boobus Bomb explode 2]]&lt;br /&gt;
 $0C86W #[[Patch:Boobus Bombs|Boobus Bomb explode 3]]&lt;br /&gt;
 $0CA4W #[[Patch:Boobus Bombs|Boobus Bomb explode 4]]&lt;br /&gt;
 $0CC2W #[[Patch:Boobus Bombs|Boobus Bomb explode 5]]&lt;br /&gt;
 $0CE0W #[[Patch:Boobus Bombs|Boobus Bomb explode 6]]&lt;br /&gt;
 $0CFEW #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown, blinking 1]]&lt;br /&gt;
 $0D1CW #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown, blinking 2 (Invisible)]]&lt;br /&gt;
 $0D3AW #[[Patch:Keen on map (Dreams)|Map Keen stand]]&lt;br /&gt;
 $0D58W #[[Patch:Keen on map (Dreams)|Map Keen wave 1]]&lt;br /&gt;
 $0D76W #[[Patch:Keen on map (Dreams)|Map Keen wave 2]]&lt;br /&gt;
 $0D94W #[[Patch:Keen on map (Dreams)|Map Keen wave 3]]&lt;br /&gt;
 $0DB2W #[[Patch:Keen on map (Dreams)|Map Keen wave 4]]&lt;br /&gt;
 $0DD0W #[[Patch:Keen on map (Dreams)|Map Keen wave 5 (Goto nap)]]&lt;br /&gt;
 $0DEEW #[[Patch:Keen on map (Dreams)|Map Keen nap 1]]&lt;br /&gt;
 $0E0CW #[[Patch:Keen on map (Dreams)|Map Keen nap 2]]&lt;br /&gt;
 $0E2AW #[[Patch:Keen on map (Dreams)|Map Keen nap 3 (Keep napping)]]&lt;br /&gt;
 $0E48W #[[Patch:Keen on map (Dreams)|Map Keen moving]]&lt;br /&gt;
 $0E7EW #[[Patch:Keen bored|Zzzz 1]]&lt;br /&gt;
 $0E9CW #[[Patch:Keen bored|Zzzz 2]]&lt;br /&gt;
 $0EBAW #[[Patch:Keen bored|Zzzz 3]]&lt;br /&gt;
 $0ED8W [[Patch:Keen walking (Dreams)|#Keen stand]]&lt;br /&gt;
 $0EF6W #[[Patch:Keen bored|Keen bored (Look up)]]&lt;br /&gt;
 $0F14W #[[Patch:Keen bored|Keen bored (Yawn) 1]]&lt;br /&gt;
 $0F32W #[[Patch:Keen bored|Keen bored (Yawn) 2]]&lt;br /&gt;
 $0F50W #[[Patch:Keen bored|Keen bored (Yawn) 3]]&lt;br /&gt;
 $0F6EW #[[Patch:Keen bored|Keen bored (Yawn) 4]]&lt;br /&gt;
 $0F8CW #[[Patch:Keen bored|Keen bored (Blink-shrug) 1]]&lt;br /&gt;
 $0FAAW #[[Patch:Keen bored|Keen bored (Blink-shrug) 2]]&lt;br /&gt;
 $0FC8W #[[Patch:Keen bored|Keen bored (Blink-shrug) 3]]&lt;br /&gt;
 $0FE6W #[[Patch:Keen bored|Keen bored (Blink-shrug) 4]]&lt;br /&gt;
 $1004W #[[Patch:Keen bored|Keen bored (Blink-shrug) 5]]&lt;br /&gt;
 $1022W #[[Patch:Keen bored|Keen bored (Blink-shrug) 6]]&lt;br /&gt;
 $1040W #[[Patch:Keen bored|Keen bored (Nap) 1]]&lt;br /&gt;
 $105EW #[[Patch:Keen bored|Keen bored (Nap) 2]]&lt;br /&gt;
 $107CW #[[Patch:Keen bored|Keen bored (Nap) 3]]&lt;br /&gt;
 $109AW #[[Patch:Keen bored|Keen bored (Nap) 4]]&lt;br /&gt;
 $10B8W #[[Patch:Keen bored|Keen wake up]]&lt;br /&gt;
 $10D6W #[[Patch:Keen dying (Dreams)|Keen die 1]]&lt;br /&gt;
 $10F4W #[[Patch:Keen dying (Dreams)|Keen die 2]]&lt;br /&gt;
 $1112W #[[Patch:Keen dying (Dreams)|Keen die 3]]&lt;br /&gt;
 $1130W #[[Patch:Keen look|Keen look up]]&lt;br /&gt;
 $114EW #[[Patch:Keen look|Keen crouch]]&lt;br /&gt;
 $116CW #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $118AW #[[Patch:Keen on poles|Keen sit on pole]]&lt;br /&gt;
 $11A8W #[[Patch:Keen on poles|Keen climb up pole 1]]&lt;br /&gt;
 $11C6W #[[Patch:Keen on poles|Keen climb up pole 2]]&lt;br /&gt;
 $11E4W #[[Patch:Keen on poles|Keen climb up pole 3]]&lt;br /&gt;
 $1202W #[[Patch:Keen on poles|Keen climb down pole 1]]&lt;br /&gt;
 $1220W #[[Patch:Keen on poles|Keen climb down pole 2]]&lt;br /&gt;
 $123EW #[[Patch:Keen on poles|Keen climb down pole 3]]&lt;br /&gt;
 $125CW #[[Patch:Keen on poles|Keen climb down pole 4]]&lt;br /&gt;
 $127AW #[[Patch:Keen shooting (Dreams)|Keen pole-throw horizontally 1]]&lt;br /&gt;
 $1298W #[[Patch:Keen shooting (Dreams)|Keen pole-throw horizontally 2]]&lt;br /&gt;
 $12B6W #[[Patch:Keen shooting (Dreams)|Keen pole-throw horizontally 3]]&lt;br /&gt;
 $12D4W #[[Patch:Keen shooting (Dreams)|Keen pole-throw up 1]]&lt;br /&gt;
 $12F2W #[[Patch:Keen shooting (Dreams)|Keen pole-throw up 2]]&lt;br /&gt;
 $1310W #[[Patch:Keen shooting (Dreams)|Keen pole-throw up 3]]&lt;br /&gt;
 $132EW #[[Patch:Keen shooting (Dreams)|Keen pole-throw down 1]]&lt;br /&gt;
 $134CW #[[Patch:Keen shooting (Dreams)|Keen pole-throw down 2]]&lt;br /&gt;
 $136AW #[[Patch:Keen shooting (Dreams)|Keen pole-throw down 3]]&lt;br /&gt;
 $1388W #[[Patch:Keen walking (Dreams)|Keen walk 1]]&lt;br /&gt;
 $13A6W #[[Patch:Keen walking (Dreams)|Keen walk 2]]&lt;br /&gt;
 $13C4W #[[Patch:Keen walking (Dreams)|Keen walk 3]]&lt;br /&gt;
 $13E2W #[[Patch:Keen walking (Dreams)|Keen walk 4]]&lt;br /&gt;
 $1400W #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 1]]&lt;br /&gt;
 $141EW #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 2]]&lt;br /&gt;
 $143CW #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 3]]&lt;br /&gt;
 $145AW #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 4]]&lt;br /&gt;
 $1478W #[[Patch:Keen shooting (Dreams)|Keen throw up 1]]&lt;br /&gt;
 $1496W #[[Patch:Keen shooting (Dreams)|Keen throw up 2]]&lt;br /&gt;
 $14B4W #[[Patch:Keen shooting (Dreams)|Keen throw up 3]]&lt;br /&gt;
 $14D2W #[[Patch:Keen jumping (Dreams)|Keen jump vertically 1]]&lt;br /&gt;
 $14F0W #[[Patch:Keen jumping (Dreams)|Keen jump vertically 2]]&lt;br /&gt;
 $150EW #[[Patch:Keen jumping (Dreams)|Keen jump vertically 3]]&lt;br /&gt;
 $152CW #[[Patch:Keen jumping (Dreams)|Keen jump horizontally 1]]&lt;br /&gt;
 $154AW #[[Patch:Keen jumping (Dreams)|Keen jump horizontally 2]]&lt;br /&gt;
 $1568W #[[Patch:Keen jumping (Dreams)|Keen jump horizontally 3]]&lt;br /&gt;
 $1586W #[[Patch:Keen shooting (Dreams)|Keen air-throw horizontally 1]]&lt;br /&gt;
 $15A4W #[[Patch:Keen shooting (Dreams)|Keen air-throw horizontally 2]]&lt;br /&gt;
 $15C2W #[[Patch:Keen shooting (Dreams)|Keen air-throw horizontally 3]]&lt;br /&gt;
 $15E0W #[[Patch:Keen shooting (Dreams)|Keen air-throw up 1]]&lt;br /&gt;
 $15FEW #[[Patch:Keen shooting (Dreams)|Keen air-throw up 2]]&lt;br /&gt;
 $161CW #[[Patch:Keen shooting (Dreams)|Keen air-throw up 3]]&lt;br /&gt;
 $163AW #[[Patch:Keen shooting (Dreams)|Keen air-throw down 1]]&lt;br /&gt;
 $1658W #[[Patch:Keen shooting (Dreams)|Keen air-throw down 2]]&lt;br /&gt;
 $1676W #[[Patch:Keen shooting (Dreams)|Keen air-throw down 3]]&lt;br /&gt;
 $1732W #[[Patch:Doors (Dreams)|Door sit]]&lt;br /&gt;
 $1750W #[[Patch:Doors (Dreams)|Door open]]&lt;br /&gt;
 $176EW #[[Patch:Wilted Flower|Wilted flower 1]]&lt;br /&gt;
 $178CW #[[Patch:Wilted Flower|Wilted flower 2]]&lt;br /&gt;
 $17AAW #[[Patch:Wilted Flower|Wilted flower 3]]&lt;br /&gt;
 $17C8W #[[Patch:Wilted Flower|Wilted flower 4]]&lt;br /&gt;
 $17E6W #[[Patch:Wilted Flower|Wilted flower 5]]&lt;br /&gt;
 $1804W #[[Patch:Wilted Flower|Wilted flower 6]]&lt;br /&gt;
 $1822W #[[Patch:Wilted Flower|Wilting smoke 1]]&lt;br /&gt;
 $1840W #[[Patch:Wilted Flower|Wilting smoke 2]]&lt;br /&gt;
 $185EW #[[Patch:Wilted Flower|Wilting smoke 3]]&lt;br /&gt;
 $187CW #[[Patch:Wilted Flower|Wilting smoke 4]]&lt;br /&gt;
 $189AW #[[Patch:Wilted Flower|Recovery smoke 1]]&lt;br /&gt;
 $18B8W #[[Patch:Wilted Flower|Recovery smoke 2]]&lt;br /&gt;
 $18D6W #[[Patch:Wilted Flower|Recovery smoke 3]]&lt;br /&gt;
 $18F4W #[[Patch:Wilted Flower|Recovery smoke 4]]&lt;br /&gt;
 $1912W #[[Patch:Wilted Flower|Recovery smoke 5]]&lt;br /&gt;
 $1930W #[[Patch:Wilted Flower|Recovery smoke 6]]&lt;br /&gt;
 $194EW #[[Patch:Wilted Flower|Recovery smoke 7]]&lt;br /&gt;
 $196CW #[[Patch:Items|Items]]&lt;br /&gt;
 $198AW #[[Patch:Items|Items got]]&lt;br /&gt;
 $19C0W #[[Patch:Broccolash|Broccolash run 1]]&lt;br /&gt;
 $19DEW #[[Patch:Broccolash|Broccolash run 2]]&lt;br /&gt;
 $19FCW #[[Patch:Broccolash|Broccolash run 3]]&lt;br /&gt;
 $1A1AW #[[Patch:Broccolash|Broccolash run 4]]&lt;br /&gt;
 $1A38W #[[Patch:Broccolash|Broccolash headslam 1]]&lt;br /&gt;
 $1A56W #[[Patch:Broccolash|Broccolash headslam 2]]&lt;br /&gt;
 $1A74W #[[Patch:Broccolash|Broccolash headslam 3]]&lt;br /&gt;
 $1A92W #[[Patch:Broccolash|Broccolash headslam 4]]&lt;br /&gt;
 $1AB0W #[[Patch:Broccolash|Broccolash headslam 5]]&lt;br /&gt;
 $1ACEW #[[Patch:Broccolash|Broccolash headslam 6]]&lt;br /&gt;
 $1AECW #[[Patch:Broccolash|Broccolash headslam 7]]&lt;br /&gt;
 $1B0AW #[[Patch:Broccolash|Broccolash headslam 8]]&lt;br /&gt;
 $1B28W #[[Patch:Broccolash|Broccolash headslam 9]]&lt;br /&gt;
 $1B46W #[[Patch:Tomatooth|Tomatooth 1]]&lt;br /&gt;
 $1B64W #[[Patch:Tomatooth|Tomatooth 2]]&lt;br /&gt;
 $1B82W #[[Patch:Carrot_Courier|Carrot run 1]]&lt;br /&gt;
 $1BA0W #[[Patch:Carrot_Courier|Carrot run 2]]&lt;br /&gt;
 $1BBEW #[[Patch:Carrot_Courier|Carrot run 3]]&lt;br /&gt;
 $1BDCW #[[Patch:Carrot_Courier|Carrot run 4]]&lt;br /&gt;
 $1BFAW #[[Patch:Carrot_Courier|Carrot jump]]&lt;br /&gt;
 $1C18W #[[Patch:Asparagusto|Asparagusto run 1]]&lt;br /&gt;
 $1C36W #[[Patch:Asparagusto|Asparagusto run 2]]&lt;br /&gt;
 $1C54W #[[Patch:Asparagusto|Asparagusto run 3]]&lt;br /&gt;
 $1C72W #[[Patch:Asparagusto|Asparagusto run 4]]&lt;br /&gt;
 $1C90W #[[Patch:Grape|Grape wait]]&lt;br /&gt;
 $1CAEW #[[Patch:Grape|Grape fall]]&lt;br /&gt;
 $1CCCW #[[Patch:Grape|Grape rise]]&lt;br /&gt;
 $1CEAW #[[Patch:Grape|Grape stop]]&lt;br /&gt;
 $1D08W #[[Patch:Tater_Trooper|Tater walk 1]]&lt;br /&gt;
 $1D26W #[[Patch:Tater_Trooper|Tater walk 2]]&lt;br /&gt;
 $1D44W #[[Patch:Tater_Trooper|Tater walk 3]]&lt;br /&gt;
 $1D62W #[[Patch:Tater_Trooper|Tater walk 4]]&lt;br /&gt;
 $1D80W #[[Patch:Tater_Trooper|Tater stab 1]]&lt;br /&gt;
 $1D9EW #[[Patch:Tater_Trooper|Tater stab 2]]&lt;br /&gt;
 $1DBCW #[[Patch:Tater_Trooper|Tater stab 3]]&lt;br /&gt;
 $1DDAW #[[Patch:Minecart|Minecart 1]]&lt;br /&gt;
 $1DF8W #[[Patch:Minecart|Minecart 2]]&lt;br /&gt;
 $1E16W #[[Patch:Frenchy|Frenchy walking horizontally 1]]&lt;br /&gt;
 $1E34W #[[Patch:Frenchy|Frenchy walking horizontally 2]]&lt;br /&gt;
 $1E52W #[[Patch:Frenchy|Frenchy walking horizontally 3]]&lt;br /&gt;
 $1E70W #[[Patch:Frenchy|Frenchy walking horizontally 4]]&lt;br /&gt;
 $1E8EW #[[Patch:Frenchy|Frenchy charging horizontally 1]]&lt;br /&gt;
 $1EACW #[[Patch:Frenchy|Frenchy charging horizontally 2]]&lt;br /&gt;
 $1ECAW #[[Patch:Frenchy|Frenchy charging horizontally 3]]&lt;br /&gt;
 $1EE8W #[[Patch:Frenchy|Frenchy charging horizontally 4]]&lt;br /&gt;
 $1F06W #[[Patch:Frenchy|Frenchy tossing chip 1]]&lt;br /&gt;
 $1F24W #[[Patch:Frenchy|Frenchy tossing chip 2]]&lt;br /&gt;
 $1F42W #[[Patch:Frenchy|Frenchy tossing chip 3]]&lt;br /&gt;
 $1F60W #[[Patch:Frenchy|Frenchy&#039;s chip 1]]&lt;br /&gt;
 $1F7EW #[[Patch:Frenchy|Frenchy&#039;s chip 2]]&lt;br /&gt;
 $1F9CW #[[Patch:Melon Lips|Horizontal melon wait]]&lt;br /&gt;
 $1FBAW #[[Patch:Melon Lips|Horizontal melon spit]]&lt;br /&gt;
 $1FD8W #[[Patch:Melon Lips|Horizontal melon return]]&lt;br /&gt;
 $1FF6W #[[Patch:Melon Lips|Down melon wait]]&lt;br /&gt;
 $2014W #[[Patch:Melon Lips|Down melon spit]]&lt;br /&gt;
 $2032W #[[Patch:Melon Lips|Down melon return]]&lt;br /&gt;
 $2050W #[[Patch:Melon Lips|Horizontal pip 1]]&lt;br /&gt;
 $206EW #[[Patch:Melon Lips|Horizontal pip 2]]&lt;br /&gt;
 $208CW #[[Patch:Melon Lips|Down pip 1]]&lt;br /&gt;
 $20AAW #[[Patch:Melon Lips|Down pip 2]]&lt;br /&gt;
 $20C8W #[[Patch:Squasher|Squash walk 1]]&lt;br /&gt;
 $20E6W #[[Patch:Squasher|Squash walk 2]]&lt;br /&gt;
 $2104W #[[Patch:Squasher|Squash jump]]&lt;br /&gt;
 $2122W #[[Patch:Squasher|Squash fall]]&lt;br /&gt;
 $2140W #[[Patch:Squasher|Squash land]]&lt;br /&gt;
 $215EW #[[Patch:Apel|Apel walk 1]]&lt;br /&gt;
 $217CW #[[Patch:Apel|Apel walk 2]]&lt;br /&gt;
 $219AW #[[Patch:Apel|Apel walk 3]]&lt;br /&gt;
 $21B8W #[[Patch:Apel|Apel poleclimb up 1]]&lt;br /&gt;
 $21D6W #[[Patch:Apel|Apel poleclimb up 2]]&lt;br /&gt;
 $21F4W #[[Patch:Apel|Apel poleclimb down 1]]&lt;br /&gt;
 $2212W #[[Patch:Apel|Apel poleclimb down 2]]&lt;br /&gt;
 $2230W #[[Patch:Apel|Apel poleclimb down 3]]&lt;br /&gt;
 $224EW #[[Patch:Apel|Apel poleclimb down 4]]&lt;br /&gt;
 $226CW #[[Patch:Apel|Apel fall]]&lt;br /&gt;
 $228AW #[[Patch:Pea Brain|Pea fall]]&lt;br /&gt;
 $22A8W #[[Patch:Pea Brain|Pea walk 1]]&lt;br /&gt;
 $22C6W #[[Patch:Pea Brain|Pea walk 2]]&lt;br /&gt;
 $22E4W #[[Patch:Pea Brain|Pea walk 3]]&lt;br /&gt;
 $2302W #[[Patch:Pea Brain|Pea walk 4]]&lt;br /&gt;
 $2320W #[[Patch:Pea Pod|Peapod walk 1]]&lt;br /&gt;
 $233EW #[[Patch:Pea Pod|Peapod walk 2]]&lt;br /&gt;
 $235CW #[[Patch:Pea Pod|Peapod walk 3]]&lt;br /&gt;
 $237AW #[[Patch:Pea Pod|Peapod walk 4]]&lt;br /&gt;
 $2398W #[[Patch:Pea Pod|Peapod spit 1]]&lt;br /&gt;
 $23B6W #[[Patch:Pea Pod|Peapod spit 2]]&lt;br /&gt;
 $23D4W #[[Patch:Boobus Tuber|Boobus walk 1]]&lt;br /&gt;
 $23F2W #[[Patch:Boobus Tuber|Boobus walk 2]]&lt;br /&gt;
 $2410W #[[Patch:Boobus Tuber|Boobus walk 3]]&lt;br /&gt;
 $242EW #[[Patch:Boobus Tuber|Boobus walk 4]]&lt;br /&gt;
 $244CW #[[Patch:Boobus Tuber|Boobus jump]]&lt;br /&gt;
 $246AW #[[Patch:Boobus Tuber|Boobus die 1]]&lt;br /&gt;
 $2488W #[[Patch:Boobus Tuber|Boobus die 2]]&lt;br /&gt;
 $24A6W #[[Patch:Boobus Tuber|Boobus die 3]]&lt;br /&gt;
 $24C4W #[[Patch:Boobus Tuber|Boobus death smoke 1]]&lt;br /&gt;
 $24E2W #[[Patch:Boobus Tuber|Boobus death smoke 2]]&lt;br /&gt;
 $2500W #[[Patch:Boobus Tuber|Boobus death smoke 3]]&lt;br /&gt;
 $251EW #[[Patch:Boobus Tuber|Boobus death smoke 4]]&lt;br /&gt;
 $253CW #[[Patch:Boobus Tuber|Boobus death smoke 5]]&lt;br /&gt;
 $255AW #[[Patch:Boobus Tuber|Boobus death smoke 6]]&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_opening_doors&amp;diff=41954</id>
		<title>Patch:Keen opening doors</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_opening_doors&amp;diff=41954"/>
		<updated>2020-08-12T03:08:39Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Minor grammar tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains sprite patches relating to Keen as he opens [[Patch:Keygem door|keygem type doors.]] It does not contain patches relating to [[Patch:Keygems|keygems]], [[Patch:Tiles|keyholders]] or doors themselves.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
When Keen first contacts a keyholder tile the game will check to see if he is already performing the &#039;open door&#039; action. If he is then it skips the code to start doing so to avoid an infinite loop. Next Keen turns away from the screen and adjusts his position so that he will align with the keyholder. This is required so Keen will properly register the door location. Finally, once in position, he will start his gem placing sequence.&lt;br /&gt;
&lt;br /&gt;
The gem placing sequence is two actions long and afterwards Keen returns to standing. The second action is unnecessary and merely serves to lengthen the sequence. It is in fact shared with [[Patch:Keen Flipping Switches|Keen flipping switches sequence.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 4 ==&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $098CW #Keen standing&lt;br /&gt;
 $0E00W #Keen pause after placing gem&lt;br /&gt;
 $0E1EW #Keen placing gem&lt;br /&gt;
 $0E3CW #Keen adjust position&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Check to see if Keen is already doing this&lt;br /&gt;
%patch $D19D  [$0E1EW]&lt;br /&gt;
&lt;br /&gt;
#Keen adjust position to holder&lt;br /&gt;
%patch $D1D3  [$0E3CW]&lt;br /&gt;
&lt;br /&gt;
#Start door opening sequence&lt;br /&gt;
%patch $D1E8  [$0E1EW]&lt;br /&gt;
&lt;br /&gt;
#Gem placing sequence&lt;br /&gt;
%patch $2FCAA [$0E00W]&lt;br /&gt;
%patch $2FC8C [$098CW]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
There is only one behavior relating to Keen placing a gem, it is used by the first placing action. The second action has no behavior and acts as a &#039;pauser&#039; to lengthen the sequence.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $0B800A34RL #Placing gem&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 behaviors&amp;quot;&amp;gt;&lt;br /&gt;
#Placing sequence&lt;br /&gt;
%patch $2FC9E $0B800A34RL&lt;br /&gt;
%patch $2FC80 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete placing gem behavior code. The first sections deals with the keyholder, reading the infoplane for the keyholder&#039;s destination. (This is 16 pixels or $00FFW up from keen&#039;s feet.) Starting at the end of line 5 the &#039;animate tile&#039; code is run, animating the keyholder so it contains a gem. [[Patch:Sounds|Sound]] $12 is played on line 7. The rest of the code creates a door metasprite and places it in the level.&lt;br /&gt;
&lt;br /&gt;
After being spawned on line 6 the door sprite&#039;s location is set to that of the keyholder destination. This is then checked four times to see if it is outside the level borders. (The first check is whether its horizontal position exceeds the level width variable, the second whether it is less than 2 tiles (the level border.), the third whether its vertical position exceeds the level height and the fourth whether it is less than 2 tiles.) If nay of these checks fail the &#039;Keyholder points to bad spot&#039; code is run and the game crashes.&lt;br /&gt;
&lt;br /&gt;
The final part of the code sets the door sprite&#039;s properties. It has no clipping so that it won&#039;t be affected by tiles, a type of 1 or &#039;misc&#039; and an action variable of 2 or &#039;always active no matter how far away from Keen.&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen place gem code&lt;br /&gt;
%patch $C234 $55 $8B $EC $83 $EC $10 $56 $57 $8B $76 $06 $8B $5C $32 $D1 $E3&lt;br /&gt;
             $8B $87 $25 $C9 $D1 $E8 $03 $44 $34 $89 $46 $F6 $8B $5E $F6 $D1&lt;br /&gt;
             $E3 $8E $06 $E9 $A7 $26 $8B $07 $05 [$0012W]  $89 $46 $FE $8B $5E&lt;br /&gt;
             $F6 $D1 $E3 $8E $06 $EB $A7 $26 $8B $07 $89 $46 $FC $B1 $08 $D3&lt;br /&gt;
             $E8 $4689W  $FA $8B $46 $FC $25 [$00FFW]  $89 $46 $F8 $B8 $0001W &lt;br /&gt;
             $50 $50 $FF $74 $32 $FF $74 $34 $50 $16 $8D $46 $FE $50 $9A&lt;br /&gt;
         $16540F28RL     $83 $C4 $0E $B8 [$0012W]  $50 $9A $187409F1RL     $83&lt;br /&gt;
             $C4 $02 $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E $D8&lt;br /&gt;
             $A7 $8B $46 $FA $89 $47 $0A $8B $46 $F8 $89 $47 $0C $8B $46 $FA&lt;br /&gt;
             $3B $06 [$A7E4W]  {$77} $15 $83 $7E $FA [$02] {$72} $0F $8B $46 $F8 $3B&lt;br /&gt;
             $06 [$A7E2W]  {$77} $06 $83 $7E $F8 [$02] {$73} $0C $B8 [$1426W]  $50 $9A&lt;br /&gt;
             $037D022FRL     $83 $C4 $02 $8B $5E $F8 $D1 $E3 $8B $87 $25 $C9&lt;br /&gt;
             $D1 $E8 $E0D1W  $8B $16 $E9 $8BA7W  $5E $FA $D1 $E3 $03 $C3 $89&lt;br /&gt;
             $56 $F4 $89 $46 $F2 $C4 $5E $F2 $26 $8B $07 $89 $46 $F0 $BF $01&lt;br /&gt;
             $00 $A1 $E4 $A7 $D1 $E0 $01 $46 $F2 $EB $09 $47 $A1 $E4 $A7 $D1&lt;br /&gt;
             $E0 $01 $46 $F2 $C4 $5E $F2 $26 $8B $07 $3B $46 $F0 $74 $EC $8B&lt;br /&gt;
             $1E $D8 $A7 $89 $7F $3E $C7 $47 $02 [$0002W]  $C7 $47 $06 [$0000W]&lt;br /&gt;
             $C7 $07 [$0001W]  $B8 [$17ECW]  $50 $53 $9A $09DC118CRL     $83 $C4&lt;br /&gt;
             $04 $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed and Jump Height]] =&lt;br /&gt;
&lt;br /&gt;
Keen does not move while placing gems, to do so would misalign him with the gem holder and cause the placement to fail.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 action speeds&amp;quot;&amp;gt;&lt;br /&gt;
#Placing keygems&lt;br /&gt;
%patch $2FC9A [$0000W $0000W]&lt;br /&gt;
%patch $2FC7C [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
Keen uses no sprite collision when placing gems. This means he cannot interact with point items and a few other things while doing so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 sprite collisions&amp;quot;&amp;gt;&lt;br /&gt;
#Placing keygems&lt;br /&gt;
%patch $2FCA2 $00000000L&lt;br /&gt;
%patch $2FC84 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
Keen uses one animation when placing gems the &#039;facing away from screen&#039; animation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Placing keygems&lt;br /&gt;
%patch $2FC8E $00C4W $00C4W&lt;br /&gt;
%patch $2FC98 $0006W        #Pause before flip&lt;br /&gt;
%patch $2FC70 $00C4W $00C4W&lt;br /&gt;
%patch $2FC7A $0008W        #Pause before done&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
Keen uses the same tile collision as he does when standing or doing other &#039;normal&#039; things.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 tile collisions&amp;quot;&amp;gt;&lt;br /&gt;
#Placing keygems&lt;br /&gt;
%patch $2FCA6 $0B801AA2RL&lt;br /&gt;
%patch $2FC88 $0B801AA2RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Action_Type|Action type]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s gem placing actions are type 0, meaning their behaviors and movement are called only once during the action. This prevents &#039;multiple opening&#039; when Keen  activates a door.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Placing keygems&lt;br /&gt;
%patch $2FC92 [$0000W]&lt;br /&gt;
%patch $2FC74 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] =&lt;br /&gt;
&lt;br /&gt;
Both of Keen&#039;s placing actions use the &#039;deprotect animation&#039; variable for complex and subtle reasons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Placing keygems&lt;br /&gt;
%patch $2FC94 [$0000W $0001W]&lt;br /&gt;
%patch $2FC76 [$0000W $0001W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Player|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;br /&gt;
{{PatchCategories|Keen 4|gameplay}}&lt;br /&gt;
{{PatchCategories|Keen 5|gameplay}}&lt;br /&gt;
{{PatchCategories|Keen 6|gameplay}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Ending_sequence_(Keen_4)&amp;diff=41535</id>
		<title>Patch:Ending sequence (Keen 4)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Ending_sequence_(Keen_4)&amp;diff=41535"/>
		<updated>2020-04-14T09:31:19Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ending sequence in [[Keen 4]] occurs after Keen has saved eight [[Patch:Oracle Council Member|Council Members]], the screen goes dark, the ending sequence of text and images plays, followed by the high scores level. The ending sequence is mostly due to a loaded text chunk that allows the game to load images and text in a defined sequence. This chunk is handled completely uniquely, not allowing the player just to scroll through it as fast as they wish, but making them wait until the page is &#039;ready.&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Two possible ending sequences ==&lt;br /&gt;
&lt;br /&gt;
This patch allows Keen 4 to have two possible ending sequences depending on how the game is played. The first (default ending) is triggered by saving all 8 Council Members. The second is triggered by completing level 2.&lt;br /&gt;
&lt;br /&gt;
The brown values are the chunk number and memory offset for each ending. When using a different graphics chunk for the ending the memory offset must be changed by &#039;&#039;twice&#039;&#039; that amount. Here the chunk is changed by 1 and the offset by 2. (The chunk used is the unused &#039;Level not available in demo&#039; chunk.)&lt;br /&gt;
&lt;br /&gt;
As a side note, since the variables are not reset here the second ending will always occur after the player accesses it for the first time. A &#039;reset patch&#039; would be needed to prevent this when a new game is started or loaded. Some code is also located over the Wetsuit collision, making that item unusable with this default patch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#GAME HAS TWO ENDINGS&lt;br /&gt;
#Memory offset and ending document to use (Default values)&lt;br /&gt;
%patch $2F474 {$1287W  $9FFBW}&lt;br /&gt;
&lt;br /&gt;
#End sequence calls variables&lt;br /&gt;
%patch $9CB7  $A1 $0604W&lt;br /&gt;
%patch $9D7C  $A1 $0606W&lt;br /&gt;
&lt;br /&gt;
#MAKE GAME END AFTER LEVEL X&lt;br /&gt;
#Check level 2 is done, if so change variables&lt;br /&gt;
%patch $6B4B $A7EDW  [$02] $75 $4C $B8 {$9FFDW}  $A3 $0606W  $B8 {$1288W}  $A3 $0604W  $EB $94&lt;br /&gt;
&lt;br /&gt;
#Call right memory address call&lt;br /&gt;
%patch $9CC3  $9A $11A21010RL     $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Call the right memory address code&lt;br /&gt;
%patch $12A30 $55 $8B $EC $56 $8B $76 $06 $8B $44 $0A $A1 {$9FFBW}  $81 $3E $0604W&lt;br /&gt;
                  {$1287W}  $74 $03 $A1 {$9FFDW}  $89 $46 $FE $A3 $C8B3W  $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== No ending sequence ==&lt;br /&gt;
&lt;br /&gt;
This patch skips the ending sequence entirely; instead the game simply goes straight to the highscores (Or entering a new score.) when Keen wins.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#No ending sequence, go straight to high scores&lt;br /&gt;
%patch $9C7D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EGAGRAPH text chunk ==&lt;br /&gt;
&lt;br /&gt;
This is the [[Patch:EGAGRAPH|EGAGRAPH chunk]] used for the ending sequence. Everything that happens after Keen wins the game is dependent on this chunk. Note that when altering this value an associated variable has to be altered by &#039;&#039;twice&#039;&#039; the amount. (As an example, changing the chunk to $1286, or one less means changing the variable to $9FF9 or &#039;&#039;two&#039;&#039; less.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Ending sequence document&lt;br /&gt;
%patch $9CB8 $1287W #Text&lt;br /&gt;
%patch $9CC4 $9FFBW #Memory variable 1&lt;br /&gt;
%patch $9D7D $9FFBW #Memory variable 2&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Background color ==&lt;br /&gt;
&lt;br /&gt;
The background color of the ending sequence is the same as that of the help sections and so cannot be changed without also altering the help section. By default it is $04, or red. The next two lines of the patch give the area of the screen affected by the color. (This makes it possible to display a color &#039;&#039;plus&#039;&#039; black as a background.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Help\Ending pages background color&lt;br /&gt;
%patch $95FB [$0004W] #Color dark red used for screen background&lt;br /&gt;
%patch $95FF [$00C8W] #200x...&lt;br /&gt;
%patch $9603 [$0140W] #320...&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Page border images ==&lt;br /&gt;
&lt;br /&gt;
Like the [[Patch:Computer Wrist|help section]] the ending sequence screen is bordered by four images, top, bottom, left and right. This screen and its images are separate from the main Computerwrist screen that first appears when F1 is pressed.&lt;br /&gt;
&lt;br /&gt;
However, this screen is &#039;&#039;not&#039;&#039; separate from the help options screens; a total of five images are stored and both screens use the same code with a different bottom border image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Store images for display:&lt;br /&gt;
%patch $9822 [$0050W] #Top of help option screens&lt;br /&gt;
%patch $9829 [$0051W] #Left of help option screens&lt;br /&gt;
%patch $9830 [$0052W] #Right of help option screens&lt;br /&gt;
%patch $9837 [$0053W] #Right of help option screens&lt;br /&gt;
%patch $983E [$0054W] #Bottom of ending screen&lt;br /&gt;
&lt;br /&gt;
#Top of help screen (At 0,0)&lt;br /&gt;
%patch $9613 [$0050W] #Bitmap&lt;br /&gt;
&lt;br /&gt;
#Left of help screen (At 0,8)&lt;br /&gt;
%patch $9623 [$0051W] #Bitmap&lt;br /&gt;
%patch $9627 [$0008W] #Vertical position&lt;br /&gt;
&lt;br /&gt;
#Right of help screen (At 312,8)&lt;br /&gt;
%patch $9636 [$0052W] #Bitmap&lt;br /&gt;
%patch $963A [$0008W] #Vertical position&lt;br /&gt;
%patch $963E [$0138W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Bottom of help screen(At 8, 176)&lt;br /&gt;
%patch $964E [$0053W] #Bitmap&lt;br /&gt;
%patch $9652 [$00B0W] #Vertical position&lt;br /&gt;
%patch $9656 [$0008W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Bottom of ending screen&lt;br /&gt;
%patch $9664 [$0054W] #Bitmap&lt;br /&gt;
%patch $9668 [$00C0W] #Vertical position&lt;br /&gt;
%patch $966C [$0008W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $9612 $EB $0E #Top help image&lt;br /&gt;
%patch $9622 $EB $11 #Left help image&lt;br /&gt;
%patch $9635 $EB $12 #Right help image&lt;br /&gt;
%patch $964D $EB $12 #Bottom help image&lt;br /&gt;
%patch $9663 $EB $12 #Bottom  ending image&lt;br /&gt;
%patch $9612 $EB $63 #All images&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ending sequence doesn&#039;t have border images ===&lt;br /&gt;
&lt;br /&gt;
This patch rearranges the screen code so that the ending sequence has no border images while the help screens do. This can help distinguish both kinds of screen. As a side effect the location and image values are shifted slightly from those in the section above, rendering all above patches dealing with them incompatible. Instead alterations must be made to the blue values in this patch.&lt;br /&gt;
&lt;br /&gt;
As another note this means that the end sequence&#039;s bottom border image is not used and can be used for something else. There are modifications to this patch that allow one or more help border images to appear in the ending sequence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ending sequence &#039;Ending sequence doesn&#039;t have border images&amp;quot;&amp;gt;&lt;br /&gt;
#Ending sequence doesn&#039;t have border images&lt;br /&gt;
%patch $9612 $0B $FF $74 $4D $B8 [$0050W]  $50 $33 $C0 $50 $50 $9A $1D060C79RL&lt;br /&gt;
                 $83 $C4 $06 $B8 [$0051W]  $50 $B8 {$0008W}  $50 $33 $C0 $50 $9A    &lt;br /&gt;
             $1D060C79RL     $83 $C4 $06 $B8 [$0052W]  $50 $B8 {$0008W}  $50 $B8&lt;br /&gt;
             {$0138W}  $50 $9A $1D060C79RL     $83 $C4 $06 $B8 [$0053W]  $50 $B8&lt;br /&gt;
             {$00B0W}  $50 $B8 {$0008W}  $50 $9A $1D060C79RL     $83 $C4 $06 $EB&lt;br /&gt;
             $14&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ending sequence &#039;Patch modifiers, use ONE&amp;quot;&amp;gt;&lt;br /&gt;
#End sequence pages also display...&lt;br /&gt;
%patch $9616 $37 #...bottom border&lt;br /&gt;
%patch $9616 $23 #...bottom and right borders&lt;br /&gt;
%patch $9616 $10 #...bottom, right and left borders&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ready for next page images ==&lt;br /&gt;
&lt;br /&gt;
When the current page of graphics and text has loaded and is ready for the player to press a key to move to the next page, a flashing animation of two images appears in the lower right of the page indicating this. By default this animation is of a dark\light green arrow. Both of these images and their location can be altered.&lt;br /&gt;
&lt;br /&gt;
Both images must be cached first before being displayed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ending sequence &#039;page ready&#039; animation&amp;quot;&amp;gt;&lt;br /&gt;
#Cache images for display&lt;br /&gt;
%patch $9CA0 [$0030W] #Dark green arrow&lt;br /&gt;
%patch $9CAC [$002FW] #Light green arrow&lt;br /&gt;
&lt;br /&gt;
#Display dark green arrow at 184,298&lt;br /&gt;
%patch $9D04 [$002FW] #Image&lt;br /&gt;
%patch $9D08 [$00B8W] #Vertical location&lt;br /&gt;
%patch $9D0C [$012AW] #Horizontal location&lt;br /&gt;
&lt;br /&gt;
#Display light green arrow at 184,298&lt;br /&gt;
%patch $9D37 [$0030W] #Image&lt;br /&gt;
%patch $9D3B [$00B8W] #Vertical location&lt;br /&gt;
%patch $9D3F [$012AW] #Horizontal location&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Animation speed ===&lt;br /&gt;
&lt;br /&gt;
The arrow switching speed can be controlled to an extent. By default it is the quickest it can be, and this can be doubled, tripled, etc. Doing this will create a slight lag between when a key can be pressed and when the page will change, but since this will generally only be a few cycles it will be unnoticeable unless the animation speed is lengthened to ridiculous levels.&lt;br /&gt;
&lt;br /&gt;
In general the values given here are in seconds, so the default switch happens once every second for both arrows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Arrow animation speed&amp;quot;&amp;gt;&lt;br /&gt;
#Seconds each arrow displays&lt;br /&gt;
%patch $9D25 [$0001W] #Dark&lt;br /&gt;
%patch $9D58 [$0001W] #Light&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t show animation ===&lt;br /&gt;
&lt;br /&gt;
This patch stops both images being displayed when the page is ready. This can make it difficult for the player to tell when they can press a key, however in some situations it may be desirable. Using just one line of the patch will make only one image appear, which is more subtle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Don&#039;t show ending sequence &#039;page ready&#039; animation&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t show ending sequence &#039;page ready&#039; animation&lt;br /&gt;
%patch $9D0F $90 $90 $90 $90 $90&lt;br /&gt;
%patch $9D42 $90 $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ending sequence doesn&#039;t wait for keypresses ===&lt;br /&gt;
&lt;br /&gt;
This patch skips the animation and waiting when a page has loaded. This means that the player can do nothing once the ending sequence starts except wait for it to end. However this can be easily altered to make the ending sequence &#039;automatic&#039;. By the use of timed bitmaps and texts a page can be lingered on for any desired amount of time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ending sequence doesn&#039;t wait for keypresses&amp;quot;&amp;gt;&lt;br /&gt;
#Ending sequence doesn&#039;t wait for keypresses&lt;br /&gt;
%patch $9D03 $EB $66&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ending sequence doesn&#039;t wait for keypresses for first x pages ===&lt;br /&gt;
&lt;br /&gt;
This patch skips the animation and waiting when a page has loaded, but only for the first few pages. The value highlighted in blue is the number of pages that will pass on &#039;automatic&#039; before the player is required to press a key to progress. As a side effect the &#039;ready for next page&#039; animation sequence does not appear, though a replacement can be added into the ending chunk.&lt;br /&gt;
&lt;br /&gt;
This value uses a stat in brown that can be changed during the game, changing how much of the ending sequence is automated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ending sequence doesn&#039;t wait for keypresses&amp;quot;&amp;gt;&lt;br /&gt;
#Ending sequence doesn&#039;t wait for keypresses for first 6 pages&lt;br /&gt;
%patch $9D03 $FF $06 {$7A1EW}  $83 $3E {$7A1EW}  [$08] $72 $5D $9A $14600F43RL&lt;br /&gt;
             $0B $C0 $75 $54 $EB $F5&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Music played during ending sequence ==&lt;br /&gt;
&lt;br /&gt;
This is the song played in the ending sequence. Due to the way music works it is actually the level whose music is played. See [[Patch:Music]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Ending Sequence (Slug Village)&lt;br /&gt;
%patch $9CD7 $0007W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== No music in ending sequence ===&lt;br /&gt;
&lt;br /&gt;
This patch prevents any music being played in the ending sequence. Using a value of $FFFFW (-1) in the above patch will achieve the same goal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t play E.S. music&lt;br /&gt;
%patch $9CDA $90 $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t change music for ending sequence ===&lt;br /&gt;
&lt;br /&gt;
This requires two patches, one to keep the same music playing after the [[Patch:Oracle Council Message|Council Member]] is got, the second to stop the music changing in the ending sequence. The side effect is the member&#039;s background music will be the same as the levels. (If the first line is removed then the E.S. music will be the same as the member&#039;s music.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Ending sequence has same music as last level&lt;br /&gt;
%patch $F4CD $90 $90 $90 $90 $90 #Don&#039;t change music for member&lt;br /&gt;
%patch $F5E7 $90 $90 $90 $90 $90 #Don&#039;t change music after member rescued&lt;br /&gt;
%patch $9CDA $90 $90 $90 $90 $90 #Don&#039;t play E.S. music&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Text|}}&lt;br /&gt;
{{PatchCategories|Misc|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Scorebox&amp;diff=41529</id>
		<title>Patch:Scorebox</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Scorebox&amp;diff=41529"/>
		<updated>2020-04-01T13:34:02Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add some patches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers patches relating to the scorebox that appears in Keen galaxy in-level. It shows Keen&#039;s score, ammo and lives. It is possible to change what the scorebox tracks, and even stop it tracking something entirely. As such it requires knowledge of [[Patch:Game stats]] to patch properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scorebox sprite and location ==&lt;br /&gt;
&lt;br /&gt;
These patches relate to the sprite used for the scorebox and its location on the screen. Everything drawn on the scorebox will be drawn &#039;&#039;relative&#039;&#039; to this sprite and its location. If the sprite chosen is too small then various counters and tiles will simply not be drawn over it.&lt;br /&gt;
&lt;br /&gt;
The sprite used must be the same as the sprite [[Patch:Sprite spawning|cached by left and right Keen, Map Keen and Swimming Keen]] when they are spawned. By default this is $00FDW, and it is not likely the modder would want to change this. The location is in map units (10ths of a  pixel), so the default location is 4,4 pixels (Or 1/4,1/4 of a tile) from the top left of the screen. It should also be noted that whatever sprite is used must have four sprite shifts saved (This is a graphics setting.) or the sprite will appear as gibberish.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Scorebox display&lt;br /&gt;
%patch $E97B [$00FDW] #Left Keen cache&lt;br /&gt;
%patch $E9A7 [$00FDW] #Right Keen cache&lt;br /&gt;
%patch $E9CF [$00FDW] #Map Keen cache&lt;br /&gt;
%patch $ED28 [$00FDW] #Swimming Keen cache&lt;br /&gt;
%patch $DD83 [$00FDW] #Sprite displayed&lt;br /&gt;
%patch $DD8A [$0040W] #Vertical location&lt;br /&gt;
%patch $DD91 [$0040W] #Horizontal location&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Scorebox display&lt;br /&gt;
%patch $EEBB [$00EBW] #Left Keen cache&lt;br /&gt;
%patch $EEE5 [$00EBW] #Right Keen cache&lt;br /&gt;
%patch $EF01 [$00EBW] #Map Keen cache&lt;br /&gt;
%patch $D147 [$00EBW] #Sprite displayed&lt;br /&gt;
%patch $D14E [$0040W] #Vertical location&lt;br /&gt;
%patch $D155 [$0040W] #Horizontal location&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Scorebox display&lt;br /&gt;
%patch $E4AD [$00AFW] #Left Keen cache&lt;br /&gt;
%patch $E4D7 [$00AFW] #Right Keen cache&lt;br /&gt;
%patch $E4FD [$00AFW] #Map Keen cache&lt;br /&gt;
%patch $CEFA [$00AFW] #Sprite displayed&lt;br /&gt;
%patch $CF01 [$0040W] #Vertical location&lt;br /&gt;
%patch $CF08 [$0040W] #Horizontal location&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Scorebox display&lt;br /&gt;
%patch $6347 [$00D4W] #Sprite&lt;br /&gt;
%patch $634E [$0040W] #Vertical location&lt;br /&gt;
%patch $6355 [$0040W] #Horizontal location&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Counter location in scorebox ==&lt;br /&gt;
&lt;br /&gt;
These patches control the location of the three counters in the scorebox relative to the top left of the scorebox sprite. Vertical locations are in pixels while horizontal locations are in 8 pixel blocks.&lt;br /&gt;
&lt;br /&gt;
For the score counter it is only possible to move it up 2 pixels at a time. The patch below sets its location at 0,0. Deleting &amp;lt;tt&amp;gt;$90 $90&amp;lt;/tt&amp;gt; will move it down two pixels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Decrease score counter vertical location 4 pixels&lt;br /&gt;
%patch $DAC0 $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Lives counter location&lt;br /&gt;
%patch $DC94 [$0014W] #Vertical&lt;br /&gt;
%patch $DC9E [$02]    #Horizontal&lt;br /&gt;
&lt;br /&gt;
#Ammo counter location&lt;br /&gt;
%patch $DBA2 [$0014W] #Vertical&lt;br /&gt;
%patch $DBAC [$07]    #Horizontal&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Decrease score counter vertical location 4 pixels&lt;br /&gt;
%patch $CE84 $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Lives counter location&lt;br /&gt;
%patch $D058 [$0014W] #Vertical&lt;br /&gt;
%patch $D062 [$02]    #Horizontal&lt;br /&gt;
&lt;br /&gt;
#Ammo counter location&lt;br /&gt;
%patch $CF66 [$0014W] #Vertical&lt;br /&gt;
%patch $CF70 [$07]    #Horizontal&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Decrease score counter vertical location 4 pixels&lt;br /&gt;
%patch $CC37 $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Lives counter location&lt;br /&gt;
%patch $CE0B [$0014W] #Vertical&lt;br /&gt;
%patch $CE15 [$02]    #Horizontal&lt;br /&gt;
&lt;br /&gt;
#Ammo counter location&lt;br /&gt;
%patch $CD19 [$0014W] #Vertical&lt;br /&gt;
%patch $CD23 [$07]    #Horizontal&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is displayed ==&lt;br /&gt;
&lt;br /&gt;
This is what the scorebox displays, where and with what tiles. At present only a limited number of patches are available. The &#039;blank tile&#039; is the 8x8 tile treated as &#039;tile -1&#039;; the tile to be displayed when there is no value for the square. (Keen&#039;s starting score is one &#039;0&#039; tile preceded by five &#039;blank&#039; tiles for example.) Blank tiles are not displayed if the variable itself is disabled.&lt;br /&gt;
&lt;br /&gt;
Note that the lives variable is referenced four times by the scorebox for various purposes. Note also that in Keen Dreams the &#039;ammo&#039; counter &#039;&#039;and&#039;&#039; tiles change in a specific level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#What scorebox tracks:&lt;br /&gt;
%patch $DA92 {$7A50W} #Score (refresh)&lt;br /&gt;
%patch $DADA {$7A50W} #Score (low)&lt;br /&gt;
%patch $DAD6 {$7A52W} #Score (high)&lt;br /&gt;
%patch $DB69 {$7A58W} #Ammo&lt;br /&gt;
%patch $DC64 {$7A6AW} #Lives&lt;br /&gt;
%patch $DCA8 {$7A6AW} #Lives&lt;br /&gt;
%patch $DCC8 {$7A6AW} #Lives&lt;br /&gt;
%patch $DD48 {$7A6AW} #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display...&lt;br /&gt;
%patch $DA94 $90 $90 #Score (Score 0 tiles still show)&lt;br /&gt;
%patch $DB74 $90 $90 #Ammo&lt;br /&gt;
%patch $DC66 $90 $90 #Lives&lt;br /&gt;
&lt;br /&gt;
#Blank tiles&lt;br /&gt;
%patch $DB09 $0029W #Score&lt;br /&gt;
%patch $DC07 $0029W #Ammo &lt;br /&gt;
%patch $DCFA $0029W #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display blank tiles&lt;br /&gt;
%patch $DB0D $90 $90 $90 #Score&lt;br /&gt;
%patch $DC0B $90 $90 $90 #Ammo&lt;br /&gt;
%patch $DCFE $90 $90 $90 #Lives&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#What scorebox tracks:&lt;br /&gt;
%patch $DA56 {$6F4EW} #Score (refresh)&lt;br /&gt;
%patch $CE9E {$6F4EW} #Score (low)&lt;br /&gt;
%patch $CE9A {$6F50W} #Score (high)&lt;br /&gt;
%patch $CF2D {$6F56W} #Ammo&lt;br /&gt;
%patch $D028 {$6F6AW} #Lives&lt;br /&gt;
%patch $D06C {$6F6AW} #Lives&lt;br /&gt;
%patch $D08C {$6F6AW} #Lives&lt;br /&gt;
%patch $D10C {$6F6AW} #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display...&lt;br /&gt;
%patch $CE58 $90 $90 #Score (Score 0 tiles still show)&lt;br /&gt;
%patch $CF38 $90 $90 #Ammo&lt;br /&gt;
%patch $D02A $90 $90 #Lives&lt;br /&gt;
&lt;br /&gt;
#Blank tiles&lt;br /&gt;
%patch $CECD $0029W #Score&lt;br /&gt;
%patch $CFCB $0029W #Ammo &lt;br /&gt;
%patch $D0BE $0029W #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display blank tiles&lt;br /&gt;
%patch $CED1 $90 $90 $90 #Score&lt;br /&gt;
%patch $CFCF $90 $90 $90 #Ammo&lt;br /&gt;
%patch $D0C2 $90 $90 $90 #Lives&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#What scorebox tracks:&lt;br /&gt;
%patch $CC09 {$7588W} #Score (refresh)&lt;br /&gt;
%patch $CC51 {$7588W} #Score (low)&lt;br /&gt;
%patch $CC4D {$758AW} #Score (high)&lt;br /&gt;
%patch $CCE0 {$7590W} #Ammo&lt;br /&gt;
%patch $CDDB {$75A6W} #Lives&lt;br /&gt;
%patch $CE1F {$75A6W} #Lives&lt;br /&gt;
%patch $CE3F {$75A6W} #Lives&lt;br /&gt;
%patch $CEBF {$75A6W} #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display...&lt;br /&gt;
%patch $CC0B $90 $90 #Score (Score 0 tiles still show)&lt;br /&gt;
%patch $CCEB $90 $90 #Ammo&lt;br /&gt;
%patch $CDDD $90 $90 #Lives&lt;br /&gt;
&lt;br /&gt;
#Blank tiles&lt;br /&gt;
%patch $CC80 $0029W #Score&lt;br /&gt;
%patch $CD7E $0029W #Ammo &lt;br /&gt;
%patch $CE71 $0029W #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display blank tiles&lt;br /&gt;
%patch $CC84 $90 $90 $90 #Score&lt;br /&gt;
%patch $CD82 $90 $90 $90 #Ammo&lt;br /&gt;
%patch $CE75 $90 $90 $90 #Lives&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Level that decides between Flower Power and Bombs counter&lt;br /&gt;
%patch $6192 $8F3EW  [$0F] {$75}&lt;br /&gt;
&lt;br /&gt;
#Level that decides between Flower Power and Bombs tiles&lt;br /&gt;
%patch $5EF8 {$8F3EW} [$0F] {$75}&lt;br /&gt;
&lt;br /&gt;
#What scorebox tracks:&lt;br /&gt;
%patch $6104 {$7116W} #Score (low)&lt;br /&gt;
%patch $6108 {$7114W} #Score (high)&lt;br /&gt;
%patch $6184 {$7116W} #Score (low)&lt;br /&gt;
%patch $618B {$7114W} #Score (high)&lt;br /&gt;
%patch $6198 {$711EW} #Boobus bombs&lt;br /&gt;
%patch $619D {$711CW} #Flower Power&lt;br /&gt;
%patch $62F5 {$7126W} #Lives&lt;br /&gt;
%patch $630A {$7126W} #Lives&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display...&lt;br /&gt;
%patch $61A8 $90 $90 #Ammo&lt;br /&gt;
%patch $62D0 $EB $2E #Lives&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is displayed when lives or ammo &amp;gt; 99 ===&lt;br /&gt;
&lt;br /&gt;
When Keen has more than 99 lives or ammunition the scorebox shows this by displaying a two character long string of text. By default this is &#039;99&#039;, meaning that if Keen has more than 99 shots or lives the scorebox will simply read &#039;99&#039; instead of the true value. (Which can be seen in the [[Patch:Status Window (Galaxy)|Status Window.]])&lt;br /&gt;
&lt;br /&gt;
In the case of the lives counter in Keen Dreams the limit is 9 lives. When this is exceeded an &#039;&#039;8x8 tile&#039;&#039; is placed instead. By default this is tile 10. (Which is an image of the number 9.) This mean extending the limit past 9 is very difficult.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Scorebox max ammo\lives text&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $DBBB  [$1846W] #Text called from (Shots)&lt;br /&gt;
%patch $306B6 &amp;quot;99&amp;quot; $00&lt;br /&gt;
%patch $DCAE  [$1849W] #Text called from (Lives)&lt;br /&gt;
%patch $306B9 &amp;quot;99&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $CF7F  [$162EW] #Text called from (Shots)&lt;br /&gt;
%patch $D072  [$162EW] #Text called from (Lives)&lt;br /&gt;
%patch $3196E &amp;quot;99&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $CD32  [$164CW] #Text called from (Shots)&lt;br /&gt;
%patch $3237C &amp;quot;99&amp;quot; $00&lt;br /&gt;
%patch $CE25  [$164FW] #Text called from (Lives)&lt;br /&gt;
%patch $3237F &amp;quot;99&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 7 :&lt;br /&gt;
%patch $61EF  [$16B6W] #Text called from&lt;br /&gt;
%patch $25126 &amp;quot;99&amp;quot; $00 #Shots&lt;br /&gt;
%patch $62E4  $000AW    #Lives (Tile)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Max ammo\lives to display ====&lt;br /&gt;
&lt;br /&gt;
This is the limit referred to above; if Keen has more than this limit then the text above will appear. See also [[Patch:Jump conditions]]. Note that for Keen Dreams the limit on lives is 9.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Scorebox &#039;99&#039; limit&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4&lt;br /&gt;
%patch $DBB7 [$63] {$76} #Shots&lt;br /&gt;
%patch $DCAA [$63] {$7E} #Lives&lt;br /&gt;
&lt;br /&gt;
#Keen 5&lt;br /&gt;
%patch $CF7B [$63] {$76} #Shots&lt;br /&gt;
%patch $D06E [$63] {$7E} #Lives&lt;br /&gt;
&lt;br /&gt;
#Keen 6&lt;br /&gt;
%patch $CD2E [$63] {$76} #Shots&lt;br /&gt;
%patch $CE21 [$63] {$7E} #Lives&lt;br /&gt;
&lt;br /&gt;
#Keen 7&lt;br /&gt;
%patch $61EB [$63] {$76} #Shots&lt;br /&gt;
%patch $CE21 [$09] {$7E} #Lives&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable ==&lt;br /&gt;
&lt;br /&gt;
This disables the scorebox entirely, that is, it is never displayed in-level, even when it is turned on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Disable scorebox&amp;quot;&amp;gt;&lt;br /&gt;
#Disable scorebox -Keen 4&lt;br /&gt;
%patch $DA4F $90 $90&lt;br /&gt;
&lt;br /&gt;
#Disable scorebox -Keen 5&lt;br /&gt;
%patch $CE33 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Disable scorebox -Keen 6&lt;br /&gt;
%patch $CBC6 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Always show ==&lt;br /&gt;
&lt;br /&gt;
This patch causes the scorebox to always be shown, even if the player disables it in the [[Patch:Main menu (Galaxy)|Main Menu.]] This allows that configuration option to be used for something else (Such as slow motion.) or to be eliminated entirely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Always display scorebox, -ignore scorebox variable&lt;br /&gt;
%patch $DA5A $19&lt;br /&gt;
%patch $7948 $EB $05&lt;br /&gt;
%patch $79AE $EB $25&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Counters are yellow ==&lt;br /&gt;
&lt;br /&gt;
This patch changes the counters from light red to yellow. (Grey digits become light red.) This patch appears stable but may cause unknown issues.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Ammo counter is yellow&lt;br /&gt;
%patch $DB99 $0280W&lt;br /&gt;
&lt;br /&gt;
#Lives counter is yellow&lt;br /&gt;
%patch $DC8B $0280W&lt;br /&gt;
&lt;br /&gt;
#Score counter is yellow&lt;br /&gt;
%patch $DAB9 $0280W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Title_screen&amp;diff=41528</id>
		<title>Patch:Title screen</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Title_screen&amp;diff=41528"/>
		<updated>2020-04-01T03:23:33Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add skip patches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers patches relating to the title screen. The title screen in Keen Vorticons is where the [[Patch:Main menu|main menu]] appears. In Keen Dreams it is the image that appears &#039;&#039;before&#039;&#039; the [[Patch:Main menu|main menu]] as well as including the [[Patch:High Scores (Dreams)|High Scores table.]] In Keen Galaxy it is again a simple image leading to the main menu. Associated patches are [[Patch:Main menu]] and [[Patch:Start sequence]].&lt;br /&gt;
&lt;br /&gt;
In Keen Vorticons a level is displayed that can be edited in a level editor. The level used is a screen from &amp;lt;tt&amp;gt;LEVEL90.CKx&amp;lt;/tt&amp;gt;. In Dreams, the title screen image can be edited with [[Keengraph]]. In Galaxy, the title screen image can be edited with [[ModKeen]] along with most other Galaxy graphics.&lt;br /&gt;
&lt;br /&gt;
Due to the different natures of the title screens, this page will be divided into three sections, Vorticons, Dreams and Galaxy. Patches for relevant episodes and outcomes will be listed under these sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorticons title ==&lt;br /&gt;
&lt;br /&gt;
At present, it is possible to patch the location and [[Patch:Images|bitmaps]] used for the title and the &amp;quot;F1 for help&amp;quot; graphics. (Note that the title graphic cannot be changed easily, as it is not given a value in the code, because it uses bitmap 0.) All values are the default values. For help with graphic location patches, see [[Patch:Images]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $97C0 [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $97B2 [$0001W] #Title V&lt;br /&gt;
%patch $97B6 [$0008W] #Title H&lt;br /&gt;
%patch $97C4 [$00B6W] #F1 V&lt;br /&gt;
%patch $97C8 [$0010W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $97CB $90 $90 $90 #F1&lt;br /&gt;
%patch $97B9 $90 $90 $90 #Title&lt;br /&gt;
%patch $97AB $C3         #F1 AND title&lt;br /&gt;
%patch $97E4 $90         #F1 AND title when menu is open (Has side effects!)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $9241 [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $9233 [$0001W] #Title V&lt;br /&gt;
%patch $9237 [$0008W] #Title H&lt;br /&gt;
%patch $9245 [$00B6W] #F1 V&lt;br /&gt;
%patch $9249 [$0010W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $924C $90 $90 $90 #F1&lt;br /&gt;
%patch $923A $90 $90 $90 #Title&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $A09A [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $A08C [$0001W] #Title V&lt;br /&gt;
%patch $A090 [$0008W] #Title H&lt;br /&gt;
%patch $A09E [$00B6W] #F1 V&lt;br /&gt;
%patch $A0A2 [$0013W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $A0A5 $90 $90 $90 #F1&lt;br /&gt;
%patch $A093 $90 $90 $90 #Title&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dreams title ==&lt;br /&gt;
&lt;br /&gt;
The Dreams title consists of a &#039;demo loop&#039; that displays the title screen and the [[Patch:High Scores (Dreams)|High scores]] in a constant cycle. Though loading level 20 this is never shown in the game. (In the patchable version at least.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Screen image file and errors ===&lt;br /&gt;
&lt;br /&gt;
The screen image is loaded and decompressed form a separate file archive in which it is the only chunk. See also [[Patch:Files and filenames]].&lt;br /&gt;
&lt;br /&gt;
There are three possible errors. The first occurs when the titlescreen archive file cannot be found. The second occurs if the file itself is corrupt and doesn&#039;t fit the expected parameters. The third occurs if the title chunk &#039;&#039;inside&#039;&#039; the file is corrupt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Dreams titlescreen archive&lt;br /&gt;
%patch $435C  [$038DW] #Look for this file&lt;br /&gt;
%patch $438A  [$038DW] #Load this file&lt;br /&gt;
%patch $23DFD &amp;quot;KDREAMS.CMP&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Title screen file&lt;br /&gt;
%patch $23E23 &amp;quot;TITLESCR.LBM&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#No titlescreen archive&lt;br /&gt;
%patch $436D  [$0399W]&lt;br /&gt;
%patch $23E09 &amp;quot;Couldn&#039;t find KDREAMS.CMP&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Can&#039;t read titlescreen error&lt;br /&gt;
%patch $439D  [$03C0W]&lt;br /&gt;
%patch $23E30 &amp;quot;Can&#039;t load TITLE SCREEN&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Can&#039;t read title chunk error&lt;br /&gt;
%patch $9C61  [$25EDW]&lt;br /&gt;
%patch $2605D &amp;quot;Error Loading Compressed lib shape!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Time titlescreen is visible for ===&lt;br /&gt;
&lt;br /&gt;
By default the &#039;title sequence&#039; loops between the titlescreen and the high score table. The first appearance of the title, when the game first loads, is especially long, while later appearances are shorter.&lt;br /&gt;
&lt;br /&gt;
As such there are two times involved, the first for the special initial appearance and the second for the &#039;looping appearances&#039;. Note that the first, longer, time is the &#039;&#039;sum&#039;&#039; of &#039;&#039;both&#039;&#039; times rather than a standalone value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Titlescreen display time&amp;quot;&amp;gt;&lt;br /&gt;
#Titlescreen display time&lt;br /&gt;
%patch $43FA [$0118W] #First appearance extra time&lt;br /&gt;
%patch $4447 [$00D2W] #Loop appearances&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip titlescreen, go straight to menu ===&lt;br /&gt;
&lt;br /&gt;
The first patch causes the game to go straight to the menu instead of displaying the titlescreen. In fact there is no way to view the titlescreen (Or High score table that goes with it.), it is completely disabled.&lt;br /&gt;
&lt;br /&gt;
The second patch is related, except the titlescreen appears, the player is sent to the menu after a time instead of seeing the High Scores.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to menu&amp;quot;&amp;gt;&lt;br /&gt;
#Skip titlescreen go straight to Main Menu&lt;br /&gt;
%patch $4395 $E9 $00FFW&lt;br /&gt;
&lt;br /&gt;
#Go to menu after titlescreen&lt;br /&gt;
%patch $4408 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip titlescreen, go straight to game ===&lt;br /&gt;
&lt;br /&gt;
This patch causes the game to go straight to a new game instead of displaying the titlescreen. In fact there is no way to view the titlescreen (Or High score table that goes with it.), it is completely disabled and pressing &#039;esc&#039; in-game will cause the entire game to &#039;reset&#039;.&lt;br /&gt;
&lt;br /&gt;
There are two variables that can be altered, thedifficulty level of the game and the first level entered. In this patch they are &#039;easy&#039; and level 0 (the map).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to game&amp;quot;&amp;gt;&lt;br /&gt;
#Skip titlescreen go straight to game&lt;br /&gt;
%patch $4395  $E9 $00FFW&lt;br /&gt;
%patch $28B32 $4AB8W&lt;br /&gt;
%patch $5D01  $C7 $06 $7128W [$0001W] #Difficulty&lt;br /&gt;
%patch $3C0C  $7124W [$0000W]         #Level to start in&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== High scores table ===&lt;br /&gt;
&lt;br /&gt;
The [[Patch:High Scores (Dreams)|High Score table]] appears after the title screen then, after a period of time, returns to the title screen again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== No High Scores in title sequence ====&lt;br /&gt;
&lt;br /&gt;
This patch removes the High Score table in the title sequence only. While the palyer can enter a new high score and see the table at a Game Over they will not see the table when first starting the game and waiting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;No High Scores in title sequence&amp;quot;&amp;gt;&lt;br /&gt;
#No High scores in title sequence&lt;br /&gt;
%patch $4475 $EB $09&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Time score table is visible ====&lt;br /&gt;
&lt;br /&gt;
These patches control how long the High Scores table is visible before the title screen appears. There are two different situations, Game Over and title sequence, with different times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;High Score display time&amp;quot;&amp;gt;&lt;br /&gt;
#High Scores display time&lt;br /&gt;
%patch $4484  [$01A4W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Go to main menu after Title\High Scores ====&lt;br /&gt;
&lt;br /&gt;
These patches cause the game to go to the [[Patch:Main menu (Dreams)|main menu]] after the titlescreen or high scores are displayed, even if the player doesn&#039;t press a key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go to main menu even if no key is pressed&amp;quot;&amp;gt;&lt;br /&gt;
#Go to main menu after title displays&lt;br /&gt;
%patch $4455 $EB&lt;br /&gt;
&lt;br /&gt;
#Go to main menu after High Score table displays&lt;br /&gt;
%patch $4492 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Galaxy title ==&lt;br /&gt;
&lt;br /&gt;
The Galaxy title screen is much less involved than the Vorticons one. Like Dreams it is a fullscreen image, appearing after the [[Patch:Terminator text|&#039;terminator text&#039;]] sequence has completed or been aborted by the player. (Check the terminator sequence page for related patches.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip screen, go to Main Menu ===&lt;br /&gt;
&lt;br /&gt;
These patches skip the titlescreen, going straight to the [[Patch:Main menu (Galaxy)|Main Menu]]. But this only happens if the player skips the terminator text; allowing it to play out will still cause the title fade.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Skip Title screens&amp;quot;&amp;gt;&lt;br /&gt;
#Skip title, go to Main Menu -Keen 4&lt;br /&gt;
%patch $51BC $EB&lt;br /&gt;
&lt;br /&gt;
#Skip title, go to Main Menu -Keen 5&lt;br /&gt;
%patch $51B6 $EB&lt;br /&gt;
&lt;br /&gt;
#Skip title, go to Main Menu -Keen 6&lt;br /&gt;
%patch $4FC5 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Title screen image ===&lt;br /&gt;
&lt;br /&gt;
As noted above, there are in fact, two different title screens that can be shown. The first appears when the [[Patch:Terminator text|&#039;terminator text&#039;]] is allowed to scroll uninterrupted. This will result in a &#039;titelscreen fade&#039; where the title slowly appears from a black screen. The second title screen appears instantly if the player presses any key. By default both of these titles are identical, but they don&#039;t have to be.&lt;br /&gt;
&lt;br /&gt;
Like all bitmaps, the title screen must be cached before it can be displayed. The number given in these patches is the chunk number (Properly labelled by [[Keengraph]]; [[ModKeen]] will label the bitmap with a different number.) As such there are a total of four lines of code, two for each title screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Galaxy Title screens&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 titlescreen images&lt;br /&gt;
%patch $4EDC [$006DW] #Cache for title fade&lt;br /&gt;
%patch $4CF4 [$006DW] #Display in title fade&lt;br /&gt;
%patch $51C4 [$006DW] #Cache for title jump&lt;br /&gt;
%patch $51D0 [$006DW] #Display in title jump&lt;br /&gt;
&lt;br /&gt;
#Keen 5 titlescreen images&lt;br /&gt;
%patch $4ED6 [$0058W] #Cache for title fade&lt;br /&gt;
%patch $4CEE [$0058W] #Display in title fade&lt;br /&gt;
%patch $51BE [$0058W] #Cache for title jump&lt;br /&gt;
%patch $51CA [$0058W] #Display in title jump&lt;br /&gt;
&lt;br /&gt;
#Keen 6 titlescreen images&lt;br /&gt;
%patch $4CF7 [$0022W] #Cache for title fade&lt;br /&gt;
%patch $4B0F [$0022W] #Display in title fade&lt;br /&gt;
%patch $4FCD [$0022W] #Cache for title jump&lt;br /&gt;
%patch $4FD9 [$0022W] #Display in title jump&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Terminator_text&amp;diff=41527</id>
		<title>Patch:Terminator text</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Terminator_text&amp;diff=41527"/>
		<updated>2020-04-01T03:22:40Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add new set of patches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;quot;terminator text&amp;quot; sequence is a sequence that appears when the Keen Galaxy games are first started. (It will also play again once all the demo sequences have been run.) It leads to the [[Patch:Title screen|title screen]] on completion or if interrupted by any keypress.&lt;br /&gt;
&lt;br /&gt;
It consists of three specific phases. In the first, two large bitmaps, COMMANDER and KEEN that phase through each other as they scroll right-left and left-right respectively. The bitmaps are dark colors and where they overlap turn light. As this happens several credits bitmaps scroll up from the bottom of the screen, pause in the midscreen for a few seconds, then scroll up off the screen top.&lt;br /&gt;
&lt;br /&gt;
After the two background bitmaps have scrolled past each other the sequence will move on to phase 2. The bitmaps will &#039;zoom out&#039;, getting smaller as they shrink towards the top of the screen. This phase ends with the words &#039;COMMANDER KEEN&#039; at the top of a black screen.&lt;br /&gt;
&lt;br /&gt;
This then leads to phase 3, where a semi-random pixel effect replaces the old, mostly black, screen with the title screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Details =&lt;br /&gt;
&lt;br /&gt;
The first phase uses a unique [[Patch:Palette|palette]] composed of far fewer colors than the main game. The two background bitmaps are monochrome and translucent and the palette is set up so that their individual colors are dark while their combined color is light. The credits bitmaps appear over this and do not change color.&lt;br /&gt;
&lt;br /&gt;
More technically the EGA graphics planes are divided up between the two horizontally scrolling monochrome images and the vertically scrolling credit pictures, as follows: The KEEN graphic is drawn into plane 0, the COMMANDER graphic into plane 1, and the vertically scrolling credit images into planes 2 and 3.&lt;br /&gt;
&lt;br /&gt;
By setting EGA registers so that drawing to select planes at a time is allowed, the game can update one component of the scrolling screen without disturbing the other two.  Thus, by default, the palette is set so that the vertically scrolling credit images can only have three completely opaque colors, and one completely transparent color (i.e., both planes 2 and 3 are zero).  This leaves four colors that can be created from all the combinations of the two planes dedicated to the horizontally scrolling images (because 2^2 = 4). COMMANDER and KEEN can both have a unique color, as can their union and the backdrop.  Hence, seven colors can be shown at once, if vertically scrolling images are not to have any translucence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Skip sequences =&lt;br /&gt;
&lt;br /&gt;
These patches skip various parts of the terminator sequence, from the entire sequence to small parts of it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skip sequence, title screen &amp;amp; menu, go to new game ==&lt;br /&gt;
&lt;br /&gt;
This patch causes a new game to start instead of the Terminator Text. The difficulty of the game is marked in blue. (By default it is &#039;normal&#039;.) As a side effect the terminator text is permanently disabled, but the rest of the demos work fine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to new game&amp;quot;&amp;gt;&lt;br /&gt;
#Go straight to new game on startup&lt;br /&gt;
%patch $4EA8 $C7 $06 $7A70W  $0005W  $C7 $06 $474AW  [$0002W]  $9A $146008A8RL&lt;br /&gt;
             $9A $05C40063RL     $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skip sequence &amp;amp; title screen, go to demo ==&lt;br /&gt;
&lt;br /&gt;
This disables the Terminator text entirely and also the title screen. The game will go directly to the first demo instead. To simply disable a specific graphic see the &#039;images section below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable Terminator sequence and title screen (Frees $4E9F-$51B7)&lt;br /&gt;
%patch $3C26 $90 $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skip sequence &amp;amp; title screen, go to menu ==&lt;br /&gt;
&lt;br /&gt;
This disables the Terminator text entirely and also the title screen. The game will go directly to the [[Patch:Main menu (Galaxy)|Main Menu]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Terminator sequence goes straight to main menu - Keen 4&lt;br /&gt;
%patch $50ED $A545W [$001CW]&lt;br /&gt;
%patch $51BC $EB&lt;br /&gt;
&lt;br /&gt;
#Terminator sequence goes straight to main menu - Keen 5&lt;br /&gt;
%patch $50E7 $9BADW [$001CW]&lt;br /&gt;
%patch $51B6 $EB&lt;br /&gt;
&lt;br /&gt;
#Terminator sequence goes straight to main menu - Keen 6&lt;br /&gt;
%patch $4F08 $A6D3W [$001CW]&lt;br /&gt;
%patch $4FC5 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skip sequence, go to title or help ==&lt;br /&gt;
&lt;br /&gt;
These patches skip the credit bitmaps scroll &#039;&#039;and&#039;&#039; zoom sequences and instead goes straight to the [[Patch:Title screen|title screen]] appearing. Changing the blue value to $003BW will cause the terminator sequence to go straight to the [[Patch:Computer Wrist|help screen]] instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Skip terminator sequence, go straight to title&amp;quot;&amp;gt;&lt;br /&gt;
#Terminator sequence goes straight to title - Keen 4&lt;br /&gt;
%patch $50ED $A545W [$001CW]&lt;br /&gt;
&lt;br /&gt;
#Terminator sequence goes straight to title - Keen 5&lt;br /&gt;
%patch $50E7 $9BADW [$001CW]&lt;br /&gt;
&lt;br /&gt;
#Terminator sequence goes straight to title - Keen 6&lt;br /&gt;
%patch $4F08 $A6D3W [$001CW]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skip scroll, go to zoom-out ==&lt;br /&gt;
&lt;br /&gt;
These patches skip the credits scroll and go to the title zoom sequence, just before the title screen appears. (The terminator chunks do appear briefly but can be totally removed by altering their graphics to be totally black.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Skip terminator sequence, go straight to title zoom&amp;quot;&amp;gt;&lt;br /&gt;
#Skip terminator sequence, go straight to title zoom -Keen 4&lt;br /&gt;
%patch $50F1 $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Skip terminator sequence, go straight to title zoom -Keen 5&lt;br /&gt;
%patch $50EB $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Skip terminator sequence, go straight to title zoom -Keen 6&lt;br /&gt;
%patch $4F0C $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Skip zoom sequence ==&lt;br /&gt;
&lt;br /&gt;
These patches skip the brief zoom out sequence after the credits have scrolled and before the title screen appears. If the COMMANDER\KEEN images are still onscreen they will change color to the default palette colors (Dark blue and green) which will look unusual. As such it&#039;s best to edit these images so that the screen will be completely black at the end of scrolling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Skip zoom sequence, go straight to title appearance&amp;quot;&amp;gt;&lt;br /&gt;
#Skip the zoom out sequence -Keen 4&lt;br /&gt;
%patch $5140 $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Skip the zoom out sequence -Keen 5&lt;br /&gt;
%patch $513A $90 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Skip the zoom out sequence -Keen 6&lt;br /&gt;
%patch $4F5B $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Replace Terminator Text with another action =&lt;br /&gt;
&lt;br /&gt;
This is the [[Patch:Main menu|Main menu actions list,]] a list of various things the game does at the [[Patch:Main menu|main menu.]] By simply swapping various pointers around it is possible to change the order that various actions appear or replace one action with another. A novel option is to replace the terminator text with the [[Patch:Story Screen (Galaxy)|star wars story]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Main menu actions list&lt;br /&gt;
%patch $3CB9 {$0448W} #3C18: Terminator sequence and title screen&lt;br /&gt;
             {$045FW} #3C2F: Demo 1&lt;br /&gt;
             {$046CW} #3C3C: Star wars story&lt;br /&gt;
             {$0473W} #3C43: Demo 2&lt;br /&gt;
             {$0481W} #3C51: High score demo&lt;br /&gt;
             {$0488W} #3C58: Demo 3&lt;br /&gt;
             {$0496W} #3C66: Demo 4&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Palette|Colors]] =&lt;br /&gt;
&lt;br /&gt;
These patches govern how terminator images are colored. Patches like these regarding how color maps are used are explained on the [[Patch:Palette|palettes page.]]&lt;br /&gt;
&lt;br /&gt;
Unlike most of the game, the COMMANDER, KEEN and credits bitmaps don&#039;t use the same [[Patch:Palette||&#039;color map&#039;.]] Keen Galaxy uses 16 colors which are created from different sums of four &#039;plane values&#039; of 1, 2, 4 and 8. In the normal game these planes are blue, green, red and brightness. Thus &#039;dark blue&#039; is color 1, &#039;purple&#039; is color 1 + 4 = 5 and white is color 1 + 2 + 4 + 8 = 15.&lt;br /&gt;
&lt;br /&gt;
In the terminator sequence COMMANDER occupies the first plane of value 1 and KEEN occupies plane 2. In the normal game they would thus be blue and green. They are transparent so they produce a third color where they overlap. (Color 1 + 2 = 3.) The credits bitmaps use the remaining two planes and are not transparent, so their colors don&#039;t &#039;add&#039; in the same way.&lt;br /&gt;
&lt;br /&gt;
However the terminator sequence doesn&#039;t map colors to pixels in the same way as the regular game. For example, by default, both COMMANDER and KEEN appear the same color. Their &#039;&#039;different&#039;&#039; pixel values are mapped to the &#039;&#039;same&#039;&#039; color. (Their overlap however is mapped to a light version of that color. &#039;&#039;How&#039;&#039; the 16 possible pixel values are mapped to the 16 possible colors is governed by a 17-byte &#039;color map&#039; (The extra byte is for the &#039;screen border&#039;.) By using an odd color map the game can do neat stuff like the terminator sequence.&lt;br /&gt;
&lt;br /&gt;
As a final complexity the value of colors goes 0,1,2...7,8,19,1A... Thus a value of 9 is not a valid color but $19 is. The following table shows what color each palette value will shoe:&lt;br /&gt;
&lt;br /&gt;
 $1F, white       $1E, yellow       $1D, light purple  $1C, light red&lt;br /&gt;
 $1B, light teal  $1A, light green  $19, light blue    $18, dark grey (light black)&lt;br /&gt;
 $17, white       $16, yellow       $15, light purple  $14, light red&lt;br /&gt;
 $13, light teal  $12, light green  $11, light blue    $10, dark grey (light black)&lt;br /&gt;
 $0F, light grey  $0E, brown        $0D, dark purple   $0C, dark red&lt;br /&gt;
 $0B, dark teal   $0A, dark green   $09, dark blue     $08, black&lt;br /&gt;
 $07, light grey  $06, brown        $05, dark purple   $04, dark red&lt;br /&gt;
 $03, dark teal   $02, dark green   $01, dark blue     $00, black&lt;br /&gt;
&lt;br /&gt;
There are &#039;&#039;two&#039;&#039; color maps. The first is used for the terminator sequence proper while the second is used during the &#039;zoom out&#039; sequence just before the title screen appears. Both have a call to the color map and a second call to the screen border color. Interestingly the same border color is used in both cases. (It&#039;s the one belonging to the terminator sequence palette.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Terminator sequence&lt;br /&gt;
%patch $50BB [$0218W] #Screen border color&lt;br /&gt;
%patch $50C2 [$0208W] #Main color map&lt;br /&gt;
&lt;br /&gt;
#Zoom out sequence&lt;br /&gt;
%patch $50B5 [$0218W] #Screen border color&lt;br /&gt;
%patch $50B8 [$0229W] #Main color map&lt;br /&gt;
&lt;br /&gt;
#Terminator text color map:&lt;br /&gt;
%patch $2F078 [$00 $18 $18 $07 $01 $01 $01 $01]     #Dark colors&lt;br /&gt;
              [$11 $11 $11 $11 $13 $13 $13 $13] {$00} #Light colors (and border color)&lt;br /&gt;
&lt;br /&gt;
#Zoom out color map:&lt;br /&gt;
%patch $2F089 [$00 $18 $18 $07 $01 $01 $01 $01]     #Dark colors&lt;br /&gt;
              [$11 $11 $11 $11 $13 $13 $13 $18] {$00} #Light colors (and border color)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Terminator sequence&lt;br /&gt;
%patch $50B5 [$01C8W] #Screen border color&lt;br /&gt;
%patch $50BC [$01B8W] #Main color map&lt;br /&gt;
&lt;br /&gt;
#Zoom out sequence&lt;br /&gt;
%patch $50AF [$01C8W] #Screen border color&lt;br /&gt;
%patch $50B2 [$01D9W] #Main color map&lt;br /&gt;
&lt;br /&gt;
#Terminator text color map:&lt;br /&gt;
%patch $304F8 [$00 $04 $04 $1C $01 $01 $01 $01]     #Dark colors&lt;br /&gt;
              [$11 $11 $11 $11 $13 $13 $13 $13] {$00} #Light colors (and border color)&lt;br /&gt;
&lt;br /&gt;
#Zoom out color map:&lt;br /&gt;
%patch $30509 [$00 $04 $04 $1C $01 $01 $01 $01]     #Dark colors&lt;br /&gt;
              [$11 $11 $11 $11 $13 $13 $13 $04] {$00} #Light colors (and border color)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Terminator sequence&lt;br /&gt;
%patch $4ED6 [$015CW] #Screen border color&lt;br /&gt;
%patch $4EDD [$014CW] #Main color map&lt;br /&gt;
&lt;br /&gt;
#Zoom out sequence&lt;br /&gt;
%patch $4ED0 [$015CW] #Screen border color&lt;br /&gt;
%patch $4ED3 [$016DW] #Main color map&lt;br /&gt;
&lt;br /&gt;
#Terminator text color map:&lt;br /&gt;
%patch $30E7C [$00 $05 $05 $15 $01 $01 $01 $01]     #Dark colors&lt;br /&gt;
              [$11 $11 $11 $11 $13 $13 $13 $13] {$00} #Light colors (and border color)&lt;br /&gt;
&lt;br /&gt;
#Zoom out color map:&lt;br /&gt;
%patch $30E8D [$00 $05 $05 $15 $01 $01 $01 $01]     #Dark colors&lt;br /&gt;
              [$11 $11 $11 $11 $13 $13 $13 $05] {$00} #Light colors (and border color)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= COMMANDER\KEEN images =&lt;br /&gt;
&lt;br /&gt;
These are the &#039;COMMANDER KEEN&#039; images that move past each other, they are in the same plane, behind the credit bitmaps. The values for what is used is the [[Patch:EGAGRAPH|chunk number,]] (properly labelled by [[Keengraph]], [[ModKeen]] does not extract the chunk properly and labels it differently.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Terminator chunks:&lt;br /&gt;
%patch $4EE8 $1281W #COMMANDER&lt;br /&gt;
%patch $4EF4 $1280W #KEEN&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t show COMMANDER and\or KEEN images ==&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;both&#039;&#039; images will still appear in the &#039;zooming out&#039; section at the end of the sequence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t display &#039;KEEN&#039; (Free $4F3F-$4F9E)&lt;br /&gt;
%patch $4F3E $60&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display &#039;COMMANDER&#039; (Free $4FFF-$5074)&lt;br /&gt;
%patch $4FFC $E9 $00ACW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Credit bitmaps =&lt;br /&gt;
&lt;br /&gt;
These are the images crediting the game team that appear over the terminator text images for specific periods of time. They are read from a [[Patch:Text patches|pointer list]] whose pointer is stored elsewhere in the code. It is possible to change the number of images shown. (Less is simple, more becomes more difficult as there is only a limited time to display images.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmap list:&lt;br /&gt;
%patch $3F46 [$0200W] #Location&lt;br /&gt;
%patch $50E0 [$04]    #Number of bitmaps to show 1&lt;br /&gt;
%patch $5113 [$04]    #Number of bitmaps to show 2&lt;br /&gt;
&lt;br /&gt;
#Credit bitmaps:&lt;br /&gt;
%patch $2F070 $0068W&lt;br /&gt;
              $0069W&lt;br /&gt;
              $006AW&lt;br /&gt;
              $006BW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmap list:&lt;br /&gt;
%patch $3F40 [$01B0W] #Location&lt;br /&gt;
%patch $50DA [$04]    #Number of bitmaps to show 1&lt;br /&gt;
%patch $510D [$04]    #Number of bitmaps to show 2&lt;br /&gt;
&lt;br /&gt;
#Credit bitmaps:&lt;br /&gt;
%patch $304F0 $0053W&lt;br /&gt;
              $0054W&lt;br /&gt;
              $0055W&lt;br /&gt;
              $0056W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmap list:&lt;br /&gt;
%patch $3D61 [$0144W] #Location&lt;br /&gt;
%patch $4EFB [$04]    #Number of bitmaps to show 1&lt;br /&gt;
%patch $4F2E [$04]    #Number of bitmaps to show 2&lt;br /&gt;
&lt;br /&gt;
#Credit bitmaps:&lt;br /&gt;
%patch $30E74 $001DW&lt;br /&gt;
              $001EW&lt;br /&gt;
              $001FW&lt;br /&gt;
              $0020W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t display credits ==&lt;br /&gt;
&lt;br /&gt;
This patch completely removes the credit bitmaps, skipping the code block entirely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t display credit bitmaps in terminator sequence (Keen 4; frees $4007-$41A7)&lt;br /&gt;
%patch $4006 $CB&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display credit bitmaps in terminator sequence (Keen 5; frees $4001-$41A1)&lt;br /&gt;
%patch $4000 $CB&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t display credit bitmaps in terminator sequence (Keen 6; frees $3E21-$3FC1)&lt;br /&gt;
%patch $3E21 $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credits horizontal position ==&lt;br /&gt;
&lt;br /&gt;
This patch changes the horizontal position of the credit images. by default this is right in the middle of the screen, but it needs to be made less if the images are wider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Credit images horizontal position&amp;quot;&amp;gt;&lt;br /&gt;
#Credit images horizontal position -Keen 4&lt;br /&gt;
%patch $402C [$0014W]&lt;br /&gt;
&lt;br /&gt;
#Credit images horizontal position -Keen 5&lt;br /&gt;
%patch $4026 [$0014W]&lt;br /&gt;
&lt;br /&gt;
#Credit images horizontal position -Keen 6&lt;br /&gt;
%patch $3E47 [$0014W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credits sitting time ==&lt;br /&gt;
&lt;br /&gt;
This patch changes how long the credit images sit still for before moving up. If very small the images will just keep moving up the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Credit images horizontal position&amp;quot;&amp;gt;&lt;br /&gt;
#Credit images sitting time -Keen 4&lt;br /&gt;
%patch $424F [$00C8W]&lt;br /&gt;
&lt;br /&gt;
#Credit images sitting time -Keen 5&lt;br /&gt;
%patch $4249 [$00C8W]&lt;br /&gt;
&lt;br /&gt;
#Credit images sitting time -Keen 6&lt;br /&gt;
%patch $406A [$00C8W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credits wobble ==&lt;br /&gt;
&lt;br /&gt;
This patch causes the credit images to &#039;wobble&#039; back and forth once they rise into position.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Credit images wobble&amp;quot;&amp;gt;&lt;br /&gt;
#Credit images wobble -Keen 4&lt;br /&gt;
%patch $4012 $0005W&lt;br /&gt;
&lt;br /&gt;
#Credit images wobble -Keen 5&lt;br /&gt;
%patch $400C $0005W&lt;br /&gt;
&lt;br /&gt;
#Credit images wobble -Keen 6&lt;br /&gt;
%patch $3E2D $0005W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credits appear instantly ==&lt;br /&gt;
&lt;br /&gt;
This patch makes the credit images appear in the middle of the screen instantly instead of sliding into place. It is slightly buggy (&#039;Image dirt&#039; may appear) but stable. The images will slide off the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Credit images appear instantly&amp;quot;&amp;gt;&lt;br /&gt;
#Credit images appear instantly -Keen 4&lt;br /&gt;
%patch $4217 $0000W&lt;br /&gt;
&lt;br /&gt;
#Credit images appear instantly -Keen 5&lt;br /&gt;
%patch $4211 $0000W&lt;br /&gt;
&lt;br /&gt;
#Credit images appear instantly -Keen 5&lt;br /&gt;
%patch $4032 $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Title_screen&amp;diff=41526</id>
		<title>Patch:Title screen</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Title_screen&amp;diff=41526"/>
		<updated>2020-04-01T03:01:32Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Clear up the titlescreen patch for Galaxy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers patches relating to the title screen. The title screen in Keen Vorticons is where the [[Patch:Main menu|main menu]] appears. In Keen Dreams it is the image that appears &#039;&#039;before&#039;&#039; the [[Patch:Main menu|main menu]] as well as including the [[Patch:High Scores (Dreams)|High Scores table.]] In Keen Galaxy it is again a simple image leading to the main menu. Associated patches are [[Patch:Main menu]] and [[Patch:Start sequence]].&lt;br /&gt;
&lt;br /&gt;
In Keen Vorticons a level is displayed that can be edited in a level editor. The level used is a screen from &amp;lt;tt&amp;gt;LEVEL90.CKx&amp;lt;/tt&amp;gt;. In Dreams, the title screen image can be edited with [[Keengraph]]. In Galaxy, the title screen image can be edited with [[ModKeen]] along with most other Galaxy graphics.&lt;br /&gt;
&lt;br /&gt;
Due to the different natures of the title screens, this page will be divided into three sections, Vorticons, Dreams and Galaxy. Patches for relevant episodes and outcomes will be listed under these sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorticons title ==&lt;br /&gt;
&lt;br /&gt;
At present, it is possible to patch the location and [[Patch:Images|bitmaps]] used for the title and the &amp;quot;F1 for help&amp;quot; graphics. (Note that the title graphic cannot be changed easily, as it is not given a value in the code, because it uses bitmap 0.) All values are the default values. For help with graphic location patches, see [[Patch:Images]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $97C0 [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $97B2 [$0001W] #Title V&lt;br /&gt;
%patch $97B6 [$0008W] #Title H&lt;br /&gt;
%patch $97C4 [$00B6W] #F1 V&lt;br /&gt;
%patch $97C8 [$0010W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $97CB $90 $90 $90 #F1&lt;br /&gt;
%patch $97B9 $90 $90 $90 #Title&lt;br /&gt;
%patch $97AB $C3         #F1 AND title&lt;br /&gt;
%patch $97E4 $90         #F1 AND title when menu is open (Has side effects!)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $9241 [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $9233 [$0001W] #Title V&lt;br /&gt;
%patch $9237 [$0008W] #Title H&lt;br /&gt;
%patch $9245 [$00B6W] #F1 V&lt;br /&gt;
%patch $9249 [$0010W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $924C $90 $90 $90 #F1&lt;br /&gt;
%patch $923A $90 $90 $90 #Title&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Bitmaps:&lt;br /&gt;
%patch $A09A [$0002W] #F1&lt;br /&gt;
&lt;br /&gt;
#Locations:&lt;br /&gt;
%patch $A08C [$0001W] #Title V&lt;br /&gt;
%patch $A090 [$0008W] #Title H&lt;br /&gt;
%patch $A09E [$00B6W] #F1 V&lt;br /&gt;
%patch $A0A2 [$0013W] #F1 H&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t show...&lt;br /&gt;
%patch $A0A5 $90 $90 $90 #F1&lt;br /&gt;
%patch $A093 $90 $90 $90 #Title&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dreams title ==&lt;br /&gt;
&lt;br /&gt;
The Dreams title consists of a &#039;demo loop&#039; that displays the title screen and the [[Patch:High Scores (Dreams)|High scores]] in a constant cycle. Though loading level 20 this is never shown in the game. (In the patchable version at least.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Screen image file and errors ===&lt;br /&gt;
&lt;br /&gt;
The screen image is loaded and decompressed form a separate file archive in which it is the only chunk. See also [[Patch:Files and filenames]].&lt;br /&gt;
&lt;br /&gt;
There are three possible errors. The first occurs when the titlescreen archive file cannot be found. The second occurs if the file itself is corrupt and doesn&#039;t fit the expected parameters. The third occurs if the title chunk &#039;&#039;inside&#039;&#039; the file is corrupt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Title screen in Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Dreams titlescreen archive&lt;br /&gt;
%patch $435C  [$038DW] #Look for this file&lt;br /&gt;
%patch $438A  [$038DW] #Load this file&lt;br /&gt;
%patch $23DFD &amp;quot;KDREAMS.CMP&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Title screen file&lt;br /&gt;
%patch $23E23 &amp;quot;TITLESCR.LBM&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#No titlescreen archive&lt;br /&gt;
%patch $436D  [$0399W]&lt;br /&gt;
%patch $23E09 &amp;quot;Couldn&#039;t find KDREAMS.CMP&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Can&#039;t read titlescreen error&lt;br /&gt;
%patch $439D  [$03C0W]&lt;br /&gt;
%patch $23E30 &amp;quot;Can&#039;t load TITLE SCREEN&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Can&#039;t read title chunk error&lt;br /&gt;
%patch $9C61  [$25EDW]&lt;br /&gt;
%patch $2605D &amp;quot;Error Loading Compressed lib shape!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Time titlescreen is visible for ===&lt;br /&gt;
&lt;br /&gt;
By default the &#039;title sequence&#039; loops between the titlescreen and the high score table. The first appearance of the title, when the game first loads, is especially long, while later appearances are shorter.&lt;br /&gt;
&lt;br /&gt;
As such there are two times involved, the first for the special initial appearance and the second for the &#039;looping appearances&#039;. Note that the first, longer, time is the &#039;&#039;sum&#039;&#039; of &#039;&#039;both&#039;&#039; times rather than a standalone value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Titlescreen display time&amp;quot;&amp;gt;&lt;br /&gt;
#Titlescreen display time&lt;br /&gt;
%patch $43FA [$0118W] #First appearance extra time&lt;br /&gt;
%patch $4447 [$00D2W] #Loop appearances&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip titlescreen, go straight to menu ===&lt;br /&gt;
&lt;br /&gt;
The first patch causes the game to go straight to the menu instead of displaying the titlescreen. In fact there is no way to view the titlescreen (Or High score table that goes with it.), it is completely disabled.&lt;br /&gt;
&lt;br /&gt;
The second patch is related, except the titlescreen appears, the player is sent to the menu after a time instead of seeing the High Scores.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to menu&amp;quot;&amp;gt;&lt;br /&gt;
#Skip titlescreen go straight to Main Menu&lt;br /&gt;
%patch $4395 $E9 $00FFW&lt;br /&gt;
&lt;br /&gt;
#Go to menu after titlescreen&lt;br /&gt;
%patch $4408 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Skip titlescreen, go straight to game ===&lt;br /&gt;
&lt;br /&gt;
This patch causes the game to go straight to a new game instead of displaying the titlescreen. In fact there is no way to view the titlescreen (Or High score table that goes with it.), it is completely disabled and pressing &#039;esc&#039; in-game will cause the entire game to &#039;reset&#039;.&lt;br /&gt;
&lt;br /&gt;
There are two variables that can be altered, thedifficulty level of the game and the first level entered. In this patch they are &#039;easy&#039; and level 0 (the map).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go straight to game&amp;quot;&amp;gt;&lt;br /&gt;
#Skip titlescreen go straight to game&lt;br /&gt;
%patch $4395  $E9 $00FFW&lt;br /&gt;
%patch $28B32 $4AB8W&lt;br /&gt;
%patch $5D01  $C7 $06 $7128W [$0001W] #Difficulty&lt;br /&gt;
%patch $3C0C  $7124W [$0000W]         #Level to start in&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== High scores table ===&lt;br /&gt;
&lt;br /&gt;
The [[Patch:High Scores (Dreams)|High Score table]] appears after the title screen then, after a period of time, returns to the title screen again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== No High Scores in title sequence ====&lt;br /&gt;
&lt;br /&gt;
This patch removes the High Score table in the title sequence only. While the palyer can enter a new high score and see the table at a Game Over they will not see the table when first starting the game and waiting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;No High Scores in title sequence&amp;quot;&amp;gt;&lt;br /&gt;
#No High scores in title sequence&lt;br /&gt;
%patch $4475 $EB $09&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Time score table is visible ====&lt;br /&gt;
&lt;br /&gt;
These patches control how long the High Scores table is visible before the title screen appears. There are two different situations, Game Over and title sequence, with different times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;High Score display time&amp;quot;&amp;gt;&lt;br /&gt;
#High Scores display time&lt;br /&gt;
%patch $4484  [$01A4W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Go to main menu after Title\High Scores ====&lt;br /&gt;
&lt;br /&gt;
These patches cause the game to go to the [[Patch:Main menu (Dreams)|main menu]] after the titlescreen or high scores are displayed, even if the player doesn&#039;t press a key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Go to main menu even if no key is pressed&amp;quot;&amp;gt;&lt;br /&gt;
#Go to main menu after title displays&lt;br /&gt;
%patch $4455 $EB&lt;br /&gt;
&lt;br /&gt;
#Go to main menu after High Score table displays&lt;br /&gt;
%patch $4492 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Galaxy title ==&lt;br /&gt;
&lt;br /&gt;
The Galaxy title screen is much less involved than the Vorticons one. All that can really be done is to change what image is used for it. There are, in fact, two different title screens shown. The first appears when the [[Patch:Terminator text|&#039;terminator text&#039;]] is allowed to scroll uninterrupted. This will result in a &#039;titelscreen fade&#039; where the title slowly appears from a black screen. The second title screen appears instantly if the player presses any key. By default both of these titles are identical, but they don&#039;t have to be.&lt;br /&gt;
&lt;br /&gt;
Like all bitmaps, the title screen must be cached before it can be displayed. The number given in these patches is the chunk number (Properly labelled by [[Keengraph]]; [[ModKeen]] will label the bitmap with a different number.) As such there are a total of four lines of code, two for each title screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Galaxy Title screens&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 titlescreen chunks&lt;br /&gt;
%patch $4EDC [$006DW] #Cache for title fade&lt;br /&gt;
%patch $4CF4 [$006DW] #Display in title fade&lt;br /&gt;
%patch $51C4 [$006DW] #Cache for title jump&lt;br /&gt;
%patch $51D0 [$006DW] #Display in title jump&lt;br /&gt;
&lt;br /&gt;
#Keen 5 titlescreen chunks&lt;br /&gt;
%patch $4ED6 [$0058W] #Cache for title fade&lt;br /&gt;
%patch $4CEE [$0058W] #Display in title fade&lt;br /&gt;
%patch $51BE [$0058W] #Cache for title jump&lt;br /&gt;
%patch $51CA [$0058W] #Display in title jump&lt;br /&gt;
&lt;br /&gt;
#Keen 6 titlescreen chunks&lt;br /&gt;
%patch $4CF7 [$0022W] #Cache for title fade&lt;br /&gt;
%patch $4B0F [$0022W] #Display in title fade&lt;br /&gt;
%patch $4FCD [$0022W] #Cache for title jump&lt;br /&gt;
%patch $4FD9 [$0022W] #Display in title jump&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Bounder&amp;diff=41525</id>
		<title>Patch:Bounder</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Bounder&amp;diff=41525"/>
		<updated>2020-04-01T02:14:05Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Miiiinor format tweak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bounder]]s are red, spherical creatures in [[Keen 4]]. They are harmless to Keen and can be ridden on by him. This effect is not due to anything in the Bounder&#039;s code but rather [[Patch:Keen (Keen 4)#Sprite_Collision|Keen&#039;s sprite collisions.]] As such patches that affect the finer points of this interaction (As opposed to whether or not the Bounder possesses that interaction) can be found at [[Patch:Keen (Keen 4)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite type|Sprite Type]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder uses sprite type 15, which means it can push Keen, and Keen can ride on it, much like a [[Patch:Platform (Keen 4)|moving platform.]] Changing this will make it so Keen can&#039;t ride on or be pushed by Bounders. The second sprite type is that the Bounder changes to when stunned. The default values makes it such that Keen can&#039;t stand on the Bounder once it has been stunned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder sprite type&lt;br /&gt;
%patch $110FE [$0F] #When spawned&lt;br /&gt;
%patch $11174 [$21] #When stunned&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bounder can still be stood on after being shot ==&lt;br /&gt;
&lt;br /&gt;
This patch alter things so that the Bounder can still be stood on after they have been shot. This is important if the modder wants the Bounder to be shot multiple times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder can still be stood on after being shot&lt;br /&gt;
%patch $11172 $EB $02&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder has a number of interesting actions. When created it is bouncing vertically, a two-frame action loop. Randomly it will go to bouncing left or right, another two frame action loop. After bouncing left or right it will return to bouncing vertically.&lt;br /&gt;
&lt;br /&gt;
If Keen is standing directly on top of the Bounder then it will alter its action to bouncing vertically. When shot it jumps into the air as a stunned Bounder, that changes to a landed stunned bounder when it hits the ground. This will then do nothing.&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $2F12W #Bounder bouncing vertically&lt;br /&gt;
 $2F30W #Bounder bouncing vertically&lt;br /&gt;
 $2F4EW #Bounder bouncing left/right&lt;br /&gt;
 $2F6CW #Bounder bouncing left/right&lt;br /&gt;
 $2F8AW #Stunned Bounder in air&lt;br /&gt;
 $2FA8W #Stunned Bounder on ground&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder start -bounce vertically&lt;br /&gt;
%patch $1112A [$2F12W]&lt;br /&gt;
&lt;br /&gt;
#Vertical bounce loop&lt;br /&gt;
%patch $31D9E [$2F30W]&lt;br /&gt;
%patch $31DBC [$2F12W]&lt;br /&gt;
&lt;br /&gt;
#Randomly bounce left\right&lt;br /&gt;
%patch $1126E [$2F4EW]&lt;br /&gt;
&lt;br /&gt;
#Bouncing left\right loop&lt;br /&gt;
%patch $31DDA [$2F6CW]&lt;br /&gt;
%patch $31DF8 [$2F4EW]&lt;br /&gt;
&lt;br /&gt;
#After bouncing left\right bounce vertically&lt;br /&gt;
%patch $11221 [$2F12W]&lt;br /&gt;
&lt;br /&gt;
#If Keen is on top of bounder bounce vertically&lt;br /&gt;
%patch $1127D [$2F12W]&lt;br /&gt;
&lt;br /&gt;
#When shot, fly through air&lt;br /&gt;
%patch $11166 [$2F8AW]&lt;br /&gt;
&lt;br /&gt;
#When stunned in air and landing go to stun&lt;br /&gt;
%patch $31E16 [$2FA8W]&lt;br /&gt;
&lt;br /&gt;
#When stunned on ground do nothing&lt;br /&gt;
%patch $31E34 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder does not have its own unique behavior. Instead it uses a generic &#039;stunned sprite&#039; behavior, even while not stunned. This behavior lets it fly through the air and animate. (Bouncing it handled in its tile collision.)&lt;br /&gt;
&lt;br /&gt;
Patches controlling how far left or right of the Bounder Keen must be to control it can be found in the sprite positioning section.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $09DC16C9RL #Shot sprite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bound u-d&lt;br /&gt;
%patch $31D92 $09DC16C9RL&lt;br /&gt;
%patch $31DB0 $09DC16C9RL&lt;br /&gt;
&lt;br /&gt;
#Bound l-r&lt;br /&gt;
%patch $31DCE $09DC16C9RL&lt;br /&gt;
%patch $31DEC $09DC16C9RL&lt;br /&gt;
&lt;br /&gt;
#Stunned&lt;br /&gt;
%patch $31E0A $09DC16C9RL&lt;br /&gt;
%patch $31E28 $09DC16C9RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bounder chases Keen ==&lt;br /&gt;
&lt;br /&gt;
This patch changes things so that Bounders will always chase Keen. This is done by making it so that Keen doesn&#039;t have to be riding them to make them change direction, so they&#039;ll always head in his direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bounders chase Keen&amp;quot;&amp;gt;&lt;br /&gt;
#Bounders chase Keen&lt;br /&gt;
%patch $111C2 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bounder doesn&#039;t obey Keen when he rides it ==&lt;br /&gt;
&lt;br /&gt;
These patches make the Bounder ignore Keen; the first makes the Bounder continue to bounce in random directions whether or not Keen is on it. The second and third patches stop the Bounder moving left or right when Keen is on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bounder doesn&#039;t obey Keen when he rides it&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder doesn&#039;t obey Keen when he rides it&lt;br /&gt;
%patch $111C2 $EB&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t obey Keen...&lt;br /&gt;
%patch $111D6 $EB #Left&lt;br /&gt;
%patch $111EC $EB #Right&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed and Jump Height]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder does not use animation motion, its speed is defined entirely by its bounces, including the &#039;kick&#039; it gets when it is shot by Keen. The Bounder has a set jump height, and two jump lengths (The same length left and right.), one for a &#039;free&#039; Bounder, and one for a &#039;ridden&#039; Bounder.&lt;br /&gt;
&lt;br /&gt;
The Bounder also has a number of jump directions, that is, what directions to move. When being ridden by Keen these are quite obvious, it heads in the direction Keen is riding it. When &#039;free&#039; they are random. (See the probability section below.) When riding Keen must be a certain number of pixels left or right of the Bounder&#039;s &#039;&#039;center&#039;&#039; to make it move in the direction he wishes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bounder jump height&amp;quot;&amp;gt;&lt;br /&gt;
#How high a bounder flies into the air when shot&lt;br /&gt;
%patch $11179 [$20]&lt;br /&gt;
&lt;br /&gt;
%patch $111BC [$FFCEW] #Bounder&#039;s vertical jump height&lt;br /&gt;
%patch $111FE [$0018W] #Bounder&#039;s jump length (With Keen riding)&lt;br /&gt;
%patch $11260 [$0018W] #Bounder&#039;s jump length (Without Keen riding)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bounder&#039;s jump directions:&amp;quot;&amp;gt;&lt;br /&gt;
#Direction bounder is set to after landing (Up)&lt;br /&gt;
%patch $11232 $0000W &lt;br /&gt;
&lt;br /&gt;
#Free bounce directions&lt;br /&gt;
%patch $11245 $FFFFW #Left&lt;br /&gt;
%patch $11253 $0001W #Right&lt;br /&gt;
%patch $1125A $0000W #Up&lt;br /&gt;
&lt;br /&gt;
#How far left\right Keen must be to make Bounder move in that direction&lt;br /&gt;
%patch $111D1 [$0040W] #Left&lt;br /&gt;
%patch $111E7 [$0040W] #Right&lt;br /&gt;
&lt;br /&gt;
#Ridden bounce directions&lt;br /&gt;
%patch $111DB $FFFFW  #Left (Keen riding l)&lt;br /&gt;
%patch $111F1 $0001W  #Right (Keen riding r)&lt;br /&gt;
%patch $111F8 $$0000W #Up (Keen on top)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Animation motion&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder bouncing Vertically&lt;br /&gt;
%patch $31D8E $0000W $0000W #Speed 1&lt;br /&gt;
%patch $31DAC $0000W $0000W #Speed 2&lt;br /&gt;
&lt;br /&gt;
#Bounder bouncing side to side&lt;br /&gt;
%patch $31DCA $0000W $0000W #Speed 1&lt;br /&gt;
%patch $31DE8 $0000W $0000W #Speed 2&lt;br /&gt;
&lt;br /&gt;
#Stunned&lt;br /&gt;
%patch $31E06 $0000W $0000W #Speed 1 (In air)&lt;br /&gt;
%patch $31E24 $0000W $0000W #Speed 2 (On ground)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bounder doesn&#039;t jump when shot ==&lt;br /&gt;
&lt;br /&gt;
This patch stops the Bounder jumping when it is shot, it simply falls to the ground.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Shot Bounder doesn&#039;t jump&lt;br /&gt;
%patch $11176 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
== Collision values ==&lt;br /&gt;
&lt;br /&gt;
The Bounder has a unique collision that it uses when bounding left or right. Once it has been shot it has no collision, preventing it from being repeatedly stunnable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bouncing vertical&lt;br /&gt;
%patch $31D96 $10800938RL&lt;br /&gt;
%patch $31DB4 $10800938RL&lt;br /&gt;
&lt;br /&gt;
#Bouncing left\right&lt;br /&gt;
%patch $31DD2 $10800938RL&lt;br /&gt;
%patch $31DF0 $10800938RL&lt;br /&gt;
&lt;br /&gt;
#Stunned&lt;br /&gt;
%patch $31E0E $00000000L #In air&lt;br /&gt;
%patch $31E2C $00000000L #On ground&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collision code ==&lt;br /&gt;
&lt;br /&gt;
The collision code is notable in that it sets a number of variables to zero when shot. it is not known what these are at present. The Bounder responds only to Keen&#039;s shot by default; while Keen can ride the bounder, this does not relate to the bounder&#039;s collision code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder collision&lt;br /&gt;
%patch $11138 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D {$03 $75} $32&lt;br /&gt;
              $C7 $44 $3E [$0000W]  $C7 $44 $40 [$0000W]  $C7 $44 $42 [$0000W]  $8B&lt;br /&gt;
              $04 $89 $44 $44 $57 $9A $0D8F0D43RL     $83 $C4 $02 $B8 [$2F8AW]&lt;br /&gt;
              $50 $56 $9A $09DC120ARL     $83 $C4 $04 $C7 $04 [$0021W]  $83 $6C&lt;br /&gt;
              $18 $20 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bounder lethal but shootable ===&lt;br /&gt;
&lt;br /&gt;
This patch adapts the [[Patch:Poison Slug|Poison Slug]]&#039;s collision code for the Bounder. It does not require any extra space be created, but is incompatible with some of the patches on this page, such as the shot action and jump height when shot. (This patch removes the Bounder&#039;s ability to jump into the air when shot by Keen.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder collision: Lethal, shootable&lt;br /&gt;
%patch $11138 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D [$02] {$75} $09     #Check for Keen (Type 2)&lt;br /&gt;
              $9A $0B8013E9RL     $5F $5E $5D $CB $83 $3D [$03] {$75} $0E $B8         #If Keen, kill him; check for shot (Type 3)&lt;br /&gt;
              [$2F8AW]  $50 $57 $56 $9A $09DC1695RL     $83 $C4 $06 $5F $5E $5D $CB #If shot, become $2F8AW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bounder can be shot multiple times ===&lt;br /&gt;
&lt;br /&gt;
This patch makes the Bounder stun for a short time when shot, before resuming as normal. The blue value is how long the Bounder will remain stunned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bounder can be shot multiple times&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder stuns temporarily&lt;br /&gt;
%patch $31E18 $01EFW $01F0W $0000W $0000W $0001W [$00A8W] $00000W $0000W&lt;br /&gt;
              $00000000L    $10800938RL   $09DC1847RL&lt;br /&gt;
%patch $31E34 $2F12W&lt;br /&gt;
%patch $11165 $C7 $44 $1C $2FA8W $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bounder jumps when touching Keen ===&lt;br /&gt;
&lt;br /&gt;
This patch makes it so that the Bounder will jump into the air when Keen touches it in any way (Except from above, when he stands on it.) This means Keen can do things such as bounce the Bounder off of his head or launch it high in the air by jumping while under it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bounder jumps when touching Keen&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder jumps when touching Keen:&lt;br /&gt;
%patch $11145 $02 $75 $04 $83 $6C $18 $20 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder has three cycles of animation. The first relates to whether the Bounder is moving left or right, using different animations depending on the direction. The second is for when the Bounder is moving straight up and down. The third cycle involves the shot and stunned Bounder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $30706 $01EBW #Bounder Cache start&lt;br /&gt;
%patch $30750 $01F1W #Bounder cache end&lt;br /&gt;
&lt;br /&gt;
#Bouncing vertically&lt;br /&gt;
%patch $31D82 $01EFW $01EFW&lt;br /&gt;
%patch $31D8C $0014W        #Animation speed&lt;br /&gt;
%patch $31DA0 $01F0W $01F0W&lt;br /&gt;
%patch $31DAA $0014W        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Bounder moving left/right&lt;br /&gt;
%patch $31DBE $01EBW $01EDW&lt;br /&gt;
%patch $31DC8 $0014W        #Animation speed&lt;br /&gt;
%patch $31DDC $01ECW $01EEW&lt;br /&gt;
%patch $31DE6 $0014W        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Stunned Bounder in air&lt;br /&gt;
%patch $31DFA $01EFW $01EFW&lt;br /&gt;
%patch $31E04 $0000W        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Stunned Bounder (Do nothing)&lt;br /&gt;
%patch $31E18 $01F1W $01F1W&lt;br /&gt;
%patch $31E22 $0000W        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite positioning|Sprite positioning]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder spawns 7 pixels higher then where it is placed in-level. This is not really important since the Bounder doesn&#039;t walk along the ground.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn height:&lt;br /&gt;
%patch $1111A [$FF80W] #7 pixels up&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen control positions ==&lt;br /&gt;
&lt;br /&gt;
Keen can control the Bounder if he is less than 4 pixels from either edge of the sprite. These limits can be changed, however it is wise not to make them so wide that they overlap.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder control limits&lt;br /&gt;
%patch $111D1 [$0040W] #Left -4 pixels&lt;br /&gt;
%patch $111E7 [$0040W] #Right -4 pixels&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite Sounds|Sounds]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder has a distinct bouncing sound, this can be blocked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder bounce sound&lt;br /&gt;
%patch $111AE [$10]&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t make Bounder bounce sound:&lt;br /&gt;
%patch $111AD $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite clipping and foreground|Clipping and foreground]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder has a foreground variable of 0, meaning it appears behind all sprites and foreground tiles. This avoids graphics oddities when it bounces against walls and ceilings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder foreground variable&lt;br /&gt;
%patch $11108 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder&#039;s tile interaction is responsible for its actual bouncing, its bouncing sound and jump heights. (See above speed section.) It uses its tile collision whenever bouncing but of course uses a generic &#039;stunned sprite&#039; tile collision after it has been shot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
%patch $31D9A $1080097ERL #Bounding up&lt;br /&gt;
%patch $31DB8 $1080097ERL #Bounding up&lt;br /&gt;
&lt;br /&gt;
%patch $31DD6 $1080097ERL #Bounding l/r&lt;br /&gt;
%patch $31DF4 $1080097ERL #Bounding l/r&lt;br /&gt;
&lt;br /&gt;
%patch $31E12 $09DC1913RL #Shot&lt;br /&gt;
%patch $31E30 $09DC1913RL #Stunned&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interaction code ==&lt;br /&gt;
&lt;br /&gt;
This is the Bounder&#039;s tile interaction code. It is quite complex due to the fact that it controls not only the Bounder interacting with walls, floors and ceilings, but also Keen controlling it while riding and random bouncing.&lt;br /&gt;
&lt;br /&gt;
The first line checks for ceilings; if found then the Bounder&#039;s vertical speed is set to zero. On the second line floors are checked for, if found a big jump over the following code is itself jumped.&lt;br /&gt;
&lt;br /&gt;
Following this (That is, if floor is found) an unknown subroutine is called and if it returns a value of 0, sound $10 played (The Bounder bouncing sound.) On the same line the Bounder&#039;s jump height is set to &amp;lt;tt&amp;gt;$FFCEW&amp;lt;/tt&amp;gt;. Next online 5 the Bounder checks to see if Keen is riding it, if so its Misc Variable C is set to 0 and Keen&#039;s position relative to it checked.&lt;br /&gt;
&lt;br /&gt;
First Keen&#039;s left hitbox side is compared to the Bounder&#039;s, if less than 40 pixels from the Bounder&#039;s edge the Boudner&#039;s horizontal direction is set to -1 (Left). The same is then done for Keen&#039;s right hitbox side, turning the Bounder right. If neither is the case the Bounder&#039;s horizontal direction is set to 0. Finally at the start of line 9 the Bounder is given a horizontal speed, a jump width and the remaining &#039;random bounce&#039; code skipped.&lt;br /&gt;
&lt;br /&gt;
The random bounce code starts at the end of line 9. The first two lines check to see if the Bounder has been bounding left\right, if so it is &#039;reset&#039; to bounding up and down. This acts as a restraint to stop the Bounder &#039;getting stuck&#039; bouncing in a single direction. After this the random number generator is called. If the resulting number is less than $64 the Bounder will bound left, if it is between $64 and $00C8W then it will bound right, larger than $00C8W then it will bound up and down. This gives a roughly 33% chance for each option. After &#039;&#039;that&#039;&#039; the Bounder checks what direction it is moving in. If it is moving up and down it changes its action to bouncing up and down, otherwise it changes its action to bouncing left\right.&lt;br /&gt;
&lt;br /&gt;
Finally walls are checked for. If left or right walls are found the Bounder simply reverses its current direction. The remaining code draws the sprite onscreen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder tile collision&lt;br /&gt;
%patch $1117E $55 $8B $EC $83 $EC $02 $56 $57 $8B $7E $06 $83 $7D {$3A} [$00] {$74}&lt;br /&gt;
              $05 $C7 $45 $18 [$0000W]  $83 $7D {$36} [$00] {$75} $03 $E9 $00ECW  $FF&lt;br /&gt;
              $45 $40 $57 $9A $09DC1260RL     $83 $C4 $02 $0B $C0 $74 $0C $B8&lt;br /&gt;
              [$0010W]  $50 $9A $187409F1RL     $83 $C4 $02 $C7 $45 $18 [$FFCEW]&lt;br /&gt;
              $39 $3E [$7A6EW]  {$75} $43 $C7 $45 $40 [$0000W]  $8B $1E $D6 $A7 $8B&lt;br /&gt;
              $45 $22 $2D [$0040W]  $39 $47 [$22] {$73} $07 $C7 $45 $0E [$FFFFW]  $EB&lt;br /&gt;
              $1B $8B $1E $D6 $A7 $8B $45 $26 $05 [$0040W]  $39 $47 $26 $76 $07&lt;br /&gt;
              $C7 $45 $0E [$0001W]  $EB $05 $C7 $45 $0E [$0000W]  $8B $45 $0E $BA&lt;br /&gt;
              [$0018W]  $F7 $EA $89 $45 $16 $EB $60&lt;br /&gt;
&lt;br /&gt;
#Randomly bounce&lt;br /&gt;
%patch $11207                                     $83 $7D $40 $02 $7E $06 $83&lt;br /&gt;
              $7D $3E [$00] {$75} $1C $C7 $45 $3E [$0001W]  $33 $C0 $89 $45 $16 $89&lt;br /&gt;
              $45 $0E $B8 [$2F12W]  $50 $57 $9A $09DC120ARL     $83 $C4 $04 $EB&lt;br /&gt;
              $38 $C7 $45 $3E $0000W  $9A $1D02002ARL     $89 $46 $FE $83 $7E&lt;br /&gt;
              $FE [$64] {$7D} $07 $C7 $45 $0E [$FFFFW]  $EB $13 $81 $7E $FE [$00C8W]&lt;br /&gt;
              {$7D} $07 $C7 $45 $0E [$0001W]  $EB $05 $C7 $45 $0E [$0000W]  $8B $45&lt;br /&gt;
              $0E $BA [$0018W]  $F7 $EA $89 $45 $16 $83 $7D $0E [$00] {$74} $0F $B8&lt;br /&gt;
              [$2F4EW]  $50 $57 $9A $09DC120ARL     $83 $C4 $04 $EB $0D $B8 [$2F12W]&lt;br /&gt;
                 $50 $57 $9A $09DC120ARL     $83 $C4 $04&lt;br /&gt;
&lt;br /&gt;
#Check for walls and drawn sprite&lt;br /&gt;
%patch $11289                                             $83 $7D {$38} [$00] {$75}&lt;br /&gt;
              $06 $83 $7D {$3C} [$00] {$74} $10 $8B $45 $0E $F7 $D8 $89 $45 $0E $8B&lt;br /&gt;
              $45 $16 $F7 $D8 $89 $45 $16 $FF $75 $20 $33 $C0 $50 $FF $75 $1E&lt;br /&gt;
              $FF $75 $0C $FF $75 $0A $8B $C7 $05 $46 $00 $50 $9A $16541641RL&lt;br /&gt;
                  $83 $C4 $0C $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Action_Type|Action type]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder uses action type 3 for all of its actions except when stunned. This allows it to respond to Keen while still moving smoothly through the air. Type 2 is used for both stunned actions as expected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bouncing vertical&lt;br /&gt;
%patch $31D86 [$0003W]&lt;br /&gt;
%patch $31DA4 [$0003W]&lt;br /&gt;
&lt;br /&gt;
#Bounder moving left/right&lt;br /&gt;
%patch $31DC2 [$0003W]&lt;br /&gt;
%patch $31DE0 [$0003W]&lt;br /&gt;
&lt;br /&gt;
#Stunned Bounder in air&lt;br /&gt;
%patch $31DFE [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Stunned Bounder on ground&lt;br /&gt;
%patch $31E1C [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] =&lt;br /&gt;
&lt;br /&gt;
The Bounder has no need for either of these variables and so has a value of 0 for both in all of its actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bouncing vertical&lt;br /&gt;
%patch $31D88 [$0000W $0000W]&lt;br /&gt;
%patch $31DA6 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Bounder moving left/right&lt;br /&gt;
%patch $31DC4 [$0000W $0000W]&lt;br /&gt;
%patch $31DE2 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Stunned in air&lt;br /&gt;
%patch $31E00 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Stunned on ground&lt;br /&gt;
%patch $31E1E [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Probability|Probability, randomness and jump directions]] =&lt;br /&gt;
&lt;br /&gt;
When the Bounder is not being ridden by Keen is randomly changes its bouncing directions. There are three directions it can bounce; left, right and vertical (Up and down.) This is handled via an unusual probability check. First the game takes a random number from 0-FF. Then it checks if the number is greater than $64. If &#039;&#039;not&#039;&#039; the Bounder bounds left. If it is then a second check is performed, this one seeing if the number if greater than $C8 ($64 + $64). If &#039;&#039;not&#039;&#039; the Bounder bounds right, otherwise it bounds vertically.&lt;br /&gt;
&lt;br /&gt;
This means there is an equal chance of the Bounder bouncing left or right, but a smaller chance of it bouncing vertically. (0-100 is left, 101-200 is right, 201-255 is vertical. This is a ratio of about 2:2:1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Bounder bounce directions&lt;br /&gt;
%patch $11245 $FFFFW #Left&lt;br /&gt;
%patch $11253 $0001W #Right&lt;br /&gt;
%patch $1125A $0000W #Vertical&lt;br /&gt;
&lt;br /&gt;
#Bounder bounce probabilities&lt;br /&gt;
%patch $1123F $64 #Left-right\vertical&lt;br /&gt;
%patch $1124C $C8 #Right-vertical&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite spawning|Sprite spawn code]] =&lt;br /&gt;
&lt;br /&gt;
In the initiation code notice the [[Patch:Sprite cache|Bounder cache]] being set (&amp;lt;tt&amp;gt;$C7 $06 $CB71W  $0001W&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
In the spawning code the last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Galaxy Sprite Parameters#Sprite_activity|sprite activity,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
The Bounder always starts the level moving down and right. (Odd, it has no reason to.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction the sprite starts moving in, either $0001W (Facing down), $FFFFW (Facing up) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Location of initiation code&lt;br /&gt;
%patch $EE9B [$01FCW] #Bounder (At $EAEC)&lt;br /&gt;
&lt;br /&gt;
#Bounder Initiation code&lt;br /&gt;
%patch $EAEC $FF $76 $FC $57 $9A {$108008EARL}     $83 $C4 $04 $C7 $06 $CB71W&lt;br /&gt;
             $0001W  $E9 $02FCW&lt;br /&gt;
&lt;br /&gt;
#Bounder spawning code&lt;br /&gt;
%patch $110EA $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000FW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $C7 $47 $10 [$0001W]  $C7 $47 $0E [$0000W]  $B8&lt;br /&gt;
              [$2F12W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen%27s_shot_(Galaxy)&amp;diff=41518</id>
		<title>Patch:Keen&#039;s shot (Galaxy)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen%27s_shot_(Galaxy)&amp;diff=41518"/>
		<updated>2020-03-24T07:01:42Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add Keen 6 patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In Keen Galaxy Keen&#039;s shot is a green ball of energy that can be shot in four directions while Keen is standing, jumping or on a pole. Its behavior is near identical across all three Galaxy episodes and so all three are treated here. 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)]].&lt;br /&gt;
&lt;br /&gt;
This page deals only with the shot once it is produced, as well as the  process of creating it. It does not contain patches relating to the player, such patches can be found on [[Patch:Keen shooting (Galaxy)]], which deals with when and how the player produces the shot. (Including the famous [[Keen_6_Bugs#Impossible_Bullet|&#039;impossible bullet&#039; bug.)]] As an example, this page will contain patches for the shooting sound and shot directions, while the other page will contain patches relating to disabling shooting on poles, having a machine gun or the player&#039;s shooting animations.&lt;br /&gt;
&lt;br /&gt;
The first sections of the page deal with the shot being produced, while the latter sections deal with the produced shot&#039;s [[Patch:Galaxy Sprite Parameters|sprite variables.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Shot direction]] =&lt;br /&gt;
&lt;br /&gt;
There are two aspects to shot direction. The first is the actual directions themselves. These are differentiated by giving different values of horizontal and vertical direction to a shot. However this code must be pointed to, and this is done with a pointer list that gets its value from what direction the player is facing.&lt;br /&gt;
&lt;br /&gt;
There are eight possible directions for a shot to go (Up, up right, up left, left...) of which seven are on the list and only four are valid. (It is usually impossible to spawn an invalid shot, but it can happen.) These patches relate to the following section also, which passes a direction value to the game for the directions list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Location of pointer list (D8F0 + D35 = E625)&lt;br /&gt;
%patch $E5C5 $0D35W&lt;br /&gt;
&lt;br /&gt;
#Length of list&lt;br /&gt;
%patch $E5BD $06&lt;br /&gt;
&lt;br /&gt;
#Spawnshot pointer list (Origin D8F0)&lt;br /&gt;
%patch $E625 $0CD7W #Upwards&lt;br /&gt;
             $0D17W #INVALID&lt;br /&gt;
             $0CE7W #Rightwards&lt;br /&gt;
             $0D17W #INVALID&lt;br /&gt;
             $0CF7W #Downwards&lt;br /&gt;
             $0D17W #INVALID&lt;br /&gt;
             $0D07W #Leftwards&lt;br /&gt;
&lt;br /&gt;
#Shot directions:&lt;br /&gt;
#Up&lt;br /&gt;
%patch $E5CE [$0000W] #Horizontal&lt;br /&gt;
%patch $E5D3 [$FFFFW] #Vertical&lt;br /&gt;
&lt;br /&gt;
#Right&lt;br /&gt;
%patch $E5DE [$0001W] #Horizontal&lt;br /&gt;
%patch $E5E3 [$0000W] #Vertical&lt;br /&gt;
&lt;br /&gt;
#Down&lt;br /&gt;
%patch $E5ED [$0000W] #Horizontal&lt;br /&gt;
%patch $E5F3 [$0001W] #Vertical&lt;br /&gt;
&lt;br /&gt;
#Left&lt;br /&gt;
%patch $E5FD [$FFFFW] #Horizontal&lt;br /&gt;
%patch $E603 [$0000W] #Vertical&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Location of pointer list (D8F0 + D35 = E625)&lt;br /&gt;
%patch $DCF4 $10A5W&lt;br /&gt;
&lt;br /&gt;
#Length of list&lt;br /&gt;
%patch $DCEC $06&lt;br /&gt;
&lt;br /&gt;
#Spawnshot pointer list (Origin D8F0)&lt;br /&gt;
%patch $DD55 $1046W #Upwards&lt;br /&gt;
             $1086W #INVALID&lt;br /&gt;
             $1056W #Rightwards&lt;br /&gt;
             $1086W #INVALID&lt;br /&gt;
             $1066W #Downwards&lt;br /&gt;
             $1086W #INVALID&lt;br /&gt;
             $1076W #Leftwards&lt;br /&gt;
&lt;br /&gt;
#Shot directions:&lt;br /&gt;
#Up&lt;br /&gt;
%patch $DCFD [$0000W] #Horizontal&lt;br /&gt;
%patch $DD02 [$FFFFW] #Vertical&lt;br /&gt;
&lt;br /&gt;
#Right&lt;br /&gt;
%patch $DD0D [$0001W] #Horizontal&lt;br /&gt;
%patch $DD12 [$0000W] #Vertical&lt;br /&gt;
&lt;br /&gt;
#Down&lt;br /&gt;
%patch $DD1C [$0000W] #Horizontal&lt;br /&gt;
%patch $DD22 [$0001W] #Vertical&lt;br /&gt;
&lt;br /&gt;
#Left&lt;br /&gt;
%patch $DD2C [$FFFFW] #Horizontal&lt;br /&gt;
%patch $DD32 [$0000W] #Vertical&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Shot destruction =&lt;br /&gt;
&lt;br /&gt;
The destruction of Keen&#039;s shot is caused by many things, such as colliding with enemies and solid tiles. Patches in this section deal with both causes and effects of destruction.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Shot smashes on pole-going-through tiles ==&lt;br /&gt;
&lt;br /&gt;
By default Keen can shoot up through ceilings and down through floors if they also have a pole going through them. This patch alters (And significantly shortens) the shot&#039;s tile interaction so that it will also smash on such tiles, preventing Keen from performing such &#039;pole tricks&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shots smash on pole ground&lt;br /&gt;
%patch $E722 $55 $8B $EC $83 $EC $02 $56 $57 $8B $7E $06 &lt;br /&gt;
             $83 $7D $36 $00 $75 $12 $83 $7D $3A $00 $75 $0C $83 $7D $38 $00&lt;br /&gt;
             $75 $06 $83 $7D $3C $00 $74 $08 $57 $0E $E8 $FEE9W  $83 $C4 $02&lt;br /&gt;
             $FF $75 $20 $33 $C0 $50 $FF $75 $1E $FF $75 $0C $FF $75 $0A $8B&lt;br /&gt;
             $C7 $05 $46 $00 $50 $9A $16541641RL     $83 $C4 $0C $5F $5E $8B&lt;br /&gt;
             $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Destroyed shots can still stun ==&lt;br /&gt;
&lt;br /&gt;
See the section &#039;sprite type&#039; for this patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Shot spawn position relative to Keen =&lt;br /&gt;
&lt;br /&gt;
Depending on what action is being used when shooting and sometimes on what direction Keen is facing, Keen&#039;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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
To understand the following patches it is helpful to have some knowledge of [[Patch:Sprite positioning|Sprite positioning]] and [[Patch:Jump conditions|jump conditions.]] Note that two of the sprite positions are &#039;&#039;negative&#039;&#039;, despite having positive values. (They are reversed.) A knowledge of [[Patch:Galaxy Sprite Parameters|galaxy sprite parameters]] will assist in making unique patches by altering the action\direction checks to something more complex.&lt;br /&gt;
&lt;br /&gt;
And of course, when in doubt, simply tweak the relevant patch until the desired result is obtained.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 shot positions&amp;quot;&amp;gt;&lt;br /&gt;
#Check direction and action - Shoot left\right&lt;br /&gt;
%patch $C99D $7C {$1C} [$0D6AW]  {$75} $3C $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 256,64&lt;br /&gt;
%patch $C9AA [$0002W] #Direction&lt;br /&gt;
%patch $C9B1 [$0040W] #Vertical position&lt;br /&gt;
%patch $C9B8 [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left -128,64&lt;br /&gt;
%patch $C9C6 [$0006W] #Direction&lt;br /&gt;
%patch $C9CD [$0040W] #Vertical position&lt;br /&gt;
%patch $C9D4 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot left\right jumping&lt;br /&gt;
%patch $C9E0 $7C {$1C} [$11FCW]  {$75} $38 $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 32,256&lt;br /&gt;
%patch $C9ED [$0002W] #Direction&lt;br /&gt;
%patch $C9F4 [$0020W] #Vertical position&lt;br /&gt;
%patch $C9FB [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left 32,0&lt;br /&gt;
%patch $CA09 [$0006W] #Direction&lt;br /&gt;
%patch $CA10 [$0020W] #Vertical position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot down jumping&lt;br /&gt;
%patch $CA1F $7C {$1C} [$12B0W]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Down 288,128&lt;br /&gt;
%patch $CA26 [$0004W] #Direction&lt;br /&gt;
%patch $CA2D [$0120W] #Vertical position&lt;br /&gt;
%patch $CA34 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot up jumping&lt;br /&gt;
%patch $CA40 $7C {$1C} [$1256W]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Up 160,80&lt;br /&gt;
%patch $CA4D [$00A0W] #Vertical position&lt;br /&gt;
%patch $CA54 [$0050W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot up&lt;br /&gt;
%patch $CA60 $7C {$1C} [$0DA6W]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Up 160,80&lt;br /&gt;
%patch $CA6D [$00A0W] #Vertical position&lt;br /&gt;
%patch $CA74 [$0050W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot left\right on poles&lt;br /&gt;
%patch $CA80 $7C {$1C} [$0FE0W]  {$75} $3C $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 64,256&lt;br /&gt;
%patch $CA8D [$0002W] #Direction&lt;br /&gt;
%patch $CA94 [$0040W] #Vertical position&lt;br /&gt;
%patch $CA9B [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left 64,128&lt;br /&gt;
%patch $CAA9 [$0002W] #Direction&lt;br /&gt;
%patch $CAB0 [$0040W] #Vertical position&lt;br /&gt;
%patch $CAB7 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot up on poles&lt;br /&gt;
%patch $CAC3 $7C {$1C} [$101CW]  {$75} $3A $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Up 64,96&lt;br /&gt;
%patch $CAD6 [$0040W] #Vertical position&lt;br /&gt;
%patch $CADD [$0060W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Up 64,192&lt;br /&gt;
%patch $CAF1 [$0040W] #Vertical position&lt;br /&gt;
%patch $CAF8 [$00C0W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot down on poles&lt;br /&gt;
%patch $CB04 $7C {$1C} [$1058W]  {$75} $3D $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Down 384,96&lt;br /&gt;
%patch $CB11 [$0004W] #Direction&lt;br /&gt;
%patch $CB18 [$0180W] #Vertical position&lt;br /&gt;
%patch $CB1F [$0060W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Down 384,192&lt;br /&gt;
%patch $CB2E [$0004W] #Direction&lt;br /&gt;
%patch $CB35 [$0180W] #Vertical position&lt;br /&gt;
%patch $CB3C [$00C0W] #Horizontal position&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 shot positions&amp;quot;&amp;gt;&lt;br /&gt;
#Check direction and action - Shoot left\right&lt;br /&gt;
%patch $BDBB $7C {$1C} [$0BEEW]  {$75} $3C $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 256,64&lt;br /&gt;
%patch $BDC8 [$0002W] #Direction&lt;br /&gt;
%patch $BDCF [$0040W] #Vertical position&lt;br /&gt;
%patch $BDD6 [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left -128,64&lt;br /&gt;
%patch $BDE4 [$0006W] #Direction&lt;br /&gt;
%patch $BDEB [$0040W] #Vertical position&lt;br /&gt;
%patch $BDF2 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot left\right jumping&lt;br /&gt;
%patch $BDFE $7C {$1C} [$10DAW]  {$75} $38 $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 32,256&lt;br /&gt;
%patch $BE0B [$0002W] #Direction&lt;br /&gt;
%patch $BE12 [$0020W] #Vertical position&lt;br /&gt;
%patch $BE19 [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left 32,0&lt;br /&gt;
%patch $BE27 [$0006W] #Direction&lt;br /&gt;
%patch $BE2E [$0020W] #Vertical position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot down jumping&lt;br /&gt;
%patch $BE3D $7C {$1C} [$118EW]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Down 288,128&lt;br /&gt;
%patch $BE44 [$0004W] #Direction&lt;br /&gt;
%patch $BE4B [$0120W] #Vertical position&lt;br /&gt;
%patch $BE52 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot up jumping&lt;br /&gt;
%patch $BE5E $7C {$1C} [$1134W]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Up 160,80&lt;br /&gt;
%patch $BE6B [$00A0W] #Vertical position&lt;br /&gt;
%patch $BE72 [$0050W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot up&lt;br /&gt;
%patch $BE7E $7C {$1C} [$0C2AW]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Up 160,80&lt;br /&gt;
%patch $BE8B [$00A0W] #Vertical position&lt;br /&gt;
%patch $BE92 [$0050W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot left\right on poles&lt;br /&gt;
%patch $BE9E $7C {$1C} [$0EBEW]  {$75} $3C $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 64,256&lt;br /&gt;
%patch $BEAB [$0002W] #Direction&lt;br /&gt;
%patch $BEB2 [$0040W] #Vertical position&lt;br /&gt;
%patch $BEB9 [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left 64,128&lt;br /&gt;
%patch $BEC7 [$0002W] #Direction&lt;br /&gt;
%patch $BECE [$0040W] #Vertical position&lt;br /&gt;
%patch $BED5 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot up on poles&lt;br /&gt;
%patch $BEE1 $7C {$1C} [$0EFAW]  {$75} $3A $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Up 64,96&lt;br /&gt;
%patch $BEF4 [$0040W] #Vertical position&lt;br /&gt;
%patch $BEFB [$0060W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Up 64,192&lt;br /&gt;
%patch $BF0F [$0040W] #Vertical position&lt;br /&gt;
%patch $BF16 [$00C0W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot down on poles&lt;br /&gt;
%patch $BF22 $7C {$1C} [$0F36W]  {$75} $3D $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Down 384,96&lt;br /&gt;
%patch $BF2F [$0004W] #Direction&lt;br /&gt;
%patch $BF36 [$0180W] #Vertical position&lt;br /&gt;
%patch $BF3D [$0060W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Down 384,192&lt;br /&gt;
%patch $BF4C [$0004W] #Direction&lt;br /&gt;
%patch $BF53 [$0180W] #Vertical position&lt;br /&gt;
%patch $BF5A [$00C0W] #Horizontal position&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 shot positions&amp;quot;&amp;gt;&lt;br /&gt;
#Check direction and action - Shoot left\right&lt;br /&gt;
%patch $BB9E $7C {$1C} [$0BE2W]  {$75} $3C $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 256,64&lt;br /&gt;
%patch $BBAB [$0002W] #Direction&lt;br /&gt;
%patch $BBB2 [$0040W] #Vertical position&lt;br /&gt;
%patch $BBB9 [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left -128,64&lt;br /&gt;
%patch $BBC7 [$0006W] #Direction&lt;br /&gt;
%patch $BBCE [$0040W] #Vertical position&lt;br /&gt;
%patch $BBD5 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot left\right jumping&lt;br /&gt;
%patch $BBE1 $7C {$1C} [$1074W]  {$75} $38 $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 32,256&lt;br /&gt;
%patch $BBEE [$0002W] #Direction&lt;br /&gt;
%patch $BBF5 [$0020W] #Vertical position&lt;br /&gt;
%patch $BBFC [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left 32,0&lt;br /&gt;
%patch $BC0A [$0006W] #Direction&lt;br /&gt;
%patch $BC11 [$0020W] #Vertical position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot down jumping&lt;br /&gt;
%patch $BC20 $7C {$1C} [$1128W]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Down 288,128&lt;br /&gt;
%patch $BC27 [$0004W] #Direction&lt;br /&gt;
%patch $BC2E [$0120W] #Vertical position&lt;br /&gt;
%patch $BC35 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot up jumping&lt;br /&gt;
%patch $BC41 $7C {$1C} [$10CEW]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Up 160,80&lt;br /&gt;
%patch $BC4E [$00A0W] #Vertical position&lt;br /&gt;
%patch $BC55 [$0050W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check action - Shoot up&lt;br /&gt;
%patch $BC61 $7C {$1C} [$0C1EW]  {$75}&lt;br /&gt;
&lt;br /&gt;
#Keen - Up 160,80&lt;br /&gt;
%patch $BC6E [$00A0W] #Vertical position&lt;br /&gt;
%patch $BC75 [$0050W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot left\right on poles&lt;br /&gt;
%patch $BC81 $7C {$1C} [$0E58W]  {$75} $3C $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Right 64,256&lt;br /&gt;
%patch $BC8E [$0002W] #Direction&lt;br /&gt;
%patch $BC95 [$0040W] #Vertical position&lt;br /&gt;
%patch $BC9C [$0100W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Left 64,128&lt;br /&gt;
%patch $BCAA [$0002W] #Direction&lt;br /&gt;
%patch $BCB1 [$0040W] #Vertical position&lt;br /&gt;
%patch $BCB8 [$0080W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot up on poles&lt;br /&gt;
%patch $BCC4 $7C {$1C} [$0E94W]  {$75} $3A $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Up 64,96&lt;br /&gt;
%patch $BCD7 [$0040W] #Vertical position&lt;br /&gt;
%patch $BCDE [$0060W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Up 64,192&lt;br /&gt;
%patch $BCF2 [$0040W] #Vertical position&lt;br /&gt;
%patch $BCF9 [$00C0W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Check direction and action - Shoot down on poles&lt;br /&gt;
%patch $BD05 $7C {$1C} [$0ED0W]  {$75} $3D $83 $7C {$0E} [$01] {$75}&lt;br /&gt;
&lt;br /&gt;
#Right Keen - Down 384,96&lt;br /&gt;
%patch $BD12 [$0004W] #Direction&lt;br /&gt;
%patch $BD19 [$0180W] #Vertical position&lt;br /&gt;
%patch $BD20 [$0060W] #Horizontal position&lt;br /&gt;
&lt;br /&gt;
#Left Keen - Down 384,192&lt;br /&gt;
%patch $BD2F [$0004W] #Direction&lt;br /&gt;
%patch $BD36 [$0180W] #Vertical position&lt;br /&gt;
%patch $BD3D [$00C0W] #Horizontal position&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite type|Sprite Type]] =&lt;br /&gt;
&lt;br /&gt;
The shot&#039;s sprite type is 3, the second most important type in the game, as this is what nearly all enemies respond to when they are shot. Changing this will make most enemies indestructible. It is one of the few sprite types that really matters.&lt;br /&gt;
&lt;br /&gt;
The destroyed shot&#039;s sprite type is also important; if it is 3 problems occur, and if it is the same as the moving Platform, Keen can stand on it and perform the [[Keen 6 Bugs#Impossible_Bullet|impossible bullet trick]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen&#039;s shot sprite type&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4&lt;br /&gt;
%patch $E5A5 $0003W #Shot&lt;br /&gt;
%patch $E63C $0001W #Changes to this when destroyed&lt;br /&gt;
&lt;br /&gt;
#Keen 5&lt;br /&gt;
%patch $DCD4 $0003W #Shot&lt;br /&gt;
%patch $DD6C $0001W #Changes to this when destroyed&lt;br /&gt;
&lt;br /&gt;
#Keen 6&lt;br /&gt;
%patch $D83F $0003W #Shot&lt;br /&gt;
%patch $D92B $0001W #Changes to this when destroyed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t change type on smashing ==&lt;br /&gt;
&lt;br /&gt;
These patches prevent the shot from changing its type to &#039;misc&#039; when it is destroyed. This means it can still stun enemies (And thus be &#039;re-destroyed&#039; when smashed which may lead to an infinite loop if it happens to hit an indestructible enemy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen&#039;s shot sprite type doesn&#039;t change when it smashes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot sprite type doesn&#039;t change when it smashes -Keen 4&lt;br /&gt;
%patch $E63A $EB $02&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot sprite type doesn&#039;t change when it smashes -Keen 5&lt;br /&gt;
%patch $DD6A $EB $02&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot sprite type doesn&#039;t change when it smashes -Keen 6&lt;br /&gt;
%patch $D929 $EB $02&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
The shot is quite simple, it is produced by Keen when he shoots, loops constantly between four actions, and is destroyed when it hits sprites or tiles, the destroyed shot having two actions before going to nothing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 4 ==&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $1738W #Keen&#039;s bullet 1&lt;br /&gt;
 $1756W #Keen&#039;s bullet 2&lt;br /&gt;
 $1774W #Keen&#039;s bullet 3&lt;br /&gt;
 $1792W #Keen&#039;s bullet 4&lt;br /&gt;
 $17B0W #Keen&#039;s bullets zaps 1&lt;br /&gt;
 $17CEW #Keen&#039;s bullets zaps 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn shot&lt;br /&gt;
%patch $E614  [$1738W]&lt;br /&gt;
&lt;br /&gt;
#Shot destroyed&lt;br /&gt;
%patch $E63F  [$17B0W]&lt;br /&gt;
&lt;br /&gt;
#Shot moving&lt;br /&gt;
%patch $305C4 [$1756W] #Keen&#039;s bullet 1&lt;br /&gt;
%patch $305E2 [$1774W] #Keen&#039;s bullet 2&lt;br /&gt;
%patch $30600 [$1792W] #Keen&#039;s bullet 3&lt;br /&gt;
%patch $3061E [$1738W] #Keen&#039;s bullet 4&lt;br /&gt;
&lt;br /&gt;
#Smashed shot&lt;br /&gt;
%patch $3063C [$17CEW] #Keen&#039;s bullets zaps 1&lt;br /&gt;
%patch $3065A [$0000W] #Keen&#039;s bullets zaps 2&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 5 ==&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $1502W #Keen&#039;s shot 1&lt;br /&gt;
 $1520W #Keen&#039;s shot 2&lt;br /&gt;
 $153EW #Keen&#039;s shot 3&lt;br /&gt;
 $155CW #Keen&#039;s shot 4&lt;br /&gt;
 $157AW #Keen&#039;s shot smash 1&lt;br /&gt;
 $1598W #Keen&#039;s shot smash 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn shot&lt;br /&gt;
%patch $DD43  [$1502W]&lt;br /&gt;
&lt;br /&gt;
#Shot moving&lt;br /&gt;
%patch $3185E [$1520W] #Keen&#039;s shot&lt;br /&gt;
%patch $3187C [$153EW] #Keen&#039;s shot&lt;br /&gt;
%patch $3189A [$155CW] #Keen&#039;s shot&lt;br /&gt;
%patch $318B8 [$1502W] #Keen&#039;s shot&lt;br /&gt;
&lt;br /&gt;
#What shot becomes on colliding&lt;br /&gt;
%patch $DD6F [$157AW]&lt;br /&gt;
&lt;br /&gt;
#Smashed shot&lt;br /&gt;
%patch $318D6 [$1598W] #Keen&#039;s shot smash&lt;br /&gt;
%patch $318F4 [$0000W] #Keen&#039;s shot smash&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 6 ==&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $153EW  #Keen&#039;s shot 1&lt;br /&gt;
 $155CW  #Keen&#039;s shot 2&lt;br /&gt;
 $157AW  #Keen&#039;s shot 3&lt;br /&gt;
 $1598W  #Keen&#039;s shot 4&lt;br /&gt;
 $15B6W  #Keen&#039;s shot hits 1&lt;br /&gt;
 $15D4W  #Keen&#039;s shot hits 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn shot&lt;br /&gt;
%patch $D8AE  [$153EW]&lt;br /&gt;
&lt;br /&gt;
#Shot destroyed&lt;br /&gt;
%patch $D92E [$15B6W]&lt;br /&gt;
&lt;br /&gt;
#Shot moving&lt;br /&gt;
%patch $3228A [$155CW] #Keen&#039;s bullet 1&lt;br /&gt;
%patch $322A8 [$157AW] #Keen&#039;s bullet 2&lt;br /&gt;
%patch $322C6 [$1598W] #Keen&#039;s bullet 3&lt;br /&gt;
%patch $322E4 [$153EW] #Keen&#039;s bullet 4&lt;br /&gt;
&lt;br /&gt;
#Smashed shot&lt;br /&gt;
%patch $32302 [$15D4W] #Keen&#039;s bullets zaps 1&lt;br /&gt;
%patch $32320 [$0000W] #Keen&#039;s bullets zaps 2&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s shot&#039;s behavior is quite complex though its function remains unknown. All of the shot frames use the same behavior and the two smashed frames have no behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&#039;s behavior&lt;br /&gt;
%patch $305B8 $0D8F0D6ARL&lt;br /&gt;
%patch $305D6 $0D8F0D6ARL&lt;br /&gt;
%patch $305F4 $0D8F0D6ARL&lt;br /&gt;
%patch $30612 $0D8F0D6ARL&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot&#039;s smash behavior&lt;br /&gt;
%patch $30630 $00000000L&lt;br /&gt;
%patch $3064E $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&#039;s behavior&lt;br /&gt;
%patch $31852 $0CCB10DARL&lt;br /&gt;
%patch $31870 $0CCB10DARL&lt;br /&gt;
%patch $3188D $0CCB10DARL&lt;br /&gt;
%patch $318AC $0CCB10DARL&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot&#039;s smash behavior&lt;br /&gt;
%patch $318CA $00000000L&lt;br /&gt;
%patch $318E8 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&#039;s behavior&lt;br /&gt;
%patch $3227E $0CA60EE9RL&lt;br /&gt;
%patch $3229C $0CA60EE9RL&lt;br /&gt;
%patch $322BA $0CA60EE9RL&lt;br /&gt;
%patch $322D8 $0CA60EE9RL&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot&#039;s smash behavior&lt;br /&gt;
%patch $322F6 $00000000L&lt;br /&gt;
%patch $32314 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed of Keen&#039;s shots]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s shots move via animation motion; the faster they animate the faster they move. Keen&#039;s smashed shots do not move by default but can be made to do so.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s bullet speeds&lt;br /&gt;
%patch $305B4 $0040W $0040W #Speed 1&lt;br /&gt;
%patch $305D2 $0040W $0040W #Speed 2&lt;br /&gt;
%patch $305F0 $0040W $0040W #Speed 3&lt;br /&gt;
%patch $3060E $0040W $0040W #Speed 4&lt;br /&gt;
&lt;br /&gt;
#Smashed shot speeds&lt;br /&gt;
%patch $3062C $0000W $0000W #Speed 1&lt;br /&gt;
%patch $3064A $0000W $0000W #Speed 2&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s bullet speeds&lt;br /&gt;
%patch $3184E $0040W $0040W #Speed 1&lt;br /&gt;
%patch $3186C $0040W $0040W #Speed 2&lt;br /&gt;
%patch $3188A $0040W $0040W #Speed 3&lt;br /&gt;
%patch $318A8 $0040W $0040W #Speed 4&lt;br /&gt;
&lt;br /&gt;
#Smashed shot speeds&lt;br /&gt;
%patch $318C6 $0000W $0000W #Speed 1&lt;br /&gt;
%patch $318E4 $0000W $0000W #Speed 2&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s bullet speeds&lt;br /&gt;
%patch $3227A $0040W $0040W #Speed 1&lt;br /&gt;
%patch $32298 $0040W $0040W #Speed 2&lt;br /&gt;
%patch $322B6 $0040W $0040W #Speed 3&lt;br /&gt;
%patch $322D4 $0040W $0040W #Speed 4&lt;br /&gt;
&lt;br /&gt;
#Smashed shot speeds&lt;br /&gt;
%patch $322F2 $0000W $0000W #Speed 1&lt;br /&gt;
%patch $32310 $0000W $0000W #Speed 2&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s shots have no sprite collision, they affect no sprites at all, instead other sprites respond to &#039;&#039;them.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&#039;s sprite collision&lt;br /&gt;
%patch $333BC $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $333DA $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $333F8 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $33416 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $33434 $00000000L #Keen&#039;s shot smash&lt;br /&gt;
%patch $33452 $00000000L #Keen&#039;s shot smash&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&#039;s sprite collision&lt;br /&gt;
%patch $31856 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $31874 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $31892 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $318B0 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $318CE $00000000L #Keen&#039;s shot smash&lt;br /&gt;
%patch $318EC $00000000L #Keen&#039;s shot smash&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&#039;s sprite collision&lt;br /&gt;
%patch $32282 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $322A0 $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $322BE $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $322DC $00000000L #Keen&#039;s shot&lt;br /&gt;
%patch $322FA $00000000L #Keen&#039;s shot smash&lt;br /&gt;
%patch $32318 $00000000L #Keen&#039;s shot smash&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite clipping and foreground|Clipping and foreground]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s shot has the foreground value of 0, meaning it appears behind all sprites and foreground tiles. This is useful as it often needs to appear behind Keen or tiles when produced or destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Foreground value&lt;br /&gt;
%patch $E5A1 $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Foreground value&lt;br /&gt;
%patch $DCD0 $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Foreground value&lt;br /&gt;
%patch $D83B $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite Activity Variable|Shot Activity]] ==&lt;br /&gt;
&lt;br /&gt;
The shot must be active when offscreen, so it specifically has its activity variable set to 2. If it is any other value the shots will stop moving when Keen cannot see them, meaning that they are much, &#039;&#039;much&#039;&#039; harder to use. (Keen will often find himself running into shots that went offscreen and froze, only to reactivate later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Shot activity variable&lt;br /&gt;
%patch $E5AA $0002W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Shot activity variable&lt;br /&gt;
%patch $DCD9 $0002W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Shot activity variable&lt;br /&gt;
%patch $D844 $0002W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite Sounds|Sounds]] =&lt;br /&gt;
&lt;br /&gt;
There is only one sound used for Keen shooting, which can be easily blocked. Keen&#039;s shot also makes a sound when destroyed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen shoots sound&lt;br /&gt;
%patch $E5AD $04&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Keen shoots sound&lt;br /&gt;
%patch $E5AC $EB $0A&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smashes sound&lt;br /&gt;
%patch $E64C $19&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Keen&#039;s shot smashes sound&lt;br /&gt;
%patch $E64B $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen shoot sound&lt;br /&gt;
%patch $DCDC $04&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Keen shoot sound&lt;br /&gt;
%patch $DCDB $EB $0A&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smashes sound&lt;br /&gt;
%patch $DD7C $19&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Keen&#039;s shot smashes sound&lt;br /&gt;
%patch $DD7B $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen shoot sound&lt;br /&gt;
%patch $D847 $04&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Keen shoot sound&lt;br /&gt;
%patch $D846 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smashes sound&lt;br /&gt;
%patch $D93B $19&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Keen&#039;s shot smashes sound&lt;br /&gt;
%patch $D93A $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
The animation speed of Keen&#039;s shots also controls their speed. (See speed section.) The animation speed of the smashed shot controls how long it takes before it vanishes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $305A8 $00AEW $00AEW&lt;br /&gt;
%patch $305B2 $0006W        #Animation speed&lt;br /&gt;
%patch $305C6 $00AFW $00AFW&lt;br /&gt;
%patch $305D0 $0006W        #Animation speed&lt;br /&gt;
%patch $305E4 $00B0W $00B0W&lt;br /&gt;
%patch $305EE $0006W        #Animation speed&lt;br /&gt;
%patch $30602 $00B1W $00B1W&lt;br /&gt;
%patch $3060C $0006W        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $30620 $00B2W $00B2W&lt;br /&gt;
%patch $3062A $000CW        #Animation speed&lt;br /&gt;
%patch $3063E $00B3W $00B3W&lt;br /&gt;
%patch $30648 $000CW        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $31842 $0099W $0099W&lt;br /&gt;
%patch $3184C $0006W        #Animation speed&lt;br /&gt;
%patch $31860 $009AW $009AW&lt;br /&gt;
%patch $3186A $0006W        #Animation speed&lt;br /&gt;
%patch $3187E $009BW $009BW&lt;br /&gt;
%patch $31888 $0006W        #Animation speed&lt;br /&gt;
%patch $3189C $009CW $009CW&lt;br /&gt;
%patch $318A6 $0006W        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $318BA $009DW $009DW&lt;br /&gt;
%patch $318C4 $000CW        #Animation speed&lt;br /&gt;
%patch $318D8 $009EW $009EW&lt;br /&gt;
%patch $318E2 $000CW        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $3226E $0060W $0060W&lt;br /&gt;
%patch $32278 $0006W        #Animation speed&lt;br /&gt;
%patch $3228C $0061W $0061W&lt;br /&gt;
%patch $32296 $0006W        #Animation speed&lt;br /&gt;
%patch $322AA $0062W $0062W&lt;br /&gt;
%patch $322B4 $0006W        #Animation speed&lt;br /&gt;
%patch $322C8 $0063W $0063W&lt;br /&gt;
%patch $322D2 $0006W        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $322E6 $0064W $0064W&lt;br /&gt;
%patch $322F0 $000CW        #Animation speed&lt;br /&gt;
%patch $32304 $0065W $0065W&lt;br /&gt;
%patch $3230E $000CW        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
There are two tile interactions used by Keen&#039;s shots in each game. The first is used by Keen&#039;s shot itself. This makes it smash on solid tiles and slopes as well as having other, unknown, functions. The second simply draws the sprite, this is used by the smashed shot since it no longer needs to interact with tiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 4 ==&lt;br /&gt;
&lt;br /&gt;
 Keen 4:&lt;br /&gt;
 $0D8F0E32RL #Keen&#039;s shot (Hit walls, floors, ceilings and go zap.)&lt;br /&gt;
 $09DC176ERL #Draw sprite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $305C0 $0D8F0E32RL&lt;br /&gt;
%patch $305DE $0D8F0E32RL&lt;br /&gt;
%patch $305FC $0D8F0E32RL&lt;br /&gt;
%patch $3061A $0D8F0E32RL&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $30638 $09DC176ERL&lt;br /&gt;
%patch $30656 $09DC176ERL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 5 ==&lt;br /&gt;
&lt;br /&gt;
 Keen 5:&lt;br /&gt;
 $0CCB11A2RL #Keen&#039;s shot (Hit walls, floors, ceilings and go zap.)&lt;br /&gt;
 $090B17B5RL #Draw sprite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $3185A $0CCB11A2RL&lt;br /&gt;
%patch $31878 $0CCB11A2RL&lt;br /&gt;
%patch $31896 $0CCB11A2RL&lt;br /&gt;
%patch $318B4 $0CCB11A2RL&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $318D2 $090B17B5RL&lt;br /&gt;
%patch $318F0 $090B17B5RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 6 ==&lt;br /&gt;
&lt;br /&gt;
 Keen 6:&lt;br /&gt;
 $0CA60FB1RL #Keen&#039;s shot (Hit walls, floors, ceilings and go zap.)&lt;br /&gt;
 $08F4180ARL #Draw sprite&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $32286 $0CA60FB1RL&lt;br /&gt;
%patch $322A4 $0CA60FB1RL&lt;br /&gt;
%patch $322C2 $0CA60FB1RL&lt;br /&gt;
%patch $322E0 $0CA60FB1RL&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $322FE $08F4180ARL&lt;br /&gt;
%patch $3231C $08F4180ARL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Action_Type|Action type]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s shot uses type 1 for its actions allowing sooth movement through the air. The smashed shot uses type 0 as it doesn&#039;t need to move.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $305AC [$0001W]&lt;br /&gt;
%patch $305CA [$0001W]&lt;br /&gt;
%patch $305E8 [$0001W]&lt;br /&gt;
%patch $30606 [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $30624 [$0000W]&lt;br /&gt;
%patch $30642 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $31846 [$0001W]&lt;br /&gt;
%patch $31864 [$0001W]&lt;br /&gt;
%patch $31882 [$0001W]&lt;br /&gt;
%patch $318A0 [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $318BE [$0000W]&lt;br /&gt;
%patch $318DC [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $32272 [$0001W]&lt;br /&gt;
%patch $32290 [$0001W]&lt;br /&gt;
%patch $322AE [$0001W]&lt;br /&gt;
%patch $322CC [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $322EA [$0000W]&lt;br /&gt;
%patch $32308 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s shot has no need for either of these variables and so has a value of 0 for both in all its actions. If its &#039;stick to ground&#039; value is changed to 1 then Keen&#039;s shots can climb slopes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $305AE [$0000W $0000W]&lt;br /&gt;
%patch $305CC [$0000W $0000W]&lt;br /&gt;
%patch $305EA [$0000W $0000W]&lt;br /&gt;
%patch $30608 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $30626 [$0000W $0000W]&lt;br /&gt;
%patch $30644 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $31848 [$0000W $0000W]&lt;br /&gt;
%patch $31866 [$0000W $0000W]&lt;br /&gt;
%patch $31884 [$0000W $0000W]&lt;br /&gt;
%patch $318A2 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $318C0 [$0000W $0000W]&lt;br /&gt;
%patch $318DE [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot&lt;br /&gt;
%patch $32274 [$0001W $0000W]&lt;br /&gt;
%patch $32292 [$0001W $0000W]&lt;br /&gt;
%patch $322B0 [$0001W $0000W]&lt;br /&gt;
%patch $322CE [$0001W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s shot smash&lt;br /&gt;
%patch $322EC [$0000W $0000W]&lt;br /&gt;
%patch $3230A [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Shot destroyed code =&lt;br /&gt;
&lt;br /&gt;
The destruction of Keen&#039;s shot is trigger by both sprites and tiles. (It is called as $0D8F0D43RL.) It does three things; the first is to change the shot&#039;s sprite type to 1, or &#039;Misc&#039; so it doesn&#039;t interfere with anything else. Next it changes the shot&#039;s action to $17B0W, so the shot stops and vanishes, finally it plays sound $19. Two of these things can be removed, singularly or in combination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Complete Keen&#039;s shot smashes code&lt;br /&gt;
%patch $E633  $55 $8B $EC $56 $8B $76 $06 $C7 $04 [$0001W]  $B8 [$17B0W]  $50 $56&lt;br /&gt;
              $9A $09DC120ARL     $83 $C4 $04 $B8 [$0019W]  $50 $9A $187409F1RL&lt;br /&gt;
                  $83 $C4 $02 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Complete Keen&#039;s shot smashes code&lt;br /&gt;
%patch $DD63 $55 $8B $EC $56 $8B $76 $06 $C7 $04 [$0001W]  $B8 [$157AW]  $50 $56&lt;br /&gt;
             $9A $090B1242RL     $83 $C4 $04 $B8 [$0019W]  $50 $9A $196E09EFRL&lt;br /&gt;
                 $83 $C4 $02 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== No sound when shot destroyed ==&lt;br /&gt;
&lt;br /&gt;
If the sound is removed, little else changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot smashes code - no sound&lt;br /&gt;
%patch $E633  $55 $8B $EC $56 $8B $76 $06 $C7 $04 [$0001W]  $B8 [$17B0W]  $50 $56&lt;br /&gt;
              $9A $09DC120ARL     $83 $C4 $04 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot smashes code - no sound&lt;br /&gt;
%patch $DD63 $55 $8B $EC $56 $8B $76 $06 $C7 $04 [$0001W]  $B8 [$157AW]  $50 $56&lt;br /&gt;
             $9A $090B1242RL     $83 $C4 $04 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t destroy shot on collision ==&lt;br /&gt;
&lt;br /&gt;
With the &#039;change action&#039; code removed the Shot will keep on moving, this can cause problems when it hits tiles, as this will not longer destroy the shot. Another patch should be added to remove the shot in some way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen&#039;s shot smashes code - no shot destruction&lt;br /&gt;
%patch $E633  $55 $8B $EC $56 $8B $76 $06 $C7 $04 [$0001W] $B8 [$0019W]  $50 $9A&lt;br /&gt;
              $187409F1RL     $83 $C4 $02 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Complete Keen&#039;s shot smashes code&lt;br /&gt;
%patch $DD63 $55 $8B $EC $56 $8B $76 $06 $C7 $04 [$0001W]  $B8 [$0019W]  $50 $9A&lt;br /&gt;
              $196E09EFRL     $83 $C4 $02 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
&lt;br /&gt;
Patches in this section do not fit neatly into the above sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen can teleport to where his shots smash near [B] sprites ==&lt;br /&gt;
&lt;br /&gt;
This patch will teleport Keen to wherever his shot smashes IF that shot is on a [[Patch:B sprite|[B] sprite]] when it does so. (You can have as many [B] sprites in a level as you want.) The [B] sprite must be *outside* the solid tile that causes the shot smash (So for floors above the floor, ceilings below the ceiling, left of left walls and right of right walls.) Keen&#039;s head will appear where the shot zap was (This can be adjusted by altering &amp;lt;tt&amp;gt;$2D $0000W&amp;lt;/tt&amp;gt;, larger moves Keen down, negative moves Keen up.) and trying to teleport to another place before the &#039;old&#039; (invisible!) teleport target has vanished will cause him to return to the old target. If for some odd reason the target vanishes before Keen can teleport he will &#039;teleport&#039; to the same place he&#039;s standing. Keen can teleport off of poles with no problems. (Keen can also teleport after being killed, this will save him.)&lt;br /&gt;
&lt;br /&gt;
The screen will not move instantly to where Keen is at, instead it will &#039;slide&#039; from his old position to his current one. During this slide Keen can move, die, etc. The screen cannot &#039;slide&#039; past scrollbars so Keen can teleport to an area offscreen and stay offscreen. [B] sprites will not affect Keen&#039;s shots moving through the air, only those that have hit tiles.&lt;br /&gt;
&lt;br /&gt;
This patch uses the [[Patch:EGAGRAPH|EGAGRAPH check skip]] which is the first line of the patch. it is thus incompatible with any other patches using this. it also utilizes some space for the new [[Patch:Sprite actions|actions]] used which may also cause problems with other patches.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check in Keen 4 (Frees 389 bytes at $3CF6)&lt;br /&gt;
%patch $3CE5 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Custom behavior: Force Keen to search = $037D0526RL&lt;br /&gt;
%patch $3CF6  $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 &lt;br /&gt;
              $9A $037D053ARL     $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Custom player effect: goto searching Keen = $037D053ARL&lt;br /&gt;
%patch $3D0A  $55 $8B $EC $8B $1E $A7D6W  $81 $7F $1C $D4 $0C $74 $19 $C7 $47   #Set clipping = 1&lt;br /&gt;
              {$06} [$0001W]  $B8 [$015BW]  $50 $FF $36 $D6 $A7 $9A $09DC120ARL       #Turn Keen into searching&lt;br /&gt;
              $83 $C4 $04 $8B $1E $A7D6W  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Player search for target sprite behavior = $037D0563RL&lt;br /&gt;
%patch $3D33 $55 $8B $EC $56 $57 $8B $7E $06 $C7 $45 $3E $0000W  $8B $1E $D6&lt;br /&gt;
             $A7 $8B $77 $48 $EB $28 $83 $3C [$22] $75 $20 $8B $44 $0A $2D [$0000W] #Keen&#039;s teleport height&lt;br /&gt;
                 $89 $45 $0A $8B $44 $0C $89 $45 $0C $B8 $11A2W  $50 $57 $9A&lt;br /&gt;
             $09DC118CRL     $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
                                                         $8B $74 $48 $0B $F6&lt;br /&gt;
             $75 $D4 $57 $9A $06BD1E8BRL     $83 $C4 $02 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shot smash behavior = $037D05B2RL&lt;br /&gt;
%patch $3D82 $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $8B $45 $0E $BA $0000W&lt;br /&gt;
                 $F7 $EA $F7 $2E $4C $A5 $A3 $23 $C9 $8B $45 $10 $BA $0000W&lt;br /&gt;
             $F7 $EA $F7 $2E $4C $A5 $A3 $21 $C9 $8B $45 $26 $03 $06 $23 $C9&lt;br /&gt;
             $89 $46 $FE $B1 $08 $D3 $E8 $89 $46 $FC $8B $5D $2E $D1 $E3 $8B&lt;br /&gt;
             $9F $25 $C9 $D1 $EB $D1 $E3 $8E $06 $EB $A7 $8B $46 $FC $D1 $E0&lt;br /&gt;
             $03 $D8 $26 $83 $3F $1F $75 $07 $C7 $45 $1C [$011FW]  $EB $05 $C7&lt;br /&gt;
             $45 $1C [$0000W]  $8B $46 $FE $25 $FF $00 $8B $16 $23 $C9 $2B $D0&lt;br /&gt;
             $89 $16 $23 $C9 $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Adjust destroyed shot type to target type&lt;br /&gt;
%patch $E63C [$0022W]&lt;br /&gt;
&lt;br /&gt;
#Tweak Keen&#039;s shot smash so that it spends time as an invisible target sprite&lt;br /&gt;
%patch $3063E $00B3W $00B3W $0000W $0000W $0000W $000CW $0000W $0000W #Check for [B]&lt;br /&gt;
              $037D05B2RL   $00000000L    $09DC176ERL   $0000W&lt;br /&gt;
%patch $2EF8F $00B3W $00B3W $0000W $0000W $0000W $0004W $0000W $0000W #Force player search&lt;br /&gt;
              $037D0526RL   $00000000L    $09DC176ERL   $013DW&lt;br /&gt;
%patch $2EFAD $FFFFW $FFFFW $0000W $0000W $0000W $00A0W $0000W $0000W #Invisible target&lt;br /&gt;
              $00000000L    $00000000L    $09DC176ERL   $0000W&lt;br /&gt;
&lt;br /&gt;
#Keen searching action = $015BW&lt;br /&gt;
%patch $2EFCB $008AW $0082W $0000W $0000W $0000W $0004W $0000W $0000W&lt;br /&gt;
              $037D0563RL   $0B8014A9RL   $09DC176ERL   $098CW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen can teleport to where his shots smash anywhere ==&lt;br /&gt;
&lt;br /&gt;
This patch works identically to the above except that it does not matter how Keen&#039;s shots smash. Whether they collide with any tile or an enemy Keen will teleport to them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check in Keen 4 (Frees 389 bytes at $3CF6)&lt;br /&gt;
%patch $3CE5 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Custom behavior: Kill Keen = $037D0526RL&lt;br /&gt;
%patch $3CF6  $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 &lt;br /&gt;
              $9A $037D053ARL     $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Custom player effect: goto searching Keen = $037D053ARL&lt;br /&gt;
%patch $3D0A  $55 $8B $EC $8B $1E $A7D6W  $81 $7F $1C $D4 $0C $74 $19 $C7 $47   #Set clip = 0&lt;br /&gt;
              {$06} [$0001W]  $B8 [$013DW]  $50 $FF $36 $D6 $A7 $9A $09DC120ARL       #Turn Keen into searching&lt;br /&gt;
              $83 $C4 $04 $8B $1E $A7D6W  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Player search for target sprite behavior = $037D0563RL&lt;br /&gt;
%patch $3D33 $55 $8B $EC $56 $57 $8B $7E $06 $C7 $45 $3E $0000W  $8B $1E $D6&lt;br /&gt;
             $A7 $8B $77 $48 $EB $28 $83 $3C [$22] $75 $20 $8B $44 $0A $2D [$0000W]&lt;br /&gt;
                 $89 $45 $0A $8B $44 $0C $89 $45 $0C $B8 $11A2W  $50 $57 $9A&lt;br /&gt;
             $09DC118CRL    $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
                                                         $8B $74 $48 $0B $F6&lt;br /&gt;
             $75 $D4 $57 $9A $06BD1E8BRL     $83 $C4 $02 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Adjust destroyed shot type to target type&lt;br /&gt;
%patch $E63C [$0022W]&lt;br /&gt;
&lt;br /&gt;
#Tweak Keen&#039;s shot smash so that it spends time as an invisible target sprite&lt;br /&gt;
%patch $3063E $00B3W $00B3W $0000W $0000W $0000W $000CW $0000W $0000W #Player search&lt;br /&gt;
              $037D0526RL   $00000000L    $09DC176ERL   $011FW&lt;br /&gt;
%patch $2EF8F $FFFFW $FFFFW $0000W $0000W $0000W $00A0W $0000W $0000W #Invisible target&lt;br /&gt;
              $00000000L    $00000000L    $09DC176ERL   $0000W&lt;br /&gt;
&lt;br /&gt;
#Keen searching action = $013DW&lt;br /&gt;
%patch $2EFAD $008AW $0082W $0000W $0000W $0000W $0004W $0000W $0000W&lt;br /&gt;
              $037D0563RL   $0B8014A9RL   $09DC176ERL   $098CW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Player|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;br /&gt;
{{PatchCategories|Keen 4|gameplay}}&lt;br /&gt;
{{PatchCategories|Keen 5|gameplay}}&lt;br /&gt;
{{PatchCategories|Keen 6|gameplay}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User_talk:Levellass&amp;diff=41517</id>
		<title>User talk:Levellass</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User_talk:Levellass&amp;diff=41517"/>
		<updated>2020-03-23T21:57:45Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Missing Blegd &amp;amp; Smeeg webcomic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi Levelass - any reponse to [[Talk:Asparagusto|this]]? -- [[User:Malvineous|Malvineous]] 07:02, 13 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
No, I have even less idea now what bug or not I thought they had, sorry. --[[User:Levellass|Levellass]] 11:05, 12 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edit summaries ==&lt;br /&gt;
Hey Levellass - when you edit a page, could you please put something in the summary field before submitting?  Doing that makes it a lot easier to see what&#039;s going on when browsing the [[Special:Recentchanges|Recent Changes]] list.  It doesn&#039;t have to be much, something like &amp;quot;More info&amp;quot;, &amp;quot;Typo&amp;quot;, &amp;quot;Spelling&amp;quot; or whatever is fine.  -- [[User:Malvineous|Malvineous]] 03:11, 28 January 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
Sorry, I keep forgetting. (message written by [[User:Levellass|Levellass]] a few minutes ago) --[[User:Shadow Master|Shadow Master]] 18:42, 6 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Signing messages ==&lt;br /&gt;
Also try to use the toolbar button with the signature icon in it for signing your talk page messages before submitting your replies, so that we know who wrote that interesting paragraph. Or put the following at the end of your messages manually if you have trouble with the wiki edit toolbar:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Just a suggestion. --[[User:Shadow Master|Shadow Master]] 16:25, 10 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
Levellass- PLEASE sign messages in talk pages-just use four tildes! Like this- &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;--[[User:Xterra1|Xterra1]] 17:33, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Nah, stuff it, I like to annoy and confuse and make things worse for everyone.--[[User:Levellass|Levellass]] 17:38, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Little joker.....--[[User:Xterra1|Xterra1]] 17:42, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::Actually, I only just figured out how the ---- you do this stuff, there are too many buttons, all I can do is write!--[[User:Levellass|Levellass]] 17:45, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::Levellass.........no expletives!--[[User:Xterra1|Xterra1]] 17:47, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::Gosh, what did I write? I&#039;m sure it was just &#039;hell&#039; I&#039;m so sorry!--[[User:Levellass|Levellass]] 17:49, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::I had to blank it out, rules are rules.--[[User:Xterra1|Xterra1]] 18:14, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::Wow, who knew? I suppose that&#039;s right, you Americans are real stiff when it comes to religion. This is why I don&#039;t post much.--[[User:Levellass|Levellass]] 18:23, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::Not religion,wiki rules!--[[User:Xterra1|Xterra1]] 18:55, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::Well this wiki is run by an Australian, with British and Chilean moderators, so feel free to post some more ;-) (btw I wouldn&#039;t consider that word an expletive, but each to their own I guess.) -- [[User:Malvineous|Malvineous]] 01:21, 12 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Automatic syntax highlighting ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass - I just realised you seem to be manually entering in all the &amp;lt;nowiki&amp;gt;&amp;lt;font&amp;gt;&amp;lt;/nowiki&amp;gt; tags to syntax highlight the patches!  This isn&#039;t necessary, you can just enclose each patch in &amp;lt;nowiki&amp;gt;&amp;lt;patch title=&amp;quot;xyz&amp;quot;&amp;gt;&amp;lt;/patch&amp;gt;&amp;lt;/nowiki&amp;gt; tags which will take care of the highlighting for you (see [[Patch:About id]] for how it comes out.)  Since this is a custom add-on to the wiki, if it doesn&#039;t work properly or you want additional features (like being able to highlight certain bytes) just let me know and I will add it. -- [[User:Malvineous|Malvineous]] 08:08, 12 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Patch basics ==&lt;br /&gt;
&lt;br /&gt;
Hey Levellass, I&#039;ve just created [[Patches|a page]] on the basics of reading patches, specifically your patches.  I was wondering if you could look it over and fix any mistakes or outright lies that I may have made; my knowledge of patching is extremely weak (for example I have no idea why some of your 16-bit integers are blue and some are orange, I&#039;m sure the difference is important, I just can&#039;t figure it out). Thanks! -[[User:Flaose|Flaose]] 07:05, 14 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Page naming ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass - when you create pages with a note in brackets, can you please put a space before the bracket?  I know it&#039;s only minor, but it looks weird when the universal wiki standard is &amp;quot;Pagename (info)&amp;quot; and half your pages are &amp;quot;Pagename(info)&amp;quot; ;-) -- [[User:Malvineous|Malvineous]] 04:45, 2 April 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Hey, I&#039;d notcied that, I&#039;ve done t three times I&#039;m aware of but wasn&#039;t quite sure what to do. It shouldn&#039;t happen in future. --[[User:Levellass|Levellass]] 09:02, 2 April 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Blank lines before headings ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass - could you please try to avoid adding an extra space before the &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;== section headings ==&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; in each page?  It causes a large gap to appear before the heading which goes against the standard MediaWiki style.  If you think the headings are too close together, you can edit your own custom style to put more space between them, and this will affect all pages without needing to do any editing.  Thanks! -- [[User:Malvineous|Malvineous]] 13:54, 19 August 2012 (GMT)&lt;br /&gt;
:Hey there! I was going by our office&#039;s style of doing things, one line space between paragraphs, two between paragraphs and headings. I was unaware that this was not wiki policy. Will all the pages be reverted? --05:48, 20 August 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: I reverted those changes on the most recent pages, but if you could remove the extra lines as you see them that would be great.  The problem is that the wiki software automatically inserts extra space between paragraphs and before headings, according to the site style (the idea being if you don&#039;t like it, you adjust the site style and you don&#039;t need to edit any pages.)  Because of this, the wiki software treats extra blank lines as if they were paragraphs, and puts extra space around them when generating the HTML view of each article.  By putting two blank lines before a heading, you are effectively putting an empty, invisible paragraph before each heading (which has its own space around it, even though it&#039;s invisible.)  Going by your office style, this is like putting three blank lines before each heading (the normal two, plus an extra one before the invisible paragraph.)  Just as you&#039;d be going against your office style by putting three blank lines before a heading, likewise putting two lines before a wiki heading is going against the wiki style for exactly the same reason.  I hope this helps explain it! [[User:Malvineous|Malvineous]] 01:01, 30 August 2012 (GMT)&lt;br /&gt;
:::Righto, got it now! I shall endeavor to remove any double lines from the main wiki pages as I stumble across them. I imagine the problem would have been lessened if more people edited the wiki. --[[User:Levellass|Always so much to do!]] 01:12, 30 August 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::: Quite possibly - and thanks!  On that note, I have to say, I&#039;m continually amazed by how much work you put in to the patch pages.  It&#039;s very impressive. -- [[User:Malvineous|Malvineous]] 11:51, 30 August 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Source of creatures&#039; names ==&lt;br /&gt;
&lt;br /&gt;
Hello. I&#039;m new here but I hope to be a good contributor :) What I&#039;d like to know is where the names of the creatures from Keen Dreams and Keen 6 were found because Keen Dreams doesn&#039;t seem to list them all while Keen 6 doesn&#039;t even contain a help section and some of the names mentioned in Keen 6 user manual are different from the names listed here. Can you help? [[User:Saluton|Saluton]] 13:22, 3 February 2013 (GMT)&lt;br /&gt;
: That&#039;s a good question and there is no one clear answer. Some names like the Treasure Eater were confirmed via emails to Id staff (Mostly Tom Hall.) Others were taken from the game manuals while still others are community lore or taken from external sources. This seems to be quite a problematic issue and I think a topic on the PCKF tracking down all creature name origins and thus letting us insert citations for them (And correct article names where necessary.) is in order.&lt;br /&gt;
:: Before you answered, I already have [[User_talk:Malvineous#Source of creatures&#039; names|spoken to Malvineous]] about it. Thanks. [[User:Saluton|Saluton]] 05:22, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Keen Meets the Meats ==&lt;br /&gt;
&lt;br /&gt;
Hello Levellass, could you add the number of levels to the [[Keen Meets the Meats]] article, please? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 12:19, 12 June 2015 (UTC)&lt;br /&gt;
:Nobody knows? Really? Good heavens I could print out every single level&#039;s bitmap. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 01:06, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Renaming Tutorials ==&lt;br /&gt;
&lt;br /&gt;
Open question to admins, bureaucrats and free time editors. Details over here:&lt;br /&gt;
[[Category_talk:Tutorials| Renaming/moving all Tutorials for better ease]]&lt;br /&gt;
&lt;br /&gt;
Ceilick is ok with this idea, what about you?&lt;br /&gt;
&lt;br /&gt;
::Sounds good to me. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 02:10, 16 April 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Ultra Hard game patch side effect ==&lt;br /&gt;
&lt;br /&gt;
Hey. In your (Keen 4 whatever for now) ultra hard game patch the side effect is that you can only save on the map. If you save in (any) level, I get uncached sprite error. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 20:05, 14 April 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== KeenWave ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass, a while ago Nisaba wrote a message on the [[Talk:KeenWave|KeenWave talk page]], which refers to a Keen: Modding post. Maybe you didn&#039;t notice it at the time. The most recent version of KeenWave is missing.  [[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 14:35, 10 March 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Missing Blegd &amp;amp; Smeeg webcomic ==&lt;br /&gt;
&lt;br /&gt;
By the way, if I&#039;m not mistaken, Levellord and you were avid readers of [[Blegd and Smeeg]] back then. Do you happen to have any of the comics? Almost everything is gone, except for the [https://s34.photobucket.com/user/Galaxieretter/media/Number1Introductionssuckcolorednoex.png.html 1st], [https://www.deviantart.com/galaxieretter/art/Blegd-and-Smeeg-11-27147233 11th] and [https://web.archive.org/web/20110207230149/http://blegdandsmeeg.com/ last] episode. [[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 14:35, 10 March 2020 (UTC)&lt;br /&gt;
:I don&#039;t have anything, but Levellord was friends with the creator and she says she has a folder of about 20 images she can send me. What do you want done with them? -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 12:48, 15 March 2020 (UTC)&lt;br /&gt;
::I would like to make them available to the general public again. On [http://archive.shikadi.net/pckf/more.htm this page], for example. However, I&#039;m not so keen on doing so without Galaxieretter&#039;s permission. It would be easier if he just added them to his DeviantArt gallery. I wrote to his two known e-mail addresses (including the one available [https://www.youtube.com/user/Galaxieretter/about here]) months ago, but didn&#039;t receive a response. Maybe he wants them to remain offline (though many other old works are still available) or he doesn&#039;t care or is just too busy. Could Levellord ask Gal, or is there no contact at all now? Anyway, it&#039;s good to know that someone still has the comics, thanks for the info. --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 22:21, 17 March 2020 (UTC)&lt;br /&gt;
:::As far as both Levellord and I were aware he was dead, certainly it seems like his deviantart page is very sparse. We have no contact with him so can&#039;t help you there. If or when you want the images I now have them, but I don&#039;t hold out much hope for getting into contact with their creator. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 21:57, 23 March 2020 (UTC)&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User_talk:Levellass&amp;diff=41512</id>
		<title>User talk:Levellass</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User_talk:Levellass&amp;diff=41512"/>
		<updated>2020-03-15T12:48:45Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Reply on Blegd and Smeeg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi Levelass - any reponse to [[Talk:Asparagusto|this]]? -- [[User:Malvineous|Malvineous]] 07:02, 13 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
No, I have even less idea now what bug or not I thought they had, sorry. --[[User:Levellass|Levellass]] 11:05, 12 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edit summaries ==&lt;br /&gt;
Hey Levellass - when you edit a page, could you please put something in the summary field before submitting?  Doing that makes it a lot easier to see what&#039;s going on when browsing the [[Special:Recentchanges|Recent Changes]] list.  It doesn&#039;t have to be much, something like &amp;quot;More info&amp;quot;, &amp;quot;Typo&amp;quot;, &amp;quot;Spelling&amp;quot; or whatever is fine.  -- [[User:Malvineous|Malvineous]] 03:11, 28 January 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
Sorry, I keep forgetting. (message written by [[User:Levellass|Levellass]] a few minutes ago) --[[User:Shadow Master|Shadow Master]] 18:42, 6 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Signing messages ==&lt;br /&gt;
Also try to use the toolbar button with the signature icon in it for signing your talk page messages before submitting your replies, so that we know who wrote that interesting paragraph. Or put the following at the end of your messages manually if you have trouble with the wiki edit toolbar:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Just a suggestion. --[[User:Shadow Master|Shadow Master]] 16:25, 10 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
Levellass- PLEASE sign messages in talk pages-just use four tildes! Like this- &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt;--[[User:Xterra1|Xterra1]] 17:33, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Nah, stuff it, I like to annoy and confuse and make things worse for everyone.--[[User:Levellass|Levellass]] 17:38, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::Little joker.....--[[User:Xterra1|Xterra1]] 17:42, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::Actually, I only just figured out how the ---- you do this stuff, there are too many buttons, all I can do is write!--[[User:Levellass|Levellass]] 17:45, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::Levellass.........no expletives!--[[User:Xterra1|Xterra1]] 17:47, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::Gosh, what did I write? I&#039;m sure it was just &#039;hell&#039; I&#039;m so sorry!--[[User:Levellass|Levellass]] 17:49, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::I had to blank it out, rules are rules.--[[User:Xterra1|Xterra1]] 18:14, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::::::Wow, who knew? I suppose that&#039;s right, you Americans are real stiff when it comes to religion. This is why I don&#039;t post much.--[[User:Levellass|Levellass]] 18:23, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::Not religion,wiki rules!--[[User:Xterra1|Xterra1]] 18:55, 11 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
::::::::Well this wiki is run by an Australian, with British and Chilean moderators, so feel free to post some more ;-) (btw I wouldn&#039;t consider that word an expletive, but each to their own I guess.) -- [[User:Malvineous|Malvineous]] 01:21, 12 July 2007 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Automatic syntax highlighting ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass - I just realised you seem to be manually entering in all the &amp;lt;nowiki&amp;gt;&amp;lt;font&amp;gt;&amp;lt;/nowiki&amp;gt; tags to syntax highlight the patches!  This isn&#039;t necessary, you can just enclose each patch in &amp;lt;nowiki&amp;gt;&amp;lt;patch title=&amp;quot;xyz&amp;quot;&amp;gt;&amp;lt;/patch&amp;gt;&amp;lt;/nowiki&amp;gt; tags which will take care of the highlighting for you (see [[Patch:About id]] for how it comes out.)  Since this is a custom add-on to the wiki, if it doesn&#039;t work properly or you want additional features (like being able to highlight certain bytes) just let me know and I will add it. -- [[User:Malvineous|Malvineous]] 08:08, 12 July 2010 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Patch basics ==&lt;br /&gt;
&lt;br /&gt;
Hey Levellass, I&#039;ve just created [[Patches|a page]] on the basics of reading patches, specifically your patches.  I was wondering if you could look it over and fix any mistakes or outright lies that I may have made; my knowledge of patching is extremely weak (for example I have no idea why some of your 16-bit integers are blue and some are orange, I&#039;m sure the difference is important, I just can&#039;t figure it out). Thanks! -[[User:Flaose|Flaose]] 07:05, 14 March 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Page naming ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass - when you create pages with a note in brackets, can you please put a space before the bracket?  I know it&#039;s only minor, but it looks weird when the universal wiki standard is &amp;quot;Pagename (info)&amp;quot; and half your pages are &amp;quot;Pagename(info)&amp;quot; ;-) -- [[User:Malvineous|Malvineous]] 04:45, 2 April 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
:Hey, I&#039;d notcied that, I&#039;ve done t three times I&#039;m aware of but wasn&#039;t quite sure what to do. It shouldn&#039;t happen in future. --[[User:Levellass|Levellass]] 09:02, 2 April 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Blank lines before headings ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass - could you please try to avoid adding an extra space before the &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;== section headings ==&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; in each page?  It causes a large gap to appear before the heading which goes against the standard MediaWiki style.  If you think the headings are too close together, you can edit your own custom style to put more space between them, and this will affect all pages without needing to do any editing.  Thanks! -- [[User:Malvineous|Malvineous]] 13:54, 19 August 2012 (GMT)&lt;br /&gt;
:Hey there! I was going by our office&#039;s style of doing things, one line space between paragraphs, two between paragraphs and headings. I was unaware that this was not wiki policy. Will all the pages be reverted? --05:48, 20 August 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:: I reverted those changes on the most recent pages, but if you could remove the extra lines as you see them that would be great.  The problem is that the wiki software automatically inserts extra space between paragraphs and before headings, according to the site style (the idea being if you don&#039;t like it, you adjust the site style and you don&#039;t need to edit any pages.)  Because of this, the wiki software treats extra blank lines as if they were paragraphs, and puts extra space around them when generating the HTML view of each article.  By putting two blank lines before a heading, you are effectively putting an empty, invisible paragraph before each heading (which has its own space around it, even though it&#039;s invisible.)  Going by your office style, this is like putting three blank lines before each heading (the normal two, plus an extra one before the invisible paragraph.)  Just as you&#039;d be going against your office style by putting three blank lines before a heading, likewise putting two lines before a wiki heading is going against the wiki style for exactly the same reason.  I hope this helps explain it! [[User:Malvineous|Malvineous]] 01:01, 30 August 2012 (GMT)&lt;br /&gt;
:::Righto, got it now! I shall endeavor to remove any double lines from the main wiki pages as I stumble across them. I imagine the problem would have been lessened if more people edited the wiki. --[[User:Levellass|Always so much to do!]] 01:12, 30 August 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
:::: Quite possibly - and thanks!  On that note, I have to say, I&#039;m continually amazed by how much work you put in to the patch pages.  It&#039;s very impressive. -- [[User:Malvineous|Malvineous]] 11:51, 30 August 2012 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Source of creatures&#039; names ==&lt;br /&gt;
&lt;br /&gt;
Hello. I&#039;m new here but I hope to be a good contributor :) What I&#039;d like to know is where the names of the creatures from Keen Dreams and Keen 6 were found because Keen Dreams doesn&#039;t seem to list them all while Keen 6 doesn&#039;t even contain a help section and some of the names mentioned in Keen 6 user manual are different from the names listed here. Can you help? [[User:Saluton|Saluton]] 13:22, 3 February 2013 (GMT)&lt;br /&gt;
: That&#039;s a good question and there is no one clear answer. Some names like the Treasure Eater were confirmed via emails to Id staff (Mostly Tom Hall.) Others were taken from the game manuals while still others are community lore or taken from external sources. This seems to be quite a problematic issue and I think a topic on the PCKF tracking down all creature name origins and thus letting us insert citations for them (And correct article names where necessary.) is in order.&lt;br /&gt;
:: Before you answered, I already have [[User_talk:Malvineous#Source of creatures&#039; names|spoken to Malvineous]] about it. Thanks. [[User:Saluton|Saluton]] 05:22, 5 February 2013 (GMT)&lt;br /&gt;
&lt;br /&gt;
== Keen Meets the Meats ==&lt;br /&gt;
&lt;br /&gt;
Hello Levellass, could you add the number of levels to the [[Keen Meets the Meats]] article, please? --[[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 12:19, 12 June 2015 (UTC)&lt;br /&gt;
:Nobody knows? Really? Good heavens I could print out every single level&#039;s bitmap. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 01:06, 13 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Renaming Tutorials ==&lt;br /&gt;
&lt;br /&gt;
Open question to admins, bureaucrats and free time editors. Details over here:&lt;br /&gt;
[[Category_talk:Tutorials| Renaming/moving all Tutorials for better ease]]&lt;br /&gt;
&lt;br /&gt;
Ceilick is ok with this idea, what about you?&lt;br /&gt;
&lt;br /&gt;
::Sounds good to me. -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 02:10, 16 April 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Ultra Hard game patch side effect ==&lt;br /&gt;
&lt;br /&gt;
Hey. In your (Keen 4 whatever for now) ultra hard game patch the side effect is that you can only save on the map. If you save in (any) level, I get uncached sprite error. --[[User:Szemigi|Szemigi]] ([[User talk:Szemigi|talk]]) 20:05, 14 April 2019 (UTC)&lt;br /&gt;
&lt;br /&gt;
== KeenWave ==&lt;br /&gt;
&lt;br /&gt;
Hi Levellass, a while ago Nisaba wrote a message on the [[Talk:KeenWave|KeenWave talk page]], which refers to a Keen: Modding post. Maybe you didn&#039;t notice it at the time. The most recent version of KeenWave is missing.  [[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 14:35, 10 March 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Missing Blegd &amp;amp; Smeeg webcomic ==&lt;br /&gt;
&lt;br /&gt;
By the way, if I&#039;m not mistaken, Levellord and you were avid readers of [[Blegd and Smeeg]] back then. Do you happen to have any of the comics? Almost everything is gone, except for the [https://s34.photobucket.com/user/Galaxieretter/media/Number1Introductionssuckcolorednoex.png.html 1st], [https://www.deviantart.com/galaxieretter/art/Blegd-and-Smeeg-11-27147233 11th] and [https://web.archive.org/web/20110207230149/http://blegdandsmeeg.com/ last] episode. [[User:Grandy02|Grandy02]] ([[User talk:Grandy02|talk]]) 14:35, 10 March 2020 (UTC)&lt;br /&gt;
:I don&#039;t have anything, but Levellord was friends with the creator and she says she has a folder of about 20 images she can send me. What do you want done with them? -[[User:Levellass|Levellass]] ([[User talk:Levellass|talk]]) 12:48, 15 March 2020 (UTC)&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keygem_door&amp;diff=41511</id>
		<title>Patch:Keygem door</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keygem_door&amp;diff=41511"/>
		<updated>2020-03-15T12:38:12Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add Keen 6 door tile variety&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gem doors require a [[Patch:Keygems|keygem]] to open and work in a similar way to switches, by animating tiles with an animate property, but no animation time. While doors can be any height, by default they must be made of three different tiles by default and will animate four frames. Door sprites control the number of door frames and animation speeds.&lt;br /&gt;
&lt;br /&gt;
There are three kinds of door in Galaxy that Keen can enter. The most common kind are [[Patch:Doors (Galaxy)|&#039;passage&#039; doors]], allowing Keen to move between two points in the level, found in all Keen Galaxy games. The second kind are keygem doors found in all galaxy games. The third type are [[Patch:V Card Door|V card doors]] which require a [[Patch:Keycard (Galaxy)|V card]] to open and usually exit the level. Patches relating to Keen himself opening doors can be found at [[Patch:Keen opening doors]].&lt;br /&gt;
&lt;br /&gt;
This page is divided into four sections. The first deals with keyholders, the tiles that activate doors. The second deals with doors themselves, the tiles that alter when a door is opened and how they do so. The third section deals with door metasprites, the invisible objects that control what happens to doors. The final section covers door related game errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keyholders =&lt;br /&gt;
&lt;br /&gt;
== Gem holder  tile code ==&lt;br /&gt;
&lt;br /&gt;
The gem holder [[Patch:Tiles|tile code]] is responsible for initiating the opening of doors. The gem holder code is somewhat complicated. The first section of the code deals with checks. The first check checks to see if the gem holder tile is 1 tile below Keen&#039;s head (So Keen cannot open just any gem holder tile.) The next check determines whether the tile &#039;&#039;below&#039;&#039; the gem holder is upwards blocking (So Keen cannot open gem holders in the air.) On the second line Keen&#039;s [[Patch:Sprite actions|action]] is checked and if he is already placing a gem then the following code is skipped. (This avoids Keen constantly trying to place a gem but being unable to do so, see also [[Patch:Jump conditions]].)&lt;br /&gt;
&lt;br /&gt;
The next check, on line 3, looks to see if Keen has the right kind of gem (See [[Patch:Game stats]].); four values are checked starting with the red gem. After all these checks are passed then Keen&#039;s action is set to &#039;turn away from screen&#039;, starting the door opening sequence and he begins to &#039;slide&#039; into alignment with the holder. The final check looks to see that this alignment is complete (Otherwise he will try to use the wrong tile as a door locator causing a &#039;bad spot&#039; error.) if so then the second section is run.&lt;br /&gt;
&lt;br /&gt;
The second section causes Keen to go to the door opening code where his action is set to &#039;place gem&#039; and a gem is removed from his inventory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $D186 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0E1EW]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB $07 $D1 $E3 $83 $BF {$7A60W}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C $0E3CW  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB $07 $D1 $E3 $FF $8F {$7A60W}&lt;br /&gt;
                 $B8 [$0E1EW]  $50 $56 $9A $09DC120ARL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $C499 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0CA2W]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB $07 $D1 $E3 $83 $BF {$6F60W}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C [$0CC0W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB $07 $D1 $E3 $FF $8F {$6F60W}&lt;br /&gt;
                 $B8 [$0CA2W]  $50 $56 $9A $090B1242RL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gem holder doesn&#039;t animate ==&lt;br /&gt;
&lt;br /&gt;
This patch stops the keyholder animating; as such it can be used as many times as Keen has gems, &#039;re-opening&#039; a door each time. (When Keen runs out of gems he will be unable to use the holder until he finds more.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t animate keyholder (Free $C283-$C299)&lt;br /&gt;
%patch $C281 $EB $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Doors and door tiles =&lt;br /&gt;
&lt;br /&gt;
== Number of different tiles in door ==&lt;br /&gt;
&lt;br /&gt;
As stated above a door is made of three tiles, a top tile, of which there can be as many as desired, a middle and a bottom tile. If a door is made of more or less different tiles &#039;static tile&#039; errors will occur. It is however possible to patch this. By default a door animates as many top tiles as it find in a vertical column, then will animate two more tiles below it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Number of different tiles in door&amp;quot;&amp;gt;&lt;br /&gt;
#Number of different tiles in door -1, Keen 4&lt;br /&gt;
%patch $E8D2 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Number of different tiles in door -1, Keen 5&lt;br /&gt;
%patch $E002 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Number of different tiles in door -1, Keen 6&lt;br /&gt;
%patch $DBC1 [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doors of any (fixed) height or width in Keen 4 ==&lt;br /&gt;
&lt;br /&gt;
This patch alters the door code so that rather than animating special tiles, it copies a block of the level (Both foreground and background) from another location onto the door, much like how [[Patch:Miragia|Miragia]] works. It relies on using the [[Patch:EGAGRAPH|EGAGRAPH check skip]] and so is incompatible with any other patches that use this.&lt;br /&gt;
&lt;br /&gt;
This means that doors can be of any height or width, not just a single column. It also means any tiles may be used in a door, including animating ones and switches. The disadvantage is that &#039;&#039;all&#039;&#039; doors in a level will use the same tiles at the same location and so will do the same thing. This means that while doors can do more things, all doors in a level must do the same thing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check (Frees 389 bytes at $3CF6) 037D0H&lt;br /&gt;
%patch $3CE5 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Doors use new behaviors below&lt;br /&gt;
%patch $3066C $037D0526RL #Door opens&lt;br /&gt;
%patch $3068A $037D054ERL #Door opens&lt;br /&gt;
%patch $306A8 $037D0576RL #Door opens&lt;br /&gt;
&lt;br /&gt;
#Door tile replacement code, 2x4 block starting at 0,0 in the level&lt;br /&gt;
#Door 1, 2x4 at 0,0 in level&lt;br /&gt;
%patch $3CF6  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 2, 2x4 at 4,0 in level&lt;br /&gt;
%patch $3D1E  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0004W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 2, 2x4 at 8,0 in level&lt;br /&gt;
%patch $3D46  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0008W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alternate patch and example ===&lt;br /&gt;
&lt;br /&gt;
This alternate patch does not use the EGA skip, and so is compatible with other patches that use it. It instead disables the [[Patch:F10 T Cheat|sprite test cheat]]. In this example four frames are used for the door instead of three and the doors are 2x3 tiles in size.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable sprite test cheat&lt;br /&gt;
%patch $6D39 $CB&lt;br /&gt;
&lt;br /&gt;
#Door tile replacement code, 2x3 block starting at 0,0 in the level&lt;br /&gt;
#Door 1, 2x3 at 0,0 in level&lt;br /&gt;
%patch $6D3A  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0000W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 2, 2x3 at 0,4 in level&lt;br /&gt;
%patch $6D62  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0004W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 3, 2x3 at 0,8 in level&lt;br /&gt;
%patch $6D8A  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$0008W]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
#Door 4, 2x3 at 0,12 in level&lt;br /&gt;
%patch $6DB2  $55 $8B $EC $56 $8B $76 $06 $B8 [$0004W]  $50 $B8 [$0002W]  $50 $FF     #Block size is here&lt;br /&gt;
              $74 $0C $FF $74 $0A $B8 [$0000W]  $50 $B8 [$000CW]  $50 $9A $16540D78RL #Block location here&lt;br /&gt;
                      $83 $C4 $0C $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door sprite actions:&lt;br /&gt;
%patch $3065C $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD016ARL   $00000000L    $00000000L    $180AW&lt;br /&gt;
%patch $3067A $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD0192RL   $00000000L    $00000000L    $1828W&lt;br /&gt;
%patch $30698 $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD01BARL   $00000000L    $00000000L    $02D7W&lt;br /&gt;
%patch $2F147 $0000W $0000W $0000W $0000W $0000W $000AW $0000W $0000W&lt;br /&gt;
              $06BD01E2RL   $00000000L    $00000000L    $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doors of any (fixed) height or width in Keen 5 ==&lt;br /&gt;
&lt;br /&gt;
This patch alters the door code so that a door can be of any size, instead of a single column of tiles. It works by copying the [[Patch:V Card Door|V card door]] code and making the door sprite use it, with some alterations.  It relies on using the [[Patch:EGAGRAPH|EGAGRAPH check skip]] and so is incompatible with any other patches that use this.&lt;br /&gt;
&lt;br /&gt;
The tiles sued as a door require a very specific setup, exactly like the tiles used for the V-door; the door frames must be placed next to each other in the tileset in their totality and each tile must animate without an animation speed. Looking at how the V-door tiles are set up may help here.&lt;br /&gt;
&lt;br /&gt;
It is possible to change the width and height of the door, as well as the number of opening frames (By altering how many door sprite actions are used.) Note that the &#039;door width in tileset&#039; &#039;&#039;must&#039;&#039; be equal to the door&#039;s width to avoid problems. The animation speed of the door sprite controls how quickly the door opens.&lt;br /&gt;
&lt;br /&gt;
Note: There appears to be a bug with this patch that means that only doors of the same width and frames as the [[Patch:V Card Door|V card door]] can be used. This is rather limiting and it is not known how this may be overcome at present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Custom door sizes in Keen 5&lt;br /&gt;
#Disable EGAGRAPH check in Keen 5 (Frees 389 bytes at $3CF0)&lt;br /&gt;
%patch $3CDF $90 $90&lt;br /&gt;
&lt;br /&gt;
#New-door opening code&lt;br /&gt;
%patch $3CF0 $55 $8B $EC $83 $EC $26 $56 $57 $8D $46 $DA $8B $F8 $8B $5E $06&lt;br /&gt;
             $8B $5F $0C $D1 $E3 $8B $87 $87 $BF $D1 $E8 $D1 $E0 $8B $16 $51&lt;br /&gt;
             $9E $8B $5E $06 $8B $5F $0A $D1 $E3 $03 $C3 $89 $56 $FC $89 $46&lt;br /&gt;
             $FA $C7 $46 $FE $00 $00 $EB $29 $33 $F6 $EB $15 $8B $C6 $D1 $E0&lt;br /&gt;
             $C4 $5E $FA $03 $D8 $26 $8B $07 $2D [$0004W]  $89 $05 $83 $C7 $02 #Door width in tileset&lt;br /&gt;
             $46 $83 $FE $04 $7C $E6 $FF $46 $FE $A1 $4C $9E $D1 $E0 $01 $46&lt;br /&gt;
             $FA $83 $7E $FE $04 $7C $D1 $B8 [$0004W]  $50 $B8 [$0004W]  $50 $8B #Door size h AND v = 4x4&lt;br /&gt;
             $5E $06 $FF $77 $0C $FF $77 $0A $B8 $0001W  $50 $16 $8D $46 $DA&lt;br /&gt;
             $50 $9A $174E0F25RL     $83 $C4 $0E $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Alter door actions to use new V-card type behavior&lt;br /&gt;
%patch $318F6  $0000W $0000W $0000W $0000W $0000W [$000FW] $0000W $0000W&lt;br /&gt;
               $037D0520RL   $00000000L    $00000000L    $15D4W&lt;br /&gt;
%patch $31914  $0000W $0000W $0000W $0000W $0000W [$000FW] $0000W $0000W&lt;br /&gt;
               $037D0520RL   $00000000L    $00000000L    $15F2W&lt;br /&gt;
%patch $31932  $0000W $0000W $0000W $0000W $0000W [$000FW] $0000W $0000W&lt;br /&gt;
               $037D0520RL   $00000000L    $00000000L    $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Door sprites =&lt;br /&gt;
&lt;br /&gt;
Door sprites are invisible [[Patch:Meta sprites|metasprite]] that are created when Keen places a keygem. They animate the door tiles and are then removed. In this respect they are very similar to [[Patch:Miragia|Miragia sprites]]. The following is the default action data for all three sprites:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite actions:&lt;br /&gt;
%patch $3065C [$0000W $0000W] $0000W $0000W $0000W [$000AW] $0000W $0000W&lt;br /&gt;
              {$0D8F0F85RL}   $00000000L    $00000000L    {$180AW}&lt;br /&gt;
%patch $3067A [$0000W $0000W] $0000W $0000W $0000W [$000AW] $0000W $0000W&lt;br /&gt;
              {$0D8F0F85RL}   $00000000L    $00000000L    {$1828W}&lt;br /&gt;
%patch $30698 [$0000W $0000W] $0000W $0000W $0000W [$000AW] $0000W $0000W&lt;br /&gt;
              {$0D8F0F85RL}   $00000000L    $00000000L    {$0000W}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As can be seen each patch is one action and there are three of them. Four values per action are highlighted here as they are the most important. The first blue value is the sprite animation, door sprites do not have any, but they may be added if some sort of effect is desired along with the animating tiles. The second is the animation speed, this controls how fast each frame of the door animates (And thus controls the door opening speed.) This can be tweaked for some interesting effects.&lt;br /&gt;
&lt;br /&gt;
The first brown value is the door behavior, this is what makes the tile animate. The second brown value is the next action, by default the first two lead to the next action, the final one is zero or &#039;remove sprite&#039; This allows you to control the number of frames of door animation there are; making more actions then linking to them will allow more frames, it&#039;s even possible to link the last action back to the first in a  loop, if the door tiles also loop in their animation then when a gem is placed the door will start animating forever. This allows the use of gems as &#039;animation activators&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Sprite type|Sprite Type]] ===&lt;br /&gt;
&lt;br /&gt;
Doors use sprite type 1 which is used only by miscellaneous sprites and doesn&#039;t affect anything else.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Door sprite type&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite type -Keen 4&lt;br /&gt;
%patch $C346 [$01]&lt;br /&gt;
&lt;br /&gt;
#Door sprite type -Keen 5&lt;br /&gt;
%patch $B764 [$01]&lt;br /&gt;
&lt;br /&gt;
#Door sprite type -Keen 6&lt;br /&gt;
%patch $B547 [$01]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Sprite actions|Door actions]] ===&lt;br /&gt;
&lt;br /&gt;
Door actions control how many &#039;frames&#039; of animation a door has. (By default three.) When Keen places a keygem a door metasprite is inserted into the level where the keyholder points to. The door opening sequence is three actions long, each action animating the door 1 frame. after the third action the door metasprite vanishes.&lt;br /&gt;
&lt;br /&gt;
 Actions -Keen 4&lt;br /&gt;
 $17ECW #Door open 1&lt;br /&gt;
 $180AW #Door open 2&lt;br /&gt;
 $1828W #Door open 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Gem door placed in level&lt;br /&gt;
%patch $C349  [$17ECW]&lt;br /&gt;
&lt;br /&gt;
#Door sequence&lt;br /&gt;
%patch $30678 [$180AW]&lt;br /&gt;
%patch $30696 [$1828W]&lt;br /&gt;
%patch $306B4 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Actions -Keen 5&lt;br /&gt;
 $15B6W #Open door 1&lt;br /&gt;
 $15D4W #Open door 2&lt;br /&gt;
 $15F2W #Open door 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Gem door placed in level&lt;br /&gt;
%patch $B767  [$15B6W]&lt;br /&gt;
&lt;br /&gt;
#Door sequence&lt;br /&gt;
%patch $31912 [$15D4W]&lt;br /&gt;
%patch $31930 [$15F2W]&lt;br /&gt;
%patch $3194E [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Actions -Keen 6&lt;br /&gt;
 $15F2W #Door open 1&lt;br /&gt;
 $1610W #Door open 2&lt;br /&gt;
 $162EW #Door open 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Gem door placed in level&lt;br /&gt;
%patch $B54A  [$15F2W]&lt;br /&gt;
&lt;br /&gt;
#Door sequence&lt;br /&gt;
%patch $3233E [$1610W]&lt;br /&gt;
%patch $3235C [$162EW]&lt;br /&gt;
%patch $3237A [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite behavior|Sprite Behavior]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have one behavior, this is the behavior that alters the door tiles. It is used for all three actions thus causing doors to have three &#039;frames&#039; of opening.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite behaviors&amp;quot;&amp;gt;&lt;br /&gt;
#Door opening behaviors -Keen 4&lt;br /&gt;
%patch $3066C $0D8F0F85RL&lt;br /&gt;
%patch $3068A $0D8F0F85RL&lt;br /&gt;
%patch $306A8 $0D8F0F85RL&lt;br /&gt;
&lt;br /&gt;
#Door opening behaviors -Keen 5&lt;br /&gt;
%patch $31906 $0CCB12F5RL&lt;br /&gt;
%patch $31924 $0CCB12F5RL&lt;br /&gt;
%patch $31942 $0CCB12F5RL&lt;br /&gt;
&lt;br /&gt;
#Door opening behaviors -Keen 6&lt;br /&gt;
%patch $32332 $0CA61104RL&lt;br /&gt;
%patch $32350 $0CA61104RL&lt;br /&gt;
%patch $3236E $0CA61104RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite speed|Speed]] ==&lt;br /&gt;
&lt;br /&gt;
The doors, as metasprites, do not move. Their animation speeds are zero.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite speeds&amp;quot;&amp;gt;&lt;br /&gt;
#Door movement speeds -Keen 4&lt;br /&gt;
%patch $30668 [$0000W $0000W]&lt;br /&gt;
%patch $30686 [$0000W $0000W]&lt;br /&gt;
%patch $306A4 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door movement speeds -Keen 5&lt;br /&gt;
%patch $31902 [$0000W $0000W]&lt;br /&gt;
%patch $31920 [$0000W $0000W]&lt;br /&gt;
%patch $3193E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door movement speeds -Keen 6&lt;br /&gt;
%patch $3232E [$0000W $0000W]&lt;br /&gt;
%patch $3234C [$0000W $0000W]&lt;br /&gt;
%patch $3236A [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite animations|Animations]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have no animations and so do not appear to the player in-level. Giving doors animations can cause issues. (In fact this cannot be done without altering the door&#039;s tile interaction to allow it to display images.)&lt;br /&gt;
&lt;br /&gt;
Of greater importance is the animation speed, which controls how long each &#039;frame&#039; of door opening takes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Door sprite animations&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite animations -Keen 4&lt;br /&gt;
%patch $3065C $0000W $0000W&lt;br /&gt;
%patch $30666 $000AW        #Animation speed&lt;br /&gt;
%patch $3067A $0000W $0000W&lt;br /&gt;
%patch $30684 $000AW        #Animation speed&lt;br /&gt;
%patch $30698 $0000W $0000W&lt;br /&gt;
%patch $306A2 $000AW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Door sprite animations -Keen 5&lt;br /&gt;
%patch $318F6 $0000W $0000W&lt;br /&gt;
%patch $31900 $000AW        #Animation speed&lt;br /&gt;
%patch $31914 $0000W $0000W&lt;br /&gt;
%patch $3191E $000AW        #Animation speed&lt;br /&gt;
%patch $31932 $0000W $0000W&lt;br /&gt;
%patch $3193C $000AW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Door sprite animations -Keen 6&lt;br /&gt;
%patch $32322 $0000W $0000W&lt;br /&gt;
%patch $3232C $000AW        #Animation speed&lt;br /&gt;
%patch $32340 $0000W $0000W&lt;br /&gt;
%patch $3234A $000AW        #Animation speed&lt;br /&gt;
%patch $3235E $0000W $0000W&lt;br /&gt;
%patch $32368 $000AW        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite collision|Sprite Collision]] ==&lt;br /&gt;
&lt;br /&gt;
Doors are not supposed to interact with other sprites, so they have no sprite collision.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite collisions&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite collisions -Keen 4&lt;br /&gt;
%patch $30670 $00000000L&lt;br /&gt;
%patch $3068E $00000000L&lt;br /&gt;
%patch $306AC $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite collisions -Keen 5&lt;br /&gt;
%patch $3190A $00000000L&lt;br /&gt;
%patch $31928 $00000000L&lt;br /&gt;
%patch $31946 $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite collisions -Keen 6&lt;br /&gt;
%patch $32336 $00000000L&lt;br /&gt;
%patch $32354 $00000000L&lt;br /&gt;
%patch $32372 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite clipping and foreground|Clipping and foreground]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have no clipping so that they won&#039;t be messed about by solid tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Door clipping&amp;quot;&amp;gt;&lt;br /&gt;
#Door clipping -Keen 4&lt;br /&gt;
%patch $C342 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door clipping -Keen 5&lt;br /&gt;
%patch $B760 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door clipping -Keen 6&lt;br /&gt;
%patch $B543 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite Activity Variable|Sprite Activity]] ==&lt;br /&gt;
&lt;br /&gt;
Doors need to open whether or not Keen is near them. As such they have an activity value of 2, causing them to act wherever the player is. If this is changed to 1 then doors will only open when the player is close to them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Doors sprite activity&amp;quot;&amp;gt;&lt;br /&gt;
#Doors sprite activity -Keen 4&lt;br /&gt;
%patch $C33D [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Doors sprite activity -Keen 5&lt;br /&gt;
%patch $B75B [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Doors sprite activity -Keen 6&lt;br /&gt;
%patch $B53E [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sounds|Sounds]] ==&lt;br /&gt;
&lt;br /&gt;
These are the sounds doors use in the game. A single sound is played when a keygem is placed and a door is opened. This can be muted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Door open sound&lt;br /&gt;
%patch $C29B $12&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Doors open sound&lt;br /&gt;
%patch $C29A $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Door open sound&lt;br /&gt;
%patch $B6B9  $3C&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Doors open sound&lt;br /&gt;
%patch $B6B8 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Door open sound&lt;br /&gt;
%patch $B49C $12&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play Doors open sound&lt;br /&gt;
%patch $B49B $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite-tile interaction|Sprite-tile interaction]] ==&lt;br /&gt;
&lt;br /&gt;
Doors are not meant to interact with tiles, though their behavior does cause them to alter a level&#039;s tiles. As such they have no tile interaction. Note that this also means that the door can have no animation as displaying sprite images is handled by the tile interaction code of a sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite tile interactions&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite tile interactions -Keen 4&lt;br /&gt;
%patch $30674 $00000000L&lt;br /&gt;
%patch $30692 $00000000L&lt;br /&gt;
%patch $306B0 $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite tile interactions -Keen 5&lt;br /&gt;
%patch $3190E $00000000L&lt;br /&gt;
%patch $3192C $00000000L&lt;br /&gt;
%patch $3194A $00000000L&lt;br /&gt;
&lt;br /&gt;
#Door sprite tile interactions -Keen 6&lt;br /&gt;
%patch $3233A $00000000L&lt;br /&gt;
%patch $32358 $00000000L&lt;br /&gt;
%patch $32376 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Action_Type|Action type]] ==&lt;br /&gt;
&lt;br /&gt;
Door actions are basic in the extreme and thus type 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite action types&amp;quot;&amp;gt;&lt;br /&gt;
#Door sprite action types -Keen 4&lt;br /&gt;
%patch $30660 [$0000W]&lt;br /&gt;
%patch $3067E [$0000W]&lt;br /&gt;
%patch $3069C [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door sprite action types -Keen 5&lt;br /&gt;
%patch $318FA [$0000W]&lt;br /&gt;
%patch $31918 [$0000W]&lt;br /&gt;
%patch $31936 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Door sprite action types -Keen 6&lt;br /&gt;
%patch $32326 [$0000W]&lt;br /&gt;
%patch $32344 [$0000W]&lt;br /&gt;
%patch $32362 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] ==&lt;br /&gt;
&lt;br /&gt;
Doors have no need for either of these variables and so have a value of 0 for both in all of their actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite deprotect, stick&amp;quot;&amp;gt;&lt;br /&gt;
#Door deprotect, stick -Keen 4&lt;br /&gt;
%patch $30662 [$0000W $0000W]&lt;br /&gt;
%patch $30680 [$0000W $0000W]&lt;br /&gt;
%patch $3069E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door deprotect, stick -Keen 5&lt;br /&gt;
%patch $318FC [$0000W $0000W]&lt;br /&gt;
%patch $3191A [$0000W $0000W]&lt;br /&gt;
%patch $31938 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Door deprotect, stick -Keen 6&lt;br /&gt;
%patch $32328 [$0000W $0000W]&lt;br /&gt;
%patch $32346 [$0000W $0000W]&lt;br /&gt;
%patch $32364 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Game errors|Errors]] =&lt;br /&gt;
&lt;br /&gt;
Doors and keygems can cause a number of [[Patch:Game errors|errors.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keyholder points to bad spot ==&lt;br /&gt;
&lt;br /&gt;
This error should occur when the player tries to place a key gem to open a door. It occurs when the keyholder does not have a correct sprite value over it. usually this happens when the modder forgets to put a value in, giving a default value of 0,0. Other invalid values are those outside the level borders. This error is easy enough to fix since there should only be a small number of keyholders in the level to check for validity.&lt;br /&gt;
&lt;br /&gt;
This error may also occur if a &#039;hidden&#039; keyholder is triggered, say if the modder accidentally gives a tile the keyholder property. (The hidden holder will of course not be given a value and can be hard to find until the player accidentally runs into one while having the right colored gem.)&lt;br /&gt;
&lt;br /&gt;
In either case the best course of action is to play the level and note exactly where the game crashes. This will be the exact location of the broken keyholder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keyholder errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $C2E0  [$1426W] #Text called from&lt;br /&gt;
%patch $30296 &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $B6FE  [$130EW] #Text called from&lt;br /&gt;
%patch $3164E &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $B4E1  [$129EW] #Text called from&lt;br /&gt;
%patch $31FCE &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Door tiles become gibberish ==&lt;br /&gt;
&lt;br /&gt;
This occurs when the game tries to turn a door tile into a tile that&#039;s not in the level. This is usually a tile bug, where the modder hasn&#039;t given each door tile the right number of animation frames. It can also occur when the modder changes how many different tiles can be in the door or how many frames it takes to open.&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Lifewater&amp;diff=41510</id>
		<title>Patch:Lifewater</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Lifewater&amp;diff=41510"/>
		<updated>2020-03-15T12:27:02Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add links to game stats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lifewater is the system used in [[Keen 4]] to allow the player to collect extra lives. There are two collectables that can be acquired; the first is lifewater drops, which are tiles that can be collected, 100 giving the player an extra life, the second collectable is the lifewater flask, both a tile and sprite that can be collected to give an extra life directly.&lt;br /&gt;
&lt;br /&gt;
This page is divided into three sections. The first section relates to lifewater drop tiles, the second relates to lifewater flask tiles and the third to the splash and 1UP sprites produced when tiles are collected. This apge does &#039;&#039;not&#039;&#039; cover aptches relating to 1UP sprites; there are [[Patch:Items|items]] and aptches relating to them can be found on the items page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lifewater drops =&lt;br /&gt;
&lt;br /&gt;
These are 16x16 foreground tiles with a specific property allowing the player to get them. When 100 are obtained an extra life is gained. The following patches relate to both getting a single drop and an extra life.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Game stats|What the drops give]] ==&lt;br /&gt;
&lt;br /&gt;
This is what is increased when the player obtains a drop. By default the [[Patch:Game stats|drops counter]] is incremented by 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#What to increase&lt;br /&gt;
%patch $D075 $FF $06 {$7A5AW}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Game stats|What is needed to get 1UP]] ==&lt;br /&gt;
&lt;br /&gt;
This is what is required to obtain an extra life. By default this is exactly 100 drops. The game code is set up so that it is impossible for the player to get more than one drop at a time, but if this happened the player might not get an extra life and continue obtaining more drops.&lt;br /&gt;
&lt;br /&gt;
Replacing the $75 with $EB will mean the player never gets an extra life (And can accumulate drops in perpetuity.) Replacing it with $90 $90 will mean the player gets an extra life with every drop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#What is needed to get an extra life  (100 drops)&lt;br /&gt;
%patch $D07A {$7A5AW}  $3D [$0064W]  {$75}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Can only get a maximum of x drops, no 1UP ===&lt;br /&gt;
&lt;br /&gt;
This patch changes the game so that the player can only get a certain number of drops. After this their drops counter does not increase anymore. This effectively puts a &#039;cap&#039; on drops. (And renders them useless, unless other patches make use of them.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Can only get a maximum of [x] drops, no 1UP&lt;br /&gt;
%patch $D075 $A1 {$7A5AW}  $3D [$xxxxW]  {$73} $04 $FF $06 {$7A5AW}  $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is changed when 1UP obtained ==&lt;br /&gt;
&lt;br /&gt;
Two things are changed when an extra life is obtained, firstly the player&#039;s life counter is incremented by 1, and secondly the drop counter is set to zero, requiring them to obtain another 100 drops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#What to change&lt;br /&gt;
%patch $D083 {$7A5AW}  [$0000W] #Set drops to 0&lt;br /&gt;
%patch $D093 $FF $06 {$7A6AW} #Increase Keen&#039;s life count&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1UP decreases drops instead of setting; can have multi-drop items ===&lt;br /&gt;
&lt;br /&gt;
This patch alters things so that drops can be increased in increments of more than 1. By default the 1UP code runs only when exactly 100 drops are obtained and it sets drops to 0 when it does so. In that case if a player were to have 99 drops and get an item that gave 20 drops (Total 119) the 1UP code would not trigger and they would be unable to get any more lives. Likewise if the 1UP code &#039;&#039;were&#039;&#039; triggered it would set the counter to 0 instead of the 19 &#039;extra&#039; drops the player should have.&lt;br /&gt;
&lt;br /&gt;
This patch makes it so that any amount equal to or above 100 (the first blue value) triggers the code and that the count is decreased by 100 when this happens. (-100 = $FF9CW).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change 1UP to drop 100 instead of set, needs&amp;gt;100 to trigger&lt;br /&gt;
%patch $D07D [$0064W]  {$72} $64 $81 $06 {$7A5AW}  [$FF9CW]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sounds|Sounds played]] ==&lt;br /&gt;
&lt;br /&gt;
There are two sounds played, one when the droplet is got, the other when an extra life is gained.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Play sounds&lt;br /&gt;
%patch $D060 $000AW #Get drop&lt;br /&gt;
%patch $D088 $0011W #Get 1UP&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t play sounds&lt;br /&gt;
%patch $D05F $EB $0A #Get drop&lt;br /&gt;
%patch $D087 $EB $0A #Get 1UP&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Drops are health (Hit points) ==&lt;br /&gt;
&lt;br /&gt;
See [[Patch:Dead Keen]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Complete Lifewater code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code run whenever a raindrop tile it touched by Keen. It is called by his [[Patch:Tiles|tile code]]. The first two lines remove the tile; $1424W calls $30294 which replaces the tile with tile 0.&lt;br /&gt;
&lt;br /&gt;
The third line plays [[Patch:Sounds|sound $0A]]. On the fourth line Keen&#039;s [[Patch:Game stats|drops variable]] is increased by 1, loaded into memory and compared with 100. If it is less the code skips to the end.&lt;br /&gt;
&lt;br /&gt;
If however it is 100 then Keen&#039;s drops are set to 0 and sound $11 played. On the next line Keen&#039;s lives are increased by and a type 1 sprite is created. (The !UP sprite.) This sprite is given the sprite type 1, a foreground value of 3, vertical direction of -1 ($FFFFW or &#039;up&#039;.) and the animation $DA. It uses action $1F28W (Item got) and has a clipping set to 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Complete Lifewater got code&lt;br /&gt;
%patch $D03F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $B8 $0001W  $50 $50&lt;br /&gt;
             $57 $56 $50 $1E $B8 {$1424W}  $50 $9A $16540F28RL     $83 $C4 $0E&lt;br /&gt;
             $B8 [$000AW]  $50 $9A $187409F1RL     $83 $C4 $02 $57 $56 $9A&lt;br /&gt;
         $0FA8020CRL     $83 $C4 $04 $FF $06 {$7A5AW}  $A1 {$7A5AW}  $3D [$0064W]&lt;br /&gt;
             {$75} $64 $C7 $06 {$7A5AW}  [$0000W]  $B8 [$0011W]  $50 $9A $187409F1RL&lt;br /&gt;
                 $83 $C4 $02 $FF $06 {$7A6AW}  $B8 $0001W  $50 $9A $06BD1E11RL&lt;br /&gt;
                 $83 $C4 $02 $8B $1E $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
                 $8B $C6 $B1 $08 $D3 $E0 $89 $47 $0A $8B $C7 $48 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $C7 $47 $10 [$FFFFW]  $B8 [$00DAW]  $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $B8 [$1F28W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $8B $1E $D8&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Lifewater flasks =&lt;br /&gt;
&lt;br /&gt;
These are either 16x16 foreground tiles with a specific property allowing the player to get them or [[Patch:Items|item sprites]] that gives the player an extra life when the player touches them. As items proper, patches relating to them are covered on the [[Patch:Items|items page.]] Any patches here are not item patches &#039;&#039;per se&#039;&#039; but rather additional patches relating to &#039;flask-like&#039; items.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create a 3 life item ==&lt;br /&gt;
&lt;br /&gt;
This patch creates an item that gives the player three lives. It has two requirements; firstly it uses the [[Patch:EGAGRAPH|EGAGRAPH check skip]] and so is incompatible with any other patches that also use it, secondly it requires [[Patch:Princess Lindsey|Princess Lindsey]] to use only one animation since the 3-up item uses her graphics. (This can be changed.)&lt;br /&gt;
&lt;br /&gt;
The 3-up sprite is spawned from the &#039;I Keen&#039; sprite. To do so Lindsey&#039;s initiation code is overwritten and she is given a new initiation code overwriting part of her hovering behavior which is now no longer used. Lindsey is also given a new animation since all of hers are being used.&lt;br /&gt;
&lt;br /&gt;
In the 3-up&#039;s spawn code there are four blue values. The first is the [[Patch:Sprite type|sprite&#039;s type,]] (1 or &#039;misc); the second is the sprite&#039;s [[Patch:Sprite Activity Variable|activity;]] the third its [[Patch:Sprite clipping and foreground|foreground variable]] (0, or appear behind all tiles.) and the final value it the 3-up&#039;s initial [[Patch:Sprite actions|action]] (The same action as Lindsey&#039;s now unused second action.)&lt;br /&gt;
&lt;br /&gt;
The 3-up has three frames of animation plus a fourth &#039;got&#039; animation used when Keen touches it. These are all Lindsey&#039;s frames.&lt;br /&gt;
&lt;br /&gt;
The 3-up&#039;s sprite collision is what gives Keen things. It reacts to Keen&#039;s sprite type (2) and increases his [[Patch:Game stats|life variable]] 3 times. It changes its own action to &#039;got&#039; and its [[Patch:Sprite speed|vertical direction]] to up (So the got item will move upwards like other got item sprites.) and finally plays sound $11.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable EGAGRAPH check in Keen 4 (Frees 389 bytes at $3CF6)&lt;br /&gt;
%patch $3CE5 $90 $90&lt;br /&gt;
&lt;br /&gt;
#Lindsey spawn caches just one animation, $00CDW&lt;br /&gt;
%patch $EE8F $3F31W #Lindsey (At $12821)&lt;br /&gt;
%patch $12821 $FF $76 $FC $57 $9A $11A20DB5RL     $83 $C4 $04 $B8 $2A3ARW  $8A&lt;br /&gt;
              $16 $EC $7A $8E $C0 $26 $08 $16 [$00CDW]  $E9 $C5BFW&lt;br /&gt;
&lt;br /&gt;
#Lindsey has one frame, no hovering&lt;br /&gt;
%patch $3276A $00000000L&lt;br /&gt;
%patch $32776 $38EAW&lt;br /&gt;
%patch $3275A $00CDW $00CDW&lt;br /&gt;
&lt;br /&gt;
#I Keen tile spawns 3-up&lt;br /&gt;
%patch $EECB $0122W &lt;br /&gt;
&lt;br /&gt;
#3-up spawn code (Uses Lindsey cache at present)&lt;br /&gt;
%patch $EA17 $037D0526RL&lt;br /&gt;
&lt;br /&gt;
#3-up spawn code = $037D0526RL&lt;br /&gt;
%patch $3CF6 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $05 [$FFFDW]&lt;br /&gt;
             $D3 $E0 $89 $47 $0C $B8 [$3908W]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#3-up sprite collision (With Keen gives 3 lives, play 1-Up sound $11) = $037D056ARL&lt;br /&gt;
%patch $3D3A $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D [$02] {$75} $22&lt;br /&gt;
             $FF $06 {$7A6AW}  $FF $06 {$7A6AW}  $FF $06 {$7A6AW}  $C7 $44 $1C [$011FW]&lt;br /&gt;
                 $C7 $44 $10 [$FFFFW]  $B8 [$0011W]  $50 $9A $187409F1RL     $83&lt;br /&gt;
             $C4 $02 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#3-up actions, use 3 Lindsey actions: $3908W-$3944W; $0008W is anim speed&lt;br /&gt;
%patch $32778 $014AW $014AW $0000W $0000W $0000W $0008W $0000W $0000W&lt;br /&gt;
              $00000000L    $037D056ARL   $09DC176ERL   $3926W&lt;br /&gt;
%patch $32796 $014BW $014BW $0000W $0000W $0000W $0008W $0000W $0000W&lt;br /&gt;
              $00000000L    $037D056ARL   $09DC176ERL   $3944W&lt;br /&gt;
%patch $327B4 $014CW $014CW $0000W $0000W $0000W $0008W $0000W $0000W&lt;br /&gt;
              $00000000L    $037D056ARL   $09DC176ERL   $3908W&lt;br /&gt;
&lt;br /&gt;
#3-up got action $011FW: acts like item got $0028W is appearance time, $0008W rise speed&lt;br /&gt;
%patch $2EF8F $0149W $0149W $0001W $0000W $0000W $0028W $0000W $0008W&lt;br /&gt;
              $00000000L    $00000000L    $09DC176ERL   $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 1UP and splash sprites =&lt;br /&gt;
&lt;br /&gt;
There are four lifewater-related sprites. The first is the 1UP produced when a [[Patch:Items|1UP item]] sprite is taken, patches relating to that sprite can be found on the items page. The second is the 1UP produced when a 1UP tile is obtained. These too are treated on the items page. The last two relate to drops tiles; the first is the &#039;drop splash&#039; that appears when any drop is taken while the second is the 1UP produced when the 100th drop is taken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite type|Sprite Type]] ==&lt;br /&gt;
&lt;br /&gt;
Both the splashes and 1UP sprites are type 1 or &#039;misc&#039;, not affecting anything in particular.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Lifewater related sprite types&lt;br /&gt;
%patch $FCAB [$0001W] #Splash&lt;br /&gt;
%patch $D0A9 [$0001W] #1UP&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite actions|Sprite Actions]] ==&lt;br /&gt;
&lt;br /&gt;
Actions relating to these sprites are quite simple. Both are produced in only one situation. The drop splash is produced when drop tiles are obtained and proceeds to a three action sequence that then vanishes. The 1UP is a variation of the standard &#039;item got&#039; sprite so altering what it becomes will alter other item got sprites.&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $1F28W #Stuff got&lt;br /&gt;
 $1F46W #Raindrop splash 1&lt;br /&gt;
 $1F64W #Raindrop splash 2&lt;br /&gt;
 $1F82W #Raindrop splash 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Produce splash&lt;br /&gt;
%patch $FCC0 [$1F46W]&lt;br /&gt;
&lt;br /&gt;
#Splash sequence&lt;br /&gt;
%patch $30DD2 [$1F64W]&lt;br /&gt;
%patch $30DF1 [$1F82W]&lt;br /&gt;
%patch $30E0E [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Produce 1UP&lt;br /&gt;
%patch $D0D0 [$1F28W]&lt;br /&gt;
&lt;br /&gt;
#1UP sequence&lt;br /&gt;
%patch $30DB4 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite behavior|Sprite Behavior]] ==&lt;br /&gt;
&lt;br /&gt;
None of these sprite actions have any behavior. Changing the 1UP&#039;s behavior will also change the behavior of other &#039;items got&#039; sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#1UP&lt;br /&gt;
%patch $30DA8 $00000000L&lt;br /&gt;
&lt;br /&gt;
#Splash&lt;br /&gt;
%patch $30DC6 $00000000L&lt;br /&gt;
%patch $30DE4 $00000000L&lt;br /&gt;
%patch $30E02 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite speed|Speed and Jump Height]] ==&lt;br /&gt;
&lt;br /&gt;
The splash sprite does not move. However the 1UP does. Since its direction is set as upwards its speed is reversed. Altering this speed will alter the speed of all &#039;item got&#039; sprites. In the main this will alter how far up the sprite gets before vanishing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#1UP initial direction&lt;br /&gt;
%patch $D0C4 [$FFFFW]&lt;br /&gt;
&lt;br /&gt;
#1UP speed&lt;br /&gt;
%patch $30DA4 $0000W $0008W&lt;br /&gt;
&lt;br /&gt;
#Splash speeds&lt;br /&gt;
%patch $30DC2 $0000W $0000W&lt;br /&gt;
%patch $30DE0 $0000W $0000W&lt;br /&gt;
%patch $30DFE $0000W $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite collision|Sprite Collision]] ==&lt;br /&gt;
&lt;br /&gt;
None of the sprite actions have any sprite collision.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#1UP&lt;br /&gt;
%patch $30DAC $00000000L&lt;br /&gt;
&lt;br /&gt;
#Splash&lt;br /&gt;
%patch $30DCA $00000000L&lt;br /&gt;
%patch $30DE8 $00000000L&lt;br /&gt;
%patch $30E06 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite animations|Animations]] ==&lt;br /&gt;
&lt;br /&gt;
The splash and 1UP sprites are cached with in-level Keen when he spawns. The 1UP sprite&#039;s specific animation is set when it is created, its action itself has no animation of its own. (If one is given then it will change the animations of all other &#039;item got&#039; sprites.) The splash however has its own animations, a different one for each action.&lt;br /&gt;
&lt;br /&gt;
The animation speeds of the splash control how long it appears onscreen before vanishing. That of the 1UP controls how long it moves upwards before vanishing. (Changing it will change all other &#039;item got&#039; sprites.)&lt;br /&gt;
&lt;br /&gt;
As a [[Patch:Items|item]] th lifewater flask comes in two types, tile and sprite based. The tile-based flask has a customizable appearance based on tileswhile the sprite-based flask uses two animations, the first of which is taken from the &#039;sprite animation list&#039;. The animation for when both obtained is taken from the &#039;got item animations list&#039; and by default is different from that which appears when 100 drops are obtained.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#1UP item sprite set&lt;br /&gt;
%patch $30E24 $00EFW&lt;br /&gt;
&lt;br /&gt;
#100 drop 1UP sprite set&lt;br /&gt;
%patch $D0C7 $00DAW&lt;br /&gt;
&lt;br /&gt;
#1UP item sprite set&lt;br /&gt;
%patch $30290 $00E1W&lt;br /&gt;
&lt;br /&gt;
#1UP action has no animations&lt;br /&gt;
%patch $30D98 $0000W $0000W&lt;br /&gt;
&lt;br /&gt;
#Splash&lt;br /&gt;
%patch $30DB6 $00D7W $00D7W&lt;br /&gt;
%patch $30DC0 $000AW        #Animation speed&lt;br /&gt;
%patch $30DD4 $00D8W $00D8W&lt;br /&gt;
%patch $30DDE $000AW        #Animation speed&lt;br /&gt;
%patch $30DF2 $00D9W $00D9W&lt;br /&gt;
%patch $30DFC $000AW        #Animation speed&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite Sounds|Sounds]] ==&lt;br /&gt;
&lt;br /&gt;
There are two relevant sounds, one played when a drop is obtained and another when 100 drops are obtained. Both sounds can be disabled. Patches relating to these sounds can be found in the sounds section near the top of this page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite clipping and foreground|Clipping and foreground]] ==&lt;br /&gt;
&lt;br /&gt;
Both the splash and 1UP sprites have a foreground value of 3 so that they will appear in front of all other sprites and tiles. (So the player can see what has happened.) and no clipping. (So they are not pushed about by tiles.) These can be altered apart from the usual &#039;item got&#039; sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Drop Splash&lt;br /&gt;
%patch $FCA7 [$0003W] #Foreground&lt;br /&gt;
%patch $FCA2 [$0000W] #Clipping&lt;br /&gt;
&lt;br /&gt;
#1UP&lt;br /&gt;
%patch $D0AE [$0003W] #Foreground&lt;br /&gt;
%patch $D0E3 [$0000W] #Clipping&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite-tile interaction|Sprite-tile interaction]] ==&lt;br /&gt;
&lt;br /&gt;
All the sprites use the &#039;sit&#039; tile interaction; this means they do not specifically interact with tiles. Since they have no clipping they will not even be stopped by solid tiles. Altering the 1UPs collision will affect other &#039;item got&#039; sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#1UP&lt;br /&gt;
%patch $30DB0 $09DC176ERL&lt;br /&gt;
&lt;br /&gt;
#Splash&lt;br /&gt;
%patch $30DCE $09DC176ERL&lt;br /&gt;
%patch $30DEC $09DC176ERL&lt;br /&gt;
%patch $30E0A $09DC176ERL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Action_Type|Action type]] ==&lt;br /&gt;
&lt;br /&gt;
The 1UP uses type 1 for its action; this allows it to move smoothly. The splash by contrast uses type 0 since they do not have to move or use a behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Splash&lt;br /&gt;
%patch $30DBA [$0000W]&lt;br /&gt;
%patch $30DD8 [$0000W]&lt;br /&gt;
%patch $30DF6 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#1UP&lt;br /&gt;
%patch $30D9C [$0001W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] ==&lt;br /&gt;
&lt;br /&gt;
The splash and 1UP have no need for either of these variables and so have a value of 0 for both in all of their actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Splash&lt;br /&gt;
%patch $30D9E [$0000W $0000W]&lt;br /&gt;
%patch $30DBC [$0000W $0000W]&lt;br /&gt;
%patch $30DDA [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#1UP&lt;br /&gt;
%patch $30DF8 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Item|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Map.png&amp;diff=41493</id>
		<title>File:Colander Ken - Map.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Map.png&amp;diff=41493"/>
		<updated>2020-03-03T21:31:12Z</updated>

		<summary type="html">&lt;p&gt;Levellass: The map level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The map level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_08.png&amp;diff=41492</id>
		<title>File:Colander Ken - Level 08.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_08.png&amp;diff=41492"/>
		<updated>2020-03-03T21:30:52Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_07.png&amp;diff=41491</id>
		<title>File:Colander Ken - Level 07.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_07.png&amp;diff=41491"/>
		<updated>2020-03-03T21:30:36Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_06.png&amp;diff=41490</id>
		<title>File:Colander Ken - Level 06.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_06.png&amp;diff=41490"/>
		<updated>2020-03-03T21:30:26Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_05.png&amp;diff=41489</id>
		<title>File:Colander Ken - Level 05.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_05.png&amp;diff=41489"/>
		<updated>2020-03-03T21:30:15Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_04.png&amp;diff=41488</id>
		<title>File:Colander Ken - Level 04.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_04.png&amp;diff=41488"/>
		<updated>2020-03-03T21:30:04Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_03.png&amp;diff=41487</id>
		<title>File:Colander Ken - Level 03.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_03.png&amp;diff=41487"/>
		<updated>2020-03-03T21:29:54Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_02.png&amp;diff=41486</id>
		<title>File:Colander Ken - Level 02.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_02.png&amp;diff=41486"/>
		<updated>2020-03-03T21:29:35Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken

Not that it will appear on the stupid mod level list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;br /&gt;
&lt;br /&gt;
Not that it will appear on the stupid mod level list.&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Colander_Ken&amp;diff=41485</id>
		<title>Colander Ken</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Colander_Ken&amp;diff=41485"/>
		<updated>2020-03-03T21:27:27Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Right. Fuck you all. Adding the level list and files. Someone else who know this shit can modify the filename fuckery.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mod Infobox&lt;br /&gt;
 | Episode = 1&lt;br /&gt;
 | Protagonist = Colander Ken&lt;br /&gt;
 | Authors = [[User:Levellass|Levellass]], [[User:Szemigi|Szemigi]]&lt;br /&gt;
 | Status = Complete&lt;br /&gt;
 | ReleaseDate = 2014-11-01&lt;br /&gt;
 | Discussion = [https://pckf.com/viewtopic.php?t=3150 PCKF]&lt;br /&gt;
 | Levels = 8&lt;br /&gt;
 | SecretLevels = 0&lt;br /&gt;
 | NewGameplay = No&lt;br /&gt;
 | NewGfx = Yes&lt;br /&gt;
 | NewLevels = Yes&lt;br /&gt;
 | NewSfx = Yes&lt;br /&gt;
 | NewMusic = &amp;quot;[[Keen 4 Music#Track 03: Too Hot to Handle|Too Hot to Handle]]&amp;quot; for whole mod&lt;br /&gt;
 | LatestDownloadURL =  http://www.shikadi.net/wiki/files/Mods/Keen1/m.levellass_szemigi.colander_ken.k1.2014-11-01.zip&lt;br /&gt;
 | Download =  ([https://dl.dropboxusercontent.com/u/3940020/COLANDER.zip mirror])&lt;br /&gt;
}}&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Colander Ken: Do Unto Otters&#039;&#039;&#039; is a [[Keen 1]] mod released by [[User:Levellass|Levellass]] and [[User:Szemigi|Szemigi]]. It parodies &amp;quot;bad&amp;quot; modding, featuring crude graphics alongside the unedited original ones, spelling mistakes, modified Keen 1 levels and one song for the entire game. According to the mod&#039;s very short story, Keen, renamed Ken, has to &amp;quot;save the otter.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Levels ==&lt;br /&gt;
&lt;br /&gt;
{{ModLevelList}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_01.png&amp;diff=41484</id>
		<title>File:Colander Ken - Level 01.png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Colander_Ken_-_Level_01.png&amp;diff=41484"/>
		<updated>2020-03-03T21:26:40Z</updated>

		<summary type="html">&lt;p&gt;Levellass: A level from Colander Ken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A level from [[Colander Ken]]&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Probability&amp;diff=41248</id>
		<title>Patch:Probability</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Probability&amp;diff=41248"/>
		<updated>2020-01-02T08:55:49Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Complete overhaul of page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Probability is what controls all of the &#039;random&#039; events in Keen. This page details how probability and probability patches work in Keen games. It should be noted from the outset that the Keen games are only &#039;pseudorandom&#039;; they are ultimately predictable if everything is known about the game and can be repeated flawlessly if the same setup is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Events controlled by probability ==&lt;br /&gt;
&lt;br /&gt;
In general any event that appears to happen occasionally or unpredictably is controlled by probability. This is mostly enemy behaviors, such as when a given enemy will attack. Each enemy sprite is tracked separately from all others, so they will not all attack (or do other things) at the same time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code mechanism ==&lt;br /&gt;
&lt;br /&gt;
In code a &#039;random&#039; decision is made by requesting a (pseudo)random number from the game and comparing it to a fixed value in the code. There are varying setups but usually if the returned value is larger then something will be done, otherwise nothing will. The possible values the game can return range from 0-255 (All the values a single byte can take.) Given that the following table gives rough probabilities for given comparison values:&lt;br /&gt;
&lt;br /&gt;
 Value	Probability if action&lt;br /&gt;
 $00	0%&lt;br /&gt;
 $12	1%&lt;br /&gt;
 $28	5%&lt;br /&gt;
 $39	10%&lt;br /&gt;
 $40	12.5%&lt;br /&gt;
 $51	20%&lt;br /&gt;
 $5B	25%&lt;br /&gt;
 $63	30%&lt;br /&gt;
 $68	33%&lt;br /&gt;
 $72	40%&lt;br /&gt;
 $80	50%&lt;br /&gt;
 $8C	60%&lt;br /&gt;
 $93	66%&lt;br /&gt;
 $97	70%&lt;br /&gt;
 $9D	75%&lt;br /&gt;
 $A2	80%&lt;br /&gt;
 $A9	87.5%&lt;br /&gt;
 $AC	90%&lt;br /&gt;
 $B0	95%&lt;br /&gt;
 $B4	99%&lt;br /&gt;
 $FF	100%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probability patches ==&lt;br /&gt;
&lt;br /&gt;
A typical probability patch is listed below, it gives the probability of a [[Keen 4]] [[Blue Bird]] landing when it is next to the ground Keen is standing on:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Chance of Blue Bird landing&lt;br /&gt;
%patch $10489 [$0080W]  {$73}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The variable checked against here is the value in blue ($0080W). As can be seen from the previous section, this represents a possibility of 50% &#039;&#039;each time the code is run.&#039;&#039; Depending on how often this is, the behavior can be a simple choice, an increasing chance over time or near-instant action.  If the value is set to zero, the bird never lands. If it is set to $FF then it always lands as soon as possible. Most check values are $80, though there are some exceptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The lookup table ==&lt;br /&gt;
&lt;br /&gt;
Rather than creating numbers on the fly the game uses a static table 256 bytes long containing numbers between 0 and 255 in a fixed, scrambled order. There is an index to this table which starts at zero. Each call to the function P_Random advances the index by one, wrapping around to zero after 255, and returns the table entry at that index. This means that nothing in the game is truly random and if a single enemy is watched for long enough it will act in a repeated and predictable manner.&lt;br /&gt;
&lt;br /&gt;
Although the table is 256 bytes long, it does not contain all of the numbers between 0 and 255 inclusive. For example, 0 appears twice and 1 does not appear at all; 145 appears five times, more than any other number. Thus the values are not uniformly distributed, but in fact they are nearly so. The mean value is 128.852, whereas it would be 127.500 if all values were equally likely. All of this suggests that the table was generated using a conventional pseudorandom number generator of reasonable quality. &lt;br /&gt;
&lt;br /&gt;
Apparent randomness in gameplay is due to the interactions of the player; unless a precisely identical path is taken in each game they will quickly desynchronize. Differing behaviors at differing times will result in differing decisions by the player, further altering a game session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resetting the table index ==&lt;br /&gt;
&lt;br /&gt;
Whenever a new game or demo is started the game &#039;resets&#039; its table index back to zero. This is so that each time a demo plays it will play identically. It will be noticed by experienced players that when recording demos the game is far more predictable, as this reset happens when recording a demo also, to ensure recording and playback are synchronized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The table in games ==&lt;br /&gt;
&lt;br /&gt;
The same table is used in all Keen games, as well as in other Id Software games such as Hovertank and Doom. The table has a location in code, in Keen Vorticons this is a location in the [[Patch:Text patches|data segment]], in Keen Galaxy and Dreams it has its own segment and is located two bytes in.&lt;br /&gt;
&lt;br /&gt;
Altering the values found in the table will alter the global (pseudo)randomness in the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $C0DD $5159W&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen 1&lt;br /&gt;
%patch $181A9 $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $B7F5 $5135W&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen 2&lt;br /&gt;
%patch $1C8B5 $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $CB53 $5385W&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen 3&lt;br /&gt;
%patch $1EBA5 $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $1D04B $1ED3RW&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen 4&lt;br /&gt;
%patch $1ED32 $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $1DFE7 $1FCDRW&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen 5&lt;br /&gt;
%patch $1FCD2 $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $1CF65 $1EC4RW&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen 6&lt;br /&gt;
%patch $1EC42 $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Location&lt;br /&gt;
%patch $16C75 $5C8CW&lt;br /&gt;
&lt;br /&gt;
#Random number table -Keen Dreams&lt;br /&gt;
%patch $296FC $00 $08 $6D $DC $DE $F1 $95 $6B $4B $F8 $FE $8C $10 $42 $4A $15&lt;br /&gt;
              $D3 $2F $50 $F2 $9A $1B $CD $80 $A1 $59 $4D $24 $5F $6E $55 $30&lt;br /&gt;
              $D4 $8C $D3 $F9 $16 $4F $C8 $32 $1C $BC $34 $8C $CA $78 $44 $91&lt;br /&gt;
              $3E $46 $B8 $BE $5B $C5 $98 $E0 $95 $68 $19 $B2 $FC $B6 $CA $B6&lt;br /&gt;
              $8D $C5 $04 $51 $B5 $F2 $91 $2A $27 $E3 $9C $C6 $E1 $C1 $DB $5D&lt;br /&gt;
              $7A $AF $F9 $00 $AF $8F $46 $EF $2E $F6 $A3 $35 $A3 $6D $A8 $87&lt;br /&gt;
              $02 $EB $19 $5C $14 $91 $8A $4D $45 $A6 $4E $B0 $AD $D4 $A6 $71&lt;br /&gt;
              $5E $A1 $29 $32 $EF $31 $6F $A4 $46 $3C $02 $25 $AB $4B $88 $9C&lt;br /&gt;
              $0B $38 $2A $92 $8A $E5 $49 $92 $4D $3D $62 $C4 $87 $6A $3F $C5&lt;br /&gt;
              $C3 $56 $60 $CB $71 $65 $AA $F7 $B5 $71 $50 $FA $6C $07 $FF $ED&lt;br /&gt;
              $81 $E2 $4F $6B $70 $A6 $67 $F1 $18 $DF $EF $78 $C6 $3A $3C $52&lt;br /&gt;
              $80 $03 $B8 $42 $8F $E0 $91 $E0 $51 $CE $A3 $2D $3F $5A $A8 $72&lt;br /&gt;
              $3B $21 $9F $5F $1C $8B $7B $62 $7D $C4 $0F $46 $C2 $FD $36 $0E&lt;br /&gt;
              $6D $E2 $47 $11 $A1 $5D $BA $57 $F4 $8A $14 $34 $7B $FB $1A $24&lt;br /&gt;
              $11 $2E $34 $E7 $E8 $4C $1F $DD $54 $25 $D8 $A5 $D4 $6A $C5 $F2&lt;br /&gt;
              $62 $2B $27 $AF $FE $91 $BE $54 $76 $DE $BB $88 $78 $A3 $EC $F9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_actions&amp;diff=41242</id>
		<title>Patch:Sprite actions</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_actions&amp;diff=41242"/>
		<updated>2019-12-24T18:33:06Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Remove invalid action&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial on patching sprite actions. A sprite action is a segment of code 30 bytes long that sets the variables for almost everything relating to a sprite in Keen Galaxy (and Dreams). First is a brief description of the action with links to pages explaining each section, then follows a section listing the default values of actions in the games.&lt;br /&gt;
&lt;br /&gt;
As such, patching an entire sprite action is difficult because of the many variables involved. In general a modder will wish to patch a segment of the action, such as the sprite speeds. Therefore this page will simply outline the action&#039;s structure and function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
An action is 30 bytes long, composed of 9 words and 3 dwords. Information on each section is given in links in the table below&lt;br /&gt;
&lt;br /&gt;
 Int     Description		Values&lt;br /&gt;
 Int 0:  [[Patch:Sprite animations|Left sprite]]		Valid animations only&lt;br /&gt;
 Int 2:  [[Patch:Sprite animations|Right sprite]]		Valid animations only&lt;br /&gt;
 Int 4:  [[Patch:Galaxy Action Parameters#Action_Type|Action type]]		0-4&lt;br /&gt;
 Int 6:  [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect]]		0/1&lt;br /&gt;
 Int 8:  [[Patch:Galaxy Action Parameters#Deprotect_Animation|Stick to ground]]		0/1&lt;br /&gt;
 Int 10: [[Patch:Sprite animations|Delay (Anim speed)]]	0-8000&lt;br /&gt;
 Int 12: [[Patch:Sprite speed|H anim move amount]]	+- any value&lt;br /&gt;
 Int 14: [[Patch:Sprite speed|V anim move amount]]	+- any value&lt;br /&gt;
 Int 16: [[Patch:Sprite behavior|Behavior]]		Start of behavior codes only&lt;br /&gt;
 Int 20: [[Patch:Sprite collision|Check sprites]]		Start of check sprite codes only&lt;br /&gt;
 Int 24: [[Patch:Sprite-tile interaction|Check tiles]]		Start of check tile code only&lt;br /&gt;
 Int 30: [[Patch:Sprite actions#List_of_sprite_actions|Next action]]		Valid actions only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actions are treated like text strings (See [[Patch:Text patches]]) and are referred to by a text pointer, this includes the &#039;next action&#039; word at the end of each action. As an example is a patch for changing what the [[Arachnut]] spawns as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn walking Arachnut&lt;br /&gt;
%patch $1056B $2378W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List of sprite actions ==&lt;br /&gt;
&lt;br /&gt;
Each action has its own value (Actually a pointer to its location.) This is seen most often in the &#039;next action&#039; variable, which tells a sprite what set of action instructions to follow next. Listed below are the default values found in Keen games plus a brief description of what they do.&lt;br /&gt;
&lt;br /&gt;
Since this is a location pointer, it is possible for a modder to create totally new actions and refer to them.&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Null action (Vanish)&lt;br /&gt;
 $098CW #[[Patch:Demo Sign|Demo sign in Highscores level (Invisible)]]&lt;br /&gt;
 $098CW #Keen standing&lt;br /&gt;
 $09AAW #[[Patch:Keen bored|Keen looks up (Bored)]]&lt;br /&gt;
 $09C8W #[[Patch:Keen bored|Keen shrugs 1(Bored more)]]&lt;br /&gt;
 $09E6W #[[Patch:Keen bored|Keen shrugs 2]]&lt;br /&gt;
 $0A04W #[[Patch:Keen bored|Keen shrugs 3]]&lt;br /&gt;
 $0A22W #[[Patch:Keen bored|Keen shrugs 4]]&lt;br /&gt;
 $0A40W #[[Patch:Keen bored|Keen shrugs 5]]&lt;br /&gt;
 $0A5EW #[[Patch:Keen bored|Keen shrugs 6]]&lt;br /&gt;
 $0A7CW #[[Patch:Keen_mooning|Keen moons 1]]&lt;br /&gt;
 $0A9AW #[[Patch:Keen_mooning|Keen moons 2]]&lt;br /&gt;
 $0AB8W #[[Patch:Keen_mooning|Keen moons 3]]&lt;br /&gt;
 $0AD6W #[[Patch:Keen bored|Keen starts reading book 1]]&lt;br /&gt;
 $0AF4W #[[Patch:Keen bored|Keen starts reading book 2]]&lt;br /&gt;
 $0B12W #[[Patch:Keen bored|Keen starts reading book 3]]&lt;br /&gt;
 $0B30W #[[Patch:Keen bored|Keen starts reading book 4]]&lt;br /&gt;
 $0B4EW #[[Patch:Keen bored|Keen reads book 1]]&lt;br /&gt;
 $0B6CW #[[Patch:Keen bored|Keen reads book 2]]&lt;br /&gt;
 $0B8AW #[[Patch:Keen bored|Keen reads book 3]]&lt;br /&gt;
 $0BA8W #[[Patch:Keen bored|Keen stops reading book 1]]&lt;br /&gt;
 $0BC6W #[[Patch:Keen bored|Keen stops reading book 2]]&lt;br /&gt;
 $0BE4W #[[Patch:Keen bored|Keen stops reading book 3]]&lt;br /&gt;
 $0C02W #[[Patch:Keen look|Keen start looking up]]&lt;br /&gt;
 $0C20W #[[Patch:Keen look|Keen looking up]]&lt;br /&gt;
 $0C3EW #[[Patch:Keen look|Keen start looking down]]&lt;br /&gt;
 $0C5CW #[[Patch:Keen look|Keen looking down 1]]&lt;br /&gt;
 $0C7AW #[[Patch:Keen look|Keen looking down 2]]&lt;br /&gt;
 $0C98W #[[Patch:Keen look|Keen stop looking down]]&lt;br /&gt;
 $0CB6W #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $0CD4W #[[Patch:Keen_dying_(Keen_4)|Defunct dead action]]&lt;br /&gt;
 $0CF2W #[[Patch:Keen_dying_(Keen_4)|Keen dies sprawled (Exits level if offscreen.)]]&lt;br /&gt;
 $0D10W #[[Patch:Keen_dying_(Keen_4)|Keen dies clutched (Exits level if offscreen.)]]&lt;br /&gt;
 $0D2EW #[[Patch:Keen_dying_(Keen_4)|Keen die swimming sprawled (Exits level if offscreen.)]]&lt;br /&gt;
 $0D4CW #[[Patch:Keen_dying_(Keen_4)|Keen die swimming clutched (Exits level if offscreen.)]]&lt;br /&gt;
 $0D6AW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally 1]]&lt;br /&gt;
 $0D88W #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally 2]]&lt;br /&gt;
 $0DA6W #[[Patch:Keen shooting (Galaxy)|Keen shooting up 1]]&lt;br /&gt;
 $0DC4W #[[Patch:Keen shooting (Galaxy)|Keen shooting up 2]]&lt;br /&gt;
 $0DE2W #[[Patch:Keen Flipping Switches|Keen starts flicking switches]]&lt;br /&gt;
 $0E00W #[[Patch:Keen Flipping Switches|Keen finishes flicking switches]]&lt;br /&gt;
 $0E1EW #Keen places gem, door opens&lt;br /&gt;
 $0E3CW #Keen adjust position&lt;br /&gt;
 $0E5AW #[[Patch:Keen entering doors|Keen walks into door 1]]&lt;br /&gt;
 $0E78W #[[Patch:Keen entering doors|Keen walks into door 2]]&lt;br /&gt;
 $0E96W #[[Patch:Keen entering doors|Keen walks into door 3]]&lt;br /&gt;
 $0EB4W #[[Patch:Keen entering doors|Keen walks into door 4]]&lt;br /&gt;
 $0ED2W #[[Patch:Keen entering doors|Keen walks into door 5]]&lt;br /&gt;
 $0EF0W #[[Patch:Keen on poles|Keen sitting still on a pole]]&lt;br /&gt;
 $0F0EW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0F2CW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0F4AW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0F68W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0F86W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0FA4W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0FC2W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0FE0W #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole 1]]&lt;br /&gt;
 $0FFEW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole 2]]&lt;br /&gt;
 $101CW #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole 1]]&lt;br /&gt;
 $103AW #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole 2]]&lt;br /&gt;
 $1058W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole 1]]&lt;br /&gt;
 $1076W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole 2]]&lt;br /&gt;
 $1094W #[[Patch:Keen walking (Galaxy)|Keen standing (Walking action)]]&lt;br /&gt;
 $10B2W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $10D0W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $10EEW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $110CW #[[Patch:Keen pogoing (Galaxy)|Keen start pogoing]]&lt;br /&gt;
 $112AW #[[Patch:Keen pogoing (Galaxy)|Keen pogoing]]&lt;br /&gt;
 $1148W #[[Patch:Keen pogoing (Galaxy)|Keen pogo bouncing]]&lt;br /&gt;
 $1166W #[[Patch:Keen jumping (Galaxy)|Keen jumping 1]]&lt;br /&gt;
 $1184W #[[Patch:Keen jumping (Galaxy)|Keen jumping 2]]&lt;br /&gt;
 $11A2W #[[Patch:Keen jumping (Galaxy)|Keen falling 1]]&lt;br /&gt;
 $11C0W #[[Patch:Keen jumping (Galaxy)|Keen falling 2]]&lt;br /&gt;
 $11DEW #[[Patch:Keen shooting (Galaxy)|Keen start shooting horizontally in air]]&lt;br /&gt;
 $11FCW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air 1]]&lt;br /&gt;
 $121AW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air 2]]&lt;br /&gt;
 $1238W #[[Patch:Keen shooting (Galaxy)|Keen start shooting upwards in air]]&lt;br /&gt;
 $1256W #[[Patch:Keen shooting (Galaxy)|Keen shooting up in air 1]]&lt;br /&gt;
 $1274W #[[Patch:Keen shooting (Galaxy)|Keen shooting up in air 2]]&lt;br /&gt;
 $1292W #[[Patch:Keen shooting (Galaxy)|Keen start shooting downwards in air ]]&lt;br /&gt;
 $12B0W #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air 1]]&lt;br /&gt;
 $12CEW #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air 2]]&lt;br /&gt;
 $12ECW #[[Patch:Keen grabs ledge|Keen gripping ledge 1]]&lt;br /&gt;
 $130AW #[[Patch:Keen grabs ledge|Keen gripping ledge 2]]&lt;br /&gt;
 $1328W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 1]]&lt;br /&gt;
 $1346W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 2]]&lt;br /&gt;
 $1364W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 3]]&lt;br /&gt;
 $1382W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 4]]&lt;br /&gt;
 $13A0W #[[Patch:Keen grabs ledge|Keen standing on air (After pulling himself up. Doesn&#039;t fall)]]&lt;br /&gt;
 $1456W #[[Patch:Demo Sign|Invisible Demo sign (For normal gameplay)]]&lt;br /&gt;
 $1474W #[[Patch:Demo Sign|Demo sign (Unusable usually)]]&lt;br /&gt;
 $1492W #[[Patch:Keen_on_map_(Galaxy)|Map Keen riding foot]]&lt;br /&gt;
 $14B0W #[[Patch:Keen_on_map_(Galaxy)|Map Keen riding foot]]&lt;br /&gt;
 $14CEW #[[Patch:Keen_on_map_(Galaxy)|Map Keen swimming]]&lt;br /&gt;
 $14ECW #[[Patch:Keen_on_map_(Galaxy)|Map Keen standing still]]&lt;br /&gt;
 $150AW #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1528W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1546W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1564W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $1582W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waving when bored]]&lt;br /&gt;
 $15A0W #[[Patch:Keen_on_map_(Galaxy)|Map Keen moving]]&lt;br /&gt;
 $15EEW #[[Patch:Flags|Keen K flag waving 1]]&lt;br /&gt;
 $160CW #[[Patch:Flags|Keen K flag waving 2]]&lt;br /&gt;
 $162AW #[[Patch:Flags|Keen K flag waving 3]]&lt;br /&gt;
 $1648W #[[Patch:Flags|Keen K flag waving 4]]&lt;br /&gt;
 $1666W #[[Patch:Flags|Keen flag flips into holder 1]]&lt;br /&gt;
 $1684W #[[Patch:Flags|Keen flag flips into holder 2]]&lt;br /&gt;
 $16A2W #[[Patch:Flags|Keen flag flips into holder 3]]&lt;br /&gt;
 $16C0W #[[Patch:Flags|Keen flag flips into holder 4]]&lt;br /&gt;
 $16DEW #[[Patch:Flags|Keen flag flips into holder 5]]&lt;br /&gt;
 $16FCW #[[Patch:Flags|Keen flag flips into holder 6]]&lt;br /&gt;
 $171AW #[[Patch:Flags|Keen flag flips into holder 7]]&lt;br /&gt;
 $1738W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $1756W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $1774W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $1792W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullet]]&lt;br /&gt;
 $17B0W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullets zaps]]&lt;br /&gt;
 $17CEW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s bullets zaps]]&lt;br /&gt;
 $17ECW #[[Patch:Keygem_door|Door open 1]]&lt;br /&gt;
 $180AW #[[Patch:Keygem_door|Door open 2]]&lt;br /&gt;
 $1828W #[[Patch:Keygem_door|Door open 3]]&lt;br /&gt;
 $1846W #[[Patch:Scorebox|Something to do with scoreboard display]]&lt;br /&gt;
 $19ECW #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A0AW #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A28W #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A46W #[[Patch:Keen_swimming|Keen swimming]]&lt;br /&gt;
 $1A64W #[[Patch:Keen_swimming|Bubble 1]]&lt;br /&gt;
 $1A82W #[[Patch:Keen_swimming|Bubble 2]]&lt;br /&gt;
 $1AA0W #[[Patch:Keen_swimming|Bubble 3]]&lt;br /&gt;
 $1ABEW #[[Patch:Keen_swimming|Bubble 4]]&lt;br /&gt;
 $1DFCW #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E1AW #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E38W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E56W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E74W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1E92W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1EB0W #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1ECEW #[[Patch:Miragia|Miragia animating]]&lt;br /&gt;
 $1EECW #[[Patch:Items|Items 1]]&lt;br /&gt;
 $1F0AW #[[Patch:Items|Items 2]]&lt;br /&gt;
 $1F28W #[[Patch:Items|Stuff got]]&lt;br /&gt;
 $1F46W #[[Patch:Items|Raindrop splash 1]]&lt;br /&gt;
 $1F64W #[[Patch:Items|Raindrop splash 2]]&lt;br /&gt;
 $1F82W #[[Patch:Items|Raindrop splash 3]]&lt;br /&gt;
 $1FB8W #[[Patch:Council member|Walking Council member]]&lt;br /&gt;
 $1FD6W #[[Patch:Council member|Walking Council member]]&lt;br /&gt;
 $1FF4W #[[Patch:Council member|Thinking Council Member]]&lt;br /&gt;
 $2012W #[[Patch:Poison Slug|Poison Slug]]&lt;br /&gt;
 $2030W #[[Patch:Poison Slug|Poison slug]]&lt;br /&gt;
 $204EW #[[Patch:Poison Slug|Poison Slug sliming]]&lt;br /&gt;
 $206CW #[[Patch:Poison Slug|Short stunned poison slug]]&lt;br /&gt;
 $208AW #[[Patch:Poison Slug|Tall stunned poison slug]]&lt;br /&gt;
 $20A8W #[[Patch:Poison Slug|Slug Slime]]&lt;br /&gt;
 $20C6W #[[Patch:Poison Slug|Slug Slime drying]]&lt;br /&gt;
 $20E4W #[[Patch:Mad Mushroom|Mad Mushroom start]]&lt;br /&gt;
 $2102W #[[Patch:Mad Mushroom|Mad Mushroom ]]&lt;br /&gt;
 $2120W #[[Patch:Egg|Egg]]&lt;br /&gt;
 $213EW #[[Patch:Egg|Big bit of eggshell on ground]]&lt;br /&gt;
 $215CW #[[Patch:Egg|Small bit of shell 1]]&lt;br /&gt;
 $217AW #[[Patch:Egg|Small bit of shell 2]]&lt;br /&gt;
 $2198W #[[Patch:Egg|Small bit of shell 3]]&lt;br /&gt;
 $21B6W #[[Patch:Egg|BlueBird hatched]]&lt;br /&gt;
 $21D4W #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $21F2W #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $2210W #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $222EW #[[Patch:Blue Bird|BlueBird walking]]&lt;br /&gt;
 $224CW #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $226AW #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $2288W #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $22A6W #[[Patch:Blue Bird|Bluebird flying]]&lt;br /&gt;
 $22C4W #[[Patch:Blue Bird|Bluebird go to land]]&lt;br /&gt;
 $22E2W #[[Patch:Blue Bird|Stunned Bluebird]]&lt;br /&gt;
 $2300W #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $231EW #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $233CW #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $235AW #[[Patch:Blue Bird|Bluebird unstunning]]&lt;br /&gt;
 $2378W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $2396W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $23B4W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $23D2W #[[Patch:Arachnut|Arachnut]]&lt;br /&gt;
 $23F0W #[[Patch:Arachnut|Arachnut stunned]]&lt;br /&gt;
 $240EW #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $242CW #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $244AW #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $2468W #[[Patch:Arachnut|Arachnut unstunning]]&lt;br /&gt;
 $2486W #[[Patch:Skypest|Skypest flying]]&lt;br /&gt;
 $24A4W #[[Patch:Skypest|Skypest flying]]&lt;br /&gt;
 $24C2W #[[Patch:Skypest|Skypest squished]]&lt;br /&gt;
 $24E0W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $24FEW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $251CW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $253AW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2558W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2576W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2594W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $25B2W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $25D0W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $25EEW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $260CW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $262AW #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2648W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2666W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $2684W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $26A2W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $26C0W #[[Patch:Skypest|Skypest preening]]&lt;br /&gt;
 $26DEW #[[Patch:Wormouth|Wormouth small moving]]&lt;br /&gt;
 $26FCW #[[Patch:Wormouth|Wormouth small looking around]]&lt;br /&gt;
 $271AW #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2738W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2756W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2774W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $2792W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $27B0W #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $27CEW #[[Patch:Wormouth|Wormouth looking around]]&lt;br /&gt;
 $27ECW #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $280AW #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2828W #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2846W #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2864W #[[Patch:Wormouth|Wormouth biting]]&lt;br /&gt;
 $2882W #[[Patch:Wormouth|Wormouth stunned]]&lt;br /&gt;
 $28A0W #[[Patch:Cloud|Cloud asleep]]&lt;br /&gt;
 $28BEW #[[Patch:Cloud|Cloud awake and still]]&lt;br /&gt;
 $28DCW #[[Patch:Cloud|Cloud moving]]&lt;br /&gt;
 $28FAW #[[Patch:Cloud|Cloud turning\starting moving]]&lt;br /&gt;
 $2918W #[[Patch:Cloud|Cloud moving]]&lt;br /&gt;
 $2936W #[[Patch:Cloud|Cloud zapping Keen]] &lt;br /&gt;
 $2954W #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $2972W #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $2990W #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $29AEW #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $29CCW #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $29EAW #[[Patch:Cloud|Cloud zapping Keen ]]&lt;br /&gt;
 $2A08W #[[Patch:Cloud|Cloud zapping Keen]]&lt;br /&gt;
 $2A26W #[[Patch:Cloud|Cloud zapping Keen (Lightning strikes)]]&lt;br /&gt;
 $2A44W #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2A62W #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2A80W #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2A9EW #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2ABCW #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2ADAW #[[Patch:Cloud|Lightning]]&lt;br /&gt;
 $2AF8W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B16W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B34W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B52W #[[Patch:Berkeloid|Berkeloid moving]]&lt;br /&gt;
 $2B70W #[[Patch:Berkeloid|Berkeloid ready to flame]]&lt;br /&gt;
 $2B8EW #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2BACW #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2BCAW #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2BE8W #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2C06W #[[Patch:Berkeloid|Berkeloid flaming]]&lt;br /&gt;
 $2C24W #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C42W #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C60W #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C7EW #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2C9CW #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2CBAW #[[Patch:Berkeloid|Berkeloid flamed]]&lt;br /&gt;
 $2CD8W #[[Patch:Berkeloid|Berkeloid tossed flame 1]]&lt;br /&gt;
 $2CF6W #[[Patch:Berkeloid|Berkeloid tossed flame 2]]&lt;br /&gt;
 $2D14W #[[Patch:Berkeloid|Berkeloid landed flame 3]]&lt;br /&gt;
 $2D32W #[[Patch:Berkeloid|Berkeloid landed flame 4]]&lt;br /&gt;
 $2D50W #[[Patch:Berkeloid|Berkeloid landed flame 5]]&lt;br /&gt;
 $2D6EW #[[Patch:Berkeloid|Berkeloid landed flame 6]]&lt;br /&gt;
 $2D8CW #[[Patch:Berkeloid|Berkeloid landed flame 7]]&lt;br /&gt;
 $2DAAW #[[Patch:Berkeloid|Berkeloid landed flame 8]]&lt;br /&gt;
 $2DAAW #[[Patch:Berkeloid|Berkeloid landed flame 9]]&lt;br /&gt;
 $2DE6W #[[Patch:Berkeloid|Berkeloid landed flame 10]]&lt;br /&gt;
 $2E04W #[[Patch:Berkeloid|Berkeloid landed flame 11]]&lt;br /&gt;
 $2E22W #[[Patch:Foot|Foot appearing smoke 1]]&lt;br /&gt;
 $2E40W #[[Patch:Foot|Foot appearing smoke 2]]&lt;br /&gt;
 $2E5EW #[[Patch:Foot|Foot appearing smoke 3]]&lt;br /&gt;
 $2E7CW #[[Patch:Foot|Foot appearing smoke 4]]&lt;br /&gt;
 $2E9AW #[[Patch:Inchworm|Inchworm 1]]&lt;br /&gt;
 $2EB8W #[[Patch:Inchworm|Inchworm 2]]&lt;br /&gt;
 $2ED6W #[[Patch:Foot|The Foot (Spawned by Inchworms)]]&lt;br /&gt;
 $2EF4W #[[Patch:Foot|The Foot (Placed in P.O.T.F.)]]&lt;br /&gt;
 $2F12W #[[Patch:Bounder|Bounder bouncing vertically]]&lt;br /&gt;
 $2F30W #[[Patch:Bounder|Bounder bouncing vertically]]&lt;br /&gt;
 $2F4EW #[[Patch:Bounder|Bounder bouncing left/right]]&lt;br /&gt;
 $2F6CW #[[Patch:Bounder|Bounder bouncing left/right]]&lt;br /&gt;
 $2F8AW #[[Patch:Bounder|Stunned Bounder in air]]&lt;br /&gt;
 $2FA8W #[[Patch:Bounder|Stunned Bounder on ground]]&lt;br /&gt;
 $2FC6W #[[Patch:Lick|Lick]]&lt;br /&gt;
 $2FE4W #[[Patch:Lick|Lick]]&lt;br /&gt;
 $3002W #[[Patch:Lick|Lick ready to jump]]&lt;br /&gt;
 $3020W #[[Patch:Lick|Lick landing/jumping]]&lt;br /&gt;
 $303EW #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $305CW #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $307AW #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $3098W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $30B6W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $30D4W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $30F2W #[[Patch:Lick|Lick flaming]]&lt;br /&gt;
 $3110W #[[Patch:Lick|Lick done flaming]]&lt;br /&gt;
 $312EW #[[Patch:Lick|Stunned Lick in air]]&lt;br /&gt;
 $314CW #[[Patch:Lick|Stunned Lick]]&lt;br /&gt;
 $316AW #[[Patch:Platform_(Keen_4)|Controllable Airboard]] &lt;br /&gt;
 $3188W #[[Patch:Platform_(Keen_4)|Airboard still]]&lt;br /&gt;
 $31A6W #[[Patch:Platform_(Keen_4)|Airboard fall]]&lt;br /&gt;
 $31C4W #[[Patch:Platform_(Keen_4)|Airboard rise]]&lt;br /&gt;
 $31E2W #[[Patch:Smirky|Smirky (a.k.a. Gnosticene Ancient / Red Guy who steals points)]]&lt;br /&gt;
 $3200W #[[Patch:Smirky|Smirky]]&lt;br /&gt;
 $321EW #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $323CW #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $325AW #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $3278W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $3296W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $32B4W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $32D2W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $32F0W #[[Patch:Smirky|Smirky teleporting smoke]]&lt;br /&gt;
 $330EW #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $332CW #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $334AW #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $3368W #[[Patch:Smirky|Smirky jumping to steal stuff]]&lt;br /&gt;
 $3386W #[[Patch:Smirky|Shot Smirky]]&lt;br /&gt;
 $33A4W #[[Patch:Smirky|Stunned Smirky]]&lt;br /&gt;
 $33C2W #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $33E0W #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $33FEW #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $341CW #[[Patch:Smirky|Candy stolen by Smirky]]&lt;br /&gt;
 $343AW #[[Patch:Mimrock|Mimrock stuck to ground]]&lt;br /&gt;
 $3458W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $3476W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $3494W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $34B2W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $34D0W #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $34EEW #[[Patch:Mimrock|Mimrock sneaking]]&lt;br /&gt;
 $350CW #[[Patch:Mimrock|Mimrock jumping]]&lt;br /&gt;
 $352AW #[[Patch:Mimrock|Mimrock jumping]]&lt;br /&gt;
 $3548W #[[Patch:Mimrock|Mimrock jumping]]&lt;br /&gt;
 $3566W #[[Patch:Mimrock|Mimrock upside down bouncing]]&lt;br /&gt;
 $3584W #[[Patch:Mimrock|Shot Mimrock]]&lt;br /&gt;
 $35A2W #[[Patch:Mimrock|Stunned Mimrock]]&lt;br /&gt;
 $35C0W #[[Patch:Dopefish|Dopefish swimming]]&lt;br /&gt;
 $35DEW #[[Patch:Dopefish|Dopefish swimming]]&lt;br /&gt;
 $35FCW #[[Patch:Dopefish|Dopefish chomping (Mouth wide open)]]&lt;br /&gt;
 $361AW #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3638W #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3656W #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3674W #[[Patch:Dopefish|Dopefish burping]]&lt;br /&gt;
 $3692W #[[Patch:Dopefish|Dead Schoolfish]]&lt;br /&gt;
 $36B0W #[[Patch:Dopefish|Keen eaten by Dopefish (Stays still so can&#039;t be seen behind fish)]]&lt;br /&gt;
 $36CEW #[[Patch:Keen dying (Keen 4)|Didn&#039;t make it past.. (Well of Wishes eaten death)]]&lt;br /&gt;
 $36ECW #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $370AW #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $3728W #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $3746W #[[Patch:Dopefish|Big bubble]]&lt;br /&gt;
 $3764W #[[Patch:Schoolfish|Schoolfish]]&lt;br /&gt;
 $3782W #[[Patch:Schoolfish|Schoolfish]]&lt;br /&gt;
 $37A0W #[[Patch:Sprite|Sprite]]&lt;br /&gt;
 $37BEW #[[Patch:Sprite|Sprite aiming]]&lt;br /&gt;
 $37DCW #[[Patch:Sprite|Sprite shooting]]&lt;br /&gt;
 $37FAW #[[Patch:Sprite|Sprite shooting]]&lt;br /&gt;
 $3818W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3836W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3854W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3872W #[[Patch:Sprite|Sprite&#039;s bullet]]&lt;br /&gt;
 $3890W #[[Patch:Underwater Mine|Mine moving]]&lt;br /&gt;
 $38AEW #[[Patch:Underwater Mine|Mine explodes 1]]&lt;br /&gt;
 $38CCW #[[Patch:Underwater Mine|Mine explodes 2]]&lt;br /&gt;
 $38EAW #[[Patch:Lindsey|Princess Lindsey (Floats up offscreen)]]&lt;br /&gt;
 $3908W #[[Patch:Lindsey|Princess Lindsey]]&lt;br /&gt;
 $3926W #[[Patch:Lindsey|Princess Lindsey]]&lt;br /&gt;
 $3944W #[[Patch:Lindsey|Princess Lindsey]]&lt;br /&gt;
 $3962W #[[Patch:Dart_Gun|Dart shooter (All four, by default sprite freezes, then shoots upwards dart)]]&lt;br /&gt;
 $3980W #[[Patch:Dart_Gun|Dart left/right]]&lt;br /&gt;
 $399EW #[[Patch:Dart_Gun|Dart left/right (Shoots immediately)]]&lt;br /&gt;
 $39BCW #[[Patch:Dart_Gun|Dart up]]&lt;br /&gt;
 $39DAW #[[Patch:Dart_Gun|Dart up (Shoots immediately)]]&lt;br /&gt;
 $39F8W #[[Patch:Dart_Gun|Dart down]]&lt;br /&gt;
 $3A16W #[[Patch:Dart_Gun|Dart down (Shoots immediately)]]&lt;br /&gt;
 $3A34W #[[Patch:Wetsuit|The Wetsuit]]&lt;br /&gt;
 $3ABBW #Keen enters Shadowlands (Sometimes takes a life if used wrong.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Null action (Vanish)&lt;br /&gt;
 $0788W #[[Patch:Demo Sign|Demo sign in Highscores level (Invisible)]]&lt;br /&gt;
 $0888W #Keen standing&lt;br /&gt;
 $08A6W #[[Patch:Keen on Platforms|Keen on Platforms]]&lt;br /&gt;
 $08C4W #[[Patch:Keen bored|Keen looks up (Bored)]]&lt;br /&gt;
 $08E2W #[[Patch:Keen bored|Keen shrugs 1 (Bored more)]]&lt;br /&gt;
 $0900W #[[Patch:Keen bored|Keen shrugs 2]]&lt;br /&gt;
 $091EW #[[Patch:Keen bored|Keen shrugs 3]]&lt;br /&gt;
 $093CW #[[Patch:Keen bored|Keen shrugs 4]]&lt;br /&gt;
 $095AW #[[Patch:Keen bored|Keen shrugs 5]]&lt;br /&gt;
 $0978W #[[Patch:Keen bored|Keen shrugs 6]]&lt;br /&gt;
 $0996W #[[Patch:Keen bored|Keen starts reading book 1]]&lt;br /&gt;
 $09B4W #[[Patch:Keen bored|Keen starts reading book 2]]&lt;br /&gt;
 $09D2W #[[Patch:Keen bored|Keen starts reading book 3]]&lt;br /&gt;
 $09F0W #[[Patch:Keen bored|Keen starts reading book 4]]&lt;br /&gt;
 $0A0EW #[[Patch:Keen bored|Keen reads book 1]]&lt;br /&gt;
 $0A2CW #[[Patch:Keen bored|Keen reads book 2]]&lt;br /&gt;
 $0A4AW #[[Patch:Keen bored|Keen reads book 3]]&lt;br /&gt;
 $0A68W #[[Patch:Keen bored|Keen stops reading book 1]]&lt;br /&gt;
 $0A86W #[[Patch:Keen bored|Keen stops reading book 2]]&lt;br /&gt;
 $0AA4W #[[Patch:Keen bored|Keen stops reading book 3]]&lt;br /&gt;
 $0AC2W #[[Patch:Keen look|Keen start looking up]]&lt;br /&gt;
 $0AE0W #[[Patch:Keen look|Keen looking up]]&lt;br /&gt;
 $0AFEW #[[Patch:Keen look|Keen start looking down]]&lt;br /&gt;
 $0B1CW #[[Patch:Keen look|Keen looking down 1]]&lt;br /&gt;
 $0B3AW #[[Patch:Keen look|Keen looking down 2]]&lt;br /&gt;
 $0B58W #[[Patch:Keen look|Keen stop looking down]]&lt;br /&gt;
 $0B76W #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $0B94W #[[Patch:Keen dying (Keen 5)|Defunct dead action]]&lt;br /&gt;
 $0BB2W #[[Patch:Keen dying (Keen 5)|Keen dies sprawled (Restarts level if offscreen.)]]&lt;br /&gt;
 $0BD0W #[[Patch:Keen dying (Keen 5)|Keen dies clutched (Restarts level if offscreen.)]]&lt;br /&gt;
 $0BEEW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally start]]&lt;br /&gt;
 $0C0CW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally]]&lt;br /&gt;
 $0C2AW #[[Patch:Keen shooting (Galaxy)|Keen shooting up start]]&lt;br /&gt;
 $0C48W #[[Patch:Keen shooting (Galaxy)|Keen shooting up]]&lt;br /&gt;
 $0C66W #[[Patch:Keen Flipping Switches|Keen starts flicking switches]]&lt;br /&gt;
 $0C84W #[[Patch:Keen Flipping Switches|Keen finishes flicking switches]]&lt;br /&gt;
 $0CA2W #Keen places gem&lt;br /&gt;
 $0CC0W #Keen start interaction with gem holders/ walk-in doors&lt;br /&gt;
 $0CDEW #[[Patch:Keen entering doors|Keen attempt to open V-door]]&lt;br /&gt;
 $0CFCW #[[Patch:Keen entering doors|Keen fail to open V-door (Unused)]]&lt;br /&gt;
 $0D1AW #[[Patch:Keen entering doors|Keen walks into door 1]]&lt;br /&gt;
 $0D38W #[[Patch:Keen entering doors|Keen walks into door 2]]&lt;br /&gt;
 $0D56W #[[Patch:Keen entering doors|Keen walks into door 3]]&lt;br /&gt;
 $0D74W #[[Patch:Keen entering doors|Keen walks into door 4]]&lt;br /&gt;
 $0D92W #[[Patch:Keen entering doors|Keen walks into door 5]]&lt;br /&gt;
 $0DB0W #[[Patch:Keen entering doors|Keen walks into door 6]]&lt;br /&gt;
 $0DCEW #[[Patch:Keen on poles|Keen still on a pole]]&lt;br /&gt;
 $0DECW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0E0AW #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0E28W #[[Patch:Keen on poles|Keen going up a pole]]&lt;br /&gt;
 $0E46W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0E64W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0E82W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0EA0W #[[Patch:Keen on poles|Keen going down a pole]]&lt;br /&gt;
 $0EBEW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole start]]&lt;br /&gt;
 $0EDCW #[[Patch:Keen shooting (Galaxy)|Keen shooting horizontally on a pole]]&lt;br /&gt;
 $0EFAW #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole start]]&lt;br /&gt;
 $0F18W #[[Patch:Keen shooting (Galaxy)|Keen shoots up on pole]]&lt;br /&gt;
 $0F36W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole start]]&lt;br /&gt;
 $0F54W #[[Patch:Keen shooting (Galaxy)|Keen shooting down on a pole]]&lt;br /&gt;
 $0F72W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F90W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0FAEW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0FCCW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0FEAW #[[Patch:Keen pogoing (Galaxy)|Keen start pogoing]]&lt;br /&gt;
 $1008W #[[Patch:Keen pogoing (Galaxy)|Keen pogoing]]&lt;br /&gt;
 $1026W #[[Patch:Keen pogoing (Galaxy)|Keen pogo bouncing]]&lt;br /&gt;
 $1044W #[[Patch:Keen jumping (Galaxy)|Keen jumping 1]]&lt;br /&gt;
 $1062W #[[Patch:Keen jumping (Galaxy)|Keen jumping 2]]&lt;br /&gt;
 $1080W #[[Patch:Keen jumping (Galaxy)|Keen falling 1]]&lt;br /&gt;
 $109EW #[[Patch:Keen jumping (Galaxy)|Keen falling 2]]&lt;br /&gt;
 $10BCW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air start]]&lt;br /&gt;
 $10DAW #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air (Make shot)]]&lt;br /&gt;
 $10F8W #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally in air]]&lt;br /&gt;
 $1116W #[[Patch:Keen shooting (Galaxy)|Keen shoot up in air start]]&lt;br /&gt;
 $1134W #[[Patch:Keen shooting (Galaxy)|Keen shoot up in air (Make shot)]]&lt;br /&gt;
 $1152W #[[Patch:Keen shooting (Galaxy)|Keen shoot up in air]]&lt;br /&gt;
 $1170W #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air start]]&lt;br /&gt;
 $118EW #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air (Make shot)]]&lt;br /&gt;
 $11ACW #[[Patch:Keen shooting (Galaxy)|Keen shoot down in air]]&lt;br /&gt;
 $11CAW #[[Patch:Keen grabs ledge|Keen gripping ledge start]]&lt;br /&gt;
 $11E8W #[[Patch:Keen grabs ledge|Keen gripping ledge]]&lt;br /&gt;
 $1206W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 1]]&lt;br /&gt;
 $1224W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 2]]&lt;br /&gt;
 $1242W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 3]]&lt;br /&gt;
 $1260W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledgegripping 4]]&lt;br /&gt;
 $127EW #[[Patch:Keen grabs ledge|Keen stands back up]]&lt;br /&gt;
 $133EW #[[Patch:Demo Sign|Invisible demo sign]]&lt;br /&gt;
 $135CW #[[Patch:Demo Sign|Demo sign]]&lt;br /&gt;
 $137AW #[[Patch:Keen_on_map_(Galaxy)|Map Keen standing (clear walking animations)]]&lt;br /&gt;
 $1398W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wait (Maintain existing animation until keypress)]]&lt;br /&gt;
 $13B6W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 1]]&lt;br /&gt;
 $13D4W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 2]]&lt;br /&gt;
 $13F2W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 3]]&lt;br /&gt;
 $1410W #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 4]]&lt;br /&gt;
 $142EW #[[Patch:Keen_on_map_(Galaxy)|Map Keen wave 5]]&lt;br /&gt;
 $144CW #[[Patch:Keen_on_map_(Galaxy)|Map Keen moving]]&lt;br /&gt;
 $148AW #[[Patch:Flags|Keen K flag waving 1]]&lt;br /&gt;
 $14A8W #[[Patch:Flags|Keen K flag waving 2]]&lt;br /&gt;
 $14C6W #[[Patch:Flags|Keen K flag waving 3]]&lt;br /&gt;
 $14E4W #[[Patch:Flags|Keen K flag waving 4]]&lt;br /&gt;
 $1502W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 1]]&lt;br /&gt;
 $1520W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 2]]&lt;br /&gt;
 $153EW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 3]]&lt;br /&gt;
 $155CW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot 4]]&lt;br /&gt;
 $157AW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot smash 1]]&lt;br /&gt;
 $1598W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot smash 2]]&lt;br /&gt;
 $15B6W #[[Patch:Keygem_door|Open door 1]]&lt;br /&gt;
 $15D4W #[[Patch:Keygem_door|Open door 2]]&lt;br /&gt;
 $15F2W #[[Patch:Keygem_door|Open door 3]]&lt;br /&gt;
 $1610W #Open V-card door&lt;br /&gt;
 $1946W #[[Patch:Items|Items 1]]&lt;br /&gt;
 $1964W #[[Patch:Items|Items 2]]&lt;br /&gt;
 $1982W #[[Patch:Items|Blooglet gem-type item 1 (Unused)]]&lt;br /&gt;
 $19A0W #[[Patch:Items|Blooglet gem-type item 2 (Unused)]]&lt;br /&gt;
 $19BEW #[[Patch:Items|Stuff got]]&lt;br /&gt;
 $19DCW #[[Patch:Vitalin|Vitalin got 1]]&lt;br /&gt;
 $19FAW #[[Patch:Vitalin|Vitalin got 2]]&lt;br /&gt;
 $1A18W #[[Patch:Vitalin|Vitalin got 3]]&lt;br /&gt;
 $1A36W #[[Patch:Vitalin|Vitalin got 4]]&lt;br /&gt;
 $1A6EW #[[Patch:Teleporter_(Sprite)|Teleporter upper zap 1]]&lt;br /&gt;
 $1A8CW #[[Patch:Teleporter_(Sprite)|Teleporter upper zap 2]]&lt;br /&gt;
 $1AAAW #[[Patch:Teleporter_(Sprite)|Teleporter lower zap 1]]&lt;br /&gt;
 $1AC8W #[[Patch:Teleporter_(Sprite)|Teleporter lower zap 2]]&lt;br /&gt;
 $1AE6W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 1]]&lt;br /&gt;
 $1B04W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 2]]&lt;br /&gt;
 $1B22W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 3]]&lt;br /&gt;
 $1B40W #[[Patch:Q.E.D_(Sprite)|QED and fuse explosion 4 (Invisible, behavior sets up fuse\Q.E.D window\ending)]]&lt;br /&gt;
 $1B5EW #[[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Red Platform]]&lt;br /&gt;
 $1B7CW #[[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Purple Platform 1]]&lt;br /&gt;
 $1B9AW #[[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Purple Platform 2]]&lt;br /&gt;
 $1BB8W #[[Patch:Dropping Platform (Keen 5)|Dropping Red Platform sit]]&lt;br /&gt;
 $1BD6W #[[Patch:Dropping Platform (Keen 5)|Dropping Red Platform fall]]&lt;br /&gt;
 $1BF4W #[[Patch:Dropping Platform (Keen 5)|Dropping Red Platform rise]]&lt;br /&gt;
 $1C12W #[[Patch:Sitting Platform (Keen 5)|Sitting Red Platform]]&lt;br /&gt;
 $1C30W #[[Patch:Goplat (Keen 5)|Red Goplat]]&lt;br /&gt;
 $1C4EW #[[Patch:Goplat (Keen 5)|Purple Goplat 1]]&lt;br /&gt;
 $1C6CW #[[Patch:Goplat (Keen 5)|Purple Goplat 2]]&lt;br /&gt;
 $1CCCW #[[Patch:Volte-face|Volte-Face 1]]&lt;br /&gt;
 $1CEAW #[[Patch:Volte-face|Volte-Face 2]]&lt;br /&gt;
 $1D08W #[[Patch:Volte-face|Volte-Face 3]]&lt;br /&gt;
 $1D26W #[[Patch:Volte-face|Volte-Face 4]]&lt;br /&gt;
 $1D44W #[[Patch:Volte-face|Volte-Face stunned]]&lt;br /&gt;
 $1DA4W #[[Patch:Sneaky Platform (Keen 5)|Sneaky Platform wait]]&lt;br /&gt;
 $1DC2W #[[Patch:Sneaky Platform (Keen 5)|Sneaky Platform flee]]&lt;br /&gt;
 $1DE0W #[[Patch:Sneaky Platform (Keen 5)|Sneaky Platform return]]&lt;br /&gt;
 $1DFEW #[[Patch:Enemy_shooter_(Keen_5)|Gun wait]]&lt;br /&gt;
 $1E1CW #[[Patch:Enemy_shooter_(Keen_5)|Gun make shot]]&lt;br /&gt;
 $1E3AW #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 1]]&lt;br /&gt;
 $1E58W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 2]]&lt;br /&gt;
 $1E76W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 3]]&lt;br /&gt;
 $1E94W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot 4]]&lt;br /&gt;
 $1EB2W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot zaps 1]]&lt;br /&gt;
 $1ED0W #[[Patch:Enemy_shooter_(Keen_5)|Pink shot zaps 2]]&lt;br /&gt;
 $1F0CW #[[Patch:Sparky|Sparky walk 1]]&lt;br /&gt;
 $1F2AW #[[Patch:Sparky|Sparky walk 2]]&lt;br /&gt;
 $1F48W #[[Patch:Sparky|Sparky walk 3]]&lt;br /&gt;
 $1F66W #[[Patch:Sparky|Sparky walk 4]]&lt;br /&gt;
 $1F84W #[[Patch:Sparky|Sparky look 1]]&lt;br /&gt;
 $1FA2W #[[Patch:Sparky|Sparky look 2]]&lt;br /&gt;
 $1FC0W #[[Patch:Sparky|Sparky look 3]]&lt;br /&gt;
 $1FDEW #[[Patch:Sparky|Sparky look 4]]&lt;br /&gt;
 $1FFCW #[[Patch:Sparky|Sparky look 5]]&lt;br /&gt;
 $201AW #[[Patch:Sparky|Sparky look 6]]&lt;br /&gt;
 $2038W #[[Patch:Sparky|Sparky look 7]]&lt;br /&gt;
 $2056W #[[Patch:Sparky|Sparky look 8]]&lt;br /&gt;
 $2074W #[[Patch:Sparky|Sparky prepare to charge 1]]&lt;br /&gt;
 $2092W #[[Patch:Sparky|Sparky prepare to charge 2]]&lt;br /&gt;
 $20B0W #[[Patch:Sparky|Sparky prepare to charge 3]]&lt;br /&gt;
 $20CEW #[[Patch:Sparky|Sparky prepare to charge 4]]&lt;br /&gt;
 $20ECW #[[Patch:Sparky|Sparky charge 1]]&lt;br /&gt;
 $210AW #[[Patch:Sparky|Sparky charge 2]]&lt;br /&gt;
 $2128W #[[Patch:Sparky|Sparky charge 3]]&lt;br /&gt;
 $2146W #[[Patch:Sparky|Sparky charge 4]]&lt;br /&gt;
 $2164W #[[Patch:Sparky|Sparky turn 1]]&lt;br /&gt;
 $2182W #[[Patch:Sparky|Sparky turn 2]]&lt;br /&gt;
 $21A0W #[[Patch:Sparky|Sparky turn 3]]&lt;br /&gt;
 $21BEW #[[Patch:Sparky|Stunned Sparky]]&lt;br /&gt;
 $21DCW #[[Patch:Little_Ampton|Lil Ampton walk 1]]&lt;br /&gt;
 $21FAW #[[Patch:Little_Ampton|Lil Ampton walk 2]]&lt;br /&gt;
 $2218W #[[Patch:Little_Ampton|Lil Ampton walk 3]]&lt;br /&gt;
 $2236W #[[Patch:Little_Ampton|Lil Ampton walk 4]]&lt;br /&gt;
 $2254W #[[Patch:Little_Ampton|Lil Ampton turn]]&lt;br /&gt;
 $2272W #[[Patch:Little_Ampton|Lil Ampton start pole slide 1]]&lt;br /&gt;
 $2290W #[[Patch:Little_Ampton|Lil Ampton start pole slide 2]]&lt;br /&gt;
 $22AEW #[[Patch:Little_Ampton|Lil Ampton pole slide]]&lt;br /&gt;
 $22CCW #[[Patch:Little_Ampton|Lil Ampton stop pole slide 1]]&lt;br /&gt;
 $22EAW #[[Patch:Little_Ampton|Lil Ampton stop pole slide 2]]&lt;br /&gt;
 $2308W #[[Patch:Little_Ampton|Lil Ampton flip switch 1]]&lt;br /&gt;
 $2326W #[[Patch:Little_Ampton|Lil Ampton flip switch 2]]&lt;br /&gt;
 $2344W #[[Patch:Little_Ampton|Lil Ampton flip switch 3]]&lt;br /&gt;
 $2362W #[[Patch:Little_Ampton|Lil Ampton flip switch 4]]&lt;br /&gt;
 $2380W #[[Patch:Little_Ampton|Lil Ampton flip switch 5]]&lt;br /&gt;
 $239EW #[[Patch:Little_Ampton|Stunned Ampton]]&lt;br /&gt;
 $23BCW #[[Patch:Slicestar|u/d/horizontally Slicestar]]&lt;br /&gt;
 $23DAW #[[Patch:Slicestar|Bouncy Slicestar]]&lt;br /&gt;
 $23F8W #[[Patch:Slicestar|lSlicestar smashed]]&lt;br /&gt;
 $2416W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $2434W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $2452W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $2470W #[[Patch:Shelly|Shelly walk]]&lt;br /&gt;
 $248EW #[[Patch:Shelly|Shelly prepare to jump]]&lt;br /&gt;
 $24ACW #[[Patch:Shelly|Shelly jump]]&lt;br /&gt;
 $24CAW #[[Patch:Shelly|Shelly fall]]&lt;br /&gt;
 $24E8W #[[Patch:Shelly|Shelly fall]]&lt;br /&gt;
 $2506W #[[Patch:Shelly|Shelly smash]]&lt;br /&gt;
 $2524W #[[Patch:Shelly|Shelly smash]]&lt;br /&gt;
 $2542W #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $2560W #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $257EW #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $259CW #[[Patch:Shelly|Shelly smash smoke]]&lt;br /&gt;
 $25BAW #[[Patch:Shelly|Shelly fragments]]&lt;br /&gt;
 $25D8W #[[Patch:Shelly|Shelly fragments]]&lt;br /&gt;
 $2608W #[[Patch:Shikadi Mine|Shikadi mine sit]]&lt;br /&gt;
 $2626W #[[Patch:Shikadi Mine|Shikadi mine move]]&lt;br /&gt;
 $2644W #[[Patch:Shikadi Mine|Shikadi mine change direction]]&lt;br /&gt;
 $2662W #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $2680W #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $269EW #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $26BCW #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $26DAW #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $26F8W #[[Patch:Shikadi Mine|Shikadi mine detonate]]&lt;br /&gt;
 $2716W #[[Patch:Shikadi Mine|Shikadi mine fragments]]&lt;br /&gt;
 $2734W #[[Patch:Robo Red|Robo Red move]]&lt;br /&gt;
 $2752W #[[Patch:Robo Red|Robo Red pause before shooting]]&lt;br /&gt;
 $2770W #[[Patch:Robo Red|Robo Red shoot]]&lt;br /&gt;
 $278EW #[[Patch:Robo Red|Robo Red shoot (Make shot)]]&lt;br /&gt;
 $27ACW #[[Patch:Robo Red|Robo Red&#039;s shot]]&lt;br /&gt;
 $27CAW #[[Patch:Robo Red|Robo Red&#039;s shot]]&lt;br /&gt;
 $27E8W #[[Patch:Robo Red|Robo Red&#039;s shot smash]]&lt;br /&gt;
 $2806W #[[Patch:Robo Red|Robo Red&#039;s shot smash]]&lt;br /&gt;
 $2824W #[[Patch:Spirogrip|Spirogrip pause down]]&lt;br /&gt;
 $2842W #[[Patch:Spirogrip|Spirogrip reverse down (Move up)]]&lt;br /&gt;
 $2860W #[[Patch:Spirogrip|Spirogrip pause left]]&lt;br /&gt;
 $287EW #[[Patch:Spirogrip|Spirogrip reverse left (Move right)]]&lt;br /&gt;
 $289CW #[[Patch:Spirogrip|Spirogrip pause up]]&lt;br /&gt;
 $28BAW #[[Patch:Spirogrip|Spirogrip reverse up]]&lt;br /&gt;
 $28D8W #[[Patch:Spirogrip|Spirogrip pause right]]&lt;br /&gt;
 $28F6W #[[Patch:Spirogrip|Spirogrip reverse right]]&lt;br /&gt;
 $2914W #[[Patch:Spirogrip|Spirogrip spin 1]]&lt;br /&gt;
 $2932W #[[Patch:Spirogrip|Spirogrip spin 2]]&lt;br /&gt;
 $2950W #[[Patch:Spirogrip|Spirogrip spin 3]]&lt;br /&gt;
 $296EW #[[Patch:Spirogrip|Spirogrip spin 4]]&lt;br /&gt;
 $298CW #[[Patch:Spirogrip|Spirogrip spin 5]]&lt;br /&gt;
 $29AAW #[[Patch:Spirogrip|Spirogrip spin 6]]&lt;br /&gt;
 $29C8W #[[Patch:Spirogrip|Spirogrip spin 7]]&lt;br /&gt;
 $29E6W #[[Patch:Spirogrip|Spirogrip spin 8]]&lt;br /&gt;
 $2A04W #[[Patch:Spirogrip|Spirogrip move down]]&lt;br /&gt;
 $2A22W #[[Patch:Spirogrip|Spirogrip move left]]&lt;br /&gt;
 $2A40W #[[Patch:Spirogrip|Spirogrip move up]]&lt;br /&gt;
 $2A5EW #[[Patch:Spirogrip|Spirogrip move right]]&lt;br /&gt;
 $2A7CW #[[Patch:Spindred|Spindred 1]]&lt;br /&gt;
 $2A9AW #[[Patch:Spindred|Spindred 2]]&lt;br /&gt;
 $2AB8W #[[Patch:Spindred|Spindred 3]]&lt;br /&gt;
 $2AD6W #[[Patch:Spindred|Spindred 4]]&lt;br /&gt;
 $2AF4W #[[Patch:Shikadi Master|Shikadi Master stand 1]]&lt;br /&gt;
 $2B12W #[[Patch:Shikadi Master|Shikadi Master stand 2]]&lt;br /&gt;
 $2B30W #[[Patch:Shikadi Master|Shikadi Master stand 3]]&lt;br /&gt;
 $2B4EW #[[Patch:Shikadi Master|Shikadi Master stand 4]]&lt;br /&gt;
 $2B6CW #[[Patch:Shikadi Master|Shikadi Master shoot]]&lt;br /&gt;
 $2B8AW #[[Patch:Shikadi Master|Shikadi Master shoot (Make shot)]]&lt;br /&gt;
 $2BA8W #[[Patch:Shikadi Master|Shikadi Master teleport 1]]&lt;br /&gt;
 $2BC6W #[[Patch:Shikadi Master|Shikadi Master teleport 2 (make groundsparks, vanish)]]&lt;br /&gt;
 $2BE4W #[[Patch:Shikadi Master|Shikadi Master teleport 3 (reappear, fall)]]&lt;br /&gt;
 $2C02W #[[Patch:Shikadi Master|Shikadi Master teleport 4]]&lt;br /&gt;
 $2C20W #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 1]]&lt;br /&gt;
 $2C3EW #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 2]]&lt;br /&gt;
 $2C5CW #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 3]]&lt;br /&gt;
 $2C7AW #[[Patch:Shikadi Master|Shikadi Master&#039;s shot 4]]&lt;br /&gt;
 $2C98W #[[Patch:Shikadi Master|Shikadi Master sparks 1]]&lt;br /&gt;
 $2CB6W #[[Patch:Shikadi Master|Shikadi Master sparks 2]]&lt;br /&gt;
 $2CD4W #[[Patch:Shikadi Master|Shikadi Master sparks 3]]&lt;br /&gt;
 $2CF2W #[[Patch:Shikadi Master|Shikadi Master sparks 4]]&lt;br /&gt;
 $2D10W #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D2EW #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D4CW #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D6AW #[[Patch:Shikadi|Shikadi stand]]&lt;br /&gt;
 $2D88W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2DA6W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2DC4W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2DE2W #[[Patch:Shikadi|Shikadi walk]]&lt;br /&gt;
 $2E00W #[[Patch:Shikadi|Shikadi polezaps]]&lt;br /&gt;
 $2E1EW #[[Patch:Shikadi|Shikadi polezaps]]&lt;br /&gt;
 $2E3CW #[[Patch:Shikadi|Shikadi stunned]]&lt;br /&gt;
 $2E5AW #[[Patch:Shikadi|Shikadi polezap]]&lt;br /&gt;
 $2E78W #[[Patch:Shikadi|Shikadi polezap]]&lt;br /&gt;
 $2E96W #[[Patch:Shockshund|Shocksund sit 1]]&lt;br /&gt;
 $2EB4W #[[Patch:Shockshund|Shocksund sit 2]]&lt;br /&gt;
 $2ED2W #[[Patch:Shockshund|Shocksund bark 1]]&lt;br /&gt;
 $2EF0W #[[Patch:Shockshund|Shocksund bark 2]]&lt;br /&gt;
 $2F0EW #[[Patch:Shockshund|Shocksund walk 1]]&lt;br /&gt;
 $2F2CW #[[Patch:Shockshund|Shocksund walk 2]]&lt;br /&gt;
 $2F4AW #[[Patch:Shockshund|Shocksund walk 3]]&lt;br /&gt;
 $2F68W #[[Patch:Shockshund|Shocksund walk 4]]&lt;br /&gt;
 $2F86W #[[Patch:Shockshund|Shocksund jump]]&lt;br /&gt;
 $2FA4W #[[Patch:Shockshund|Shocksund&#039;s shot 1]]&lt;br /&gt;
 $2FC2W #[[Patch:Shockshund|Shocksund&#039;s shot 2]]&lt;br /&gt;
 $2FE0W #[[Patch:Shockshund|Shocksund&#039;s shot smash 1]]&lt;br /&gt;
 $2FFEW #[[Patch:Shockshund|Shocksund&#039;s shot smash 2]]&lt;br /&gt;
 $301CW #[[Patch:Shockshund|Shocksund stunned]]&lt;br /&gt;
 $303AW #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $3058W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $3076W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $3094W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $30B2W #[[Patch:Sphereful|Sphereful]]&lt;br /&gt;
 $30D2W #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $30F0W #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $310EW #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $312CW #[[Patch:Korath|Korath walking]]&lt;br /&gt;
 $314AW #[[Patch:Korath|Korath sit]]&lt;br /&gt;
 $3168W #[[Patch:Korath|Korath stunned]]&lt;br /&gt;
 $3186W #[[Patch:Q.E.D_(Sprite)|QED\Fuse counter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Null action (Vanish)&lt;br /&gt;
 $089AW #Keen standing&lt;br /&gt;
 $08B8W #[[Patch:Keen bored|Keen look up (Bored)]]&lt;br /&gt;
 $08D6W #[[Patch:Keen bored|Keen bored, hands on hips, looks at player]]&lt;br /&gt;
 $08F4W #[[Patch:Keen bored|Keen hands on hips, blinks]]&lt;br /&gt;
 $0912W #[[Patch:Keen bored|Keen hands on hips, looks at player 2]]&lt;br /&gt;
 $0930W #[[Patch:Keen bored|Keen hands on hips, blinks 2]]&lt;br /&gt;
 $094EW #[[Patch:Keen bored|Keen hands on hips, looks at player 3]]&lt;br /&gt;
 $096CW #[[Patch:Keen bored|Keen shrugs]]&lt;br /&gt;
 $098AW #[[Patch:Keen bored|Keen gets out book 1]]&lt;br /&gt;
 $09A8W #[[Patch:Keen bored|Keen gets out book 2]]&lt;br /&gt;
 $09C6W #[[Patch:Keen bored|Keen gets out book 3]]&lt;br /&gt;
 $09E4W #[[Patch:Keen bored|Keen gets out book 4]]&lt;br /&gt;
 $0A02W #[[Patch:Keen bored|Keen reads book]]&lt;br /&gt;
 $0A20W #[[Patch:Keen bored|Keen bored, looks up from book 1]]&lt;br /&gt;
 $0A3EW #[[Patch:Keen bored|Keen bored, looks up from book 2]]&lt;br /&gt;
 $0A5CW #[[Patch:Keen bored|Keen stops reading book 1]]&lt;br /&gt;
 $0A7AW #[[Patch:Keen bored|Keen stops reading book 2]]&lt;br /&gt;
 $0A98W #[[Patch:Keen bored|Keen stops reading book 3]]&lt;br /&gt;
 $0AB6W #[[Patch:Keen look|Keen start looking up]]&lt;br /&gt;
 $0AD4W #[[Patch:Keen look|Keen looking up]]&lt;br /&gt;
 $0AF2W #[[Patch:Keen look|Keen start looking down]]&lt;br /&gt;
 $0B10W #[[Patch:Keen look|Keen looking down 1]]&lt;br /&gt;
 $0B2EW #[[Patch:Keen look|Keen looking down 2]]&lt;br /&gt;
 $0B4CW #[[Patch:Keen look|Keen stop looking down]]&lt;br /&gt;
 $0B6AW #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $0B88W #[[Patch:Keen dying (Keen 6)|Defunct dead action]]&lt;br /&gt;
 $0BA6W #[[Patch:Keen dying (Keen 6)|Keen dies clutched (Exits level if offscreen.)]]&lt;br /&gt;
 $0BC4W #[[Patch:Keen dying (Keen 6)|Keen dies sprawled (Exits level if offscreen.)]]&lt;br /&gt;
 $0BE2W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally 1]]&lt;br /&gt;
 $0C00W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally 2]]&lt;br /&gt;
 $0C1EW #[[Patch:Keen shooting (Galaxy)|Keen shoots up 1]]&lt;br /&gt;
 $0C3CW #[[Patch:Keen shooting (Galaxy)|Keen shoots up 2]]&lt;br /&gt;
 $0C5AW #Keen places gem&lt;br /&gt;
 $0C78W #Keen places gem&lt;br /&gt;
 $0C96W #Keen places gem and opens door&lt;br /&gt;
 $0CB4W #Keen adjust position&lt;br /&gt;
 $0CD2W #[[Patch:Keen entering doors|Keen walks into door 1]]&lt;br /&gt;
 $0CF0W #[[Patch:Keen entering doors|Keen walks into door 2]]&lt;br /&gt;
 $0D0EW #[[Patch:Keen entering doors|Keen walks into door 3]]&lt;br /&gt;
 $0D2CW #[[Patch:Keen entering doors|Keen walks into door 4]]&lt;br /&gt;
 $0D4AW #[[Patch:Keen entering doors|Keen walks into door 5]]&lt;br /&gt;
 $0D68W #[[Patch:Keen on poles|Keen sit on a pole]]&lt;br /&gt;
 $0D86W #[[Patch:Keen on poles|Keen moving up a pole]]&lt;br /&gt;
 $0DA4W #[[Patch:Keen on poles|Keen moving up a pole]]&lt;br /&gt;
 $0DC2W #[[Patch:Keen on poles|Keen moving up a pole]]&lt;br /&gt;
 $0DE0W #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0DFEW #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0E1CW #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0E3AW #[[Patch:Keen on poles|Keen moving down a pole]]&lt;br /&gt;
 $0E58W #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally on a pole 1]]&lt;br /&gt;
 $0E76W #[[Patch:Keen shooting (Galaxy)|Keen shoot horizontally on a pole 2]]&lt;br /&gt;
 $0E94W #[[Patch:Keen shooting (Galaxy)|Keen shoot up on a pole 1]]&lt;br /&gt;
 $0EB2W #[[Patch:Keen shooting (Galaxy)|Keen shoot up on a pole 2]]&lt;br /&gt;
 $0ED0W #[[Patch:Keen shooting (Galaxy)|Keen shoot down on a pole 1]]&lt;br /&gt;
 $0EEEW #[[Patch:Keen shooting (Galaxy)|Keen shoot down on a pole 2]]&lt;br /&gt;
 $0F0CW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F2AW #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F48W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F66W #[[Patch:Keen walking (Galaxy)|Keen walking]]&lt;br /&gt;
 $0F84W #[[Patch:Keen pogoing (Galaxy)|Keen start pogoing]]&lt;br /&gt;
 $0FA2W #[[Patch:Keen pogoing (Galaxy)|Keen pogoing]]&lt;br /&gt;
 $0FC0W #[[Patch:Keen pogoing (Galaxy)|Keen pogo bouncing]]&lt;br /&gt;
 $0FDEW #[[Patch:Keen jumping (Galaxy)|Keen jumping 1]]&lt;br /&gt;
 $0FFCW #[[Patch:Keen jumping (Galaxy)|Keen jumping 2]]&lt;br /&gt;
 $101AW #[[Patch:Keen jumping (Galaxy)|Keen falling 1]]&lt;br /&gt;
 $1038W #[[Patch:Keen jumping (Galaxy)|Keen falling 2]]&lt;br /&gt;
 $1056W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally in air 1]]&lt;br /&gt;
 $1074W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally in air 2]]&lt;br /&gt;
 $1092W #[[Patch:Keen shooting (Galaxy)|Keen shoots horizontally in air 3]]&lt;br /&gt;
 $10B0W #[[Patch:Keen shooting (Galaxy)|Keen shoots up in air 1]]&lt;br /&gt;
 $10CEW #[[Patch:Keen shooting (Galaxy)|Keen shoots up in air 2]]&lt;br /&gt;
 $10ECW #[[Patch:Keen shooting (Galaxy)|Keen shoots up in air 3]]&lt;br /&gt;
 $110AW #[[Patch:Keen shooting (Galaxy)|Keen shoots down in air 1]]&lt;br /&gt;
 $1128W #[[Patch:Keen shooting (Galaxy)|Keen shoots down in air 2]]&lt;br /&gt;
 $1146W #[[Patch:Keen shooting (Galaxy)|Keen shoots down in air 3]]&lt;br /&gt;
 $1164W #[[Patch:Keen grabs ledge|Keen gripping ledge start]]&lt;br /&gt;
 $1182W #[[Patch:Keen grabs ledge|Keen gripping ledge]]&lt;br /&gt;
 $11A0W #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $11BEW #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $11DCW #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $11FAW #[[Patch:Keen grabs ledge|Keen pulls himself up from ledges]]&lt;br /&gt;
 $1218W #[[Patch:Keen grabs ledge|Keen standing after ledgegrip]]&lt;br /&gt;
 $130AW #[[Patch:Keen_on_map_(Galaxy)|Map Keen stand]]&lt;br /&gt;
 $1328W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $1346W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $1364W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $1382W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $13A0W #[[Patch:Keen_on_map_(Galaxy)|Map Keen waves]]&lt;br /&gt;
 $13BEW #[[Patch:Keen_on_map_(Galaxy)|Map Keen moving]]&lt;br /&gt;
 $13F4W #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $1412W #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $1430W #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $144EW #[[Patch:Flags|Keen K flag waving]]&lt;br /&gt;
 $146CW #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $148AW #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $14A8W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $14C6W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $14E4W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $1502W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $1520W #[[Patch:Flags|Keen K flag to holder]]&lt;br /&gt;
 $153EW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $155CW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $157AW #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $1598W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot]]&lt;br /&gt;
 $15B6W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot hits]]&lt;br /&gt;
 $15D4W #[[Patch:Keen&#039;s_shot_(Galaxy)|Keen&#039;s shot hits]]&lt;br /&gt;
 $15F2W #[[Patch:Keygem_door|Door open 1]]&lt;br /&gt;
 $1610W #[[Patch:Keygem_door|Door open 2]]&lt;br /&gt;
 $162EW #[[Patch:Keygem_door|Door open 3]]&lt;br /&gt;
 $1868W #[[Patch:Keen stunned (Galaxy)|Keen stunned]]&lt;br /&gt;
 $196AW #[[Patch:Items|Items 1]]&lt;br /&gt;
 $1988W #[[Patch:Items|Items 2]]&lt;br /&gt;
 $19A6W #[[Patch:Items|Blooglet Items 1]]&lt;br /&gt;
 $19C4W #[[Patch:Items|Blooglet Items 2]]&lt;br /&gt;
 $19E2W #[[Patch:Items|Items got]]&lt;br /&gt;
 $1A00W #[[Patch:Items|Viva got 1]]&lt;br /&gt;
 $1A1EW #[[Patch:Items|Viva got 2]]&lt;br /&gt;
 $1A3CW #[[Patch:Items|Viva got 3]]&lt;br /&gt;
 $1A5AW #[[Patch:Items|Viva got 4]]&lt;br /&gt;
 $1A90W #[[Patch:Grabbiter|Grabbiter hungry 1]]&lt;br /&gt;
 $1AAEW #[[Patch:Grabbiter|Grabbiter hungry 2]]&lt;br /&gt;
 $1ACCW #[[Patch:Grabbiter|Grabbiter napping 1]]&lt;br /&gt;
 $1AEAW #[[Patch:Grabbiter|Grabbiter napping 2]]&lt;br /&gt;
 $1B08W #[[Patch:Bloogstar Rocket|Rocket sit]]&lt;br /&gt;
 $1B26W #[[Patch:Bloogstar Rocket|Rocket flying]]&lt;br /&gt;
 $1B44W #[[Patch:Bloogstar Rocket|Rocket flying]]&lt;br /&gt;
 $1B62W #[[Patch:Bloogstar Rocket|Keen taking Rocket trip]]&lt;br /&gt;
 $1B80W #[[Patch:Keen 6 map items|Climbable cliff (Invisible)]]&lt;br /&gt;
 $1B9EW #[[Patch:Keen 6 map items|Keen throw rope]]&lt;br /&gt;
 $1BBCW #[[Patch:Keen 6 map items|Keen throw rope]]&lt;br /&gt;
 $1BDAW #[[Patch:Keen 6 map items|Keen climb rope]]&lt;br /&gt;
 $1BF8W #[[Patch:Keen 6 map items|Keen climb rope]]&lt;br /&gt;
 $1C16W #[[Patch:Keen 6 map items|Rope on map]]&lt;br /&gt;
 $1C34W #[[Patch:Keen 6 map items|Rope being thrown]]&lt;br /&gt;
 $1C52W #[[Patch:Satellite|Satellite dropoff point]]&lt;br /&gt;
 $1C70W #[[Patch:Satellite|Keen hang from satellite]]&lt;br /&gt;
 $1C8EW #[[Patch:Satellite|Satellite 1]]&lt;br /&gt;
 $1CACW #[[Patch:Satellite|Satellite 2]]&lt;br /&gt;
 $1CCAW #[[Patch:Satellite|Satellite 3]]&lt;br /&gt;
 $1CE8W #[[Patch:Satellite|Satellite 4]]&lt;br /&gt;
 $1D06W #[[Patch:Keen 6 map items|Sandwich]]&lt;br /&gt;
 $1D24W #[[Patch:Keen 6 map items|Rope]]&lt;br /&gt;
 $1D42W #[[Patch:Keen 6 map items|Card]]&lt;br /&gt;
 $1D60W #[[Patch:Molly|Molly 1]]&lt;br /&gt;
 $1D7EW #[[Patch:Molly|Molly 2]]&lt;br /&gt;
 $1D9CW #[[Patch:Molly|Molly 3]]&lt;br /&gt;
 $1DBAW #[[Patch:Molly|Molly 4]]&lt;br /&gt;
 $1DD8W #[[Patch:Platform (Keen 6)|u/d/horizontally airboard]]&lt;br /&gt;
 $1DF6W #[[Patch:Platform (Keen 6)|Drop/rise airboard sit]]&lt;br /&gt;
 $1E14W #[[Patch:Platform (Keen 6)|Drop/rise airboard fall]]&lt;br /&gt;
 $1E32W #[[Patch:Platform (Keen 6)|Drop/rise airboard rise]]&lt;br /&gt;
 $1E50W #[[Patch:Platform (Keen 6)|Sit airboard]]&lt;br /&gt;
 $1E6EW #[[Patch:Platform (Keen 6)|Info path airboard]]&lt;br /&gt;
 $1E8CW #[[Patch:Platform (Keen 6)|Sneaky Airboard sit]]&lt;br /&gt;
 $1EAAW #[[Patch:Platform (Keen 6)|Sneaky Airboard flee]]&lt;br /&gt;
 $1EC8W #[[Patch:Platform (Keen 6)|Sneaky Airboard return]]&lt;br /&gt;
 $1EE6W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F04W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F22W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F40W #[[Patch:Bloog|Bloog walking]]&lt;br /&gt;
 $1F5EW #[[Patch:Bloog|Bloog stunned]]&lt;br /&gt;
 $1F7CW #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1F9AW #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1FB8W #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1FD6W #[[Patch:Blooguard|Blooguard walking]]&lt;br /&gt;
 $1FF4W #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $2012W #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $2030W #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $204EW #[[Patch:Blooguard|Blooguard clubbing]]&lt;br /&gt;
 $206CW #[[Patch:Blooguard|Blooguard stunned]]&lt;br /&gt;
 $208AW #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $20A8W #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $20C6W #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $20E4W #[[Patch:Blooglet|Red Blooglet running]]&lt;br /&gt;
 $2102W #[[Patch:Blooglet|Red Blooglet stunned]]&lt;br /&gt;
 $2120W #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $213EW #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $215CW #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $217AW #[[Patch:Blooglet|Yellow Blooglet running]]&lt;br /&gt;
 $2198W #[[Patch:Blooglet|Yellow Blooglet stunned]]&lt;br /&gt;
 $21B6W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $21D4W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $21F2W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $2210W #[[Patch:Blooglet|Blue Blooglet running]]&lt;br /&gt;
 $222EW #[[Patch:Blooglet|Blue Blooglet stunned]]&lt;br /&gt;
 $224CW #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $226AW #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $2288W #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $22A6W #[[Patch:Blooglet|Green Blooglet running]]&lt;br /&gt;
 $22C4W #[[Patch:Blooglet|Green Blooglet stunned]]&lt;br /&gt;
 $2460W #[[Patch:Nospike|Nospike sit]]&lt;br /&gt;
 $247EW #[[Patch:Nospike|Nospike walk 1]]&lt;br /&gt;
 $249CW #[[Patch:Nospike|Nospike walk 2]]&lt;br /&gt;
 $24BAW #[[Patch:Nospike|Nospike walk 3]]&lt;br /&gt;
 $24D8W #[[Patch:Nospike|Nospike walk 4]]&lt;br /&gt;
 $24F6W #[[Patch:Nospike|Nospike charge 1]]&lt;br /&gt;
 $2514W #[[Patch:Nospike|Nospike charge 2]]&lt;br /&gt;
 $2532W #[[Patch:Nospike|Nospike charge 3]]&lt;br /&gt;
 $2550W #[[Patch:Nospike|Nospike charge 4]]&lt;br /&gt;
 $256EW #[[Patch:Nospike|Nospike hanging in air]]&lt;br /&gt;
 $258CW #[[Patch:Nospike|Nospike make a &#039;?&#039;]]&lt;br /&gt;
 $25AAW #[[Patch:Nospike|Nospike with &#039;?&#039;]]&lt;br /&gt;
 $25C8W #[[Patch:Nospike|Nospike fall (Will not hit ground unless it has Nospike property)]]&lt;br /&gt;
 $25E6W #[[Patch:Nospike|Stunned Nospike]]&lt;br /&gt;
 $2604W #[[Patch:Gik|Gik walking]]&lt;br /&gt;
 $2622W #[[Patch:Gik|Gik walking]]&lt;br /&gt;
 $2640W #[[Patch:Gik|Gik walking]]&lt;br /&gt;
 $265EW #[[Patch:Gik|Gik jumping]]&lt;br /&gt;
 $267CW #[[Patch:Gik|Gik slide 1]]&lt;br /&gt;
 $269AW #[[Patch:Gik|Gik slide 2]]&lt;br /&gt;
 $26B8W #[[Patch:Gik|Gik recover]]&lt;br /&gt;
 $26F6W #[[Patch:Enemy shooter (Keen 6)|Enemy gun wait]]&lt;br /&gt;
 $2714W #[[Patch:Enemy shooter (Keen 6)|Enemy gun shoot]]&lt;br /&gt;
 $2732W #[[Patch:Enemy shooter (Keen 6)|Pink bullet 1]]&lt;br /&gt;
 $2750W #[[Patch:Enemy shooter (Keen 6)|Pink bullet 2]]&lt;br /&gt;
 $276EW #[[Patch:Enemy shooter (Keen 6)|Pink bullet 3]]&lt;br /&gt;
 $278CW #[[Patch:Enemy shooter (Keen 6)|Pink bullet 4]]&lt;br /&gt;
 $27AAW #[[Patch:Enemy shooter (Keen 6)|Pink bullet smash 1]]&lt;br /&gt;
 $27C8W #[[Patch:Enemy shooter (Keen 6)|Pink bullet smash 2]]&lt;br /&gt;
 $27E6W #[[Patch:Orbatrix|Orbatrix float 1]]&lt;br /&gt;
 $2804W #[[Patch:Orbatrix|Orbatrix float 2]]&lt;br /&gt;
 $2822W #[[Patch:Orbatrix|Orbatrix curls 1]]&lt;br /&gt;
 $2840W #[[Patch:Orbatrix|Orbatrix curls 2]]&lt;br /&gt;
 $285EW #[[Patch:Orbatrix|Orbatrix curls 3]]&lt;br /&gt;
 $287CW #[[Patch:Orbatrix|Orbatrix uncurls 1]]&lt;br /&gt;
 $289AW #[[Patch:Orbatrix|Orbatrix uncurls 2]]&lt;br /&gt;
 $28B8W #[[Patch:Orbatrix|Orbatrix uncurls 3]]&lt;br /&gt;
 $28D6W #[[Patch:Orbatrix|Orbatrix uncurls 4]]&lt;br /&gt;
 $28F4W #[[Patch:Orbatrix|Orbatrix uncurls 5]]&lt;br /&gt;
 $2912W #[[Patch:Orbatrix|Orbatrix uncurls 6]]&lt;br /&gt;
 $2930W #[[Patch:Orbatrix|Orbatrix bounding 1]]&lt;br /&gt;
 $294EW #[[Patch:Orbatrix|Orbatrix bounding 2]]&lt;br /&gt;
 $296CW #[[Patch:Orbatrix|Orbatrix bounding 3]]&lt;br /&gt;
 $298AW #[[Patch:Orbatrix|Orbatrix bounding 4]]&lt;br /&gt;
 $29A8W #[[Patch:Bip|Bip standing]]&lt;br /&gt;
 $29C6W #[[Patch:Bip|Bip walking 1]]&lt;br /&gt;
 $29E4W #[[Patch:Bip|Bip walking 2]]&lt;br /&gt;
 $2A02W #[[Patch:Bip|Bip walking 3]]&lt;br /&gt;
 $2A20W #[[Patch:Bip|Bip walking 4]]&lt;br /&gt;
 $2A3EW #[[Patch:Bip|Bip squished]]&lt;br /&gt;
 $2A5CW #[[Patch:Bipship|Bipship moving horizontally]]&lt;br /&gt;
 $2A7AW #[[Patch:Bipship|Bipship&#039;s shot]]&lt;br /&gt;
 $2A98W #[[Patch:Bipship|Bipship turning 1]]&lt;br /&gt;
 $2AB6W #[[Patch:Bipship|Bipship turning 2]]&lt;br /&gt;
 $2AD4W #[[Patch:Bipship|Bipship turning 3]]&lt;br /&gt;
 $2AF2W #[[Patch:Bipship|Bipship turning 4]]&lt;br /&gt;
 $2B10W #[[Patch:Bipship|Bipship falling]]&lt;br /&gt;
 $2B2EW #[[Patch:Bipship|Bipship crashing]]&lt;br /&gt;
 $2B4CW #[[Patch:Bipship|Bipship wreckage]]&lt;br /&gt;
 $2B6AW #[[Patch:Bipship|Bipship smoke 1]]&lt;br /&gt;
 $2B88W #[[Patch:Bipship|Bipship smoke 2]]&lt;br /&gt;
 $2BA6W #[[Patch:Flect|Flect standing]]&lt;br /&gt;
 $2BC4W #[[Patch:Flect|Flect turning]]&lt;br /&gt;
 $2BE2W #[[Patch:Flect|Flect walking 1]]&lt;br /&gt;
 $2C00W #[[Patch:Flect|Flect walking 2]]&lt;br /&gt;
 $2C1EW #[[Patch:Flect|Flect walking 3]]&lt;br /&gt;
 $2C3CW #[[Patch:Flect|Flect walking 4]]&lt;br /&gt;
 $2C5AW #[[Patch:Flect|Flect stunned]]&lt;br /&gt;
 $2C78W #[[Patch:Fleex|Fleex walking 1]]&lt;br /&gt;
 $2C96W #[[Patch:Fleex|Fleex walking 2]]&lt;br /&gt;
 $2CB4W #[[Patch:Fleex|Fleex chasing 1]]&lt;br /&gt;
 $2CD2W #[[Patch:Fleex|Fleex chasing 2]]&lt;br /&gt;
 $2CF0W #[[Patch:Fleex|Fleex chasing 3]]&lt;br /&gt;
 $2D0EW #[[Patch:Fleex|Fleex chasing 4]]&lt;br /&gt;
 $2D2CW #[[Patch:Fleex|Fleex looking 1]]&lt;br /&gt;
 $2D4AW #[[Patch:Fleex|Fleex looking 2]]&lt;br /&gt;
 $2D68W #[[Patch:Fleex|Fleex stunned]]&lt;br /&gt;
 $2D86W #[[Patch:Bobba|Bobba jump]]&lt;br /&gt;
 $2DA4W #[[Patch:Bobba|Bobba fall]]&lt;br /&gt;
 $2DC2W #[[Patch:Bobba|Bobba land]]&lt;br /&gt;
 $2DE0W #[[Patch:Bobba|Bobba shoot]]&lt;br /&gt;
 $2DFEW #[[Patch:Bobba|Bobba eye twinkle 1]]&lt;br /&gt;
 $2E1CW #[[Patch:Bobba|Bobba eye twinkle 2]]&lt;br /&gt;
 $2E3AW #[[Patch:Bobba|Bobba eye twinkle 3]]&lt;br /&gt;
 $2E58W #[[Patch:Bobba|Bobba eye twinkle 4]]&lt;br /&gt;
 $2E76W #[[Patch:Bobba|Bobba fireball 1]]&lt;br /&gt;
 $2E94W #[[Patch:Bobba|Bobba fireball 2]]&lt;br /&gt;
 $2EB2W #[[Patch:Bobba|Bobba fireball 3]]&lt;br /&gt;
 $2ED0W #[[Patch:Bobba|Bobba fireball 4]]&lt;br /&gt;
 $2EEEW #[[Patch:Bobba|Bobba fireball smash 1]]&lt;br /&gt;
 $2F0CW #[[Patch:Bobba|Bobba fireball smash 2]]&lt;br /&gt;
 $2F2AW #[[Patch:Bobba|Bobba fireball smash 3]]&lt;br /&gt;
 $2F48W #[[Patch:Babobba|Babobba jump]]&lt;br /&gt;
 $2F66W #[[Patch:Babobba|Babobba fall]]&lt;br /&gt;
 $2F84W #[[Patch:Babobba|Babobba land]]&lt;br /&gt;
 $2FA2W #[[Patch:Babobba|Babobba shoot]]&lt;br /&gt;
 $2FC0W #[[Patch:Babobba|Babobba stunned]]&lt;br /&gt;
 $2FDEW #[[Patch:Babobba|Babobba stunned and landed]]&lt;br /&gt;
 $2FFCW #[[Patch:Babobba|Babobba napping 1]]&lt;br /&gt;
 $301AW #[[Patch:Babobba|Babobba napping 2]]&lt;br /&gt;
 $3038W #[[Patch:Babobba|Babobba napping 3]]&lt;br /&gt;
 $3056W #[[Patch:Babobba|Babobba napping 4 (Asleep)]]&lt;br /&gt;
 $3074W #[[Patch:Babobba|Babobba napping 5]]&lt;br /&gt;
 $3092W #[[Patch:Babobba|Babobba napping 6]]&lt;br /&gt;
 $30B0W #[[Patch:Babobba|Babobba napping 7 (Wake up)]]&lt;br /&gt;
 $30CEW #[[Patch:Babobba|Babobba cinder tossed]]&lt;br /&gt;
 $30ECW #[[Patch:Babobba|Babobba cinder landed 1]]&lt;br /&gt;
 $310AW #[[Patch:Babobba|Babobba cinder landed 2]]&lt;br /&gt;
 $3128W #[[Patch:Babobba|Babobba cinder dying 1]]&lt;br /&gt;
 $3146W #[[Patch:Babobba|Babobba cinder dying 2]]&lt;br /&gt;
 $3164W #[[Patch:Blorb|Blorb 1]]&lt;br /&gt;
 $3182W #[[Patch:Blorb|Blorb 2]]&lt;br /&gt;
 $31A0W #[[Patch:Blorb|Blorb 3]]&lt;br /&gt;
 $31BEW #[[Patch:Ceilick|Ceilick waiting]]&lt;br /&gt;
 $31DCW #[[Patch:Ceilick|Ceilick attack 1]]&lt;br /&gt;
 $31FAW #[[Patch:Ceilick|Ceilick attack 2]]&lt;br /&gt;
 $3218W #[[Patch:Ceilick|Ceilick attack 3]]&lt;br /&gt;
 $3236W #[[Patch:Ceilick|Ceilick attack 4]]&lt;br /&gt;
 $3254W #[[Patch:Ceilick|Ceilick attack 5]]&lt;br /&gt;
 $3272W #[[Patch:Ceilick|Ceilick attack 6]]&lt;br /&gt;
 $3290W #[[Patch:Ceilick|Ceilick attack 7]]&lt;br /&gt;
 $32AEW #[[Patch:Ceilick|Ceilick attack 8]]&lt;br /&gt;
 $32CCW #[[Patch:Ceilick|Ceilick attack 9]]&lt;br /&gt;
 $32EAW #[[Patch:Ceilick|Ceilick attack 10]]&lt;br /&gt;
 $3308W #[[Patch:Ceilick|Ceilick attack, hide]]&lt;br /&gt;
 $3326W #[[Patch:Ceilick|Ceilick laugh  1]]&lt;br /&gt;
 $3344W #[[Patch:Ceilick|Ceilick laugh  2]]&lt;br /&gt;
 $3362W #[[Patch:Ceilick|Ceilick laugh  3]]&lt;br /&gt;
 $3380W #[[Patch:Ceilick|Ceilick laugh  4]]&lt;br /&gt;
 $339EW #[[Patch:Ceilick|Ceilick laugh  5]]&lt;br /&gt;
 $33BCW #[[Patch:Ceilick|Ceilick laugh  6]]&lt;br /&gt;
 $33DAW #[[Patch:Ceilick|Ceilick laugh  7]]&lt;br /&gt;
 $33F8W #[[Patch:Ceilick|Ceilick laugh  8]]&lt;br /&gt;
 $3416W #[[Patch:Ceilick|Ceilick laugh  9]]&lt;br /&gt;
 $3434W #[[Patch:Ceilick|Ceilick stunned]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen Dreams sprite actions ===&lt;br /&gt;
&lt;br /&gt;
 $0000W #Nothing at all&lt;br /&gt;
 $0BB4W #???&lt;br /&gt;
 $0BD2W #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown 1]]&lt;br /&gt;
 $0BF0W #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown 2]]&lt;br /&gt;
 $0C0EW #[[Patch:Boobus Bombs|Boobus bombs thrown 1]]&lt;br /&gt;
 $0C2CW #[[Patch:Boobus Bombs|Boobus bombs thrown 2]]&lt;br /&gt;
 $0C4AW #[[Patch:Boobus Bombs|Boobus Bomb explode 1]]&lt;br /&gt;
 $0C68W #[[Patch:Boobus Bombs|Boobus Bomb explode 2]]&lt;br /&gt;
 $0C86W #[[Patch:Boobus Bombs|Boobus Bomb explode 3]]&lt;br /&gt;
 $0CA4W #[[Patch:Boobus Bombs|Boobus Bomb explode 4]]&lt;br /&gt;
 $0CC2W #[[Patch:Boobus Bombs|Boobus Bomb explode 5]]&lt;br /&gt;
 $0CE0W #[[Patch:Boobus Bombs|Boobus Bomb explode 6]]&lt;br /&gt;
 $0CFEW #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown, blinking 1]]&lt;br /&gt;
 $0D1CW #[[Patch:Keen&#039;s shot (Dreams)|Flower power thrown, blinking 2 (Invisible)]]&lt;br /&gt;
 $0D3AW #[[Patch:Keen on map (Dreams)|Map Keen stand]]&lt;br /&gt;
 $0D58W #[[Patch:Keen on map (Dreams)|Map Keen wave 1]]&lt;br /&gt;
 $0D76W #[[Patch:Keen on map (Dreams)|Map Keen wave 2]]&lt;br /&gt;
 $0D94W #[[Patch:Keen on map (Dreams)|Map Keen wave 3]]&lt;br /&gt;
 $0DB2W #[[Patch:Keen on map (Dreams)|Map Keen wave 4]]&lt;br /&gt;
 $0DD0W #[[Patch:Keen on map (Dreams)|Map Keen wave 5 (Goto nap)]]&lt;br /&gt;
 $0DEEW #[[Patch:Keen on map (Dreams)|Map Keen nap 1]]&lt;br /&gt;
 $0E0CW #[[Patch:Keen on map (Dreams)|Map Keen nap 2]]&lt;br /&gt;
 $0E2AW #[[Patch:Keen on map (Dreams)|Map Keen nap 3 (Keep napping)]]&lt;br /&gt;
 $0E48W #[[Patch:Keen on map (Dreams)|Map Keen moving]]&lt;br /&gt;
 $0E7EW #[[Patch:Keen bored|Zzzz 1]]&lt;br /&gt;
 $0E9CW #[[Patch:Keen bored|Zzzz 2]]&lt;br /&gt;
 $0EBAW #[[Patch:Keen bored|Zzzz 3]]&lt;br /&gt;
 $0ED8W [[Patch:Keen walking (Dreams)|#Keen stand]]&lt;br /&gt;
 $0EF6W #[[Patch:Keen bored|Keen bored (Look up)]]&lt;br /&gt;
 $0F14W #[[Patch:Keen bored|Keen bored (Yawn) 1]]&lt;br /&gt;
 $0F32W #[[Patch:Keen bored|Keen bored (Yawn) 2]]&lt;br /&gt;
 $0F50W #[[Patch:Keen bored|Keen bored (Yawn) 3]]&lt;br /&gt;
 $0F6EW #[[Patch:Keen bored|Keen bored (Yawn) 4]]&lt;br /&gt;
 $0F8CW #[[Patch:Keen bored|Keen bored (Blink-shrug) 1]]&lt;br /&gt;
 $0FAAW #[[Patch:Keen bored|Keen bored (Blink-shrug) 2]]&lt;br /&gt;
 $0FC8W #[[Patch:Keen bored|Keen bored (Blink-shrug) 3]]&lt;br /&gt;
 $0FE6W #[[Patch:Keen bored|Keen bored (Blink-shrug) 4]]&lt;br /&gt;
 $1004W #[[Patch:Keen bored|Keen bored (Blink-shrug) 5]]&lt;br /&gt;
 $1022W #[[Patch:Keen bored|Keen bored (Blink-shrug) 6]]&lt;br /&gt;
 $1040W #[[Patch:Keen bored|Keen bored (Nap) 1]]&lt;br /&gt;
 $105EW #[[Patch:Keen bored|Keen bored (Nap) 2]]&lt;br /&gt;
 $107CW #[[Patch:Keen bored|Keen bored (Nap) 3]]&lt;br /&gt;
 $109AW #[[Patch:Keen bored|Keen bored (Nap) 4]]&lt;br /&gt;
 $10B8W #[[Patch:Keen bored|Keen wake up]]&lt;br /&gt;
 $10D6W #[[Patch:Keen dying (Dreams)|Keen die 1]]&lt;br /&gt;
 $10F4W #[[Patch:Keen dying (Dreams)|Keen die 2]]&lt;br /&gt;
 $1112W #[[Patch:Keen dying (Dreams)|Keen die 3]]&lt;br /&gt;
 $1130W #[[Patch:Keen look|Keen look up]]&lt;br /&gt;
 $114EW #[[Patch:Keen look|Keen crouch]]&lt;br /&gt;
 $116CW #[[Patch:Keen look|Keen jump down from one-way-up platforms (Unused)]]&lt;br /&gt;
 $118AW #[[Patch:Keen on poles|Keen sit on pole]]&lt;br /&gt;
 $11A8W #[[Patch:Keen on poles|Keen climb up pole 1]]&lt;br /&gt;
 $11C6W #[[Patch:Keen on poles|Keen climb up pole 2]]&lt;br /&gt;
 $11E4W #[[Patch:Keen on poles|Keen climb up pole 3]]&lt;br /&gt;
 $1202W #[[Patch:Keen on poles|Keen climb down pole 1]]&lt;br /&gt;
 $1220W #[[Patch:Keen on poles|Keen climb down pole 2]]&lt;br /&gt;
 $123EW #[[Patch:Keen on poles|Keen climb down pole 3]]&lt;br /&gt;
 $125CW #[[Patch:Keen on poles|Keen climb down pole 4]]&lt;br /&gt;
 $127AW #[[Patch:Keen shooting (Dreams)|Keen pole-throw horizontally 1]]&lt;br /&gt;
 $1298W #[[Patch:Keen shooting (Dreams)|Keen pole-throw horizontally 2]]&lt;br /&gt;
 $12B6W #[[Patch:Keen shooting (Dreams)|Keen pole-throw horizontally 3]]&lt;br /&gt;
 $12D4W #[[Patch:Keen shooting (Dreams)|Keen pole-throw up 1]]&lt;br /&gt;
 $12F2W #[[Patch:Keen shooting (Dreams)|Keen pole-throw up 2]]&lt;br /&gt;
 $1310W #[[Patch:Keen shooting (Dreams)|Keen pole-throw up 3]]&lt;br /&gt;
 $132EW #[[Patch:Keen shooting (Dreams)|Keen pole-throw down 1]]&lt;br /&gt;
 $134CW #[[Patch:Keen shooting (Dreams)|Keen pole-throw down 2]]&lt;br /&gt;
 $136AW #[[Patch:Keen shooting (Dreams)|Keen pole-throw down 3]]&lt;br /&gt;
 $1388W #[[Patch:Keen walking (Dreams)|Keen walk 1]]&lt;br /&gt;
 $13A6W #[[Patch:Keen walking (Dreams)|Keen walk 2]]&lt;br /&gt;
 $13C4W #[[Patch:Keen walking (Dreams)|Keen walk 3]]&lt;br /&gt;
 $13E2W #[[Patch:Keen walking (Dreams)|Keen walk 4]]&lt;br /&gt;
 $1400W #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 1]]&lt;br /&gt;
 $141EW #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 2]]&lt;br /&gt;
 $143CW #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 3]]&lt;br /&gt;
 $145AW #[[Patch:Keen shooting (Dreams)|Keen throw horizontally 4]]&lt;br /&gt;
 $1478W #[[Patch:Keen shooting (Dreams)|Keen throw up 1]]&lt;br /&gt;
 $1496W #[[Patch:Keen shooting (Dreams)|Keen throw up 2]]&lt;br /&gt;
 $14B4W #[[Patch:Keen shooting (Dreams)|Keen throw up 3]]&lt;br /&gt;
 $14D2W #[[Patch:Keen jumping (Dreams)|Keen jump vertically 1]]&lt;br /&gt;
 $14F0W #[[Patch:Keen jumping (Dreams)|Keen jump vertically 2]]&lt;br /&gt;
 $150EW #[[Patch:Keen jumping (Dreams)|Keen jump vertically 3]]&lt;br /&gt;
 $152CW #[[Patch:Keen jumping (Dreams)|Keen jump horizontally 1]]&lt;br /&gt;
 $154AW #[[Patch:Keen jumping (Dreams)|Keen jump horizontally 2]]&lt;br /&gt;
 $1568W #[[Patch:Keen jumping (Dreams)|Keen jump horizontally 3]]&lt;br /&gt;
 $1586W #[[Patch:Keen shooting (Dreams)|Keen air-throw horizontally 1]]&lt;br /&gt;
 $15A4W #[[Patch:Keen shooting (Dreams)|Keen air-throw horizontally 2]]&lt;br /&gt;
 $15C2W #[[Patch:Keen shooting (Dreams)|Keen air-throw horizontally 3]]&lt;br /&gt;
 $15E0W #[[Patch:Keen shooting (Dreams)|Keen air-throw up 1]]&lt;br /&gt;
 $15FEW #[[Patch:Keen shooting (Dreams)|Keen air-throw up 2]]&lt;br /&gt;
 $161CW #[[Patch:Keen shooting (Dreams)|Keen air-throw up 3]]&lt;br /&gt;
 $163AW #[[Patch:Keen shooting (Dreams)|Keen air-throw down 1]]&lt;br /&gt;
 $1658W #[[Patch:Keen shooting (Dreams)|Keen air-throw down 2]]&lt;br /&gt;
 $1676W #[[Patch:Keen shooting (Dreams)|Keen air-throw down 3]]&lt;br /&gt;
 $1732W #[[Patch:Doors (Dreams)|Door sit]]&lt;br /&gt;
 $1750W #[[Patch:Doors (Dreams)|Door open]]&lt;br /&gt;
 $176EW #[[Patch:Wilted Flower|Wilted flower 1]]&lt;br /&gt;
 $178CW #[[Patch:Wilted Flower|Wilted flower 2]]&lt;br /&gt;
 $17AAW #[[Patch:Wilted Flower|Wilted flower 3]]&lt;br /&gt;
 $17C8W #[[Patch:Wilted Flower|Wilted flower 4]]&lt;br /&gt;
 $17E6W #[[Patch:Wilted Flower|Wilted flower 5]]&lt;br /&gt;
 $1804W #[[Patch:Wilted Flower|Wilted flower 6]]&lt;br /&gt;
 $1822W #[[Patch:Wilted Flower|Wilting smoke 1]]&lt;br /&gt;
 $1840W #[[Patch:Wilted Flower|Wilting smoke 2]]&lt;br /&gt;
 $185EW #[[Patch:Wilted Flower|Wilting smoke 3]]&lt;br /&gt;
 $187CW #[[Patch:Wilted Flower|Wilting smoke 4]]&lt;br /&gt;
 $189AW #[[Patch:Wilted Flower|Recovery smoke 1]]&lt;br /&gt;
 $18B8W #[[Patch:Wilted Flower|Recovery smoke 2]]&lt;br /&gt;
 $18D6W #[[Patch:Wilted Flower|Recovery smoke 3]]&lt;br /&gt;
 $18F4W #[[Patch:Wilted Flower|Recovery smoke 4]]&lt;br /&gt;
 $1912W #[[Patch:Wilted Flower|Recovery smoke 5]]&lt;br /&gt;
 $1930W #[[Patch:Wilted Flower|Recovery smoke 6]]&lt;br /&gt;
 $194EW #[[Patch:Wilted Flower|Recovery smoke 7]]&lt;br /&gt;
 $196CW #[[Patch:Items|Items]]&lt;br /&gt;
 $198AW #[[Patch:Items|Items got]]&lt;br /&gt;
 $19C0W #[[Patch:Broccolash|Broccolash run 1]]&lt;br /&gt;
 $19DEW #[[Patch:Broccolash|Broccolash run 2]]&lt;br /&gt;
 $19FCW #[[Patch:Broccolash|Broccolash run 3]]&lt;br /&gt;
 $1A1AW #[[Patch:Broccolash|Broccolash run 4]]&lt;br /&gt;
 $1A38W #[[Patch:Broccolash|Broccolash headslam 1]]&lt;br /&gt;
 $1A56W #[[Patch:Broccolash|Broccolash headslam 2]]&lt;br /&gt;
 $1A74W #[[Patch:Broccolash|Broccolash headslam 3]]&lt;br /&gt;
 $1A92W #[[Patch:Broccolash|Broccolash headslam 4]]&lt;br /&gt;
 $1AB0W #[[Patch:Broccolash|Broccolash headslam 5]]&lt;br /&gt;
 $1ACEW #[[Patch:Broccolash|Broccolash headslam 6]]&lt;br /&gt;
 $1AECW #[[Patch:Broccolash|Broccolash headslam 7]]&lt;br /&gt;
 $1B0AW #[[Patch:Broccolash|Broccolash headslam 8]]&lt;br /&gt;
 $1B28W #[[Patch:Broccolash|Broccolash headslam 9]]&lt;br /&gt;
 $1B46W #[[Patch:Tomatooth|Tomatooth 1]]&lt;br /&gt;
 $1B64W #[[Patch:Tomatooth|Tomatooth 2]]&lt;br /&gt;
 $1B82W #[[Patch:Carrot_Courier|Carrot run 1]]&lt;br /&gt;
 $1BA0W #[[Patch:Carrot_Courier|Carrot run 2]]&lt;br /&gt;
 $1BBEW #[[Patch:Carrot_Courier|Carrot run 3]]&lt;br /&gt;
 $1BDCW #[[Patch:Carrot_Courier|Carrot run 4]]&lt;br /&gt;
 $1BFAW #[[Patch:Carrot_Courier|Carrot jump]]&lt;br /&gt;
 $1C18W #[[Patch:Asparagusto|Asparagusto run 1]]&lt;br /&gt;
 $1C36W #[[Patch:Asparagusto|Asparagusto run 2]]&lt;br /&gt;
 $1C54W #[[Patch:Asparagusto|Asparagusto run 3]]&lt;br /&gt;
 $1C72W #[[Patch:Asparagusto|Asparagusto run 4]]&lt;br /&gt;
 $1C90W #[[Patch:Grape|Grape wait]]&lt;br /&gt;
 $1CAEW #[[Patch:Grape|Grape fall]]&lt;br /&gt;
 $1CCCW #[[Patch:Grape|Grape rise]]&lt;br /&gt;
 $1CEAW #[[Patch:Grape|Grape stop]]&lt;br /&gt;
 $1D08W #[[Patch:Tater_Trooper|Tater walk 1]]&lt;br /&gt;
 $1D26W #[[Patch:Tater_Trooper|Tater walk 2]]&lt;br /&gt;
 $1D44W #[[Patch:Tater_Trooper|Tater walk 3]]&lt;br /&gt;
 $1D62W #[[Patch:Tater_Trooper|Tater walk 4]]&lt;br /&gt;
 $1D80W #[[Patch:Tater_Trooper|Tater stab 1]]&lt;br /&gt;
 $1D9EW #[[Patch:Tater_Trooper|Tater stab 2]]&lt;br /&gt;
 $1DBCW #[[Patch:Tater_Trooper|Tater stab 3]]&lt;br /&gt;
 $1DDAW #[[Patch:Minecart|Minecart 1]]&lt;br /&gt;
 $1DF8W #[[Patch:Minecart|Minecart 2]]&lt;br /&gt;
 $1E16W #[[Patch:Frenchy|Frenchy walking horizontally 1]]&lt;br /&gt;
 $1E34W #[[Patch:Frenchy|Frenchy walking horizontally 2]]&lt;br /&gt;
 $1E52W #[[Patch:Frenchy|Frenchy walking horizontally 3]]&lt;br /&gt;
 $1E70W #[[Patch:Frenchy|Frenchy walking horizontally 4]]&lt;br /&gt;
 $1E8EW #[[Patch:Frenchy|Frenchy charging horizontally 1]]&lt;br /&gt;
 $1EACW #[[Patch:Frenchy|Frenchy charging horizontally 2]]&lt;br /&gt;
 $1ECAW #[[Patch:Frenchy|Frenchy charging horizontally 3]]&lt;br /&gt;
 $1EE8W #[[Patch:Frenchy|Frenchy charging horizontally 4]]&lt;br /&gt;
 $1F06W #[[Patch:Frenchy|Frenchy tossing chip 1]]&lt;br /&gt;
 $1F24W #[[Patch:Frenchy|Frenchy tossing chip 2]]&lt;br /&gt;
 $1F42W #[[Patch:Frenchy|Frenchy tossing chip 3]]&lt;br /&gt;
 $1F60W #[[Patch:Frenchy|Frenchy&#039;s chip 1]]&lt;br /&gt;
 $1F7EW #[[Patch:Frenchy|Frenchy&#039;s chip 2]]&lt;br /&gt;
 $1F9CW #[[Patch:Melon Lips|Horizontal melon wait]]&lt;br /&gt;
 $1FBAW #[[Patch:Melon Lips|Horizontal melon spit]]&lt;br /&gt;
 $1FD8W #[[Patch:Melon Lips|Horizontal melon return]]&lt;br /&gt;
 $1FF6W #[[Patch:Melon Lips|Down melon wait]]&lt;br /&gt;
 $2014W #[[Patch:Melon Lips|Down melon spit]]&lt;br /&gt;
 $2032W #[[Patch:Melon Lips|Down melon return]]&lt;br /&gt;
 $2050W #[[Patch:Melon Lips|Horizontal pip 1]]&lt;br /&gt;
 $206EW #[[Patch:Melon Lips|Horizontal pip 2]]&lt;br /&gt;
 $208CW #[[Patch:Melon Lips|Down pip 1]]&lt;br /&gt;
 $20AAW #[[Patch:Melon Lips|Down pip 2]]&lt;br /&gt;
 $20C8W #[[Patch:Squasher|Squash walk 1]]&lt;br /&gt;
 $20E6W #[[Patch:Squasher|Squash walk 2]]&lt;br /&gt;
 $2104W #[[Patch:Squasher|Squash jump]]&lt;br /&gt;
 $2122W #[[Patch:Squasher|Squash fall]]&lt;br /&gt;
 $2140W #[[Patch:Squasher|Squash land]]&lt;br /&gt;
 $215EW #[[Patch:Apel|Apel walk 1]]&lt;br /&gt;
 $217CW #[[Patch:Apel|Apel walk 2]]&lt;br /&gt;
 $219AW #[[Patch:Apel|Apel walk 3]]&lt;br /&gt;
 $21B8W #[[Patch:Apel|Apel poleclimb up 1]]&lt;br /&gt;
 $21D6W #[[Patch:Apel|Apel poleclimb up 2]]&lt;br /&gt;
 $21F4W #[[Patch:Apel|Apel poleclimb down 1]]&lt;br /&gt;
 $2212W #[[Patch:Apel|Apel poleclimb down 2]]&lt;br /&gt;
 $2230W #[[Patch:Apel|Apel poleclimb down 3]]&lt;br /&gt;
 $224EW #[[Patch:Apel|Apel poleclimb down 4]]&lt;br /&gt;
 $226CW #[[Patch:Apel|Apel fall]]&lt;br /&gt;
 $228AW #[[Patch:Pea Brain|Pea fall]]&lt;br /&gt;
 $22A8W #[[Patch:Pea Brain|Pea walk 1]]&lt;br /&gt;
 $22C6W #[[Patch:Pea Brain|Pea walk 2]]&lt;br /&gt;
 $22E4W #[[Patch:Pea Brain|Pea walk 3]]&lt;br /&gt;
 $2302W #[[Patch:Pea Brain|Pea walk 4]]&lt;br /&gt;
 $2320W #[[Patch:Pea Pod|Peapod walk 1]]&lt;br /&gt;
 $233EW #[[Patch:Pea Pod|Peapod walk 2]]&lt;br /&gt;
 $235CW #[[Patch:Pea Pod|Peapod walk 3]]&lt;br /&gt;
 $237AW #[[Patch:Pea Pod|Peapod walk 4]]&lt;br /&gt;
 $2398W #[[Patch:Pea Pod|Peapod spit 1]]&lt;br /&gt;
 $23B6W #[[Patch:Pea Pod|Peapod spit 2]]&lt;br /&gt;
 $23D4W #[[Patch:Boobus Tuber|Boobus walk 1]]&lt;br /&gt;
 $23F2W #[[Patch:Boobus Tuber|Boobus walk 2]]&lt;br /&gt;
 $2410W #[[Patch:Boobus Tuber|Boobus walk 3]]&lt;br /&gt;
 $242EW #[[Patch:Boobus Tuber|Boobus walk 4]]&lt;br /&gt;
 $244CW #[[Patch:Boobus Tuber|Boobus jump]]&lt;br /&gt;
 $246AW #[[Patch:Boobus Tuber|Boobus die 1]]&lt;br /&gt;
 $2488W #[[Patch:Boobus Tuber|Boobus die 2]]&lt;br /&gt;
 $24A6W #[[Patch:Boobus Tuber|Boobus die 3]]&lt;br /&gt;
 $24C4W #[[Patch:Boobus Tuber|Boobus death smoke 1]]&lt;br /&gt;
 $24E2W #[[Patch:Boobus Tuber|Boobus death smoke 2]]&lt;br /&gt;
 $2500W #[[Patch:Boobus Tuber|Boobus death smoke 3]]&lt;br /&gt;
 $251EW #[[Patch:Boobus Tuber|Boobus death smoke 4]]&lt;br /&gt;
 $253CW #[[Patch:Boobus Tuber|Boobus death smoke 5]]&lt;br /&gt;
 $255AW #[[Patch:Boobus Tuber|Boobus death smoke 6]]&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_on_poles&amp;diff=41232</id>
		<title>Patch:Keen on poles</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_on_poles&amp;diff=41232"/>
		<updated>2019-12-23T02:56:05Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add pole tile property refs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains patches that relate to the player on poles, under what conditions the player grabs or lets go of poles and pole tiles themselves. It covers all the Galaxy and Dreams episodes. Other tile patches can be found under [[Patch:Tiles]] 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)]].&lt;br /&gt;
&lt;br /&gt;
This page is divided into four sections. The first deals with pole tiles themselves, the second deals with grabbing onto poles, the third with falling off of poles and the fourth with the properties of Keen&#039;s pole climbing sprites.&lt;br /&gt;
&lt;br /&gt;
As a side note, altering Keen&#039;s pole detection code slightly allows the insertion of [[Patch:Text windows#Add_Message_Windows_to_Keen_Dreams|level specific text window &#039;notes&#039;]] into the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pole tiles =&lt;br /&gt;
&lt;br /&gt;
This section deals with pole [[Patch:Tiles|tiles]] themselves and not the player&#039;s sprite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole tile property ==&lt;br /&gt;
&lt;br /&gt;
Poles have a [[Patch:Tiles#Galaxy_and_Dreams|&#039;misc flag&#039; value]] of 1. This is the only tile property Keen can interact with to start climbing poles. In some games other sprites can interact with it as well.&lt;br /&gt;
&lt;br /&gt;
Unlike most tile types, poles are &#039;optional&#039; in that whether or not Keen interacts with them is a choice made by players. There are three main situations where the game checks for poles. The first is when the up arrow is pressed. This allows Keen, whatever he&#039;s doing, to grip poles he&#039;s in front of.&lt;br /&gt;
&lt;br /&gt;
The other two situations involve detecting pole tops and bottoms. For example Keen cannot climb up into a tile if it is not flagged as a pole. This will cause him to stop at pole tops. In Keen Dreams an additional check is needed for pole bottoms, but this was eliminated in the Galaxy games.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Pole tile property&amp;quot;&amp;gt;&lt;br /&gt;
#Pole tile property -Keen 4&lt;br /&gt;
%patch $B8FC [$0001W]  {$75} #Keen can grip this tile&lt;br /&gt;
%patch $C7C6 [$0001W]  {$74} #Keen can climb up this tile&lt;br /&gt;
%patch $C866 [$0001W]  {$74} #Keen can climb down this tile&lt;br /&gt;
&lt;br /&gt;
#Pole tile property -Keen 5&lt;br /&gt;
%patch $ABDE [$0001W]  {$75} #Keen can grip this tile&lt;br /&gt;
%patch $BBE4 [$0001W]  {$74} #Keen can climb up this tile&lt;br /&gt;
%patch $BC84 [$0001W]  {$74} #Keen can climb down this tile&lt;br /&gt;
%patch $11385 [$0001W]  {$75} #Ampton can grip this tile&lt;br /&gt;
%patch $113B3 [$0001W]  {$75} #Ampton can climb up this tile&lt;br /&gt;
%patch $114C4 [$0001W]  {$75} #Ampton can climb down this tile&lt;br /&gt;
%patch $11529 [$0001W]  {$75} #Ampton can grip this tile&lt;br /&gt;
%patch $115B7 [$0001W]  {$75} #Ampton can climb up this tile&lt;br /&gt;
%patch $11611 [$0001W]  {$74} #Ampton can climb down this tile&lt;br /&gt;
&lt;br /&gt;
#Pole tile property -Keen 6&lt;br /&gt;
%patch $AB12 [$0001W]  {$75} #Keen can grip this tile&lt;br /&gt;
%patch $B9C7 [$0001W]  {$74} #Keen can climb up this tile&lt;br /&gt;
%patch $BA67 [$0001W]  {$74} #Keen can climb down this tile&lt;br /&gt;
&lt;br /&gt;
#Pole tile property -Keen Dreams&lt;br /&gt;
%patch $6C6A [$0001W]  {$75} #Keen can grip this tile&lt;br /&gt;
%patch $7368 [$0001W]  {$74} #Keen can climb up this tile&lt;br /&gt;
%patch $7380 [$0001W]  {$74} #Keen can climb down this tile&lt;br /&gt;
%patch $73ED [$0001W]  {$74} #When detecting pole bottoms&lt;br /&gt;
%patch $8FF6 [$0001W]  {$75} #Apel can grip this tile&lt;br /&gt;
%patch $9096 [$0001W]  {$74} #Apel can climb up this tile&lt;br /&gt;
%patch $90E6 [$0001W]  {$74} #When Apel grips poles&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Starting\stopping pole climbing =&lt;br /&gt;
&lt;br /&gt;
This section deals with patches that relate to the conditions under which the player will start or stop interacting with poles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Player cannot interact with poles at all ==&lt;br /&gt;
&lt;br /&gt;
The first set of patches simply disables any interaction between the player and poles. The pole related code still exists, but the player cannot utilize it because they cannot start pole climbing. (Other sprites can also react to poles, such as the [[Little Ampton]]..)&lt;br /&gt;
&lt;br /&gt;
The second patch is more specific, it stops Keen from being able to grab poles while jumping or falling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Disable poles entirely&amp;quot;&amp;gt;&lt;br /&gt;
#Disable poles entirely -Keen 4&lt;br /&gt;
%patch $B8A0 $33 $C0 $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Disable poles entirely -Keen 5&lt;br /&gt;
%patch $AB82 $33 $C0 $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Disable poles entirely -Keen 6&lt;br /&gt;
%patch $AAB6 $33 $C0 $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Disable grabbing poles while jumping\falling&amp;quot;&amp;gt;&lt;br /&gt;
#Disable grabbing poles while jumping\falling -Keen 4&lt;br /&gt;
%patch $C4BC $EB&lt;br /&gt;
&lt;br /&gt;
#Disable grabbing poles while jumping\falling -Keen 5&lt;br /&gt;
%patch $B8DA $EB&lt;br /&gt;
&lt;br /&gt;
#Disable grabbing poles while jumping\falling -Keen 6&lt;br /&gt;
%patch $B6BD $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable jumping on poles ==&lt;br /&gt;
&lt;br /&gt;
These patches disable Keen&#039;s ability to jump off poles and\or shoot on poles. This means he can only leave poles if knocked off or at the top\bottom of poles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Disable jumping off poles (Frees $C682-$C6D2)&lt;br /&gt;
%patch $C680 $EB&lt;br /&gt;
&lt;br /&gt;
#Disable shooting and jumping on poles (Frees $C64F-$C6D2)&lt;br /&gt;
%patch $C641 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Disable jumping off poles (Frees $BAA0-$BAF0)&lt;br /&gt;
%patch $BA9E $EB&lt;br /&gt;
&lt;br /&gt;
#Disable shooting and jumping on poles (Frees $BA6D-$BAF0)&lt;br /&gt;
%patch $BA5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Disable jumping off poles (Frees $B883-$B8D3)&lt;br /&gt;
%patch $B881 $EB&lt;br /&gt;
&lt;br /&gt;
#Disable shooting and jumping on poles (Frees $B850-$B8D3)&lt;br /&gt;
%patch $B842 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen&#039;s pole climbing sprites =&lt;br /&gt;
&lt;br /&gt;
This section of the page deals with the properties of the player&#039;s pole climbing sprites and is divided into sections for each property. All four games involving pole climbing are included in each section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite actions|Sprite Actions]] ==&lt;br /&gt;
&lt;br /&gt;
There are two unique situations where Keen will start climbing up a pole, these lead to a 3-action loop. The loop will stop in two situations; when Keen reaches a pole top or when he stops pressing the up key. Doing either will return him to his &#039;sit on poles&#039; action. &lt;br /&gt;
&lt;br /&gt;
Likewise there are two situations where Keen can start climbing down poles, leading to a 4-action loop. This will only stop when the down key is no longer pressed or Keen falls off of the bottom of a pole.&lt;br /&gt;
&lt;br /&gt;
When on a pole Keen will keep going to his sitting action if nothing is pressed. Obscurely, Keen can &#039;walk off&#039; of a pole if he&#039;s level with the ground and presses the left or right arrow keys. This will make him fall off the pole onto the ground.&lt;br /&gt;
&lt;br /&gt;
Keen can jump off of a pole, this sends him to the first jumping action. Keen can also shoot up, down and horizontally on poles. Each direction involves a start point, a shooting check to check if Keen is already shooting and two actions to make the shot, returning Keen to sitting on a pole after.&lt;br /&gt;
&lt;br /&gt;
Finally Keen can move down a pole that goes all the way to the floor. At the bottom he will dismount the pole and go to his [[Patch:Keen look|&#039;look down&#039;]] action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&lt;br /&gt;
When on poles and thus using his [[Patch:Keen (Keen 4)#Collision_2_code|second sprite collision]] Keen can be disturbed by [[Patch:Platform (Keen 4)|Platforms]] or [[Patch:Bounder|Bounders]]; in both cases he will revert to his falling action.&lt;br /&gt;
&lt;br /&gt;
 Actions&lt;br /&gt;
 $0EF0W #Keen going still on a pole&lt;br /&gt;
 $0F0EW #Keen going up a pole&lt;br /&gt;
 $0F2CW #Keen going up a pole&lt;br /&gt;
 $0F4AW #Keen going up a pole&lt;br /&gt;
 $0F68W #Keen going down a pole&lt;br /&gt;
 $0F86W #Keen going down a pole&lt;br /&gt;
 $0FA4W #Keen going down a pole&lt;br /&gt;
 $0FC2W #Keen going down a pole&lt;br /&gt;
 $0FE0W #Keen shooting horizontally on a pole 1&lt;br /&gt;
 $0FFEW #Keen shooting horizontally on a pole 2&lt;br /&gt;
 $101CW #Keen shoots up on pole 1&lt;br /&gt;
 $103AW #Keen shoots up on pole 2&lt;br /&gt;
 $1058W #Keen shooting down on a pole 1&lt;br /&gt;
 $1076W #Keen shooting down on a pole 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on a pole&lt;br /&gt;
%patch $2FD7C [$0EF0W]&lt;br /&gt;
&lt;br /&gt;
#Head up on a pole&lt;br /&gt;
%patch $C6F0  [$0F0EW]&lt;br /&gt;
%patch $C8B1  [$0F0EW]&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole loop&lt;br /&gt;
%patch $2FD9A [$0F2CW]&lt;br /&gt;
%patch $2FDB8 [$0F4AW]&lt;br /&gt;
%patch $2FDD6 [$0F0EW]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going up a pole&lt;br /&gt;
%patch $C7D3  [$0EF0W] #At top of pole&lt;br /&gt;
%patch $C7F3  [$0EF0W] #Up key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen start going down a pole&lt;br /&gt;
%patch $C700  [$0F68W]&lt;br /&gt;
%patch $C7FF  [$0F68W]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going down a pole&lt;br /&gt;
%patch $C879  [$11A2W] #Fall off of pole bottom&lt;br /&gt;
%patch $C8BD  [$0EF0W] #Down key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole loop&lt;br /&gt;
%patch $2FDF4 [$0F86W]&lt;br /&gt;
%patch $2FE12 [$0FA4W]&lt;br /&gt;
%patch $2FE30 [$0FC2W]&lt;br /&gt;
%patch $2FE4E [$0F68W]&lt;br /&gt;
&lt;br /&gt;
#Keen jump off of pole&lt;br /&gt;
%patch $C6BB  [$1166W]&lt;br /&gt;
&lt;br /&gt;
#Keen walk off of a pole&lt;br /&gt;
%patch $C762  [$11A2W]&lt;br /&gt;
&lt;br /&gt;
#Keen go to looking down at bottom of poles&lt;br /&gt;
%patch $D8C4 [$0C3EW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting horizontally&lt;br /&gt;
%patch $C672  [$0FE0W]&lt;br /&gt;
&lt;br /&gt;
#Shooting horizontally check&lt;br /&gt;
%patch $CA82  [$0FE0W]&lt;br /&gt;
&lt;br /&gt;
#Shooting horizontally on a pole sequence&lt;br /&gt;
%patch $2FE6C [$0FFEW]&lt;br /&gt;
%patch $2FE8A [$0EF0W]&lt;br /&gt;
&lt;br /&gt;
#Start shooting up&lt;br /&gt;
%patch $C66B  [$101CW]&lt;br /&gt;
&lt;br /&gt;
#Shooting up check&lt;br /&gt;
%patch $CAC5  [$101CW]&lt;br /&gt;
&lt;br /&gt;
#Shooting up on a pole sequence&lt;br /&gt;
%patch $2FEA8 [$103AW]&lt;br /&gt;
%patch $2FEC6 [$0EF0W]&lt;br /&gt;
&lt;br /&gt;
#Start shooting down&lt;br /&gt;
%patch $C679  [$1058W]&lt;br /&gt;
&lt;br /&gt;
#Shooting down check&lt;br /&gt;
%patch $CB06  [$1058W]&lt;br /&gt;
&lt;br /&gt;
#Shooting down on a pole sequence&lt;br /&gt;
%patch $2FEE4 [$1076W]&lt;br /&gt;
%patch $2FF02 [$0EF0W]&lt;br /&gt;
&lt;br /&gt;
#Be disturbed by&lt;br /&gt;
%patch $CE54  [$11A2W] #Platforms&lt;br /&gt;
%patch $CE8C  [$11A2W] #Bounders&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&lt;br /&gt;
When on poles and thus using his [[Patch:Keen (Keen 5)#Collision_2_code|second sprite collision]] Keen can be disturbed by [[Patch:Platform (Keen 5)|Platforms]] and will revert to his falling action.&lt;br /&gt;
&lt;br /&gt;
 Actions&lt;br /&gt;
 $0DCEW #Keen still on a pole&lt;br /&gt;
 $0DECW #Keen going up a pole&lt;br /&gt;
 $0E0AW #Keen going up a pole&lt;br /&gt;
 $0E28W #Keen going up a pole&lt;br /&gt;
 $0E46W #Keen going down a pole&lt;br /&gt;
 $0E64W #Keen going down a pole&lt;br /&gt;
 $0E82W #Keen going down a pole&lt;br /&gt;
 $0EA0W #Keen going down a pole&lt;br /&gt;
 $0EBEW #Keen shooting horizontally on a pole start&lt;br /&gt;
 $0EDCW #Keen shooting horizontally on a pole&lt;br /&gt;
 $0EFAW #Keen shoots up on pole start&lt;br /&gt;
 $0F18W #Keen shoots up on pole&lt;br /&gt;
 $0F36W #Keen shooting down on a pole start&lt;br /&gt;
 $0F54W #Keen shooting down on a pole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on a pole&lt;br /&gt;
%patch $3112A [$0DCEW]&lt;br /&gt;
&lt;br /&gt;
#Head up on a pole&lt;br /&gt;
%patch $BB0E  [$0DECW]&lt;br /&gt;
%patch $BCCF  [$0DECW]&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole loop&lt;br /&gt;
%patch $31148 [$0E0AW]&lt;br /&gt;
%patch $31166 [$0E28W]&lt;br /&gt;
%patch $31184 [$0DECW]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going up a pole&lt;br /&gt;
%patch $BBF1  [$0DECW] #At top of pole&lt;br /&gt;
%patch $BC11  [$0DECW] #Up key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen start going down a pole&lt;br /&gt;
%patch $BB1E  [$0F68W]&lt;br /&gt;
%patch $BC1D  [$0F68W]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going down a pole&lt;br /&gt;
%patch $BC97  [$1080W] #Fall off of pole bottom&lt;br /&gt;
%patch $BCDB  [$0DECW] #Down key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole loop&lt;br /&gt;
%patch $311A2 [$0E64W]&lt;br /&gt;
%patch $311C0 [$0E82W]&lt;br /&gt;
%patch $311DE [$0EA0W]&lt;br /&gt;
%patch $311FC [$0E46W]&lt;br /&gt;
&lt;br /&gt;
#Keen jump off of pole&lt;br /&gt;
%patch $BAD9  [$1044W]&lt;br /&gt;
&lt;br /&gt;
#Keen walk off of a pole&lt;br /&gt;
%patch $BB80  [$1080W]&lt;br /&gt;
&lt;br /&gt;
#Keen go to looking down at bottom of poles&lt;br /&gt;
%patch $CC88 [$0AFEW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting horizontally&lt;br /&gt;
%patch $BA90  [$0EBEW]&lt;br /&gt;
&lt;br /&gt;
#Shooting horizontally check&lt;br /&gt;
%patch $BEA0  [$0EBEW]&lt;br /&gt;
&lt;br /&gt;
#Shooting horizontally on a pole sequence&lt;br /&gt;
%patch $3121A [$0EDCW]&lt;br /&gt;
%patch $31238 [$0DCEW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting up&lt;br /&gt;
%patch $BA89  [$0EFAW]&lt;br /&gt;
&lt;br /&gt;
#Shooting up check&lt;br /&gt;
%patch $BEE3  [$0EFAW]&lt;br /&gt;
&lt;br /&gt;
#Shooting up on a pole sequence&lt;br /&gt;
%patch $31256 [$0F18W]&lt;br /&gt;
%patch $31274 [$0DCEW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting down&lt;br /&gt;
%patch $BA97  [$0F36W]&lt;br /&gt;
&lt;br /&gt;
#Shooting down check&lt;br /&gt;
%patch $BF24  [$0F36W]&lt;br /&gt;
&lt;br /&gt;
#Shooting down on a pole sequence&lt;br /&gt;
%patch $31292 [$0F54W]&lt;br /&gt;
%patch $312B0 [$0DCEW]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&lt;br /&gt;
When on poles and thus using his [[Patch:Keen (Keen 6)#Collision_2_code|second sprite collision]] Keen can be disturbed by [[Patch:Platform (Keen 6)|Platforms]] and will revert to his falling action.&lt;br /&gt;
&lt;br /&gt;
 Actions&lt;br /&gt;
 $0D68W #Keen sit on a pole&lt;br /&gt;
 $0D86W #Keen moving up a pole&lt;br /&gt;
 $0DA4W #Keen moving up a pole&lt;br /&gt;
 $0DC2W #Keen moving up a pole&lt;br /&gt;
 $0DE0W #Keen moving down a pole&lt;br /&gt;
 $0DFEW #Keen moving down a pole&lt;br /&gt;
 $0E1CW #Keen moving down a pole&lt;br /&gt;
 $0E3AW #Keen moving down a pole&lt;br /&gt;
 $0E58W #Keen shoot horizontally on a pole 1&lt;br /&gt;
 $0E76W #Keen shoot horizontally on a pole 2&lt;br /&gt;
 $0E94W #Keen shoot up on a pole 1&lt;br /&gt;
 $0EB2W #Keen shoot up on a pole 2&lt;br /&gt;
 $0ED0W #Keen shoot down on a pole 1&lt;br /&gt;
 $0EEEW #Keen shoot down on a pole 2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on a pole&lt;br /&gt;
%patch $31AB4 [$0D68W]&lt;br /&gt;
&lt;br /&gt;
#Head up on a pole&lt;br /&gt;
%patch $B8F1  [$0D86W]&lt;br /&gt;
%patch $BAB2  [$0D86W]&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole loop&lt;br /&gt;
%patch $31AD2 [$0DA4W]&lt;br /&gt;
%patch $31AF0 [$0DC2W]&lt;br /&gt;
%patch $31B0E [$0D86W]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going up a pole&lt;br /&gt;
%patch $B9D4  [$0D68W] #At top of pole&lt;br /&gt;
%patch $B9F4  [$0D68W] #Up key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen start going down a pole&lt;br /&gt;
%patch $B901  [$0DE0W]&lt;br /&gt;
%patch $BA00  [$0DE0W]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going down a pole&lt;br /&gt;
%patch $BA7A  [$101AW] #Fall off of pole bottom&lt;br /&gt;
%patch $BABE  [$0D68W] #Down key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole loop&lt;br /&gt;
%patch $31B2C [$0DFEW]&lt;br /&gt;
%patch $31B4A [$0E1CW]&lt;br /&gt;
%patch $31B68 [$0E3AW]&lt;br /&gt;
%patch $31B86 [$0DE0W]&lt;br /&gt;
&lt;br /&gt;
#Keen jump off of pole&lt;br /&gt;
%patch $B8BC  [$0FDEW]&lt;br /&gt;
&lt;br /&gt;
#Keen walk off of a pole&lt;br /&gt;
%patch $B963  [$101AW]&lt;br /&gt;
&lt;br /&gt;
#Keen go to looking down at bottom of poles&lt;br /&gt;
%patch $CA3B [$0AF2W]&lt;br /&gt;
&lt;br /&gt;
#Start shooting horizontally&lt;br /&gt;
%patch $B873  [$0E58W]&lt;br /&gt;
&lt;br /&gt;
#Shooting check&lt;br /&gt;
%patch $BC83  [$0E58W]&lt;br /&gt;
&lt;br /&gt;
#Shooting horizontally on a pole sequence&lt;br /&gt;
%patch $31BA4 [$0E76W]&lt;br /&gt;
%patch $31BC2 [$0D68W]&lt;br /&gt;
&lt;br /&gt;
#Start shooting up&lt;br /&gt;
%patch $B86C  [$0E94W]&lt;br /&gt;
&lt;br /&gt;
#Shooting check&lt;br /&gt;
%patch $BCC6  [$0E94W]&lt;br /&gt;
&lt;br /&gt;
#Shooting up on a pole sequence&lt;br /&gt;
%patch $31BE0 [$0EB2W]&lt;br /&gt;
%patch $31BFE [$0D68W]&lt;br /&gt;
&lt;br /&gt;
#Start shooting down&lt;br /&gt;
%patch $B87A  [$0ED0W]&lt;br /&gt;
&lt;br /&gt;
#Shooting check&lt;br /&gt;
%patch $BD07  [$0ED0W]&lt;br /&gt;
&lt;br /&gt;
#Shooting down on a pole sequence&lt;br /&gt;
%patch $31C1C [$0EEEW]&lt;br /&gt;
%patch $31C3A [$0D68W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen Dreams ===&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s actions in Dreams are more simple than that of Keen Galaxy. There is only one situation where he will grab a pole, by pressing up while in front of it. When Keen reaches the top or bottom of poles he&#039;ll turn into his sitting action, and stop moving. However the code for the bottom of poles is unused (he&#039;ll fall off of them instead), even though it &#039;&#039;is&#039;&#039; present.&lt;br /&gt;
&lt;br /&gt;
 Actions&lt;br /&gt;
 $118AW #Keen sit on pole&lt;br /&gt;
 $11A8W #Keen climb up pole 1&lt;br /&gt;
 $11C6W #Keen climb up pole 2&lt;br /&gt;
 $11E4W #Keen climb up pole 3&lt;br /&gt;
 $1202W #Keen climb down pole 1&lt;br /&gt;
 $1220W #Keen climb down pole 2&lt;br /&gt;
 $123EW #Keen climb down pole 3&lt;br /&gt;
 $125CW #Keen climb down pole 4&lt;br /&gt;
 $127AW #Keen pole-throw horizontally 1&lt;br /&gt;
 $1298W #Keen pole-throw horizontally 2&lt;br /&gt;
 $12B6W #Keen pole-throw horizontally 3&lt;br /&gt;
 $12D4W #Keen pole-throw up 1&lt;br /&gt;
 $12F2W #Keen pole-throw up 2&lt;br /&gt;
 $1310W #Keen pole-throw up 3&lt;br /&gt;
 $132EW #Keen pole-throw down 1&lt;br /&gt;
 $134CW #Keen pole-throw down 2&lt;br /&gt;
 $136AW #Keen pole-throw down 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on a pole&lt;br /&gt;
%patch $24BF8 [$150EW]&lt;br /&gt;
&lt;br /&gt;
#Keen grip pole when pressing up&lt;br /&gt;
%patch $6C90 [$118AW]&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole loop&lt;br /&gt;
%patch $24C16 [$118AW]&lt;br /&gt;
%patch $24C34 [$11C6W]&lt;br /&gt;
%patch $24C52 [$11E4W]&lt;br /&gt;
%patch $24C70 [$11A8W]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going up a pole&lt;br /&gt;
%patch $7374  [$118AW] #At top of pole&lt;br /&gt;
&lt;br /&gt;
#Keen start going down a pole&lt;br /&gt;
%patch $B901  [$0DE0W]&lt;br /&gt;
%patch $BA00  [$0DE0W]&lt;br /&gt;
&lt;br /&gt;
#Keen stops going down a pole&lt;br /&gt;
%patch $7389  [$118AW] #Keen stop moving at pole bottom (Unused)&lt;br /&gt;
%patch $73FF  [$1568W] #Fall off of pole bottom&lt;br /&gt;
%patch $7445  [$118AW] #Down key no longer pressed&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole loop&lt;br /&gt;
%patch $24C8E [$1220W]&lt;br /&gt;
%patch $24CAC [$123EW]&lt;br /&gt;
%patch $24CCA [$125CW]&lt;br /&gt;
%patch $24CE8 [$1202W]&lt;br /&gt;
&lt;br /&gt;
#Keen jump off of pole&lt;br /&gt;
%patch $B8BC  [$0FDEW]&lt;br /&gt;
&lt;br /&gt;
#Keen walk off of a pole&lt;br /&gt;
%patch $B963  [$101AW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting horizontally&lt;br /&gt;
%patch $727C  [$127AW]&lt;br /&gt;
&lt;br /&gt;
#Shooting check&lt;br /&gt;
%patch $74A7  [$1298W]&lt;br /&gt;
&lt;br /&gt;
#Shooting horizontally on a pole sequence&lt;br /&gt;
%patch $24D06 [$1298W]&lt;br /&gt;
%patch $24D24 [$12B6W]&lt;br /&gt;
%patch $24D42 [$118AW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting up on pole&lt;br /&gt;
%patch $7275  [$12F2W]&lt;br /&gt;
&lt;br /&gt;
#Shooting check&lt;br /&gt;
%patch $7506  [$12F2W]&lt;br /&gt;
&lt;br /&gt;
#Shooting up on a pole sequence&lt;br /&gt;
%patch $24D60 [$12F2W]&lt;br /&gt;
%patch $24D7E [$1310W]&lt;br /&gt;
%patch $24D9C [$118AW]&lt;br /&gt;
&lt;br /&gt;
#Start shooting down&lt;br /&gt;
%patch $7283  [$132EW]&lt;br /&gt;
&lt;br /&gt;
#Shooting check&lt;br /&gt;
%patch $7528  [$134CW]&lt;br /&gt;
&lt;br /&gt;
#Shooting down on a pole sequence&lt;br /&gt;
%patch $24DBA [$134CW]&lt;br /&gt;
%patch $24DD8 [$136AW]&lt;br /&gt;
%patch $24DF6 [$118AW]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite behavior|Sprite Behavior]] ==&lt;br /&gt;
&lt;br /&gt;
These are the values used by Keen&#039;s pole actions. There are several behaviors by Keen. Each responds to a different set of commands and conditions. Keen has a behavior for moving up or down poles as well as sitting still on them. When shooting on poles the first action of shooting uses [[Patch:Keen shooting (Galaxy)|Keen&#039;s shooting behavior]] while the second frame has no behavior (and so just sits there.)&lt;br /&gt;
&lt;br /&gt;
Patches that alter how Keen behaves on pole tiles (For example whether he can shoot or jump while pole climbing) have their own section at the top of this page. These patches relate only to sprite action values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $0B800ED3RL #Keen on pole (Sit and wait for arrows to climb pole or shoot)&lt;br /&gt;
 $0B800F89RL #Keen go up poles (Climb with arrow up or sit on pole)&lt;br /&gt;
 $0B80101CRL #Going down poles (Climb down with arrow or sit on pole)&lt;br /&gt;
 $0B801195RL #Shooting (Spawn Keen&#039;s shot in arrow direction)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sit on poles&lt;br /&gt;
%patch $2FD70 $0B800ED3RL&lt;br /&gt;
&lt;br /&gt;
#Keen climb up poles&lt;br /&gt;
%patch $2FD8E $0B800F89RL&lt;br /&gt;
%patch $2FDAC $0B800F89RL&lt;br /&gt;
%patch $2FDCA $0B800F89RL&lt;br /&gt;
&lt;br /&gt;
#Keen slide down poles&lt;br /&gt;
%patch $2FDE8 $0B80101CRL&lt;br /&gt;
%patch $2FE06 $0B80101CRL&lt;br /&gt;
%patch $2FE24 $0B80101CRL&lt;br /&gt;
%patch $2FE42 $0B80101CRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $2FE60 $0B801195RL&lt;br /&gt;
%patch $2FE7E $00000000L&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $2FE9C $0B801195RL&lt;br /&gt;
%patch $2FEBA $00000000L&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $2FED8 $0B801195RL&lt;br /&gt;
%patch $2FEF6 $00000000L&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $0AAF1001RL #Keen on pole (Sit and wait for arrows to climb pole or shoot)&lt;br /&gt;
 $0AAF10B7RL #Keen go up poles (Climb with arrow up or sit on pole)&lt;br /&gt;
 $0AAF114ARL #Going down poles (Climb down with arrow or sit on pole)&lt;br /&gt;
 $0AAF12C3RL #Shooting (Spawn Keen&#039;s shot in arrow direction)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole&lt;br /&gt;
%patch $3111E $0AAF1001RL&lt;br /&gt;
&lt;br /&gt;
#Keen move up pole&lt;br /&gt;
%patch $3113C $0AAF10B7RL&lt;br /&gt;
%patch $3115A $0AAF10B7RL&lt;br /&gt;
%patch $31178 $0AAF10B7RL&lt;br /&gt;
&lt;br /&gt;
#Keen move down pole&lt;br /&gt;
%patch $31196 $0AAF114ARL&lt;br /&gt;
%patch $311B4 $0AAF114ARL&lt;br /&gt;
%patch $311D2 $0AAF114ARL&lt;br /&gt;
%patch $311F0 $0AAF114ARL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $3120D $0AAF12C3RL #Keen shoot&lt;br /&gt;
%patch $3122C $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $3124A $0AAF12C3RL #Keen shoot&lt;br /&gt;
%patch $31268 $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $31286 $0AAF12C3RL #Keen shoot&lt;br /&gt;
%patch $312A4 $00000000L  #Nothing&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $0AA20EB4RL #Keen on pole (Sit and wait for arrows to climb pole or shoot)&lt;br /&gt;
 $0AA20F6ARL #Keen go up poles (Climb with arrow up or sit on pole)&lt;br /&gt;
 $0AA20FFDRL #Going down poles (Climb down with arrow or sit on pole)&lt;br /&gt;
 $0AA21176RL #Shooting (Spawn Keen&#039;s shot in arrow direction)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole&lt;br /&gt;
%patch $31AA8 $0AA20EB4RL&lt;br /&gt;
&lt;br /&gt;
#Keen move up pole&lt;br /&gt;
%patch $31AC6 $0AA20F6ARL&lt;br /&gt;
%patch $31AE4 $0AA20F6ARL&lt;br /&gt;
%patch $31B02 $0AA20F6ARL&lt;br /&gt;
&lt;br /&gt;
#Keen move down pole&lt;br /&gt;
%patch $31B20 $0AA20FFDRL&lt;br /&gt;
%patch $31B3E $0AA20FFDRL&lt;br /&gt;
%patch $31B5C $0AA20FFDRL&lt;br /&gt;
%patch $31B7A $0AA20FFDRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $31B98 $0AA21176RL #Keen shoot&lt;br /&gt;
%patch $31BB6 $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $31BD4 $0AA21176RL #Keen shoot&lt;br /&gt;
%patch $31BF2 $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $31C10 $0AA21176RL #Keen shoot&lt;br /&gt;
%patch $31C2E $00000000L  #Nothing&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen Dreams ===&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $05E81408RL #Keen on pole (Sit and wait for arrows to climb pole or shoot)&lt;br /&gt;
 $05E814ABRL #Keen go up poles (Climb with arrow up or sit on pole)&lt;br /&gt;
 $05E81530RL #Going down poles (Climb down with arrow or sit on pole)&lt;br /&gt;
 $05E815D8RL #Shooting (Spawn Keen&#039;s shot in arrow direction)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole&lt;br /&gt;
%patch $24C0A $05E81408RL&lt;br /&gt;
&lt;br /&gt;
#Keen move up pole&lt;br /&gt;
%patch $24C28 $05E814ABRL&lt;br /&gt;
%patch $24C46 $05E814ABRL&lt;br /&gt;
%patch $24C64 $05E814ABRL&lt;br /&gt;
&lt;br /&gt;
#Keen move down pole&lt;br /&gt;
%patch $24C82 $05E81530RL&lt;br /&gt;
%patch $24CA0 $05E81530RL&lt;br /&gt;
%patch $24CBE $05E81530RL&lt;br /&gt;
%patch $24CDC $05E81530RL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $24CFA $00000000L  #Nothing&lt;br /&gt;
%patch $24D18 $05E815D8RL #Keen shoot&lt;br /&gt;
%patch $24D36 $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $24D54 $00000000L  #Nothing&lt;br /&gt;
%patch $24D72 $05E815D8RL #Keen shoot&lt;br /&gt;
%patch $24D90 $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $24DAE $00000000L  #Nothing&lt;br /&gt;
%patch $24DCC $05E815D8RL #Keen shoot&lt;br /&gt;
%patch $24DEA $00000000L  #Nothing&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite speed|Speed]] ==&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s climbing and descending pole speed is determined entirely by his animation motion and animation speed. Therefore, the faster Keen animates the faster he will climb poles. By default his downwards speed is three times that of his upwards and animation speeds are identical.&lt;br /&gt;
&lt;br /&gt;
Keen does not move when shooting on poles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole is still&lt;br /&gt;
%patch $2FD6C [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen climb poles speed&lt;br /&gt;
%patch $2FD8A [$0000W] [$0008W]&lt;br /&gt;
%patch $2FDA8 [$0000W] [$0008W]&lt;br /&gt;
%patch $2FDC6 [$0000W] [$0008W]&lt;br /&gt;
&lt;br /&gt;
#Keen slide down poles speed&lt;br /&gt;
%patch $2FDE4 [$0000W] [$0018W]&lt;br /&gt;
%patch $2FE02 [$0000W] [$0018W]&lt;br /&gt;
%patch $2FE20 [$0000W] [$0018W]&lt;br /&gt;
%patch $2FE3E [$0000W] [$0018W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally speed&lt;br /&gt;
%patch $2FE5C [$0000W $0000W]&lt;br /&gt;
%patch $2FE7A [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up speed&lt;br /&gt;
%patch $2FE98 [$0000W $0000W]&lt;br /&gt;
%patch $2FEB6 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down speed&lt;br /&gt;
%patch $2FED4 [$0000W $0000W]&lt;br /&gt;
%patch $2FEF2 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole is still&lt;br /&gt;
%patch $3111A [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen climb poles speed&lt;br /&gt;
%patch $31138 [$0000W $0008W]&lt;br /&gt;
%patch $31156 [$0000W $0008W]&lt;br /&gt;
%patch $31174 [$0000W $0008W]&lt;br /&gt;
&lt;br /&gt;
#Keen slide down poles speed&lt;br /&gt;
%patch $31192 [$0000W $0018W]&lt;br /&gt;
%patch $311B0 [$0000W $0018W]&lt;br /&gt;
%patch $311CE [$0000W $0018W]&lt;br /&gt;
%patch $311EC [$0000W $0018W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally speed&lt;br /&gt;
%patch $3120A [$0000W $0000W]&lt;br /&gt;
%patch $31228 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up speed&lt;br /&gt;
%patch $31246 [$0000W $0000W]&lt;br /&gt;
%patch $31264 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down speed&lt;br /&gt;
%patch $31282 [$0000W $0000W]&lt;br /&gt;
%patch $312A0 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole is still&lt;br /&gt;
%patch $31AA4 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen climb poles speed&lt;br /&gt;
%patch $31AC2 [$0000W $0008W]&lt;br /&gt;
%patch $31AE0 [$0000W $0008W]&lt;br /&gt;
%patch $31AFE [$0000W $0008W]&lt;br /&gt;
&lt;br /&gt;
#Keen slide down poles speed&lt;br /&gt;
%patch $31B1C [$0000W $0018W]&lt;br /&gt;
%patch $31B3A [$0000W $0018W]&lt;br /&gt;
%patch $31B58 [$0000W $0018W]&lt;br /&gt;
%patch $31B76 [$0000W $0018W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally speed&lt;br /&gt;
%patch $31B94 [$0000W $0000W]&lt;br /&gt;
%patch $31BB2 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up speed&lt;br /&gt;
%patch $31BD0 [$0000W $0000W]&lt;br /&gt;
%patch $31BEE [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down speed&lt;br /&gt;
%patch $31C0C [$0000W $0000W]&lt;br /&gt;
%patch $31C2A [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on pole is still&lt;br /&gt;
%patch $24BE8 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen climb poles speed&lt;br /&gt;
%patch $24C06 [$0000W $0000W]&lt;br /&gt;
%patch $24C24 [$0000W $0008W]&lt;br /&gt;
%patch $24C42 [$0000W $0008W]&lt;br /&gt;
%patch $24C60 [$0000W $0008W]&lt;br /&gt;
&lt;br /&gt;
#Keen slide down poles speed&lt;br /&gt;
%patch $24C7E [$0000W $0018W]&lt;br /&gt;
%patch $24C9C [$0000W $0018W]&lt;br /&gt;
%patch $24CBA [$0000W $0018W]&lt;br /&gt;
%patch $24CD8 [$0000W $0018W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally speed&lt;br /&gt;
%patch $24CF6 [$0000W $0000W]&lt;br /&gt;
%patch $24D14 [$0000W $0000W]&lt;br /&gt;
%patch $24D32 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up speed&lt;br /&gt;
%patch $24D50 [$0000W $0000W]&lt;br /&gt;
%patch $24D6E [$0000W $0000W]&lt;br /&gt;
%patch $24D8C [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down speed&lt;br /&gt;
%patch $24DAA [$0000W $0000W]&lt;br /&gt;
%patch $24DC8 [$0000W $0000W]&lt;br /&gt;
%patch $24DE6 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite collision|Sprite Collision]] ==&lt;br /&gt;
&lt;br /&gt;
These are the values of the sprite actions Keen uses when climbing poles. Pole climbing Keen uses his [[Patch:Keen (Keen 4)#Collision_2_code|second sprite collision]] also used by other actions such as [[Patch:Ledges|gripping ledges.]] See the linked page for patches that affect that collision code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 sprite collision values&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sit on poles&lt;br /&gt;
%patch $32B74 $0B801632RL&lt;br /&gt;
&lt;br /&gt;
#Keen climb up poles&lt;br /&gt;
%patch $32B92 $0B801632RL&lt;br /&gt;
%patch $32BB0 $0B801632RL&lt;br /&gt;
%patch $32BCE $0B801632RL&lt;br /&gt;
&lt;br /&gt;
#Keen slide down poles&lt;br /&gt;
%patch $32BEC $0B801632RL&lt;br /&gt;
%patch $32C0A $0B801632RL&lt;br /&gt;
%patch $32C28 $0B801632RL&lt;br /&gt;
%patch $32C46 $0B801632RL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $32C64 $0B801632RL&lt;br /&gt;
%patch $32C82 $0B801632RL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $32CA0 $0B801632RL&lt;br /&gt;
%patch $32CBE $0B801632RL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $32CDC $0B801632RL&lt;br /&gt;
%patch $32CFA $0B801632RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 sprite collision values&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sit on poles&lt;br /&gt;
%patch $31122 $0AAF167FRL&lt;br /&gt;
&lt;br /&gt;
#Keen go up pole&lt;br /&gt;
%patch $31140 $0AAF167FRL&lt;br /&gt;
%patch $3115E $0AAF167FRL&lt;br /&gt;
%patch $3117C $0AAF167FRL&lt;br /&gt;
&lt;br /&gt;
#Keen go down pole&lt;br /&gt;
%patch $3119A $0AAF167FRL&lt;br /&gt;
%patch $311B8 $0AAF167FRL&lt;br /&gt;
%patch $311D6 $0AAF167FRL&lt;br /&gt;
%patch $311F4 $0AAF167FRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $31212 $0AAF167FRL&lt;br /&gt;
%patch $31230 $0AAF167FRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $3124E $0AAF167FRL&lt;br /&gt;
%patch $3126C $0AAF167FRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $3128A $0AAF167FRL&lt;br /&gt;
%patch $312A8 $0AAF167FRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 sprite collision values&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sit on poles&lt;br /&gt;
%patch $31AAC $0AA2154CRL&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole&lt;br /&gt;
%patch $31ACA $0AA2154CRL&lt;br /&gt;
%patch $31AE8 $0AA2154CRL&lt;br /&gt;
%patch $31B06 $0AA2154CRL&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole&lt;br /&gt;
%patch $31B24 $0AA2154CRL&lt;br /&gt;
%patch $31B42 $0AA2154CRL&lt;br /&gt;
%patch $31B60 $0AA2154CRL&lt;br /&gt;
%patch $31B7E $0AA2154CRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $31B9C $0AA2154CRL&lt;br /&gt;
%patch $31BBA $0AA2154CRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $31BD8 $0AA2154CRL&lt;br /&gt;
%patch $31BF6 $0AA2154CRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $31C14 $0AA2154CRL&lt;br /&gt;
%patch $31C32 $0AA2154CRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams sprite collision values&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sit on poles&lt;br /&gt;
%patch $24C0E $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole&lt;br /&gt;
%patch $24C2C $05E817FCRL&lt;br /&gt;
%patch $24C4A $05E817FCRL&lt;br /&gt;
%patch $24C68 $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole&lt;br /&gt;
%patch $24C86 $05E817FCRL&lt;br /&gt;
%patch $24CA4 $05E817FCRL&lt;br /&gt;
%patch $24CC2 $05E817FCRL&lt;br /&gt;
%patch $24CE0 $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $24CFE $05E817FCRL&lt;br /&gt;
%patch $24D1C $05E817FCRL&lt;br /&gt;
%patch $24D3A $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $24D58 $05E817FCRL&lt;br /&gt;
%patch $24D76 $05E817FCRL&lt;br /&gt;
%patch $24D94 $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $24DB2 $05E817FCRL&lt;br /&gt;
%patch $24DD0 $05E817FCRL&lt;br /&gt;
%patch $24DEE $05E817FCRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite animations|Animations]] ==&lt;br /&gt;
&lt;br /&gt;
Pole related animations are cached with Keen&#039;s main animations whenever he is placed in a level. They can be broken into several groups. The first is Keen sitting on a pole, the second is climbing a pole, the first frame of which is the same as sitting on a pole. The third group is moving down a pole which consists of four unique animations.&lt;br /&gt;
&lt;br /&gt;
Then there are three shooting on poles groups. Each uses the same animation(s) for its first and second frames and has different animations for whether Keen is facing left or right.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sitting on a pole&lt;br /&gt;
%patch $2FD60 $00BBW $00B4W&lt;br /&gt;
%patch $2FD6A $0000W        #Wait for key press&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole&lt;br /&gt;
%patch $2FD7E $00BBW $00B4W&lt;br /&gt;
%patch $2FD88 $0008W&lt;br /&gt;
%patch $2FD9C $00BCW $00B5W&lt;br /&gt;
%patch $2FDA6 $0008W&lt;br /&gt;
%patch $2FDBA $00BDW $00B6W&lt;br /&gt;
%patch $2FDC4 $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole&lt;br /&gt;
%patch $2FDD8 $00B7W $00B7W&lt;br /&gt;
%patch $2FDE2 $0008W&lt;br /&gt;
%patch $2FDF6 $00B8W $00B8W&lt;br /&gt;
%patch $2FE00 $0008W&lt;br /&gt;
%patch $2FE14 $00B9W $00B9W&lt;br /&gt;
%patch $2FE1E $0008W&lt;br /&gt;
%patch $2FE32 $00BAW $00BAW&lt;br /&gt;
%patch $2FE3C $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $2FE50 $00C2W $00C3W&lt;br /&gt;
%patch $2FE5A $0009W        #Pause before shooting&lt;br /&gt;
%patch $2FE6E $00C2W $00C3W&lt;br /&gt;
%patch $2FE78 $0006W        #Pause before going back&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $2FE8C $00BEW $00BFW&lt;br /&gt;
%patch $2FE96 $0009W        #Pause before shooting&lt;br /&gt;
%patch $2FEAA $00BEW $00BFW&lt;br /&gt;
%patch $2FEB4 $0006W        #Pause before going back&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $2FEC8 $00C1W $00C0W&lt;br /&gt;
%patch $2FED2 $0009W        #Pause before shooting&lt;br /&gt;
%patch $2FEE6 $00C1W $00C0W&lt;br /&gt;
%patch $2FEF0 $0006W        #Pause before going back&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sitting on a pole&lt;br /&gt;
%patch $3110E $00A6W $009FW #Sit on pole&lt;br /&gt;
%patch $31118 $0000W        #Wait for Keypress&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole&lt;br /&gt;
%patch $3112C $00A6W $009FW&lt;br /&gt;
%patch $31136 $0008W&lt;br /&gt;
%patch $3114A $00A7W $00A0W&lt;br /&gt;
%patch $31154 $0008W&lt;br /&gt;
%patch $31168 $00A8W $00A1W&lt;br /&gt;
%patch $31172 $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole&lt;br /&gt;
%patch $31186 $00A2W $00A2W&lt;br /&gt;
%patch $31190 $0008W&lt;br /&gt;
%patch $311A4 $00A3W $00A3W&lt;br /&gt;
%patch $311AE $0008W&lt;br /&gt;
%patch $311C2 $00A4W $00A4W&lt;br /&gt;
%patch $311CC $0008W&lt;br /&gt;
%patch $311E0 $00A5W $00A5W&lt;br /&gt;
%patch $311EA $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $311FE $00ADW $00AEW&lt;br /&gt;
%patch $31208 $0009W        #Pause before shot&lt;br /&gt;
%patch $3121C $00ADW $00AEW&lt;br /&gt;
%patch $31226 $0006W        #Pause before stop shooting&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $3123A $00A9W $00AAW&lt;br /&gt;
%patch $31244 $0009W        #Pause before shot&lt;br /&gt;
%patch $31258 $00A9W $00AAW&lt;br /&gt;
%patch $31262 $0006W        #Pause before stop shooting&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $31276 $00ACW $00ABW&lt;br /&gt;
%patch $31280 $0009W        #Pause before shot&lt;br /&gt;
%patch $31294 $00ACW $00ABW&lt;br /&gt;
%patch $3129E $0006W        #Pause before stop shooting&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sitting on a pole&lt;br /&gt;
%patch $31A98 $006DW $0066W&lt;br /&gt;
%patch $31AA2 $0000W        #Wait for key press&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole&lt;br /&gt;
%patch $31AB6 $006DW $0066W&lt;br /&gt;
%patch $31AC0 $0008W&lt;br /&gt;
%patch $31AD4 $006EW $0067W&lt;br /&gt;
%patch $31ADE $0008W&lt;br /&gt;
%patch $31AF2 $006FW $0068W&lt;br /&gt;
%patch $31AFC $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole&lt;br /&gt;
%patch $31B10 $0069W $0069W&lt;br /&gt;
%patch $31B1A $0008W&lt;br /&gt;
%patch $31B2E $006AW $006AW&lt;br /&gt;
%patch $31B38 $0008W&lt;br /&gt;
%patch $31B4C $006BW $006BW&lt;br /&gt;
%patch $31B56 $0008W&lt;br /&gt;
%patch $31B6A $00C$W $006CW4&lt;br /&gt;
%patch $31B74 $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $31B88 $0074W $0075W&lt;br /&gt;
%patch $31B92 $0009W        #Pause before shooting&lt;br /&gt;
%patch $31BA6 $0074W $0075W&lt;br /&gt;
%patch $31BB0 $0006W        #Pause before going back&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $31BC4 $0070W $0071W&lt;br /&gt;
%patch $31BCE $0009W        #Pause before shooting&lt;br /&gt;
%patch $31BE2 $0070W $0071W&lt;br /&gt;
%patch $31BEC $0006W        #Pause before going back&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $31C00 $0073W $0072W&lt;br /&gt;
%patch $31C0A $0009W        #Pause before shooting&lt;br /&gt;
%patch $31C1E $0073W $0072W&lt;br /&gt;
%patch $31C28 $0006W        #Pause before going back&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen sitting on a pole&lt;br /&gt;
%patch $24BFA $0091W $008AW&lt;br /&gt;
%patch $24C04 $0000W        #Wait for key press&lt;br /&gt;
&lt;br /&gt;
#Keen going up a pole&lt;br /&gt;
%patch $24C18 $0091W $008AW&lt;br /&gt;
%patch $24C22 $0008W&lt;br /&gt;
%patch $24C36 $0092W $008BW&lt;br /&gt;
%patch $24C40 $0008W&lt;br /&gt;
%patch $24C54 $0093W $008CW&lt;br /&gt;
%patch $24C5E $0008W&lt;br /&gt;
%patch $24C72 $008DW $008DW&lt;br /&gt;
%patch $24C7C $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen going down a pole&lt;br /&gt;
%patch $24C90 $008EW $008EW&lt;br /&gt;
%patch $24C9A $0008W&lt;br /&gt;
%patch $24CAE $008FW $008FW&lt;br /&gt;
%patch $24CB8 $0008W&lt;br /&gt;
%patch $24CCC $0090W $0090W&lt;br /&gt;
%patch $24CD6 $0008W&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot horizontally&lt;br /&gt;
%patch $24CEA $0094W $0096W&lt;br /&gt;
%patch $24CF4 $0008W        #Pause before shooting&lt;br /&gt;
%patch $24D08 $0095W $0097W&lt;br /&gt;
%patch $24D12 $0001W&lt;br /&gt;
%patch $24D26 $0095W $0097W&lt;br /&gt;
%patch $24D30 $000AW        #Pause before going back&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot up&lt;br /&gt;
%patch $24D44 $0098W $009DW&lt;br /&gt;
%patch $24D4E $0008W        #Pause before shooting&lt;br /&gt;
%patch $24D62 $0099W $009EW&lt;br /&gt;
%patch $24D6C $0001W&lt;br /&gt;
%patch $24D80 $0099W $009EW&lt;br /&gt;
%patch $24D8A $000AW        #Pause before going back&lt;br /&gt;
&lt;br /&gt;
#Keen on pole shoot down&lt;br /&gt;
%patch $24D9E $009FW $009AW&lt;br /&gt;
%patch $24DA8 $0008W        #Pause before shooting&lt;br /&gt;
%patch $24DBC $00A0W $009BW&lt;br /&gt;
%patch $24DC6 $0001W&lt;br /&gt;
%patch $24DDA $00A0W $009BW&lt;br /&gt;
%patch $24DE4 $000AW        #Pause before going back&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite Sounds|Sounds]] ==&lt;br /&gt;
&lt;br /&gt;
There are several sounds that relate to Keen being on poles. The first is played when Keen jumps off a pole, it can also be considered a jump sound. The second is played when Keen moves left or right at the top of a pole and falls off. The third is played when Keen moves down off the bottom of a pole. All three sounds can be blocked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on poles sounds&lt;br /&gt;
%patch $C690 $02     #Keen jump off pole sound&lt;br /&gt;
%patch $C76A $14     #Keen move l/r off a pole top sound&lt;br /&gt;
%patch $C86B $14     #Keen moves of pole end sound&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play sounds&lt;br /&gt;
%patch $C68F $EB $0A #Don&#039;t play Keen jump off pole sound&lt;br /&gt;
%patch $C769 $EB $0A #Don&#039;t play Keen move l/r off a pole top sound&lt;br /&gt;
%patch $C86A $EB $0A #Don&#039;t play Keen moves of pole end sound&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on poles sounds&lt;br /&gt;
%patch $BAAE $02     #Keen jump off pole sound&lt;br /&gt;
%patch $BB88 $14     #Keen move l/r off a pole top sound&lt;br /&gt;
%patch $BC89 $14     #Keen moves of pole end sound&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play sounds&lt;br /&gt;
%patch $BAAD $EB $0A #Don&#039;t play Keen jump off pole sound&lt;br /&gt;
%patch $BB87 $EB $0A #Don&#039;t play Keen move l/r off a pole top sound&lt;br /&gt;
%patch $BC88 $EB $0A #Don&#039;t play Keen moves of pole end sound&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on poles sounds&lt;br /&gt;
%patch $B891 $02     #Keen jump off pole sound&lt;br /&gt;
%patch $B96B $14     #Keen move l/r off a pole top sound&lt;br /&gt;
%patch $BA6C $14     #Keen moves of pole end sound&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play sounds&lt;br /&gt;
%patch $B890 $EB $0A #Don&#039;t play Keen jump off pole sound&lt;br /&gt;
%patch $B96A $EB $0A #Don&#039;t play Keen move l/r off a pole top sound&lt;br /&gt;
%patch $BA6B $EB $0A #Don&#039;t play Keen moves of pole end sound&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen on poles sounds&lt;br /&gt;
%patch $7204 $02     #Keen jump off pole sound&lt;br /&gt;
%patch $7314 $19     #Keen move l/r off a pole top sound&lt;br /&gt;
%patch $73F2 $19     #Keen moves of pole end sound&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t play sounds&lt;br /&gt;
%patch $7203 $EB $09 #Don&#039;t play Keen jump off pole sound&lt;br /&gt;
%patch $7313 $EB $09 #Don&#039;t play Keen move l/r off a pole top sound&lt;br /&gt;
%patch $73F1 $EB $09 #Don&#039;t play Keen moves of pole end sound&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite clipping and foreground|Clipping]] ==&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s clipping is set to 0 when he jumps onto poles, allowing him to move vertically through solid ground with poles going through it. It must be restored to a value of 1 when he leaves a pole. This can happen in several ways.&lt;br /&gt;
&lt;br /&gt;
The first is by moving down a pole onto solid ground, which can happen if Keen is on a pole that goes right to the floor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Pole clipping&amp;quot;&amp;gt;&lt;br /&gt;
#Pole clipping -Keen 4&lt;br /&gt;
%patch $B921 [$0000W] #No clipping when grabbing a pole&lt;br /&gt;
%patch $D8C1 [$0001W] #Clipping restored when moving down to ground.&lt;br /&gt;
&lt;br /&gt;
#Pole clipping -Keen 5&lt;br /&gt;
%patch $AC03 [$0000W] #No clipping when grabbing a pole&lt;br /&gt;
&lt;br /&gt;
#Pole clipping -Keen 6&lt;br /&gt;
%patch $AB37 [$0000W] #No clipping when grabbing a pole&lt;br /&gt;
&lt;br /&gt;
#Pole clipping -Keen Dreams&lt;br /&gt;
%patch $6C8B [$0000W] #No clipping when grabbing a pole&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sprite-tile interaction|Sprite-tile interaction]] ==&lt;br /&gt;
&lt;br /&gt;
Keen uses two different tile interactions when on poles. The first is used for Keen &#039;floating&#039; in various situations and is used when Keen is sitting on a pole or moving up it. The second is unique and used for Keen moving down a pole and involves checks that let him fall off of pole bottoms.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $2FD78 $0B801A7BRL&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $2FD96 $0B801A7BRL&lt;br /&gt;
%patch $2FDB4 $0B801A7BRL&lt;br /&gt;
%patch $2FDD2 $0B801A7BRL&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $2FDF0 $0B802071RL&lt;br /&gt;
%patch $2FE0E $0B802071RL&lt;br /&gt;
%patch $2FE2C $0B802071RL&lt;br /&gt;
%patch $2FE4A $0B802071RL&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $2FE68 $0B801A7BRL&lt;br /&gt;
%patch $2FE86 $0B801A7BRL&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $2FEA4 $0B801A7BRL&lt;br /&gt;
%patch $2FEC2 $0B801A7BRL&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $2FEE0 $0B801A7BRL&lt;br /&gt;
%patch $2FEFE $0B801A7BRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $31126 $0AAF1A9FRL&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $31144 $0AAF1A9FRL&lt;br /&gt;
%patch $31162 $0AAF1A9FRL&lt;br /&gt;
%patch $31180 $0AAF1A9FRL&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $3119E $0AAF2145RL&lt;br /&gt;
%patch $311BC $0AAF2145RL&lt;br /&gt;
%patch $311DA $0AAF2145RL&lt;br /&gt;
%patch $311F8 $0AAF2145RL&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $31216 $0AAF1A9FRL&lt;br /&gt;
%patch $31234 $0AAF1A9FRL&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $31252 $0AAF1A9FRL&lt;br /&gt;
%patch $31270 $0AAF1A9FRL&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $3128E $0AAF1A9FRL&lt;br /&gt;
%patch $312AC $0AAF1A9FRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $31AB0 $11171955RL&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $31ACE $11171955RL&lt;br /&gt;
%patch $31AEC $11171955RL&lt;br /&gt;
%patch $31B0A $11171955RL&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $31B28 $11171FC8RL&lt;br /&gt;
%patch $31B46 $11171FC8RL&lt;br /&gt;
%patch $31B64 $11171FC8RL&lt;br /&gt;
%patch $31B82 $11171FC8RL&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $31BA0 $11171955RL&lt;br /&gt;
%patch $31BBE $11171955RL&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $31BDC $11171955RL&lt;br /&gt;
%patch $31BFA $11171955RL&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $31C18 $11171955RL&lt;br /&gt;
%patch $31C36 $11171955RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $24C12 $05E81ABARL&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $24C30 $05E81ABARL&lt;br /&gt;
%patch $24C4E $05E81ABARL&lt;br /&gt;
%patch $24C6C $05E81ABARL&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $24C8A $05E81ABARL&lt;br /&gt;
%patch $24CA8 $05E81ABARL&lt;br /&gt;
%patch $24CC6 $05E81ABARL&lt;br /&gt;
%patch $24CE4 $05E81ABARL&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $24D02 $05E81ABARL&lt;br /&gt;
%patch $24D20 $05E81ABARL&lt;br /&gt;
%patch $24D3E $05E81ABARL&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $24D5C $05E81ABARL&lt;br /&gt;
%patch $24D7A $05E81ABARL&lt;br /&gt;
%patch $24D98 $05E81ABARL&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $24DB6 $05E81ABARL&lt;br /&gt;
%patch $24DD4 $05E81ABARL&lt;br /&gt;
%patch $24DF2 $05E81ABARL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Action_Type|Action type]] ==&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s pole action types are interesting. When sitting still on a pole he must react quickly to input but isn&#039;t moving and so is type 2. When moving up poles he also must react quickly, but also move, so these actions are type 4. When moving down poles he must move smoothly but doesn&#039;t react quickly using type 1 actions.&lt;br /&gt;
&lt;br /&gt;
When shooting on a pole Keen doesn&#039;t need to move or react so uses type 0 actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $2FD64 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $2FD82 [$0004W]&lt;br /&gt;
%patch $2FDA0 [$0004W]&lt;br /&gt;
%patch $2FDBE [$0004W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $2FDDC [$0001W]&lt;br /&gt;
%patch $2FDFA [$0001W]&lt;br /&gt;
%patch $2FE18 [$0001W]&lt;br /&gt;
%patch $2FE36 [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $2FE54 [$0000W]&lt;br /&gt;
%patch $2FE72 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $2FE90 [$0000W]&lt;br /&gt;
%patch $2FEAE [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $2FECC [$0000W]&lt;br /&gt;
%patch $2FEEA [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $31112 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $31130 [$0004W]&lt;br /&gt;
%patch $3114E [$0004W]&lt;br /&gt;
%patch $3116C [$0004W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $3118A [$0001W]&lt;br /&gt;
%patch $311A8 [$0001W]&lt;br /&gt;
%patch $311C6 [$0001W]&lt;br /&gt;
%patch $311E4 [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $31202 [$0000W]&lt;br /&gt;
%patch $31220 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $3123E [$0000W]&lt;br /&gt;
%patch $3125C [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $3127A [$0000W]&lt;br /&gt;
%patch $31298 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $31A9C [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $31ABA [$0004W]&lt;br /&gt;
%patch $31AD8 [$0004W]&lt;br /&gt;
%patch $31AF6 [$0004W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $31B14 [$0001W]&lt;br /&gt;
%patch $31B32 [$0001W]&lt;br /&gt;
%patch $31B50 [$0001W]&lt;br /&gt;
%patch $31B6E [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $31B8C [$0000W]&lt;br /&gt;
%patch $31BAA [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $31BC8 [$0000W]&lt;br /&gt;
%patch $31BE6 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $31C04 [$0000W]&lt;br /&gt;
%patch $31C22 [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $24BFE [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $24C1C [$0004W]&lt;br /&gt;
%patch $24C3A [$0004W]&lt;br /&gt;
%patch $24C58 [$0004W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $24C76 [$0001W]&lt;br /&gt;
%patch $24C94 [$0001W]&lt;br /&gt;
%patch $24CB2 [$0001W]&lt;br /&gt;
%patch $24CD0 [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $24CEE [$0000W]&lt;br /&gt;
%patch $24D0C [$0000W]&lt;br /&gt;
%patch $24D2A [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $24D48 [$0000W]&lt;br /&gt;
%patch $24D66 [$0000W]&lt;br /&gt;
%patch $24D84 [$0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $24DA2 [$0000W]&lt;br /&gt;
%patch $24DC0 [$0000W]&lt;br /&gt;
%patch $24DDE [$0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] ==&lt;br /&gt;
&lt;br /&gt;
Keen has no need for either of these variables and so uses a value of 0 for both in all of its actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $2FD66 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $2FD84 [$0000W $0000W]&lt;br /&gt;
%patch $2FDA2 [$0000W $0000W]&lt;br /&gt;
%patch $2FDC0 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $2FDDE [$0000W $0000W]&lt;br /&gt;
%patch $2FDFC [$0000W $0000W]&lt;br /&gt;
%patch $2FE1A [$0000W $0000W]&lt;br /&gt;
%patch $2FE38 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $2FE56 [$0000W $0000W]&lt;br /&gt;
%patch $2FE74 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $2FE92 [$0000W $0000W]&lt;br /&gt;
%patch $2FEB0 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $2FECE [$0000W $0000W]&lt;br /&gt;
%patch $2FEEC [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $31114 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $31132 [$0000W $0000W]&lt;br /&gt;
%patch $31150 [$0000W $0000W]&lt;br /&gt;
%patch $3116E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $3118C [$0000W $0000W]&lt;br /&gt;
%patch $311AA [$0000W $0000W]&lt;br /&gt;
%patch $311C8 [$0000W $0000W]&lt;br /&gt;
%patch $311E6 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $31204 [$0000W $0000W]&lt;br /&gt;
%patch $31222 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $31240 [$0000W $0000W]&lt;br /&gt;
%patch $3125E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $3127C [$0000W $0000W]&lt;br /&gt;
%patch $3129A [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $31A9E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $31ABC [$0000W $0000W]&lt;br /&gt;
%patch $31ADA [$0000W $0000W]&lt;br /&gt;
%patch $31AF8 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $31B16 [$0000W $0000W]&lt;br /&gt;
%patch $31B34 [$0000W $0000W]&lt;br /&gt;
%patch $31B52 [$0000W $0000W]&lt;br /&gt;
%patch $31B70 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $31B8E [$0000W $0000W]&lt;br /&gt;
%patch $31BAC [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $31BCA [$0000W $0000W]&lt;br /&gt;
%patch $31BE8 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $31C06 [$0000W $0000W]&lt;br /&gt;
%patch $31C24 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Sitting on poles&lt;br /&gt;
%patch $24C00 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move up poles&lt;br /&gt;
%patch $24C1E [$0000W $0000W]&lt;br /&gt;
%patch $24C3C [$0000W $0000W]&lt;br /&gt;
%patch $24C5A [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Move down poles&lt;br /&gt;
%patch $24C78 [$0000W $0000W]&lt;br /&gt;
%patch $24C96 [$0000W $0000W]&lt;br /&gt;
%patch $24CB4 [$0000W $0000W]&lt;br /&gt;
%patch $24CD2 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot l/r on poles&lt;br /&gt;
%patch $24CF0 [$0000W $0000W]&lt;br /&gt;
%patch $24D0E [$0001W $0000W]&lt;br /&gt;
%patch $24D2C [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot up on poles&lt;br /&gt;
%patch $24D4A [$0000W $0000W]&lt;br /&gt;
%patch $24D68 [$0001W $0000W]&lt;br /&gt;
%patch $24D86 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Shoot down on poles&lt;br /&gt;
%patch $24DA4 [$0000W $0000W]&lt;br /&gt;
%patch $24DC2 [$0001W $0000W]&lt;br /&gt;
%patch $24DE0 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Player|}}&lt;br /&gt;
{{PatchCategories|Tiles|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Bridges_and_switches&amp;diff=41231</id>
		<title>Patch:Bridges and switches</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Bridges_and_switches&amp;diff=41231"/>
		<updated>2019-12-22T01:06:36Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Big page rearrangement and new patches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Keen games use bridges and switches in every episode except [[Keen Dreams|Dreams.]] Bridge switches change the tiles in a level, namely by adding\removing solid tiles Keen can walk across (bridges.) Keen Vorticons has a unique [[Patch:Light switch|&#039;light switch&#039;]] to change the level&#039;s palette and Keen Galaxy has unique &#039;platform switches&#039; that alter the paths of [[Patch:Platform|moving platforms.]]&lt;br /&gt;
&lt;br /&gt;
Because of the fundamentally different ways in which the Vorticons and Galaxy games treat bridges and switches this page is divided into two main sections. The first deals with the Vorticons games while the second deals with the Galaxy games. There is also a section providing links to related pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Related pages =&lt;br /&gt;
	.&lt;br /&gt;
* [[Patch:Earth Explodes]]: Patches relating to flipping a [[Patch:Tantalus ray|Tantalus switch.]]&lt;br /&gt;
* [[Patch:Keen Flipping Switches]]: Patches altering Keen when he flips switches in Galaxy games.&lt;br /&gt;
* [[Patch:Light switch]]: A special type of switch that turns lights off\on in Vorticons.&lt;br /&gt;
* [[Patch:Tiles]]: Other tile properties and how Keen interacts with them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Switches and bridges in Keen Vorticons =&lt;br /&gt;
&lt;br /&gt;
== How switches and bridges work ==&lt;br /&gt;
&lt;br /&gt;
A switch tile is a tile that, when Keen presses pogo while touching it, will cause a bridge to extend\retract in the level. A bridge consists of a row of a single tile, the &#039;bridge block&#039; When Keen flicks a switch, it animates and the bridge is affected. Switches can be turned &#039;on&#039; and &#039;off&#039; (or vice versa).&lt;br /&gt;
&lt;br /&gt;
In order to work correctly a switch needs several things. Firstly it needs TWO tiles, on and off. These tiles should be given the correct tile property, &#039;Switch on&#039; and &#039;Switch off&#039; (See [[Tileinfo]]) These two tiles should also be patched to animate into each other (See below.) If a switch is not patched to animate, it will not do so, but bridges will still be affected by it.&lt;br /&gt;
&lt;br /&gt;
A bridge starts off absent. When a switch is flicked the bridge begins to grow. It will grow to replace all tiles to the right of its starting tile that are the SAME as its starting tile. (Unless patched.) This is seen in most levels as a bridge growing across between two walls, but even non-solid tile will &#039;block&#039; a bridge. When a bridge is retracted it will do the opposite, replacing the replaced tiles with the same tile as its starting tile used to be.&lt;br /&gt;
&lt;br /&gt;
There are complications to this. A bridge does not remember what was &#039;behind&#039; it, it only remembers where it started, where it ended and what tile was originally at its start point. When a bridge retracts it looks at its end point and starts replacing tiles to the left of it with the same tile as was at its starting point until it can find no more bridge tiles. This means that if a bridge has bridge blocks to the left of its start point, when retracted it will replace them too, &#039;undershooting&#039; its start point. (This can be used to make bridges that &#039;start out&#039; extended.)&lt;br /&gt;
&lt;br /&gt;
On rare occasions a bridge may grow left instead of right, usually when the only &#039;same&#039; tiles are to the left of its start point. If a bridge manages to move off the right edge of the level (The level edge blocks must be the same tile as the bridge is growing through!) it will appear on the other side of the level, one row down.&lt;br /&gt;
&lt;br /&gt;
The location of a switches bridge depends on the value of the sprite placed over the switch. The switch is seen as 0,0 and an &#039;unsprited&#039; switch will simply turn into a bridge tile. Every tile right counts as +1 and every row down as +256 (Left -1, up -256) This means bridges are &#039;limited&#039; to +-256 tiles in all directions. This also means that moving a switch moves the bridge too. (As with all hex numbers, a negative value is 65536 - value.) A simple example is a value of 513 ($201) will make a bridge at Keen&#039;s feet, 1 tile right of the switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Switch tile ==&lt;br /&gt;
&lt;br /&gt;
Only Keen 2 has a working switch tile set up by default, but this is easily changed in other games. To work the &#039;switch on&#039; tile must be patched to animate into the &#039;switch off&#039; tile and must have the tile property &#039;switch on&#039; (The same is true foe the &#039;switch off&#039; tile.) This makes a switch that can be flicked any number of times, animating each time.&lt;br /&gt;
&lt;br /&gt;
The simplest way to add switches to Keen 1 and Keen 3 is just to edit the tile properties of the same tiles as are used in the Keen 2 tileset. This won&#039;t even require any patching.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Change the animating switch&lt;br /&gt;
%patch $36DB $01E0W #This tile when flipped becomes...&lt;br /&gt;
%patch $36E0 $01EDW #This tile and...&lt;br /&gt;
%patch $36FC $01EDW #This tile when flipped becomes...&lt;br /&gt;
%patch $3716 $01E0W #This tile.&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Change the animating switch&lt;br /&gt;
%patch $651D $01E0W #This tile when flipped becomes...&lt;br /&gt;
%patch $6522 $01EDW #This tile and...&lt;br /&gt;
%patch $653E $01EDW #This tile when flipped becomes...&lt;br /&gt;
%patch $6558 $01E0W #This tile.&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Change the animating switch&lt;br /&gt;
%patch $6D7B $01E0W #This tile when flipped becomes...&lt;br /&gt;
%patch $6D80 $01EDW #This tile and...&lt;br /&gt;
%patch $6D9C $01EDW #This tile when flipped becomes...&lt;br /&gt;
%patch $6DB6 $01E0W #This tile.&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch becomes next tile ===&lt;br /&gt;
&lt;br /&gt;
This patch allows any tile to be a switch tile. (And doesn&#039;t affect light switches.) When a switch is flipped it turns into the next tile. This allows many different working switches in a tileset, but generally means they can only be used once as there is no way to reverse the process. The blue value is the number of tiles to &#039;jump&#039;, and this doesn&#039;t have to be 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Switch tiles change to the next in the tileset when flipped&amp;quot;&amp;gt;&lt;br /&gt;
#Switch tiles change to the next in the tileset when flipped -Keen 1&lt;br /&gt;
%patch $36DA $05 $0001W  $26 $89 $07 $EB $4B&lt;br /&gt;
&lt;br /&gt;
#Switch tiles change to the next in the tileset when flipped -Keen 2&lt;br /&gt;
%patch $651C $05 $0001W  $26 $89 $07 $EB $4B&lt;br /&gt;
&lt;br /&gt;
#Switch tiles change to the next in the tileset when flipped -Keen 3&lt;br /&gt;
%patch $6D7A $05 $0001W  $26 $89 $07 $EB $4A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bridge tile and extension speed ==&lt;br /&gt;
&lt;br /&gt;
These patches change what tile the bridge is made of and how fast it &#039;grows&#039;. As noted an extended bridge is composed of only one tile and a retracting bridge can only remove one tile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Bridge block&lt;br /&gt;
%patch $4AEE $010EW #When building&lt;br /&gt;
%patch $4B3D $010EW #When removing&lt;br /&gt;
&lt;br /&gt;
#Bridge extension time (Per block, set both the same)&lt;br /&gt;
%patch $4AA0 $0C&lt;br /&gt;
%patch $4AA6 $0C&lt;br /&gt;
&lt;br /&gt;
#Bridge retraction time (Per block, set both the same)&lt;br /&gt;
%patch $4B0F $0C&lt;br /&gt;
%patch $4B15 $0C&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Change the bridge block (in this it&#039;s changed to tile 480)&lt;br /&gt;
%patch $7852 $01E0W #When building&lt;br /&gt;
%patch $78A1 $01E0W #When removing&lt;br /&gt;
&lt;br /&gt;
#Bridge extension time (set both the same)&lt;br /&gt;
%patch $7804 $0C&lt;br /&gt;
%patch $780A $0C&lt;br /&gt;
&lt;br /&gt;
#Bridge retraction time (set both the same)&lt;br /&gt;
%patch $7873 $0C&lt;br /&gt;
%patch $7879 $0C&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Change the bridge block (in this it&#039;s changed to tile 480)&lt;br /&gt;
%patch $80F5 $01E0W #When building&lt;br /&gt;
%patch $8146 $01E0W #When removing&lt;br /&gt;
&lt;br /&gt;
#Bridge extension time (set both the same)&lt;br /&gt;
%patch $80A5 $0C&lt;br /&gt;
%patch $80AD $0C&lt;br /&gt;
&lt;br /&gt;
#Bridge retraction time (set both the same)&lt;br /&gt;
%patch $8116 $0C&lt;br /&gt;
%patch $811E $0C&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bridges can cover multiple different tiles ===&lt;br /&gt;
&lt;br /&gt;
These two patches alter the [[Patch:Jump conditions|stop condition]] of the bridge. By default bridges stop growing when they hit a tile that is not the same as the last tile. This means that only one kind of tile per bridge can be built over. The patches below modify this so a range of tiles can be overwritten.&lt;br /&gt;
&lt;br /&gt;
When using only &#039;&#039;one&#039;&#039; of the following patches a bridge will be able to pass through any number of different tiles until it encounters one that is before or after the bridges first (origin) tile. When the bridge is retracted these diverse tiles will &#039;&#039;not&#039;&#039; be replaced, causing the bridge to &#039;erase&#039; them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Bridges stop growing ONLY when they find a tile...&lt;br /&gt;
%patch $4ACB $7D #Before the origin tile in the tileset&lt;br /&gt;
%patch $4ACB $7C #After the origin tile in the tileset&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Bridges stop growing ONLY when they find a tile...&lt;br /&gt;
%patch $782F $7D #Before the origin tile in the tileset&lt;br /&gt;
%patch $782F $7C #After the origin tile in the tileset&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Bridges stop growing ONLY when they find a tile...&lt;br /&gt;
%patch $80D2 $7D #Before the origin tile in the tileset&lt;br /&gt;
%patch $80D2 $7C #After the origin tile in the tileset&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[Patch:Sounds|Switch sounds]] ==&lt;br /&gt;
&lt;br /&gt;
This sound is also used for the [[Patch:Light switch|light switches]] in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
%patch $35DB [$19]     #Keen flip switch sound&lt;br /&gt;
%patch $35DA $EB $07 #Keen flip switch sound disabled&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
%patch $641D [$19]     #Keen flip switch sound&lt;br /&gt;
%patch $641C $EB $07 #Keen flip switch sound disabled&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
%patch $6C7E [$19]     #Keen flip switch sound&lt;br /&gt;
%patch $6C7D $EB $06 #Keen flip switch sound disabled&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable bridges ==&lt;br /&gt;
&lt;br /&gt;
This disables bridges entirely, but switches still work; they can be flipped and make a sound.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Disable bridges but not switches&amp;quot;&amp;gt;&lt;br /&gt;
#Disable bridges but not switches -Keen 1&lt;br /&gt;
%patch $4ACB $90 $90&lt;br /&gt;
&lt;br /&gt;
#Disable bridges but not switches -Keen 2&lt;br /&gt;
%patch $782F $90 $90&lt;br /&gt;
&lt;br /&gt;
#Disable bridges but not switches -Keen 3&lt;br /&gt;
%patch $80D2 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable bridge retraction ==&lt;br /&gt;
&lt;br /&gt;
This patch stops bridges from retracting; Keen can extend the bridge, but then it is stuck there and cannot be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Disable bridge retraction -Keen 1&lt;br /&gt;
%patch $4B3F $7C&lt;br /&gt;
&lt;br /&gt;
#Disable bridge retraction -Keen 2&lt;br /&gt;
%patch $78A3 $7C&lt;br /&gt;
&lt;br /&gt;
#Disable bridge retraction -Keen 3&lt;br /&gt;
%patch $8148 $7C&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bridges work only once ==&lt;br /&gt;
&lt;br /&gt;
This patch allows a bridge to be extended and removed, but not extended again.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;One shot bridges&amp;quot;&amp;gt;&lt;br /&gt;
#One shot bridges -Keen 1&lt;br /&gt;
%patch $4B43 $40&lt;br /&gt;
&lt;br /&gt;
#One shot bridges -Keen 2&lt;br /&gt;
%patch $78A7 $40&lt;br /&gt;
&lt;br /&gt;
#One shot bridges -Keen 3&lt;br /&gt;
%patch $814C $40&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tantalus Switches ==&lt;br /&gt;
&lt;br /&gt;
&#039;Tantalus switches&#039; are switches that initiate the [[Patch:Earth Explodes|&#039;earth explodes&#039;]] sequence in [[Keen 2]]. They are also present in the other Vorticons episodes but not used. They are switches that have a specific tile at a specific location relative to them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== No Tantalus switches ===&lt;br /&gt;
&lt;br /&gt;
This patch makes it so that there is no such thing as a Tantalus switch; all switches behave the same, that is, as bridge switches.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;No Tantalus switches&amp;quot;&amp;gt;&lt;br /&gt;
#No Tantalus switches -Keen 1&lt;br /&gt;
%patch $3603 $90 $90&lt;br /&gt;
&lt;br /&gt;
#No Tantalus switches -Keen 2&lt;br /&gt;
%patch $6445 $90 $90&lt;br /&gt;
&lt;br /&gt;
#No Tantalus switches -Keen 3&lt;br /&gt;
%patch $6CA5 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Screen shake and oops ===&lt;br /&gt;
&lt;br /&gt;
This section contains patches that relate to the screen shaking and the &#039;oops&#039; textbox which occurs in the same location Keen was in when he accidentally flips a Tantalus switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Skip shake and oops ====&lt;br /&gt;
&lt;br /&gt;
In [[Keen 2]] this patch skips the shake and &#039;oops&#039; textbox; the game goes straight to the Vortiship firing sequence, in other episode it renders the switch useless.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Skip shake and oops box -Keen 1&lt;br /&gt;
%patch $3608 $E9 $00A8&lt;br /&gt;
&lt;br /&gt;
#Skip shake and oops box -Keen 2&lt;br /&gt;
%patch $644A $E9 $00A8W&lt;br /&gt;
&lt;br /&gt;
#Skip shake and oops box -Keen 3&lt;br /&gt;
%patch $6CAA $E9 $00A3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shake strength ===&lt;br /&gt;
&lt;br /&gt;
There are two variables that control he severity of the screen shaking. One horizontal, one vertical. The sequence works best when both are the same. The amount of shaking is in tiles * $10, so the default is 4 tiles both ways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Screen shake strength&lt;br /&gt;
%patch $362B [$0040W] #Horizontal&lt;br /&gt;
%patch $364E [$0040W] #Vertical&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Screen shake strength&lt;br /&gt;
%patch $646D [$0040W] #Horizontal&lt;br /&gt;
%patch $6490 [$0040W] #Vertical&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Screen shake strength&lt;br /&gt;
%patch $6CCD [$0040W] #Horizontal&lt;br /&gt;
%patch $6CEF [$0040W] #Vertical&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== No shake ====&lt;br /&gt;
&lt;br /&gt;
These patches stop the screen shaking. The first holds the screen still for some time while the second simply brings up the &#039;oops&#039; textbox immediately, no pause.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#No screen  shake: long pause&lt;br /&gt;
%patch $3651 $90 $90 $90&lt;br /&gt;
%patch $362E $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#No screen  shake: no pause&lt;br /&gt;
%patch $3626 $6C&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#No screen  shake: long pause&lt;br /&gt;
%patch $6493 $90 $90 $90&lt;br /&gt;
%patch $6470 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#No screen  shake: no pause&lt;br /&gt;
%patch $6468 $6C&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#No screen  shake: long pause&lt;br /&gt;
%patch $6CF2 $90 $90 $90&lt;br /&gt;
%patch $6CD0 $90 $90 $90&lt;br /&gt;
&lt;br /&gt;
#No screen  shake: no pause&lt;br /&gt;
%patch $6CC8 $6A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shake duration ===&lt;br /&gt;
&lt;br /&gt;
This patch controls how long the screen shakes for. By default this is $50 ticks. The maximum value is $7F ticks, the minimum 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Screen shake duration&amp;quot;&amp;gt;&lt;br /&gt;
#Screen shake duration -Keen 1&lt;br /&gt;
%patch $3690 $50&lt;br /&gt;
&lt;br /&gt;
#Screen shake duration -Keen 2&lt;br /&gt;
%patch $64D2 $50&lt;br /&gt;
&lt;br /&gt;
#Screen shake duration -Keen 3&lt;br /&gt;
%patch $6D30 $50&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Text box ===&lt;br /&gt;
&lt;br /&gt;
This appears after the screen stops shaking, presumably the Tantalus has fired and Keen has realized what he&#039;s done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
%patch $3694 [$0001W] #Oops box bottom&lt;br /&gt;
%patch $3698 [$0005W] #Right side&lt;br /&gt;
%patch $36A2 [$2444W] #Text is read from...&lt;br /&gt;
%patch $36AB [$0064W] #Pause before box vanishes\ship fires&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $15494 &amp;quot;Oops.&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
%patch $64D6 [$0001W] #Oops box bottom&lt;br /&gt;
%patch $64DA [$0005W] #Right side&lt;br /&gt;
%patch $64E4 [$2CF0W] #Text is read from...&lt;br /&gt;
%patch $64ED [$0064W] #Pause before box vanishes\ship fires&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $1A470 &amp;quot;Oops.&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
%patch $6D34 [$0001W] #Oops box bottom&lt;br /&gt;
%patch $6D38 [$0005W] #Right side&lt;br /&gt;
%patch $6D41 [$2D2AW] #Text is read from...&lt;br /&gt;
%patch $6D49 [$0064W] #Pause before box vanishes\ship fires&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $1C54A &amp;quot;Oops.&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== No text box ====&lt;br /&gt;
&lt;br /&gt;
This patch removes the &#039;oops&#039; textbox entirely leaving just the shaking and then (after a pause) proceeding to the Vortiship firing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;No &#039;oops&#039; box &amp;quot;&amp;gt;&lt;br /&gt;
#No &#039;oops&#039; box -Keen 1&lt;br /&gt;
%patch $3693 $EB $15&lt;br /&gt;
&lt;br /&gt;
#No &#039;oops&#039; box -Keen 2&lt;br /&gt;
%patch $64D5 $EB $15&lt;br /&gt;
&lt;br /&gt;
#No &#039;oops&#039; box -Keen 3&lt;br /&gt;
%patch $6D33 $EB $13&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Switches and bridges in Keen Galaxy =&lt;br /&gt;
&lt;br /&gt;
== How switches and bridges work ==&lt;br /&gt;
&lt;br /&gt;
In Keen 4-6 any tile can be a switch as long as it has the switch property. Switches are activated the same was as in Keen 1-3. Like Keen 1-3 a sprite placed over the switch determines where the switch&#039;s effects are felt. However the system is simpler than in Keen 1-3; the value of the sprite in hex determines the x and y position of the tile affected by the switch. Thus a sprite value of 4660 ($1234) will affect a tile at 18,52 ($12,$34) on the level map.&lt;br /&gt;
&lt;br /&gt;
In Keen galaxy the switch animates &#039;&#039;foreground&#039;&#039; tiles in an interesting manner. A &#039;switchable&#039; tile will be set as animating, but have no animation time and will have a special &#039;bridge tile&#039; property. Thus in the game it will not animate. When a switch is flipped however they will animate one frame. By default this is used to make bridges by having one frame of a tile as invisible and fall through, while the second frame is a visible bridge and solid. Flicking the switch animates between the two making the bridge appear or disappear.&lt;br /&gt;
&lt;br /&gt;
The same sort of tiles make up the switch, it animates once every time it is clicked. It is possible to make a switch animate to a tile that has no switch property, so the switch can only be used once. It is also possible for a bridge to have more than 2 frames, doing different things every time the switch is flicked, or even not be a bridge at all, but be used for some other effect.&lt;br /&gt;
&lt;br /&gt;
A switch will affect a rectangle of tiles, starting at the switch location and extending down and right. The rectangle extends until there are no more tiles with the bridge switch property. Most bridges are two rows high and any number of columns wide.&lt;br /&gt;
&lt;br /&gt;
Keen 6 switches work exactly like Keen 4 and 5 once flipped but are activated differently. There are two types of switch tile, &#039;on&#039; and &#039;off&#039;, as in Keen 4/5. However Keen does not flip them by standing in front of them and pressing the up arrow key. Instead &#039;on&#039; switch tiles are activated by jumping or pogoing down onto them and &#039;off&#039; switch tiles are activated by hitting Keen&#039;s head against them from beneath.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Switch tile property ==&lt;br /&gt;
&lt;br /&gt;
In Keen Galaxy any tile can be a switch for bridges or platforms if it has the right property. It needs to animate to another tile to avoid the game producing gibberish graphics when the switch is flipped.&lt;br /&gt;
&lt;br /&gt;
There are three switch properties. Two of these deal with [[Patch:Platform|moving platforms,]] turning their inforplane pathways on or off. The third is for bridges where activating a switch will &#039;flip&#039; a bridge no matter what state it is in.&lt;br /&gt;
&lt;br /&gt;
Note that in Keen 6 the bridge switch tile property is invalid; instead there are &#039;&#039;two&#039;&#039; properties for a tile&#039;s top and bottom sides that let Keen flip switches by bumping into them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Switch tile properties&lt;br /&gt;
%patch $B96E [$05] #Platform switch off&lt;br /&gt;
%patch $B976 [$06] #Platform switch on&lt;br /&gt;
%patch $B97A [$0F] #Bridge switch&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Switch tile properties&lt;br /&gt;
%patch $AC50 [$05] #Platform switch off&lt;br /&gt;
%patch $AC56 [$06] #Platform switch on&lt;br /&gt;
%patch $AC5C [$0F] #Bridge switch&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Switch tile properties&lt;br /&gt;
%patch $AB84 [$05] #Platform switch off&lt;br /&gt;
%patch $AB8A [$06] #Platform switch on&lt;br /&gt;
%patch $AB90 [$0F] #Bridge switch&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bridge tile property ==&lt;br /&gt;
&lt;br /&gt;
Unlike Keen Vorticons, Galaxy bridges have their own special tile type. This tells the game which tiles can be flipped when a bridge is activated. This will also set a limit on how wide a bridge is as tiles will be flipped in horizontal rows until no more of the correct type are found. This property is the same across all Galaxy games.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this property is on [[Patch:Tiles|Keen&#039;s tile property list]] as &#039;do nothing&#039; by default. If it is altered and Keen&#039;s tile list is not taken into account then unexpected things can happen. (Such as the bridge being collectable as items.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bridge tile properties&amp;quot;&amp;gt;&lt;br /&gt;
#Bridge tile property -Keen 4&lt;br /&gt;
%patch $94B5 [$0012W]&lt;br /&gt;
&lt;br /&gt;
#Bridge tile property -Keen 5&lt;br /&gt;
%patch $E41D [$0012W]&lt;br /&gt;
&lt;br /&gt;
#Bridge tile property -Keen 6&lt;br /&gt;
%patch $DF3D [$0012W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bridge thickness ==&lt;br /&gt;
&lt;br /&gt;
These patches control how many rows of tiles constitute a bridge. In Keen Galaxy this is two rows of tiles by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Number of rows that make a bridge&amp;quot;&amp;gt;&lt;br /&gt;
#Number of rows that make a bridge -Keen 4&lt;br /&gt;
%patch $C1F2 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Number of rows that make a bridge -Keen 5&lt;br /&gt;
%patch $B5E3 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Number of rows that make a bridge -Keen 6&lt;br /&gt;
%patch $B3F3 [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Switches work at Keen&#039;s feet ==&lt;br /&gt;
&lt;br /&gt;
This patch for Keen 5 moves switches one tile down; that is, instead of working at the height of Keen&#039;s head they are located by his feet. (Unless Keen is made taller than 2 tiles.) However the patch is not &#039;complete&#039;; only the animation is moved down, a switch tile is still required at Keen&#039;s head height (One tile above where the tile will animate.) However if this tile is made invisible and nonanimating, it will at least appear that the switch has been moved down a tile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move switches one tile down (Almost)&lt;br /&gt;
%patch $B4AA $C8 $0016W  $00 $56 $57 $8B $5E $06 $8B $5F $2E $43 $53 &lt;br /&gt;
%patch $B51D $59 $B8 $0001W  $50 $50 $8B $5E $06 $51 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|gameplay|}}&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Tiles|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Tiles&amp;diff=41230</id>
		<title>Patch:Tiles</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Tiles&amp;diff=41230"/>
		<updated>2019-12-21T22:49:09Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add note on ignored tile types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains patches relating to tiles and tile properties in Keen. Some tile properties have their own pages, such as [[Patch:Ice tiles]]. There is also a separate page dealing with the sloped tiles found in Dreams and Galaxy, [[Patch:Slopes]]. Patching the &#039;tileinfo&#039; file that contains a &#039;list&#039; of what tiles have what properties in the game is discussed under [[Patch:Tileinfo]].&lt;br /&gt;
&lt;br /&gt;
This page has five sections: the first is a list of individual tile properties with their own pages; the second a note about how level and map tile codes work; the third a section on various patches involving the tile processing code in the games; a fourth a section explaining how tiles work; and finally a section for tile property editing tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tile types with their own pages =&lt;br /&gt;
&lt;br /&gt;
This is a list of tile property pages, each one containing patches on how that individual tile property works. Some of these pages are only for one specific episode of Keen, other span multiple episodes. Some, especially in Keen Galaxy have sprite counterparts.&lt;br /&gt;
&lt;br /&gt;
* [[Patch:Ice tiles]]&lt;br /&gt;
* [[Patch:Item tiles]]&lt;br /&gt;
* [[Patch:Deadly tiles]]&lt;br /&gt;
* [[Patch:Pogo (Item)]]&lt;br /&gt;
* [[Patch:Point tiles]]&lt;br /&gt;
* [[Patch:Poles]]&lt;br /&gt;
* [[Patch:Raygun]]&lt;br /&gt;
* [[Patch:Slippery tiles]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Levels map tile code is used in =&lt;br /&gt;
&lt;br /&gt;
In Keen Galaxy and Dreams there are two &#039;player tile interactions&#039; that are used by the current player sprite in addition to that sprite&#039;s own tile interaction code. The &#039;level tile code&#039; is responsible for the player&#039;s interactions with items, gem holders and deadly tiles while the &#039;map tile code&#039; is responsible for the player&#039;s interaction with map teleporters and water entrances.&lt;br /&gt;
&lt;br /&gt;
By default only in level 0 does the player sprite use the map tile code; otherwise the level tile code is used instead. This can however be changed. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Levels map tile code is used in&amp;quot;&amp;gt;&lt;br /&gt;
#What level(s) Keen uses map tile interaction in -Keen 4&lt;br /&gt;
%patch $8FBC {$A7EDW} [$00] {$74}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#What level(s) Keen uses map tile interaction in -Keen 5&lt;br /&gt;
%patch $8F2E {$9E55W} [$00] {$74}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#What level(s) Keen uses map tile interaction in -Keen 6&lt;br /&gt;
%patch $8D96 {$A97BW} [$00] {$74}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tile code patches =&lt;br /&gt;
&lt;br /&gt;
These patches change the tile code in the games, that is, how the game deals with tiles themselves. A number of patches that would have been included here are included instead on other tiles pages. (See above section.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen 3 style tiles in Keen 1 and 2 ==&lt;br /&gt;
&lt;br /&gt;
These patches replicate the Keen 3 &#039;row&#039; type behavior in Keen 1 and 2. This allows a modder to have a greater variety of &#039;background&#039; tiles in their mods. The reverse (Keen 1\2 type behavior in Keen 3) is possible, but has not been requested.&lt;br /&gt;
&lt;br /&gt;
Please note that Keen 1 and 2 actually use &#039;&#039;two&#039;&#039; background tiles, due to how the code works. The first is tile 143, the second is tile 276. This is seldom noticed, but can be seen in Keen 2.)&lt;br /&gt;
&lt;br /&gt;
The patches have three sections, the first affecting point items, the second affecting other items and the third affecting doors. The third section is independent; it can be left out if desired. The second section &#039;&#039;requires&#039;&#039; the first section to work, but lines can be removed from it if, for example, just keycards are desired to behave as in Keen 1. &lt;br /&gt;
&lt;br /&gt;
The blue &amp;lt;tt&amp;gt;$0D&amp;lt;/tt&amp;gt;s are important; in the patches below any tile &#039;got&#039; is replaced by one that is the nearest multiple of 13 ($0D) &#039;&#039;below&#039;&#039; it in the tileset. Since each row of tileset is 13 tiles, the default patch replaces any tile with the first one in its row. If you double this it becomes the first tile in every second row and so on. (Good if you have a lot of item tiles and such.) It can even be narrowed down to $02 (Items will be replaced by every second tile, versatile, but uses a LOT of tiles!)&lt;br /&gt;
&lt;br /&gt;
Because the door section is independent it has its own variable. This can be useful if you don&#039;t want to waste background tiles on doors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 background tiles behave like Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Change item tiles to use tiles at the end of each row ($0D) of tiles&lt;br /&gt;
%patch $4409      $26 $8B $07 $B6 [$0D] $F6 $FE&lt;br /&gt;
%patch $4410  $F6 $EE $26 $89 $07 $E9 $60 $01&lt;br /&gt;
&lt;br /&gt;
#Change keys, items, etc to use point tiles instead&lt;br /&gt;
%patch $4482  $E9 $74 $FF #Affect ship parts&lt;br /&gt;
%patch $44BA  $E9 $3C $FF #Affect raygun, pogo&lt;br /&gt;
%patch $4513  $E9 $E3 $FE #Affect keycards&lt;br /&gt;
&lt;br /&gt;
#Change doors&lt;br /&gt;
%patch $28EC                  $26 $8B $07 $B6&lt;br /&gt;
%patch $28F0  [$0D] $F6 $FE $F6 $EE $26 $89 $07&lt;br /&gt;
%patch $28F8  $03 $1E $08 $6C $03 $1E $08 $6C&lt;br /&gt;
%patch $2900  $26 $89 $07 $90 $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 background tiles behave like Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Change item tiles to use tiles at the end of each row ($0D) of tiles&lt;br /&gt;
%patch $724B              $26 $8B $07 $B6 [$0D] &lt;br /&gt;
%patch $7250  $F6 $FE $F6 $EE $26 $89 $07 $E9 &lt;br /&gt;
%patch $7258  $14 $01 &lt;br /&gt;
&lt;br /&gt;
#Change keys, items, etc to use point tiles instead&lt;br /&gt;
%patch $72A2  $EB $97     #Affect raygun, pogo&lt;br /&gt;
%patch $7327  $E9 $11 $FF #Affect keycards&lt;br /&gt;
&lt;br /&gt;
#Change doors&lt;br /&gt;
%patch $572E                          $26 $8B &lt;br /&gt;
%patch $5730  $07 $B6 [$0D] $F6 $FE $F6 $EE $26 &lt;br /&gt;
%patch $5738  $89 $07 $03 $1E $E4 $6B $03 $1E &lt;br /&gt;
%patch $5740  $E4 $6B $26 $89 $07 $90 $90 $90 &lt;br /&gt;
%patch $5748  $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Free up 15Kb of patch space (Keen 1) ==&lt;br /&gt;
&lt;br /&gt;
By rewriting the procedure that draws tiles into a more compact form, $38C0 = 14528 bytes are freed. Of course the procedure takes marginally longer to execute now, but on DOSBox at 3000 cycles it is not noticeable.&lt;br /&gt;
&lt;br /&gt;
 $1940 bytes are freed in the code segment&lt;br /&gt;
 $1F80 bytes are freed starting at segment 1000:0.&lt;br /&gt;
 The first byte is located at $E6C0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Rewrite tile routine to free up 15Kb&lt;br /&gt;
%patch $11F80 $06 $1E $50 $A1 $B2 $35 $8E $C0 $A1 $6A $83 $8E $D8 $A4 $A4 $03&lt;br /&gt;
              $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03&lt;br /&gt;
              $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03&lt;br /&gt;
              $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03&lt;br /&gt;
              $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $A4 $A4 $03 $FA $58 $1F $07&lt;br /&gt;
              $C3 $BA $2E $00 $66 $33 $C0 $8B $C3 $66 $8B $D8 $66 $33 $C0 $8B&lt;br /&gt;
              $C8 $3D $26 $01 $7D $35 $67 $26 $8B $34 $43 $D1 $E6 $8B $32 $67&lt;br /&gt;
              $3B $34 $45 $16 $5B $00 $00 $74 $13 $67 $89 $34 $45 $16 $5B $00&lt;br /&gt;
              $00 $67 $8B $3C $45 $C0 $35 $00 $00 $E8 $74 $FF $40 $41 $83 $F9&lt;br /&gt;
              $15 $7C $CE $33 $C9 $03 $1E $54 $56 $EB $C6 $CB $BA $2E $00 $66&lt;br /&gt;
              $33 $C0 $8B $C3 $66 $8B $D8 $66 $33 $C0 $8B $C8 $3D $26 $01 $7D&lt;br /&gt;
              $35 $67 $26 $8B $34 $43 $D1 $E6 $8B $32 $67 $3B $34 $45 $B8 $5D&lt;br /&gt;
              $00 $00 $74 $13 $67 $89 $34 $45 $B8 $5D $00 $00 $67 $8B $3C $45&lt;br /&gt;
              $C0 $35 $00 $00 $E8 $29 $FF $40 $41 $83 $F9 $15 $7C $CE $33 $C9&lt;br /&gt;
              $03 $1E $54 $56 $EB $C6 $CB&lt;br /&gt;
%patch $B7B2 $3911W #UpdateFarCall to ADT_0&lt;br /&gt;
%patch $B7AA $395CW #UpdateFarCall to ADT_1&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stop Player interacting with tiles ==&lt;br /&gt;
&lt;br /&gt;
This patch stops the player from interacting with tile properties; the player will still stand on solid tiles or appear behind foreground tiles. But they will be unable to obtain tile points or be killed by deadly tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Stop Keen from interacting with tiles&lt;br /&gt;
%patch $8FC5 $90 $90 $90 $90 $90&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tile code ==&lt;br /&gt;
&lt;br /&gt;
There are two parts to the tile code in each Keen game, the tile code pointer list and the actual codes themselves.&lt;br /&gt;
&lt;br /&gt;
The pointer list is exactly what it sounds like, tile properties of tiles the player is touching in level maps are simply values in the  from $00-$FF. The pointer list takes this value and tells the game where code saying what to do next is located.&lt;br /&gt;
&lt;br /&gt;
There are three parts to this, the list&#039;s location, its length (minus one) and the list itself. The list consists of a number of two-byte values each related to the location of a sprite&#039;s initiation code. Every collision with a tile with a property of a certain number will be directed via the list to a certain segment of initiation code. &lt;br /&gt;
&lt;br /&gt;
Sometimes several tile types use the same code. In that case there needs to be a further check to see what must be done for each tile type. Sometimes also the list does not begin at type 0, this is the case for the Galaxy games, where the list begins at type 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 1 ===&lt;br /&gt;
&lt;br /&gt;
==== Pointer list ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Pointer to tile property list&lt;br /&gt;
%patch $4385 [$4590W]&lt;br /&gt;
&lt;br /&gt;
#Number of tile properties -1&lt;br /&gt;
%patch $437A [$19]&lt;br /&gt;
&lt;br /&gt;
#Tile property references&lt;br /&gt;
%patch $4590 [$4387W] #Kills&lt;br /&gt;
%patch $4592 [$438DW] #Door 1&lt;br /&gt;
%patch $4594 [$438DW] #Door 2&lt;br /&gt;
%patch $4596 [$438DW] #Door 3&lt;br /&gt;
%patch $4598 [$438DW] #Door 4&lt;br /&gt;
%patch $459A [$43E2W] #500&lt;br /&gt;
%patch $459C [$43E2W] #100&lt;br /&gt;
%patch $459E [$43E2W] #200&lt;br /&gt;
%patch $45A0 [$43E2W] #1000&lt;br /&gt;
%patch $45A2 [$43E2W] #5000&lt;br /&gt;
%patch $45A4 [$4440W] #Joystick&lt;br /&gt;
%patch $45A6 [$4440W] #Battery&lt;br /&gt;
%patch $45A8 [$4440W] #Vacuum&lt;br /&gt;
%patch $45AA [$4440W] #Whiskey&lt;br /&gt;
%patch $45AC [$449AW] #Raygun&lt;br /&gt;
%patch $45AE [$449AW] #Pogo&lt;br /&gt;
%patch $45B0 [$44D2W] #Exit&lt;br /&gt;
%patch $45B2 [$44FFW] #Key 1&lt;br /&gt;
%patch $45B4 [$44FFW] #Key 2&lt;br /&gt;
%patch $45B6 [$44FFW] #Key 3&lt;br /&gt;
%patch $45B8 [$44FFW] #Key 4&lt;br /&gt;
%patch $45BA [$452AW] #Message&lt;br /&gt;
%patch $45BC [$4562W] #Lightswitch&lt;br /&gt;
%patch $45BE [$4572W] #Teleporter&lt;br /&gt;
%patch $45C0 [$4562W] #Switch on&lt;br /&gt;
%patch $45C2 [$4562W] #Switch off&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Points tile code ====&lt;br /&gt;
&lt;br /&gt;
The parts tile code is the same for all five [[Patch:Items|point items]]. On the first line the points list is called and the appropriate number of points added to the player&#039;s score. on the same line sound 09 is played. After this the number of the tile is checked, if it is below $0131W then the tile will be replaced with tile $008FW, if above it is replaced with tile $0114W.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Default items tile code&lt;br /&gt;
%patch $43E2 $8B $5E $F6 $D1 $E3 $FF $B7 [$201AW]  $E8 $C964W  $44 $44 $B8 [$0009W]&lt;br /&gt;
                 $50 $E8 $7AFCW  $44 $44 $8B $C6 $F7 $2E $08 $6C $03 $C7 $D1&lt;br /&gt;
             $E0 $C4 $1E $48 $6C $03 $D8 $26 $81 $3F [$0131W]  $73 $18 $8B $C6&lt;br /&gt;
             $F7 $2E $08 $6C $03 $C7 $D1 $E0 $8B $1E $48 $6C $03 $D8 $26 $C7&lt;br /&gt;
             $07 [$008FW]  $E9 $0150W  $8B $C6 $F7 $2E $08 $6C $03 $C7 $D1 $E0&lt;br /&gt;
             $C4 $1E $48 $6C $03 $D8 $26 $C7 $07 [$0114W]  $E9 $0138W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ship parts tile code ====&lt;br /&gt;
&lt;br /&gt;
The parts tile code is the same for all four [[Patch:Ship Parts|Ship parts]]. As such it checks for each tile type individually. The first part of the code is four checks for tile types $0B to $0E which if the tile matches the appropriate part counter is set to 1. At the start of line 4 a call is made to point increasing code adding 10&#039;000 points ($2710W) and sound $0B is played.&lt;br /&gt;
&lt;br /&gt;
Following this the tile is removed and replaced with tile $8F.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Default ship parts tile code&lt;br /&gt;
%patch $4440 $83 $7E $F6 [$0B] {$75} $06 $C7 $06 {$AA94W}  [$0001W]  $83 $7E $F6 [$0C]&lt;br /&gt;
             {$75} $06 $C7 $06 {$AA9CW}  [$0001W]  $83 $7E $F6 [$0D] {$75} $06 $C7 $06&lt;br /&gt;
             {$AA96W}  [$0001W]  $83 $7E $F6 [$0E] {$75} $06 $C7 $06 {$AA98W}  [$0001W]&lt;br /&gt;
             $B8 [$2710W]  $50 $E8 $C8DBW  $44 $44 $B8 [$000BW]  $50 $E8 $7A73W &lt;br /&gt;
             $44 $44 $8B $C6 $F7 $2E $08 $6C $03 $C7 $D1 $E0 $C4 $1E $48 $6C&lt;br /&gt;
             $03 $D8 $26 $C7 $07 [$008FW]  $E9 $00DEW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Keycard tile code ====&lt;br /&gt;
&lt;br /&gt;
The parts tile code is the same for all four [[Patch:Keycard (Vorticons)|keycards]]. Unlike the ship parts tile code there is no tile type check. On the first line it appears as if the first [[Patch:Game stats|keycard value]] is set to 1, however the actual variable set will depend on which tile type (And thus keycard) Keen obtained, $AA7AW is merely the first of four variables.&lt;br /&gt;
&lt;br /&gt;
Following this sound $20 is played and the tile is removed and replaced with tile $8F.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Default keycard tile code&lt;br /&gt;
%patch $44FF $8B $5E $F6 $D1 $E3 $C7 $87 {$AA7AW}  [$0001W]  $B8 [$0020W]  $50 $E8&lt;br /&gt;
             $79E2W  $44 $44 $8B $C6 $F7 $2E $08 $6C $03 $C7 $D1 $E0 $C4 $1E&lt;br /&gt;
             $48 $6C $03 $D8 $26 $C7 $07 [$008FW]  $EB $4E&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pogo and ammo tile code ====&lt;br /&gt;
&lt;br /&gt;
Both the [[Patch:Pogo (Item)|pogo]] and [[Patch:Raygun|ammo]] use the same code, possibly due to using the same sound when obtained. This causes the code to need to check the tile type again. On the first line the ammo tile type is checked for; if found Keen&#039;s ammo variable is increased by 5. On the same line the Pogo&#039;s tile type is checked for, if found the Pogo variable is set to 1. After that both codes are the same; sound $0A is played.&lt;br /&gt;
&lt;br /&gt;
Following this the tile is removed and replaced with tile $8F.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Default Pogo and ammo tile code&lt;br /&gt;
%patch $449A $83 $7E $F6 [$0F] {$75} $05 $83 $06 {$AAC8W}  [$05] $83 $7E $F6 [$10] {$75}&lt;br /&gt;
             $06 $C7 $06 {$AA9AW}  [$0001W]  $B8 [$000AW]  $50 $E8 $7A3BW  $44 $44&lt;br /&gt;
             $8B $C6 $F7 $2E $08 $6C $03 $C7 $D1 $E0 $C4 $1E $48 $6C $03 $D8&lt;br /&gt;
             $26 $C7 $07 [$008FW]  $E9 $00A6W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Exit tile code ====&lt;br /&gt;
&lt;br /&gt;
The exit tile code begins with a check of the player&#039;s current [[Patch:Sprite behavior|behavior.]] (This can be different from Keen&#039;s behavior causing the &#039;midair exit glitch&#039;.) If this is not his standing behavior then the remaining code is skipped. This prevents Keen from exiting when not on the ground. (Most of the time.) After this sound $F is played and the player&#039;s behavior set to $40EFW, or &#039;exit walk&#039;. The player&#039;s [[Patch:Sprite collision|sprite collision]] is set to $3360W or &#039;nothing&#039; to prevent the player dying, etc when exiting. Two other player variables are also set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Default exit tile code&lt;br /&gt;
%patch $44D2 $81 $3E {$6F0CW}  [$3867W]  {$74} $03 $E9 $009BW  $B8 [$000FW]  $50 $E8&lt;br /&gt;
             $7A0FW  $44 $44 $C7 $06 {$6F0CW}  [$40EFW]  $C7 $06 {$6F0EW}  [$3360W]&lt;br /&gt;
             $8B $C7 $40 $40 $A3 {$6F04W}  $89 $36 {$6F06W}  $EB $79&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Teleporter tile code ====&lt;br /&gt;
&lt;br /&gt;
The [[Patch:Teleporter|teleporter]] tile code is quite basic; when Keen touches the tile the [[Patch:Game stats|&#039;teleport&#039; variable]] is set to 2, triggering the actual teleportation elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#Default teleporter tile code&lt;br /&gt;
%patch $4572 $C7 $06 {$6C60W}  [$0002W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 2 ===&lt;br /&gt;
&lt;br /&gt;
==== Pointer list ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2&amp;quot;&amp;gt;&lt;br /&gt;
#Pointer to tile property list&lt;br /&gt;
%patch $71C7 [$7386W]&lt;br /&gt;
&lt;br /&gt;
#Number of tile properties -1&lt;br /&gt;
%patch $71BC [$19]&lt;br /&gt;
&lt;br /&gt;
#Tile property references&lt;br /&gt;
%patch $7386 [$71C9W] #Kills&lt;br /&gt;
%patch $7388 [$71CFW] #Door 1&lt;br /&gt;
%patch $738A [$71CFW] #Door 2&lt;br /&gt;
%patch $738C [$71CFW] #Door 3&lt;br /&gt;
%patch $738E [$71CFW] #Door 4&lt;br /&gt;
%patch $7390 [$7224W] #500&lt;br /&gt;
%patch $7392 [$7224W] #100&lt;br /&gt;
%patch $7394 [$7224W] #200&lt;br /&gt;
%patch $7396 [$7224W] #1000&lt;br /&gt;
%patch $7398 [$7224W] #5000&lt;br /&gt;
%patch $739A [$736EW] #Joystick&lt;br /&gt;
%patch $739C [$736EW] #Battery&lt;br /&gt;
%patch $739E [$736EW] #Vacuum&lt;br /&gt;
%patch $73A0 [$736EW] #Whiskey&lt;br /&gt;
%patch $73A2 [$7282W] #Raygun&lt;br /&gt;
%patch $73A4 [$7282W] #Pogo&lt;br /&gt;
%patch $73A6 [$72E9W] #Exit&lt;br /&gt;
%patch $73A8 [$7313W] #Key 1&lt;br /&gt;
%patch $73AA [$7313W] #Key 2&lt;br /&gt;
%patch $73AC [$7313W] #Key 3&lt;br /&gt;
%patch $73AE [$7313W] #Key 4&lt;br /&gt;
%patch $73B0 [$733EW] #Message&lt;br /&gt;
%patch $73B2 [$7358W] #Lightswitch&lt;br /&gt;
%patch $73B4 [$7368W] #Teleporter&lt;br /&gt;
%patch $73B6 [$7358W] #Switch on&lt;br /&gt;
%patch $73B8 [$7358W] #Switch off&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 3 ===&lt;br /&gt;
&lt;br /&gt;
==== Pointer list ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3&amp;quot;&amp;gt;&lt;br /&gt;
#Pointer to tile property list&lt;br /&gt;
%patch $7A30 [$7C1BW]&lt;br /&gt;
&lt;br /&gt;
#Number of tile properties -1&lt;br /&gt;
%patch $7A25 [$1B]&lt;br /&gt;
&lt;br /&gt;
#Tile property references&lt;br /&gt;
%patch $7C1B [$7A32W] #Kills&lt;br /&gt;
%patch $7C1D [$7A38W] #Door 1&lt;br /&gt;
%patch $7C1F [$7A38W] #Door 2&lt;br /&gt;
%patch $7C21 [$7A38W] #Door 3&lt;br /&gt;
%patch $7C23 [$7A38W] #Door 4&lt;br /&gt;
%patch $7C25 [$7A8AW] #500&lt;br /&gt;
%patch $7C27 [$7A8AW] #100&lt;br /&gt;
%patch $7C29 [$7A8AW] #200&lt;br /&gt;
%patch $7C2B [$7A8AW] #1000&lt;br /&gt;
%patch $7C2D [$7A8AW] #5000&lt;br /&gt;
%patch $7C2F [$7C03W] #Joystick&lt;br /&gt;
%patch $7C31 [$7C03W] #Battery&lt;br /&gt;
%patch $7C33 [$7C03W] #Vacuum&lt;br /&gt;
%patch $7C35 [$7C03W] #Whiskey&lt;br /&gt;
%patch $7C37 [$7AC5W] #Raygun&lt;br /&gt;
%patch $7C39 [$7AC5W] #Pogo&lt;br /&gt;
%patch $7C3B [$7B0AW] #Exit&lt;br /&gt;
%patch $7C3D [$7B34W] #Key 1&lt;br /&gt;
%patch $7C3F [$7B34W] #Key 2&lt;br /&gt;
%patch $7C41 [$7B34W] #Key 3&lt;br /&gt;
%patch $7C43 [$7B34W] #Key 4&lt;br /&gt;
%patch $7C45 [$7B6DW] #Message&lt;br /&gt;
%patch $7C47 [$7B87W] #Lightswitch&lt;br /&gt;
%patch $7C49 [$7B97W] #Teleporter&lt;br /&gt;
%patch $7C4B [$7B87W] #Switch on&lt;br /&gt;
%patch $7C4D [$7B87W] #Switch off&lt;br /&gt;
%patch $7C4F [$7B9FW] #Ankh&lt;br /&gt;
%patch $7C51 [$7BD2W] #Single bullet&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Masked tile code ====&lt;br /&gt;
&lt;br /&gt;
In Keen Vorticons -2 and only -2 is the masked tile property. This property must be less than zero and  is checked for at one point in the code. Changing the [[Patch:Jump conditions|jump condition]] marked in brown can allow several types of masked tile that could be given different properties.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Masked tile property&amp;quot;&amp;gt;&lt;br /&gt;
#Masked tile property - Keen 1&lt;br /&gt;
%patch $049F [$FE] {$75}&lt;br /&gt;
&lt;br /&gt;
#Masked tile property - Keen 2&lt;br /&gt;
%patch $049F [$FE] {$75}&lt;br /&gt;
&lt;br /&gt;
#Masked tile property - Keen 3&lt;br /&gt;
%patch $04B7 [$FE] {$75}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 4 ===&lt;br /&gt;
&lt;br /&gt;
Note that in Keen Galaxy the tile property code subtracts three from the tile&#039;s value before looking at the list. So Keen cannot interact with poles (Tile type 1) in the default code and deadly tiles (tile type 3) are treated as type 0 here. (Keen&#039;s actual interactions with poles are handled by other code elsewhere.)&lt;br /&gt;
&lt;br /&gt;
==== Pointer list ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Pointer to tile property list&lt;br /&gt;
%patch $D16F [$1A47W]&lt;br /&gt;
&lt;br /&gt;
#List ignores first x types&lt;br /&gt;
%patch $D161 [$03]&lt;br /&gt;
&lt;br /&gt;
#Number of tile properties -1&lt;br /&gt;
%patch $D164 [$19]&lt;br /&gt;
&lt;br /&gt;
#Tile property references&lt;br /&gt;
%patch $D247 [$1971W] #Deadly (At $D171) &lt;br /&gt;
%patch $D249 [$1978W] #Raindrop: Vanish with a splash, add 1 to raindrop counter (At $D178)&lt;br /&gt;
%patch $D24B [$1A1EW] #Switch ON: nothing (At $D21E)&lt;br /&gt;
%patch $D24D [$1A1EW] #Switch OFF: nothing (At $D21E)&lt;br /&gt;
%patch $D24F [$1986W] #Red holder (At $D186)&lt;br /&gt;
%patch $D251 [$1986W] #Yellow holder (At $D186)&lt;br /&gt;
%patch $D253 [$1986W] #Blue holder (At $D186)&lt;br /&gt;
%patch $D255 [$1986W] #Green holder (At $D186)&lt;br /&gt;
%patch $D257 [$1A1EW] #Top water: nothing (At $D21E)&lt;br /&gt;
%patch $D259 [$1A1EW] #Right water: nothing (At $D21E)&lt;br /&gt;
%patch $D25B [$1A1EW] #Bottom water: nothing (At $D21E)&lt;br /&gt;
%patch $D25D [$1A1EW] #Left water: nothing (At $D21E)&lt;br /&gt;
%patch $D25F [$1A1EW] #Moving platform switch (At $D21E)&lt;br /&gt;
%patch $D261 [$19F8W] #Moon tile: Make Keen moon (At $D1F8)&lt;br /&gt;
%patch $D263 [$1A1EW] #Sprite arrow path: nothing (At $D21E)&lt;br /&gt;
%patch $D265 [$1A1EW] #Bridge tile: nothing (At $D21E)&lt;br /&gt;
%patch $D267 [$1A1EW] #Active zapper: nothing (At $D21E)&lt;br /&gt;
%patch $D269 [$1A1EW] #Teleport entrance: nothing (At $D21E)&lt;br /&gt;
%patch $D26B [$1A09W] #100 points: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D26D [$1A09W] #200 points: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D26F [$1A09W] #500 points: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D271 [$1A09W] #1000 points: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D273 [$1A09W] #2000 points: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D275 [$1A09W] #5000 points: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D277 [$1A09W] #1UP: vanish, do item stuff (At $D209)&lt;br /&gt;
%patch $D279 [$1A09W] #Stunner tile: vanish, do item stuff (At $D209)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Deadly tile code ====&lt;br /&gt;
&lt;br /&gt;
The deadly tile code simply calls the [[Patch:Keen dying (Galaxy)|player death code]], causing the player to die.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Deadly tile property code&lt;br /&gt;
%patch $D171 $0E $E8 $FA74W  $E9 $00A6W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Raindrop tile code ====&lt;br /&gt;
&lt;br /&gt;
The raindrop code is quite simple. When run it calls the actual raindrop code which removes the tile and adds 1 to Keen&#039;s [[Patch:Game stats|drop counter.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Raindrop tile property code&lt;br /&gt;
%patch $D178 $FF $76 $FE $57 $0E $E8 $FEBFW  $83 $C4 $04 $E9 $0098W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Gem holder tile code ====&lt;br /&gt;
&lt;br /&gt;
The gem holder tile code is responsible for initiating the opening of doors. The gem holder code is somewhat complicated. The first section of the code deals with checks. The first check checks to see if the gem holder tile is 1 tile below Keen&#039;s head (So Keen cannot open just any gem holder tile.) The next check determines whether the tile &#039;&#039;below&#039;&#039; the gem holder is upwards blocking (So Keen cannot open gem holders in the air.) On the second line Keen&#039;s [[Patch:Sprite actions|action]] is checked and if he is already placing a gem then the following code is skipped. (This avoids Keen constantly trying to place a gem but being unable to do so, see also [[Patch:Jump conditions]].)&lt;br /&gt;
&lt;br /&gt;
The next check, on line 3, looks to see if Keen has the right kind of gem (See [[Patch:Game stats]].); seven is taken away from the tile type then, using the red gem variable as a start, the right gem variable is checked. After all these checks are passed then Keen&#039;s action is set to &#039;turn away from screen&#039;, starting the door opening sequence and he begins to &#039;slide&#039; into alignment with the holder. The final check looks to see that this alignment is complete (Otherwise he will try to use the wrong tile as a door locator causing a &#039;bad spot&#039; error.) if so then the second section is run.&lt;br /&gt;
&lt;br /&gt;
The second section causes Keen to go to the door opening code where his action is set to &#039;place gem&#039; and a gem is removed from his inventory. (Again seven is taken from the tile type to determine which gem variable is affected.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $D186 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0E1EW]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB [$07] $D1 $E3 $83 $BF {$7A60W}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C [$0E3CW]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB [$07] $D1 $E3 $FF $8F {$7A60W}&lt;br /&gt;
                 $B8 [$0E1EW]  $50 $56 $9A $09DC120ARL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Moon tile code ====&lt;br /&gt;
&lt;br /&gt;
See also [[Patch:Keen mooning]]. When Keen touches a tile with the mooning property &#039;&#039;and&#039;&#039; his &#039;mooning variable&#039; is also 0 (That is, he hasn&#039;t mooned before.) then it will be set to 1 (Allowing him to moon.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Mooning tile property code&lt;br /&gt;
%patch $D1F8 $83 $3E {$CAB5W}  [$00] {$75} $1F $C7 $06 {$CAB5W}  [$0001W]  $EB $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Moon tile is ice instead =====&lt;br /&gt;
&lt;br /&gt;
This patch alters the moon tile code so that if Keen touches it he slides back and forth like the ice in [[Keen 1]]. He can however turn around, walk and jump while touching ice tiles. The patch works by changing standing Keen&#039;s action to his first walking frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Mooning tile is now &#039;ice&#039;&lt;br /&gt;
%patch $D1F8 $81 $7C $1C [$098CW]  {$75} $05 $C7 $44 $1C [$1094W]  $EB $18&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Item tile code ====&lt;br /&gt;
&lt;br /&gt;
For tile items there are two sections of code that affects what happens. The first adjusts a few things and calls the tile removal code.&lt;br /&gt;
&lt;br /&gt;
When Keen touches an item type tile the tile&#039;s property as $15 removed and $04 added to it before being passed to the item tile code proper, &amp;lt;tt&amp;gt;$0E $E8 $FD5AW&amp;lt;/tt&amp;gt;. (This code is also called when item sprites are obtained.) Note the relative call which requires adjustment if this code is moved.&lt;br /&gt;
&lt;br /&gt;
The two blue variables are somewhat redundant; a single subtraction of $11 would suffice. The cause of this complexity is due to the four gem items which cannot be got as tiles by default and the first item tile property being $15. Changing this allows the game to do things such as dealing with gem item tiles.&lt;br /&gt;
&lt;br /&gt;
The second section is the tile removal code, responsible for everything the items do. The first two lines replace the 1x1 item tile are with the tile value stored at &amp;lt;tt&amp;gt;$2EE70 + $1424W&amp;lt;/tt&amp;gt; (This is tile 0 by default.) Line 4 calls the item point list at &amp;lt;tt&amp;gt;$2EE70 + $13D4W&amp;lt;/tt&amp;gt;. After this the item&#039;s type is checked, first gems (Types 0-3) which give the appropriate gem, then 1UPs (Type $0A) which add one to Keen&#039;s life counter then the neural stunner (Type $0B) which checks the difficulty and loads the right amount of ammo to give from the ammo list at &amp;lt;tt&amp;gt;$2EE70 + $13D4W&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Starting on line 8 the &#039;got item&#039; sprite is spawned, type 1 (Misc) with type 3 foreground (In front of all tiles so it&#039;s always visible.) and moving upwards ($FFFFW). Its animation is taken from a list at &amp;lt;tt&amp;gt;$2EE70 + $140CW&amp;lt;/tt&amp;gt; and it uses action $1428W. Finally it is given a clipping of 0, allowing it to pass through tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Item tile property code&lt;br /&gt;
%patch $D209 $8B $46 $F6 $2D [$0015W]  $05 [$0004W]  $50 $FF $76 $FE $57 $0E $E8&lt;br /&gt;
             $FD5AW  $83 $C4 $06&lt;br /&gt;
&lt;br /&gt;
#Item tile removal code&lt;br /&gt;
%patch $CF75 $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $0A $B8 $0001W  $50 $50&lt;br /&gt;
             $FF $76 $08 $57 $50 $1E $B8 [$1424W]  $50 $9A $16540F28RL     $83&lt;br /&gt;
             $C4 $0E $8B $DE $D1 $E3 $FF $B7 $DC $13 $9A $187409F1RL     $83&lt;br /&gt;
             $C4 $02 $8B $DE $D1 $E3 $FF $B7 [$13F4W]  $9A $06BD1EF2RL     $83&lt;br /&gt;
             $C4 $02 $83 $FE [$04] {$73} $0A $8B $DE $D1 $E3 $FF $87 {$7A60W}  $EB&lt;br /&gt;
             $1E $83 $FE [$0A] {$75} $06 $FF $06 {$7A6AW}  $EB $13 $83 $FE [$0B] {$75}&lt;br /&gt;
             $0E $8B $1E {$7A6CW}  $D1 $E3 $8B $87 [$13D4W]  $01 $06 {$7A58W}  $B8&lt;br /&gt;
             $0001W  $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E $D8 $A7 $C7&lt;br /&gt;
             $07 [$0001W]  $C7 $47 $20 [$0003W]  $8B $C7 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
             $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$140CW]  $8B $1E $D8 $A7 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $B8 [$1F28W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $8B $1E $D8&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Map tile code ====&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s map tile interaction, used by the [[Patch:Keen on map (Galaxy)|player sprite on the map]] only. In the main it responds to water entrances\exits. On the first line Keen&#039;s [[Patch:Galaxy Sprite Parameters|&#039;mask&#039; variable]] is checked, if zero all code is skipped. The next five lines load tile data.&lt;br /&gt;
&lt;br /&gt;
On lines six and seven the game checks for four kinds of water entrance\exit. If any of these are found the game proceeds to check whether Keen has the [[Patch:Wetsuit|Wetsuit]]. If he does not then [[Patch:Sounds|sound $0E]] is played and the &#039;can&#039;t swim&#039; window code called. Finally Keen&#039;s horizontal and vertical movement are halted.&lt;br /&gt;
&lt;br /&gt;
In the second section a list at $D8F0W + $09EFW = $E2DF is called for an entry based on the tile type less $0B. The list is 6 + 1 entries long and works differently if Keen is using action $14CEW (Map swimming as opposed to map walking.)&lt;br /&gt;
&lt;br /&gt;
The tile-specific code starts on line 4, and there are 4 valid options; up, down, right and left in that order. Each sets Keen&#039;s horizontal and vertical directions. (Note that three of the list&#039;s options are &#039;invalid&#039;, not setting any directions.) All codes end up at line 7, setting Keen&#039;s &#039;sprite draw&#039; Variable to 0 and Mask Variable to $12 (This sets the length of time Keen will spend moving in and out of water.)&lt;br /&gt;
&lt;br /&gt;
A second check of Keen&#039;s action is then made. If Keen is swimming ($14CEW) then he will transform into walking($15A0W), otherwise the reverse will occur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen&#039;s tile interaction code&lt;br /&gt;
%patch $E199 $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06 $83 $7C {$42} [$00] {$74}&lt;br /&gt;
             $03 $E9 $012CW  $8B $44 $34 $89 $46 $FE $8B $44 $28 $2B $44 $24&lt;br /&gt;
             $D1 $E8 $8B $54 $24 $03 $D0 $B1 $08 $D3 $EA $89 $56 $FC $8B $5E&lt;br /&gt;
             $FC $D1 $E3 $8B $9F $25 $C9 $D1 $EB $D1 $E3 $8E $06 $E9 $A7 $8B &lt;br /&gt;
             $46 $FE $D1 $E0 $03 $D8 $26 $8B $1F $8E $06 $A1 $C8 $26 $8A $87&lt;br /&gt;
             $A6 $44 $B4 $00 $8B $F8 $83 $FF [$0B] {$74} $12 $83 $FF [$0D] {$74} $0D&lt;br /&gt;
             $83 $FF [$0E] {$74} $08 $83 $FF [$0C] {$74} $03 $E9 $00D3W  $83 $3E {$7A5CW}&lt;br /&gt;
                 [$00] {$75} $3D $B8 [$000EW]  $50 $9A $187409F1RL    $83 $C4 $02&lt;br /&gt;
             $9A $0E8F0A66RL     $9A $16540D59RL     $8B $44 $12 $F7 $D8 $A3&lt;br /&gt;
             $C923W  $8B $44 $14 $F7 $D8 $A3 $C921W  $33 $C0 $89 $44 $10 $89&lt;br /&gt;
             $44 $0E $56 $9A $09DC06A5RL     $83 $C4 $02 $5F $5E $8B $E5 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
                 $8B $DF $83 $EB [$0B] $D1 $E3 $8B $87 $E6 $15 $89 $44 $3E $81&lt;br /&gt;
             $7C $1C [$14CEW]  $75 $0C $8B $5C $3E $D1 $E3 $8B $87 $46 $14 $89&lt;br /&gt;
             $44 $3E $8B $5C $3E $83 $FB [$06] $77 $35 $D1 $E3 $2E $FF $A7 [$09EFW]&lt;br /&gt;
                 $C7 $44 $0E [$0000W]  $C7 $44 $10 [$FFFFW]  $EB $22 $C7 $44 $0E&lt;br /&gt;
             [$0001W]  $C7 $44 $10 [$0000W]  $EB $16 $C7 $44 $0E [$0000W]  $C7 $44&lt;br /&gt;
             $10 [$0001W]  $EB $0A $C7 $44 $0E [$FFFFW]  $C7 $44 $10 [$0000W]  $C7&lt;br /&gt;
             $44 {$40} [$0000W]  $C7 $44 {$42} [$0012W]  $81 $7C $1C [$14CEW]  {$75} $13&lt;br /&gt;
             $B8 [$15A0W]  $50 $56 $9A $09DC120ARL     $83 $C4 $04 $5F $5E $8B&lt;br /&gt;
             $E5 $5D $CB&lt;br /&gt;
                         $B8 [$14CEW]  $50 $56 $9A $09DC120ARL     $83 $C4 $04&lt;br /&gt;
             $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Tile interaction pointer list&lt;br /&gt;
%patch $E2DF [$098AW] #Top water entrance (At $E27A)&lt;br /&gt;
%patch $E2E1 [$09B8W] #INVALID (At $E2A8)&lt;br /&gt;
%patch $E2E3 [$0996W] #Right water entrance (At $E286)&lt;br /&gt;
%patch $E2E5 [$09B8W] #INVALID (At $E2A8)&lt;br /&gt;
%patch $E2E7 [$09A2W] #Bottom water entrance (At $E292)&lt;br /&gt;
%patch $E2E9 [$09B8W] #INVALID (At $E2A8)&lt;br /&gt;
%patch $E2EB [$09AEW] #Left water entrance (At $E29E)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 5 ===&lt;br /&gt;
&lt;br /&gt;
Note that in Keen Galaxy the tile property code subtracts three from the tile&#039;s value before looking at the list. So Keen cannot interact with poles (Tile type 1) in the default code and deadly tiles (tile type 3) are treated as type 0 here. (Keen&#039;s actual interactions with poles are handled by other code elsewhere.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pointer list ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Pointer to tile property list&lt;br /&gt;
%patch $C482 [$1A6BW]&lt;br /&gt;
&lt;br /&gt;
#List ignores first x types&lt;br /&gt;
%patch $C474 [$03]&lt;br /&gt;
&lt;br /&gt;
#Number of tile properties -1&lt;br /&gt;
%patch $C477 [$19]&lt;br /&gt;
&lt;br /&gt;
#Tile property references&lt;br /&gt;
%patch $C55B [$1994W] #Deadly (At $C484)&lt;br /&gt;
%patch $C55D [$199BW] #Vitalin: Vanish with a splash, add 1 to Vitalin counter(At $C48B)&lt;br /&gt;
%patch $C55F [$1A41W] #Switch ON: nothing (At $C531)&lt;br /&gt;
%patch $C561 [$1A41W] #Switch OFF: nothing (At $C531)&lt;br /&gt;
%patch $C563 [$19A9W] #Red holder (At $C499)&lt;br /&gt;
%patch $C565 [$19A9W] #Yellow holder (At $C499)&lt;br /&gt;
%patch $C567 [$19A9W] #Blue holder (At $C499)&lt;br /&gt;
%patch $C569 [$19A9W] #Green holder (At $C499)&lt;br /&gt;
%patch $C56B [$1A41W] #Top water: nothing (At $C531)&lt;br /&gt;
%patch $C56D [$1A41W] #Right water: nothing (At $C531)&lt;br /&gt;
%patch $C56F [$1A41W] #Bottom water: nothing (At $C531)&lt;br /&gt;
%patch $C571 [$1A41W] #Left water: nothing (At $C531)&lt;br /&gt;
%patch $C573 [$1A41W] #Moving platform switch (At $C531)&lt;br /&gt;
%patch $C575 [$1A1BW] #Moon tile: Make Keen moon (At $C50B)&lt;br /&gt;
%patch $C577 [$1A41W] #Sprite arrow path: nothing (At $C531)&lt;br /&gt;
%patch $C579 [$1A41W] #Bridge tile: nothing (At $C531)&lt;br /&gt;
%patch $C57B [$1A41W] #Active zapper: nothing (At $C531)&lt;br /&gt;
%patch $C57D [$1A41W] #Teleport entrance: nothing (At $C531)&lt;br /&gt;
%patch $C57F [$1A2CW] #100 points: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C581 [$1A2CW] #200 points: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C583 [$1A2CW] #500 points: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C585 [$1A2CW] #1000 points: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C587 [$1A2CW] #2000 points: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C589 [$1A2CW] #5000 points: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C58B [$1A2CW] #1UP: vanish, do item stuff (At $C51C)&lt;br /&gt;
%patch $C58D [$1A2CW] #Stunner tile: vanish, do item stuff (At $C51C)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Deadly tile code ====&lt;br /&gt;
&lt;br /&gt;
The deadly tile code simply calls the [[Patch:Keen dying (Galaxy)|player death code]], causing the player to die.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Deadly tile property code&lt;br /&gt;
%patch $C484 $0E $E8 $FB7FW  $E9 $00A6W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Vitalin tile code ====&lt;br /&gt;
&lt;br /&gt;
The raindrop code is quite simple. When run it calls the actual Vitalin code which removes the tile and adds 1 to Keen&#039;s [[Patch:Game stats|Vitalin counter.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Raindrop tile property code&lt;br /&gt;
%patch $C48B $FF $76 $FE $57 $0E $E8 $FEBFW  $83 $C4 $04 $E9 $0098W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Gem holder tile code ====&lt;br /&gt;
&lt;br /&gt;
The gem holder tile code is responsible for initiating the opening of doors. The gem holder code is somewhat complicated. The first section of the code deals with checks. The first check checks to see if the gem holder tile is 1 tile below Keen&#039;s head (So Keen cannot open just any gem holder tile.) The next check determines whether the tile &#039;&#039;below&#039;&#039; the gem holder is upwards blocking (So Keen cannot open gem holders in the air.) On the second line Keen&#039;s [[Patch:Sprite actions|action]] is checked and if he is already placing a gem then the following code is skipped. (This avoids Keen constantly trying to place a gem but being unable to do so, see also [[Patch:Jump conditions]].)&lt;br /&gt;
&lt;br /&gt;
The next check, on line 3, looks to see if Keen has the right kind of gem (See [[Patch:Game stats]].); seven is taken away from the tile type then, using the red gem variable as a start, the right gem variable is checked. After all these checks are passed then Keen&#039;s action is set to &#039;turn away from screen&#039;, starting the door opening sequence and he begins to &#039;slide&#039; into alignment with the holder. The final check looks to see that this alignment is complete (Otherwise he will try to use the wrong tile as a door locator causing a &#039;bad spot&#039; error.) if so then the second section is run.&lt;br /&gt;
&lt;br /&gt;
The second section causes Keen to go to the door opening code where his action is set to &#039;place gem&#039; and a gem is removed from his inventory. (Again seven is taken from the tile type to determine which gem variable is affected.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $C499 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0CA2W]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB $07 $D1 $E3 $83 $BF {$6F60W}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C [$0CC0W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB $07 $D1 $E3 $FF $8F {$6F60W}&lt;br /&gt;
                 $B8 [$0CA2W]  $50 $56 $9A $090B1242RL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Moon tile code ====&lt;br /&gt;
&lt;br /&gt;
See also [[Patch:Keen mooning]]. When Keen touches a tile with the mooning property &#039;&#039;and&#039;&#039; his &#039;mooning variable&#039; is also 0 (That is, he hasn&#039;t mooned before.) then it will be set to 1 (Allowing him to moon.) However Keen&#039;s sprite code does not make use of this variable, meaning he doesn&#039;t moon in Keen 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Mooning tile property code&lt;br /&gt;
%patch $C50B $83 $3E {$C17BW}  [$00] {$75} $1F $C7 $06 {$C17BW}  [$0001W]  $EB $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Moon tile is ice instead =====&lt;br /&gt;
&lt;br /&gt;
This patch alters the moon tile code so that if Keen touches it he slides back and forth like the ice in [[Keen 1]]. He can however turn around, walk and jump while touching ice tiles. The patch works by changing standing Keen&#039;s action to his first walking frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Mooning tile is now &#039;ice&#039;&lt;br /&gt;
%patch $C50B $81 $7C $1C [$0888W]  {$75} $05 $C7 $44 $1C [$0F72W]  $EB $18&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Item tile code ====&lt;br /&gt;
&lt;br /&gt;
When Keen touches an item type tile the tile&#039;s property as $15 removed and $04 added to it before being passed to the item tile code proper, &amp;lt;tt&amp;gt;$0E $E8 $FD5AW&amp;lt;/tt&amp;gt;. (This code is also called when item sprites are obtained.) Note the relative call which requires adjustment if this code is moved.&lt;br /&gt;
&lt;br /&gt;
The two blue variables are somewhat redundant; a single subtraction of $11 would suffice. The cause of this complexity is due to the four gem items which cannot be got as tiles by default and the first item tile property being $15. Changing this allows the game to do things such as dealing with gem item tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Item tile property code&lt;br /&gt;
%patch $C51C $8B $46 $F6 $2D [$0015W]  $05 [$0004W]  $50 $FF $76 $FE $57 $0E $E8&lt;br /&gt;
             $FD5AW  $83 $C4 $06&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 ===&lt;br /&gt;
&lt;br /&gt;
Note that in Keen Galaxy the tile property code subtracts three from the tile&#039;s value before looking at the list. So Keen cannot interact with poles (Tile type 1) in the default code and deadly tiles (tile type 3) are treated as type 0 here. (Keen&#039;s actual interactions with poles are handled by other code elsewhere.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pointer list ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Pointer to tile property list&lt;br /&gt;
%patch $C269 [$1921W]&lt;br /&gt;
&lt;br /&gt;
#List ignores first x types&lt;br /&gt;
%patch $C25B [$03]&lt;br /&gt;
&lt;br /&gt;
#Number of tile properties -1&lt;br /&gt;
%patch $C25E [$19]&lt;br /&gt;
&lt;br /&gt;
#Tile property references&lt;br /&gt;
%patch $C341 [$184BW] #Deadly (At $C26B) &lt;br /&gt;
%patch $C343 [$1852W] #Raindrop: Vanish with a splash, add 1 to raindrop counter (At $C272)&lt;br /&gt;
%patch $C345 [$18F8W] #Switch ON: nothing (At $C318)&lt;br /&gt;
%patch $C347 [$18F8W] #Switch OFF: nothing (At $C318)&lt;br /&gt;
%patch $C349 [$1860W] #Red holder (At $C280)&lt;br /&gt;
%patch $C34B [$1860W] #Yellow holder (At $C280)&lt;br /&gt;
%patch $C34D [$1860W] #Blue holder (At $C280)&lt;br /&gt;
%patch $C34F [$1860W] #Green holder (At $C280)&lt;br /&gt;
%patch $C351 [$18F8W] #Top water: nothing (At $C318)&lt;br /&gt;
%patch $C353 [$18F8W] #Right water: nothing (At $C318)&lt;br /&gt;
%patch $C355 [$18F8W] #Bottom water: nothing (At $C318)&lt;br /&gt;
%patch $C357 [$18F8W] #Left water: nothing (At $C318)&lt;br /&gt;
%patch $C359 [$18F8W] #Moving platform switch (At $C318)&lt;br /&gt;
%patch $C35B [$18D2W] #Moon tile: Make Keen moon (At $C2F2)&lt;br /&gt;
%patch $C35D [$18F8W] #Sprite arrow path: nothing (At $C318)&lt;br /&gt;
%patch $C35F [$18F8W] #Bridge tile: nothing (At $C318)&lt;br /&gt;
%patch $C361 [$18F8W] #Active zapper: nothing (At $C318)&lt;br /&gt;
%patch $C363 [$18F8W] #Teleport entrance: nothing (At $C318)&lt;br /&gt;
%patch $C365 [$18E3W] #100 points: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C367 [$18E3W] #200 points: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C369 [$18E3W] #500 points: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C36B [$18E3W] #1000 points: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C36D [$18E3W] #2000 points: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C36F [$18E3W] #5000 points: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C371 [$18E3W] #1UP: vanish, do item stuff (At $C303)&lt;br /&gt;
%patch $C373 [$18E3W] #Stunner tile: vanish, do item stuff (At $C303)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Deadly tile code ====&lt;br /&gt;
&lt;br /&gt;
The deadly tile code simply calls the [[Patch:Keen dying (Galaxy)|player death code]], causing the player to die.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Deadly tile property code&lt;br /&gt;
%patch $C26B $0E $E8 $FB7BW  $E9 $00A6W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Viva tile code ====&lt;br /&gt;
&lt;br /&gt;
The Viva code is quite simple. When run it calls the actual Viva code which removes the tile and adds 1 to Keen&#039;s [[Patch:Game stats|Viva counter.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Viva tile property code&lt;br /&gt;
%patch $C272 $FF $76 $FE $57 $0E $E8 $FEBFW  $83 $C4 $04 $E9 $0098W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Gem holder tile code ====&lt;br /&gt;
&lt;br /&gt;
The gem holder tile code is responsible for initiating the opening of doors. The gem holder code is somewhat complicated. The first section of the code deals with checks. The first check checks to see if the gem holder tile is 1 tile below Keen&#039;s head (So Keen cannot open just any gem holder tile.) The next check determines whether the tile &#039;&#039;below&#039;&#039; the gem holder is upwards blocking (So Keen cannot open gem holders in the air.) &lt;br /&gt;
&lt;br /&gt;
On the second line Keen&#039;s [[Patch:Sprite actions|action]] is checked and if he is already placing a gem then the following code is skipped. (This avoids Keen constantly trying to place a gem but being unable to do so, see also [[Patch:Jump conditions]].)&lt;br /&gt;
&lt;br /&gt;
The next check, on line 3, looks to see if Keen has the right kind of gem (See [[Patch:Game stats]].); seven is taken away from the tile type then, using the red gem variable as a start, the right gem variable is checked. After all these checks are passed then Keen&#039;s action is set to &#039;turn away from screen&#039;, starting the door opening sequence and he begins to &#039;slide&#039; into alignment with the holder. The final check looks to see that this alignment is complete (Otherwise he will try to use the wrong tile as a door locator causing a &#039;bad spot&#039; error.) if so then the second section is run.&lt;br /&gt;
&lt;br /&gt;
The second section causes Keen to go to the door opening code where his action is set to &#039;place gem&#039; and a gem is removed from his inventory. (Again seven is taken from the tile type to determine which gem variable is affected.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Gem holder tile property code&lt;br /&gt;
%patch $C280 $8B $44 $32 $3B $46 $FE $74 $03 $E9 $00B0W  $83 $7C {$36} [$00] {$75}&lt;br /&gt;
             $03 $E9 $00A7W  $81 $7C {$1C} [$0C96W]  {$75} $03 $E9 $009DW  $8B $5E&lt;br /&gt;
             $F6 $83 $EB $07 $D1 $E3 $83 $BF {$759CW}  [$00] {$75} $03 $E9 $008BW &lt;br /&gt;
             $8B $C7 $B1 $08 $D3 $E0 $05 [$FFC0W]  $89 $46 $F4 $8B $44 $0A $3B&lt;br /&gt;
             $46 $F4 {$74} $11 $8B $46 $F4 $89 $44 $3E $C7 $44 $1C [$0CB4W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
                                 $8B $5E $F6 $83 $EB $07 $D1 $E3 $FF $8F {$759CW}&lt;br /&gt;
                 $B8 [$0C96W]  $50 $56 $9A $08F41297RL     $83 $C4 $04 $EB $28&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Moon tile code ====&lt;br /&gt;
&lt;br /&gt;
See also [[Patch:Keen mooning]]. When Keen touches a tile with the mooning property &#039;&#039;and&#039;&#039; his &#039;mooning variable&#039; is also 0 (That is, he hasn&#039;t mooned before.) then it will be set to 1 (Allowing him to moon.) This is the case even though mooning is completely absent in Keen 6.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Mooning tile property code&lt;br /&gt;
%patch $C2F2 $83 $3E {$CC1BW}  [$00] {$75} $1F $C7 $06 {$CC1BW}  [$0001W]  $EB $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Moon tile is ice instead =====&lt;br /&gt;
&lt;br /&gt;
This patch alters the moon tile code so that if Keen touches it he slides back and forth like the ice in [[Keen 1]]. He can however turn around, walk and jump while touching ice tiles. The patch works by changing standing Keen&#039;s action to his first walking frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Mooning tile is now &#039;ice&#039;&lt;br /&gt;
%patch $C2F2 $81 $7C $1C [$089AW]  {$75} $05 $C7 $44 $1C [$0F0CW]  $EB $18&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Item tile code ====&lt;br /&gt;
&lt;br /&gt;
When Keen touches an item type tile the tile&#039;s property as $15 removed and $04 added to it before being passed to the item tile code proper, &amp;lt;tt&amp;gt;$0E $E8 $FD5AW&amp;lt;/tt&amp;gt;. (This code is also called when item sprites are obtained.) Note the relative call which requires adjustment if this code is moved.&lt;br /&gt;
&lt;br /&gt;
The two blue variables are somewhat redundant; a single subtraction of $11 would suffice. The cause of this complexity is due to the four gem items which cannot be got as tiles by default and the first item tile property being $15. Changing this allows the game to do things such as dealing with gem item tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Item tile property code&lt;br /&gt;
%patch $C303 $8B $46 $F6 $2D [$0015W]  $05 [$0004W]  $50 $FF $76 $FE $57 $0E $E8&lt;br /&gt;
             $FD5AW  $83 $C4 $06&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Map tile code ====&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s map tile interaction, used by the [[Patch:Keen on map (Galaxy)|player sprite on the map]] only. In responds to the map telelporters, allowing Keen to teleport. On the first line Keen&#039;s [[Patch:Galaxy Sprite Parameters|&#039;mask&#039; variable]] is checked, if zero all code is skipped. The next five lines load tile data.&lt;br /&gt;
&lt;br /&gt;
On line six the game checks for the teleport tile type, $14. If found it skips to the teleport code call, allowing Keen to teleport.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen&#039;s tile interaction code&lt;br /&gt;
%patch $D478 $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06 $83 $7C {$42} [$00] {$75}&lt;br /&gt;
             $55 $8B $7C $34 $8B $44 $28 $2B $44 $24 $D1 $E8 $548BW  $24 $03&lt;br /&gt;
             $D0 $B1 $08 $D3 $EA $89 $56 $FE $8B $5E $FE $D1 $E3 $8B $9F $8B&lt;br /&gt;
             $CA $D1 $EB $D1 $E3 $8E $06 $77 $A9 $8B $C7 $D1 $E0 $03 $D8 $26&lt;br /&gt;
             $8B $1F $8E $06 $65 $CA $26 $8A $87 $92 $49 $B4 $00 $89 $46 $FC&lt;br /&gt;
             $3D [$0014W]  {$74} $06 $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
                                                         $FF $76 $FE $57 $0E&lt;br /&gt;
             $E8 $FC84W  $83 $C4 $04 $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How tiles work =&lt;br /&gt;
&lt;br /&gt;
The following descriptions of tile properties are based heavily on data from CK456DTli by The CKGuy and [[User:Levellass]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorticons ==&lt;br /&gt;
&lt;br /&gt;
The properties of each tile are encoded in various “flags”. Tiles have six flags. The term flags here is rather misleading, because this seems to imply that each one is either on or off. This is far from true—each flag for each tile is represented as a word in the resource, so in theory a flag could have one of 65536 values, but this does not happen in practice.&lt;br /&gt;
&lt;br /&gt;
The flags for tiles, listed in the order they appear in the TileInfo resource:&lt;br /&gt;
&lt;br /&gt;
:* AnimFlag&lt;br /&gt;
:* MiscFlag &lt;br /&gt;
:* TopFlag&lt;br /&gt;
:* RightFlag&lt;br /&gt;
:* BottomFlag&lt;br /&gt;
:* LeftFlag&lt;br /&gt;
&lt;br /&gt;
Altering the properties of a tile consists of changing the values of one or more flags for that tile. Now we’ll go into specifics on the various flags.&lt;br /&gt;
&lt;br /&gt;
:* AnimFlag — For tiles that do not animate, this is one. For animating tiles, it is two or four. It is the number of tiles in the &#039;animation loop&#039; the tile is involved in. This means that for animating tiles a row of two or four tiles must have the same value or errors will occur. The tiles used in animation will depend on where in the loop a given tile is and this is hard-coded, meaning a given tile can only possibly animate to one other tile.&lt;br /&gt;
&lt;br /&gt;
:* TopFlag — This specifies what the top of the tile is like. It can have four values, zero is &#039;fall through&#039;, 1 is &#039;solid&#039; 2 is &#039;slippery&#039; and 3 is &#039;ice&#039;.&lt;br /&gt;
&lt;br /&gt;
:* LeftFlag, BottomFlag and RightFlag — These are zero if you can enter from that side, and one if the tile is solid on that side.&lt;br /&gt;
&lt;br /&gt;
:* MiscFlag — This is the most complicated flag. It encodes many of the special properties that tiles can have (such as being deadly, being an item with a certain point value, etc.). The following values are used:&lt;br /&gt;
&lt;br /&gt;
 00: Nothing        17: Exit&lt;br /&gt;
 01: Kills          18: Key 1&lt;br /&gt;
 02: Door 1         19: Key 2&lt;br /&gt;
 03: Door 2         20: Key 3&lt;br /&gt;
 04: Door 3         21: Key 4&lt;br /&gt;
 05: Door 4         22: Message box popup&lt;br /&gt;
 06: 500 points     23: Lightswitch&lt;br /&gt;
 07: 100 points     24: Teleporter&lt;br /&gt;
 08: 200 points     25: Switch on&lt;br /&gt;
 09: 1000 points    26: Swtich off&lt;br /&gt;
 10: 5000 points    27: Ankh (Keen 3 only)&lt;br /&gt;
 11: Joystick       28: Single bullet (Keen 3 only)&lt;br /&gt;
 12: Battery&lt;br /&gt;
 13: Vaccum&lt;br /&gt;
 14: Whiskey&lt;br /&gt;
 15: Raygun         -1: Foreground&lt;br /&gt;
 16: Pogo           -2: Masked&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Galaxy and Dreams ==&lt;br /&gt;
&lt;br /&gt;
The properties of each tile are encoded in various “flags”. Background tiles have two flags and foreground tiles have seven. The term flags here is rather misleading, because this seems to imply that each one is either on or off. This is far from true—each flag for each tile is represented as a byte in the resource, so in theory a flag could have one of 256 values, but this does not happen in practice.&lt;br /&gt;
&lt;br /&gt;
The flags for background tiles, listed in the order they appear in the TileInfo resource:&lt;br /&gt;
&lt;br /&gt;
:* TimeFlag&lt;br /&gt;
:* AnimFlag&lt;br /&gt;
&lt;br /&gt;
The flags for foreground tiles, listed in the order they appear in the TileInfo resource:&lt;br /&gt;
&lt;br /&gt;
:* TopFlag&lt;br /&gt;
:* RightFlag&lt;br /&gt;
:* BottomFlag&lt;br /&gt;
:* LeftFlag&lt;br /&gt;
:* AnimFlag&lt;br /&gt;
:* MiscFlag (including the pseudo-flag ForegroundFlag)&lt;br /&gt;
:* TimeFlag&lt;br /&gt;
&lt;br /&gt;
Altering the properties of a tile consists of changing the values of one or more flags for that tile. Now we’ll go into specifics on the various flags.&lt;br /&gt;
&lt;br /&gt;
:* AnimFlag — (For foreground and background tiles) For tiles that do not animate, this is zero. For animating tiles, it is a relative offset to the next tile in the animation sequence. This is stored as a signed byte, so the offset can be from -128 to +127.&lt;br /&gt;
&lt;br /&gt;
:* TimeFlag — (For foreground and background tiles) For tiles that do not animate, this is zero. For animating tiles, it is the amount of time spent on this tile in the sequence. The time unit is not known. To quote from an old document of adurdin’s: “The time is specified in UNITS, from x00 to xFF. A value of x95 is approximately equal to 2 seconds. Values lower than x02 may animate only sporadically.”&lt;br /&gt;
&lt;br /&gt;
::* Also — These flags are not just used for tiles that animate “by themselves”. Most of the time when tiles turn into other tiles (on switch to off switch and back, empty keygem holder to keygem holder with key, bridge opening/closing, keygem door opening, Keen 5 keycard door opening, etc.), the situation is handled by animating tiles. The AnimFlag for one tile points to the other, but the TimeFlag is set to zero.&lt;br /&gt;
&lt;br /&gt;
:* TopFlag — This specifies what the top of the tile is like. It can be a flat solid top, an open top you can fall through, a particular slant, solid but has a pole going through, etc.&lt;br /&gt;
&lt;br /&gt;
:* LeftFlag and RightFlag — These are zero if you can enter from that side, and one if the tile is solid on that side.&lt;br /&gt;
&lt;br /&gt;
:* BottomFlag — This specifies what the bottom of the tile is like. If you specify the TopFlag to be solid, but specify the BottomFlag to be “jump through”, you will get a tile that you can jump up through and land on, and to get back down through, you look down and jump. Some examples of this kind of tile are the “narrow” floors in Keen 4, the holes in Keen 5, and the tree limbs in Keen 6.&lt;br /&gt;
&lt;br /&gt;
:* MiscFlag — This is the most complicated flag. It encodes many of the special properties that tiles can have (such as being deadly, being an item with a certain point value, etc.). All of these are actually encoded in the lower seven bits of the flag. The high bit specifies whether or not the tile is to appear in front of Keen and other sprites, as opposed to behind them as most foreground tiles do. In this program, this is implemented as a separate pseudo-flag, ForegroundFlag. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flag values ===&lt;br /&gt;
&lt;br /&gt;
Unlike in Vorticons, most of the tile flags can have more than one value, meaning that potentially endless varieties of tile may be created. Following is a list of the known tile flag values as well as what games they are valid for. (4, 5, 6 and Dreams.)&lt;br /&gt;
&lt;br /&gt;
 Top flag:&lt;br /&gt;
 D456	00	Fall through&lt;br /&gt;
 D456	01	Flat top&lt;br /&gt;
 D456	02	Top &amp;gt; Middle&lt;br /&gt;
 D456	03	Middle &amp;gt; Bottom&lt;br /&gt;
 D456	04	Top &amp;gt; Bottom&lt;br /&gt;
 D456	05	Middle &amp;gt; Top&lt;br /&gt;
 D456	06	Bottom &amp;gt; Middle&lt;br /&gt;
 D456	07	Bottom &amp;gt; Top&lt;br /&gt;
 D456	09	Deadly (and can&#039;t land on in God mode)&lt;br /&gt;
 D456	11	Flat top with pole&lt;br /&gt;
 6	21	Giant switch (on)&lt;br /&gt;
 6	29	Conveyor belt&lt;br /&gt;
 5	39	Fuse&lt;br /&gt;
&lt;br /&gt;
 Bottom flag:&lt;br /&gt;
 D456	00	Jump through&lt;br /&gt;
 D456	01	Flat bottom&lt;br /&gt;
 D456	02	Bottom &amp;gt; Middle&lt;br /&gt;
 D456	03	Middle &amp;gt; Top&lt;br /&gt;
 D456	04	Bottom &amp;gt; Top&lt;br /&gt;
 D456	05	Middle &amp;gt; Bottom&lt;br /&gt;
 D456	06	Top &amp;gt; Middle&lt;br /&gt;
 D456	07	Top &amp;gt; Bottom&lt;br /&gt;
 D456	11	Pole going through&lt;br /&gt;
 6	21	Giant switch (off)&lt;br /&gt;
&lt;br /&gt;
 Misc flag:&lt;br /&gt;
 D456	00	No special properties&lt;br /&gt;
 D456	01	Pole&lt;br /&gt;
 456	02	Door&lt;br /&gt;
 D	02	Top of fire&lt;br /&gt;
 456	03	Deadly&lt;br /&gt;
 456	04	Collect 100 to get 1UP&lt;br /&gt;
 45	05	Switch for moving platforms (off)&lt;br /&gt;
 45	06	Switch for moving platforms (on)&lt;br /&gt;
 456	07	Red keygem holder&lt;br /&gt;
 456	08	Yellow keygem holder&lt;br /&gt;
 456	09	Blue keygem holder&lt;br /&gt;
 456	0A	Green keygem holder&lt;br /&gt;
 4	0B	Top water entrance&lt;br /&gt;
 4	0C	Right water entrance&lt;br /&gt;
 4	0D	Bottom water entrance&lt;br /&gt;
 4	0E	Left water entrance&lt;br /&gt;
 45	0F	Switch for bridges&lt;br /&gt;
 4	10	&amp;quot;Moon&amp;quot; floor tile&lt;br /&gt;
 56	11	Sprite path arrow&lt;br /&gt;
 56	12	Bridge&lt;br /&gt;
 6	13	Active zapper (top)&lt;br /&gt;
 56	14	Teleport entrance&lt;br /&gt;
 456	15	100 points&lt;br /&gt;
 456	16	200 points&lt;br /&gt;
 456	17	500 points&lt;br /&gt;
 456	18	1000 points&lt;br /&gt;
 456	19	2000 points&lt;br /&gt;
 456	1A	5000 points&lt;br /&gt;
 456	1B	1UP&lt;br /&gt;
 456	1C	Neural stunner&lt;br /&gt;
 6	1E	Inactive zapper&lt;br /&gt;
 5	1F	Little Ampton computer&lt;br /&gt;
 5	20	Keycard door&lt;br /&gt;
 5	21	Elevator on map (left side)&lt;br /&gt;
 5	22	Elevator on map (right side)&lt;br /&gt;
 D	7F	Top of exit sign&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
&lt;br /&gt;
The following utilities can be used to edit tile properties. This is done by displaying the tileset bitmap(s) and showing the tile properties for each &#039;square&#039; of bitmap involved.&lt;br /&gt;
&lt;br /&gt;
* [[TileInfo]] Used to edit tile properties in Keen Vorticons&lt;br /&gt;
* [[Tileset-Tool]] Used to edit tile properties and make tilesets for the [[Patch:Vorticons 2|Vorticons 2]] patch&lt;br /&gt;
* [[Ck456Tli]] For Keen Galaxy&lt;br /&gt;
* [[CK456DTli]] A version of Ck456Tli that also supports [[Keen Dreams]]&lt;br /&gt;
* [[Galactile]] The best Galaxy utility, also supports dreams. Currently has separate versions for [[ModKeen]] and [[keengraph]] graphics&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Item|}}&lt;br /&gt;
{{PatchCategories|Misc|}}&lt;br /&gt;
{{PatchCategories|Tiles|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41229</id>
		<title>Patch:Sprite spawning</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41229"/>
		<updated>2019-12-17T15:46:18Z</updated>

		<summary type="html">&lt;p&gt;Levellass: init codes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial page on patching sprite spawning. It contains information on what sprite spawn code is and how to patch it. A sprite&#039;s spawn code sets all of the sprite&#039;s variables before it is placed in the level. Many of these variables are important and only set once.&lt;br /&gt;
&lt;br /&gt;
This page deals with patches relating to sprite spawning, covering a number of patches applied to sprites before they&#039;re even created and even allowing more sprites than normal to be placed in a game. The page is prefaced with a section explaining the different areas of sprite spawning, followed by a section for each game.&lt;br /&gt;
&lt;br /&gt;
A related tutorial page dealing with expanding the number of sprites in Keen 1-3 is [[Patch:Patching Vorticon Sprites]] and its equivalent for Keen Galaxy and Dreams is [[Patch:Patching Galaxy Sprites]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Areas of sprite spawning =&lt;br /&gt;
&lt;br /&gt;
There are three areas involved in spawning a sprite, the pointer list, the initiation code and the spawning code proper.&lt;br /&gt;
&lt;br /&gt;
The pointer list is exactly what it sounds like, sprites in level maps are simply values in the sprite plane, from $0000-$FFFF. Certain &#039;standard&#039; values (Lower ones) are used for sprites, other &#039;special&#039; values are treated on a case by case basis, usually [[Patch:Bridges and switches|switches.]]&lt;br /&gt;
&lt;br /&gt;
There are three parts to this, the list&#039;s location, its length (minus one) and the list itself. The list consists of a number of two-byte values each related to the location of a sprite&#039;s initiation code. Every sprite of a certain number will be directed via the list to a certain segment of initiation code.&lt;br /&gt;
&lt;br /&gt;
Initiation code prepares the game for the sprite, setting aside memory, caching graphics and suchlike. It is not a solid block of code, but part of the same code as the pointer list. The initiation code directs the game to the sprite&#039;s individual spawning code.&lt;br /&gt;
&lt;br /&gt;
The spawning code is a solid block of code executed once per sprite that results in the sprite being placed in the level and set in motion; it prepares the sprite for the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 1 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 1]] is unusual in that only the first five sprites are &#039;standard&#039;, while the [[Patch:Icecubes|Ice cannons,]] [[Patch:Falling block|falling block]] and [[Patch:Keen (Keen 1)|Keen himself]] are special cases with specific sprite numbers. It is possible to standardize the sprite initiations and thus allow many more sprite types and customization. This is covered in the following section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $1709W directs the game to the list at $1709. The standard sprite list is 4 + 1 = 5 entries long. Other sprite types are more difficult to work with. Sprites &#039;&#039;less&#039;&#039; than Ice Type 3 ($09) but &#039;&#039;greater&#039;&#039; then the standard types (Including type 6, an Ice Cannon!) are Ice Cannons. (By default $07, $08 and $09.) Type 0 Ice Cannons have their own special type ($06), dealt with &#039;&#039;before&#039;&#039; all other sprites, even standard ones. The Chain&#039;s type is $0A and finally Keen too has a special type, $FF (255).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $1632 {$1709W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $1627 $04&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $1709 [$1656W] #Yorp&lt;br /&gt;
             [$1661W] #Garg&lt;br /&gt;
             [$166CW] #Vorticon&lt;br /&gt;
             [$1676W] #Butler robot&lt;br /&gt;
             [$1680W] #Tank robot&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $161F [$06]    #Ice Type 0&lt;br /&gt;
%patch $1636 [$09]    #Ice Type 3&lt;br /&gt;
%patch $163D [$07]    #Ice Type 1&lt;br /&gt;
%patch $1642 [$08]    #Ice Type 2&lt;br /&gt;
%patch $164A [$0A]    #Falling block&lt;br /&gt;
%patch $164F [$00FFW] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 1 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $1656 $57 $56 $E8 $0225W  $83 $C4 $04 $E9 $008EW 	     #Goes to Yorp (Code at $1656 + $225 + $5 = $1880)&lt;br /&gt;
%patch $1661 $57 $56 $E8 $01DDW  $83 $C4 $04 $E9 $0083W 	     #Goes to Garg (Code at $1661 + $1DD + $5 = $1843)&lt;br /&gt;
%patch $166C $57 $56 $E8 $0164W  $83 $C4 $04 $EB $79		     #Goes to Vorticon (Code at $166C + $164 + $5 = $17D5)&lt;br /&gt;
%patch $1676 $57 $56 $E8 $00FCW  $83 $C4 $04 $EB $6F		     #Goes to Butler Bot (Code at $1676 + $FC + $5 = $1777)&lt;br /&gt;
%patch $1680 $57 $56 $E8 $008EW  $83 $C4 $04 $EB $65		     #Goes to Tank Bot (Code at $1680 + $8E + $5 = $1713)&lt;br /&gt;
%patch $168A $33 $C0 $50 $57 $56 $E8 $028EW  $83 $C4 $06 $EB $58     #Goes to Type 0 Ice Cannon (Code at $168A + $28E + $8 = $1920)&lt;br /&gt;
%patch $1697 $B8 $0001W  $50 $57 $56 $E8 $0280W  $83 $C4 $06 $EB $4A #Goes to Type 1 Ice Cannon (Code at $1697 + $280 + $9 = $1920)&lt;br /&gt;
%patch $16A5 $B8 $0002W  $50 $57 $56 $E8 $0272W  $83 $C4 $06 $EB $3C #Goes to Type 2 Ice Cannon (Code at $16A5 + $272 + $9 = $1920)&lt;br /&gt;
%patch $16B3 $B8 $0003W  $50 $57 $56 $E8 $0264W  $83 $C4 $06 $EB $2E #Goes to Type 3 Ice Cannon (Code at $16B3 + $264 + $9 = $1920)&lt;br /&gt;
%patch $16C1 $57 $56 $E8 $021DW  $83 $C4 $04 $EB $24		     #Goes to Falling block (Code at $16C1 + $21D + $5 = $18E3)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $16CB $8B $C6 $99 $B1 $0C $E8 $CA7EW  $A3 $6EDEW  $89 $16 $6EE0W&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $CA6FW  $05 [$0800W]  $83 $D2 $00 $A3 $6EE2W&lt;br /&gt;
                 $89 $16 $6EE4W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 1 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Yorp&lt;br /&gt;
%patch $1880 $55 $8B $EC $56 $E8 $10AEW  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $C8BBW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8ACW  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$194FW}  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start behavior is at $194F&lt;br /&gt;
             $7F $0F $7C $06 $3B $16 $DE $6E $73 $07 $C7 $44 $20 [$003CW]  $EB #If left of Keen speed = $3C else is $FFC4 (+\-60)&lt;br /&gt;
             $05 $C7 $44 $20 [$FFC4W]  $C7 $44 $34 {$1A68W}  $C7 $44 $28 [$0030W]  #Death at $1A68, start animation = $30 = 48&lt;br /&gt;
             $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Garg&lt;br /&gt;
%patch $1843 $55 $8B $EC $56 $E8 $10EBW  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $C8F8W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8E9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1B51W}  #Start behavior at $1B51&lt;br /&gt;
             $C7 $44 $34 {$1BCEW}  $C7 $44 $28 [$003CW]  $5E $5D $C3             #Death at $1BCE; start animation = $3C = 60&lt;br /&gt;
&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $17D5 $55 $8B $EC $56 $E8 $1159W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $C966W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C957W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1C0EW}  #Behavior at 1C0E&lt;br /&gt;
             $C7 $44 $34 {$1D6EW}  $C7 $44 $24 [$0003W]  $83 $3E $04 $83 {$10 $75} #Death 1D6E, strength = 3 unless level = 16&lt;br /&gt;
             $05 $C7 $44 $24 [$0068W]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Then strength = 100&lt;br /&gt;
             $7C $0F $7F $06 $3B $16 $DE $6E $76 $07 $C7 $44 $20 [$FFA6W]  $EB #If right of Keen speed = FFA6&lt;br /&gt;
             $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$004EW]  $5E $5D $C3         #Else speed = $5A, start animation = $4E&lt;br /&gt;
&lt;br /&gt;
#Butler bot&lt;br /&gt;
%patch $1777 $55 $8B $EC $56 $E8 $11B7W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $C9C4W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C9B5W  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$005AW]  #Start speed = $5A&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E $7F $10 $7C $06 $3B $16&lt;br /&gt;
             $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89 $44 $20 $C7 $44 $32&lt;br /&gt;
         {$1DC7W}  $C7 $44 $34 {$1E94W}  $C7 $44 $28 [$0060W]  $5E $5D $C3         #Behavior 1DC7, death 1E94, start animation $60&lt;br /&gt;
&lt;br /&gt;
#Tank bot&lt;br /&gt;
%patch $1713 $55 $8B $EC $56 $E8 $121BW  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $CA28W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CA19W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $20 [$005AW]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start speed = $5A&lt;br /&gt;
             $7F $10 $7C $06 $3B $16 $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89&lt;br /&gt;
             $44 $20 $C7 $44 $32 {$1F75W}  $C7 $44 $34 {$2045W}  $C7 $44 $28     #Start behavior at $1F75W death at $2045&lt;br /&gt;
          [$006AW]  $5E $5D $C3                                                #Start animation $6A&lt;br /&gt;
&lt;br /&gt;
#Falling block&lt;br /&gt;
%patch $18E3 $55 $8B $EC $56 $E8 $104BW  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $C858W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C849W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3360W}  #Start behavior at $3360 (Nothing)&lt;br /&gt;
             $C7 $44 $34 {$22BBW}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Death $22BB, start (and only) animation $72&lt;br /&gt;
&lt;br /&gt;
#Ice cubes&lt;br /&gt;
%patch $1920 $55 $8B $EC $56 $E8 $1057W  $8B $F0 $C7 $44 $08 $0003W  $C7 $44 #No sprite type or other properties&lt;br /&gt;
             $22 {$204AW}  $8B $46 $08 $89 $44 $0A $8B $46 $04 $99 $89 $04 $89 #Call Canon behavior at $204A&lt;br /&gt;
             $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54 $06 $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 1 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $09 and its location is $168A. This actually greatly simplifies the Keen 1 code, and as such is used in preference to the above default code as it flows more logically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Re-write the core switch statement.&lt;br /&gt;
%patch $161D $4B $83 $FB [$09] $76 $0A $81 $FB $FE $00 $0F $84 $A0 $00 $E9 $C1&lt;br /&gt;
             $00 $D1 $E4 $2E $D1 $E3 $2E $FF $A7 {$168AW}&lt;br /&gt;
#Combine the ice-launchers&lt;br /&gt;
%patch $16B1 $D1 $EB $83 $EB $05 $53&lt;br /&gt;
&lt;br /&gt;
#Locations of jumps to sprite spawn code&lt;br /&gt;
%patch $168A {$1656W} #Yorp&lt;br /&gt;
             {$1661W} #Garg&lt;br /&gt;
             {$166CW} #Vorticon&lt;br /&gt;
             {$1676W} #Butler&lt;br /&gt;
             {$1680W} #Tank&lt;br /&gt;
             {$16B1W} #Ice Launcher 1&lt;br /&gt;
             {$16B1W} #Ice Launcher 2&lt;br /&gt;
             {$16B1W} #Ice Launcher 3&lt;br /&gt;
             {$16B1W} #Ice Launcher 4&lt;br /&gt;
             {$16C1W} #Falling Block&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 2 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 2]] is much more regular than Keen 1 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $3BE2W directs the game to the list at $3BE2. The standard sprite list is 3 + 1 = 4 entries long. Other sprite types are more difficult to work with. Types 5, 6, 7 and 255 have their own separate codes that are jumped to directly, for reasons unknown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3B4A {$3BE2W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $3B3F [$03]&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $3BE2 [$3B5EW] #Vorticon (At $3B5E)&lt;br /&gt;
             [$3B68W] #Youth (At $3B68)&lt;br /&gt;
             [$3B72W] #Vorticon Elite (At $3B72)&lt;br /&gt;
             [$3B7CW] #Scrub (At $3B7C)&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $3B37 [$05] $74 $4C    #Robot (At $3B86)&lt;br /&gt;
%patch $3B4E [$06] $74 $3F    #Platform (At $3B90)&lt;br /&gt;
%patch $3B53 [$07] $74 $44    #Tantalus spark (At $3B9A)&lt;br /&gt;
%patch $3B58 [$00FFW] $74 $48 #Keen (At $3BA4)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 2 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3B5E $57 $56 $E8 $0087W  $83 $C4 $04 $EB $60 #Goes to Vorticon (Code at $3B5E + $87 + $5 = $3BEA)&lt;br /&gt;
%patch $3B68 $57 $56 $E8 $00DFW  $83 $C4 $04 $EB $56 #Goes to Youth (Code at $3B68 + $DF + $5 = $3C4C)&lt;br /&gt;
%patch $3B72 $57 $56 $E8 $0137W  $83 $C4 $04 $EB $4C #Goes to Elite (Code at $3B72 + 137 + $5 = $3CAE)&lt;br /&gt;
%patch $3B7C $57 $56 $E8 $018FW  $83 $C4 $04 $EB $42 #Goes to Scrub (Code at $3B7C + 18F + $5 = $3D10)&lt;br /&gt;
%patch $3B86 $57 $56 $E8 $01C2W  $83 $C4 $04 $EB $38 #Goes to Robot (Code at $3B86 + 1C2 + $5 = $3D4D)&lt;br /&gt;
%patch $3B90 $57 $56 $E8 $01FFW  $83 $C4 $04 $EB $2E #Goes to Platform (Code at $3B90 + 1FF + $5 = $3D94)&lt;br /&gt;
%patch $3B9A $57 $56 $E8 $023DW  $83 $C4 $04 $EB $24 #Goes to Tantalus (Code at $3B9S + 23D + $5 = $3DDC)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $3BA4 $8B $C6 $99 $B1 $0C $E8 $9CD5W  $A3 $6EBAW  $89 $16 $6EBCW&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $9CC6W  $05 [$0800W]  $83 $D2 $00 $A3 $6EBEW&lt;br /&gt;
             $89 $16 $6EC0W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 2 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. &lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon spawning code&lt;br /&gt;
%patch $3BEA $55 $8B $EC $56 $E8 $1B86W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $9C81W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C72W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3E19W}  #Behavior = $3E19&lt;br /&gt;
             $C7 $44 $34 {$3F8CW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $3F8C, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0052W]  $5E #Speed +-90, sprite = $52&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Youth spawning code&lt;br /&gt;
%patch $3C4C $55 $8B $EC $56 $E8 $1B24W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $9C1FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C10W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3FCCW}  #Behavior = $3FCC&lt;br /&gt;
             $C7 $44 $34 {$4093W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $4094, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$0030W]  $5E #Speed +-250, sprite = $30&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Elite spawning code&lt;br /&gt;
%patch $3CAE $55 $8B $EC $56 $E8 $1AC2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $9BBDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9BAEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$40CEW}  #Behavior = $40CE&lt;br /&gt;
             $C7 $44 $34 {$4283W}  $C7 $44 $24 [$0002W]  $8B $44 $06 $8B $54 $04 #Collision = $4283, health = 2&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF9CW]  $EB $05 $C7 $44 $20 [$0064W]  $C7 $44 $28 [$0058W]  $5E #Speed +-100, sprite = $58&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Scrub spawning code&lt;br /&gt;
%patch $3D10 $55 $8B $EC $56 $E8 $1A60W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $9B5BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B4CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$42C1W}  #Behavior = $42C1&lt;br /&gt;
             $C7 $44 $34 {$4507W}  $C7 $44 $28 [$0066W]  $5E $5D $C3             #Collision = $4507, sprite = $66&lt;br /&gt;
&lt;br /&gt;
#Guard Robot spawning code&lt;br /&gt;
%patch $3D4D $55 $8B $EC $56 $E8 $1A23W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $9B1EW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B0FW  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$0064W]  #Speed = 100&lt;br /&gt;
             $C7 $44 $32 {$4539W}  $C7 $44 $34 {$4677W}  $C7 $44 $24 $63 $00 $C7 #Behavior = $4539, collision = $4677, sprite = $78&lt;br /&gt;
             $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Platform spawning code&lt;br /&gt;
%patch $3D94 $55 $8B $EC $56 $E8 $19DCW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $9AD7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9AC8W  $05 [$FC00W]  $83 $D2 $FF $89 $44 $08 $89 $54 #Spawn $FC00 down&lt;br /&gt;
             $0A $C7 $44 $32 {$467CW}  $C7 $44 $34 {$61A2W}  $C7 $44 $28 [$007EW]  #Behavior = $467C, collision = $61A2, speed = $7E, sprite = $4B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Tantalus spawning code&lt;br /&gt;
%patch $3DDC $55 $8B $EC $56 $E8 $1994W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $9A8FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9A80W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}  #Behavior = $46DF, collision = $4716, sprite = $80&lt;br /&gt;
             $C7 $44 $34 {$4716W}  $C7 $44 $28 [$0080W]  $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 2 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $07 and its location is $3B83. This allows several more sprites to be added to the game (here just one new one is added.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Regularized Keen 2 spawning code&lt;br /&gt;
%patch $3B35 $81 $FB $00FFW  $74 $69 $4B $83 $FB [$07] $76 $03 $E9 $0084W  $D1&lt;br /&gt;
             $E3 $2E $FF $A7 $3B83W&lt;br /&gt;
%patch $3B4B $57 $56 $E8 $009AW  $EB $4D $57 $56 $E8 $00F5W  $EB $46&lt;br /&gt;
             $57 $56 $E8 $0150W  $EB $3F $57 $56 $E8 $01ABW  $EB $38&lt;br /&gt;
             $57 $56 $E8 $01E1W  $EB $31 $57 $56 $E8 $0221W  $EB $2A&lt;br /&gt;
             $57 $56 $E8 $0262W  $EB $23 $57 $56 $E8 $CF71W  $EB $1C&lt;br /&gt;
%patch $3B83 $3B4BW  $3B52W  $3B59W  $3B60W  $3B67W  $3B6EW  $3B75W  $3B7CW&lt;br /&gt;
&lt;br /&gt;
#New sprite spawn, immortal, platform type, Tantalus behavior&lt;br /&gt;
%patch $0AF2 $55 $8B $EC $56 $E8 $4C7EW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04&lt;br /&gt;
             $99 $B1 $0C $E8 $CD79W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CD6AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}&lt;br /&gt;
             $C7 $44 $34 {$4677W}  $C7 $44 $28 $0010W  $C7 $44 $20 [$0049W]  $5E&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 3 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 3]] is much more regular than Keen 1 or 2 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. However Keen 3 has one important different. The primary list is a &#039;number list&#039; that gives values in the sprite plane that are converted to various sprites. (For example value 1 in the sprite plane becomes sprite 1, the Vorticon. Value 255 becomes sprite 19, or Keen.) Both this list and the pointer list are the same length, controlled by a single variable, the list length. This is in entries, or words; two bytes long. (So the list length in bytes is this value * 2) The location of the pointer list is a number of bytes after the number list (So changing the number list&#039;s location also changes the pointer list location.) By default this value is the length of the number list in bytes so that both lists form a solid block of data. Also notable is the &#039;Vorticon 2&#039; which has its own sprite number, yet has the same pointer as the Vorticon meaning this sprite is just an unnecessary additional Vorticon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 Initiation lists&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3ACA {$3BD4W} #Number&lt;br /&gt;
%patch $3ADE [$26]    #Pointer list is this many bytes after number list (3BD4 + 26 = 3BFA)&lt;br /&gt;
&lt;br /&gt;
#List lengths (in words, = byte length/2)&lt;br /&gt;
%patch $3AC7 $0013W&lt;br /&gt;
&lt;br /&gt;
#Number list&lt;br /&gt;
%patch $3BD4 [$0001W] #Vorticon&lt;br /&gt;
%patch $3BD6 [$0002W] #Vortikid&lt;br /&gt;
%patch $3BD8 [$0003W] #Vortimom&lt;br /&gt;
%patch $3BDA [$0004W] #Meep&lt;br /&gt;
%patch $3BDC [$0005W] #Vortininja&lt;br /&gt;
%patch $3BDE [$0006W] #Foob&lt;br /&gt;
%patch $3BE0 [$0007W] #Ball&lt;br /&gt;
%patch $3BE2 [$0008W] #Jack&lt;br /&gt;
%patch $3BE4 [$0009W] #H Platform&lt;br /&gt;
%patch $3BE6 [$000AW] #V Platform&lt;br /&gt;
%patch $3BE8 [$000BW] #Vorticon 2&lt;br /&gt;
%patch $3BEA [$000CW] #Purple Spark&lt;br /&gt;
%patch $3BEC [$000DW] #Heart&lt;br /&gt;
%patch $3BEE [$000EW] #Gun across&lt;br /&gt;
%patch $3BF0 [$000FW] #Gun down&lt;br /&gt;
%patch $3BF2 [$0010W] #MM Hand&lt;br /&gt;
%patch $3BF4 [$0011W] #MM Left foot&lt;br /&gt;
%patch $3BF6 [$0012W] #MM Right foot&lt;br /&gt;
%patch $3BF8 [$00FFW] #Keen&lt;br /&gt;
&lt;br /&gt;
#Pointer list&lt;br /&gt;
%patch $3BFA [$3ADFW] #Vorticon&lt;br /&gt;
%patch $3BFC [$3AE9W] #Vortikid&lt;br /&gt;
%patch $3BFE [$3AF3W] #Vortimom&lt;br /&gt;
%patch $3C00 [$3AFDW] #Meep&lt;br /&gt;
%patch $3C02 [$3B07W] #Vortininja&lt;br /&gt;
%patch $3C04 [$3B11W] #Foob&lt;br /&gt;
%patch $3C06 [$3B1BW] #Ball&lt;br /&gt;
%patch $3C08 [$3B25W] #Jack&lt;br /&gt;
%patch $3C0A [$3B2FW] #H Platform&lt;br /&gt;
%patch $3C0C [$3B39W] #V Platform&lt;br /&gt;
%patch $3C0E [$3B42W] #Vorticon 2&lt;br /&gt;
%patch $3C10 [$3B4BW] #Purple Spark&lt;br /&gt;
%patch $3C12 [$3B54W] #Heart&lt;br /&gt;
%patch $3C14 [$3B5DW] #Gun across&lt;br /&gt;
%patch $3C16 [$3B66W] #Gun down&lt;br /&gt;
%patch $3C18 [$3B6FW] #Hand&lt;br /&gt;
%patch $3C1A [$3B78W] #Left Foot&lt;br /&gt;
%patch $3C1C [$3B86W] #Right foot&lt;br /&gt;
%patch $3C1E [$3B94W] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for the various sprites are quite simple. each simply tells the game a new sprite is going to be produced, then jumps to that sprite&#039;s spawn code. The finishing code is run by all sprite initiation codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3ADF $56 $57 $E8 $013CW  $59 $59 $E9 $00D1W				#Goes to Vorticon (Code at $3ADF + $13C + 5 = $3C20)&lt;br /&gt;
%patch $3AE9 $56 $57 $E8 $0194W  $59 $59 $E9 $00C7W				#Goes to Vortikid (Code at $3AE9 + $194 + 5 = $3C82)&lt;br /&gt;
%patch $3AF3 $56 $57 $E8 $01ECW  $59 $59 $E9 $00BDW				#Goes to Vortimom (Code at $3AF3 + $1EC + 5 = $3CE4)&lt;br /&gt;
%patch $3AFD $56 $57 $E8 $0244W  $59 $59 $E9 $00B3W				#Goes to Meep (Code at $3AFD + $244 + 5 = $3D46)&lt;br /&gt;
%patch $3B07 $56 $57 $E8 $02A2W  $59 $59 $E9 $00A9W				#Goes to Vortininja (Code at $3B07 + $2A2 + 5 = $3DAE)&lt;br /&gt;
%patch $3B11 $56 $57 $E8 $02FAW  $59 $59 $E9 $009FW				#Goes to Foob (Code at $3B11 + $2FA + 5 = $3E10)&lt;br /&gt;
%patch $3B1B $56 $57 $E8 $0352W  $59 $59 $E9 $0095W				#Goes to Ball (Code at $3B1B + $352 + 5 = $3E72)&lt;br /&gt;
%patch $3B25 $56 $57 $E8 $03CAW  $59 $59 $E9 $008BW				#Goes to Jack (Code at $3B25 + $3CA + 5 = $3EF4)&lt;br /&gt;
%patch $3B2F $56 $57 $E8 $0442W  $59 $59 $E9 $0081W				#Goes to H Platform (Code at $3B2F + $442 + 5 = $3F76)&lt;br /&gt;
%patch $3B39 $56 $57 $E8 $0480W  $59 $59 $EB $78				#Goes to V Platform (Code at $3B39 + $480 + 5 = $3FBE)&lt;br /&gt;
%patch $3B42 $56 $57 $E8 $00D9W  $59 $59 $EB $6F				#Goes to Vorticon (Code at $3B42 + $D9 + 5 = $3C20)&lt;br /&gt;
%patch $3B4B $56 $57 $E8 $0516W  $59 $59 $EB $66				#Goes to Purple Spark (Code at $3B4B + $516 + 5 = $4066)&lt;br /&gt;
%patch $3B54 $56 $57 $E8 $054AW  $59 $59 $EB $5D				#Goes to Heart (Code at $3B54 + $54A + 5 = $40A3)&lt;br /&gt;
%patch $3B5D $56 $57 $E8 $049EW  $59 $59 $EB $54				#Goes to Gun across (Code at $3B5D + $49E + 5 = $4000)&lt;br /&gt;
%patch $3B66 $56 $57 $E8 $04C8W  $59 $59 $EB $4B				#Goes to Gun down (Code at $3B66 + $4C8 + 5 = $4033)&lt;br /&gt;
%patch $3B6F $56 $57 $E8 $056CW  $59 $59 $EB $42				#Goes to Hand (Code at $3B6F + $56C + 5 = $40E0)&lt;br /&gt;
%patch $3B78 $B8 $FFFFW  $50 $56 $57 $E8 $0597W  $83 $C4 $06 $EB $34		#Goes to Left foot (Code at $3B78 + $597 + 9 = $4118)&lt;br /&gt;
%patch $3B86 $B8 $0001W  $50 $56 $57 $E8 $0589W  $83 $C4 $06 $EB $26		#Goes to Right foot (Code at $3B86 + $589 + 9 = $4118)&lt;br /&gt;
%patch $3B94 $8B $C7 $99 $B1 $0C $E8 $25 $A3B0W  $0A $71 $89 $16 $0C $71 $8B	#Goes to Keen (Code at $3B94 + $B016 + 5 = $EBAA)&lt;br /&gt;
             $C6 $99 $B1 $0C $E8 $B016W  $05 $00 $08 $83 $D2 $00 $A3 $0E $71&lt;br /&gt;
             $89 $16 $10 $71 $EB $00&lt;br /&gt;
%patch $3BBA $47 $3B $3E $34 $6E $7D $03 $E9 $E6 $FE $46 $3B $36 $84 $6E $7D	#Finisher&lt;br /&gt;
             $03 $E9 $D7 $FE $5F $5E $8B $E5 $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 3 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. Notice that the left and right foot of the Mangling Machine use the same spawn code, and that both the MM hands and feet are [[Patch:Meta sprites|metasprites]] not sprites.&lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $3C20 $55 $8B $EC $56 $E8 $2396W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $AF8BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF7CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$414AW}  #Behavior = $414A&lt;br /&gt;
             $C7 $44 $34 {$42D0W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $42D0, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44 #Check for Keen&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0047W]  $5E #Speed +-5A sprite = 47&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortikid&lt;br /&gt;
%patch $3C82 $55 $8B $EC $56 $E8 $2334W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $AF29W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF1AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4311W}  #Behavior = $4311&lt;br /&gt;
             $C7 $44 $34 {$43D9W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $43D9, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$002FW]  $5E #Speed +-250, sprite = 2F&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortimom&lt;br /&gt;
%patch $3CE4 $55 $8B $EC $56 $E8 $22D2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $AEC7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AEB8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$440CW}  #Behavior = $440C&lt;br /&gt;
             $C7 $44 $34 {$470CW}  $C7 $44 $24 [$0005W]  $8B $44 $06 $8B $54 $04 #Collision = $470C, health = 5&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$0055W]  $5E #Speed +-50, sprite = 55&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Meep&lt;br /&gt;
%patch $3D46 $55 $8B $EC $56 $E8 $2270W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AE65W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AE56W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4746W}  $C7 $44 $34 {$4898W}  $C7 $44 $24 [$0001W]  #Behavior = $4746 Collision = $4898, health = 1&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $0C $71 $7C $0F $7F $06 $3B $16&lt;br /&gt;
             $0A $71 $76 $07 $C7 $44 $20 [$FFBFW]  $EB $05 $C7 $44 $20 [$0041W]  #Speed +-65, sprite = 78&lt;br /&gt;
             $C7 $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortininja&lt;br /&gt;
%patch $3DAE $55 $8B $EC $56 $E8 $2208W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $ADFDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ADEEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32{ $48F7W}  #Behavior = $48F7&lt;br /&gt;
             $C7 $44 $34 {$49CDW}  $C7 $44 $24 [$0003W]  $8B $44 $06 $8B $54 $04 #Collision $49CD, health = 3&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFFFW]  $EB $05 $C7 $44 $20 [$0001W]  $C7 $44 $28 [$004DW]  $5E #Face Keen, sprite = 4D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Foob&lt;br /&gt;
%patch $3E10 $55 $8B $EC $56 $E8 $21A6W  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $AD9BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD8CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4A0CW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$4B7EW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $4B 7E, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$005DW]  $5E #Speed +-50, sprite = 5D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Ball&lt;br /&gt;
%patch $3E72 $55 $8B $EC $56 $E8 $2144W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $AD39W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD2AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C0BW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006DW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Jack&lt;br /&gt;
%patch $3EF4 $55 $8B $EC $56 $E8 $20C2W  $8B $F0 $C7 $04 [$0009W]  $8B $46 $04 #Sprite type = 9&lt;br /&gt;
             $99 $B1 $0C $E8 $ACB7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ACA8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4BBDW}  #Behavior = $4BBD&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006EW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H Platform&lt;br /&gt;
%patch $3F76 $55 $8B $EC $56 $E8 $2040W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $AC35W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AC26W  $05 $00 $FC $83 $D2 $FF $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4C47W}  $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]   #Behavior = $4C47, Collision $6A00 Sprite = 6B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3                                 #Speed = +76&lt;br /&gt;
&lt;br /&gt;
#V Platform&lt;br /&gt;
%patch $3FBE $55 $8B $EC $56 $E8 $1FF8W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $ABEDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ABDEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C47W}  #Behavior = $4C47&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]  $C7 $44 $22 [$004BW]  $5E   #Collision $6A00, Sprite = 6B, Speed = +76&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H gun&lt;br /&gt;
%patch $4000 $55 $8B $EC $56 $E8 $2001W  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $ABAAW  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB9CW  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D34W}  $5E $5D $C3 #Behavior = $4D34&lt;br /&gt;
&lt;br /&gt;
#V gun&lt;br /&gt;
%patch $4033 $55 $8B $EC $56 $E8 $1FCEW  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AB77W  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB69W  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D9BW}  $5E $5D $C3 #Behavior = $4D9B&lt;br /&gt;
&lt;br /&gt;
#Purple Spark&lt;br /&gt;
%patch $4066 $55 $8B $EC $56 $E8 $1F50W  $8B $F0 $C7 $04 [$000DW]  $8B $46 $04 #Sprite type = 13&lt;br /&gt;
             $99 $B1 $0C $E8 $AB45W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AB36W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4E02W}  #Behavior = $4E02&lt;br /&gt;
             $C7 $44 $34 {$4E19W}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Collision $4E19, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#Heart&lt;br /&gt;
%patch $40A3 $55 $8B $EC $56 $E8 $1F13W  $8B $F0 $C7 $04 [$000CW]  $8B $46 $04 #Sprite type = 12&lt;br /&gt;
             $B1 $0C $E8 $AB08W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99 $B1&lt;br /&gt;
             $0C $E8 $AAF9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4EA6W}  $C7 #Behavior = $4EA6&lt;br /&gt;
             $44 $34 {$4EBEW}  $C7 $44 $28 [$0072W]  $5E $5D $C3                 #Collision $4EBE, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#MM Hand (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $40E0 $55 $8B $EC $56 $E8 $1F21W  $8B $F0 $C7 $44 $08 [$0006W]  $8B $46 #Sprite type = 6&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $C7 $44 $22 {$50F4W}  $C7 $44 $0C [$0000W]  $C7 $44 $0A [$0001W]  #Direction = right, up&lt;br /&gt;
             $C7 $44 $0E $000FW  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#MM Feet (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $4118 $55 $8B $EC $56 $E8 $1EE9W  $8B $F0 $C7 $44 $08 [$0007W]  $8B $46 #Sprite type = 7&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $8B $46 $08 $89 $44 $0A $89 $44 $0E $C7 $44 $22 {$52F1W}  $5E #Behavior = $52F1&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen Dreams =&lt;br /&gt;
&lt;br /&gt;
[[Keen Dreams]] is similar to Keen Galaxy in that there are two kinds of pointers, &#039;short&#039; (two-byte) pointers used in the pointer list and &#039;long&#039; (four byte) pointers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
Pointers in Dreams are different from those in Vorticons in that they require a value to be added to them to get the actual location they refer to. In Dreams this is $44D0. So a pointer with the value $04FCW actually refers to code at $04FC + $44D0 = $49CC. Interestingly infoplane values are used for both sprites and level entrances on the map. This means that if extra levels are desired some sprites will have to be overwritten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($44D0 + $050DW = $49DD)&lt;br /&gt;
%patch $4774 [$050DW]&lt;br /&gt;
&lt;br /&gt;
#Length of list (60 items)&lt;br /&gt;
%patch $4769 [$3C]&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is 44D0)&lt;br /&gt;
%patch $49DD [$02A6W] #Keen right (At $4776)&lt;br /&gt;
%patch $49DF [$02BDW] #Keen left (At $478D)&lt;br /&gt;
%patch $49E1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49ED [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FD [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A01 [$02D4W] #Map Keen (At $47A4)&lt;br /&gt;
%patch $4A03 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A05 [$02F3W] #100 Pts (At $47C3)&lt;br /&gt;
%patch $4A07 [$02F3W] #200 Pts (At $47C3)&lt;br /&gt;
%patch $4A09 [$02F3W] #500 Pts (At $47C3)&lt;br /&gt;
%patch $4A0B [$02F3W] #1000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0D [$02F3W] #2000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0F [$02F3W] #5000 Pts (At $47C3)&lt;br /&gt;
%patch $4A11 [$02F3W] #1UP (At $47C3)&lt;br /&gt;
%patch $4A13 [$02F3W] #Eye (At $47C3)&lt;br /&gt;
%patch $4A15 [$02F3W] #Flower Power (At $47C3)&lt;br /&gt;
%patch $4A17 [$02F3W] #Flower Pot (At $47C3)&lt;br /&gt;
%patch $4A19 [$02EDW] #Boobus Bomb (At $47BD)&lt;br /&gt;
%patch $4A1B [$02F3W] #Key (At $47C3)&lt;br /&gt;
%patch $4A1D [$0316W] #Door (At $47E6)&lt;br /&gt;
%patch $4A1F [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A21 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A23 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A25 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A27 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A29 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2D [$0332W] #Broccolash (At $4802)&lt;br /&gt;
%patch $4A2F [$0354W] #Tomatooth (At $4824)&lt;br /&gt;
%patch $4A31 [$0376W] #Carrot Courier (At $4846)&lt;br /&gt;
%patch $4A33 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A35 [$0398W] #Asparagusto (At $4868)&lt;br /&gt;
%patch $4A37 [$03BAW] #Sour Grape (At $488A)&lt;br /&gt;
%patch $4A39 [$03DCW] #Tater Trooper (At $48AC)&lt;br /&gt;
%patch $4A3B [$03FEW] #Minecart (At $48CE)&lt;br /&gt;
%patch $4A3D [$0417W] #Frenchy (At $48E7)&lt;br /&gt;
%patch $4A3F [$0439W] #Melon Lips left (At $4909)&lt;br /&gt;
%patch $4A41 [$0439W] #Melon Lips right (At $4909)&lt;br /&gt;
%patch $4A43 [$0439W] #Melon Lips down (At $4909)&lt;br /&gt;
%patch $4A45 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A47 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A49 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4D [$0462W] #Squasher (At $4932)&lt;br /&gt;
%patch $4A4F [$0483W] #Apel (At $4953)&lt;br /&gt;
%patch $4A51 [$04A4W] #Pea Pod (At $4974)&lt;br /&gt;
%patch $4A53 [$04C5W] #Pea Brain (At $4995)&lt;br /&gt;
%patch $4A55 [$04E6W] #Boobus Tuber (At $49B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to those in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
The first and most important thing is sprite cache. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $70xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Brocolash&#039;s cache is $BC, the Tomatooth&#039;s is $BE (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the [[Patch:Pea Brain|Pea Brain]] uses the same cache as the [[Patch:Pea Pod|Pea Pod]]; this may be because the Pea Brain is never used in Keen Dreams by default and so is &#039;slaved&#039; to the Pea Pod.&lt;br /&gt;
&lt;br /&gt;
The call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $05E80CFFRL. All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;Blank&#039; code. These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right Keen initiation code&lt;br /&gt;
%patch $4776 $B8 $0001W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $023FW&lt;br /&gt;
&lt;br /&gt;
#Left Keen initiation code&lt;br /&gt;
%patch $478D $B8 $FFFFW  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $0228W&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $47A4 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80B20RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70BAW  $0001W  $E9 $020FW&lt;br /&gt;
&lt;br /&gt;
#Boobus Bomb (Uses following item initiation code)&lt;br /&gt;
%patch $47BD $C7 $06 $704CW  $0001W &lt;br /&gt;
&lt;br /&gt;
#Items initiation code&lt;br /&gt;
%patch $47C3 $A1 $70ACW  $2D [$0015W]  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $07C504A3RL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W &lt;br /&gt;
             $E9 $01E6W&lt;br /&gt;
&lt;br /&gt;
#Door initiation code&lt;br /&gt;
%patch $47E6 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50323RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $E9 $01CAW&lt;br /&gt;
&lt;br /&gt;
#Broccolash initiation code&lt;br /&gt;
%patch $4802 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50546RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BCW  $0001W  $E9&lt;br /&gt;
             $01A8W&lt;br /&gt;
&lt;br /&gt;
#Tomatooth initiation code&lt;br /&gt;
%patch $4824 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5060ARL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BEW  $0001W  $E9&lt;br /&gt;
             $0186W&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier initiation code&lt;br /&gt;
%patch $4846 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5078DRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C0W  $0001W  $E9&lt;br /&gt;
             $0164W&lt;br /&gt;
&lt;br /&gt;
#Asparagusto initiation code&lt;br /&gt;
%patch $4868 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50896RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C2W  $0001W  $E9&lt;br /&gt;
             $0142W&lt;br /&gt;
&lt;br /&gt;
#Sour Grape initiation code&lt;br /&gt;
%patch $488A $FF $36 $7052W  $FF $36 $7050W  $9A $07C508D4RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C4W  $0001W  $E9&lt;br /&gt;
             $0120W&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper initiation code&lt;br /&gt;
%patch $48AC $FF $36 $7052W  $FF $36 $7050W  $9A $08680006RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C6W  $0001W  $E9&lt;br /&gt;
             $00FEW&lt;br /&gt;
&lt;br /&gt;
#Minecart initiation code&lt;br /&gt;
%patch $48CE $FF $36 $7052W  $FF $36 $7050W  $9A $08680100RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70C8W  $0001W  $E9 $00E5W&lt;br /&gt;
&lt;br /&gt;
#Frenchy initiation code&lt;br /&gt;
%patch $48E7 $FF $36 $7052W  $FF $36 $7050W  $9A $086801E1RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CAW  $0001W  $E9&lt;br /&gt;
             $00C3W&lt;br /&gt;
&lt;br /&gt;
#Melon initiation code&lt;br /&gt;
%patch $4909 $A1 $70ACW  $2D $0032W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $0868035ERL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W&lt;br /&gt;
             $C7 $06 $70CCW  $0001W  $E9 $009AW&lt;br /&gt;
&lt;br /&gt;
#Squasher initiation code&lt;br /&gt;
%patch $4932 $FF $36 $7052W  $FF $36 $7050W  $9A $086807BFRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CEW  $0001W  $EB&lt;br /&gt;
             $79&lt;br /&gt;
&lt;br /&gt;
#Apel initiation code&lt;br /&gt;
%patch $4953 $FF $36 $7052W  $FF $36 $7050W  $9A $086808C8RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D0W  $0001W  $EB&lt;br /&gt;
             $58&lt;br /&gt;
&lt;br /&gt;
#Pea Pod initiation code&lt;br /&gt;
%patch $4974 $FF $36 $7052W  $FF $36 $7050W  $9A $08680B67RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $37&lt;br /&gt;
&lt;br /&gt;
#Pea Brain initiation code&lt;br /&gt;
%patch $4995 $FF $36 $7052W  $FF $36 $7050W  $9A $08680AE9RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $16&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber initiation code&lt;br /&gt;
%patch $49B6 $FF $36 $7052W  $FF $36 $7050W  $9A $08680C8ARL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70D4W  $0001W&lt;br /&gt;
&lt;br /&gt;
#BLANK (All initiation codes jump to this)&lt;br /&gt;
%patch $49CC $8B $1E $3E $70 $83 $7F $02 $02 $74 $05 $C7 $47 $02 $0000W  $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type]] and &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly.&lt;br /&gt;
&lt;br /&gt;
Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything. However it is often used even when this is not the case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen spawn code&lt;br /&gt;
%patch $69A0 $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $83 $3E {$70EEW}  [$00]&lt;br /&gt;
             {$75} $11 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3&lt;br /&gt;
             $E0 $EB $0D $8B $1E $34 $70 $A1 $70EEW  $89 $47 $0A $A1 $70F0W &lt;br /&gt;
             $89 $47 $0C $8B $1E $34 $70 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0001W]&lt;br /&gt;
                 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $C7 $47 $3E [$0006W]&lt;br /&gt;
             $C7 $47 $40 [$0003W]  $C7 $47 $20 [$00D7W]  $B8 [$0D3AW]  $50 $FF $36&lt;br /&gt;
             $34 $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen spawn code&lt;br /&gt;
%patch $6B7F $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]&lt;br /&gt;
             $C7 $47 $06 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0ED8W]  $50 $FF $36 $34 $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door spawn code&lt;br /&gt;
%patch $7F73 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0003W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$FFFFW]  $C7 $47 $06 [$0000W]  $B8 [$1732W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $80F3 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $47 $06 [$0000W]  $C7 $07 [$0004W]  $8B $46&lt;br /&gt;
             $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $83 $FE [$09] {$75} $05 $81 {$0C6FW}  [$0080W]  $8B $1E $3E $70 $C7 $47&lt;br /&gt;
             $10 [$FFFFW]  $89 $77 $3E $8B $DE $D1 $E3 $8B $87 [$19A8W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $20 $89 $47 $40 $83 $FE [$07] {$74} $07 $8B $47 $40&lt;br /&gt;
             $40 $40 $EB $0A $8B $1E $3E $70 $8B $47 $40 $05 [$0004W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $42 $B8 [$196CW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Broccolash spawn code&lt;br /&gt;
%patch $8196 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$19C0W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Tomatooth spawn code&lt;br /&gt;
%patch $825A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0006W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$1B46W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier spawn code&lt;br /&gt;
%patch $83DD $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0007W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1B82W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Asparagusto spawn code&lt;br /&gt;
%patch $84E6 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0009W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $B8 [$1C18W]  $50&lt;br /&gt;
             $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sour Grape spawn code&lt;br /&gt;
%patch $8524 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000AW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $B8 [$1C90W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4&lt;br /&gt;
             $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper spawn code&lt;br /&gt;
%patch $8686 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000BW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1D08W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Minecart spawn code&lt;br /&gt;
%patch $8780 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000CW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FFD0W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $C7 $47 $02 [$0002W]  $B8 [$1DDAW]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Frenchy spawn code&lt;br /&gt;
%patch $8861 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000DW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1E16W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Melon spawn code&lt;br /&gt;
%patch $89DE $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $07 [$000EW] $8B $46 $06 $B1 $08 $D3 $E0&lt;br /&gt;
             $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $0B $F6 $74 $07 $C7&lt;br /&gt;
             $47 $0E [$0001W]  $EB $09 $8B $1E $3E $70 $C7 $47 $0E [$FFFFW]  $83&lt;br /&gt;
             $FE [$02] {$7D} $05 $B8 [$1F9CW]  $EB $03 $B8 [$1FF6W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $9A $16C40026RL     $D1 $F8&lt;br /&gt;
             $8B $1E $3E $70 $89 $47 $1A $89 $77 $3E $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Squasher spawn code&lt;br /&gt;
%patch $8E3F $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0013W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$20C8W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Apel spawning code&lt;br /&gt;
%patch $8F48 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0014W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$215EW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Brain spawn code&lt;br /&gt;
%patch $9169 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0016W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $B8 [$22A8W]  $50 $FF $36 $3E $70 $9A&lt;br /&gt;
             $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Pod spawn code&lt;br /&gt;
%patch $91E7 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0015W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$2320W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber spawn code&lt;br /&gt;
%patch $930A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0017W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FA80W]  $89 $47 $0C $C7 $47 $0E [$FFFFW] $B8&lt;br /&gt;
             [$23D4W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $8B&lt;br /&gt;
             $1E $3E $70 $C7 $47 $44 [$000CW]  $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 4 =&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
The initiation pointer list pointers are short and require another value to be added to them to give the location to which they refer. (Thus in Keen 4 a value of $0064 actually points to code at $E8F0 + $0064 = $E954.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E8F0 + $0595 = $EE85)&lt;br /&gt;
%patch $E952 $0595W&lt;br /&gt;
&lt;br /&gt;
#Length of list (88 items)&lt;br /&gt;
%patch $E947 $57&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is E8F0)&lt;br /&gt;
%patch $EE85 [$0064W] #Right Facing Keen (At $E954)&lt;br /&gt;
%patch $EE87 [$0090W] #Left Facing Keen (At $E980)&lt;br /&gt;
%patch $EE89 [$00BCW] #Map Keen (At $E9AC)&lt;br /&gt;
%patch $EE8B [$00E4W] #Council Member (At $E9D4)&lt;br /&gt;
%patch $EE8D [$010DW] #Easy Berkeloid (At $E9FD)&lt;br /&gt;
%patch $EE8F [$0122W] #Lindsey (At $EA12)&lt;br /&gt;
%patch $EE91 [$014BW] #Easy Wormouth (At $EA3B)&lt;br /&gt;
%patch $EE93 [$0174W] #Easy Skypest (At $EA64)&lt;br /&gt;
%patch $EE95 [$0189W] #Cloud (At $EA79)&lt;br /&gt;
%patch $EE97 [$019EW] #Foot (At $EA8E)&lt;br /&gt;
%patch $EE99 [$01CDW] #Inchworm (At $EABD)&lt;br /&gt;
%patch $EE9B [$01FCW] #Bounder (At $EAEC)&lt;br /&gt;
%patch $EE9D [$0211W] #Egg (At $EB01)&lt;br /&gt;
%patch $EE9F [$0240W] #Easy Lick (At $EB30)&lt;br /&gt;
%patch $EEA1 [$0269W] #Easy Dopefish (At $EB59)&lt;br /&gt;
%patch $EEA3 [$027EW] #Schoolfish (At $EB6E)&lt;br /&gt;
%patch $EEA5 [$02A7W] #Easy Sprite (At $EB97)&lt;br /&gt;
%patch $EEA7 [$02BCW] #Smirky (At $EBAC)&lt;br /&gt;
%patch $EEA9 [$02D1W] #Mimrock (At $EBC1)&lt;br /&gt;
%patch $EEAB [$02FAW] #Easy Arachnut (At $EBEA)&lt;br /&gt;
%patch $EEAD [$030FW] #Mushroom (At $EBFF)&lt;br /&gt;
%patch $EEAF [$0338W] #Easy Slug (At $EC28)&lt;br /&gt;
%patch $EEB1 [$029DW] #Medium Sprite (At $EB8D)&lt;br /&gt;
%patch $EEB3 [$0293W] #Hard Sprite (At $EB83)&lt;br /&gt;
%patch $EEB5 [$034DW] #Horizontal Scrollbar (At $EC3D)&lt;br /&gt;
%patch $EEB7 [$0360W] #Vertical Scrollbar (At $EC50)&lt;br /&gt;
%patch $EEB9 [$0372W] #Up Platform (At $EC62)&lt;br /&gt;
%patch $EEBB [$0372W] #Right Platform (At $EC62)&lt;br /&gt;
%patch $EEBD [$0372W] #Down Platform (At $EC62)&lt;br /&gt;
%patch $EEBF [$0372W] #Left Platform (At $EC62)&lt;br /&gt;
%patch $EEC1 [$050DW] #B Block (At $EDFD)&lt;br /&gt;
%patch $EEC3 [$038EW] #Dropping Platform (At $EC7E)&lt;br /&gt;
%patch $EEC5 [$03A3W] #Miragia (At $EC93)&lt;br /&gt;
%patch $EEC7 [$03B2W] #IF Ammo (At $ECA2)&lt;br /&gt;
%patch $EEC9 [$03DEW] #Wetsuit (At $ECCE)&lt;br /&gt;
%patch $EECB [$050DW] #&#039;I Keen&#039; (At $EDFD)&lt;br /&gt;
%patch $EECD [$050DW] #&#039;Mom&#039; (At $EDFD)&lt;br /&gt;
%patch $EECF [$050DW] #&#039;Dad&#039; (At $EDFD)&lt;br /&gt;
%patch $EED1 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED3 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED5 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED7 [$03FBW] #Swimming Keen (At $ECEB)&lt;br /&gt;
%patch $EED9 [$032EW] #Medium Slug (At $EC1E)&lt;br /&gt;
%patch $EEDB [$0324W] #Hard Slug (At $EC14)&lt;br /&gt;
%patch $EEDD [$016AW] #Medium Skypest (At $EA5A)&lt;br /&gt;
%patch $EEDF [$0160W] #Hard Skypest (At $EA50)&lt;br /&gt;
%patch $EEE1 [$0236W] #Medium Lick (At $EB26)&lt;br /&gt;
%patch $EEE3 [$022CW] #Hard Lick (At $EB1C)&lt;br /&gt;
%patch $EEE5 [$0103W] #Medium Berkeloid (At $E9F3)&lt;br /&gt;
%patch $EEE7 [$00F9W] #Hard Berkeloid (At $E9E9)&lt;br /&gt;
%patch $EEE9 [$0141W] #Medium Wormouth (At $EA31)&lt;br /&gt;
%patch $EEEB [$0137W] #Hard Wormouth (At $EA27)&lt;br /&gt;
%patch $EEED [$0489W] #Easy Up Dart (At $ED79)&lt;br /&gt;
%patch $EEEF [$0489W] #Easy Right Dart (At $ED79)&lt;br /&gt;
%patch $EEF1 [$0489W] #Easy Down Dart (At $ED79)&lt;br /&gt;
%patch $EEF3 [$0489W] #Easy Left Dart (At $ED79)&lt;br /&gt;
%patch $EEF5 [$04A4W] #Red Gem (At $ED94)&lt;br /&gt;
%patch $EEF7 [$04A4W] #Yellow Gem (At $ED94)&lt;br /&gt;
%patch $EEF9 [$04A4W] #Blue Gem (At $ED94)&lt;br /&gt;
%patch $EEFB [$04A4W] #Green Gem (At $ED94)&lt;br /&gt;
%patch $EEFD [$04A4W] #100 Pts (At $ED94)&lt;br /&gt;
%patch $EEFF [$04A4W] #200 pts (At $ED94)&lt;br /&gt;
%patch $EF01 [$04A4W] #500 Pts (At $ED94)&lt;br /&gt;
%patch $EF03 [$04A4W] #1000 Pts (At $ED94)&lt;br /&gt;
%patch $EF05 [$04A4W] #2000 Pts (At $ED94)&lt;br /&gt;
%patch $EF07 [$04A4W] #5000 Pts (At $ED94)&lt;br /&gt;
%patch $EF09 [$04A4W] #1UP (At $ED94)&lt;br /&gt;
%patch $EF0B [$04A4W] #Raygun (At $ED94)&lt;br /&gt;
%patch $EF0D [$04CAW] #Up Mine (At $EDBA)&lt;br /&gt;
%patch $EF0F [$04CAW] #Right Mine (At $EDBA)&lt;br /&gt;
%patch $EF11 [$04CAW] #Down Mine (At $EDBA)&lt;br /&gt;
%patch $EF13 [$04CAW] #Left Mine (At $EDBA)&lt;br /&gt;
%patch $EF15 [$02F0W] #Medium Arachnut (At $EBE0)&lt;br /&gt;
%patch $EF17 [$02E6W] #Hard Arachnut (At $EBD6)&lt;br /&gt;
%patch $EF19 [$04E5W] #Mooning Keen (At $EDD5)&lt;br /&gt;
%patch $EF1B [$04FBW] #Easy Bird(At $EDEB)&lt;br /&gt;
%patch $EF1D [$04F4W] #Medium Bird (At $EDE4)&lt;br /&gt;
%patch $EF1F [$04EDW] #Hard Bird (At $EDDD)&lt;br /&gt;
%patch $EF21 [$0463W] #Medium Up Dart (At $ED53)&lt;br /&gt;
%patch $EF23 [$0463W] #Medium Right Dart (At $ED53)&lt;br /&gt;
%patch $EF25 [$0463W] #Medium Down Dart (At $ED53)&lt;br /&gt;
%patch $EF27 [$0463W] #Medium Left Dart (At $ED53)&lt;br /&gt;
%patch $EF29 [$043DW] #Hard Up Dart (At $ED2D)&lt;br /&gt;
%patch $EF2B [$043DW] #Hard Right Dart (At $ED2D)&lt;br /&gt;
%patch $EF2D [$043DW] #Hard Down Dart (At $ED2D)&lt;br /&gt;
%patch $EF2F [$043DW] #Hard Left dart (At $ED2D)&lt;br /&gt;
%patch $EF31 [$025FW] #Medium Dopefish (At $EB4F)&lt;br /&gt;
%patch $EF33 [$0255W] #Hard Dopefish (At $EB45)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $7A6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CBxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Council Member&#039;s cache is $5D, the Bird&#039;s is $5F (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the Egg sets two cache values, one for itself and one for the Bird. Several sprites set no cache, including the Wetsuit, which uses a hardcoded value for the (Single frame) it caches. Other sprites cache individual animations as well as their cache, or even several animations in addition to their cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0B80000ERL and $0D8F0003RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right facing Keen&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is +1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $047DW		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Left facing Keen&lt;br /&gt;
%patch $E980 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is -1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $0451W		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $E9AC $FF $76 $FC $57 $9A {$0D8F050ARL}      $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB4FW  $0001W  $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
              $26 $08 $16 [$00FDW]  $E9 $0429W					#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Council Member&lt;br /&gt;
%patch $E9D4 $FF $76 $FC $57 $9A {$0FA80269RL}     $83 $C4 $04 $C7 $06 $CB5DW&lt;br /&gt;
             $0001W  $E9 $0414W&lt;br /&gt;
&lt;br /&gt;
#Berkeloid&lt;br /&gt;
%patch $E9E9 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $040AW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0400W  $FF $76 $FC $57 $9A {$1080039BRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB75W  $0001W  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Lindsey&lt;br /&gt;
%patch $EA12 $FF $76 $FC $57 $9A {$11A20DB5RL}     $83 $C4 $04 $C7 $06 $CB57W&lt;br /&gt;
             $0001W  $E9 $03D6W&lt;br /&gt;
&lt;br /&gt;
#Wormouth&lt;br /&gt;
%patch $EA27 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03CCW  $83 $3E [$7A6CW]  {$02}&lt;br /&gt;
             {$7D} $03 $E9 $03C2W  $FF $76 $FC $57 $9A {$10800006RL}     $83 $C4&lt;br /&gt;
             $04 $C7 $06 $CB6BW  $0001W  $E9 $03ADW&lt;br /&gt;
&lt;br /&gt;
#Skypest&lt;br /&gt;
%patch $EA50 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03A3W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0399W  $FF $76 $FC $57 $9A {$0FA80B67RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB69W  $0001W  $E9 $0384W&lt;br /&gt;
#Cloud&lt;br /&gt;
%patch $EA79 $FF $76 $FC $57 $9A {$108001C2RL}     $83 $C4 $04 $C7 $06 $CB73W&lt;br /&gt;
             $0001W  $E9 $036FW&lt;br /&gt;
&lt;br /&gt;
#Foot&lt;br /&gt;
%patch $EA8E $FF $76 $FC $57 $9A {$1080072CRL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0340W      #End&lt;br /&gt;
&lt;br /&gt;
#Inchworm&lt;br /&gt;
%patch $EABD $FF $76 $FC $57 $9A {$108006B2RL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0311W      #End&lt;br /&gt;
&lt;br /&gt;
#Bounder&lt;br /&gt;
%patch $EAEC $FF $76 $FC $57 $9A {$108008EARL}     $83 $C4 $04 $C7 $06 $CB71W&lt;br /&gt;
             $0001W  $E9 $02FCW&lt;br /&gt;
&lt;br /&gt;
#Egg&lt;br /&gt;
%patch $EB01 $FF $76 $FC $57 $9A {$0FA8055DRL}     $83 $C4 $04 $C7 $06 $CB5FW&lt;br /&gt;
             $0001W  $C7 $06 $CB83W  $0001W  $E9 $02E1W&lt;br /&gt;
&lt;br /&gt;
#Lick&lt;br /&gt;
%patch $EB1C $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02D7W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $02CDW  $FF $76 $FC $57 $9A {$10800AC8RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB6DW  $0001W  $E9 $02B8W&lt;br /&gt;
&lt;br /&gt;
#Dopefish&lt;br /&gt;
%patch $EB45 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02AEW  $83&lt;br /&gt;
             $3E [$7A6CW]  {$02 $7D} $03 $E9 $02A4W  $FF $76 $FC $57 $9A {$11A20690RL}&lt;br /&gt;
                     $83 $C4 $04 $C7 $06 $CB63W  $0001W  $E9 $028FW&lt;br /&gt;
&lt;br /&gt;
#Schoolfish&lt;br /&gt;
%patch $EB6E $FF $76 $FC $57 $9A {$11A20AA7RL}     $83 $C4 $04 $C7 $06 $CB65W&lt;br /&gt;
             $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Sprite&lt;br /&gt;
%patch $EB83 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $FF $76 $FC $57 $9A {$11A20B5FRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB7DW  $0001W  $E9 $0251W&lt;br /&gt;
&lt;br /&gt;
#Smirky&lt;br /&gt;
%patch $EBAC $FF $76 $FC $57 $9A {$11A2000ERL}     $83 $C4 $04 $C7 $06 $CB5BW &lt;br /&gt;
             $0001W  $E9 $023CW&lt;br /&gt;
&lt;br /&gt;
#Mimrock&lt;br /&gt;
%patch $EBC1 $FF $76 $FC $57 $9A {$11A20447RL}     $83 $C4 $04 $C7 $06 $CB61W&lt;br /&gt;
             $0001W  $E9 $0227W&lt;br /&gt;
&lt;br /&gt;
#Arachnut&lt;br /&gt;
%patch $EBD6 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $021DW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0213W  $FF $76 $FC $57 $9A {$0FA80A8ERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB67W  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom&lt;br /&gt;
%patch $EBFF $FF $76 $FC $57 $9A {$0FA80445RL}     $83 $C4 $04 $C7 $06 $CB53W&lt;br /&gt;
             $0001W  $E9 $01E9W&lt;br /&gt;
&lt;br /&gt;
#Poison Slugs&lt;br /&gt;
%patch $EC14 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $01DFW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01D5W  $FF $76 $FC $57 $9A {$0FA802FERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB51W  $0001W  $E9 $01C0W&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical scroll bars&lt;br /&gt;
%patch $EC3D $B8 $0001W  $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 $C4 $06 #Horizontal bars = 1&lt;br /&gt;
             $E9 $01ADW  $33 $C0 $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 #Vertical bars = 0&lt;br /&gt;
             $C4 $06 $E9 $019BW&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms&lt;br /&gt;
%patch $EC62 $8B $46 $F8 $05 $FFE5W  $50 $FF $76 $FC $57 $9A {$10800CABRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB6FW  $0001W  $E9 $017FW&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $EC7E $FF $76 $FC $57 $9A {$108010FCRL}     $83 $C4 $04 $C7 $06 $CB6FW&lt;br /&gt;
             $0001W  $E9 $016AW&lt;br /&gt;
&lt;br /&gt;
#Miragia&lt;br /&gt;
%patch $EC93 $FF $76 $FC $57 $9A {$0FA80000RL}     $83 $C4 $04 $E9 $015BW&lt;br /&gt;
&lt;br /&gt;
#IF Ammo&lt;br /&gt;
%patch $ECA2 $83 $3E [$7A58W]  [$05] {$7C} $03 $E9 $0151W  $B8 [$000BW]  $50 $FF $76 #Here check Keen&#039;s ammo &amp;lt; 5, ammo is 12th item kind&lt;br /&gt;
             $FC $57 $9A {$0FA801A3RL}     $83 $C4 $06 $8B $1E [$19D2W]  $D1 $E3&lt;br /&gt;
             $C7 $87 $CB3BW  $0001W  $E9 $0132W  $E9 $012FW&lt;br /&gt;
&lt;br /&gt;
#Wetsuit - Note single frame is cached&lt;br /&gt;
%patch $ECCE $FF $76 $FC $57 $9A {$11A20FD1RL}     $83 $C4 $04 $B8 $2A3ARW $8A&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $16 [$01AEW]  $E9 $0112W&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen&lt;br /&gt;
%patch $ECEB $FF $76 $FC $57 $9A $0E8F0CFERL     $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB7BW  $0001W  $BE [$00DBW]  $EB $0F $B8 $2A3ARW $8A #Cache items got - start&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $94 $00 $00 $46 $81 $FE [$00E2W]  $76 #Cache items got - end&lt;br /&gt;
             $EB $B8 $2A3ARW $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 #Cache scoreboard&lt;br /&gt;
             $00D0W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - hard&lt;br /&gt;
%patch $ED2D $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00C6W  $8B $46 $F8 $05 $FFADW&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7&lt;br /&gt;
             $06 $CB79W  $0001W  $E9 $00AAW&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - medium&lt;br /&gt;
%patch $ED53 $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00A0W  $8B $46 $F8 $05 $FFB1W&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7 $06 $CB79W&lt;br /&gt;
                 $0001W  $E9 $0084W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - easy&lt;br /&gt;
%patch $ED79 $8B $46 $F8 $05 $FFCBW  $50 $FF $76 $FC $57 $9A {$11A20E3BRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB79W  $0001W  $EB $69&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $ED94 $8B $46 $F8 $05 [$FFC7W]  $50 $FF $76 $FC $57 $9A {$0FA801A3RL}&lt;br /&gt;
             $83 $C4 $06 $8B $5E $F8 $D1 $E3 $8B $9F [$194AW]  $D1 $E3 $C7 $87&lt;br /&gt;
             $CB3BW  $0001W  $EB $43&lt;br /&gt;
&lt;br /&gt;
#Mine&lt;br /&gt;
%patch $EDBA $8B $46 $F8 $05 [$FFBBW]  $50 $FF $76 $FC $57 $9A {$11A20CECRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB7FW  $0001W  $EB $28&lt;br /&gt;
&lt;br /&gt;
#Mooning Keen&lt;br /&gt;
%patch $EDD5 $C7 $06 $CB81W  $0001W  $EB $20&lt;br /&gt;
&lt;br /&gt;
#Blue bird&lt;br /&gt;
%patch $EDDD $83 $3E [$7A6CW]  {$03 $7C} $19 $83 $3E [$7A6CW]  {$02 $7C} $12 $FF $76&lt;br /&gt;
             $FC $57 $9A {$0FA805B9RL}     $83 $C4 $04 $C7 $06 $CB5FW  $0001W&lt;br /&gt;
&lt;br /&gt;
#B Block-type sprites&lt;br /&gt;
%patch $EDFD $47 $3B $3E $E4 $A7 $73 $03 $E9 $FB24W  $FF $46 $FC $8B $46 $FC&lt;br /&gt;
             $3B $06 $E2 $A7 $73 $03 $E9 $FB10W  $A1 $D6 $A7 $89 $46 $FE $EB&lt;br /&gt;
             $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. [[Patch:Miragia|Miragia&#039;s]] spawn code is the shortest, but will not allow a sprite to do anything except replace tiles as Miragia does. There are a number of values set.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]],  Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $B80E $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$098CW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Map Keen spawning code&lt;br /&gt;
%patch $DDFA $55 $8B $EC $83 $3E {$7A70W}  [$07] {$74} $03 $E9 $00A9W  $8B $1E $D6&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $C7 $07 [$0002W]  $A1 {$7A1AW}  $89 $47 {$0A}&lt;br /&gt;
             $A1 {$7A1CW}  $89 $47 {$0C} $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $81 $3E {$7A1AW}  [$1400W]&lt;br /&gt;
             {$73} $31 $C7 $47 $3E [$0118W]  $B8 [$1E00W]  $2B $47 $0A $BB [$0118W]&lt;br /&gt;
             $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47 $16 $B8 [$3700W]  $2B&lt;br /&gt;
             $47 $0C $BB [$0118W]  $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47&lt;br /&gt;
             $18 $EB $31 $8B $1E $A7D6W  $C7 $47 $3E [$008CW]  $B8 [$1000W]  $2B&lt;br /&gt;
             $47 $0A $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $A7D6W  $89 $47 $16&lt;br /&gt;
             $B8 [$2F00W]  $2B $47 $0C $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $D6&lt;br /&gt;
             $A7 $89 $47 $18 $B8 [$1492W]  $50 $FF $36 $D6 $A7 $9A $09DC118CRL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
                                     $8B $1E $A7D6W  $C7 $07 [$0002W]  $83 $3E&lt;br /&gt;
             {$7A1AW}  [$00] {$75} $14 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $EB $10 $8B $1E {$A7D6W}  $A1 {$7A1AW}&lt;br /&gt;
             $89 $47 {$0A} $A1 {$7A1CW}  $89 $47 {$0C} $8B $1E $A7D6W  $C7 $47 $02&lt;br /&gt;
             [$0002W]  $C7 $47 $20 [$0001W]  $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]&lt;br /&gt;
                 $C7 $47 $3E [$0006W]  $C7 $47 $40 [$0003W]  $C7 $47 $42 [$0000W]&lt;br /&gt;
             $C7 $47 $1E [$0100W]  $B8 [$14ECW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting flag spawn code&lt;br /&gt;
%patch $E2ED $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0003W]  $C7 $07 [$0022W]&lt;br /&gt;
             $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $05 [$0060W]  $89&lt;br /&gt;
             $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE20W]  $89 $47 $0C $9A $1D02002ARL&lt;br /&gt;
                     $BB [$0010W]  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $1A $B8&lt;br /&gt;
             [$15EEW]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen spawning code&lt;br /&gt;
%patch $F5EE $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $C7 $47 $06 [$0002W]  $B8 [$19ECW]  $50 $53 $9A $10B1118CRL   &lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Miragia spawning code&lt;br /&gt;
%patch $FA80  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0002W]  $8B $46 $06 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $89 $47 $0C $C7 $47 $1C [$1DFCW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $FC23 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0004W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1FA0W]  $8B $1E $D8 $A7 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1EECW]  $50 $53 $9A&lt;br /&gt;
         $09DC118CRL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Council Member spawn&lt;br /&gt;
%patch $FCE9  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$1FB8W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slug spawning code&lt;br /&gt;
%patch $FD7E  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0005W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2012W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom spawning code&lt;br /&gt;
%patch $FEC5  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$20E4W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Egg spawn code&lt;br /&gt;
%patch $FFDD $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
             [$FF8FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
             [$2120W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blue Bird spawning code&lt;br /&gt;
%patch $10039 $55 $8B $EC $B8 $01 $00 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $07 [$001BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $8B $47 $0A $8B $1E $A7D6W  $3B $47 $0A&lt;br /&gt;
              $73 $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W ] $EB $09 $8B $1E $D8&lt;br /&gt;
              $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$21B6W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Skypest spawning code&lt;br /&gt;
%patch $105E7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $10 [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $10 [$FFFFW]  $B8 [$2486W]&lt;br /&gt;
                  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Cloud spawning code&lt;br /&gt;
%patch $109C2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000DW]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$28A0W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Berkeloid spawning code&lt;br /&gt;
%patch $10B9B $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1D02002ARL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0008W]&lt;br /&gt;
                  $B8 [$2AF8W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Inchworm spawning code&lt;br /&gt;
%patch $10EB2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2E9AW]  $50 $9A $09DC118CRL&lt;br /&gt;
                          $83 $C4 $04 $9A $1D02002ARL     $BB [$0020W]  $99 $F7&lt;br /&gt;
              $FB $8B $1E $D8 $A7 $89 $47 $1A $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Foot spawning code&lt;br /&gt;
%patch $10F2C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $05 [$FFFDW]&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $B8 [$2EF4W]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
              $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bounder Spawning code&lt;br /&gt;
%patch $110EA $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000FW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $C7 $47 $10 [$0001W]  $C7 $47 $0E [$0000W]  $B8&lt;br /&gt;
              [$2F12W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Lick spawn code&lt;br /&gt;
%patch $112C8 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0012W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $9A $1D02002ARL     $BB $0040W&lt;br /&gt;
                  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $08 $B8 [$3002W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms Spawning code&lt;br /&gt;
%patch $114AB $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D3CW] #4 kinds of platform, direction list at $1153C&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB    #Up platform&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB    #Right platform&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB    #Down platform&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8    #Left platform&lt;br /&gt;
              [$316AW]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform Spawning code&lt;br /&gt;
%patch $118FC $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$3188W]  $50 $53 $9A $09DC118CRL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Smirky Spawning code&lt;br /&gt;
%patch $11A2E $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$31E2W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mimrock Spawning code&lt;br /&gt;
%patch $11E67 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF30W]  $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$343AW]&lt;br /&gt;
                  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dopefish spawn code&lt;br /&gt;
%patch $120B0 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $C7 $47 $06 [$0002W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $05 [$FD00W]  $89 $47 $0C $9A $1D02002ARL     $3D&lt;br /&gt;
              [$0080W]  $7D $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]&lt;br /&gt;
                  $B8 [$35C0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Schoolfish spawn code&lt;br /&gt;
%patch $124C7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0002W]&lt;br /&gt;
              $C7 $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10&lt;br /&gt;
              $B8 [$3764W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sprite spawn code&lt;br /&gt;
%patch $1257F $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $B8 [$0001W]  $89 $47 {$0E}&lt;br /&gt;
              $89 $47 {$10} $B8 [$37A0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Underwater Mine spawning code&lt;br /&gt;
%patch $1270C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0020W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D7EW]&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8&lt;br /&gt;
              [$3890W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Mine direction list&lt;br /&gt;
%patch $1279E [$0D2DW]] #Up&lt;br /&gt;
              [$0D3DW] #Right&lt;br /&gt;
              [$0D4DW] #Down&lt;br /&gt;
              [$0D5DW] #Left&lt;br /&gt;
&lt;br /&gt;
#Lindsey spawn code&lt;br /&gt;
%patch $127D5 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8 [$38EAW]&lt;br /&gt;
              $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter spawning code&lt;br /&gt;
%patch $1285B $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]  $8B&lt;br /&gt;
              $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $C7 $47 $06 [$0000W]  $8B $46&lt;br /&gt;
              $08 $D3 $E0 $89 $47 $0C $89 $77 $3E $8B $DE $83 $FB [$03] $77 $50&lt;br /&gt;
              $D1 $E3 $2E $FF $A7 {$0EDEW}  $8B $1E $D8 $A7 $83 {$6F $0C} [$30] $81&lt;br /&gt;
              {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017CW]  $EB $35 $8B $1E $D8 $A7 $81&lt;br /&gt;
              {$47 $0A} [$0080W]  $83 {$47 $0C} [$50] $C7 {$47 $1E} [$0180W]  $EB $21 $8B&lt;br /&gt;
              $1E $D8 $A7 $81 {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017EW]  $EB $11 $8B&lt;br /&gt;
              $1E $D8 $A7 $83 {$47 $0C} [$70] $83 {$6F $0A} [$30] $C7 {$47 $1E} [$0182W]&lt;br /&gt;
              $B8 [$3962W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter position list&lt;br /&gt;
%patch $128FE $0E82W #Up (At $128A2)&lt;br /&gt;
%patch $12900 $0E96W #Right (At $128B6)&lt;br /&gt;
%patch $12902 $0EAAW #Down (At $128CA)&lt;br /&gt;
%patch $12904 $0EBAW #Left (At $128DA)&lt;br /&gt;
&lt;br /&gt;
#Wetsuit spawn code&lt;br /&gt;
%patch $129F1 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001EW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $B8 [$3A34W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Scrollbar &#039;spawning&#039; code&lt;br /&gt;
%patch $17048 $55 $8B $EC $83 $7E $0A $00 $74 $29 $8B $1E $AC $CC $D1 $E3 $8B&lt;br /&gt;
              $46 $08 $89 $87 $9E $CC $A1 $AC $CC $FF $06 $AC $CC $3D $06 [$00]&lt;br /&gt;
              {$75} $35 $B8 [$4244W]  $50 $9A $037D022FRL     $83 $C4 $02 $5D $CB&lt;br /&gt;
              $5D $CB&lt;br /&gt;
                      $8B $1E $AA $CC $D1 $E3 $8B $46 $06 $89 $87 $92 $CC $A1&lt;br /&gt;
              $AA $CC $FF $06 $AA $CC $3D $06 [$00] {$75} $0C $B8 [$4279W]  $50 $9A&lt;br /&gt;
              $037D022FRL     $83 $C4 $02 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow more sprite kinds ==&lt;br /&gt;
&lt;br /&gt;
This patch expands the maximum number of different sprite initiations possible in Keen 4; the default patch above allows a maximum of $7F or 127 initiations, whereas this patch allows a maximum of $7FFFW, or thousands, making the number practically unlimited.&lt;br /&gt;
&lt;br /&gt;
This patch will only work as long as right-facing Keen&#039;s initiation code (Above)is not tampered with. The patch here uses the default number of sprites, 87.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Allow more than 127 sprite types in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Allow more than 127 sprite types in Keen 4&lt;br /&gt;
%patch $E945 $81 $FB [$0057W]  $76 $02 $EB $30&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E999 for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked as the last blue value. (The first two are in-level Keen&#039;s left\right facing directions.) Checking the original initiation code will give a more detailed breakdown of what is presented here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $EE87 $0069W #Left Facing Keen (At $E959)&lt;br /&gt;
%patch $EE89 $0081W #Map Keen (At $E971)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen spawns&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}&lt;br /&gt;
                     $83 $C4 $06 $C7 $06 $CB3DW  $0001W  $EB $12&lt;br /&gt;
%patch $E971 $FF $76 $FC $57 $9A {$0D8F050ARL}     $83 $C4 $04 $C7 $06 $CB4FW&lt;br /&gt;
             $0001W  $9A $0D8F0003RL     $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
             $26 $08 $16 [$00FDW]  $E9 $0464W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inchowrm-Foot method ===&lt;br /&gt;
&lt;br /&gt;
This patch collapses the [[Patch:Inchworm|Inchworm]] and [[Patch:Foot|Foot]] initiation codes and stops both caching the Treasure Eater Smoke frames. What this means is that both will take up less memory but the Inchworms cannot transform into the Foot &#039;&#039;and&#039;&#039; emit smoke. As a bonus space is created for an additional  initiation code for a totally new sprite.&lt;br /&gt;
&lt;br /&gt;
The space freed is 61 bytes ($EAAE-$EAEB). This is enough for a 3 difficulty sprite or several single difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change Inchworm pointer to new code&lt;br /&gt;
%patch $EE99 $01B3W #Inchworm (At $EAA3)&lt;br /&gt;
&lt;br /&gt;
#Foot doesn&#039;t cache smoke, Inchworm doesn&#039;t either&lt;br /&gt;
%patch $EAA0 $E9 $035AW  $FF $76 $FC $57 {$9A $108006B2RL}     $EB $E9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 5 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 5]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($ED50 + $0776 = $F4C6)&lt;br /&gt;
%patch $EE94 $0776W&lt;br /&gt;
&lt;br /&gt;
#Length of list (124 items)&lt;br /&gt;
%patch $EE89 $7C&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $ED50)&lt;br /&gt;
%patch $F4C6 [$0146W] #Keen right (At $EE96)&lt;br /&gt;
%patch $F4C8 [$0170W] #Keen left (At $EEC0)&lt;br /&gt;
%patch $F4CA [$019AW] #Map Keen (At $EEEA)&lt;br /&gt;
%patch $F4CC [$01F5W] #Easy Sparky (At $EF45)&lt;br /&gt;
%patch $F4CE [$01EBW] #Normal Sparky (At $EF3B)&lt;br /&gt;
%patch $F4D0 [$01E1W] #Hard Sparky (At $EF31)&lt;br /&gt;
%patch $F4D2 [$021CW] #Easy Mine (At $EF6C)&lt;br /&gt;
%patch $F4D4 [$0212W] #Normal Mine (At $EF62)&lt;br /&gt;
%patch $F4D6 [$0208W] #Hard Mine (At $EF58)&lt;br /&gt;
%patch $F4D8 [$0243W] #Easy up Slicestar (At $EF93)&lt;br /&gt;
%patch $F4DA [$0239W] #Normal up Slicestar (At $EF89)&lt;br /&gt;
%patch $F4DC [$022FW] #Hard up Slicestar (At $EF7F)&lt;br /&gt;
%patch $F4DE [$026DW] #Easy RoboRed (At $EFBD)&lt;br /&gt;
%patch $F4E0 [$0263W] #Normal RoboRed (At $EFB3)&lt;br /&gt;
%patch $F4E2 [$0259W] #Hard RoboRed (At $EFA9)&lt;br /&gt;
%patch $F4E4 [$0294W] #Easy Spirogrip (At $EFE4)&lt;br /&gt;
%patch $F4E6 [$028AW] #Normal Spirogrip (At $EFDA)&lt;br /&gt;
%patch $F4E8 [$0280W] #Hard Spirogrip (At $EFD0)&lt;br /&gt;
%patch $F4EA [$02BBW] #Easy bouncy Slicestar (At $F00B)&lt;br /&gt;
%patch $F4EC [$02B1W] #Normal bouncy Slicestar (At $F001)&lt;br /&gt;
%patch $F4EE [$02A7W] #Hard bouncy Slicestar (At $EFF7)&lt;br /&gt;
%patch $F4F0 [$02E2W] #Easy right Slicestar (At $F032)&lt;br /&gt;
%patch $F4F2 [$02D8W] #Normal right Slicestar (At $F028)&lt;br /&gt;
%patch $F4F4 [$02CEW] #Hard right Slicestar (At $F01E)&lt;br /&gt;
%patch $F4F6 [$02F9W] #Horizontal scrollbar (At $F049)&lt;br /&gt;
%patch $F4F8 [$01CAW] #&#039;T&#039; map Keen (At $EF1A)&lt;br /&gt;
%patch $F4FA [$030AW] #Up Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FC [$030AW] #Right Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FE [$030AW] #Down Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F500 [$030AW] #Left Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F502 [$0657W] #[B] sprite (At $F3A7)&lt;br /&gt;
%patch $F504 [$0327W] #Dropping Platform (At $F077)&lt;br /&gt;
%patch $F506 [$036AW] #Easy still Platform (At $F0BA)&lt;br /&gt;
%patch $F508 [$034DW] #Normal Still Platform (At $F09D)&lt;br /&gt;
%patch $F50A [$033AW] #Hard still Platform (At $F08A)&lt;br /&gt;
%patch $F50C [$0387W] #Up Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F50E [$0387W] #Right Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F510 [$0387W] #Down Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F512 [$0387W] #Left Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F514 [$03A4W] #Sneaky Platform (At $F0F4)&lt;br /&gt;
%patch $F516 [$03B7W] #QED\Fuse counter (At $F107)&lt;br /&gt;
%patch $F518 [$03F1W] #Easy Little Ampton  (At $F141)&lt;br /&gt;
%patch $F51A [$03E7W] #Normal Little Ampton  (At $F137)&lt;br /&gt;
%patch $F51C [$03DDW] #Hard Little Ampton  (At $F12D)&lt;br /&gt;
%patch $F51E [$0418W] #Easy laser up (At $F168)&lt;br /&gt;
%patch $F520 [$0442W] #Easy laser right (At $F192)&lt;br /&gt;
%patch $F522 [$046DW] #Easy laser left (At $F1BD)&lt;br /&gt;
%patch $F524 [$0498W] #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 [$040EW] #Normal laser up (At $F15E)&lt;br /&gt;
%patch $F528 [$0438W] #Normal laser right (At $F188)&lt;br /&gt;
%patch $F52A [$0463W] #Normal laser down (At $F1B3)&lt;br /&gt;
%patch $F52C [$048EW] #Normal laser left (At $F1DE)&lt;br /&gt;
%patch $F52E [$0404W] #Hard laser up (At $F154)&lt;br /&gt;
%patch $F530 [$042EW] #Hard laser right (At $F17E)&lt;br /&gt;
%patch $F532 [$0459W] #Hard laser down (At $F1A9)&lt;br /&gt;
%patch $F534 [$0484W] #Hard laser left (At $F1D4)&lt;br /&gt;
%patch $F536 [$04BEW] #Red gem (At $F20E)&lt;br /&gt;
%patch $F538 [$04BEW] #Yellow gem (At $F20E)&lt;br /&gt;
%patch $F53A [$04BEW] #Green gem (At $F20E)&lt;br /&gt;
%patch $F53C [$04BEW] #Blue gem (At $F20E)&lt;br /&gt;
%patch $F53E [$04BEW] #100 points (At $F20E)&lt;br /&gt;
%patch $F540 [$04BEW] #200 points (At $F20E)&lt;br /&gt;
%patch $F542 [$04BEW] #500 points (At $F20E)&lt;br /&gt;
%patch $F544 [$04BEW] #1000 points (At $F20E)&lt;br /&gt;
%patch $F546 [$04BEW] #2000 points (At $F20E)&lt;br /&gt;
%patch $F548 [$04BEW] #5000 points (At $F20E)&lt;br /&gt;
%patch $F54A [$04BEW] #1UP (At $F20E)&lt;br /&gt;
%patch $F54C [$04BEW] #Raygun (At $F20E)&lt;br /&gt;
%patch $F54E [$04AFW] #Low ammo raygun (At $F1FF)&lt;br /&gt;
%patch $F550 [$04E3W] #V card (At $F233)&lt;br /&gt;
%patch $F552 [$051CW] #Easy Volte-face (At $F26C)&lt;br /&gt;
%patch $F554 [$0512W] #Normal Volte-face (At $F262)&lt;br /&gt;
%patch $F556 [$0508W] #Hard Volte-face (At $F258)&lt;br /&gt;
%patch $F558 [$0543W] #Easy Shelley (At $F293)&lt;br /&gt;
%patch $F55A [$0539W] #Normal Shelley (At $F289)&lt;br /&gt;
%patch $F55C [$052FW] #Hard Shelley (At $F27F)&lt;br /&gt;
%patch $F55E [$056AW] #Easy Spindred (At $F2BA)&lt;br /&gt;
%patch $F560 [$0560W] #Normal Spindred (At $F2B0)&lt;br /&gt;
%patch $F562 [$0556W] #Hard Spindred (At $F2A6)&lt;br /&gt;
%patch $F564 [$057DW] #Up Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F566 [$057DW] #Right Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F568 [$057DW] #Down Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56A [$057DW] #Left Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56C [$059BW] #Up Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F56E [$059BW] #Right Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F570 [$059BW] #Down Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F572 [$059BW] #Left Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F574 [$05CDW] #Easy Shikadi Master (At $F31D)&lt;br /&gt;
%patch $F576 [$05C3W] #Normal Shikadi Master (At $F313)&lt;br /&gt;
%patch $F578 [$05B9W] #Hard Shikadi Master (At $F309)&lt;br /&gt;
%patch $F57A [$0657W] #Up Platform guide (At $F3A7)&lt;br /&gt;
%patch $F57C [$0657W] #Right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F57E [$0657W] #Down Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F580 [$0657W] #Left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F582 [$0657W] #Up-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F584 [$0657W] #Down-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F586 [$0657W] #Down-left  Platform guide (At $F3A7)&lt;br /&gt;
%patch $F588 [$0657W] #Up-left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F58A [$05EDW] #Easy Shikadi (At $F33D)&lt;br /&gt;
%patch $F58C [$05E6W] #Normal Shikadi (At $F336)&lt;br /&gt;
%patch $F58E [$05DFW] #Hard Shikadi (At $F32F)&lt;br /&gt;
%patch $F590 [$060DW] #Easy Shockshund (At $F35D)&lt;br /&gt;
%patch $F592 [$0606W] #Normal Shockshund (At $F356)&lt;br /&gt;
%patch $F594 [$05FFW] #Hard Shockshund (At $F34F)&lt;br /&gt;
%patch $F596 [$062DW] #Easy Sphereful (At $F37D)&lt;br /&gt;
%patch $F598 [$0626W] #Normal Sphereful (At $F376)&lt;br /&gt;
%patch $F59A [$061FW] #Hard Sphereful (At $F36F)&lt;br /&gt;
%patch $F59C [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F59E [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AC [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AE [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BC [$063FW] #Korath (At $F38F)&lt;br /&gt;
%patch $F5BE [$0651W] #Teleporter (At $F3A1)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to, but better structured than Keen 4. The first things to notice the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $6F6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $C2xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0AAF0000RL and $0CCB0007RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right&lt;br /&gt;
%patch $EE96 $B8 [$0001W]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04E7W&lt;br /&gt;
&lt;br /&gt;
#Keen left&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04BDW&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $EEEA $9A {$0CCB0007RL}     $C7 $06 $C27FW  $0001W  $B8 $2B7BRW $8A $16&lt;br /&gt;
             $EC $6F $8E $C0 $26 $08 $16 [$00EBW]  $83 $3E [$6F70W]  {$0D $75} $03&lt;br /&gt;
             $E9 $049AW  $57 $56 $9A {$0CCB050ERL}     $83 $C4 $04 $E9 $048DW&lt;br /&gt;
&lt;br /&gt;
#T map Keen&lt;br /&gt;
%patch $EF1A $83 $3E [$6F70W]  {$0D $74} $03 $E9 $0483W  $57 $56 $9A {$0CCB057FRL}&lt;br /&gt;
                 $83 $C4 $04 $E9 $0476W &lt;br /&gt;
&lt;br /&gt;
#Sparky&lt;br /&gt;
%patch $EF31 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $046CW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0462W  $57 $56 $9A {$11020004RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C289W  $0001W  $E9 $044FW&lt;br /&gt;
&lt;br /&gt;
#Shikadi mine&lt;br /&gt;
%patch $EF58 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0445W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $043BW  $57 $56 $9A {$11C40001RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28BW  $0001W  $E9 $0428W&lt;br /&gt;
&lt;br /&gt;
#Up Slicestar&lt;br /&gt;
%patch $EF7F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $041EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0414W  $33 $C0 $50 $57 $56 $9A {$1102070DRL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C28DW  $0001W  $E9 $03FEW&lt;br /&gt;
&lt;br /&gt;
#RoboRed&lt;br /&gt;
%patch $EFA9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03EAW  $57 $56 $9A {$11C4095CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28FW  $0001W  $E9 $03D7W  &lt;br /&gt;
&lt;br /&gt;
#Spirogrip&lt;br /&gt;
%patch $EFD0 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03CDW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03C3W  $57 $56 $9A {$11C40B61RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C291W  $0001W  $E9 $03B0W&lt;br /&gt;
&lt;br /&gt;
#Bouncy Slicestar&lt;br /&gt;
%patch $EFF7 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03A6W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $039CW  $57 $56 $9A {$110207ACRL} $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28DW  $0001W  $E9 $0389W&lt;br /&gt;
&lt;br /&gt;
#Right Slicestar&lt;br /&gt;
%patch $F01E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $037FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0375W  $B8 [$0001W]  $50 $57 $56 $9A {$1102070DRL}     $83&lt;br /&gt;
             $C4 $06 $C7 $06 $C28DW  $0001W  $E9 $035EW&lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar&lt;br /&gt;
%patch $F049 $B8 [$0001W]  $50 $57 $56 $9A {$174E0B05RL}     $83 $C4 $06 $E9 $034DW&lt;br /&gt;
&lt;br /&gt;
#Red Horizontal-Vertical Platforms&lt;br /&gt;
%patch $F05A $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                 $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $0330W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $F077 $57 $56 $9A {$0F920BC8RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $031DW&lt;br /&gt;
&lt;br /&gt;
#Still Platform -hard&lt;br /&gt;
%patch $F08A $57 $56 $9A {$0F920CECRL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $030AW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - normal&lt;br /&gt;
%patch $F09D $83 $3E [$6F6CW]  {$02 $7E} $03 $E9 $0300W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02EDW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - easy&lt;br /&gt;
%patch $F0BA $83 $3E [$6F6CW]  {$01 $7E} $03 $E9 $02E3W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02D0W&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $F0D7 $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform&lt;br /&gt;
%patch $F0F4 $57 $56 $9A {$0F9214D1RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W&lt;br /&gt;
             $E9 $02A0W&lt;br /&gt;
&lt;br /&gt;
#QED\Fuse&lt;br /&gt;
%patch $F107 $83 $3E [$6F68W]  {$0C $75} $12 $C7 $06 $6F5EW  $0004W  $57 $56 $9A&lt;br /&gt;
             {$11C41D56RL}     $83 $C4 $04 $EB $04 $FF $06 $5E $6F $C7 $06 $C2A5W&lt;br /&gt;
                 $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Little Ampton&lt;br /&gt;
%patch $F12D $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $57 $56 $9A {$11020240RL}     $83 $C4 $04 $C7 $06 $C293W&lt;br /&gt;
                 $0001W  $E9 $0253W&lt;br /&gt;
&lt;br /&gt;
#Laser up&lt;br /&gt;
%patch $F154 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0249W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
                 $03 $E9 $023FW  $33 $C0 $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $0229W&lt;br /&gt;
&lt;br /&gt;
#Laser right&lt;br /&gt;
%patch $F17E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $021FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0215W  $B8 [$0001W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Laser down&lt;br /&gt;
%patch $F1A9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01EAW  $B8 [$0002W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01D3W&lt;br /&gt;
&lt;br /&gt;
#Laser left&lt;br /&gt;
%patch $F1D4 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01C9W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01BFW  $B8 [$0003W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01A8W&lt;br /&gt;
&lt;br /&gt;
#Low ammo raygun (Uses following item initiation)&lt;br /&gt;
%patch $F1FF $83 $3E [$6F56W] {$05 $7C} $03 $E9 $019EW  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $F20E $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17CAW]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $0174W&lt;br /&gt;
&lt;br /&gt;
#V card&lt;br /&gt;
%patch $F233 $8B $46 $FA $05 [$FFC6W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17C8W]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $014FW&lt;br /&gt;
&lt;br /&gt;
#Volte Face&lt;br /&gt;
%patch $F258 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0145W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $013BW  $57 $56 $9A {$0F9211B4RL}     $83 $C4 $04 $C7 $06 $C295W&lt;br /&gt;
                 $0001W  $E9 $0128W&lt;br /&gt;
&lt;br /&gt;
#Shelley&lt;br /&gt;
%patch $F27F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $011EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0114W  $57 $56 $9A $1E $09 $02 $11 $83 $C4 $04 $C7 $06 $C29BW&lt;br /&gt;
             $0001W  $E9 $0101W&lt;br /&gt;
&lt;br /&gt;
#Spindred&lt;br /&gt;
%patch $F2A6 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $00F7W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $00EDW  $57 $56 $9A {$11C40C5DRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C299W  $0001W  $E9 $00DAW&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $F2CD $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFB0W]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $00BCW&lt;br /&gt;
&lt;br /&gt;
#Purple Horizontal-Vertical Platform&lt;br /&gt;
%patch $F2EB $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFACW]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $009EW&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master&lt;br /&gt;
%patch $F309 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0094W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $008AW  $57 $56 $9A {$11C40E47RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C281W  $0001W  $EB $78&lt;br /&gt;
&lt;br /&gt;
#Shikadi&lt;br /&gt;
%patch $F32F $83 $3E [$6F6CW]  {$03 $7C} $71 $83 $3E [$6F6CW]  {$02 $7C} $6A $57 $56&lt;br /&gt;
             $9A {$11C41287RL}     $83 $C4 $04 $C7 $06 $C283W  $0001W  $EB $58&lt;br /&gt;
&lt;br /&gt;
#Shocksund&lt;br /&gt;
%patch $F34F $83 $3E [$6F6CW]  {$03 $7C} $51 $83 $3E [$6F6CW]  {$02 $7C} $4A $57 $56&lt;br /&gt;
             $9A {$11C41617RL}     $83 $C4 $04 $C7 $06 $C285W  $0001W  $EB $38&lt;br /&gt;
&lt;br /&gt;
#Sphereful&lt;br /&gt;
%patch $F36F $83 $3E [$6F6CW]  {$03 $7C} $31 $83 $3E [$6F6CW]  {$02 $7C} $2A $57 $56&lt;br /&gt;
             $9A {$11C419D8RL}     $83 $C4 $04 $C7 $06 $C287W  $0001W  $EB $18&lt;br /&gt;
&lt;br /&gt;
#Korath&lt;br /&gt;
%patch $F38F $57 $56 $9A {$11C41C81RL}     $83 $C4 $04 $C7 $06 $C2A3W  $0001W  $EB $06&lt;br /&gt;
&lt;br /&gt;
#Teleporter&lt;br /&gt;
%patch $F3A1 $C7 $06 $C2A9W  $0001W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $AAF0 $55 $8B $EC $8B $1E $9E3EW  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0888W]  $50 $53 $9A $13B511C4RL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Demo Sign spawn code&lt;br /&gt;
%patch $CCB7 $55 $8B $EC $8B $1E $3C $9E $C7 $07 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $02 [$0002W]  $C7 $47 $06 [$0000W]  $C7 $47 $40 [$FFFFW]  $C7&lt;br /&gt;
             $47 $3E [$FFFFW]  $C7 $47 $42 [$FFFFW]  $C7 $47 $44 [$FFFFW]  $83 $3E&lt;br /&gt;
             {$9B97W}  [$00] {$74} $07 $C7 $47 $1C [$0788W]  $5D $CB&lt;br /&gt;
                                                             $83 $3E {$332CW}&lt;br /&gt;
             [$00] {$75} $12 $B8 [$133EW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
                                 $B8 [$135CW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $B8 $2B7BW  $8A $16 $EC $6F $8E $C0 $26 $08&lt;br /&gt;
             $16 [$006BW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Item spawning code (Includes V card and low ammo)&lt;br /&gt;
%patch $FD9F $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06B91DCDRL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $40 $9E $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A54W]  $8B $1E $40 $9E $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1946W]  $50 $53 $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Red\Purple Platform spawning code&lt;br /&gt;
%patch $FFDC  $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$076EW]&lt;br /&gt;
               $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $83&lt;br /&gt;
              $7E $0C $00 $74 $1B $8B $1E $40 $9E $83 $47 $0A $40 $83 $47 $0C&lt;br /&gt;
              $40 $B8 [$1B7CW]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
              $B8 [$1B5EW]  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Platform direction list&lt;br /&gt;
%patch $1008E $6FDW #Up (At $1001D)&lt;br /&gt;
%patch $10090 $70DW #Right (At $1002D)&lt;br /&gt;
%patch $10092 $71DW #Down (At $1003D)&lt;br /&gt;
%patch $10094 $72DW #Left (At $1004D)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $104E8 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 {$1BB8W}  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting platform spawn code&lt;br /&gt;
%patch $1060C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1C12W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Goplat spawning code&lt;br /&gt;
%patch $1065F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
           $06B91DCDRL     $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $83 $7E $0C $00 $74 $17 $83 $47 $0A&lt;br /&gt;
              $40 $83 $47 $0C $40 $B8 [$1C4EW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $EB $10 $B8 [$1C30W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $40 $9E $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W]  $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Volte-face spawn code&lt;br /&gt;
%patch $10AD4 $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0010W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0002W]  $8B $C7 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $06 [$0000W]  $B8 [$1CCCW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $5E $08 $D1 $E3&lt;br /&gt;
              $8B $87 $87 $BF $D1 $E8 $E0D1W  $8B $16 $53 $9E $8B $DF $D1 $E3&lt;br /&gt;
              $03 $C3 $89 $56 $FE $89 $46 $FC $C4 $5E $FC $26 $83 $7F $FE $5C&lt;br /&gt;
              $75 $05 $BE [$0001W]  $EB $36 $C4 $5E $FC $26 $83 $7F $02 $5E $75&lt;br /&gt;
              $05 $BE [$0003W]  $EB $27 $A1 $4C $9E $D1 $E0 $C4 $5E $FC $2B $D8&lt;br /&gt;
              $26 $83 $3F $5D $75 $05 $BE [$0002W]  $EB $12 $A1 $4C $9E $D1 $E0&lt;br /&gt;
              $C4 $5E $FC $03 $D8 $26 $83 $3F $5B $75 $02 $33 $F6 $8B $C6 $05&lt;br /&gt;
              [$005BW]  $C4 $5E $FC $26 $89 $07 $8B $1E $40 $9E $89 $77 $3E $C7&lt;br /&gt;
              $47 $40 [$0100W]  $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10DF1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DA4W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $10EB7 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$000FW]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$1DFEW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sparky spawn code&lt;br /&gt;
%patch $11024 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $0C $9A $1DFB0036RL     $3D $0080W  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$1F0CW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Little Ampton spawning code&lt;br /&gt;
%patch $11260 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$21DCW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical Slicestar spawning code&lt;br /&gt;
%patch $1172D $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $C7 $47 $44 [$0014W]  $8B $5E $0A $83 $FB [$03] $77 $45 $D1&lt;br /&gt;
              $E3 $2E $FF $A7 [$07A4W]  $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$FFFFW]  $EB $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $EB $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$0001W]  $EB $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $B8 [$23BCW]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slicestar direction list&lt;br /&gt;
%patch $117C4 [$0753W] #Down (At $11773)&lt;br /&gt;
%patch $117C6 [$0763W] #Right (At $11783)&lt;br /&gt;
%patch $117C8 [$0773W] #Left (At $11793)&lt;br /&gt;
%patch $117CA [$0783W] #Up (At $117A3)&lt;br /&gt;
&lt;br /&gt;
#Shelley spawn code&lt;br /&gt;
%patch $1193E $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1DFB0036RL     $3D [$0080W]  {$7D} $0B $8B $1E $40 $9E&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$2416W]  $50 $53 $9A&lt;br /&gt;
          $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mine spawning code&lt;br /&gt;
%patch $11C41 $55 $8B $EC $56 $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $40 $9E $C7 $07 [$000AW]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $C7 $47 $40 [$0100W]  $C7 $47 $42 [$00D0W]&lt;br /&gt;
              $B8 [$2644W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $1E $40&lt;br /&gt;
              $9E $C7 $47 $16 [$0100W]  $33 $F6 $EB $12 $56 $FF $36 $40 $9E $90&lt;br /&gt;
              $0E $E8 $0095W  $83 $C4 $04 $0B $C0 $75 $06 $46 $83 $FE $03 $7E&lt;br /&gt;
              $E9 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Robo Red spawning code&lt;br /&gt;
%patch $1259C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FC00W]  $89 $47 $0C&lt;br /&gt;
              $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $B8 [$2734W]&lt;br /&gt;
                  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Spirogrip spawn code&lt;br /&gt;
%patch $127A1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000DW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8 [$2824W]  $50 $53 $9A&lt;br /&gt;
              $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master Spawn code&lt;br /&gt;
%patch $12A87 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 $80 $FE $89 $47 $0C&lt;br /&gt;
              $B8 [$2AF4W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi spawn code&lt;br /&gt;
%patch $12EC7 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0014W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0004W]  $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $B8 [$2D10W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
              $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shockshund spawn code&lt;br /&gt;
%patch $13257 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0002W]  $B8 [$0001W]  $89 $47 $10 $89 $47 $0E $B8 [$2F0EW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Q.E.D. spawn code&lt;br /&gt;
%patch $13996 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0019W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $89 $77 $2C $89 $7F $2E $8B $47 $2C $40 $89 $47 $30&lt;br /&gt;
              $8B $47 $2E $40 $89 $47 $32 $8B $C6 $B1 $08 $D3 $E0 $05 [$FFF0W]&lt;br /&gt;
              $89 $47 $22 $89 $47 $0A $8B $C7 $D3 $E0 $05 [$FFF0W]  $89 $47 $24&lt;br /&gt;
              $89 $47 $0C $8B $47 $22 $05 $20 $02 $89 $47 $26 $8B $47 $24 $05&lt;br /&gt;
              $20 $02 $89 $47 $28 $B8 [$3186W]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused Platform cache ==&lt;br /&gt;
&lt;br /&gt;
There is one unused [[Patch:Sprite cache|sprite cache]] in Keen 5. It is a single animation in size and  contains a small red platform. This is useful since it is not hard to expand it or use it for a totally unique sprite. It&#039;s call is &amp;lt;tt&amp;gt;$C29F&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Cache&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $31A4C $01BFW #Small red platform cache start&lt;br /&gt;
%patch $31AA0 $01BFW #Cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left and right Keen initiation codes so they use the minimum amount of space. (This is possible because they both require similar code.) It frees space at $EEC5 for a 3-difficulty sprite or several non-difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
The patch is quite basic; in effect the Keen left code only sets Keen&#039;s direction before jumping to the Keen right code, leaving all its space free.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen left code compacted&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $EB $D4&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 5)|Platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F05A-$0FA8 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move initiation pointers (Free $4E at $F05A)&lt;br /&gt;
%patch $F4FA $0359W #Up Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FC $0359W #Right Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FE $0359W #Down Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F500 $0359W #Left Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F504 $036CW #Dropping Platform (At $F0BC)&lt;br /&gt;
%patch $F506 $037EW #Easy still Platform (At $F0CE)&lt;br /&gt;
%patch $F508 $0375W #Normal Still Platform (At $F0C5)&lt;br /&gt;
%patch $F50A $0385W #Hard still Platform (At $F0D5)&lt;br /&gt;
%patch $F50C $037EW #Up Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F50E $038EW #Right Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F510 $038EW #Down Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F512 $038EW #Left Red Goplat (At $F0DE)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F0A9 $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL} $EB $33&lt;br /&gt;
%patch $F0BC $57 $56 $9A {$0F920BC8RL} $EB $36&lt;br /&gt;
%patch $F0C5 $83 $3E {$6F6CW}  [$02] {$7F} $38 $EB $07&lt;br /&gt;
%patch $F0CE $83 $3E {$6F6CW}  [$01] {$7F} $2F $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
             $EB $1D&lt;br /&gt;
%patch $F0DE $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Enemy Shooter initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Enemy shooter (Keen 5)|Enemy Shooter]] initiation codes (They all cache the same graphics and use similar code.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F154-$F1A1 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move pointers (Frees $F154-$F1A1)&lt;br /&gt;
%patch $F51E $0460W #Easy laser up (At $F1B0)&lt;br /&gt;
%patch $F520 $0472W #Easy laser right (At $F1C2)&lt;br /&gt;
%patch $F522 $0485W #Easy laser left (At $F1D5)&lt;br /&gt;
%patch $F524 $0498W #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 $0459W #Normal laser up (At $F1A9)&lt;br /&gt;
%patch $F528 $046BW #Normal laser right (At $F1BB)&lt;br /&gt;
%patch $F52A $047EW #Normal laser down (At $F1CE)&lt;br /&gt;
%patch $F52C $0491W #Normal laser left (At $F1E1)&lt;br /&gt;
%patch $F52E $0452W #Hard laser up (At $F1A2)&lt;br /&gt;
%patch $F530 $0464W #Hard laser right (At $F1B4)&lt;br /&gt;
%patch $F532 $0477W #Hard laser down (At $F1C7)&lt;br /&gt;
%patch $F534 $048AW #Hard laser left (At $F1DA)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F1A2 $83 $3E [$6F6CW]  {$03 $7C} $53 $83 $3E [$6F6CW]  {$02 $7C} $4C&lt;br /&gt;
             [$33 $C0] $EB $37&lt;br /&gt;
%patch $F1B4 $83 $3E [$6F6CW]  {$03 $7C} $41 $83 $3E [$6F6CW]  {$02 $7C} $3A $B8&lt;br /&gt;
             [$0001W]  $EB $24&lt;br /&gt;
%patch $F1C7 $83 $3E [$6F6CW]  {$03 $7C} $2E $83 $3E [$6F6CW]  {$02 $7C} $27 $B8&lt;br /&gt;
             [$0002W]  $EB $11&lt;br /&gt;
%patch $F1DA $83 $3E [$6F6CW]  {$03 $7C} $1B $83 $3E [$6F6CW]  {$02 $7C} $14 $B8 [$0003W]&lt;br /&gt;
                 $50 $57 $56 $9A $0F921597RL     $83 $C4 $06 $C7 $06 $C27DW&lt;br /&gt;
             $0001W  $E9 $01A8W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 6 =&lt;br /&gt;
&lt;br /&gt;
This section is partly incomplete.&lt;br /&gt;
&lt;br /&gt;
[[Keen 6]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E420 + $0532 = $E952)&lt;br /&gt;
%patch $E486 $0532W&lt;br /&gt;
&lt;br /&gt;
#Length of list (105 items)&lt;br /&gt;
%patch $E47B $69&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $E420)&lt;br /&gt;
%patch $E952 [$0068W] #Keen right (At $E488)&lt;br /&gt;
%patch $E954 [$0092W] #Keen left (At $E4B2)&lt;br /&gt;
%patch $E956 [$00BCW] #Map Keen (At $E4DC)&lt;br /&gt;
%patch $E958 [$00F6W] #Easy Bloog (At $E516)&lt;br /&gt;
%patch $E95A [$00ECW] #Medium Bloog (At $E50C)&lt;br /&gt;
%patch $E95C [$00E2W] #Hard Bloog (At $E502)&lt;br /&gt;
%patch $E95E [$0109W] #Red Blooglet (At $E529)&lt;br /&gt;
%patch $E960 [$0109W] #Yellow Blooglet (At $E529)&lt;br /&gt;
%patch $E962 [$0109W] #Blue Blooglet (At $E529)&lt;br /&gt;
%patch $E964 [$0109W] #Green Blooglet (At $E529)&lt;br /&gt;
%patch $E966 [$0109W] #Red keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E968 [$0109W] #Yellow keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96A [$0109W] #Green keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96C [$0109W] #Blue keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96E [$0145W] #Bottom of cliff (At $E565)&lt;br /&gt;
%patch $E970 [$0145W] #Top of cliff (At $E565)&lt;br /&gt;
%patch $E972 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E974 [$016DW] #Easy Fleex (At $E58D)&lt;br /&gt;
%patch $E976 [$0163W] #Medium Fleex (At $E583)&lt;br /&gt;
%patch $E978 [$0159W] #Hard Fleex (At $E579)&lt;br /&gt;
%patch $E97A [$0180W] #Easy UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97C [$0180W] #Medium UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97E [$0180W] #Hard UNUSED (At $E5A0)&lt;br /&gt;
%patch $E980 [$0180W] #Molly (At $E5A0)&lt;br /&gt;
%patch $E982 [$0193W] #Horizontal scrollbar (At $E5B3)&lt;br /&gt;
%patch $E984 [$01A4W] #Vertical scrollbar (At $E5C4)&lt;br /&gt;
%patch $E986 [$01B4W] #Platform up (At $E5D4)&lt;br /&gt;
%patch $E988 [$01B4W] #Platform right (At $E5D4)&lt;br /&gt;
%patch $E98A [$01B4W] #Platform down (At $E5D4)&lt;br /&gt;
%patch $E98C [$01B4W] #Platform left (At $E5D4)&lt;br /&gt;
%patch $E98E [$04A7W] #B sprite (At $E8C7)&lt;br /&gt;
%patch $E990 [$01CEW] #Falling Platform (At $E5EE)&lt;br /&gt;
%patch $E992 [$0211W] #Only-Easy sitting Platform (At $E631)&lt;br /&gt;
%patch $E994 [$01F4W] #Easy\Medium sitting Platform (At $E614)&lt;br /&gt;
%patch $E996 [$01E1W] #Easy\Medium\Hard sitting Platform (At $E601)&lt;br /&gt;
%patch $E998 [$022EW] #Path Platform up (At $E64E)&lt;br /&gt;
%patch $E99A [$022EW] #Path Platform right (At $E64E)&lt;br /&gt;
%patch $E99C [$022EW] #Path Platform down (At $E64E)&lt;br /&gt;
%patch $E99E [$022EW] #Path Platform left (At $E64E)&lt;br /&gt;
%patch $E9A0 [$024EW] #Sneaky Platform (At $E66E)&lt;br /&gt;
%patch $E9A2 [$0275W] #Easy Bobba (At $E695)&lt;br /&gt;
%patch $E9A4 [$026BW] #Medium Bobba (At $E68B)&lt;br /&gt;
%patch $E9A6 [$0261W] #Hard Bobba (At $E681)&lt;br /&gt;
%patch $E9A8 [$0288W] #Satellite dropoff up (At $E6A8)&lt;br /&gt;
%patch $E9AA [$0288W] #Satellite dropoff right (At $E6A8)&lt;br /&gt;
%patch $E9AC [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E9AE [$02B0W] #Easy Nospike (At $E6D0)&lt;br /&gt;
%patch $E9B0 [$02A6W] #Medium Nospike (At $E6C6)&lt;br /&gt;
%patch $E9B2 [$029CW] #Hard Nospike (At $E6BC)&lt;br /&gt;
%patch $E9B4 [$02D7W] #Easy Gik (At $E6F7)&lt;br /&gt;
%patch $E9B6 [$02CDW] #Medium Gik (At $E6ED)&lt;br /&gt;
%patch $E9B8 [$02C3W] #Hard Gik (At $E6E3)&lt;br /&gt;
%patch $E9BA [$02EAW] #Laser up (At $E70A)&lt;br /&gt;
%patch $E9BC [$02EAW] #Laser right (At $E70A)&lt;br /&gt;
%patch $E9BE [$02EAW] #Laser down (At $E70A)&lt;br /&gt;
%patch $E9C0 [$02EAW] #Laser left (At $E70A)&lt;br /&gt;
%patch $E9C2 [$0313W] #Red gem (At $E733)&lt;br /&gt;
%patch $E9C4 [$0313W] #Yellow gem (At $E733)&lt;br /&gt;
%patch $E9C6 [$0313W] #Green gem (At $E733)&lt;br /&gt;
%patch $E9C8 [$0313W] #Blue gem (At $E733)&lt;br /&gt;
%patch $E9CA [$0313W] #100 points (At $E733)&lt;br /&gt;
%patch $E9CC [$0313W] #200 points (At $E733)&lt;br /&gt;
%patch $E9CE [$0313W] #500 points (At $E733)&lt;br /&gt;
%patch $E9D0 [$0313W] #1000 points (At $E733)&lt;br /&gt;
%patch $E9D2 [$0313W] #2000 points (At $E733)&lt;br /&gt;
%patch $E9D4 [$0313W] #5000 points (At $E733)&lt;br /&gt;
%patch $E9D6 [$0313W] #1UP (At $E733)&lt;br /&gt;
%patch $E9D8 [$0313W] #Ammo (At $E733)&lt;br /&gt;
%patch $E9DA [$0304W] #IF ammo (At $E724)&lt;br /&gt;
%patch $E9DC [$034CW] #Easy Orbatrix (At $E76C)&lt;br /&gt;
%patch $E9DE [$0342W] #Medium Orbatrix (At $E762)&lt;br /&gt;
%patch $E9E0 [$0338W] #Hard Orbatrix (At $E758)&lt;br /&gt;
%patch $E9E2 [$0373W] #Easy Bipship (At $E793)&lt;br /&gt;
%patch $E9E4 [$0369W] #Medium Bipship (At $E789)&lt;br /&gt;
%patch $E9E6 [$035FW] #Hard Bipship (At $E77F)&lt;br /&gt;
%patch $E9E8 [$03A0W] #Easy Flect (At $E7C0)&lt;br /&gt;
%patch $E9EA [$0396W] #Medium Flect (At $E7B6)&lt;br /&gt;
%patch $E9EC [$038CW] #Hard Flect (At $E7AC)&lt;br /&gt;
%patch $E9EE [$03C7W] #Easy Blorb (At $E7E7)&lt;br /&gt;
%patch $E9F0 [$03BDW] #Medium Blorb (At $E7DD)&lt;br /&gt;
%patch $E9F2 [$03B3W] #Hard Blorb (At $E7D3)&lt;br /&gt;
%patch $E9F4 [$03EEW] #Easy Ceilick (At $E80E)&lt;br /&gt;
%patch $E9F6 [$03E4W] #Medium Ceilick (At $E804)&lt;br /&gt;
%patch $E9F8 [$03DAW] #Hard Ceilick (At $E7FA)&lt;br /&gt;
%patch $E9FA [$0415W] #Easy Blooguard (At $E835)&lt;br /&gt;
%patch $E9FC [$040BW] #Medium Blooguard (At $E82B)&lt;br /&gt;
%patch $E9FE [$0401W] #Hard Blooguard (At $E821)&lt;br /&gt;
%patch $EA00 [$0428W] #Grabbiter (At $E848)&lt;br /&gt;
%patch $EA02 [$0434W] #Satellite (At $E854)&lt;br /&gt;
%patch $EA04 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $EA06 [$04A7W] #Platform path up (At $E8C7)&lt;br /&gt;
%patch $EA08 [$04A7W] #Platform path right (At $E8C7)&lt;br /&gt;
%patch $EA0A [$04A7W] #Platform path down (At $E8C7)&lt;br /&gt;
%patch $EA0C [$04A7W] #Platform path left (At $E8C7)&lt;br /&gt;
%patch $EA0E [$04A7W] #Platform path up-right (At $E8C7)&lt;br /&gt;
%patch $EA10 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA12 [$04A7W] #Platform path down-left (At $E8C7)&lt;br /&gt;
%patch $EA14 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA16 [$0440W] #Rope and grappling hook (At $E860)&lt;br /&gt;
%patch $EA18 [$0452W] #Sandwich (At $E872)&lt;br /&gt;
%patch $EA1A [$0464W] #Rocket pass (At $E884)&lt;br /&gt;
%patch $EA1C [$0484W] #Easy Babobba (At $E8A4)&lt;br /&gt;
%patch $EA1E [$047DW] #Medium Babobba (At $E89D)&lt;br /&gt;
%patch $EA20 [$0476W] #Hard Babobba (At $E896)&lt;br /&gt;
%patch $EA22 [$0496W] #Rocket on Xax (At $E8B6)&lt;br /&gt;
%patch $EA24 [$0496W] #Rocket on station (At $E8B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $75A8W $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CDxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Nospike&#039;s cache is $37, the Gik&#039;s is $39 (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Nospike calls $10CC0005RL.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right initiation code&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $0415W&lt;br /&gt;
&lt;br /&gt;
#Keen left initiation code&lt;br /&gt;
%patch $E4B2 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $E4DC $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03C5W&lt;br /&gt;
&lt;br /&gt;
#Bloog initiation code&lt;br /&gt;
%patch $E502 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $03BBW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $03B1W  $57 $56 $9A {$0EFC186ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD19W  $0001W  $E9 $039EW&lt;br /&gt;
&lt;br /&gt;
#Blooglet initiation code&lt;br /&gt;
%patch $E529 $8B $46 $FA $05 [$FFF9W]  $50 $57 $56 $9A {$0EFC1B60RL}     $83 $C4&lt;br /&gt;
             $06 $8B $46 $FA $05 [$FFF9W]  $BB [$0004W]  $99 $F7 $FB $D1 $E2 $8B&lt;br /&gt;
             $DA $C7 $87 $CD1BW  $0001W  $83 $7E $FA $0A $7F $03 $E9 $036EW &lt;br /&gt;
             $C7 $06 $CD11W  $0001W  $E9 $0365W  $E9 $0362W&lt;br /&gt;
&lt;br /&gt;
#Cliffs initiation code&lt;br /&gt;
%patch $E565 $8B $46 $FA $05 [$FFF1W]  $50 $57 $56 $9A {$0EFC0A50RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $034EW&lt;br /&gt;
&lt;br /&gt;
#Fleex initiation code&lt;br /&gt;
%patch $E579 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0344W  $83 $3E {$75A8W}  [$03] {$7D}&lt;br /&gt;
             $03 $E9 $033AW  $57 $56 $9A {$11CF000FRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3DW  $0001W  $E9 $0327W  &lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar initiation code&lt;br /&gt;
%patch $E5B3 $B8 $0001W  $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $0303W&lt;br /&gt;
&lt;br /&gt;
#Vertical scrollbar initiation code&lt;br /&gt;
%patch $E5C4 $33 $C0 $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $02F3W&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform initiation code&lt;br /&gt;
%patch $E5D4 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $E9 $02D9W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform initiation code&lt;br /&gt;
%patch $E5EE $57 $56 $9A {$0EFC13C2RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $02C6W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium\Hard Platform initiation code&lt;br /&gt;
%patch $E601 $57 $56 $9A {$0EFC14E6RL}     $83 $C4 $04 $C7 $06 CD23W  $0001W &lt;br /&gt;
             $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium Platform initiation code&lt;br /&gt;
%patch $E614 $83 $3E {$75A8W}  [$02] {$7E} $03 $E9 $02A9W  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0296W &lt;br /&gt;
&lt;br /&gt;
#Only-Easy Platform initiation code&lt;br /&gt;
%patch $E631 $83 $3E {$75A8W}  [$01] {$7E} $03 $E9 $028CW  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0279W&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform initiation code&lt;br /&gt;
%patch $E64E $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $C7 $06 $CD33W  $0001W  $E9 $0259W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform initiation code&lt;br /&gt;
%patch $E66E $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Bobba initiation code&lt;br /&gt;
%patch $E681 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $023CW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0232W  $57 $56 $9A {$11CF015CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD29W  $0001W  $E9 $021FW&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point initiation code&lt;br /&gt;
%patch $E6A8 $8B $46 $FA $05 [$FFD4W]  $50 $57 $56 $9A {$0EFC0CF3RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $020BW&lt;br /&gt;
&lt;br /&gt;
#Nospike initiation code&lt;br /&gt;
%patch $E6BC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0201W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $01F7W  $57 $56 $9A {$10CC0005RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD37W  $0001W  $E9 $01E4W&lt;br /&gt;
&lt;br /&gt;
#Gik initiation code&lt;br /&gt;
%patch $E6E3 $83 $3E $A8 $75 $03 $7D $03 $E9 $01DAW  $83 $3E $A8 $75 $02 $7D&lt;br /&gt;
             $03 $E9 $01D0W  $57 $56 $9A {$10CC045ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD25W  $0001W  $E9 $01BDW&lt;br /&gt;
&lt;br /&gt;
#Enemy gun initiation code&lt;br /&gt;
%patch $E70A $8B $46 $FA $05 [$FFCBW]  $50 $57 $56 $9A $10CC06B1RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD43W  $0001W  $E9 $01A3W&lt;br /&gt;
&lt;br /&gt;
#&#039;IF&#039; Ammo initiation code (Uses following item initiation)&lt;br /&gt;
%patch $E724 $83 $3E {$7590W}  [$05] {$7C} $03 $E9 $0199W  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Item initiation code&lt;br /&gt;
%patch $E733 $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0EFC0420RL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17D8W]  $D1 $E3 $C7 $87 $CCFFW&lt;br /&gt;
             $0001W  $E9 $016FW &lt;br /&gt;
&lt;br /&gt;
#Orbatrix initiation code&lt;br /&gt;
%patch $E758 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0165W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $015BW  $57 $56 $9A {$10CC081ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD39W  $0001W  $E9 $0148W&lt;br /&gt;
&lt;br /&gt;
#Bipship initiation code&lt;br /&gt;
%patch $E77F $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $013EW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0134W  $57 $56 $9A {$10CC0B03RL}     $83 $C4 $04 $B8 $0001W&lt;br /&gt;
                 $A3 $CD33W  $A3 $CD35W  $A3 $CD31W  $E9 $011BW&lt;br /&gt;
&lt;br /&gt;
#Flect initiation code&lt;br /&gt;
%patch $E7AC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0111W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0107W  $57 $56 $9A {$10CC0E24RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2FW  $0001W  $E9 $00F4W&lt;br /&gt;
&lt;br /&gt;
#Blorb initiation code&lt;br /&gt;
%patch $E7D3 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00EAW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00E0W  $57 $56 $9A {$11CF06ACRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD27W  $0001W  $E9 $00CDW&lt;br /&gt;
&lt;br /&gt;
#Ceilick initiation code&lt;br /&gt;
%patch $E7FA $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00C3W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00B9W  $57 $56 $9A {$11CF07BCRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3BW  $0001W  $E9 $00A6W&lt;br /&gt;
&lt;br /&gt;
#Blooguard initiation code&lt;br /&gt;
%patch $E821 $83 $3E $75A8W  [$03] {$7D} $03 $E9 $009CW  $83 $3E $75A8W  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0092W  $57 $56 $9A {$0EFC192ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2DW  $0001W  $E9 $007FW &lt;br /&gt;
&lt;br /&gt;
#Grabbiter initiation code&lt;br /&gt;
%patch $E848 $57 $56 $9A {$0EFC0515RL}     $83 $C4 $04 $EB $73&lt;br /&gt;
&lt;br /&gt;
#Satellite initiation code&lt;br /&gt;
%patch $E854 $57 $56 $9A {$0EFC0D73RL}     $83 $C4 $04 $EB $67&lt;br /&gt;
&lt;br /&gt;
#Rope initiation code&lt;br /&gt;
%patch $E860 $57 $56 $9A {$0EFC0FD1RL}     $83 $C4 $04 $C7 $06 $CD3FW  $0001W&lt;br /&gt;
             $EB $55&lt;br /&gt;
&lt;br /&gt;
#Sandwich initiation code&lt;br /&gt;
%patch $E872 $57 $56 $9A {$0EFC0F90RL}     $83 $C4 $04 $C7 $06 $CD41W  $0001W&lt;br /&gt;
             $EB $43&lt;br /&gt;
&lt;br /&gt;
#Rocket pass initiation code&lt;br /&gt;
%patch $E884 $57 $56 $9A {$0EFC1012RL}     $83 $C4 $04 $C7 $06 $CD45W  $0001W&lt;br /&gt;
             $EB $31&lt;br /&gt;
&lt;br /&gt;
#Babobba initiation code&lt;br /&gt;
%patch $E896 $83 $3E $75A8W  [$03] {$7C} $2A $83 $3E $75A8W  [$02] {$7C} $23 $57 $56&lt;br /&gt;
             $9A {$11CF0404RL}     $83 $C4 $04 $C7 $06 $CD2BW  $0001W  $EB $11&lt;br /&gt;
&lt;br /&gt;
#Rocket initiation code&lt;br /&gt;
%patch $E8B6 $8B $46 $FA $05 [$FF98W]  $50 $57 $56 $9A {$0EFC06C3RL}     $83 $C4&lt;br /&gt;
             $06&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in Keen 6. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face; this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1CF30034RL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Item spawn code&lt;br /&gt;
%patch $F3E0 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A78W]  $8B $1E $66 $A9 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$196AW]  $50 $53 $9A &lt;br /&gt;
     $08F41219RL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Grabbiter spawn code&lt;br /&gt;
%patch $F4D5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                 $C7 $07 [$001EW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $83 $3E {$7594W}  [$02] {$75} $0F $B8 [$1ACCW]&lt;br /&gt;
                 $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
                                                                 $B8 [$1A90W]&lt;br /&gt;
             $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point spawn code&lt;br /&gt;
%patch $FCB3 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
         $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 [$0002W]  $C7&lt;br /&gt;
             $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$0022W]  $8B $C6 $89&lt;br /&gt;
             $47 $30 $89 $47 $2C $8B $C7 $89 $47 $32 $89 $47 $2E $8B $46 $0A&lt;br /&gt;
             $35 [$0001W]  $40 $89 $47 $3E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $22&lt;br /&gt;
             $89 $47 $0A $8B $47 $22 $05 [$0100W]  $89 $47 $26 $8B $C7 $D3 $E0&lt;br /&gt;
             $89 $47 $24 $89 $47 $0C $8B $47 $24 $05 [$0100W]  $89 $47 $28 $B8&lt;br /&gt;
             [$1C52W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite spawning code&lt;br /&gt;
%patch $FD33 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0&lt;br /&gt;
             $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $06&lt;br /&gt;
             [$0000W]  $C7 $47 $20 [$0002W]  $C7 $47 $02 [$0002W]  $C7 $07 [$0021W]&lt;br /&gt;
             $8B $C6 $B1 $08 $D3 $E0 $89 $47 $0A $8B $C7 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $B8 [$1C8EW]  $50 $53 $9A&lt;br /&gt;
             $08F41219RL     $83 $C4 $04 $C7 $46 $FE [$0003W]  $8B $46 $FE $05&lt;br /&gt;
             [$005BW]  $8B $DF $D1 $E3 $8B $9F $8B $CA $D1 $EB $D1 $E3 $8E $06&lt;br /&gt;
             $79 $A9 $8B $D6 $D1 $E2 $03 $DA $26 $89 $07 $8B $1E $66 $A9 $8B&lt;br /&gt;
             $46 $FE $89 $47 $3E $C7 $47 $40 [$0100W]  $C7 $47 $44 [$0002W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sandwich spawning code&lt;br /&gt;
%patch $FF50 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001BW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D06W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Rope spawning code&lt;br /&gt;
%patch $FF91 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001CW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D24W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Passcard spawning code&lt;br /&gt;
%patch $FFD2 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001DW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D42W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Molly spawning code&lt;br /&gt;
%patch $1006B $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1D60W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform spawn code&lt;br /&gt;
%patch $100D6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] {$77} $45 $D1 $E3 $2E $FF $A7     #3 + 1 Platform types&lt;br /&gt;
          {$11A8W}  $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB #List location, up code&lt;br /&gt;
              $2E $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB #Right code&lt;br /&gt;
              $1E $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB #Down code&lt;br /&gt;
              $0E $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8 #Left code&lt;br /&gt;
              [$1DD8W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Direction list&lt;br /&gt;
%patch $10168 [$1157W] #Up (At $10117)&lt;br /&gt;
%patch $1016A [$1167W] #Right (At $10127)&lt;br /&gt;
%patch $1016C [$1177W] #Down (At $10137)&lt;br /&gt;
%patch $1016E [$1187W] #Left (At $10147)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $10382 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DF6W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting Platforms spawn code&lt;br /&gt;
%patch $104A6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E50W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform spawn code&lt;br /&gt;
%patch $104F9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A &lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $B8 [$1E6EW]  $50 $53 $9A $08F41219RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $8B $CA $D1 $EB $D1 $E3 $8E $06 $79 $A9 $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $66 $A9 $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W] $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10764 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E8CW]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bloog spawn code&lt;br /&gt;
%patch $1082A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0007W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1EE6W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooguard spawning code&lt;br /&gt;
%patch $108EE $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FD80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0003W]&lt;br /&gt;
                  $B8 [$1F7CW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn code&lt;br /&gt;
%patch $10B20 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7&lt;br /&gt;
              $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
              $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]&lt;br /&gt;
                  {$7D} $0B $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]&lt;br /&gt;
              $89 $77 $3E $8B $C6 $BB [$0004W]  $99 $F7 $FB $8B $DA $83 $FB [$03]&lt;br /&gt;
              {$77} $50 $D1 $E3 $2E $FF $A7 [$1C25W]  $B8 [$208AW]  $50 $FF $36 $66&lt;br /&gt;
              $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8 [$2120W]  $50&lt;br /&gt;
              $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8&lt;br /&gt;
              [$21B6W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E&lt;br /&gt;
              $5D $CB $B8 [$224CW]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn list&lt;br /&gt;
%patch $10BE5 [$1BD9W] #Red Blooglet (At $10B99)&lt;br /&gt;
%patch $10BE7 [$1BECW] #Yellow Blooglet (At $10BAC)&lt;br /&gt;
%patch $10BE9 [$1BFFW] #Blue Blooglet (At $10BBF)&lt;br /&gt;
%patch $10BEB [$1C12W] #Green Blooglet (At $10BD2)&lt;br /&gt;
&lt;br /&gt;
#Nospike spawn code&lt;br /&gt;
%patch $10CC5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2460W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $44&lt;br /&gt;
              [$0004W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Gik spawn code&lt;br /&gt;
%patch $1111A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2604W]  $50 $53 $9A&lt;br /&gt;
          $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $11371 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0012W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$26F6W]  $50 $53 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bipship spawn code&lt;br /&gt;
%patch $117C3 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE80W]  $89 $47 $0C&lt;br /&gt;
              $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E&lt;br /&gt;
              $66 $A9 $8B $47 $0E $BA $0014W  $F7 $EA $89 $47 $16 $B8 [$2A5CW]&lt;br /&gt;
              $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blorb spawn code&lt;br /&gt;
%patch $1239C $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66&lt;br /&gt;
              $A9 $C7 $47 $10 [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $10 [$FFFFW]&lt;br /&gt;
                  $8B $1E $66 $A9 $C7 $47 $06 [$0002W]  $B8 [$3164W]  $50 $53 $9A&lt;br /&gt;
              $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ceilick spawning code&lt;br /&gt;
%patch $124AC $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$31BEW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused sprite cache ==&lt;br /&gt;
&lt;br /&gt;
In Keen 6 there is one sprite cache not used by any sprites. This is given by &amp;lt;tt&amp;gt;$C7 $06 $CD17W  $0001W&amp;lt;/tt&amp;gt; and the following patch controls what sprites it contains (It contains none by default.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Unused sprite cache&lt;br /&gt;
%patch $3242A [$0000W] #Unused cache start&lt;br /&gt;
%patch $3247A [$0000W] #Unused cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Free space for new initiation codes ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the default initiation codes so that space is generated for custom sprite initiation codes. There are several options, more than one of which can be used together. These patches are incompatible with any initiation patches elsewhere on this page that also affect these sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E4CE for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked in blue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E954 [$006DW] #Keen left (At $E488)&lt;br /&gt;
%patch $E956 [$0088W] #Map Keen (At $E4A8)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen initiation codes (Frees $E4CE-$E501)&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}&lt;br /&gt;
             $83 $C4 $06 $9A $0CA6000ARL     $C7 $06 $CD01W  $0001W  $EB $15&lt;br /&gt;
%patch $E4A8 $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03F9W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 6)|platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E986 $01FAW #Platform up (At $E61A)&lt;br /&gt;
%patch $E988 $01FAW #Platform right (At $E61A)&lt;br /&gt;
%patch $E98A $01FAW #Platform down (At $E61A)&lt;br /&gt;
%patch $E98C $01FAW #Platform left (At $E61A)&lt;br /&gt;
%patch $E990 $020DW #Falling Platform (At $E62D)&lt;br /&gt;
%patch $E992 $0216W #Only-Easy sitting Platform (At $E636)&lt;br /&gt;
%patch $E994 $0220W #Easy\Medium sitting Platform (At $E640)&lt;br /&gt;
%patch $E996 $022AW #Easy\Medium\Hard sitting Platform (At $E64A)&lt;br /&gt;
%patch $E998 $0233W #Path Platform up (At $E653)&lt;br /&gt;
%patch $E99A $0233W #Path Platform right (At $E653)&lt;br /&gt;
%patch $E99C $0233W #Path Platform down (At $E653)&lt;br /&gt;
%patch $E99E $0233W #Path Platform left (At $E653)&lt;br /&gt;
%patch $E9A0 $0246W #Sneaky Platform (At $E666)&lt;br /&gt;
&lt;br /&gt;
#Compact Platform initiation codes (Frees $E5D4 - $E619)&lt;br /&gt;
%patch $E61A $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4 #HV plats&lt;br /&gt;
             $06 $EB $43&lt;br /&gt;
%patch $E62D $57 $56 $9A {$0EFC13C2RL}     $EB $37			     #Dropping plat&lt;br /&gt;
%patch $E636 $83 $3E {$75A8W}  [$01] {$7E} $0D $E9 $0287W  $83 $3E {$75A8W}  [$02] {$7E} #Sitting plats&lt;br /&gt;
             $03 $E9 $027DW  $57 $56 $9A {$0EFC14E6RL}     $EB $1A&lt;br /&gt;
%patch $E653 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4 #Goplat&lt;br /&gt;
             $06 $EB $0A&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W  #Sneaky plat&lt;br /&gt;
             $E9 $024EW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This addition can be used if the [[Patch:Goplat (Keen 6)|Goplats]] are patched to only use 1 animation. (That is, without Bip riders.) This also frees up graphics and memory. The platform animation cached is highlighted in blue. (It is the same as the default here and marked in blue.) This addition can be added to the end of the above patch, replacing the last patch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 #Sneaky plat&lt;br /&gt;
             $76 $8E $C0 $26 $08 $16 [$01A8W]  $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t draw Goplat Bips in Keen 6&lt;br /&gt;
%patch $10738 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41228</id>
		<title>Patch:Sprite spawning</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41228"/>
		<updated>2019-12-17T15:17:07Z</updated>

		<summary type="html">&lt;p&gt;Levellass: init codes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial page on patching sprite spawning. It contains information on what sprite spawn code is and how to patch it. A sprite&#039;s spawn code sets all of the sprite&#039;s variables before it is placed in the level. Many of these variables are important and only set once.&lt;br /&gt;
&lt;br /&gt;
This page deals with patches relating to sprite spawning, covering a number of patches applied to sprites before they&#039;re even created and even allowing more sprites than normal to be placed in a game. The page is prefaced with a section explaining the different areas of sprite spawning, followed by a section for each game.&lt;br /&gt;
&lt;br /&gt;
A related tutorial page dealing with expanding the number of sprites in Keen 1-3 is [[Patch:Patching Vorticon Sprites]] and its equivalent for Keen Galaxy and Dreams is [[Patch:Patching Galaxy Sprites]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Areas of sprite spawning =&lt;br /&gt;
&lt;br /&gt;
There are three areas involved in spawning a sprite, the pointer list, the initiation code and the spawning code proper.&lt;br /&gt;
&lt;br /&gt;
The pointer list is exactly what it sounds like, sprites in level maps are simply values in the sprite plane, from $0000-$FFFF. Certain &#039;standard&#039; values (Lower ones) are used for sprites, other &#039;special&#039; values are treated on a case by case basis, usually [[Patch:Bridges and switches|switches.]]&lt;br /&gt;
&lt;br /&gt;
There are three parts to this, the list&#039;s location, its length (minus one) and the list itself. The list consists of a number of two-byte values each related to the location of a sprite&#039;s initiation code. Every sprite of a certain number will be directed via the list to a certain segment of initiation code.&lt;br /&gt;
&lt;br /&gt;
Initiation code prepares the game for the sprite, setting aside memory, caching graphics and suchlike. It is not a solid block of code, but part of the same code as the pointer list. The initiation code directs the game to the sprite&#039;s individual spawning code.&lt;br /&gt;
&lt;br /&gt;
The spawning code is a solid block of code executed once per sprite that results in the sprite being placed in the level and set in motion; it prepares the sprite for the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 1 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 1]] is unusual in that only the first five sprites are &#039;standard&#039;, while the [[Patch:Icecubes|Ice cannons,]] [[Patch:Falling block|falling block]] and [[Patch:Keen (Keen 1)|Keen himself]] are special cases with specific sprite numbers. It is possible to standardize the sprite initiations and thus allow many more sprite types and customization. This is covered in the following section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $1709W directs the game to the list at $1709. The standard sprite list is 4 + 1 = 5 entries long. Other sprite types are more difficult to work with. Sprites &#039;&#039;less&#039;&#039; than Ice Type 3 ($09) but &#039;&#039;greater&#039;&#039; then the standard types (Including type 6, an Ice Cannon!) are Ice Cannons. (By default $07, $08 and $09.) Type 0 Ice Cannons have their own special type ($06), dealt with &#039;&#039;before&#039;&#039; all other sprites, even standard ones. The Chain&#039;s type is $0A and finally Keen too has a special type, $FF (255).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $1632 {$1709W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $1627 $04&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $1709 [$1656W] #Yorp&lt;br /&gt;
             [$1661W] #Garg&lt;br /&gt;
             [$166CW] #Vorticon&lt;br /&gt;
             [$1676W] #Butler robot&lt;br /&gt;
             [$1680W] #Tank robot&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $161F [$06]    #Ice Type 0&lt;br /&gt;
%patch $1636 [$09]    #Ice Type 3&lt;br /&gt;
%patch $163D [$07]    #Ice Type 1&lt;br /&gt;
%patch $1642 [$08]    #Ice Type 2&lt;br /&gt;
%patch $164A [$0A]    #Falling block&lt;br /&gt;
%patch $164F [$00FFW] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 1 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $1656 $57 $56 $E8 $0225W  $83 $C4 $04 $E9 $008EW 	     #Goes to Yorp (Code at $1656 + $225 + $5 = $1880)&lt;br /&gt;
%patch $1661 $57 $56 $E8 $01DDW  $83 $C4 $04 $E9 $0083W 	     #Goes to Garg (Code at $1661 + $1DD + $5 = $1843)&lt;br /&gt;
%patch $166C $57 $56 $E8 $0164W  $83 $C4 $04 $EB $79		     #Goes to Vorticon (Code at $166C + $164 + $5 = $17D5)&lt;br /&gt;
%patch $1676 $57 $56 $E8 $00FCW  $83 $C4 $04 $EB $6F		     #Goes to Butler Bot (Code at $1676 + $FC + $5 = $1777)&lt;br /&gt;
%patch $1680 $57 $56 $E8 $008EW  $83 $C4 $04 $EB $65		     #Goes to Tank Bot (Code at $1680 + $8E + $5 = $1713)&lt;br /&gt;
%patch $168A $33 $C0 $50 $57 $56 $E8 $028EW  $83 $C4 $06 $EB $58     #Goes to Type 0 Ice Cannon (Code at $168A + $28E + $8 = $1920)&lt;br /&gt;
%patch $1697 $B8 $0001W  $50 $57 $56 $E8 $0280W  $83 $C4 $06 $EB $4A #Goes to Type 1 Ice Cannon (Code at $1697 + $280 + $9 = $1920)&lt;br /&gt;
%patch $16A5 $B8 $0002W  $50 $57 $56 $E8 $0272W  $83 $C4 $06 $EB $3C #Goes to Type 2 Ice Cannon (Code at $16A5 + $272 + $9 = $1920)&lt;br /&gt;
%patch $16B3 $B8 $0003W  $50 $57 $56 $E8 $0264W  $83 $C4 $06 $EB $2E #Goes to Type 3 Ice Cannon (Code at $16B3 + $264 + $9 = $1920)&lt;br /&gt;
%patch $16C1 $57 $56 $E8 $021DW  $83 $C4 $04 $EB $24		     #Goes to Falling block (Code at $16C1 + $21D + $5 = $18E3)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $16CB $8B $C6 $99 $B1 $0C $E8 $CA7EW  $A3 $6EDEW  $89 $16 $6EE0W&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $CA6FW  $05 [$0800W]  $83 $D2 $00 $A3 $6EE2W&lt;br /&gt;
                 $89 $16 $6EE4W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 1 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Yorp&lt;br /&gt;
%patch $1880 $55 $8B $EC $56 $E8 $10AEW  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $C8BBW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8ACW  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$194FW}  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start behavior is at $194F&lt;br /&gt;
             $7F $0F $7C $06 $3B $16 $DE $6E $73 $07 $C7 $44 $20 [$003CW]  $EB #If left of Keen speed = $3C else is $FFC4 (+\-60)&lt;br /&gt;
             $05 $C7 $44 $20 [$FFC4W]  $C7 $44 $34 {$1A68W}  $C7 $44 $28 [$0030W]  #Death at $1A68, start animation = $30 = 48&lt;br /&gt;
             $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Garg&lt;br /&gt;
%patch $1843 $55 $8B $EC $56 $E8 $10EBW  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $C8F8W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8E9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1B51W}  #Start behavior at $1B51&lt;br /&gt;
             $C7 $44 $34 {$1BCEW}  $C7 $44 $28 [$003CW]  $5E $5D $C3             #Death at $1BCE; start animation = $3C = 60&lt;br /&gt;
&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $17D5 $55 $8B $EC $56 $E8 $1159W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $C966W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C957W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1C0EW}  #Behavior at 1C0E&lt;br /&gt;
             $C7 $44 $34 {$1D6EW}  $C7 $44 $24 [$0003W]  $83 $3E $04 $83 {$10 $75} #Death 1D6E, strength = 3 unless level = 16&lt;br /&gt;
             $05 $C7 $44 $24 [$0068W]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Then strength = 100&lt;br /&gt;
             $7C $0F $7F $06 $3B $16 $DE $6E $76 $07 $C7 $44 $20 [$FFA6W]  $EB #If right of Keen speed = FFA6&lt;br /&gt;
             $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$004EW]  $5E $5D $C3         #Else speed = $5A, start animation = $4E&lt;br /&gt;
&lt;br /&gt;
#Butler bot&lt;br /&gt;
%patch $1777 $55 $8B $EC $56 $E8 $11B7W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $C9C4W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C9B5W  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$005AW]  #Start speed = $5A&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E $7F $10 $7C $06 $3B $16&lt;br /&gt;
             $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89 $44 $20 $C7 $44 $32&lt;br /&gt;
         {$1DC7W}  $C7 $44 $34 {$1E94W}  $C7 $44 $28 [$0060W]  $5E $5D $C3         #Behavior 1DC7, death 1E94, start animation $60&lt;br /&gt;
&lt;br /&gt;
#Tank bot&lt;br /&gt;
%patch $1713 $55 $8B $EC $56 $E8 $121BW  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $CA28W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CA19W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $20 [$005AW]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start speed = $5A&lt;br /&gt;
             $7F $10 $7C $06 $3B $16 $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89&lt;br /&gt;
             $44 $20 $C7 $44 $32 {$1F75W}  $C7 $44 $34 {$2045W}  $C7 $44 $28     #Start behavior at $1F75W death at $2045&lt;br /&gt;
          [$006AW]  $5E $5D $C3                                                #Start animation $6A&lt;br /&gt;
&lt;br /&gt;
#Falling block&lt;br /&gt;
%patch $18E3 $55 $8B $EC $56 $E8 $104BW  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $C858W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C849W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3360W}  #Start behavior at $3360 (Nothing)&lt;br /&gt;
             $C7 $44 $34 {$22BBW}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Death $22BB, start (and only) animation $72&lt;br /&gt;
&lt;br /&gt;
#Ice cubes&lt;br /&gt;
%patch $1920 $55 $8B $EC $56 $E8 $1057W  $8B $F0 $C7 $44 $08 $0003W  $C7 $44 #No sprite type or other properties&lt;br /&gt;
             $22 {$204AW}  $8B $46 $08 $89 $44 $0A $8B $46 $04 $99 $89 $04 $89 #Call Canon behavior at $204A&lt;br /&gt;
             $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54 $06 $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 1 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $09 and its location is $168A. This actually greatly simplifies the Keen 1 code, and as such is used in preference to the above default code as it flows more logically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Re-write the core switch statement.&lt;br /&gt;
%patch $161D $4B $83 $FB [$09] $76 $0A $81 $FB $FE $00 $0F $84 $A0 $00 $E9 $C1&lt;br /&gt;
             $00 $D1 $E4 $2E $D1 $E3 $2E $FF $A7 {$168AW}&lt;br /&gt;
#Combine the ice-launchers&lt;br /&gt;
%patch $16B1 $D1 $EB $83 $EB $05 $53&lt;br /&gt;
&lt;br /&gt;
#Locations of jumps to sprite spawn code&lt;br /&gt;
%patch $168A {$1656W} #Yorp&lt;br /&gt;
             {$1661W} #Garg&lt;br /&gt;
             {$166CW} #Vorticon&lt;br /&gt;
             {$1676W} #Butler&lt;br /&gt;
             {$1680W} #Tank&lt;br /&gt;
             {$16B1W} #Ice Launcher 1&lt;br /&gt;
             {$16B1W} #Ice Launcher 2&lt;br /&gt;
             {$16B1W} #Ice Launcher 3&lt;br /&gt;
             {$16B1W} #Ice Launcher 4&lt;br /&gt;
             {$16C1W} #Falling Block&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 2 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 2]] is much more regular than Keen 1 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $3BE2W directs the game to the list at $3BE2. The standard sprite list is 3 + 1 = 4 entries long. Other sprite types are more difficult to work with. Types 5, 6, 7 and 255 have their own separate codes that are jumped to directly, for reasons unknown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3B4A {$3BE2W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $3B3F [$03]&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $3BE2 [$3B5EW] #Vorticon (At $3B5E)&lt;br /&gt;
             [$3B68W] #Youth (At $3B68)&lt;br /&gt;
             [$3B72W] #Vorticon Elite (At $3B72)&lt;br /&gt;
             [$3B7CW] #Scrub (At $3B7C)&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $3B37 [$05] $74 $4C    #Robot (At $3B86)&lt;br /&gt;
%patch $3B4E [$06] $74 $3F    #Platform (At $3B90)&lt;br /&gt;
%patch $3B53 [$07] $74 $44    #Tantalus spark (At $3B9A)&lt;br /&gt;
%patch $3B58 [$00FFW] $74 $48 #Keen (At $3BA4)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 2 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3B5E $57 $56 $E8 $0087W  $83 $C4 $04 $EB $60 #Goes to Vorticon (Code at $3B5E + $87 + $5 = $3BEA)&lt;br /&gt;
%patch $3B68 $57 $56 $E8 $00DFW  $83 $C4 $04 $EB $56 #Goes to Youth (Code at $3B68 + $DF + $5 = $3C4C)&lt;br /&gt;
%patch $3B72 $57 $56 $E8 $0137W  $83 $C4 $04 $EB $4C #Goes to Elite (Code at $3B72 + 137 + $5 = $3CAE)&lt;br /&gt;
%patch $3B7C $57 $56 $E8 $018FW  $83 $C4 $04 $EB $42 #Goes to Scrub (Code at $3B7C + 18F + $5 = $3D10)&lt;br /&gt;
%patch $3B86 $57 $56 $E8 $01C2W  $83 $C4 $04 $EB $38 #Goes to Robot (Code at $3B86 + 1C2 + $5 = $3D4D)&lt;br /&gt;
%patch $3B90 $57 $56 $E8 $01FFW  $83 $C4 $04 $EB $2E #Goes to Platform (Code at $3B90 + 1FF + $5 = $3D94)&lt;br /&gt;
%patch $3B9A $57 $56 $E8 $023DW  $83 $C4 $04 $EB $24 #Goes to Tantalus (Code at $3B9S + 23D + $5 = $3DDC)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $3BA4 $8B $C6 $99 $B1 $0C $E8 $9CD5W  $A3 $6EBAW  $89 $16 $6EBCW&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $9CC6W  $05 [$0800W]  $83 $D2 $00 $A3 $6EBEW&lt;br /&gt;
             $89 $16 $6EC0W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 2 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. &lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon spawning code&lt;br /&gt;
%patch $3BEA $55 $8B $EC $56 $E8 $1B86W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $9C81W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C72W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3E19W}  #Behavior = $3E19&lt;br /&gt;
             $C7 $44 $34 {$3F8CW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $3F8C, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0052W]  $5E #Speed +-90, sprite = $52&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Youth spawning code&lt;br /&gt;
%patch $3C4C $55 $8B $EC $56 $E8 $1B24W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $9C1FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C10W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3FCCW}  #Behavior = $3FCC&lt;br /&gt;
             $C7 $44 $34 {$4093W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $4094, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$0030W]  $5E #Speed +-250, sprite = $30&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Elite spawning code&lt;br /&gt;
%patch $3CAE $55 $8B $EC $56 $E8 $1AC2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $9BBDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9BAEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$40CEW}  #Behavior = $40CE&lt;br /&gt;
             $C7 $44 $34 {$4283W}  $C7 $44 $24 [$0002W]  $8B $44 $06 $8B $54 $04 #Collision = $4283, health = 2&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF9CW]  $EB $05 $C7 $44 $20 [$0064W]  $C7 $44 $28 [$0058W]  $5E #Speed +-100, sprite = $58&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Scrub spawning code&lt;br /&gt;
%patch $3D10 $55 $8B $EC $56 $E8 $1A60W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $9B5BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B4CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$42C1W}  #Behavior = $42C1&lt;br /&gt;
             $C7 $44 $34 {$4507W}  $C7 $44 $28 [$0066W]  $5E $5D $C3             #Collision = $4507, sprite = $66&lt;br /&gt;
&lt;br /&gt;
#Guard Robot spawning code&lt;br /&gt;
%patch $3D4D $55 $8B $EC $56 $E8 $1A23W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $9B1EW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B0FW  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$0064W]  #Speed = 100&lt;br /&gt;
             $C7 $44 $32 {$4539W}  $C7 $44 $34 {$4677W}  $C7 $44 $24 $63 $00 $C7 #Behavior = $4539, collision = $4677, sprite = $78&lt;br /&gt;
             $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Platform spawning code&lt;br /&gt;
%patch $3D94 $55 $8B $EC $56 $E8 $19DCW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $9AD7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9AC8W  $05 [$FC00W]  $83 $D2 $FF $89 $44 $08 $89 $54 #Spawn $FC00 down&lt;br /&gt;
             $0A $C7 $44 $32 {$467CW}  $C7 $44 $34 {$61A2W}  $C7 $44 $28 [$007EW]  #Behavior = $467C, collision = $61A2, speed = $7E, sprite = $4B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Tantalus spawning code&lt;br /&gt;
%patch $3DDC $55 $8B $EC $56 $E8 $1994W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $9A8FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9A80W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}  #Behavior = $46DF, collision = $4716, sprite = $80&lt;br /&gt;
             $C7 $44 $34 {$4716W}  $C7 $44 $28 [$0080W]  $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 2 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $07 and its location is $3B83. This allows several more sprites to be added to the game (here just one new one is added.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Regularized Keen 2 spawning code&lt;br /&gt;
%patch $3B35 $81 $FB $00FFW  $74 $69 $4B $83 $FB [$07] $76 $03 $E9 $0084W  $D1&lt;br /&gt;
             $E3 $2E $FF $A7 $3B83W&lt;br /&gt;
%patch $3B4B $57 $56 $E8 $009AW  $EB $4D $57 $56 $E8 $00F5W  $EB $46&lt;br /&gt;
             $57 $56 $E8 $0150W  $EB $3F $57 $56 $E8 $01ABW  $EB $38&lt;br /&gt;
             $57 $56 $E8 $01E1W  $EB $31 $57 $56 $E8 $0221W  $EB $2A&lt;br /&gt;
             $57 $56 $E8 $0262W  $EB $23 $57 $56 $E8 $CF71W  $EB $1C&lt;br /&gt;
%patch $3B83 $3B4BW  $3B52W  $3B59W  $3B60W  $3B67W  $3B6EW  $3B75W  $3B7CW&lt;br /&gt;
&lt;br /&gt;
#New sprite spawn, immortal, platform type, Tantalus behavior&lt;br /&gt;
%patch $0AF2 $55 $8B $EC $56 $E8 $4C7EW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04&lt;br /&gt;
             $99 $B1 $0C $E8 $CD79W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CD6AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}&lt;br /&gt;
             $C7 $44 $34 {$4677W}  $C7 $44 $28 $0010W  $C7 $44 $20 [$0049W]  $5E&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 3 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 3]] is much more regular than Keen 1 or 2 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. However Keen 3 has one important different. The primary list is a &#039;number list&#039; that gives values in the sprite plane that are converted to various sprites. (For example value 1 in the sprite plane becomes sprite 1, the Vorticon. Value 255 becomes sprite 19, or Keen.) Both this list and the pointer list are the same length, controlled by a single variable, the list length. This is in entries, or words; two bytes long. (So the list length in bytes is this value * 2) The location of the pointer list is a number of bytes after the number list (So changing the number list&#039;s location also changes the pointer list location.) By default this value is the length of the number list in bytes so that both lists form a solid block of data. Also notable is the &#039;Vorticon 2&#039; which has its own sprite number, yet has the same pointer as the Vorticon meaning this sprite is just an unnecessary additional Vorticon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 Initiation lists&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3ACA {$3BD4W} #Number&lt;br /&gt;
%patch $3ADE [$26]    #Pointer list is this many bytes after number list (3BD4 + 26 = 3BFA)&lt;br /&gt;
&lt;br /&gt;
#List lengths (in words, = byte length/2)&lt;br /&gt;
%patch $3AC7 $0013W&lt;br /&gt;
&lt;br /&gt;
#Number list&lt;br /&gt;
%patch $3BD4 [$0001W] #Vorticon&lt;br /&gt;
%patch $3BD6 [$0002W] #Vortikid&lt;br /&gt;
%patch $3BD8 [$0003W] #Vortimom&lt;br /&gt;
%patch $3BDA [$0004W] #Meep&lt;br /&gt;
%patch $3BDC [$0005W] #Vortininja&lt;br /&gt;
%patch $3BDE [$0006W] #Foob&lt;br /&gt;
%patch $3BE0 [$0007W] #Ball&lt;br /&gt;
%patch $3BE2 [$0008W] #Jack&lt;br /&gt;
%patch $3BE4 [$0009W] #H Platform&lt;br /&gt;
%patch $3BE6 [$000AW] #V Platform&lt;br /&gt;
%patch $3BE8 [$000BW] #Vorticon 2&lt;br /&gt;
%patch $3BEA [$000CW] #Purple Spark&lt;br /&gt;
%patch $3BEC [$000DW] #Heart&lt;br /&gt;
%patch $3BEE [$000EW] #Gun across&lt;br /&gt;
%patch $3BF0 [$000FW] #Gun down&lt;br /&gt;
%patch $3BF2 [$0010W] #MM Hand&lt;br /&gt;
%patch $3BF4 [$0011W] #MM Left foot&lt;br /&gt;
%patch $3BF6 [$0012W] #MM Right foot&lt;br /&gt;
%patch $3BF8 [$00FFW] #Keen&lt;br /&gt;
&lt;br /&gt;
#Pointer list&lt;br /&gt;
%patch $3BFA [$3ADFW] #Vorticon&lt;br /&gt;
%patch $3BFC [$3AE9W] #Vortikid&lt;br /&gt;
%patch $3BFE [$3AF3W] #Vortimom&lt;br /&gt;
%patch $3C00 [$3AFDW] #Meep&lt;br /&gt;
%patch $3C02 [$3B07W] #Vortininja&lt;br /&gt;
%patch $3C04 [$3B11W] #Foob&lt;br /&gt;
%patch $3C06 [$3B1BW] #Ball&lt;br /&gt;
%patch $3C08 [$3B25W] #Jack&lt;br /&gt;
%patch $3C0A [$3B2FW] #H Platform&lt;br /&gt;
%patch $3C0C [$3B39W] #V Platform&lt;br /&gt;
%patch $3C0E [$3B42W] #Vorticon 2&lt;br /&gt;
%patch $3C10 [$3B4BW] #Purple Spark&lt;br /&gt;
%patch $3C12 [$3B54W] #Heart&lt;br /&gt;
%patch $3C14 [$3B5DW] #Gun across&lt;br /&gt;
%patch $3C16 [$3B66W] #Gun down&lt;br /&gt;
%patch $3C18 [$3B6FW] #Hand&lt;br /&gt;
%patch $3C1A [$3B78W] #Left Foot&lt;br /&gt;
%patch $3C1C [$3B86W] #Right foot&lt;br /&gt;
%patch $3C1E [$3B94W] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for the various sprites are quite simple. each simply tells the game a new sprite is going to be produced, then jumps to that sprite&#039;s spawn code. The finishing code is run by all sprite initiation codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3ADF $56 $57 $E8 $013CW  $59 $59 $E9 $00D1W				#Goes to Vorticon (Code at $3ADF + $13C + 5 = $3C20)&lt;br /&gt;
%patch $3AE9 $56 $57 $E8 $0194W  $59 $59 $E9 $00C7W				#Goes to Vortikid (Code at $3AE9 + $194 + 5 = $3C82)&lt;br /&gt;
%patch $3AF3 $56 $57 $E8 $01ECW  $59 $59 $E9 $00BDW				#Goes to Vortimom (Code at $3AF3 + $1EC + 5 = $3CE4)&lt;br /&gt;
%patch $3AFD $56 $57 $E8 $0244W  $59 $59 $E9 $00B3W				#Goes to Meep (Code at $3AFD + $244 + 5 = $3D46)&lt;br /&gt;
%patch $3B07 $56 $57 $E8 $02A2W  $59 $59 $E9 $00A9W				#Goes to Vortininja (Code at $3B07 + $2A2 + 5 = $3DAE)&lt;br /&gt;
%patch $3B11 $56 $57 $E8 $02FAW  $59 $59 $E9 $009FW				#Goes to Foob (Code at $3B11 + $2FA + 5 = $3E10)&lt;br /&gt;
%patch $3B1B $56 $57 $E8 $0352W  $59 $59 $E9 $0095W				#Goes to Ball (Code at $3B1B + $352 + 5 = $3E72)&lt;br /&gt;
%patch $3B25 $56 $57 $E8 $03CAW  $59 $59 $E9 $008BW				#Goes to Jack (Code at $3B25 + $3CA + 5 = $3EF4)&lt;br /&gt;
%patch $3B2F $56 $57 $E8 $0442W  $59 $59 $E9 $0081W				#Goes to H Platform (Code at $3B2F + $442 + 5 = $3F76)&lt;br /&gt;
%patch $3B39 $56 $57 $E8 $0480W  $59 $59 $EB $78				#Goes to V Platform (Code at $3B39 + $480 + 5 = $3FBE)&lt;br /&gt;
%patch $3B42 $56 $57 $E8 $00D9W  $59 $59 $EB $6F				#Goes to Vorticon (Code at $3B42 + $D9 + 5 = $3C20)&lt;br /&gt;
%patch $3B4B $56 $57 $E8 $0516W  $59 $59 $EB $66				#Goes to Purple Spark (Code at $3B4B + $516 + 5 = $4066)&lt;br /&gt;
%patch $3B54 $56 $57 $E8 $054AW  $59 $59 $EB $5D				#Goes to Heart (Code at $3B54 + $54A + 5 = $40A3)&lt;br /&gt;
%patch $3B5D $56 $57 $E8 $049EW  $59 $59 $EB $54				#Goes to Gun across (Code at $3B5D + $49E + 5 = $4000)&lt;br /&gt;
%patch $3B66 $56 $57 $E8 $04C8W  $59 $59 $EB $4B				#Goes to Gun down (Code at $3B66 + $4C8 + 5 = $4033)&lt;br /&gt;
%patch $3B6F $56 $57 $E8 $056CW  $59 $59 $EB $42				#Goes to Hand (Code at $3B6F + $56C + 5 = $40E0)&lt;br /&gt;
%patch $3B78 $B8 $FFFFW  $50 $56 $57 $E8 $0597W  $83 $C4 $06 $EB $34		#Goes to Left foot (Code at $3B78 + $597 + 9 = $4118)&lt;br /&gt;
%patch $3B86 $B8 $0001W  $50 $56 $57 $E8 $0589W  $83 $C4 $06 $EB $26		#Goes to Right foot (Code at $3B86 + $589 + 9 = $4118)&lt;br /&gt;
%patch $3B94 $8B $C7 $99 $B1 $0C $E8 $25 $A3B0W  $0A $71 $89 $16 $0C $71 $8B	#Goes to Keen (Code at $3B94 + $B016 + 5 = $EBAA)&lt;br /&gt;
             $C6 $99 $B1 $0C $E8 $B016W  $05 $00 $08 $83 $D2 $00 $A3 $0E $71&lt;br /&gt;
             $89 $16 $10 $71 $EB $00&lt;br /&gt;
%patch $3BBA $47 $3B $3E $34 $6E $7D $03 $E9 $E6 $FE $46 $3B $36 $84 $6E $7D	#Finisher&lt;br /&gt;
             $03 $E9 $D7 $FE $5F $5E $8B $E5 $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 3 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. Notice that the left and right foot of the Mangling Machine use the same spawn code, and that both the MM hands and feet are [[Patch:Meta sprites|metasprites]] not sprites.&lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $3C20 $55 $8B $EC $56 $E8 $2396W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $AF8BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF7CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$414AW}  #Behavior = $414A&lt;br /&gt;
             $C7 $44 $34 {$42D0W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $42D0, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44 #Check for Keen&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0047W]  $5E #Speed +-5A sprite = 47&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortikid&lt;br /&gt;
%patch $3C82 $55 $8B $EC $56 $E8 $2334W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $AF29W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF1AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4311W}  #Behavior = $4311&lt;br /&gt;
             $C7 $44 $34 {$43D9W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $43D9, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$002FW]  $5E #Speed +-250, sprite = 2F&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortimom&lt;br /&gt;
%patch $3CE4 $55 $8B $EC $56 $E8 $22D2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $AEC7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AEB8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$440CW}  #Behavior = $440C&lt;br /&gt;
             $C7 $44 $34 {$470CW}  $C7 $44 $24 [$0005W]  $8B $44 $06 $8B $54 $04 #Collision = $470C, health = 5&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$0055W]  $5E #Speed +-50, sprite = 55&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Meep&lt;br /&gt;
%patch $3D46 $55 $8B $EC $56 $E8 $2270W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AE65W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AE56W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4746W}  $C7 $44 $34 {$4898W}  $C7 $44 $24 [$0001W]  #Behavior = $4746 Collision = $4898, health = 1&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $0C $71 $7C $0F $7F $06 $3B $16&lt;br /&gt;
             $0A $71 $76 $07 $C7 $44 $20 [$FFBFW]  $EB $05 $C7 $44 $20 [$0041W]  #Speed +-65, sprite = 78&lt;br /&gt;
             $C7 $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortininja&lt;br /&gt;
%patch $3DAE $55 $8B $EC $56 $E8 $2208W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $ADFDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ADEEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32{ $48F7W}  #Behavior = $48F7&lt;br /&gt;
             $C7 $44 $34 {$49CDW}  $C7 $44 $24 [$0003W]  $8B $44 $06 $8B $54 $04 #Collision $49CD, health = 3&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFFFW]  $EB $05 $C7 $44 $20 [$0001W]  $C7 $44 $28 [$004DW]  $5E #Face Keen, sprite = 4D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Foob&lt;br /&gt;
%patch $3E10 $55 $8B $EC $56 $E8 $21A6W  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $AD9BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD8CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4A0CW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$4B7EW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $4B 7E, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$005DW]  $5E #Speed +-50, sprite = 5D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Ball&lt;br /&gt;
%patch $3E72 $55 $8B $EC $56 $E8 $2144W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $AD39W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD2AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C0BW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006DW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Jack&lt;br /&gt;
%patch $3EF4 $55 $8B $EC $56 $E8 $20C2W  $8B $F0 $C7 $04 [$0009W]  $8B $46 $04 #Sprite type = 9&lt;br /&gt;
             $99 $B1 $0C $E8 $ACB7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ACA8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4BBDW}  #Behavior = $4BBD&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006EW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H Platform&lt;br /&gt;
%patch $3F76 $55 $8B $EC $56 $E8 $2040W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $AC35W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AC26W  $05 $00 $FC $83 $D2 $FF $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4C47W}  $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]   #Behavior = $4C47, Collision $6A00 Sprite = 6B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3                                 #Speed = +76&lt;br /&gt;
&lt;br /&gt;
#V Platform&lt;br /&gt;
%patch $3FBE $55 $8B $EC $56 $E8 $1FF8W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $ABEDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ABDEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C47W}  #Behavior = $4C47&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]  $C7 $44 $22 [$004BW]  $5E   #Collision $6A00, Sprite = 6B, Speed = +76&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H gun&lt;br /&gt;
%patch $4000 $55 $8B $EC $56 $E8 $2001W  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $ABAAW  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB9CW  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D34W}  $5E $5D $C3 #Behavior = $4D34&lt;br /&gt;
&lt;br /&gt;
#V gun&lt;br /&gt;
%patch $4033 $55 $8B $EC $56 $E8 $1FCEW  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AB77W  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB69W  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D9BW}  $5E $5D $C3 #Behavior = $4D9B&lt;br /&gt;
&lt;br /&gt;
#Purple Spark&lt;br /&gt;
%patch $4066 $55 $8B $EC $56 $E8 $1F50W  $8B $F0 $C7 $04 [$000DW]  $8B $46 $04 #Sprite type = 13&lt;br /&gt;
             $99 $B1 $0C $E8 $AB45W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AB36W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4E02W}  #Behavior = $4E02&lt;br /&gt;
             $C7 $44 $34 {$4E19W}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Collision $4E19, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#Heart&lt;br /&gt;
%patch $40A3 $55 $8B $EC $56 $E8 $1F13W  $8B $F0 $C7 $04 [$000CW]  $8B $46 $04 #Sprite type = 12&lt;br /&gt;
             $B1 $0C $E8 $AB08W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99 $B1&lt;br /&gt;
             $0C $E8 $AAF9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4EA6W}  $C7 #Behavior = $4EA6&lt;br /&gt;
             $44 $34 {$4EBEW}  $C7 $44 $28 [$0072W]  $5E $5D $C3                 #Collision $4EBE, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#MM Hand (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $40E0 $55 $8B $EC $56 $E8 $1F21W  $8B $F0 $C7 $44 $08 [$0006W]  $8B $46 #Sprite type = 6&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $C7 $44 $22 {$50F4W}  $C7 $44 $0C [$0000W]  $C7 $44 $0A [$0001W]  #Direction = right, up&lt;br /&gt;
             $C7 $44 $0E $000FW  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#MM Feet (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $4118 $55 $8B $EC $56 $E8 $1EE9W  $8B $F0 $C7 $44 $08 [$0007W]  $8B $46 #Sprite type = 7&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $8B $46 $08 $89 $44 $0A $89 $44 $0E $C7 $44 $22 {$52F1W}  $5E #Behavior = $52F1&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen Dreams =&lt;br /&gt;
&lt;br /&gt;
[[Keen Dreams]] is similar to Keen Galaxy in that there are two kinds of pointers, &#039;short&#039; (two-byte) pointers used in the pointer list and &#039;long&#039; (four byte) pointers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
Pointers in Dreams are different from those in Vorticons in that they require a value to be added to them to get the actual location they refer to. In Dreams this is $44D0. So a pointer with the value $04FCW actually refers to code at $04FC + $44D0 = $49CC. Interestingly infoplane values are used for both sprites and level entrances on the map. This means that if extra levels are desired some sprites will have to be overwritten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($44D0 + $050DW = $49DD)&lt;br /&gt;
%patch $4774 [$050DW]&lt;br /&gt;
&lt;br /&gt;
#Length of list (60 items)&lt;br /&gt;
%patch $4769 [$3C]&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is 44D0)&lt;br /&gt;
%patch $49DD [$02A6W] #Keen right (At $4776)&lt;br /&gt;
%patch $49DF [$02BDW] #Keen left (At $478D)&lt;br /&gt;
%patch $49E1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49ED [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FD [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A01 [$02D4W] #Map Keen (At $47A4)&lt;br /&gt;
%patch $4A03 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A05 [$02F3W] #100 Pts (At $47C3)&lt;br /&gt;
%patch $4A07 [$02F3W] #200 Pts (At $47C3)&lt;br /&gt;
%patch $4A09 [$02F3W] #500 Pts (At $47C3)&lt;br /&gt;
%patch $4A0B [$02F3W] #1000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0D [$02F3W] #2000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0F [$02F3W] #5000 Pts (At $47C3)&lt;br /&gt;
%patch $4A11 [$02F3W] #1UP (At $47C3)&lt;br /&gt;
%patch $4A13 [$02F3W] #Eye (At $47C3)&lt;br /&gt;
%patch $4A15 [$02F3W] #Flower Power (At $47C3)&lt;br /&gt;
%patch $4A17 [$02F3W] #Flower Pot (At $47C3)&lt;br /&gt;
%patch $4A19 [$02EDW] #Boobus Bomb (At $47BD)&lt;br /&gt;
%patch $4A1B [$02F3W] #Key (At $47C3)&lt;br /&gt;
%patch $4A1D [$0316W] #Door (At $47E6)&lt;br /&gt;
%patch $4A1F [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A21 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A23 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A25 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A27 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A29 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2D [$0332W] #Broccolash (At $4802)&lt;br /&gt;
%patch $4A2F [$0354W] #Tomatooth (At $4824)&lt;br /&gt;
%patch $4A31 [$0376W] #Carrot Courier (At $4846)&lt;br /&gt;
%patch $4A33 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A35 [$0398W] #Asparagusto (At $4868)&lt;br /&gt;
%patch $4A37 [$03BAW] #Sour Grape (At $488A)&lt;br /&gt;
%patch $4A39 [$03DCW] #Tater Trooper (At $48AC)&lt;br /&gt;
%patch $4A3B [$03FEW] #Minecart (At $48CE)&lt;br /&gt;
%patch $4A3D [$0417W] #Frenchy (At $48E7)&lt;br /&gt;
%patch $4A3F [$0439W] #Melon Lips left (At $4909)&lt;br /&gt;
%patch $4A41 [$0439W] #Melon Lips right (At $4909)&lt;br /&gt;
%patch $4A43 [$0439W] #Melon Lips down (At $4909)&lt;br /&gt;
%patch $4A45 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A47 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A49 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4D [$0462W] #Squasher (At $4932)&lt;br /&gt;
%patch $4A4F [$0483W] #Apel (At $4953)&lt;br /&gt;
%patch $4A51 [$04A4W] #Pea Pod (At $4974)&lt;br /&gt;
%patch $4A53 [$04C5W] #Pea Brain (At $4995)&lt;br /&gt;
%patch $4A55 [$04E6W] #Boobus Tuber (At $49B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to those in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
The first and most important thing is sprite cache. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $70xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Brocolash&#039;s cache is $BC, the Tomatooth&#039;s is $BE (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the [[Patch:Pea Brain|Pea Brain]] uses the same cache as the [[Patch:Pea Pod|Pea Pod]]; this may be because the Pea Brain is never used in Keen Dreams by default and so is &#039;slaved&#039; to the Pea Pod.&lt;br /&gt;
&lt;br /&gt;
The call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $05E80CFFRL. All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;Blank&#039; code. These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right Keen initiation code&lt;br /&gt;
%patch $4776 $B8 $0001W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $023FW&lt;br /&gt;
&lt;br /&gt;
#Left Keen initiation code&lt;br /&gt;
%patch $478D $B8 $FFFFW  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $0228W&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $47A4 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80B20RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70BAW  $0001W  $E9 $020FW&lt;br /&gt;
&lt;br /&gt;
#Boobus Bomb (Uses following item initiation code)&lt;br /&gt;
%patch $47BD $C7 $06 $704CW  $0001W &lt;br /&gt;
&lt;br /&gt;
#Items initiation code&lt;br /&gt;
%patch $47C3 $A1 $70ACW  $2D [$0015W]  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $07C504A3RL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W &lt;br /&gt;
             $E9 $01E6W&lt;br /&gt;
&lt;br /&gt;
#Door initiation code&lt;br /&gt;
%patch $47E6 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50323RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $E9 $01CAW&lt;br /&gt;
&lt;br /&gt;
#Broccolash initiation code&lt;br /&gt;
%patch $4802 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50546RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BCW  $0001W  $E9&lt;br /&gt;
             $01A8W&lt;br /&gt;
&lt;br /&gt;
#Tomatooth initiation code&lt;br /&gt;
%patch $4824 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5060ARL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BEW  $0001W  $E9&lt;br /&gt;
             $0186W&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier initiation code&lt;br /&gt;
%patch $4846 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5078DRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C0W  $0001W  $E9&lt;br /&gt;
             $0164W&lt;br /&gt;
&lt;br /&gt;
#Asparagusto initiation code&lt;br /&gt;
%patch $4868 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50896RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C2W  $0001W  $E9&lt;br /&gt;
             $0142W&lt;br /&gt;
&lt;br /&gt;
#Sour Grape initiation code&lt;br /&gt;
%patch $488A $FF $36 $7052W  $FF $36 $7050W  $9A $07C508D4RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C4W  $0001W  $E9&lt;br /&gt;
             $0120W&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper initiation code&lt;br /&gt;
%patch $48AC $FF $36 $7052W  $FF $36 $7050W  $9A $08680006RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C6W  $0001W  $E9&lt;br /&gt;
             $00FEW&lt;br /&gt;
&lt;br /&gt;
#Minecart initiation code&lt;br /&gt;
%patch $48CE $FF $36 $7052W  $FF $36 $7050W  $9A $08680100RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70C8W  $0001W  $E9 $00E5W&lt;br /&gt;
&lt;br /&gt;
#Frenchy initiation code&lt;br /&gt;
%patch $48E7 $FF $36 $7052W  $FF $36 $7050W  $9A $086801E1RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CAW  $0001W  $E9&lt;br /&gt;
             $00C3W&lt;br /&gt;
&lt;br /&gt;
#Melon initiation code&lt;br /&gt;
%patch $4909 $A1 $70ACW  $2D $0032W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $0868035ERL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W&lt;br /&gt;
             $C7 $06 $70CCW  $0001W  $E9 $009AW&lt;br /&gt;
&lt;br /&gt;
#Squasher initiation code&lt;br /&gt;
%patch $4932 $FF $36 $7052W  $FF $36 $7050W  $9A $086807BFRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CEW  $0001W  $EB&lt;br /&gt;
             $79&lt;br /&gt;
&lt;br /&gt;
#Apel initiation code&lt;br /&gt;
%patch $4953 $FF $36 $7052W  $FF $36 $7050W  $9A $086808C8RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D0W  $0001W  $EB&lt;br /&gt;
             $58&lt;br /&gt;
&lt;br /&gt;
#Pea Pod initiation code&lt;br /&gt;
%patch $4974 $FF $36 $7052W  $FF $36 $7050W  $9A $08680B67RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $37&lt;br /&gt;
&lt;br /&gt;
#Pea Brain initiation code&lt;br /&gt;
%patch $4995 $FF $36 $7052W  $FF $36 $7050W  $9A $08680AE9RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $16&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber initiation code&lt;br /&gt;
%patch $49B6 $FF $36 $7052W  $FF $36 $7050W  $9A $08680C8ARL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70D4W  $0001W&lt;br /&gt;
&lt;br /&gt;
#BLANK (All initiation codes jump to this)&lt;br /&gt;
%patch $49CC $8B $1E $3E $70 $83 $7F $02 $02 $74 $05 $C7 $47 $02 $0000W  $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type]] and &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly.&lt;br /&gt;
&lt;br /&gt;
Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything. However it is often used even when this is not the case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen spawn code&lt;br /&gt;
%patch $69A0 $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $83 $3E {$70EEW}  [$00]&lt;br /&gt;
             {$75} $11 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3&lt;br /&gt;
             $E0 $EB $0D $8B $1E $34 $70 $A1 $70EEW  $89 $47 $0A $A1 $70F0W &lt;br /&gt;
             $89 $47 $0C $8B $1E $34 $70 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0001W]&lt;br /&gt;
                 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $C7 $47 $3E [$0006W]&lt;br /&gt;
             $C7 $47 $40 [$0003W]  $C7 $47 $20 [$00D7W]  $B8 [$0D3AW]  $50 $FF $36&lt;br /&gt;
             $34 $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen spawn code&lt;br /&gt;
%patch $6B7F $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]&lt;br /&gt;
             $C7 $47 $06 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0ED8W]  $50 $FF $36 $34 $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door spawn code&lt;br /&gt;
%patch $7F73 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0003W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$FFFFW]  $C7 $47 $06 [$0000W]  $B8 [$1732W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $80F3 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $47 $06 [$0000W]  $C7 $07 [$0004W]  $8B $46&lt;br /&gt;
             $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $83 $FE [$09] {$75} $05 $81 {$0C6FW}  [$0080W]  $8B $1E $3E $70 $C7 $47&lt;br /&gt;
             $10 [$FFFFW]  $89 $77 $3E $8B $DE $D1 $E3 $8B $87 [$19A8W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $20 $89 $47 $40 $83 $FE [$07] {$74} $07 $8B $47 $40&lt;br /&gt;
             $40 $40 $EB $0A $8B $1E $3E $70 $8B $47 $40 $05 [$0004W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $42 $B8 [$196CW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Broccolash spawn code&lt;br /&gt;
%patch $8196 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$19C0W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Tomatooth spawn code&lt;br /&gt;
%patch $825A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0006W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$1B46W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier spawn code&lt;br /&gt;
%patch $83DD $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0007W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1B82W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Asparagusto spawn code&lt;br /&gt;
%patch $84E6 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0009W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $B8 [$1C18W]  $50&lt;br /&gt;
             $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sour Grape spawn code&lt;br /&gt;
%patch $8524 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000AW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $B8 [$1C90W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4&lt;br /&gt;
             $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper spawn code&lt;br /&gt;
%patch $8686 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000BW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1D08W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Minecart spawn code&lt;br /&gt;
%patch $8780 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000CW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FFD0W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $C7 $47 $02 [$0002W]  $B8 [$1DDAW]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Frenchy spawn code&lt;br /&gt;
%patch $8861 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000DW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1E16W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Melon spawn code&lt;br /&gt;
%patch $89DE $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $07 [$000EW] $8B $46 $06 $B1 $08 $D3 $E0&lt;br /&gt;
             $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $0B $F6 $74 $07 $C7&lt;br /&gt;
             $47 $0E [$0001W]  $EB $09 $8B $1E $3E $70 $C7 $47 $0E [$FFFFW]  $83&lt;br /&gt;
             $FE [$02] {$7D} $05 $B8 [$1F9CW]  $EB $03 $B8 [$1FF6W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $9A $16C40026RL     $D1 $F8&lt;br /&gt;
             $8B $1E $3E $70 $89 $47 $1A $89 $77 $3E $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Squasher spawn code&lt;br /&gt;
%patch $8E3F $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0013W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$20C8W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Apel spawning code&lt;br /&gt;
%patch $8F48 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0014W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$215EW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Brain spawn code&lt;br /&gt;
%patch $9169 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0016W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $B8 [$22A8W]  $50 $FF $36 $3E $70 $9A&lt;br /&gt;
             $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Pod spawn code&lt;br /&gt;
%patch $91E7 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0015W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$2320W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber spawn code&lt;br /&gt;
%patch $930A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0017W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FA80W]  $89 $47 $0C $C7 $47 $0E [$FFFFW] $B8&lt;br /&gt;
             [$23D4W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $8B&lt;br /&gt;
             $1E $3E $70 $C7 $47 $44 [$000CW]  $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 4 =&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
The initiation pointer list pointers are short and require another value to be added to them to give the location to which they refer. (Thus in Keen 4 a value of $0064 actually points to code at $E8F0 + $0064 = $E954.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E8F0 + $0595 = $EE85)&lt;br /&gt;
%patch $E952 $0595W&lt;br /&gt;
&lt;br /&gt;
#Length of list (88 items)&lt;br /&gt;
%patch $E947 $57&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is E8F0)&lt;br /&gt;
%patch $EE85 [$0064W] #Right Facing Keen (At $E954)&lt;br /&gt;
%patch $EE87 [$0090W] #Left Facing Keen (At $E980)&lt;br /&gt;
%patch $EE89 [$00BCW] #Map Keen (At $E9AC)&lt;br /&gt;
%patch $EE8B [$00E4W] #Council Member (At $E9D4)&lt;br /&gt;
%patch $EE8D [$010DW] #Easy Berkeloid (At $E9FD)&lt;br /&gt;
%patch $EE8F [$0122W] #Lindsey (At $EA12)&lt;br /&gt;
%patch $EE91 [$014BW] #Easy Wormouth (At $EA3B)&lt;br /&gt;
%patch $EE93 [$0174W] #Easy Skypest (At $EA64)&lt;br /&gt;
%patch $EE95 [$0189W] #Cloud (At $EA79)&lt;br /&gt;
%patch $EE97 [$019EW] #Foot (At $EA8E)&lt;br /&gt;
%patch $EE99 [$01CDW] #Inchworm (At $EABD)&lt;br /&gt;
%patch $EE9B [$01FCW] #Bounder (At $EAEC)&lt;br /&gt;
%patch $EE9D [$0211W] #Egg (At $EB01)&lt;br /&gt;
%patch $EE9F [$0240W] #Easy Lick (At $EB30)&lt;br /&gt;
%patch $EEA1 [$0269W] #Easy Dopefish (At $EB59)&lt;br /&gt;
%patch $EEA3 [$027EW] #Schoolfish (At $EB6E)&lt;br /&gt;
%patch $EEA5 [$02A7W] #Easy Sprite (At $EB97)&lt;br /&gt;
%patch $EEA7 [$02BCW] #Smirky (At $EBAC)&lt;br /&gt;
%patch $EEA9 [$02D1W] #Mimrock (At $EBC1)&lt;br /&gt;
%patch $EEAB [$02FAW] #Easy Arachnut (At $EBEA)&lt;br /&gt;
%patch $EEAD [$030FW] #Mushroom (At $EBFF)&lt;br /&gt;
%patch $EEAF [$0338W] #Easy Slug (At $EC28)&lt;br /&gt;
%patch $EEB1 [$029DW] #Medium Sprite (At $EB8D)&lt;br /&gt;
%patch $EEB3 [$0293W] #Hard Sprite (At $EB83)&lt;br /&gt;
%patch $EEB5 [$034DW] #Horizontal Scrollbar (At $EC3D)&lt;br /&gt;
%patch $EEB7 [$0360W] #Vertical Scrollbar (At $EC50)&lt;br /&gt;
%patch $EEB9 [$0372W] #Up Platform (At $EC62)&lt;br /&gt;
%patch $EEBB [$0372W] #Right Platform (At $EC62)&lt;br /&gt;
%patch $EEBD [$0372W] #Down Platform (At $EC62)&lt;br /&gt;
%patch $EEBF [$0372W] #Left Platform (At $EC62)&lt;br /&gt;
%patch $EEC1 [$050DW] #B Block (At $EDFD)&lt;br /&gt;
%patch $EEC3 [$038EW] #Dropping Platform (At $EC7E)&lt;br /&gt;
%patch $EEC5 [$03A3W] #Miragia (At $EC93)&lt;br /&gt;
%patch $EEC7 [$03B2W] #IF Ammo (At $ECA2)&lt;br /&gt;
%patch $EEC9 [$03DEW] #Wetsuit (At $ECCE)&lt;br /&gt;
%patch $EECB [$050DW] #&#039;I Keen&#039; (At $EDFD)&lt;br /&gt;
%patch $EECD [$050DW] #&#039;Mom&#039; (At $EDFD)&lt;br /&gt;
%patch $EECF [$050DW] #&#039;Dad&#039; (At $EDFD)&lt;br /&gt;
%patch $EED1 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED3 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED5 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED7 [$03FBW] #Swimming Keen (At $ECEB)&lt;br /&gt;
%patch $EED9 [$032EW] #Medium Slug (At $EC1E)&lt;br /&gt;
%patch $EEDB [$0324W] #Hard Slug (At $EC14)&lt;br /&gt;
%patch $EEDD [$016AW] #Medium Skypest (At $EA5A)&lt;br /&gt;
%patch $EEDF [$0160W] #Hard Skypest (At $EA50)&lt;br /&gt;
%patch $EEE1 [$0236W] #Medium Lick (At $EB26)&lt;br /&gt;
%patch $EEE3 [$022CW] #Hard Lick (At $EB1C)&lt;br /&gt;
%patch $EEE5 [$0103W] #Medium Berkeloid (At $E9F3)&lt;br /&gt;
%patch $EEE7 [$00F9W] #Hard Berkeloid (At $E9E9)&lt;br /&gt;
%patch $EEE9 [$0141W] #Medium Wormouth (At $EA31)&lt;br /&gt;
%patch $EEEB [$0137W] #Hard Wormouth (At $EA27)&lt;br /&gt;
%patch $EEED [$0489W] #Easy Up Dart (At $ED79)&lt;br /&gt;
%patch $EEEF [$0489W] #Easy Right Dart (At $ED79)&lt;br /&gt;
%patch $EEF1 [$0489W] #Easy Down Dart (At $ED79)&lt;br /&gt;
%patch $EEF3 [$0489W] #Easy Left Dart (At $ED79)&lt;br /&gt;
%patch $EEF5 [$04A4W] #Red Gem (At $ED94)&lt;br /&gt;
%patch $EEF7 [$04A4W] #Yellow Gem (At $ED94)&lt;br /&gt;
%patch $EEF9 [$04A4W] #Blue Gem (At $ED94)&lt;br /&gt;
%patch $EEFB [$04A4W] #Green Gem (At $ED94)&lt;br /&gt;
%patch $EEFD [$04A4W] #100 Pts (At $ED94)&lt;br /&gt;
%patch $EEFF [$04A4W] #200 pts (At $ED94)&lt;br /&gt;
%patch $EF01 [$04A4W] #500 Pts (At $ED94)&lt;br /&gt;
%patch $EF03 [$04A4W] #1000 Pts (At $ED94)&lt;br /&gt;
%patch $EF05 [$04A4W] #2000 Pts (At $ED94)&lt;br /&gt;
%patch $EF07 [$04A4W] #5000 Pts (At $ED94)&lt;br /&gt;
%patch $EF09 [$04A4W] #1UP (At $ED94)&lt;br /&gt;
%patch $EF0B [$04A4W] #Raygun (At $ED94)&lt;br /&gt;
%patch $EF0D [$04CAW] #Up Mine (At $EDBA)&lt;br /&gt;
%patch $EF0F [$04CAW] #Right Mine (At $EDBA)&lt;br /&gt;
%patch $EF11 [$04CAW] #Down Mine (At $EDBA)&lt;br /&gt;
%patch $EF13 [$04CAW] #Left Mine (At $EDBA)&lt;br /&gt;
%patch $EF15 [$02F0W] #Medium Arachnut (At $EBE0)&lt;br /&gt;
%patch $EF17 [$02E6W] #Hard Arachnut (At $EBD6)&lt;br /&gt;
%patch $EF19 [$04E5W] #Mooning Keen (At $EDD5)&lt;br /&gt;
%patch $EF1B [$04FBW] #Easy Bird(At $EDEB)&lt;br /&gt;
%patch $EF1D [$04F4W] #Medium Bird (At $EDE4)&lt;br /&gt;
%patch $EF1F [$04EDW] #Hard Bird (At $EDDD)&lt;br /&gt;
%patch $EF21 [$0463W] #Medium Up Dart (At $ED53)&lt;br /&gt;
%patch $EF23 [$0463W] #Medium Right Dart (At $ED53)&lt;br /&gt;
%patch $EF25 [$0463W] #Medium Down Dart (At $ED53)&lt;br /&gt;
%patch $EF27 [$0463W] #Medium Left Dart (At $ED53)&lt;br /&gt;
%patch $EF29 [$043DW] #Hard Up Dart (At $ED2D)&lt;br /&gt;
%patch $EF2B [$043DW] #Hard Right Dart (At $ED2D)&lt;br /&gt;
%patch $EF2D [$043DW] #Hard Down Dart (At $ED2D)&lt;br /&gt;
%patch $EF2F [$043DW] #Hard Left dart (At $ED2D)&lt;br /&gt;
%patch $EF31 [$025FW] #Medium Dopefish (At $EB4F)&lt;br /&gt;
%patch $EF33 [$0255W] #Hard Dopefish (At $EB45)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $7A6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CBxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Council Member&#039;s cache is $5D, the Bird&#039;s is $5F (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the Egg sets two cache values, one for itself and one for the Bird. Several sprites set no cache, including the Wetsuit, which uses a hardcoded value for the (Single frame) it caches. Other sprites cache individual animations as well as their cache, or even several animations in addition to their cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0B80000ERL and $0D8F0003RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right facing Keen&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is +1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $047DW		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Left facing Keen&lt;br /&gt;
%patch $E980 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is -1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $0451W		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $E9AC $FF $76 $FC $57 $9A {$0D8F050ARL}      $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB4FW  $0001W  $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
              $26 $08 $16 [$00FDW]  $E9 $0429W					#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Council Member&lt;br /&gt;
%patch $E9D4 $FF $76 $FC $57 $9A {$0FA80269RL}     $83 $C4 $04 $C7 $06 $CB5DW&lt;br /&gt;
             $0001W  $E9 $0414W&lt;br /&gt;
&lt;br /&gt;
#Berkeloid&lt;br /&gt;
%patch $E9E9 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $040AW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0400W  $FF $76 $FC $57 $9A {$1080039BRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB75W  $0001W  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Lindsey&lt;br /&gt;
%patch $EA12 $FF $76 $FC $57 $9A {$11A20DB5RL}     $83 $C4 $04 $C7 $06 $CB57W&lt;br /&gt;
             $0001W  $E9 $03D6W&lt;br /&gt;
&lt;br /&gt;
#Wormouth&lt;br /&gt;
%patch $EA27 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03CCW  $83 $3E [$7A6CW]  {$02}&lt;br /&gt;
             {$7D} $03 $E9 $03C2W  $FF $76 $FC $57 $9A {$10800006RL}     $83 $C4&lt;br /&gt;
             $04 $C7 $06 $CB6BW  $0001W  $E9 $03ADW&lt;br /&gt;
&lt;br /&gt;
#Skypest&lt;br /&gt;
%patch $EA50 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03A3W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0399W  $FF $76 $FC $57 $9A {$0FA80B67RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB69W  $0001W  $E9 $0384W&lt;br /&gt;
#Cloud&lt;br /&gt;
%patch $EA79 $FF $76 $FC $57 $9A {$108001C2RL}     $83 $C4 $04 $C7 $06 $CB73W&lt;br /&gt;
             $0001W  $E9 $036FW&lt;br /&gt;
&lt;br /&gt;
#Foot&lt;br /&gt;
%patch $EA8E $FF $76 $FC $57 $9A {$1080072CRL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0340W      #End&lt;br /&gt;
&lt;br /&gt;
#Inchworm&lt;br /&gt;
%patch $EABD $FF $76 $FC $57 $9A {$108006B2RL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0311W      #End&lt;br /&gt;
&lt;br /&gt;
#Bounder&lt;br /&gt;
%patch $EAEC $FF $76 $FC $57 $9A {$108008EARL}     $83 $C4 $04 $C7 $06 $CB71W&lt;br /&gt;
             $0001W  $E9 $02FCW&lt;br /&gt;
&lt;br /&gt;
#Egg&lt;br /&gt;
%patch $EB01 $FF $76 $FC $57 $9A {$0FA8055DRL}     $83 $C4 $04 $C7 $06 $CB5FW&lt;br /&gt;
             $0001W  $C7 $06 $CB83W  $0001W  $E9 $02E1W&lt;br /&gt;
&lt;br /&gt;
#Lick&lt;br /&gt;
%patch $EB1C $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02D7W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $02CDW  $FF $76 $FC $57 $9A {$10800AC8RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB6DW  $0001W  $E9 $02B8W&lt;br /&gt;
&lt;br /&gt;
#Dopefish&lt;br /&gt;
%patch $EB45 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02AEW  $83&lt;br /&gt;
             $3E [$7A6CW]  {$02 $7D} $03 $E9 $02A4W  $FF $76 $FC $57 $9A {$11A20690RL}&lt;br /&gt;
                     $83 $C4 $04 $C7 $06 $CB63W  $0001W  $E9 $028FW&lt;br /&gt;
&lt;br /&gt;
#Schoolfish&lt;br /&gt;
%patch $EB6E $FF $76 $FC $57 $9A {$11A20AA7RL}     $83 $C4 $04 $C7 $06 $CB65W&lt;br /&gt;
             $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Sprite&lt;br /&gt;
%patch $EB83 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $FF $76 $FC $57 $9A {$11A20B5FRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB7DW  $0001W  $E9 $0251W&lt;br /&gt;
&lt;br /&gt;
#Smirky&lt;br /&gt;
%patch $EBAC $FF $76 $FC $57 $9A {$11A2000ERL}     $83 $C4 $04 $C7 $06 $CB5BW &lt;br /&gt;
             $0001W  $E9 $023CW&lt;br /&gt;
&lt;br /&gt;
#Mimrock&lt;br /&gt;
%patch $EBC1 $FF $76 $FC $57 $9A {$11A20447RL}     $83 $C4 $04 $C7 $06 $CB61W&lt;br /&gt;
             $0001W  $E9 $0227W&lt;br /&gt;
&lt;br /&gt;
#Arachnut&lt;br /&gt;
%patch $EBD6 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $021DW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0213W  $FF $76 $FC $57 $9A {$0FA80A8ERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB67W  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom&lt;br /&gt;
%patch $EBFF $FF $76 $FC $57 $9A {$0FA80445RL}     $83 $C4 $04 $C7 $06 $CB53W&lt;br /&gt;
             $0001W  $E9 $01E9W&lt;br /&gt;
&lt;br /&gt;
#Poison Slugs&lt;br /&gt;
%patch $EC14 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $01DFW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01D5W  $FF $76 $FC $57 $9A {$0FA802FERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB51W  $0001W  $E9 $01C0W&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical scroll bars&lt;br /&gt;
%patch $EC3D $B8 $0001W  $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 $C4 $06 #Horizontal bars = 1&lt;br /&gt;
             $E9 $01ADW  $33 $C0 $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 #Vertical bars = 0&lt;br /&gt;
             $C4 $06 $E9 $019BW&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms&lt;br /&gt;
%patch $EC62 $8B $46 $F8 $05 $FFE5W  $50 $FF $76 $FC $57 $9A {$10800CABRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB6FW  $0001W  $E9 $017FW&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $EC7E $FF $76 $FC $57 $9A {$108010FCRL}     $83 $C4 $04 $C7 $06 $CB6FW&lt;br /&gt;
             $0001W  $E9 $016AW&lt;br /&gt;
&lt;br /&gt;
#Miragia&lt;br /&gt;
%patch $EC93 $FF $76 $FC $57 $9A {$0FA80000RL}     $83 $C4 $04 $E9 $015BW&lt;br /&gt;
&lt;br /&gt;
#IF Ammo&lt;br /&gt;
%patch $ECA2 $83 $3E [$7A58W]  [$05] {$7C} $03 $E9 $0151W  $B8 [$000BW]  $50 $FF $76 #Here check Keen&#039;s ammo &amp;lt; 5, ammo is 12th item kind&lt;br /&gt;
             $FC $57 $9A {$0FA801A3RL}     $83 $C4 $06 $8B $1E [$19D2W]  $D1 $E3&lt;br /&gt;
             $C7 $87 $CB3BW  $0001W  $E9 $0132W  $E9 $012FW&lt;br /&gt;
&lt;br /&gt;
#Wetsuit - Note single frame is cached&lt;br /&gt;
%patch $ECCE $FF $76 $FC $57 $9A {$11A20FD1RL}     $83 $C4 $04 $B8 $2A3ARW $8A&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $16 [$01AEW]  $E9 $0112W&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen&lt;br /&gt;
%patch $ECEB $FF $76 $FC $57 $9A $0E8F0CFERL     $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB7BW  $0001W  $BE [$00DBW]  $EB $0F $B8 $2A3ARW $8A #Cache items got - start&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $94 $00 $00 $46 $81 $FE [$00E2W]  $76 #Cache items got - end&lt;br /&gt;
             $EB $B8 $2A3ARW $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 #Cache scoreboard&lt;br /&gt;
             $00D0W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - hard&lt;br /&gt;
%patch $ED2D $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00C6W  $8B $46 $F8 $05 $FFADW&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7&lt;br /&gt;
             $06 $CB79W  $0001W  $E9 $00AAW&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - medium&lt;br /&gt;
%patch $ED53 $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00A0W  $8B $46 $F8 $05 $FFB1W&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7 $06 $CB79W&lt;br /&gt;
                 $0001W  $E9 $0084W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - easy&lt;br /&gt;
%patch $ED79 $8B $46 $F8 $05 $FFCBW  $50 $FF $76 $FC $57 $9A {$11A20E3BRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB79W  $0001W  $EB $69&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $ED94 $8B $46 $F8 $05 [$FFC7W]  $50 $FF $76 $FC $57 $9A {$0FA801A3RL}&lt;br /&gt;
             $83 $C4 $06 $8B $5E $F8 $D1 $E3 $8B $9F [$194AW]  $D1 $E3 $C7 $87&lt;br /&gt;
             $CB3BW  $0001W  $EB $43&lt;br /&gt;
&lt;br /&gt;
#Mine&lt;br /&gt;
%patch $EDBA $8B $46 $F8 $05 [$FFBBW]  $50 $FF $76 $FC $57 $9A {$11A20CECRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB7FW  $0001W  $EB $28&lt;br /&gt;
&lt;br /&gt;
#Mooning Keen&lt;br /&gt;
%patch $EDD5 $C7 $06 $CB81W  $0001W  $EB $20&lt;br /&gt;
&lt;br /&gt;
#Blue bird&lt;br /&gt;
%patch $EDDD $83 $3E [$7A6CW]  {$03 $7C} $19 $83 $3E [$7A6CW]  {$02 $7C} $12 $FF $76&lt;br /&gt;
             $FC $57 $9A {$0FA805B9RL}     $83 $C4 $04 $C7 $06 $CB5FW  $0001W&lt;br /&gt;
&lt;br /&gt;
#B Block-type sprites&lt;br /&gt;
%patch $EDFD $47 $3B $3E $E4 $A7 $73 $03 $E9 $FB24W  $FF $46 $FC $8B $46 $FC&lt;br /&gt;
             $3B $06 $E2 $A7 $73 $03 $E9 $FB10W  $A1 $D6 $A7 $89 $46 $FE $EB&lt;br /&gt;
             $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. [[Patch:Miragia|Miragia&#039;s]] spawn code is the shortest, but will not allow a sprite to do anything except replace tiles as Miragia does. There are a number of values set.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]],  Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $B80E $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$098CW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Map Keen spawning code&lt;br /&gt;
%patch $DDFA $55 $8B $EC $83 $3E {$7A70W}  [$07] {$74} $03 $E9 $00A9W  $8B $1E $D6&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $C7 $07 [$0002W]  $A1 {$7A1AW}  $89 $47 {$0A}&lt;br /&gt;
             $A1 {$7A1CW}  $89 $47 {$0C} $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $81 $3E {$7A1AW}  [$1400W]&lt;br /&gt;
             {$73} $31 $C7 $47 $3E [$0118W]  $B8 [$1E00W]  $2B $47 $0A $BB [$0118W]&lt;br /&gt;
             $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47 $16 $B8 [$3700W]  $2B&lt;br /&gt;
             $47 $0C $BB [$0118W]  $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47&lt;br /&gt;
             $18 $EB $31 $8B $1E $A7D6W  $C7 $47 $3E [$008CW]  $B8 [$1000W]  $2B&lt;br /&gt;
             $47 $0A $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $A7D6W  $89 $47 $16&lt;br /&gt;
             $B8 [$2F00W]  $2B $47 $0C $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $D6&lt;br /&gt;
             $A7 $89 $47 $18 $B8 [$1492W]  $50 $FF $36 $D6 $A7 $9A $09DC118CRL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
                                     $8B $1E $A7D6W  $C7 $07 [$0002W]  $83 $3E&lt;br /&gt;
             {$7A1AW}  [$00] {$75} $14 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $EB $10 $8B $1E {$A7D6W}  $A1 {$7A1AW}&lt;br /&gt;
             $89 $47 {$0A} $A1 {$7A1CW}  $89 $47 {$0C} $8B $1E $A7D6W  $C7 $47 $02&lt;br /&gt;
             [$0002W]  $C7 $47 $20 [$0001W]  $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]&lt;br /&gt;
                 $C7 $47 $3E [$0006W]  $C7 $47 $40 [$0003W]  $C7 $47 $42 [$0000W]&lt;br /&gt;
             $C7 $47 $1E [$0100W]  $B8 [$14ECW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting flag spawn code&lt;br /&gt;
%patch $E2ED $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0003W]  $C7 $07 [$0022W]&lt;br /&gt;
             $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $05 [$0060W]  $89&lt;br /&gt;
             $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE20W]  $89 $47 $0C $9A $1D02002ARL&lt;br /&gt;
                     $BB [$0010W]  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $1A $B8&lt;br /&gt;
             [$15EEW]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen spawning code&lt;br /&gt;
%patch $F5EE $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $C7 $47 $06 [$0002W]  $B8 [$19ECW]  $50 $53 $9A $10B1118CRL   &lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Miragia spawning code&lt;br /&gt;
%patch $FA80  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0002W]  $8B $46 $06 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $89 $47 $0C $C7 $47 $1C [$1DFCW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $FC23 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0004W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1FA0W]  $8B $1E $D8 $A7 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1EECW]  $50 $53 $9A&lt;br /&gt;
         $09DC118CRL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Council Member spawn&lt;br /&gt;
%patch $FCE9  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$1FB8W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slug spawning code&lt;br /&gt;
%patch $FD7E  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0005W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2012W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom spawning code&lt;br /&gt;
%patch $FEC5  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$20E4W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Egg spawn code&lt;br /&gt;
%patch $FFDD $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
             [$FF8FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
             [$2120W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blue Bird spawning code&lt;br /&gt;
%patch $10039 $55 $8B $EC $B8 $01 $00 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $07 [$001BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $8B $47 $0A $8B $1E $A7D6W  $3B $47 $0A&lt;br /&gt;
              $73 $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W ] $EB $09 $8B $1E $D8&lt;br /&gt;
              $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$21B6W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Skypest spawning code&lt;br /&gt;
%patch $105E7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $10 [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $10 [$FFFFW]  $B8 [$2486W]&lt;br /&gt;
                  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Cloud spawning code&lt;br /&gt;
%patch $109C2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000DW]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$28A0W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Berkeloid spawning code&lt;br /&gt;
%patch $10B9B $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1D02002ARL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0008W]&lt;br /&gt;
                  $B8 [$2AF8W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Inchworm spawning code&lt;br /&gt;
%patch $10EB2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2E9AW]  $50 $9A $09DC118CRL&lt;br /&gt;
                          $83 $C4 $04 $9A $1D02002ARL     $BB [$0020W]  $99 $F7&lt;br /&gt;
              $FB $8B $1E $D8 $A7 $89 $47 $1A $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Foot spawning code&lt;br /&gt;
%patch $10F2C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $05 [$FFFDW]&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $B8 [$2EF4W]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
              $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bounder Spawning code&lt;br /&gt;
%patch $110EA $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000FW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $C7 $47 $10 [$0001W]  $C7 $47 $0E [$0000W]  $B8&lt;br /&gt;
              [$2F12W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Lick spawn code&lt;br /&gt;
%patch $112C8 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0012W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $9A $1D02002ARL     $BB $0040W&lt;br /&gt;
                  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $08 $B8 [$3002W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms Spawning code&lt;br /&gt;
%patch $114AB $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D3CW] #4 kinds of platform, direction list at $1153C&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB    #Up platform&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB    #Right platform&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB    #Down platform&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8    #Left platform&lt;br /&gt;
              [$316AW]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform Spawning code&lt;br /&gt;
%patch $118FC $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$3188W]  $50 $53 $9A $09DC118CRL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Smirky Spawning code&lt;br /&gt;
%patch $11A2E $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$31E2W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mimrock Spawning code&lt;br /&gt;
%patch $11E67 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF30W]  $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$343AW]&lt;br /&gt;
                  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dopefish spawn code&lt;br /&gt;
%patch $120B0 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $C7 $47 $06 [$0002W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $05 [$FD00W]  $89 $47 $0C $9A $1D02002ARL     $3D&lt;br /&gt;
              [$0080W]  $7D $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]&lt;br /&gt;
                  $B8 [$35C0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Schoolfish spawn code&lt;br /&gt;
%patch $124C7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0002W]&lt;br /&gt;
              $C7 $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10&lt;br /&gt;
              $B8 [$3764W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sprite spawn code&lt;br /&gt;
%patch $1257F $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $B8 [$0001W]  $89 $47 {$0E}&lt;br /&gt;
              $89 $47 {$10} $B8 [$37A0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Underwater Mine spawning code&lt;br /&gt;
%patch $1270C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0020W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D7EW]&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8&lt;br /&gt;
              [$3890W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Mine direction list&lt;br /&gt;
%patch $1279E [$0D2DW]] #Up&lt;br /&gt;
              [$0D3DW] #Right&lt;br /&gt;
              [$0D4DW] #Down&lt;br /&gt;
              [$0D5DW] #Left&lt;br /&gt;
&lt;br /&gt;
#Lindsey spawn code&lt;br /&gt;
%patch $127D5 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8 [$38EAW]&lt;br /&gt;
              $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter spawning code&lt;br /&gt;
%patch $1285B $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]  $8B&lt;br /&gt;
              $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $C7 $47 $06 [$0000W]  $8B $46&lt;br /&gt;
              $08 $D3 $E0 $89 $47 $0C $89 $77 $3E $8B $DE $83 $FB [$03] $77 $50&lt;br /&gt;
              $D1 $E3 $2E $FF $A7 {$0EDEW}  $8B $1E $D8 $A7 $83 {$6F $0C} [$30] $81&lt;br /&gt;
              {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017CW]  $EB $35 $8B $1E $D8 $A7 $81&lt;br /&gt;
              {$47 $0A} [$0080W]  $83 {$47 $0C} [$50] $C7 {$47 $1E} [$0180W]  $EB $21 $8B&lt;br /&gt;
              $1E $D8 $A7 $81 {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017EW]  $EB $11 $8B&lt;br /&gt;
              $1E $D8 $A7 $83 {$47 $0C} [$70] $83 {$6F $0A} [$30] $C7 {$47 $1E} [$0182W]&lt;br /&gt;
              $B8 [$3962W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter position list&lt;br /&gt;
%patch $128FE $0E82W #Up (At $128A2)&lt;br /&gt;
%patch $12900 $0E96W #Right (At $128B6)&lt;br /&gt;
%patch $12902 $0EAAW #Down (At $128CA)&lt;br /&gt;
%patch $12904 $0EBAW #Left (At $128DA)&lt;br /&gt;
&lt;br /&gt;
#Wetsuit spawn code&lt;br /&gt;
%patch $129F1 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001EW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $B8 [$3A34W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Scrollbar &#039;spawning&#039; code&lt;br /&gt;
%patch $17048 $55 $8B $EC $83 $7E $0A $00 $74 $29 $8B $1E $AC $CC $D1 $E3 $8B&lt;br /&gt;
              $46 $08 $89 $87 $9E $CC $A1 $AC $CC $FF $06 $AC $CC $3D $06 [$00]&lt;br /&gt;
              {$75} $35 $B8 [$4244W]  $50 $9A $037D022FRL     $83 $C4 $02 $5D $CB&lt;br /&gt;
              $5D $CB&lt;br /&gt;
                      $8B $1E $AA $CC $D1 $E3 $8B $46 $06 $89 $87 $92 $CC $A1&lt;br /&gt;
              $AA $CC $FF $06 $AA $CC $3D $06 [$00] {$75} $0C $B8 [$4279W]  $50 $9A&lt;br /&gt;
              $037D022FRL     $83 $C4 $02 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow more sprite kinds ==&lt;br /&gt;
&lt;br /&gt;
This patch expands the maximum number of different sprite initiations possible in Keen 4; the default patch above allows a maximum of $7F or 127 initiations, whereas this patch allows a maximum of $7FFFW, or thousands, making the number practically unlimited.&lt;br /&gt;
&lt;br /&gt;
This patch will only work as long as right-facing Keen&#039;s initiation code (Above)is not tampered with. The patch here uses the default number of sprites, 87.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Allow more than 127 sprite types in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Allow more than 127 sprite types in Keen 4&lt;br /&gt;
%patch $E945 $81 $FB [$0057W]  $76 $02 $EB $30&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E999 for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked as the last blue value. (The first two are in-level Keen&#039;s left\right facing directions.) Checking the original initiation code will give a more detailed breakdown of what is presented here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $EE87 $0069W #Left Facing Keen (At $E959)&lt;br /&gt;
%patch $EE89 $0081W #Map Keen (At $E971)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen spawns&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}&lt;br /&gt;
                     $83 $C4 $06 $C7 $06 $CB3DW  $0001W  $EB $12&lt;br /&gt;
%patch $E971 $FF $76 $FC $57 $9A {$0D8F050ARL}     $83 $C4 $04 $C7 $06 $CB4FW&lt;br /&gt;
             $0001W  $9A $0D8F0003RL     $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
             $26 $08 $16 [$00FDW]  $E9 $0464W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inchowrm-Foot method ===&lt;br /&gt;
&lt;br /&gt;
This patch collapses the [[Patch:Inchworm|Inchworm]] and [[Patch:Foot|Foot]] initiation codes and stops both caching the Treasure Eater Smoke frames. What this means is that both will take up less memory but the Inchworms cannot transform into the Foot &#039;&#039;and&#039;&#039; emit smoke. As a bonus space is created for an additional  initiation code for a totally new sprite.&lt;br /&gt;
&lt;br /&gt;
The space freed is 61 bytes ($EAAE-$EAEB). This is enough for a 3 difficulty sprite or several single difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change Inchworm pointer to new code&lt;br /&gt;
%patch $EE99 $01B3W #Inchworm (At $EAA3)&lt;br /&gt;
&lt;br /&gt;
#Foot doesn&#039;t cache smoke, Inchworm doesn&#039;t either&lt;br /&gt;
%patch $EAA0 $E9 $035AW  $FF $76 $FC $57 {$9A $108006B2RL}     $EB $E9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 5 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 5]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($ED50 + $0776 = $F4C6)&lt;br /&gt;
%patch $EE94 $0776W&lt;br /&gt;
&lt;br /&gt;
#Length of list (124 items)&lt;br /&gt;
%patch $EE89 $7C&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $ED50)&lt;br /&gt;
%patch $F4C6 [$0146W] #Keen right (At $EE96)&lt;br /&gt;
%patch $F4C8 [$0170W] #Keen left (At $EEC0)&lt;br /&gt;
%patch $F4CA [$019AW] #Map Keen (At $EEEA)&lt;br /&gt;
%patch $F4CC [$01F5W] #Easy Sparky (At $EF45)&lt;br /&gt;
%patch $F4CE [$01EBW] #Normal Sparky (At $EF3B)&lt;br /&gt;
%patch $F4D0 [$01E1W] #Hard Sparky (At $EF31)&lt;br /&gt;
%patch $F4D2 [$021CW] #Easy Mine (At $EF6C)&lt;br /&gt;
%patch $F4D4 [$0212W] #Normal Mine (At $EF62)&lt;br /&gt;
%patch $F4D6 [$0208W] #Hard Mine (At $EF58)&lt;br /&gt;
%patch $F4D8 [$0243W] #Easy up Slicestar (At $EF93)&lt;br /&gt;
%patch $F4DA [$0239W] #Normal up Slicestar (At $EF89)&lt;br /&gt;
%patch $F4DC [$022FW] #Hard up Slicestar (At $EF7F)&lt;br /&gt;
%patch $F4DE [$026DW] #Easy RoboRed (At $EFBD)&lt;br /&gt;
%patch $F4E0 [$0263W] #Normal RoboRed (At $EFB3)&lt;br /&gt;
%patch $F4E2 [$0259W] #Hard RoboRed (At $EFA9)&lt;br /&gt;
%patch $F4E4 [$0294W] #Easy Spirogrip (At $EFE4)&lt;br /&gt;
%patch $F4E6 [$028AW] #Normal Spirogrip (At $EFDA)&lt;br /&gt;
%patch $F4E8 [$0280W] #Hard Spirogrip (At $EFD0)&lt;br /&gt;
%patch $F4EA [$02BBW] #Easy bouncy Slicestar (At $F00B)&lt;br /&gt;
%patch $F4EC [$02B1W] #Normal bouncy Slicestar (At $F001)&lt;br /&gt;
%patch $F4EE [$02A7W] #Hard bouncy Slicestar (At $EFF7)&lt;br /&gt;
%patch $F4F0 [$02E2W] #Easy right Slicestar (At $F032)&lt;br /&gt;
%patch $F4F2 [$02D8W] #Normal right Slicestar (At $F028)&lt;br /&gt;
%patch $F4F4 [$02CEW] #Hard right Slicestar (At $F01E)&lt;br /&gt;
%patch $F4F6 [$02F9W] #Horizontal scrollbar (At $F049)&lt;br /&gt;
%patch $F4F8 [$01CAW] #&#039;T&#039; map Keen (At $EF1A)&lt;br /&gt;
%patch $F4FA [$030AW] #Up Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FC [$030AW] #Right Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FE [$030AW] #Down Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F500 [$030AW] #Left Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F502 [$0657W] #[B] sprite (At $F3A7)&lt;br /&gt;
%patch $F504 [$0327W] #Dropping Platform (At $F077)&lt;br /&gt;
%patch $F506 [$036AW] #Easy still Platform (At $F0BA)&lt;br /&gt;
%patch $F508 [$034DW] #Normal Still Platform (At $F09D)&lt;br /&gt;
%patch $F50A [$033AW] #Hard still Platform (At $F08A)&lt;br /&gt;
%patch $F50C [$0387W] #Up Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F50E [$0387W] #Right Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F510 [$0387W] #Down Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F512 [$0387W] #Left Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F514 [$03A4W] #Sneaky Platform (At $F0F4)&lt;br /&gt;
%patch $F516 [$03B7W] #QED\Fuse counter (At $F107)&lt;br /&gt;
%patch $F518 [$03F1W] #Easy Little Ampton  (At $F141)&lt;br /&gt;
%patch $F51A [$03E7W] #Normal Little Ampton  (At $F137)&lt;br /&gt;
%patch $F51C [$03DDW] #Hard Little Ampton  (At $F12D)&lt;br /&gt;
%patch $F51E [$0418W] #Easy laser up (At $F168)&lt;br /&gt;
%patch $F520 [$0442W] #Easy laser right (At $F192)&lt;br /&gt;
%patch $F522 [$046DW] #Easy laser left (At $F1BD)&lt;br /&gt;
%patch $F524 [$0498W] #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 [$040EW] #Normal laser up (At $F15E)&lt;br /&gt;
%patch $F528 [$0438W] #Normal laser right (At $F188)&lt;br /&gt;
%patch $F52A [$0463W] #Normal laser down (At $F1B3)&lt;br /&gt;
%patch $F52C [$048EW] #Normal laser left (At $F1DE)&lt;br /&gt;
%patch $F52E [$0404W] #Hard laser up (At $F154)&lt;br /&gt;
%patch $F530 [$042EW] #Hard laser right (At $F17E)&lt;br /&gt;
%patch $F532 [$0459W] #Hard laser down (At $F1A9)&lt;br /&gt;
%patch $F534 [$0484W] #Hard laser left (At $F1D4)&lt;br /&gt;
%patch $F536 [$04BEW] #Red gem (At $F20E)&lt;br /&gt;
%patch $F538 [$04BEW] #Yellow gem (At $F20E)&lt;br /&gt;
%patch $F53A [$04BEW] #Green gem (At $F20E)&lt;br /&gt;
%patch $F53C [$04BEW] #Blue gem (At $F20E)&lt;br /&gt;
%patch $F53E [$04BEW] #100 points (At $F20E)&lt;br /&gt;
%patch $F540 [$04BEW] #200 points (At $F20E)&lt;br /&gt;
%patch $F542 [$04BEW] #500 points (At $F20E)&lt;br /&gt;
%patch $F544 [$04BEW] #1000 points (At $F20E)&lt;br /&gt;
%patch $F546 [$04BEW] #2000 points (At $F20E)&lt;br /&gt;
%patch $F548 [$04BEW] #5000 points (At $F20E)&lt;br /&gt;
%patch $F54A [$04BEW] #1UP (At $F20E)&lt;br /&gt;
%patch $F54C [$04BEW] #Raygun (At $F20E)&lt;br /&gt;
%patch $F54E [$04AFW] #Low ammo raygun (At $F1FF)&lt;br /&gt;
%patch $F550 [$04E3W] #V card (At $F233)&lt;br /&gt;
%patch $F552 [$051CW] #Easy Volte-face (At $F26C)&lt;br /&gt;
%patch $F554 [$0512W] #Normal Volte-face (At $F262)&lt;br /&gt;
%patch $F556 [$0508W] #Hard Volte-face (At $F258)&lt;br /&gt;
%patch $F558 [$0543W] #Easy Shelley (At $F293)&lt;br /&gt;
%patch $F55A [$0539W] #Normal Shelley (At $F289)&lt;br /&gt;
%patch $F55C [$052FW] #Hard Shelley (At $F27F)&lt;br /&gt;
%patch $F55E [$056AW] #Easy Spindred (At $F2BA)&lt;br /&gt;
%patch $F560 [$0560W] #Normal Spindred (At $F2B0)&lt;br /&gt;
%patch $F562 [$0556W] #Hard Spindred (At $F2A6)&lt;br /&gt;
%patch $F564 [$057DW] #Up Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F566 [$057DW] #Right Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F568 [$057DW] #Down Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56A [$057DW] #Left Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56C [$059BW] #Up Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F56E [$059BW] #Right Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F570 [$059BW] #Down Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F572 [$059BW] #Left Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F574 [$05CDW] #Easy Shikadi Master (At $F31D)&lt;br /&gt;
%patch $F576 [$05C3W] #Normal Shikadi Master (At $F313)&lt;br /&gt;
%patch $F578 [$05B9W] #Hard Shikadi Master (At $F309)&lt;br /&gt;
%patch $F57A [$0657W] #Up Platform guide (At $F3A7)&lt;br /&gt;
%patch $F57C [$0657W] #Right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F57E [$0657W] #Down Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F580 [$0657W] #Left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F582 [$0657W] #Up-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F584 [$0657W] #Down-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F586 [$0657W] #Down-left  Platform guide (At $F3A7)&lt;br /&gt;
%patch $F588 [$0657W] #Up-left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F58A [$05EDW] #Easy Shikadi (At $F33D)&lt;br /&gt;
%patch $F58C [$05E6W] #Normal Shikadi (At $F336)&lt;br /&gt;
%patch $F58E [$05DFW] #Hard Shikadi (At $F32F)&lt;br /&gt;
%patch $F590 [$060DW] #Easy Shockshund (At $F35D)&lt;br /&gt;
%patch $F592 [$0606W] #Normal Shockshund (At $F356)&lt;br /&gt;
%patch $F594 [$05FFW] #Hard Shockshund (At $F34F)&lt;br /&gt;
%patch $F596 [$062DW] #Easy Sphereful (At $F37D)&lt;br /&gt;
%patch $F598 [$0626W] #Normal Sphereful (At $F376)&lt;br /&gt;
%patch $F59A [$061FW] #Hard Sphereful (At $F36F)&lt;br /&gt;
%patch $F59C [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F59E [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AC [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AE [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BC [$063FW] #Korath (At $F38F)&lt;br /&gt;
%patch $F5BE [$0651W] #Teleporter (At $F3A1)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to, but better structured than Keen 4. The first things to notice the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $6F6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $C2xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0AAF0000RL and $0CCB0007RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right&lt;br /&gt;
%patch $EE96 $B8 [$0001W]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04E7W&lt;br /&gt;
&lt;br /&gt;
#Keen left&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04BDW&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $EEEA $9A {$0CCB0007RL}     $C7 $06 $C27FW  $0001W  $B8 $2B7BRW $8A $16&lt;br /&gt;
             $EC $6F $8E $C0 $26 $08 $16 [$00EBW]  $83 $3E [$6F70W]  {$0D $75} $03&lt;br /&gt;
             $E9 $049AW  $57 $56 $9A {$0CCB050ERL}     $83 $C4 $04 $E9 $048DW&lt;br /&gt;
&lt;br /&gt;
#T map Keen&lt;br /&gt;
%patch $EF1A $83 $3E [$6F70W]  {$0D $74} $03 $E9 $0483W  $57 $56 $9A {$0CCB057FRL}&lt;br /&gt;
                 $83 $C4 $04 $E9 $0476W &lt;br /&gt;
&lt;br /&gt;
#Sparky&lt;br /&gt;
%patch $EF31 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $046CW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0462W  $57 $56 $9A {$11020004RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C289W  $0001W  $E9 $044FW&lt;br /&gt;
&lt;br /&gt;
#Shikadi mine&lt;br /&gt;
%patch $EF58 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0445W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $043BW  $57 $56 $9A {$11C40001RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28BW  $0001W  $E9 $0428W&lt;br /&gt;
&lt;br /&gt;
#Up Slicestar&lt;br /&gt;
%patch $EF7F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $041EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0414W  $33 $C0 $50 $57 $56 $9A {$1102070DRL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C28DW  $0001W  $E9 $03FEW&lt;br /&gt;
&lt;br /&gt;
#RoboRed&lt;br /&gt;
%patch $EFA9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03EAW  $57 $56 $9A {$11C4095CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28FW  $0001W  $E9 $03D7W  &lt;br /&gt;
&lt;br /&gt;
#Spirogrip&lt;br /&gt;
%patch $EFD0 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03CDW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03C3W  $57 $56 $9A {$11C40B61RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C291W  $0001W  $E9 $03B0W&lt;br /&gt;
&lt;br /&gt;
#Bouncy Slicestar&lt;br /&gt;
%patch $EFF7 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03A6W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $039CW  $57 $56 $9A {$110207ACRL} $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28DW  $0001W  $E9 $0389W&lt;br /&gt;
&lt;br /&gt;
#Right Slicestar&lt;br /&gt;
%patch $F01E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $037FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0375W  $B8 [$0001W]  $50 $57 $56 $9A {$1102070DRL}     $83&lt;br /&gt;
             $C4 $06 $C7 $06 $C28DW  $0001W  $E9 $035EW&lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar&lt;br /&gt;
%patch $F049 $B8 [$0001W]  $50 $57 $56 $9A {$174E0B05RL}     $83 $C4 $06 $E9 $034DW&lt;br /&gt;
&lt;br /&gt;
#Red Horizontal-Vertical Platforms&lt;br /&gt;
%patch $F05A $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                 $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $0330W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $F077 $57 $56 $9A {$0F920BC8RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $031DW&lt;br /&gt;
&lt;br /&gt;
#Still Platform -hard&lt;br /&gt;
%patch $F08A $57 $56 $9A {$0F920CECRL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $030AW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - normal&lt;br /&gt;
%patch $F09D $83 $3E [$6F6CW]  {$02 $7E} $03 $E9 $0300W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02EDW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - easy&lt;br /&gt;
%patch $F0BA $83 $3E [$6F6CW]  {$01 $7E} $03 $E9 $02E3W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02D0W&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $F0D7 $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform&lt;br /&gt;
%patch $F0F4 $57 $56 $9A {$0F9214D1RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W&lt;br /&gt;
             $E9 $02A0W&lt;br /&gt;
&lt;br /&gt;
#QED\Fuse&lt;br /&gt;
%patch $F107 $83 $3E [$6F68W]  {$0C $75} $12 $C7 $06 $6F5EW  $0004W  $57 $56 $9A&lt;br /&gt;
             {$11C41D56RL}     $83 $C4 $04 $EB $04 $FF $06 $5E $6F $C7 $06 $C2A5W&lt;br /&gt;
                 $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Little Ampton&lt;br /&gt;
%patch $F12D $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $57 $56 $9A {$11020240RL}     $83 $C4 $04 $C7 $06 $C293W&lt;br /&gt;
                 $0001W  $E9 $0253W&lt;br /&gt;
&lt;br /&gt;
#Laser up&lt;br /&gt;
%patch $F154 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0249W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
                 $03 $E9 $023FW  $33 $C0 $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $0229W&lt;br /&gt;
&lt;br /&gt;
#Laser right&lt;br /&gt;
%patch $F17E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $021FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0215W  $B8 [$0001W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Laser down&lt;br /&gt;
%patch $F1A9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01EAW  $B8 [$0002W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01D3W&lt;br /&gt;
&lt;br /&gt;
#Laser left&lt;br /&gt;
%patch $F1D4 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01C9W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01BFW  $B8 [$0003W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01A8W&lt;br /&gt;
&lt;br /&gt;
#Low ammo raygun (Uses following item initiation)&lt;br /&gt;
%patch $F1FF $83 $3E [$6F56W] {$05 $7C} $03 $E9 $019EW  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $F20E $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17CAW]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $0174W&lt;br /&gt;
&lt;br /&gt;
#V card&lt;br /&gt;
%patch $F233 $8B $46 $FA $05 [$FFC6W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17C8W]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $014FW&lt;br /&gt;
&lt;br /&gt;
#Volte Face&lt;br /&gt;
%patch $F258 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0145W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $013BW  $57 $56 $9A {$0F9211B4RL}     $83 $C4 $04 $C7 $06 $C295W&lt;br /&gt;
                 $0001W  $E9 $0128W&lt;br /&gt;
&lt;br /&gt;
#Shelley&lt;br /&gt;
%patch $F27F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $011EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0114W  $57 $56 $9A $1E $09 $02 $11 $83 $C4 $04 $C7 $06 $C29BW&lt;br /&gt;
             $0001W  $E9 $0101W&lt;br /&gt;
&lt;br /&gt;
#Spindred&lt;br /&gt;
%patch $F2A6 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $00F7W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $00EDW  $57 $56 $9A {$11C40C5DRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C299W  $0001W  $E9 $00DAW&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $F2CD $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFB0W]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $00BCW&lt;br /&gt;
&lt;br /&gt;
#Purple Horizontal-Vertical Platform&lt;br /&gt;
%patch $F2EB $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFACW]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $009EW&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master&lt;br /&gt;
%patch $F309 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0094W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $008AW  $57 $56 $9A {$11C40E47RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C281W  $0001W  $EB $78&lt;br /&gt;
&lt;br /&gt;
#Shikadi&lt;br /&gt;
%patch $F32F $83 $3E [$6F6CW]  {$03 $7C} $71 $83 $3E [$6F6CW]  {$02 $7C} $6A $57 $56&lt;br /&gt;
             $9A {$11C41287RL}     $83 $C4 $04 $C7 $06 $C283W  $0001W  $EB $58&lt;br /&gt;
&lt;br /&gt;
#Shocksund&lt;br /&gt;
%patch $F34F $83 $3E [$6F6CW]  {$03 $7C} $51 $83 $3E [$6F6CW]  {$02 $7C} $4A $57 $56&lt;br /&gt;
             $9A {$11C41617RL}     $83 $C4 $04 $C7 $06 $C285W  $0001W  $EB $38&lt;br /&gt;
&lt;br /&gt;
#Sphereful&lt;br /&gt;
%patch $F36F $83 $3E [$6F6CW]  {$03 $7C} $31 $83 $3E [$6F6CW]  {$02 $7C} $2A $57 $56&lt;br /&gt;
             $9A {$11C419D8RL}     $83 $C4 $04 $C7 $06 $C287W  $0001W  $EB $18&lt;br /&gt;
&lt;br /&gt;
#Korath&lt;br /&gt;
%patch $F38F $57 $56 $9A {$11C41C81RL}     $83 $C4 $04 $C7 $06 $C2A3W  $0001W  $EB $06&lt;br /&gt;
&lt;br /&gt;
#Teleporter&lt;br /&gt;
%patch $F3A1 $C7 $06 $C2A9W  $0001W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $AAF0 $55 $8B $EC $8B $1E $9E3EW  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0888W]  $50 $53 $9A $13B511C4RL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Demo Sign spawn code&lt;br /&gt;
%patch $CCB7 $55 $8B $EC $8B $1E $3C $9E $C7 $07 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $02 [$0002W]  $C7 $47 $06 [$0000W]  $C7 $47 $40 [$FFFFW]  $C7&lt;br /&gt;
             $47 $3E [$FFFFW]  $C7 $47 $42 [$FFFFW]  $C7 $47 $44 [$FFFFW]  $83 $3E&lt;br /&gt;
             {$9B97W}  [$00] {$74} $07 $C7 $47 $1C [$0788W]  $5D $CB&lt;br /&gt;
                                                             $83 $3E {$332CW}&lt;br /&gt;
             [$00] {$75} $12 $B8 [$133EW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
                                 $B8 [$135CW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $B8 $2B7BW  $8A $16 $EC $6F $8E $C0 $26 $08&lt;br /&gt;
             $16 [$006BW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Item spawning code (Includes V card and low ammo)&lt;br /&gt;
%patch $FD9F $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06B91DCDRL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $40 $9E $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A54W]  $8B $1E $40 $9E $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1946W]  $50 $53 $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Red\Purple Platform spawning code&lt;br /&gt;
%patch $FFDC  $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$076EW]&lt;br /&gt;
               $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $83&lt;br /&gt;
              $7E $0C $00 $74 $1B $8B $1E $40 $9E $83 $47 $0A $40 $83 $47 $0C&lt;br /&gt;
              $40 $B8 [$1B7CW]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
              $B8 [$1B5EW]  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Platform direction list&lt;br /&gt;
%patch $1008E $6FDW #Up (At $1001D)&lt;br /&gt;
%patch $10090 $70DW #Right (At $1002D)&lt;br /&gt;
%patch $10092 $71DW #Down (At $1003D)&lt;br /&gt;
%patch $10094 $72DW #Left (At $1004D)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $104E8 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 {$1BB8W}  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting platform spawn code&lt;br /&gt;
%patch $1060C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1C12W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Goplat spawning code&lt;br /&gt;
%patch $1065F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
           $06B91DCDRL     $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $83 $7E $0C $00 $74 $17 $83 $47 $0A&lt;br /&gt;
              $40 $83 $47 $0C $40 $B8 [$1C4EW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $EB $10 $B8 [$1C30W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $40 $9E $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W]  $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Volte-face spawn code&lt;br /&gt;
%patch $10AD4 $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0010W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0002W]  $8B $C7 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $06 [$0000W]  $B8 [$1CCCW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $5E $08 $D1 $E3&lt;br /&gt;
              $8B $87 $87 $BF $D1 $E8 $E0D1W  $8B $16 $53 $9E $8B $DF $D1 $E3&lt;br /&gt;
              $03 $C3 $89 $56 $FE $89 $46 $FC $C4 $5E $FC $26 $83 $7F $FE $5C&lt;br /&gt;
              $75 $05 $BE [$0001W]  $EB $36 $C4 $5E $FC $26 $83 $7F $02 $5E $75&lt;br /&gt;
              $05 $BE [$0003W]  $EB $27 $A1 $4C $9E $D1 $E0 $C4 $5E $FC $2B $D8&lt;br /&gt;
              $26 $83 $3F $5D $75 $05 $BE [$0002W]  $EB $12 $A1 $4C $9E $D1 $E0&lt;br /&gt;
              $C4 $5E $FC $03 $D8 $26 $83 $3F $5B $75 $02 $33 $F6 $8B $C6 $05&lt;br /&gt;
              [$005BW]  $C4 $5E $FC $26 $89 $07 $8B $1E $40 $9E $89 $77 $3E $C7&lt;br /&gt;
              $47 $40 [$0100W]  $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10DF1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DA4W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $10EB7 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$000FW]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$1DFEW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sparky spawn code&lt;br /&gt;
%patch $11024 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $0C $9A $1DFB0036RL     $3D $0080W  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$1F0CW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Little Ampton spawning code&lt;br /&gt;
%patch $11260 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$21DCW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical Slicestar spawning code&lt;br /&gt;
%patch $1172D $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $C7 $47 $44 [$0014W]  $8B $5E $0A $83 $FB [$03] $77 $45 $D1&lt;br /&gt;
              $E3 $2E $FF $A7 [$07A4W]  $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$FFFFW]  $EB $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $EB $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$0001W]  $EB $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $B8 [$23BCW]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slicestar direction list&lt;br /&gt;
%patch $117C4 [$0753W] #Down (At $11773)&lt;br /&gt;
%patch $117C6 [$0763W] #Right (At $11783)&lt;br /&gt;
%patch $117C8 [$0773W] #Left (At $11793)&lt;br /&gt;
%patch $117CA [$0783W] #Up (At $117A3)&lt;br /&gt;
&lt;br /&gt;
#Shelley spawn code&lt;br /&gt;
%patch $1193E $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1DFB0036RL     $3D [$0080W]  {$7D} $0B $8B $1E $40 $9E&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$2416W]  $50 $53 $9A&lt;br /&gt;
          $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mine spawning code&lt;br /&gt;
%patch $11C41 $55 $8B $EC $56 $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $40 $9E $C7 $07 [$000AW]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $C7 $47 $40 [$0100W]  $C7 $47 $42 [$00D0W]&lt;br /&gt;
              $B8 [$2644W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $1E $40&lt;br /&gt;
              $9E $C7 $47 $16 [$0100W]  $33 $F6 $EB $12 $56 $FF $36 $40 $9E $90&lt;br /&gt;
              $0E $E8 $0095W  $83 $C4 $04 $0B $C0 $75 $06 $46 $83 $FE $03 $7E&lt;br /&gt;
              $E9 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Robo Red spawning code&lt;br /&gt;
%patch $1259C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FC00W]  $89 $47 $0C&lt;br /&gt;
              $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $B8 [$2734W]&lt;br /&gt;
                  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Spirogrip spawn code&lt;br /&gt;
%patch $127A1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000DW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8 [$2824W]  $50 $53 $9A&lt;br /&gt;
              $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master Spawn code&lt;br /&gt;
%patch $12A87 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 $80 $FE $89 $47 $0C&lt;br /&gt;
              $B8 [$2AF4W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi spawn code&lt;br /&gt;
%patch $12EC7 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0014W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0004W]  $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $B8 [$2D10W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
              $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shockshund spawn code&lt;br /&gt;
%patch $13257 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0002W]  $B8 [$0001W]  $89 $47 $10 $89 $47 $0E $B8 [$2F0EW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Q.E.D. spawn code&lt;br /&gt;
%patch $13996 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0019W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $89 $77 $2C $89 $7F $2E $8B $47 $2C $40 $89 $47 $30&lt;br /&gt;
              $8B $47 $2E $40 $89 $47 $32 $8B $C6 $B1 $08 $D3 $E0 $05 [$FFF0W]&lt;br /&gt;
              $89 $47 $22 $89 $47 $0A $8B $C7 $D3 $E0 $05 [$FFF0W]  $89 $47 $24&lt;br /&gt;
              $89 $47 $0C $8B $47 $22 $05 $20 $02 $89 $47 $26 $8B $47 $24 $05&lt;br /&gt;
              $20 $02 $89 $47 $28 $B8 [$3186W]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused Platform cache ==&lt;br /&gt;
&lt;br /&gt;
There is one unused [[Patch:Sprite cache|sprite cache]] in Keen 5. It is a single animation in size and  contains a small red platform. This is useful since it is not hard to expand it or use it for a totally unique sprite. It&#039;s call is &amp;lt;tt&amp;gt;$C29F&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Cache&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $31A4C $01BFW #Small red platform cache start&lt;br /&gt;
%patch $31AA0 $01BFW #Cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left and right Keen initiation codes so they use the minimum amount of space. (This is possible because they both require similar code.) It frees space at $EEC5 for a 3-difficulty sprite or several non-difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
The patch is quite basic; in effect the Keen left code only sets Keen&#039;s direction before jumping to the Keen right code, leaving all its space free.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen left code compacted&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $EB $D4&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 5)|Platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F05A-$0FA8 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move initiation pointers (Free $4E at $F05A)&lt;br /&gt;
%patch $F4FA $0359W #Up Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FC $0359W #Right Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FE $0359W #Down Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F500 $0359W #Left Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F504 $036CW #Dropping Platform (At $F0BC)&lt;br /&gt;
%patch $F506 $037EW #Easy still Platform (At $F0CE)&lt;br /&gt;
%patch $F508 $0375W #Normal Still Platform (At $F0C5)&lt;br /&gt;
%patch $F50A $0385W #Hard still Platform (At $F0D5)&lt;br /&gt;
%patch $F50C $037EW #Up Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F50E $038EW #Right Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F510 $038EW #Down Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F512 $038EW #Left Red Goplat (At $F0DE)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F0A9 $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL} $EB $33&lt;br /&gt;
%patch $F0BC $57 $56 $9A {$0F920BC8RL} $EB $36&lt;br /&gt;
%patch $F0C5 $83 $3E {$6F6CW}  [$02] {$7F} $38 $EB $07&lt;br /&gt;
%patch $F0CE $83 $3E {$6F6CW}  [$01] {$7F} $2F $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
             $EB $1D&lt;br /&gt;
%patch $F0DE $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Enemy Shooter initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Enemy shooter (Keen 5)|Enemy Shooter]] initiation codes (They all cache the same graphics and use similar code.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F154-$F1A1 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move pointers (Frees $F154-$F1A1)&lt;br /&gt;
%patch $F51E $0460W #Easy laser up (At $F1B0)&lt;br /&gt;
%patch $F520 $0472W #Easy laser right (At $F1C2)&lt;br /&gt;
%patch $F522 $0485W #Easy laser left (At $F1D5)&lt;br /&gt;
%patch $F524 $0498W #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 $0459W #Normal laser up (At $F1A9)&lt;br /&gt;
%patch $F528 $046BW #Normal laser right (At $F1BB)&lt;br /&gt;
%patch $F52A $047EW #Normal laser down (At $F1CE)&lt;br /&gt;
%patch $F52C $0491W #Normal laser left (At $F1E1)&lt;br /&gt;
%patch $F52E $0452W #Hard laser up (At $F1A2)&lt;br /&gt;
%patch $F530 $0464W #Hard laser right (At $F1B4)&lt;br /&gt;
%patch $F532 $0477W #Hard laser down (At $F1C7)&lt;br /&gt;
%patch $F534 $048AW #Hard laser left (At $F1DA)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F1A2 $83 $3E [$6F6CW]  {$03 $7C} $53 $83 $3E [$6F6CW]  {$02 $7C} $4C&lt;br /&gt;
             [$33 $C0] $EB $37&lt;br /&gt;
%patch $F1B4 $83 $3E [$6F6CW]  {$03 $7C} $41 $83 $3E [$6F6CW]  {$02 $7C} $3A $B8&lt;br /&gt;
             [$0001W]  $EB $24&lt;br /&gt;
%patch $F1C7 $83 $3E [$6F6CW]  {$03 $7C} $2E $83 $3E [$6F6CW]  {$02 $7C} $27 $B8&lt;br /&gt;
             [$0002W]  $EB $11&lt;br /&gt;
%patch $F1DA $83 $3E [$6F6CW]  {$03 $7C} $1B $83 $3E [$6F6CW]  {$02 $7C} $14 $B8 [$0003W]&lt;br /&gt;
                 $50 $57 $56 $9A $0F921597RL     $83 $C4 $06 $C7 $06 $C27DW&lt;br /&gt;
             $0001W  $E9 $01A8W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 6 =&lt;br /&gt;
&lt;br /&gt;
This section is partly incomplete.&lt;br /&gt;
&lt;br /&gt;
[[Keen 6]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E420 + $0532 = $E952)&lt;br /&gt;
%patch $E486 $0532W&lt;br /&gt;
&lt;br /&gt;
#Length of list (105 items)&lt;br /&gt;
%patch $E47B $69&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $E420)&lt;br /&gt;
%patch $E952 [$0068W] #Keen right (At $E488)&lt;br /&gt;
%patch $E954 [$0092W] #Keen left (At $E4B2)&lt;br /&gt;
%patch $E956 [$00BCW] #Map Keen (At $E4DC)&lt;br /&gt;
%patch $E958 [$00F6W] #Easy Bloog (At $E516)&lt;br /&gt;
%patch $E95A [$00ECW] #Medium Bloog (At $E50C)&lt;br /&gt;
%patch $E95C [$00E2W] #Hard Bloog (At $E502)&lt;br /&gt;
%patch $E95E [$0109W] #Red Blooglet (At $E529)&lt;br /&gt;
%patch $E960 [$0109W] #Yellow Blooglet (At $E529)&lt;br /&gt;
%patch $E962 [$0109W] #Blue Blooglet (At $E529)&lt;br /&gt;
%patch $E964 [$0109W] #Green Blooglet (At $E529)&lt;br /&gt;
%patch $E966 [$0109W] #Red keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E968 [$0109W] #Yellow keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96A [$0109W] #Green keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96C [$0109W] #Blue keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96E [$0145W] #Bottom of cliff (At $E565)&lt;br /&gt;
%patch $E970 [$0145W] #Top of cliff (At $E565)&lt;br /&gt;
%patch $E972 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E974 [$016DW] #Easy Fleex (At $E58D)&lt;br /&gt;
%patch $E976 [$0163W] #Medium Fleex (At $E583)&lt;br /&gt;
%patch $E978 [$0159W] #Hard Fleex (At $E579)&lt;br /&gt;
%patch $E97A [$0180W] #Easy UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97C [$0180W] #Medium UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97E [$0180W] #Hard UNUSED (At $E5A0)&lt;br /&gt;
%patch $E980 [$0180W] #Molly (At $E5A0)&lt;br /&gt;
%patch $E982 [$0193W] #Horizontal scrollbar (At $E5B3)&lt;br /&gt;
%patch $E984 [$01A4W] #Vertical scrollbar (At $E5C4)&lt;br /&gt;
%patch $E986 [$01B4W] #Platform up (At $E5D4)&lt;br /&gt;
%patch $E988 [$01B4W] #Platform right (At $E5D4)&lt;br /&gt;
%patch $E98A [$01B4W] #Platform down (At $E5D4)&lt;br /&gt;
%patch $E98C [$01B4W] #Platform left (At $E5D4)&lt;br /&gt;
%patch $E98E [$04A7W] #B sprite (At $E8C7)&lt;br /&gt;
%patch $E990 [$01CEW] #Falling Platform (At $E5EE)&lt;br /&gt;
%patch $E992 [$0211W] #Only-Easy sitting Platform (At $E631)&lt;br /&gt;
%patch $E994 [$01F4W] #Easy\Medium sitting Platform (At $E614)&lt;br /&gt;
%patch $E996 [$01E1W] #Easy\Medium\Hard sitting Platform (At $E601)&lt;br /&gt;
%patch $E998 [$022EW] #Path Platform up (At $E64E)&lt;br /&gt;
%patch $E99A [$022EW] #Path Platform right (At $E64E)&lt;br /&gt;
%patch $E99C [$022EW] #Path Platform down (At $E64E)&lt;br /&gt;
%patch $E99E [$022EW] #Path Platform left (At $E64E)&lt;br /&gt;
%patch $E9A0 [$024EW] #Sneaky Platform (At $E66E)&lt;br /&gt;
%patch $E9A2 [$0275W] #Easy Bobba (At $E695)&lt;br /&gt;
%patch $E9A4 [$026BW] #Medium Bobba (At $E68B)&lt;br /&gt;
%patch $E9A6 [$0261W] #Hard Bobba (At $E681)&lt;br /&gt;
%patch $E9A8 [$0288W] #Satellite dropoff up (At $E6A8)&lt;br /&gt;
%patch $E9AA [$0288W] #Satellite dropoff right (At $E6A8)&lt;br /&gt;
%patch $E9AC [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E9AE [$02B0W] #Easy Nospike (At $E6D0)&lt;br /&gt;
%patch $E9B0 [$02A6W] #Medium Nospike (At $E6C6)&lt;br /&gt;
%patch $E9B2 [$029CW] #Hard Nospike (At $E6BC)&lt;br /&gt;
%patch $E9B4 [$02D7W] #Easy Gik (At $E6F7)&lt;br /&gt;
%patch $E9B6 [$02CDW] #Medium Gik (At $E6ED)&lt;br /&gt;
%patch $E9B8 [$02C3W] #Hard Gik (At $E6E3)&lt;br /&gt;
%patch $E9BA [$02EAW] #Laser up (At $E70A)&lt;br /&gt;
%patch $E9BC [$02EAW] #Laser right (At $E70A)&lt;br /&gt;
%patch $E9BE [$02EAW] #Laser down (At $E70A)&lt;br /&gt;
%patch $E9C0 [$02EAW] #Laser left (At $E70A)&lt;br /&gt;
%patch $E9C2 [$0313W] #Red gem (At $E733)&lt;br /&gt;
%patch $E9C4 [$0313W] #Yellow gem (At $E733)&lt;br /&gt;
%patch $E9C6 [$0313W] #Green gem (At $E733)&lt;br /&gt;
%patch $E9C8 [$0313W] #Blue gem (At $E733)&lt;br /&gt;
%patch $E9CA [$0313W] #100 points (At $E733)&lt;br /&gt;
%patch $E9CC [$0313W] #200 points (At $E733)&lt;br /&gt;
%patch $E9CE [$0313W] #500 points (At $E733)&lt;br /&gt;
%patch $E9D0 [$0313W] #1000 points (At $E733)&lt;br /&gt;
%patch $E9D2 [$0313W] #2000 points (At $E733)&lt;br /&gt;
%patch $E9D4 [$0313W] #5000 points (At $E733)&lt;br /&gt;
%patch $E9D6 [$0313W] #1UP (At $E733)&lt;br /&gt;
%patch $E9D8 [$0313W] #Ammo (At $E733)&lt;br /&gt;
%patch $E9DA [$0304W] #IF ammo (At $E724)&lt;br /&gt;
%patch $E9DC [$034CW] #Easy Orbatrix (At $E76C)&lt;br /&gt;
%patch $E9DE [$0342W] #Medium Orbatrix (At $E762)&lt;br /&gt;
%patch $E9E0 [$0338W] #Hard Orbatrix (At $E758)&lt;br /&gt;
%patch $E9E2 [$0373W] #Easy Bipship (At $E793)&lt;br /&gt;
%patch $E9E4 [$0369W] #Medium Bipship (At $E789)&lt;br /&gt;
%patch $E9E6 [$035FW] #Hard Bipship (At $E77F)&lt;br /&gt;
%patch $E9E8 [$03A0W] #Easy Flect (At $E7C0)&lt;br /&gt;
%patch $E9EA [$0396W] #Medium Flect (At $E7B6)&lt;br /&gt;
%patch $E9EC [$038CW] #Hard Flect (At $E7AC)&lt;br /&gt;
%patch $E9EE [$03C7W] #Easy Blorb (At $E7E7)&lt;br /&gt;
%patch $E9F0 [$03BDW] #Medium Blorb (At $E7DD)&lt;br /&gt;
%patch $E9F2 [$03B3W] #Hard Blorb (At $E7D3)&lt;br /&gt;
%patch $E9F4 [$03EEW] #Easy Ceilick (At $E80E)&lt;br /&gt;
%patch $E9F6 [$03E4W] #Medium Ceilick (At $E804)&lt;br /&gt;
%patch $E9F8 [$03DAW] #Hard Ceilick (At $E7FA)&lt;br /&gt;
%patch $E9FA [$0415W] #Easy Blooguard (At $E835)&lt;br /&gt;
%patch $E9FC [$040BW] #Medium Blooguard (At $E82B)&lt;br /&gt;
%patch $E9FE [$0401W] #Hard Blooguard (At $E821)&lt;br /&gt;
%patch $EA00 [$0428W] #Grabbiter (At $E848)&lt;br /&gt;
%patch $EA02 [$0434W] #Satellite (At $E854)&lt;br /&gt;
%patch $EA04 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $EA06 [$04A7W] #Platform path up (At $E8C7)&lt;br /&gt;
%patch $EA08 [$04A7W] #Platform path right (At $E8C7)&lt;br /&gt;
%patch $EA0A [$04A7W] #Platform path down (At $E8C7)&lt;br /&gt;
%patch $EA0C [$04A7W] #Platform path left (At $E8C7)&lt;br /&gt;
%patch $EA0E [$04A7W] #Platform path up-right (At $E8C7)&lt;br /&gt;
%patch $EA10 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA12 [$04A7W] #Platform path down-left (At $E8C7)&lt;br /&gt;
%patch $EA14 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA16 [$0440W] #Rope and grappling hook (At $E860)&lt;br /&gt;
%patch $EA18 [$0452W] #Sandwich (At $E872)&lt;br /&gt;
%patch $EA1A [$0464W] #Rocket pass (At $E884)&lt;br /&gt;
%patch $EA1C [$0484W] #Easy Babobba (At $E8A4)&lt;br /&gt;
%patch $EA1E [$047DW] #Medium Babobba (At $E89D)&lt;br /&gt;
%patch $EA20 [$0476W] #Hard Babobba (At $E896)&lt;br /&gt;
%patch $EA22 [$0496W] #Rocket on Xax (At $E8B6)&lt;br /&gt;
%patch $EA24 [$0496W] #Rocket on station (At $E8B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $75A8W $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CDxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Nospike&#039;s cache is $37, the Gik&#039;s is $39 (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Nospike calls $10CC0005RL.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right initiation code&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $0415W&lt;br /&gt;
&lt;br /&gt;
#Keen left initiation code&lt;br /&gt;
%patch $E4B2 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $E4DC $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03C5W&lt;br /&gt;
&lt;br /&gt;
#Bloog initiation code&lt;br /&gt;
%patch $E502 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $03BBW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $03B1W  $57 $56 $9A {$0EFC186ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD19W  $0001W  $E9 $039EW&lt;br /&gt;
&lt;br /&gt;
#Blooglet initiation code&lt;br /&gt;
%patch $E529 $8B $46 $FA $05 [$FFF9W]  $50 $57 $56 $9A {$0EFC1B60RL}     $83 $C4&lt;br /&gt;
             $06 $8B $46 $FA $05 [$FFF9W]  $BB [$0004W]  $99 $F7 $FB $D1 $E2 $8B&lt;br /&gt;
             $DA $C7 $87 $CD1BW  $0001W  $83 $7E $FA $0A $7F $03 $E9 $036EW &lt;br /&gt;
             $C7 $06 $CD11W  $0001W  $E9 $0365W  $E9 $0362W&lt;br /&gt;
&lt;br /&gt;
#Cliffs initiation code&lt;br /&gt;
%patch $E565 $8B $46 $FA $05 [$FFF1W]  $50 $57 $56 $9A {$0EFC0A50RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $034EW&lt;br /&gt;
&lt;br /&gt;
#Fleex initiation code&lt;br /&gt;
%patch $E579 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0344W  $83 $3E {$75A8W}  [$03] {$7D}&lt;br /&gt;
             $03 $E9 $033AW  $57 $56 $9A {$11CF000FRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3DW  $0001W  $E9 $0327W  &lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar initiation code&lt;br /&gt;
%patch $E5B3 $B8 $0001W  $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $0303W&lt;br /&gt;
&lt;br /&gt;
#Vertical scrollbar initiation code&lt;br /&gt;
%patch $E5C4 $33 $C0 $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $02F3W&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform initiation code&lt;br /&gt;
%patch $E5D4 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $E9 $02D9W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform initiation code&lt;br /&gt;
%patch $E5EE $57 $56 $9A {$0EFC13C2RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $02C6W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium\Hard Platform initiation code&lt;br /&gt;
%patch $E601 $57 $56 $9A {$0EFC14E6RL}     $83 $C4 $04 $C7 $06 CD23W  $0001W &lt;br /&gt;
             $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium Platform initiation code&lt;br /&gt;
%patch $E614 $83 $3E {$75A8W}  [$02] {$7E} $03 $E9 $02A9W  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0296W &lt;br /&gt;
&lt;br /&gt;
#Only-Easy Platform initiation code&lt;br /&gt;
%patch $E631 $83 $3E {$75A8W}  [$01] {$7E} $03 $E9 $028CW  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0279W&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform initiation code&lt;br /&gt;
%patch $E64E $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $C7 $06 $CD33W  $0001W  $E9 $0259W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform initiation code&lt;br /&gt;
%patch $E66E $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Bobba initiation code&lt;br /&gt;
%patch $E681 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $023CW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0232W  $57 $56 $9A {$11CF015CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD29W  $0001W  $E9 $021FW&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point initiation code&lt;br /&gt;
%patch $E6A8 $8B $46 $FA $05 [$FFD4W]  $50 $57 $56 $9A {$0EFC0CF3RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $020BW&lt;br /&gt;
&lt;br /&gt;
#Nospike initiation code&lt;br /&gt;
%patch $E6BC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0201W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $01F7W  $57 $56 $9A {$10CC0005RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD37W  $0001W  $E9 $01E4W&lt;br /&gt;
&lt;br /&gt;
#Gik initiation code&lt;br /&gt;
%patch $E6E3 $83 $3E $A8 $75 $03 $7D $03 $E9 $01DAW  $83 $3E $A8 $75 $02 $7D&lt;br /&gt;
             $03 $E9 $01D0W  $57 $56 $9A {$10CC045ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD25W  $0001W  $E9 $01BDW&lt;br /&gt;
&lt;br /&gt;
#Enemy gun initiation code&lt;br /&gt;
%patch $E70A $8B $46 $FA $05 [$FFCBW]  $50 $57 $56 $9A $10CC06B1RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD43W  $0001W  $E9 $01A3W&lt;br /&gt;
&lt;br /&gt;
#&#039;IF&#039; Ammo initiation code (Uses following item initiation)&lt;br /&gt;
%patch $E724 $83 $3E {$7590W}  [$05] {$7C} $03 $E9 $0199W  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Item initiation code&lt;br /&gt;
%patch $E733 $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0EFC0420RL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17D8W]  $D1 $E3 $C7 $87 $CCFFW&lt;br /&gt;
             $0001W  $E9 $016FW &lt;br /&gt;
&lt;br /&gt;
#Orbatrix initiation code&lt;br /&gt;
%patch $E758 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0165W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $015BW  $57 $56 $9A {$10CC081ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD39W  $0001W  $E9 $0148W&lt;br /&gt;
&lt;br /&gt;
#Bipship initiation code&lt;br /&gt;
%patch $E77F $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $013EW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0134W  $57 $56 $9A {$10CC0B03RL}     $83 $C4 $04 $B8 $0001W&lt;br /&gt;
                 $A3 $CD33W  $A3 $CD35W  $A3 $CD31W  $E9 $011BW&lt;br /&gt;
&lt;br /&gt;
#Flect initiation code&lt;br /&gt;
%patch $E7AC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0111W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0107W  $57 $56 $9A {$10CC0E24RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2FW  $0001W  $E9 $00F4W&lt;br /&gt;
&lt;br /&gt;
#Blorb initiation code&lt;br /&gt;
%patch $E7D3 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00EAW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00E0W  $57 $56 $9A {$11CF06ACRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD27W  $0001W  $E9 $00CDW&lt;br /&gt;
&lt;br /&gt;
#Ceilick initiation code&lt;br /&gt;
%patch $E7FA $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00C3W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00B9W  $57 $56 $9A {$11CF07BCRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3BW  $0001W  $E9 $00A6W&lt;br /&gt;
&lt;br /&gt;
#Blooguard initiation code&lt;br /&gt;
%patch $E821 $83 $3E $75A8W  [$03] {$7D} $03 $E9 $009CW  $83 $3E $75A8W  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0092W  $57 $56 $9A {$0EFC192ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2DW  $0001W  $E9 $007FW &lt;br /&gt;
&lt;br /&gt;
#Grabbiter initiation code&lt;br /&gt;
%patch $E848 $57 $56 $9A {$0EFC0515RL}     $83 $C4 $04 $EB $73&lt;br /&gt;
&lt;br /&gt;
#Satellite initiation code&lt;br /&gt;
%patch $E854 $57 $56 $9A {$0EFC0D73RL}     $83 $C4 $04 $EB $67&lt;br /&gt;
&lt;br /&gt;
#Rope initiation code&lt;br /&gt;
%patch $E860 $57 $56 $9A {$0EFC0FD1RL}     $83 $C4 $04 $C7 $06 $CD3FW  $0001W&lt;br /&gt;
             $EB $55&lt;br /&gt;
&lt;br /&gt;
#Sandwich initiation code&lt;br /&gt;
%patch $E872 $57 $56 $9A {$0EFC0F90RL}     $83 $C4 $04 $C7 $06 $CD41W  $0001W&lt;br /&gt;
             $EB $43&lt;br /&gt;
&lt;br /&gt;
#Rocket pass initiation code&lt;br /&gt;
%patch $E884 $57 $56 $9A {$0EFC1012RL}     $83 $C4 $04 $C7 $06 $CD45W  $0001W&lt;br /&gt;
             $EB $31&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in Keen 6. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face; this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1CF30034RL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Item spawn code&lt;br /&gt;
%patch $F3E0 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A78W]  $8B $1E $66 $A9 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$196AW]  $50 $53 $9A &lt;br /&gt;
     $08F41219RL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Grabbiter spawn code&lt;br /&gt;
%patch $F4D5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                 $C7 $07 [$001EW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $83 $3E {$7594W}  [$02] {$75} $0F $B8 [$1ACCW]&lt;br /&gt;
                 $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
                                                                 $B8 [$1A90W]&lt;br /&gt;
             $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point spawn code&lt;br /&gt;
%patch $FCB3 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
         $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 [$0002W]  $C7&lt;br /&gt;
             $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$0022W]  $8B $C6 $89&lt;br /&gt;
             $47 $30 $89 $47 $2C $8B $C7 $89 $47 $32 $89 $47 $2E $8B $46 $0A&lt;br /&gt;
             $35 [$0001W]  $40 $89 $47 $3E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $22&lt;br /&gt;
             $89 $47 $0A $8B $47 $22 $05 [$0100W]  $89 $47 $26 $8B $C7 $D3 $E0&lt;br /&gt;
             $89 $47 $24 $89 $47 $0C $8B $47 $24 $05 [$0100W]  $89 $47 $28 $B8&lt;br /&gt;
             [$1C52W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite spawning code&lt;br /&gt;
%patch $FD33 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0&lt;br /&gt;
             $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $06&lt;br /&gt;
             [$0000W]  $C7 $47 $20 [$0002W]  $C7 $47 $02 [$0002W]  $C7 $07 [$0021W]&lt;br /&gt;
             $8B $C6 $B1 $08 $D3 $E0 $89 $47 $0A $8B $C7 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $B8 [$1C8EW]  $50 $53 $9A&lt;br /&gt;
             $08F41219RL     $83 $C4 $04 $C7 $46 $FE [$0003W]  $8B $46 $FE $05&lt;br /&gt;
             [$005BW]  $8B $DF $D1 $E3 $8B $9F $8B $CA $D1 $EB $D1 $E3 $8E $06&lt;br /&gt;
             $79 $A9 $8B $D6 $D1 $E2 $03 $DA $26 $89 $07 $8B $1E $66 $A9 $8B&lt;br /&gt;
             $46 $FE $89 $47 $3E $C7 $47 $40 [$0100W]  $C7 $47 $44 [$0002W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sandwich spawning code&lt;br /&gt;
%patch $FF50 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001BW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D06W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Rope spawning code&lt;br /&gt;
%patch $FF91 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001CW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D24W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Passcard spawning code&lt;br /&gt;
%patch $FFD2 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001DW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D42W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Molly spawning code&lt;br /&gt;
%patch $1006B $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1D60W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform spawn code&lt;br /&gt;
%patch $100D6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] {$77} $45 $D1 $E3 $2E $FF $A7     #3 + 1 Platform types&lt;br /&gt;
          {$11A8W}  $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB #List location, up code&lt;br /&gt;
              $2E $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB #Right code&lt;br /&gt;
              $1E $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB #Down code&lt;br /&gt;
              $0E $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8 #Left code&lt;br /&gt;
              [$1DD8W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Direction list&lt;br /&gt;
%patch $10168 [$1157W] #Up (At $10117)&lt;br /&gt;
%patch $1016A [$1167W] #Right (At $10127)&lt;br /&gt;
%patch $1016C [$1177W] #Down (At $10137)&lt;br /&gt;
%patch $1016E [$1187W] #Left (At $10147)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $10382 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DF6W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting Platforms spawn code&lt;br /&gt;
%patch $104A6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E50W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform spawn code&lt;br /&gt;
%patch $104F9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A &lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $B8 [$1E6EW]  $50 $53 $9A $08F41219RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $8B $CA $D1 $EB $D1 $E3 $8E $06 $79 $A9 $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $66 $A9 $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W] $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10764 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E8CW]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bloog spawn code&lt;br /&gt;
%patch $1082A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0007W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1EE6W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooguard spawning code&lt;br /&gt;
%patch $108EE $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FD80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0003W]&lt;br /&gt;
                  $B8 [$1F7CW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn code&lt;br /&gt;
%patch $10B20 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7&lt;br /&gt;
              $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
              $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]&lt;br /&gt;
                  {$7D} $0B $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]&lt;br /&gt;
              $89 $77 $3E $8B $C6 $BB [$0004W]  $99 $F7 $FB $8B $DA $83 $FB [$03]&lt;br /&gt;
              {$77} $50 $D1 $E3 $2E $FF $A7 [$1C25W]  $B8 [$208AW]  $50 $FF $36 $66&lt;br /&gt;
              $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8 [$2120W]  $50&lt;br /&gt;
              $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8&lt;br /&gt;
              [$21B6W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E&lt;br /&gt;
              $5D $CB $B8 [$224CW]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn list&lt;br /&gt;
%patch $10BE5 [$1BD9W] #Red Blooglet (At $10B99)&lt;br /&gt;
%patch $10BE7 [$1BECW] #Yellow Blooglet (At $10BAC)&lt;br /&gt;
%patch $10BE9 [$1BFFW] #Blue Blooglet (At $10BBF)&lt;br /&gt;
%patch $10BEB [$1C12W] #Green Blooglet (At $10BD2)&lt;br /&gt;
&lt;br /&gt;
#Nospike spawn code&lt;br /&gt;
%patch $10CC5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2460W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $44&lt;br /&gt;
              [$0004W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Gik spawn code&lt;br /&gt;
%patch $1111A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2604W]  $50 $53 $9A&lt;br /&gt;
          $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $11371 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0012W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$26F6W]  $50 $53 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bipship spawn code&lt;br /&gt;
%patch $117C3 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE80W]  $89 $47 $0C&lt;br /&gt;
              $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E&lt;br /&gt;
              $66 $A9 $8B $47 $0E $BA $0014W  $F7 $EA $89 $47 $16 $B8 [$2A5CW]&lt;br /&gt;
              $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blorb spawn code&lt;br /&gt;
%patch $1239C $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66&lt;br /&gt;
              $A9 $C7 $47 $10 [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $10 [$FFFFW]&lt;br /&gt;
                  $8B $1E $66 $A9 $C7 $47 $06 [$0002W]  $B8 [$3164W]  $50 $53 $9A&lt;br /&gt;
              $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ceilick spawning code&lt;br /&gt;
%patch $124AC $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$31BEW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused sprite cache ==&lt;br /&gt;
&lt;br /&gt;
In Keen 6 there is one sprite cache not used by any sprites. This is given by &amp;lt;tt&amp;gt;$C7 $06 $CD17W  $0001W&amp;lt;/tt&amp;gt; and the following patch controls what sprites it contains (It contains none by default.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Unused sprite cache&lt;br /&gt;
%patch $3242A [$0000W] #Unused cache start&lt;br /&gt;
%patch $3247A [$0000W] #Unused cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Free space for new initiation codes ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the default initiation codes so that space is generated for custom sprite initiation codes. There are several options, more than one of which can be used together. These patches are incompatible with any initiation patches elsewhere on this page that also affect these sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E4CE for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked in blue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E954 [$006DW] #Keen left (At $E488)&lt;br /&gt;
%patch $E956 [$0088W] #Map Keen (At $E4A8)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen initiation codes (Frees $E4CE-$E501)&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}&lt;br /&gt;
             $83 $C4 $06 $9A $0CA6000ARL     $C7 $06 $CD01W  $0001W  $EB $15&lt;br /&gt;
%patch $E4A8 $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03F9W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 6)|platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E986 $01FAW #Platform up (At $E61A)&lt;br /&gt;
%patch $E988 $01FAW #Platform right (At $E61A)&lt;br /&gt;
%patch $E98A $01FAW #Platform down (At $E61A)&lt;br /&gt;
%patch $E98C $01FAW #Platform left (At $E61A)&lt;br /&gt;
%patch $E990 $020DW #Falling Platform (At $E62D)&lt;br /&gt;
%patch $E992 $0216W #Only-Easy sitting Platform (At $E636)&lt;br /&gt;
%patch $E994 $0220W #Easy\Medium sitting Platform (At $E640)&lt;br /&gt;
%patch $E996 $022AW #Easy\Medium\Hard sitting Platform (At $E64A)&lt;br /&gt;
%patch $E998 $0233W #Path Platform up (At $E653)&lt;br /&gt;
%patch $E99A $0233W #Path Platform right (At $E653)&lt;br /&gt;
%patch $E99C $0233W #Path Platform down (At $E653)&lt;br /&gt;
%patch $E99E $0233W #Path Platform left (At $E653)&lt;br /&gt;
%patch $E9A0 $0246W #Sneaky Platform (At $E666)&lt;br /&gt;
&lt;br /&gt;
#Compact Platform initiation codes (Frees $E5D4 - $E619)&lt;br /&gt;
%patch $E61A $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4 #HV plats&lt;br /&gt;
             $06 $EB $43&lt;br /&gt;
%patch $E62D $57 $56 $9A {$0EFC13C2RL}     $EB $37			     #Dropping plat&lt;br /&gt;
%patch $E636 $83 $3E {$75A8W}  [$01] {$7E} $0D $E9 $0287W  $83 $3E {$75A8W}  [$02] {$7E} #Sitting plats&lt;br /&gt;
             $03 $E9 $027DW  $57 $56 $9A {$0EFC14E6RL}     $EB $1A&lt;br /&gt;
%patch $E653 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4 #Goplat&lt;br /&gt;
             $06 $EB $0A&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W  #Sneaky plat&lt;br /&gt;
             $E9 $024EW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This addition can be used if the [[Patch:Goplat (Keen 6)|Goplats]] are patched to only use 1 animation. (That is, without Bip riders.) This also frees up graphics and memory. The platform animation cached is highlighted in blue. (It is the same as the default here and marked in blue.) This addition can be added to the end of the above patch, replacing the last patch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 #Sneaky plat&lt;br /&gt;
             $76 $8E $C0 $26 $08 $16 [$01A8W]  $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t draw Goplat Bips in Keen 6&lt;br /&gt;
%patch $10738 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41227</id>
		<title>Patch:Sprite spawning</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41227"/>
		<updated>2019-12-17T08:26:01Z</updated>

		<summary type="html">&lt;p&gt;Levellass: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial page on patching sprite spawning. It contains information on what sprite spawn code is and how to patch it. A sprite&#039;s spawn code sets all of the sprite&#039;s variables before it is placed in the level. Many of these variables are important and only set once.&lt;br /&gt;
&lt;br /&gt;
This page deals with patches relating to sprite spawning, covering a number of patches applied to sprites before they&#039;re even created and even allowing more sprites than normal to be placed in a game. The page is prefaced with a section explaining the different areas of sprite spawning, followed by a section for each game.&lt;br /&gt;
&lt;br /&gt;
A related tutorial page dealing with expanding the number of sprites in Keen 1-3 is [[Patch:Patching Vorticon Sprites]] and its equivalent for Keen Galaxy and Dreams is [[Patch:Patching Galaxy Sprites]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Areas of sprite spawning =&lt;br /&gt;
&lt;br /&gt;
There are three areas involved in spawning a sprite, the pointer list, the initiation code and the spawning code proper.&lt;br /&gt;
&lt;br /&gt;
The pointer list is exactly what it sounds like, sprites in level maps are simply values in the sprite plane, from $0000-$FFFF. Certain &#039;standard&#039; values (Lower ones) are used for sprites, other &#039;special&#039; values are treated on a case by case basis, usually [[Patch:Bridges and switches|switches.]]&lt;br /&gt;
&lt;br /&gt;
There are three parts to this, the list&#039;s location, its length (minus one) and the list itself. The list consists of a number of two-byte values each related to the location of a sprite&#039;s initiation code. Every sprite of a certain number will be directed via the list to a certain segment of initiation code.&lt;br /&gt;
&lt;br /&gt;
Initiation code prepares the game for the sprite, setting aside memory, caching graphics and suchlike. It is not a solid block of code, but part of the same code as the pointer list. The initiation code directs the game to the sprite&#039;s individual spawning code.&lt;br /&gt;
&lt;br /&gt;
The spawning code is a solid block of code executed once per sprite that results in the sprite being placed in the level and set in motion; it prepares the sprite for the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 1 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 1]] is unusual in that only the first five sprites are &#039;standard&#039;, while the [[Patch:Icecubes|Ice cannons,]] [[Patch:Falling block|falling block]] and [[Patch:Keen (Keen 1)|Keen himself]] are special cases with specific sprite numbers. It is possible to standardize the sprite initiations and thus allow many more sprite types and customization. This is covered in the following section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $1709W directs the game to the list at $1709. The standard sprite list is 4 + 1 = 5 entries long. Other sprite types are more difficult to work with. Sprites &#039;&#039;less&#039;&#039; than Ice Type 3 ($09) but &#039;&#039;greater&#039;&#039; then the standard types (Including type 6, an Ice Cannon!) are Ice Cannons. (By default $07, $08 and $09.) Type 0 Ice Cannons have their own special type ($06), dealt with &#039;&#039;before&#039;&#039; all other sprites, even standard ones. The Chain&#039;s type is $0A and finally Keen too has a special type, $FF (255).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $1632 {$1709W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $1627 $04&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $1709 [$1656W] #Yorp&lt;br /&gt;
             [$1661W] #Garg&lt;br /&gt;
             [$166CW] #Vorticon&lt;br /&gt;
             [$1676W] #Butler robot&lt;br /&gt;
             [$1680W] #Tank robot&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $161F [$06]    #Ice Type 0&lt;br /&gt;
%patch $1636 [$09]    #Ice Type 3&lt;br /&gt;
%patch $163D [$07]    #Ice Type 1&lt;br /&gt;
%patch $1642 [$08]    #Ice Type 2&lt;br /&gt;
%patch $164A [$0A]    #Falling block&lt;br /&gt;
%patch $164F [$00FFW] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 1 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $1656 $57 $56 $E8 $0225W  $83 $C4 $04 $E9 $008EW 	     #Goes to Yorp (Code at $1656 + $225 + $5 = $1880)&lt;br /&gt;
%patch $1661 $57 $56 $E8 $01DDW  $83 $C4 $04 $E9 $0083W 	     #Goes to Garg (Code at $1661 + $1DD + $5 = $1843)&lt;br /&gt;
%patch $166C $57 $56 $E8 $0164W  $83 $C4 $04 $EB $79		     #Goes to Vorticon (Code at $166C + $164 + $5 = $17D5)&lt;br /&gt;
%patch $1676 $57 $56 $E8 $00FCW  $83 $C4 $04 $EB $6F		     #Goes to Butler Bot (Code at $1676 + $FC + $5 = $1777)&lt;br /&gt;
%patch $1680 $57 $56 $E8 $008EW  $83 $C4 $04 $EB $65		     #Goes to Tank Bot (Code at $1680 + $8E + $5 = $1713)&lt;br /&gt;
%patch $168A $33 $C0 $50 $57 $56 $E8 $028EW  $83 $C4 $06 $EB $58     #Goes to Type 0 Ice Cannon (Code at $168A + $28E + $8 = $1920)&lt;br /&gt;
%patch $1697 $B8 $0001W  $50 $57 $56 $E8 $0280W  $83 $C4 $06 $EB $4A #Goes to Type 1 Ice Cannon (Code at $1697 + $280 + $9 = $1920)&lt;br /&gt;
%patch $16A5 $B8 $0002W  $50 $57 $56 $E8 $0272W  $83 $C4 $06 $EB $3C #Goes to Type 2 Ice Cannon (Code at $16A5 + $272 + $9 = $1920)&lt;br /&gt;
%patch $16B3 $B8 $0003W  $50 $57 $56 $E8 $0264W  $83 $C4 $06 $EB $2E #Goes to Type 3 Ice Cannon (Code at $16B3 + $264 + $9 = $1920)&lt;br /&gt;
%patch $16C1 $57 $56 $E8 $021DW  $83 $C4 $04 $EB $24		     #Goes to Falling block (Code at $16C1 + $21D + $5 = $18E3)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $16CB $8B $C6 $99 $B1 $0C $E8 $CA7EW  $A3 $6EDEW  $89 $16 $6EE0W&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $CA6FW  $05 [$0800W]  $83 $D2 $00 $A3 $6EE2W&lt;br /&gt;
                 $89 $16 $6EE4W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 1 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Yorp&lt;br /&gt;
%patch $1880 $55 $8B $EC $56 $E8 $10AEW  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $C8BBW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8ACW  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$194FW}  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start behavior is at $194F&lt;br /&gt;
             $7F $0F $7C $06 $3B $16 $DE $6E $73 $07 $C7 $44 $20 [$003CW]  $EB #If left of Keen speed = $3C else is $FFC4 (+\-60)&lt;br /&gt;
             $05 $C7 $44 $20 [$FFC4W]  $C7 $44 $34 {$1A68W}  $C7 $44 $28 [$0030W]  #Death at $1A68, start animation = $30 = 48&lt;br /&gt;
             $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Garg&lt;br /&gt;
%patch $1843 $55 $8B $EC $56 $E8 $10EBW  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $C8F8W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8E9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1B51W}  #Start behavior at $1B51&lt;br /&gt;
             $C7 $44 $34 {$1BCEW}  $C7 $44 $28 [$003CW]  $5E $5D $C3             #Death at $1BCE; start animation = $3C = 60&lt;br /&gt;
&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $17D5 $55 $8B $EC $56 $E8 $1159W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $C966W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C957W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1C0EW}  #Behavior at 1C0E&lt;br /&gt;
             $C7 $44 $34 {$1D6EW}  $C7 $44 $24 [$0003W]  $83 $3E $04 $83 {$10 $75} #Death 1D6E, strength = 3 unless level = 16&lt;br /&gt;
             $05 $C7 $44 $24 [$0068W]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Then strength = 100&lt;br /&gt;
             $7C $0F $7F $06 $3B $16 $DE $6E $76 $07 $C7 $44 $20 [$FFA6W]  $EB #If right of Keen speed = FFA6&lt;br /&gt;
             $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$004EW]  $5E $5D $C3         #Else speed = $5A, start animation = $4E&lt;br /&gt;
&lt;br /&gt;
#Butler bot&lt;br /&gt;
%patch $1777 $55 $8B $EC $56 $E8 $11B7W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $C9C4W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C9B5W  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$005AW]  #Start speed = $5A&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E $7F $10 $7C $06 $3B $16&lt;br /&gt;
             $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89 $44 $20 $C7 $44 $32&lt;br /&gt;
         {$1DC7W}  $C7 $44 $34 {$1E94W}  $C7 $44 $28 [$0060W]  $5E $5D $C3         #Behavior 1DC7, death 1E94, start animation $60&lt;br /&gt;
&lt;br /&gt;
#Tank bot&lt;br /&gt;
%patch $1713 $55 $8B $EC $56 $E8 $121BW  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $CA28W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CA19W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $20 [$005AW]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start speed = $5A&lt;br /&gt;
             $7F $10 $7C $06 $3B $16 $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89&lt;br /&gt;
             $44 $20 $C7 $44 $32 {$1F75W}  $C7 $44 $34 {$2045W}  $C7 $44 $28     #Start behavior at $1F75W death at $2045&lt;br /&gt;
          [$006AW]  $5E $5D $C3                                                #Start animation $6A&lt;br /&gt;
&lt;br /&gt;
#Falling block&lt;br /&gt;
%patch $18E3 $55 $8B $EC $56 $E8 $104BW  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $C858W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C849W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3360W}  #Start behavior at $3360 (Nothing)&lt;br /&gt;
             $C7 $44 $34 {$22BBW}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Death $22BB, start (and only) animation $72&lt;br /&gt;
&lt;br /&gt;
#Ice cubes&lt;br /&gt;
%patch $1920 $55 $8B $EC $56 $E8 $1057W  $8B $F0 $C7 $44 $08 $0003W  $C7 $44 #No sprite type or other properties&lt;br /&gt;
             $22 {$204AW}  $8B $46 $08 $89 $44 $0A $8B $46 $04 $99 $89 $04 $89 #Call Canon behavior at $204A&lt;br /&gt;
             $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54 $06 $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 1 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $09 and its location is $168A. This actually greatly simplifies the Keen 1 code, and as such is used in preference to the above default code as it flows more logically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Re-write the core switch statement.&lt;br /&gt;
%patch $161D $4B $83 $FB [$09] $76 $0A $81 $FB $FE $00 $0F $84 $A0 $00 $E9 $C1&lt;br /&gt;
             $00 $D1 $E4 $2E $D1 $E3 $2E $FF $A7 {$168AW}&lt;br /&gt;
#Combine the ice-launchers&lt;br /&gt;
%patch $16B1 $D1 $EB $83 $EB $05 $53&lt;br /&gt;
&lt;br /&gt;
#Locations of jumps to sprite spawn code&lt;br /&gt;
%patch $168A {$1656W} #Yorp&lt;br /&gt;
             {$1661W} #Garg&lt;br /&gt;
             {$166CW} #Vorticon&lt;br /&gt;
             {$1676W} #Butler&lt;br /&gt;
             {$1680W} #Tank&lt;br /&gt;
             {$16B1W} #Ice Launcher 1&lt;br /&gt;
             {$16B1W} #Ice Launcher 2&lt;br /&gt;
             {$16B1W} #Ice Launcher 3&lt;br /&gt;
             {$16B1W} #Ice Launcher 4&lt;br /&gt;
             {$16C1W} #Falling Block&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 2 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 2]] is much more regular than Keen 1 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $3BE2W directs the game to the list at $3BE2. The standard sprite list is 3 + 1 = 4 entries long. Other sprite types are more difficult to work with. Types 5, 6, 7 and 255 have their own separate codes that are jumped to directly, for reasons unknown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3B4A {$3BE2W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $3B3F [$03]&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $3BE2 [$3B5EW] #Vorticon (At $3B5E)&lt;br /&gt;
             [$3B68W] #Youth (At $3B68)&lt;br /&gt;
             [$3B72W] #Vorticon Elite (At $3B72)&lt;br /&gt;
             [$3B7CW] #Scrub (At $3B7C)&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $3B37 [$05] $74 $4C    #Robot (At $3B86)&lt;br /&gt;
%patch $3B4E [$06] $74 $3F    #Platform (At $3B90)&lt;br /&gt;
%patch $3B53 [$07] $74 $44    #Tantalus spark (At $3B9A)&lt;br /&gt;
%patch $3B58 [$00FFW] $74 $48 #Keen (At $3BA4)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 2 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3B5E $57 $56 $E8 $0087W  $83 $C4 $04 $EB $60 #Goes to Vorticon (Code at $3B5E + $87 + $5 = $3BEA)&lt;br /&gt;
%patch $3B68 $57 $56 $E8 $00DFW  $83 $C4 $04 $EB $56 #Goes to Youth (Code at $3B68 + $DF + $5 = $3C4C)&lt;br /&gt;
%patch $3B72 $57 $56 $E8 $0137W  $83 $C4 $04 $EB $4C #Goes to Elite (Code at $3B72 + 137 + $5 = $3CAE)&lt;br /&gt;
%patch $3B7C $57 $56 $E8 $018FW  $83 $C4 $04 $EB $42 #Goes to Scrub (Code at $3B7C + 18F + $5 = $3D10)&lt;br /&gt;
%patch $3B86 $57 $56 $E8 $01C2W  $83 $C4 $04 $EB $38 #Goes to Robot (Code at $3B86 + 1C2 + $5 = $3D4D)&lt;br /&gt;
%patch $3B90 $57 $56 $E8 $01FFW  $83 $C4 $04 $EB $2E #Goes to Platform (Code at $3B90 + 1FF + $5 = $3D94)&lt;br /&gt;
%patch $3B9A $57 $56 $E8 $023DW  $83 $C4 $04 $EB $24 #Goes to Tantalus (Code at $3B9S + 23D + $5 = $3DDC)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $3BA4 $8B $C6 $99 $B1 $0C $E8 $9CD5W  $A3 $6EBAW  $89 $16 $6EBCW&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $9CC6W  $05 [$0800W]  $83 $D2 $00 $A3 $6EBEW&lt;br /&gt;
             $89 $16 $6EC0W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 2 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. &lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon spawning code&lt;br /&gt;
%patch $3BEA $55 $8B $EC $56 $E8 $1B86W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $9C81W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C72W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3E19W}  #Behavior = $3E19&lt;br /&gt;
             $C7 $44 $34 {$3F8CW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $3F8C, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0052W]  $5E #Speed +-90, sprite = $52&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Youth spawning code&lt;br /&gt;
%patch $3C4C $55 $8B $EC $56 $E8 $1B24W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $9C1FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C10W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3FCCW}  #Behavior = $3FCC&lt;br /&gt;
             $C7 $44 $34 {$4093W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $4094, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$0030W]  $5E #Speed +-250, sprite = $30&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Elite spawning code&lt;br /&gt;
%patch $3CAE $55 $8B $EC $56 $E8 $1AC2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $9BBDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9BAEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$40CEW}  #Behavior = $40CE&lt;br /&gt;
             $C7 $44 $34 {$4283W}  $C7 $44 $24 [$0002W]  $8B $44 $06 $8B $54 $04 #Collision = $4283, health = 2&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF9CW]  $EB $05 $C7 $44 $20 [$0064W]  $C7 $44 $28 [$0058W]  $5E #Speed +-100, sprite = $58&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Scrub spawning code&lt;br /&gt;
%patch $3D10 $55 $8B $EC $56 $E8 $1A60W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $9B5BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B4CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$42C1W}  #Behavior = $42C1&lt;br /&gt;
             $C7 $44 $34 {$4507W}  $C7 $44 $28 [$0066W]  $5E $5D $C3             #Collision = $4507, sprite = $66&lt;br /&gt;
&lt;br /&gt;
#Guard Robot spawning code&lt;br /&gt;
%patch $3D4D $55 $8B $EC $56 $E8 $1A23W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $9B1EW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B0FW  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$0064W]  #Speed = 100&lt;br /&gt;
             $C7 $44 $32 {$4539W}  $C7 $44 $34 {$4677W}  $C7 $44 $24 $63 $00 $C7 #Behavior = $4539, collision = $4677, sprite = $78&lt;br /&gt;
             $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Platform spawning code&lt;br /&gt;
%patch $3D94 $55 $8B $EC $56 $E8 $19DCW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $9AD7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9AC8W  $05 [$FC00W]  $83 $D2 $FF $89 $44 $08 $89 $54 #Spawn $FC00 down&lt;br /&gt;
             $0A $C7 $44 $32 {$467CW}  $C7 $44 $34 {$61A2W}  $C7 $44 $28 [$007EW]  #Behavior = $467C, collision = $61A2, speed = $7E, sprite = $4B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Tantalus spawning code&lt;br /&gt;
%patch $3DDC $55 $8B $EC $56 $E8 $1994W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $9A8FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9A80W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}  #Behavior = $46DF, collision = $4716, sprite = $80&lt;br /&gt;
             $C7 $44 $34 {$4716W}  $C7 $44 $28 [$0080W]  $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 2 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $07 and its location is $3B83. This allows several more sprites to be added to the game (here just one new one is added.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Regularized Keen 2 spawning code&lt;br /&gt;
%patch $3B35 $81 $FB $00FFW  $74 $69 $4B $83 $FB [$07] $76 $03 $E9 $0084W  $D1&lt;br /&gt;
             $E3 $2E $FF $A7 $3B83W&lt;br /&gt;
%patch $3B4B $57 $56 $E8 $009AW  $EB $4D $57 $56 $E8 $00F5W  $EB $46&lt;br /&gt;
             $57 $56 $E8 $0150W  $EB $3F $57 $56 $E8 $01ABW  $EB $38&lt;br /&gt;
             $57 $56 $E8 $01E1W  $EB $31 $57 $56 $E8 $0221W  $EB $2A&lt;br /&gt;
             $57 $56 $E8 $0262W  $EB $23 $57 $56 $E8 $CF71W  $EB $1C&lt;br /&gt;
%patch $3B83 $3B4BW  $3B52W  $3B59W  $3B60W  $3B67W  $3B6EW  $3B75W  $3B7CW&lt;br /&gt;
&lt;br /&gt;
#New sprite spawn, immortal, platform type, Tantalus behavior&lt;br /&gt;
%patch $0AF2 $55 $8B $EC $56 $E8 $4C7EW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04&lt;br /&gt;
             $99 $B1 $0C $E8 $CD79W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CD6AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}&lt;br /&gt;
             $C7 $44 $34 {$4677W}  $C7 $44 $28 $0010W  $C7 $44 $20 [$0049W]  $5E&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 3 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 3]] is much more regular than Keen 1 or 2 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. However Keen 3 has one important different. The primary list is a &#039;number list&#039; that gives values in the sprite plane that are converted to various sprites. (For example value 1 in the sprite plane becomes sprite 1, the Vorticon. Value 255 becomes sprite 19, or Keen.) Both this list and the pointer list are the same length, controlled by a single variable, the list length. This is in entries, or words; two bytes long. (So the list length in bytes is this value * 2) The location of the pointer list is a number of bytes after the number list (So changing the number list&#039;s location also changes the pointer list location.) By default this value is the length of the number list in bytes so that both lists form a solid block of data. Also notable is the &#039;Vorticon 2&#039; which has its own sprite number, yet has the same pointer as the Vorticon meaning this sprite is just an unnecessary additional Vorticon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 Initiation lists&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3ACA {$3BD4W} #Number&lt;br /&gt;
%patch $3ADE [$26]    #Pointer list is this many bytes after number list (3BD4 + 26 = 3BFA)&lt;br /&gt;
&lt;br /&gt;
#List lengths (in words, = byte length/2)&lt;br /&gt;
%patch $3AC7 $0013W&lt;br /&gt;
&lt;br /&gt;
#Number list&lt;br /&gt;
%patch $3BD4 [$0001W] #Vorticon&lt;br /&gt;
%patch $3BD6 [$0002W] #Vortikid&lt;br /&gt;
%patch $3BD8 [$0003W] #Vortimom&lt;br /&gt;
%patch $3BDA [$0004W] #Meep&lt;br /&gt;
%patch $3BDC [$0005W] #Vortininja&lt;br /&gt;
%patch $3BDE [$0006W] #Foob&lt;br /&gt;
%patch $3BE0 [$0007W] #Ball&lt;br /&gt;
%patch $3BE2 [$0008W] #Jack&lt;br /&gt;
%patch $3BE4 [$0009W] #H Platform&lt;br /&gt;
%patch $3BE6 [$000AW] #V Platform&lt;br /&gt;
%patch $3BE8 [$000BW] #Vorticon 2&lt;br /&gt;
%patch $3BEA [$000CW] #Purple Spark&lt;br /&gt;
%patch $3BEC [$000DW] #Heart&lt;br /&gt;
%patch $3BEE [$000EW] #Gun across&lt;br /&gt;
%patch $3BF0 [$000FW] #Gun down&lt;br /&gt;
%patch $3BF2 [$0010W] #MM Hand&lt;br /&gt;
%patch $3BF4 [$0011W] #MM Left foot&lt;br /&gt;
%patch $3BF6 [$0012W] #MM Right foot&lt;br /&gt;
%patch $3BF8 [$00FFW] #Keen&lt;br /&gt;
&lt;br /&gt;
#Pointer list&lt;br /&gt;
%patch $3BFA [$3ADFW] #Vorticon&lt;br /&gt;
%patch $3BFC [$3AE9W] #Vortikid&lt;br /&gt;
%patch $3BFE [$3AF3W] #Vortimom&lt;br /&gt;
%patch $3C00 [$3AFDW] #Meep&lt;br /&gt;
%patch $3C02 [$3B07W] #Vortininja&lt;br /&gt;
%patch $3C04 [$3B11W] #Foob&lt;br /&gt;
%patch $3C06 [$3B1BW] #Ball&lt;br /&gt;
%patch $3C08 [$3B25W] #Jack&lt;br /&gt;
%patch $3C0A [$3B2FW] #H Platform&lt;br /&gt;
%patch $3C0C [$3B39W] #V Platform&lt;br /&gt;
%patch $3C0E [$3B42W] #Vorticon 2&lt;br /&gt;
%patch $3C10 [$3B4BW] #Purple Spark&lt;br /&gt;
%patch $3C12 [$3B54W] #Heart&lt;br /&gt;
%patch $3C14 [$3B5DW] #Gun across&lt;br /&gt;
%patch $3C16 [$3B66W] #Gun down&lt;br /&gt;
%patch $3C18 [$3B6FW] #Hand&lt;br /&gt;
%patch $3C1A [$3B78W] #Left Foot&lt;br /&gt;
%patch $3C1C [$3B86W] #Right foot&lt;br /&gt;
%patch $3C1E [$3B94W] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for the various sprites are quite simple. each simply tells the game a new sprite is going to be produced, then jumps to that sprite&#039;s spawn code. The finishing code is run by all sprite initiation codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3ADF $56 $57 $E8 $013CW  $59 $59 $E9 $00D1W				#Goes to Vorticon (Code at $3ADF + $13C + 5 = $3C20)&lt;br /&gt;
%patch $3AE9 $56 $57 $E8 $0194W  $59 $59 $E9 $00C7W				#Goes to Vortikid (Code at $3AE9 + $194 + 5 = $3C82)&lt;br /&gt;
%patch $3AF3 $56 $57 $E8 $01ECW  $59 $59 $E9 $00BDW				#Goes to Vortimom (Code at $3AF3 + $1EC + 5 = $3CE4)&lt;br /&gt;
%patch $3AFD $56 $57 $E8 $0244W  $59 $59 $E9 $00B3W				#Goes to Meep (Code at $3AFD + $244 + 5 = $3D46)&lt;br /&gt;
%patch $3B07 $56 $57 $E8 $02A2W  $59 $59 $E9 $00A9W				#Goes to Vortininja (Code at $3B07 + $2A2 + 5 = $3DAE)&lt;br /&gt;
%patch $3B11 $56 $57 $E8 $02FAW  $59 $59 $E9 $009FW				#Goes to Foob (Code at $3B11 + $2FA + 5 = $3E10)&lt;br /&gt;
%patch $3B1B $56 $57 $E8 $0352W  $59 $59 $E9 $0095W				#Goes to Ball (Code at $3B1B + $352 + 5 = $3E72)&lt;br /&gt;
%patch $3B25 $56 $57 $E8 $03CAW  $59 $59 $E9 $008BW				#Goes to Jack (Code at $3B25 + $3CA + 5 = $3EF4)&lt;br /&gt;
%patch $3B2F $56 $57 $E8 $0442W  $59 $59 $E9 $0081W				#Goes to H Platform (Code at $3B2F + $442 + 5 = $3F76)&lt;br /&gt;
%patch $3B39 $56 $57 $E8 $0480W  $59 $59 $EB $78				#Goes to V Platform (Code at $3B39 + $480 + 5 = $3FBE)&lt;br /&gt;
%patch $3B42 $56 $57 $E8 $00D9W  $59 $59 $EB $6F				#Goes to Vorticon (Code at $3B42 + $D9 + 5 = $3C20)&lt;br /&gt;
%patch $3B4B $56 $57 $E8 $0516W  $59 $59 $EB $66				#Goes to Purple Spark (Code at $3B4B + $516 + 5 = $4066)&lt;br /&gt;
%patch $3B54 $56 $57 $E8 $054AW  $59 $59 $EB $5D				#Goes to Heart (Code at $3B54 + $54A + 5 = $40A3)&lt;br /&gt;
%patch $3B5D $56 $57 $E8 $049EW  $59 $59 $EB $54				#Goes to Gun across (Code at $3B5D + $49E + 5 = $4000)&lt;br /&gt;
%patch $3B66 $56 $57 $E8 $04C8W  $59 $59 $EB $4B				#Goes to Gun down (Code at $3B66 + $4C8 + 5 = $4033)&lt;br /&gt;
%patch $3B6F $56 $57 $E8 $056CW  $59 $59 $EB $42				#Goes to Hand (Code at $3B6F + $56C + 5 = $40E0)&lt;br /&gt;
%patch $3B78 $B8 $FFFFW  $50 $56 $57 $E8 $0597W  $83 $C4 $06 $EB $34		#Goes to Left foot (Code at $3B78 + $597 + 9 = $4118)&lt;br /&gt;
%patch $3B86 $B8 $0001W  $50 $56 $57 $E8 $0589W  $83 $C4 $06 $EB $26		#Goes to Right foot (Code at $3B86 + $589 + 9 = $4118)&lt;br /&gt;
%patch $3B94 $8B $C7 $99 $B1 $0C $E8 $25 $A3B0W  $0A $71 $89 $16 $0C $71 $8B	#Goes to Keen (Code at $3B94 + $B016 + 5 = $EBAA)&lt;br /&gt;
             $C6 $99 $B1 $0C $E8 $B016W  $05 $00 $08 $83 $D2 $00 $A3 $0E $71&lt;br /&gt;
             $89 $16 $10 $71 $EB $00&lt;br /&gt;
%patch $3BBA $47 $3B $3E $34 $6E $7D $03 $E9 $E6 $FE $46 $3B $36 $84 $6E $7D	#Finisher&lt;br /&gt;
             $03 $E9 $D7 $FE $5F $5E $8B $E5 $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 3 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. Notice that the left and right foot of the Mangling Machine use the same spawn code, and that both the MM hands and feet are [[Patch:Meta sprites|metasprites]] not sprites.&lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $3C20 $55 $8B $EC $56 $E8 $2396W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $AF8BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF7CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$414AW}  #Behavior = $414A&lt;br /&gt;
             $C7 $44 $34 {$42D0W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $42D0, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44 #Check for Keen&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0047W]  $5E #Speed +-5A sprite = 47&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortikid&lt;br /&gt;
%patch $3C82 $55 $8B $EC $56 $E8 $2334W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $AF29W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF1AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4311W}  #Behavior = $4311&lt;br /&gt;
             $C7 $44 $34 {$43D9W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $43D9, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$002FW]  $5E #Speed +-250, sprite = 2F&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortimom&lt;br /&gt;
%patch $3CE4 $55 $8B $EC $56 $E8 $22D2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $AEC7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AEB8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$440CW}  #Behavior = $440C&lt;br /&gt;
             $C7 $44 $34 {$470CW}  $C7 $44 $24 [$0005W]  $8B $44 $06 $8B $54 $04 #Collision = $470C, health = 5&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$0055W]  $5E #Speed +-50, sprite = 55&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Meep&lt;br /&gt;
%patch $3D46 $55 $8B $EC $56 $E8 $2270W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AE65W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AE56W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4746W}  $C7 $44 $34 {$4898W}  $C7 $44 $24 [$0001W]  #Behavior = $4746 Collision = $4898, health = 1&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $0C $71 $7C $0F $7F $06 $3B $16&lt;br /&gt;
             $0A $71 $76 $07 $C7 $44 $20 [$FFBFW]  $EB $05 $C7 $44 $20 [$0041W]  #Speed +-65, sprite = 78&lt;br /&gt;
             $C7 $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortininja&lt;br /&gt;
%patch $3DAE $55 $8B $EC $56 $E8 $2208W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $ADFDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ADEEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32{ $48F7W}  #Behavior = $48F7&lt;br /&gt;
             $C7 $44 $34 {$49CDW}  $C7 $44 $24 [$0003W]  $8B $44 $06 $8B $54 $04 #Collision $49CD, health = 3&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFFFW]  $EB $05 $C7 $44 $20 [$0001W]  $C7 $44 $28 [$004DW]  $5E #Face Keen, sprite = 4D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Foob&lt;br /&gt;
%patch $3E10 $55 $8B $EC $56 $E8 $21A6W  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $AD9BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD8CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4A0CW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$4B7EW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $4B 7E, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$005DW]  $5E #Speed +-50, sprite = 5D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Ball&lt;br /&gt;
%patch $3E72 $55 $8B $EC $56 $E8 $2144W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $AD39W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD2AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C0BW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006DW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Jack&lt;br /&gt;
%patch $3EF4 $55 $8B $EC $56 $E8 $20C2W  $8B $F0 $C7 $04 [$0009W]  $8B $46 $04 #Sprite type = 9&lt;br /&gt;
             $99 $B1 $0C $E8 $ACB7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ACA8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4BBDW}  #Behavior = $4BBD&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006EW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H Platform&lt;br /&gt;
%patch $3F76 $55 $8B $EC $56 $E8 $2040W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $AC35W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AC26W  $05 $00 $FC $83 $D2 $FF $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4C47W}  $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]   #Behavior = $4C47, Collision $6A00 Sprite = 6B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3                                 #Speed = +76&lt;br /&gt;
&lt;br /&gt;
#V Platform&lt;br /&gt;
%patch $3FBE $55 $8B $EC $56 $E8 $1FF8W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $ABEDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ABDEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C47W}  #Behavior = $4C47&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]  $C7 $44 $22 [$004BW]  $5E   #Collision $6A00, Sprite = 6B, Speed = +76&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H gun&lt;br /&gt;
%patch $4000 $55 $8B $EC $56 $E8 $2001W  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $ABAAW  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB9CW  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D34W}  $5E $5D $C3 #Behavior = $4D34&lt;br /&gt;
&lt;br /&gt;
#V gun&lt;br /&gt;
%patch $4033 $55 $8B $EC $56 $E8 $1FCEW  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AB77W  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB69W  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D9BW}  $5E $5D $C3 #Behavior = $4D9B&lt;br /&gt;
&lt;br /&gt;
#Purple Spark&lt;br /&gt;
%patch $4066 $55 $8B $EC $56 $E8 $1F50W  $8B $F0 $C7 $04 [$000DW]  $8B $46 $04 #Sprite type = 13&lt;br /&gt;
             $99 $B1 $0C $E8 $AB45W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AB36W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4E02W}  #Behavior = $4E02&lt;br /&gt;
             $C7 $44 $34 {$4E19W}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Collision $4E19, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#Heart&lt;br /&gt;
%patch $40A3 $55 $8B $EC $56 $E8 $1F13W  $8B $F0 $C7 $04 [$000CW]  $8B $46 $04 #Sprite type = 12&lt;br /&gt;
             $B1 $0C $E8 $AB08W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99 $B1&lt;br /&gt;
             $0C $E8 $AAF9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4EA6W}  $C7 #Behavior = $4EA6&lt;br /&gt;
             $44 $34 {$4EBEW}  $C7 $44 $28 [$0072W]  $5E $5D $C3                 #Collision $4EBE, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#MM Hand (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $40E0 $55 $8B $EC $56 $E8 $1F21W  $8B $F0 $C7 $44 $08 [$0006W]  $8B $46 #Sprite type = 6&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $C7 $44 $22 {$50F4W}  $C7 $44 $0C [$0000W]  $C7 $44 $0A [$0001W]  #Direction = right, up&lt;br /&gt;
             $C7 $44 $0E $000FW  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#MM Feet (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $4118 $55 $8B $EC $56 $E8 $1EE9W  $8B $F0 $C7 $44 $08 [$0007W]  $8B $46 #Sprite type = 7&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $8B $46 $08 $89 $44 $0A $89 $44 $0E $C7 $44 $22 {$52F1W}  $5E #Behavior = $52F1&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen Dreams =&lt;br /&gt;
&lt;br /&gt;
[[Keen Dreams]] is similar to Keen Galaxy in that there are two kinds of pointers, &#039;short&#039; (two-byte) pointers used in the pointer list and &#039;long&#039; (four byte) pointers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
Pointers in Dreams are different from those in Vorticons in that they require a value to be added to them to get the actual location they refer to. In Dreams this is $44D0. So a pointer with the value $04FCW actually refers to code at $04FC + $44D0 = $49CC. Interestingly infoplane values are used for both sprites and level entrances on the map. This means that if extra levels are desired some sprites will have to be overwritten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($44D0 + $050DW = $49DD)&lt;br /&gt;
%patch $4774 [$050DW]&lt;br /&gt;
&lt;br /&gt;
#Length of list (60 items)&lt;br /&gt;
%patch $4769 [$3C]&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is 44D0)&lt;br /&gt;
%patch $49DD [$02A6W] #Keen right (At $4776)&lt;br /&gt;
%patch $49DF [$02BDW] #Keen left (At $478D)&lt;br /&gt;
%patch $49E1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49ED [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FD [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A01 [$02D4W] #Map Keen (At $47A4)&lt;br /&gt;
%patch $4A03 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A05 [$02F3W] #100 Pts (At $47C3)&lt;br /&gt;
%patch $4A07 [$02F3W] #200 Pts (At $47C3)&lt;br /&gt;
%patch $4A09 [$02F3W] #500 Pts (At $47C3)&lt;br /&gt;
%patch $4A0B [$02F3W] #1000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0D [$02F3W] #2000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0F [$02F3W] #5000 Pts (At $47C3)&lt;br /&gt;
%patch $4A11 [$02F3W] #1UP (At $47C3)&lt;br /&gt;
%patch $4A13 [$02F3W] #Eye (At $47C3)&lt;br /&gt;
%patch $4A15 [$02F3W] #Flower Power (At $47C3)&lt;br /&gt;
%patch $4A17 [$02F3W] #Flower Pot (At $47C3)&lt;br /&gt;
%patch $4A19 [$02EDW] #Boobus Bomb (At $47BD)&lt;br /&gt;
%patch $4A1B [$02F3W] #Key (At $47C3)&lt;br /&gt;
%patch $4A1D [$0316W] #Door (At $47E6)&lt;br /&gt;
%patch $4A1F [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A21 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A23 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A25 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A27 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A29 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2D [$0332W] #Broccolash (At $4802)&lt;br /&gt;
%patch $4A2F [$0354W] #Tomatooth (At $4824)&lt;br /&gt;
%patch $4A31 [$0376W] #Carrot Courier (At $4846)&lt;br /&gt;
%patch $4A33 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A35 [$0398W] #Asparagusto (At $4868)&lt;br /&gt;
%patch $4A37 [$03BAW] #Sour Grape (At $488A)&lt;br /&gt;
%patch $4A39 [$03DCW] #Tater Trooper (At $48AC)&lt;br /&gt;
%patch $4A3B [$03FEW] #Minecart (At $48CE)&lt;br /&gt;
%patch $4A3D [$0417W] #Frenchy (At $48E7)&lt;br /&gt;
%patch $4A3F [$0439W] #Melon Lips left (At $4909)&lt;br /&gt;
%patch $4A41 [$0439W] #Melon Lips right (At $4909)&lt;br /&gt;
%patch $4A43 [$0439W] #Melon Lips down (At $4909)&lt;br /&gt;
%patch $4A45 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A47 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A49 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4D [$0462W] #Squasher (At $4932)&lt;br /&gt;
%patch $4A4F [$0483W] #Apel (At $4953)&lt;br /&gt;
%patch $4A51 [$04A4W] #Pea Pod (At $4974)&lt;br /&gt;
%patch $4A53 [$04C5W] #Pea Brain (At $4995)&lt;br /&gt;
%patch $4A55 [$04E6W] #Boobus Tuber (At $49B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to those in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
The first and most important thing is sprite cache. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $70xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Brocolash&#039;s cache is $BC, the Tomatooth&#039;s is $BE (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the [[Patch:Pea Brain|Pea Brain]] uses the same cache as the [[Patch:Pea Pod|Pea Pod]]; this may be because the Pea Brain is never used in Keen Dreams by default and so is &#039;slaved&#039; to the Pea Pod.&lt;br /&gt;
&lt;br /&gt;
The call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $05E80CFFRL. All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;Blank&#039; code. These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right Keen initiation code&lt;br /&gt;
%patch $4776 $B8 $0001W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $023FW&lt;br /&gt;
&lt;br /&gt;
#Left Keen initiation code&lt;br /&gt;
%patch $478D $B8 $FFFFW  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $0228W&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $47A4 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80B20RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70BAW  $0001W  $E9 $020FW&lt;br /&gt;
&lt;br /&gt;
#Boobus Bomb (Uses following item initiation code)&lt;br /&gt;
%patch $47BD $C7 $06 $704CW  $0001W &lt;br /&gt;
&lt;br /&gt;
#Items initiation code&lt;br /&gt;
%patch $47C3 $A1 $70ACW  $2D [$0015W]  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $07C504A3RL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W &lt;br /&gt;
             $E9 $01E6W&lt;br /&gt;
&lt;br /&gt;
#Door initiation code&lt;br /&gt;
%patch $47E6 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50323RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $E9 $01CAW&lt;br /&gt;
&lt;br /&gt;
#Broccolash initiation code&lt;br /&gt;
%patch $4802 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50546RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BCW  $0001W  $E9&lt;br /&gt;
             $01A8W&lt;br /&gt;
&lt;br /&gt;
#Tomatooth initiation code&lt;br /&gt;
%patch $4824 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5060ARL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BEW  $0001W  $E9&lt;br /&gt;
             $0186W&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier initiation code&lt;br /&gt;
%patch $4846 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5078DRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C0W  $0001W  $E9&lt;br /&gt;
             $0164W&lt;br /&gt;
&lt;br /&gt;
#Asparagusto initiation code&lt;br /&gt;
%patch $4868 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50896RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C2W  $0001W  $E9&lt;br /&gt;
             $0142W&lt;br /&gt;
&lt;br /&gt;
#Sour Grape initiation code&lt;br /&gt;
%patch $488A $FF $36 $7052W  $FF $36 $7050W  $9A $07C508D4RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C4W  $0001W  $E9&lt;br /&gt;
             $0120W&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper initiation code&lt;br /&gt;
%patch $48AC $FF $36 $7052W  $FF $36 $7050W  $9A $08680006RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C6W  $0001W  $E9&lt;br /&gt;
             $00FEW&lt;br /&gt;
&lt;br /&gt;
#Minecart initiation code&lt;br /&gt;
%patch $48CE $FF $36 $7052W  $FF $36 $7050W  $9A $08680100RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70C8W  $0001W  $E9 $00E5W&lt;br /&gt;
&lt;br /&gt;
#Frenchy initiation code&lt;br /&gt;
%patch $48E7 $FF $36 $7052W  $FF $36 $7050W  $9A $086801E1RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CAW  $0001W  $E9&lt;br /&gt;
             $00C3W&lt;br /&gt;
&lt;br /&gt;
#Melon initiation code&lt;br /&gt;
%patch $4909 $A1 $70ACW  $2D $0032W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $0868035ERL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W&lt;br /&gt;
             $C7 $06 $70CCW  $0001W  $E9 $009AW&lt;br /&gt;
&lt;br /&gt;
#Squasher initiation code&lt;br /&gt;
%patch $4932 $FF $36 $7052W  $FF $36 $7050W  $9A $086807BFRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CEW  $0001W  $EB&lt;br /&gt;
             $79&lt;br /&gt;
&lt;br /&gt;
#Apel initiation code&lt;br /&gt;
%patch $4953 $FF $36 $7052W  $FF $36 $7050W  $9A $086808C8RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D0W  $0001W  $EB&lt;br /&gt;
             $58&lt;br /&gt;
&lt;br /&gt;
#Pea Pod initiation code&lt;br /&gt;
%patch $4974 $FF $36 $7052W  $FF $36 $7050W  $9A $08680B67RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $37&lt;br /&gt;
&lt;br /&gt;
#Pea Brain initiation code&lt;br /&gt;
%patch $4995 $FF $36 $7052W  $FF $36 $7050W  $9A $08680AE9RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $16&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber initiation code&lt;br /&gt;
%patch $49B6 $FF $36 $7052W  $FF $36 $7050W  $9A $08680C8ARL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70D4W  $0001W&lt;br /&gt;
&lt;br /&gt;
#BLANK (All initiation codes jump to this)&lt;br /&gt;
%patch $49CC $8B $1E $3E $70 $83 $7F $02 $02 $74 $05 $C7 $47 $02 $0000W  $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type]] and &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly.&lt;br /&gt;
&lt;br /&gt;
Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything. However it is often used even when this is not the case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen spawn code&lt;br /&gt;
%patch $69A0 $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $83 $3E {$70EEW}  [$00]&lt;br /&gt;
             {$75} $11 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3&lt;br /&gt;
             $E0 $EB $0D $8B $1E $34 $70 $A1 $70EEW  $89 $47 $0A $A1 $70F0W &lt;br /&gt;
             $89 $47 $0C $8B $1E $34 $70 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0001W]&lt;br /&gt;
                 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $C7 $47 $3E [$0006W]&lt;br /&gt;
             $C7 $47 $40 [$0003W]  $C7 $47 $20 [$00D7W]  $B8 [$0D3AW]  $50 $FF $36&lt;br /&gt;
             $34 $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen spawn code&lt;br /&gt;
%patch $6B7F $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]&lt;br /&gt;
             $C7 $47 $06 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0ED8W]  $50 $FF $36 $34 $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door spawn code&lt;br /&gt;
%patch $7F73 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0003W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$FFFFW]  $C7 $47 $06 [$0000W]  $B8 [$1732W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $80F3 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $47 $06 [$0000W]  $C7 $07 [$0004W]  $8B $46&lt;br /&gt;
             $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $83 $FE [$09] {$75} $05 $81 {$0C6FW}  [$0080W]  $8B $1E $3E $70 $C7 $47&lt;br /&gt;
             $10 [$FFFFW]  $89 $77 $3E $8B $DE $D1 $E3 $8B $87 [$19A8W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $20 $89 $47 $40 $83 $FE [$07] {$74} $07 $8B $47 $40&lt;br /&gt;
             $40 $40 $EB $0A $8B $1E $3E $70 $8B $47 $40 $05 [$0004W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $42 $B8 [$196CW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Broccolash spawn code&lt;br /&gt;
%patch $8196 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$19C0W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Tomatooth spawn code&lt;br /&gt;
%patch $825A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0006W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$1B46W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier spawn code&lt;br /&gt;
%patch $83DD $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0007W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1B82W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Asparagusto spawn code&lt;br /&gt;
%patch $84E6 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0009W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $B8 [$1C18W]  $50&lt;br /&gt;
             $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sour Grape spawn code&lt;br /&gt;
%patch $8524 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000AW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $B8 [$1C90W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4&lt;br /&gt;
             $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper spawn code&lt;br /&gt;
%patch $8686 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000BW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1D08W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Minecart spawn code&lt;br /&gt;
%patch $8780 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000CW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FFD0W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $C7 $47 $02 [$0002W]  $B8 [$1DDAW]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Frenchy spawn code&lt;br /&gt;
%patch $8861 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000DW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1E16W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Melon spawn code&lt;br /&gt;
%patch $89DE $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $07 [$000EW] $8B $46 $06 $B1 $08 $D3 $E0&lt;br /&gt;
             $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $0B $F6 $74 $07 $C7&lt;br /&gt;
             $47 $0E [$0001W]  $EB $09 $8B $1E $3E $70 $C7 $47 $0E [$FFFFW]  $83&lt;br /&gt;
             $FE [$02] {$7D} $05 $B8 [$1F9CW]  $EB $03 $B8 [$1FF6W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $9A $16C40026RL     $D1 $F8&lt;br /&gt;
             $8B $1E $3E $70 $89 $47 $1A $89 $77 $3E $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Squasher spawn code&lt;br /&gt;
%patch $8E3F $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0013W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$20C8W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Apel spawning code&lt;br /&gt;
%patch $8F48 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0014W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$215EW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Brain spawn code&lt;br /&gt;
%patch $9169 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0016W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $B8 [$22A8W]  $50 $FF $36 $3E $70 $9A&lt;br /&gt;
             $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Pod spawn code&lt;br /&gt;
%patch $91E7 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0015W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$2320W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber spawn code&lt;br /&gt;
%patch $930A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0017W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FA80W]  $89 $47 $0C $C7 $47 $0E [$FFFFW] $B8&lt;br /&gt;
             [$23D4W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $8B&lt;br /&gt;
             $1E $3E $70 $C7 $47 $44 [$000CW]  $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 4 =&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
The initiation pointer list pointers are short and require another value to be added to them to give the location to which they refer. (Thus in Keen 4 a value of $0064 actually points to code at $E8F0 + $0064 = $E954.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E8F0 + $0595 = $EE85)&lt;br /&gt;
%patch $E952 $0595W&lt;br /&gt;
&lt;br /&gt;
#Length of list (88 items)&lt;br /&gt;
%patch $E947 $57&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is E8F0)&lt;br /&gt;
%patch $EE85 [$0064W] #Right Facing Keen (At $E954)&lt;br /&gt;
%patch $EE87 [$0090W] #Left Facing Keen (At $E980)&lt;br /&gt;
%patch $EE89 [$00BCW] #Map Keen (At $E9AC)&lt;br /&gt;
%patch $EE8B [$00E4W] #Council Member (At $E9D4)&lt;br /&gt;
%patch $EE8D [$010DW] #Easy Berkeloid (At $E9FD)&lt;br /&gt;
%patch $EE8F [$0122W] #Lindsey (At $EA12)&lt;br /&gt;
%patch $EE91 [$014BW] #Easy Wormouth (At $EA3B)&lt;br /&gt;
%patch $EE93 [$0174W] #Easy Skypest (At $EA64)&lt;br /&gt;
%patch $EE95 [$0189W] #Cloud (At $EA79)&lt;br /&gt;
%patch $EE97 [$019EW] #Foot (At $EA8E)&lt;br /&gt;
%patch $EE99 [$01CDW] #Inchworm (At $EABD)&lt;br /&gt;
%patch $EE9B [$01FCW] #Bounder (At $EAEC)&lt;br /&gt;
%patch $EE9D [$0211W] #Egg (At $EB01)&lt;br /&gt;
%patch $EE9F [$0240W] #Easy Lick (At $EB30)&lt;br /&gt;
%patch $EEA1 [$0269W] #Easy Dopefish (At $EB59)&lt;br /&gt;
%patch $EEA3 [$027EW] #Schoolfish (At $EB6E)&lt;br /&gt;
%patch $EEA5 [$02A7W] #Easy Sprite (At $EB97)&lt;br /&gt;
%patch $EEA7 [$02BCW] #Smirky (At $EBAC)&lt;br /&gt;
%patch $EEA9 [$02D1W] #Mimrock (At $EBC1)&lt;br /&gt;
%patch $EEAB [$02FAW] #Easy Arachnut (At $EBEA)&lt;br /&gt;
%patch $EEAD [$030FW] #Mushroom (At $EBFF)&lt;br /&gt;
%patch $EEAF [$0338W] #Easy Slug (At $EC28)&lt;br /&gt;
%patch $EEB1 [$029DW] #Medium Sprite (At $EB8D)&lt;br /&gt;
%patch $EEB3 [$0293W] #Hard Sprite (At $EB83)&lt;br /&gt;
%patch $EEB5 [$034DW] #Horizontal Scrollbar (At $EC3D)&lt;br /&gt;
%patch $EEB7 [$0360W] #Vertical Scrollbar (At $EC50)&lt;br /&gt;
%patch $EEB9 [$0372W] #Up Platform (At $EC62)&lt;br /&gt;
%patch $EEBB [$0372W] #Right Platform (At $EC62)&lt;br /&gt;
%patch $EEBD [$0372W] #Down Platform (At $EC62)&lt;br /&gt;
%patch $EEBF [$0372W] #Left Platform (At $EC62)&lt;br /&gt;
%patch $EEC1 [$050DW] #B Block (At $EDFD)&lt;br /&gt;
%patch $EEC3 [$038EW] #Dropping Platform (At $EC7E)&lt;br /&gt;
%patch $EEC5 [$03A3W] #Miragia (At $EC93)&lt;br /&gt;
%patch $EEC7 [$03B2W] #IF Ammo (At $ECA2)&lt;br /&gt;
%patch $EEC9 [$03DEW] #Wetsuit (At $ECCE)&lt;br /&gt;
%patch $EECB [$050DW] #&#039;I Keen&#039; (At $EDFD)&lt;br /&gt;
%patch $EECD [$050DW] #&#039;Mom&#039; (At $EDFD)&lt;br /&gt;
%patch $EECF [$050DW] #&#039;Dad&#039; (At $EDFD)&lt;br /&gt;
%patch $EED1 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED3 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED5 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED7 [$03FBW] #Swimming Keen (At $ECEB)&lt;br /&gt;
%patch $EED9 [$032EW] #Medium Slug (At $EC1E)&lt;br /&gt;
%patch $EEDB [$0324W] #Hard Slug (At $EC14)&lt;br /&gt;
%patch $EEDD [$016AW] #Medium Skypest (At $EA5A)&lt;br /&gt;
%patch $EEDF [$0160W] #Hard Skypest (At $EA50)&lt;br /&gt;
%patch $EEE1 [$0236W] #Medium Lick (At $EB26)&lt;br /&gt;
%patch $EEE3 [$022CW] #Hard Lick (At $EB1C)&lt;br /&gt;
%patch $EEE5 [$0103W] #Medium Berkeloid (At $E9F3)&lt;br /&gt;
%patch $EEE7 [$00F9W] #Hard Berkeloid (At $E9E9)&lt;br /&gt;
%patch $EEE9 [$0141W] #Medium Wormouth (At $EA31)&lt;br /&gt;
%patch $EEEB [$0137W] #Hard Wormouth (At $EA27)&lt;br /&gt;
%patch $EEED [$0489W] #Easy Up Dart (At $ED79)&lt;br /&gt;
%patch $EEEF [$0489W] #Easy Right Dart (At $ED79)&lt;br /&gt;
%patch $EEF1 [$0489W] #Easy Down Dart (At $ED79)&lt;br /&gt;
%patch $EEF3 [$0489W] #Easy Left Dart (At $ED79)&lt;br /&gt;
%patch $EEF5 [$04A4W] #Red Gem (At $ED94)&lt;br /&gt;
%patch $EEF7 [$04A4W] #Yellow Gem (At $ED94)&lt;br /&gt;
%patch $EEF9 [$04A4W] #Blue Gem (At $ED94)&lt;br /&gt;
%patch $EEFB [$04A4W] #Green Gem (At $ED94)&lt;br /&gt;
%patch $EEFD [$04A4W] #100 Pts (At $ED94)&lt;br /&gt;
%patch $EEFF [$04A4W] #200 pts (At $ED94)&lt;br /&gt;
%patch $EF01 [$04A4W] #500 Pts (At $ED94)&lt;br /&gt;
%patch $EF03 [$04A4W] #1000 Pts (At $ED94)&lt;br /&gt;
%patch $EF05 [$04A4W] #2000 Pts (At $ED94)&lt;br /&gt;
%patch $EF07 [$04A4W] #5000 Pts (At $ED94)&lt;br /&gt;
%patch $EF09 [$04A4W] #1UP (At $ED94)&lt;br /&gt;
%patch $EF0B [$04A4W] #Raygun (At $ED94)&lt;br /&gt;
%patch $EF0D [$04CAW] #Up Mine (At $EDBA)&lt;br /&gt;
%patch $EF0F [$04CAW] #Right Mine (At $EDBA)&lt;br /&gt;
%patch $EF11 [$04CAW] #Down Mine (At $EDBA)&lt;br /&gt;
%patch $EF13 [$04CAW] #Left Mine (At $EDBA)&lt;br /&gt;
%patch $EF15 [$02F0W] #Medium Arachnut (At $EBE0)&lt;br /&gt;
%patch $EF17 [$02E6W] #Hard Arachnut (At $EBD6)&lt;br /&gt;
%patch $EF19 [$04E5W] #Mooning Keen (At $EDD5)&lt;br /&gt;
%patch $EF1B [$04FBW] #Easy Bird(At $EDEB)&lt;br /&gt;
%patch $EF1D [$04F4W] #Medium Bird (At $EDE4)&lt;br /&gt;
%patch $EF1F [$04EDW] #Hard Bird (At $EDDD)&lt;br /&gt;
%patch $EF21 [$0463W] #Medium Up Dart (At $ED53)&lt;br /&gt;
%patch $EF23 [$0463W] #Medium Right Dart (At $ED53)&lt;br /&gt;
%patch $EF25 [$0463W] #Medium Down Dart (At $ED53)&lt;br /&gt;
%patch $EF27 [$0463W] #Medium Left Dart (At $ED53)&lt;br /&gt;
%patch $EF29 [$043DW] #Hard Up Dart (At $ED2D)&lt;br /&gt;
%patch $EF2B [$043DW] #Hard Right Dart (At $ED2D)&lt;br /&gt;
%patch $EF2D [$043DW] #Hard Down Dart (At $ED2D)&lt;br /&gt;
%patch $EF2F [$043DW] #Hard Left dart (At $ED2D)&lt;br /&gt;
%patch $EF31 [$025FW] #Medium Dopefish (At $EB4F)&lt;br /&gt;
%patch $EF33 [$0255W] #Hard Dopefish (At $EB45)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $7A6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CBxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Council Member&#039;s cache is $5D, the Bird&#039;s is $5F (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the Egg sets two cache values, one for itself and one for the Bird. Several sprites set no cache, including the Wetsuit, which uses a hardcoded value for the (Single frame) it caches. Other sprites cache individual animations as well as their cache, or even several animations in addition to their cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0B80000ERL and $0D8F0003RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right facing Keen&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is +1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $047DW		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Left facing Keen&lt;br /&gt;
%patch $E980 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is -1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $0451W		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $E9AC $FF $76 $FC $57 $9A {$0D8F050ARL}      $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB4FW  $0001W  $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
              $26 $08 $16 [$00FDW]  $E9 $0429W					#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Council Member&lt;br /&gt;
%patch $E9D4 $FF $76 $FC $57 $9A {$0FA80269RL}     $83 $C4 $04 $C7 $06 $CB5DW&lt;br /&gt;
             $0001W  $E9 $0414W&lt;br /&gt;
&lt;br /&gt;
#Berkeloid&lt;br /&gt;
%patch $E9E9 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $040AW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0400W  $FF $76 $FC $57 $9A {$1080039BRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB75W  $0001W  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Lindsey&lt;br /&gt;
%patch $EA12 $FF $76 $FC $57 $9A {$11A20DB5RL}     $83 $C4 $04 $C7 $06 $CB57W&lt;br /&gt;
             $0001W  $E9 $03D6W&lt;br /&gt;
&lt;br /&gt;
#Wormouth&lt;br /&gt;
%patch $EA27 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03CCW  $83 $3E [$7A6CW]  {$02}&lt;br /&gt;
             {$7D} $03 $E9 $03C2W  $FF $76 $FC $57 $9A {$10800006RL}     $83 $C4&lt;br /&gt;
             $04 $C7 $06 $CB6BW  $0001W  $E9 $03ADW&lt;br /&gt;
&lt;br /&gt;
#Skypest&lt;br /&gt;
%patch $EA50 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03A3W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0399W  $FF $76 $FC $57 $9A {$0FA80B67RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB69W  $0001W  $E9 $0384W&lt;br /&gt;
#Cloud&lt;br /&gt;
%patch $EA79 $FF $76 $FC $57 $9A {$108001C2RL}     $83 $C4 $04 $C7 $06 $CB73W&lt;br /&gt;
             $0001W  $E9 $036FW&lt;br /&gt;
&lt;br /&gt;
#Foot&lt;br /&gt;
%patch $EA8E $FF $76 $FC $57 $9A {$1080072CRL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0340W      #End&lt;br /&gt;
&lt;br /&gt;
#Inchworm&lt;br /&gt;
%patch $EABD $FF $76 $FC $57 $9A {$108006B2RL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0311W      #End&lt;br /&gt;
&lt;br /&gt;
#Bounder&lt;br /&gt;
%patch $EAEC $FF $76 $FC $57 $9A {$108008EARL}     $83 $C4 $04 $C7 $06 $CB71W&lt;br /&gt;
             $0001W  $E9 $02FCW&lt;br /&gt;
&lt;br /&gt;
#Egg&lt;br /&gt;
%patch $EB01 $FF $76 $FC $57 $9A {$0FA8055DRL}     $83 $C4 $04 $C7 $06 $CB5FW&lt;br /&gt;
             $0001W  $C7 $06 $CB83W  $0001W  $E9 $02E1W&lt;br /&gt;
&lt;br /&gt;
#Lick&lt;br /&gt;
%patch $EB1C $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02D7W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $02CDW  $FF $76 $FC $57 $9A {$10800AC8RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB6DW  $0001W  $E9 $02B8W&lt;br /&gt;
&lt;br /&gt;
#Dopefish&lt;br /&gt;
%patch $EB45 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02AEW  $83&lt;br /&gt;
             $3E [$7A6CW]  {$02 $7D} $03 $E9 $02A4W  $FF $76 $FC $57 $9A {$11A20690RL}&lt;br /&gt;
                     $83 $C4 $04 $C7 $06 $CB63W  $0001W  $E9 $028FW&lt;br /&gt;
&lt;br /&gt;
#Schoolfish&lt;br /&gt;
%patch $EB6E $FF $76 $FC $57 $9A {$11A20AA7RL}     $83 $C4 $04 $C7 $06 $CB65W&lt;br /&gt;
             $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Sprite&lt;br /&gt;
%patch $EB83 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $FF $76 $FC $57 $9A {$11A20B5FRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB7DW  $0001W  $E9 $0251W&lt;br /&gt;
&lt;br /&gt;
#Smirky&lt;br /&gt;
%patch $EBAC $FF $76 $FC $57 $9A {$11A2000ERL}     $83 $C4 $04 $C7 $06 $CB5BW &lt;br /&gt;
             $0001W  $E9 $023CW&lt;br /&gt;
&lt;br /&gt;
#Mimrock&lt;br /&gt;
%patch $EBC1 $FF $76 $FC $57 $9A {$11A20447RL}     $83 $C4 $04 $C7 $06 $CB61W&lt;br /&gt;
             $0001W  $E9 $0227W&lt;br /&gt;
&lt;br /&gt;
#Arachnut&lt;br /&gt;
%patch $EBD6 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $021DW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0213W  $FF $76 $FC $57 $9A {$0FA80A8ERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB67W  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom&lt;br /&gt;
%patch $EBFF $FF $76 $FC $57 $9A {$0FA80445RL}     $83 $C4 $04 $C7 $06 $CB53W&lt;br /&gt;
             $0001W  $E9 $01E9W&lt;br /&gt;
&lt;br /&gt;
#Poison Slugs&lt;br /&gt;
%patch $EC14 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $01DFW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01D5W  $FF $76 $FC $57 $9A {$0FA802FERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB51W  $0001W  $E9 $01C0W&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical scroll bars&lt;br /&gt;
%patch $EC3D $B8 $0001W  $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 $C4 $06 #Horizontal bars = 1&lt;br /&gt;
             $E9 $01ADW  $33 $C0 $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 #Vertical bars = 0&lt;br /&gt;
             $C4 $06 $E9 $019BW&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms&lt;br /&gt;
%patch $EC62 $8B $46 $F8 $05 $FFE5W  $50 $FF $76 $FC $57 $9A {$10800CABRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB6FW  $0001W  $E9 $017FW&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $EC7E $FF $76 $FC $57 $9A {$108010FCRL}     $83 $C4 $04 $C7 $06 $CB6FW&lt;br /&gt;
             $0001W  $E9 $016AW&lt;br /&gt;
&lt;br /&gt;
#Miragia&lt;br /&gt;
%patch $EC93 $FF $76 $FC $57 $9A {$0FA80000RL}     $83 $C4 $04 $E9 $015BW&lt;br /&gt;
&lt;br /&gt;
#IF Ammo&lt;br /&gt;
%patch $ECA2 $83 $3E [$7A58W]  [$05] {$7C} $03 $E9 $0151W  $B8 [$000BW]  $50 $FF $76 #Here check Keen&#039;s ammo &amp;lt; 5, ammo is 12th item kind&lt;br /&gt;
             $FC $57 $9A {$0FA801A3RL}     $83 $C4 $06 $8B $1E [$19D2W]  $D1 $E3&lt;br /&gt;
             $C7 $87 $CB3BW  $0001W  $E9 $0132W  $E9 $012FW&lt;br /&gt;
&lt;br /&gt;
#Wetsuit - Note single frame is cached&lt;br /&gt;
%patch $ECCE $FF $76 $FC $57 $9A {$11A20FD1RL}     $83 $C4 $04 $B8 $2A3ARW $8A&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $16 [$01AEW]  $E9 $0112W&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen&lt;br /&gt;
%patch $ECEB $FF $76 $FC $57 $9A $0E8F0CFERL     $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB7BW  $0001W  $BE [$00DBW]  $EB $0F $B8 $2A3ARW $8A #Cache items got - start&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $94 $00 $00 $46 $81 $FE [$00E2W]  $76 #Cache items got - end&lt;br /&gt;
             $EB $B8 $2A3ARW $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 #Cache scoreboard&lt;br /&gt;
             $00D0W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - hard&lt;br /&gt;
%patch $ED2D $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00C6W  $8B $46 $F8 $05 $FFADW&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7&lt;br /&gt;
             $06 $CB79W  $0001W  $E9 $00AAW&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - medium&lt;br /&gt;
%patch $ED53 $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00A0W  $8B $46 $F8 $05 $FFB1W&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7 $06 $CB79W&lt;br /&gt;
                 $0001W  $E9 $0084W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - easy&lt;br /&gt;
%patch $ED79 $8B $46 $F8 $05 $FFCBW  $50 $FF $76 $FC $57 $9A {$11A20E3BRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB79W  $0001W  $EB $69&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $ED94 $8B $46 $F8 $05 [$FFC7W]  $50 $FF $76 $FC $57 $9A {$0FA801A3RL}&lt;br /&gt;
             $83 $C4 $06 $8B $5E $F8 $D1 $E3 $8B $9F [$194AW]  $D1 $E3 $C7 $87&lt;br /&gt;
             $CB3BW  $0001W  $EB $43&lt;br /&gt;
&lt;br /&gt;
#Mine&lt;br /&gt;
%patch $EDBA $8B $46 $F8 $05 [$FFBBW]  $50 $FF $76 $FC $57 $9A {$11A20CECRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB7FW  $0001W  $EB $28&lt;br /&gt;
&lt;br /&gt;
#Mooning Keen&lt;br /&gt;
%patch $EDD5 $C7 $06 $CB81W  $0001W  $EB $20&lt;br /&gt;
&lt;br /&gt;
#Blue bird&lt;br /&gt;
%patch $EDDD $83 $3E [$7A6CW]  {$03 $7C} $19 $83 $3E [$7A6CW]  {$02 $7C} $12 $FF $76&lt;br /&gt;
             $FC $57 $9A {$0FA805B9RL}     $83 $C4 $04 $C7 $06 $CB5FW  $0001W&lt;br /&gt;
&lt;br /&gt;
#B Block-type sprites&lt;br /&gt;
%patch $EDFD $47 $3B $3E $E4 $A7 $73 $03 $E9 $FB24W  $FF $46 $FC $8B $46 $FC&lt;br /&gt;
             $3B $06 $E2 $A7 $73 $03 $E9 $FB10W  $A1 $D6 $A7 $89 $46 $FE $EB&lt;br /&gt;
             $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. [[Patch:Miragia|Miragia&#039;s]] spawn code is the shortest, but will not allow a sprite to do anything except replace tiles as Miragia does. There are a number of values set.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]],  Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $B80E $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$098CW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Map Keen spawning code&lt;br /&gt;
%patch $DDFA $55 $8B $EC $83 $3E {$7A70W}  [$07] {$74} $03 $E9 $00A9W  $8B $1E $D6&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $C7 $07 [$0002W]  $A1 {$7A1AW}  $89 $47 {$0A}&lt;br /&gt;
             $A1 {$7A1CW}  $89 $47 {$0C} $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $81 $3E {$7A1AW}  [$1400W]&lt;br /&gt;
             {$73} $31 $C7 $47 $3E [$0118W]  $B8 [$1E00W]  $2B $47 $0A $BB [$0118W]&lt;br /&gt;
             $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47 $16 $B8 [$3700W]  $2B&lt;br /&gt;
             $47 $0C $BB [$0118W]  $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47&lt;br /&gt;
             $18 $EB $31 $8B $1E $A7D6W  $C7 $47 $3E [$008CW]  $B8 [$1000W]  $2B&lt;br /&gt;
             $47 $0A $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $A7D6W  $89 $47 $16&lt;br /&gt;
             $B8 [$2F00W]  $2B $47 $0C $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $D6&lt;br /&gt;
             $A7 $89 $47 $18 $B8 [$1492W]  $50 $FF $36 $D6 $A7 $9A $09DC118CRL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
                                     $8B $1E $A7D6W  $C7 $07 [$0002W]  $83 $3E&lt;br /&gt;
             {$7A1AW}  [$00] {$75} $14 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $EB $10 $8B $1E {$A7D6W}  $A1 {$7A1AW}&lt;br /&gt;
             $89 $47 {$0A} $A1 {$7A1CW}  $89 $47 {$0C} $8B $1E $A7D6W  $C7 $47 $02&lt;br /&gt;
             [$0002W]  $C7 $47 $20 [$0001W]  $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]&lt;br /&gt;
                 $C7 $47 $3E [$0006W]  $C7 $47 $40 [$0003W]  $C7 $47 $42 [$0000W]&lt;br /&gt;
             $C7 $47 $1E [$0100W]  $B8 [$14ECW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting flag spawn code&lt;br /&gt;
%patch $E2ED $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0003W]  $C7 $07 [$0022W]&lt;br /&gt;
             $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $05 [$0060W]  $89&lt;br /&gt;
             $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE20W]  $89 $47 $0C $9A $1D02002ARL&lt;br /&gt;
                     $BB [$0010W]  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $1A $B8&lt;br /&gt;
             [$15EEW]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen spawning code&lt;br /&gt;
%patch $F5EE $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $C7 $47 $06 [$0002W]  $B8 [$19ECW]  $50 $53 $9A $10B1118CRL   &lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Miragia spawning code&lt;br /&gt;
%patch $FA80  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0002W]  $8B $46 $06 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $89 $47 $0C $C7 $47 $1C [$1DFCW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $FC23 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0004W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1FA0W]  $8B $1E $D8 $A7 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1EECW]  $50 $53 $9A&lt;br /&gt;
         $09DC118CRL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Council Member spawn&lt;br /&gt;
%patch $FCE9  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$1FB8W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slug spawning code&lt;br /&gt;
%patch $FD7E  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0005W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2012W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom spawning code&lt;br /&gt;
%patch $FEC5  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$20E4W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Egg spawn code&lt;br /&gt;
%patch $FFDD $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
             [$FF8FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
             [$2120W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blue Bird spawning code&lt;br /&gt;
%patch $10039 $55 $8B $EC $B8 $01 $00 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $07 [$001BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $8B $47 $0A $8B $1E $A7D6W  $3B $47 $0A&lt;br /&gt;
              $73 $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W ] $EB $09 $8B $1E $D8&lt;br /&gt;
              $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$21B6W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Skypest spawning code&lt;br /&gt;
%patch $105E7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $10 [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $10 [$FFFFW]  $B8 [$2486W]&lt;br /&gt;
                  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Cloud spawning code&lt;br /&gt;
%patch $109C2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000DW]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$28A0W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Berkeloid spawning code&lt;br /&gt;
%patch $10B9B $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1D02002ARL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0008W]&lt;br /&gt;
                  $B8 [$2AF8W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Inchworm spawning code&lt;br /&gt;
%patch $10EB2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2E9AW]  $50 $9A $09DC118CRL&lt;br /&gt;
                          $83 $C4 $04 $9A $1D02002ARL     $BB [$0020W]  $99 $F7&lt;br /&gt;
              $FB $8B $1E $D8 $A7 $89 $47 $1A $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Foot spawning code&lt;br /&gt;
%patch $10F2C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $05 [$FFFDW]&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $B8 [$2EF4W]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
              $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bounder Spawning code&lt;br /&gt;
%patch $110EA $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000FW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $C7 $47 $10 [$0001W]  $C7 $47 $0E [$0000W]  $B8&lt;br /&gt;
              [$2F12W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Lick spawn code&lt;br /&gt;
%patch $112C8 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0012W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $9A $1D02002ARL     $BB $0040W&lt;br /&gt;
                  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $08 $B8 [$3002W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms Spawning code&lt;br /&gt;
%patch $114AB $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D3CW] #4 kinds of platform, direction list at $1153C&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB    #Up platform&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB    #Right platform&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB    #Down platform&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8    #Left platform&lt;br /&gt;
              [$316AW]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform Spawning code&lt;br /&gt;
%patch $118FC $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$3188W]  $50 $53 $9A $09DC118CRL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Smirky Spawning code&lt;br /&gt;
%patch $11A2E $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$31E2W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mimrock Spawning code&lt;br /&gt;
%patch $11E67 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF30W]  $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$343AW]&lt;br /&gt;
                  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dopefish spawn code&lt;br /&gt;
%patch $120B0 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $C7 $47 $06 [$0002W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $05 [$FD00W]  $89 $47 $0C $9A $1D02002ARL     $3D&lt;br /&gt;
              [$0080W]  $7D $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]&lt;br /&gt;
                  $B8 [$35C0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Schoolfish spawn code&lt;br /&gt;
%patch $124C7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0002W]&lt;br /&gt;
              $C7 $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10&lt;br /&gt;
              $B8 [$3764W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sprite spawn code&lt;br /&gt;
%patch $1257F $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $B8 [$0001W]  $89 $47 {$0E}&lt;br /&gt;
              $89 $47 {$10} $B8 [$37A0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Underwater Mine spawning code&lt;br /&gt;
%patch $1270C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0020W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D7EW]&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8&lt;br /&gt;
              [$3890W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Mine direction list&lt;br /&gt;
%patch $1279E [$0D2DW]] #Up&lt;br /&gt;
              [$0D3DW] #Right&lt;br /&gt;
              [$0D4DW] #Down&lt;br /&gt;
              [$0D5DW] #Left&lt;br /&gt;
&lt;br /&gt;
#Lindsey spawn code&lt;br /&gt;
%patch $127D5 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8 [$38EAW]&lt;br /&gt;
              $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter spawning code&lt;br /&gt;
%patch $1285B $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]  $8B&lt;br /&gt;
              $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $C7 $47 $06 [$0000W]  $8B $46&lt;br /&gt;
              $08 $D3 $E0 $89 $47 $0C $89 $77 $3E $8B $DE $83 $FB [$03] $77 $50&lt;br /&gt;
              $D1 $E3 $2E $FF $A7 {$0EDEW}  $8B $1E $D8 $A7 $83 {$6F $0C} [$30] $81&lt;br /&gt;
              {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017CW]  $EB $35 $8B $1E $D8 $A7 $81&lt;br /&gt;
              {$47 $0A} [$0080W]  $83 {$47 $0C} [$50] $C7 {$47 $1E} [$0180W]  $EB $21 $8B&lt;br /&gt;
              $1E $D8 $A7 $81 {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017EW]  $EB $11 $8B&lt;br /&gt;
              $1E $D8 $A7 $83 {$47 $0C} [$70] $83 {$6F $0A} [$30] $C7 {$47 $1E} [$0182W]&lt;br /&gt;
              $B8 [$3962W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter position list&lt;br /&gt;
%patch $128FE $0E82W #Up (At $128A2)&lt;br /&gt;
%patch $12900 $0E96W #Right (At $128B6)&lt;br /&gt;
%patch $12902 $0EAAW #Down (At $128CA)&lt;br /&gt;
%patch $12904 $0EBAW #Left (At $128DA)&lt;br /&gt;
&lt;br /&gt;
#Wetsuit spawn code&lt;br /&gt;
%patch $129F1 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001EW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $B8 [$3A34W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Scrollbar &#039;spawning&#039; code&lt;br /&gt;
%patch $17048 $55 $8B $EC $83 $7E $0A $00 $74 $29 $8B $1E $AC $CC $D1 $E3 $8B&lt;br /&gt;
              $46 $08 $89 $87 $9E $CC $A1 $AC $CC $FF $06 $AC $CC $3D $06 [$00]&lt;br /&gt;
              {$75} $35 $B8 [$4244W]  $50 $9A $037D022FRL     $83 $C4 $02 $5D $CB&lt;br /&gt;
              $5D $CB&lt;br /&gt;
                      $8B $1E $AA $CC $D1 $E3 $8B $46 $06 $89 $87 $92 $CC $A1&lt;br /&gt;
              $AA $CC $FF $06 $AA $CC $3D $06 [$00] {$75} $0C $B8 [$4279W]  $50 $9A&lt;br /&gt;
              $037D022FRL     $83 $C4 $02 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow more sprite kinds ==&lt;br /&gt;
&lt;br /&gt;
This patch expands the maximum number of different sprite initiations possible in Keen 4; the default patch above allows a maximum of $7F or 127 initiations, whereas this patch allows a maximum of $7FFFW, or thousands, making the number practically unlimited.&lt;br /&gt;
&lt;br /&gt;
This patch will only work as long as right-facing Keen&#039;s initiation code (Above)is not tampered with. The patch here uses the default number of sprites, 87.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Allow more than 127 sprite types in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Allow more than 127 sprite types in Keen 4&lt;br /&gt;
%patch $E945 $81 $FB [$0057W]  $76 $02 $EB $30&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E999 for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked as the last blue value. (The first two are in-level Keen&#039;s left\right facing directions.) Checking the original initiation code will give a more detailed breakdown of what is presented here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $EE87 $0069W #Left Facing Keen (At $E959)&lt;br /&gt;
%patch $EE89 $0081W #Map Keen (At $E971)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen spawns&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}&lt;br /&gt;
                     $83 $C4 $06 $C7 $06 $CB3DW  $0001W  $EB $12&lt;br /&gt;
%patch $E971 $FF $76 $FC $57 $9A {$0D8F050ARL}     $83 $C4 $04 $C7 $06 $CB4FW&lt;br /&gt;
             $0001W  $9A $0D8F0003RL     $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
             $26 $08 $16 [$00FDW]  $E9 $0464W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inchowrm-Foot method ===&lt;br /&gt;
&lt;br /&gt;
This patch collapses the [[Patch:Inchworm|Inchworm]] and [[Patch:Foot|Foot]] initiation codes and stops both caching the Treasure Eater Smoke frames. What this means is that both will take up less memory but the Inchworms cannot transform into the Foot &#039;&#039;and&#039;&#039; emit smoke. As a bonus space is created for an additional  initiation code for a totally new sprite.&lt;br /&gt;
&lt;br /&gt;
The space freed is 61 bytes ($EAAE-$EAEB). This is enough for a 3 difficulty sprite or several single difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change Inchworm pointer to new code&lt;br /&gt;
%patch $EE99 $01B3W #Inchworm (At $EAA3)&lt;br /&gt;
&lt;br /&gt;
#Foot doesn&#039;t cache smoke, Inchworm doesn&#039;t either&lt;br /&gt;
%patch $EAA0 $E9 $035AW  $FF $76 $FC $57 {$9A $108006B2RL}     $EB $E9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 5 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 5]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($ED50 + $0776 = $F4C6)&lt;br /&gt;
%patch $EE94 $0776W&lt;br /&gt;
&lt;br /&gt;
#Length of list (124 items)&lt;br /&gt;
%patch $EE89 $7C&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $ED50)&lt;br /&gt;
%patch $F4C6 [$0146W] #Keen right (At $EE96)&lt;br /&gt;
%patch $F4C8 [$0170W] #Keen left (At $EEC0)&lt;br /&gt;
%patch $F4CA [$019AW] #Map Keen (At $EEEA)&lt;br /&gt;
%patch $F4CC [$01F5W] #Easy Sparky (At $EF45)&lt;br /&gt;
%patch $F4CE [$01EBW] #Normal Sparky (At $EF3B)&lt;br /&gt;
%patch $F4D0 [$01E1W] #Hard Sparky (At $EF31)&lt;br /&gt;
%patch $F4D2 [$021CW] #Easy Mine (At $EF6C)&lt;br /&gt;
%patch $F4D4 [$0212W] #Normal Mine (At $EF62)&lt;br /&gt;
%patch $F4D6 [$0208W] #Hard Mine (At $EF58)&lt;br /&gt;
%patch $F4D8 [$0243W] #Easy up Slicestar (At $EF93)&lt;br /&gt;
%patch $F4DA [$0239W] #Normal up Slicestar (At $EF89)&lt;br /&gt;
%patch $F4DC [$022FW] #Hard up Slicestar (At $EF7F)&lt;br /&gt;
%patch $F4DE [$026DW] #Easy RoboRed (At $EFBD)&lt;br /&gt;
%patch $F4E0 [$0263W] #Normal RoboRed (At $EFB3)&lt;br /&gt;
%patch $F4E2 [$0259W] #Hard RoboRed (At $EFA9)&lt;br /&gt;
%patch $F4E4 [$0294W] #Easy Spirogrip (At $EFE4)&lt;br /&gt;
%patch $F4E6 [$028AW] #Normal Spirogrip (At $EFDA)&lt;br /&gt;
%patch $F4E8 [$0280W] #Hard Spirogrip (At $EFD0)&lt;br /&gt;
%patch $F4EA [$02BBW] #Easy bouncy Slicestar (At $F00B)&lt;br /&gt;
%patch $F4EC [$02B1W] #Normal bouncy Slicestar (At $F001)&lt;br /&gt;
%patch $F4EE [$02A7W] #Hard bouncy Slicestar (At $EFF7)&lt;br /&gt;
%patch $F4F0 [$02E2W] #Easy right Slicestar (At $F032)&lt;br /&gt;
%patch $F4F2 [$02D8W] #Normal right Slicestar (At $F028)&lt;br /&gt;
%patch $F4F4 [$02CEW] #Hard right Slicestar (At $F01E)&lt;br /&gt;
%patch $F4F6 [$02F9W] #Horizontal scrollbar (At $F049)&lt;br /&gt;
%patch $F4F8 [$01CAW] #&#039;T&#039; map Keen (At $EF1A)&lt;br /&gt;
%patch $F4FA [$030AW] #Up Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FC [$030AW] #Right Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FE [$030AW] #Down Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F500 [$030AW] #Left Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F502 [$0657W] #[B] sprite (At $F3A7)&lt;br /&gt;
%patch $F504 [$0327W] #Dropping Platform (At $F077)&lt;br /&gt;
%patch $F506 [$036AW] #Easy still Platform (At $F0BA)&lt;br /&gt;
%patch $F508 [$034DW] #Normal Still Platform (At $F09D)&lt;br /&gt;
%patch $F50A [$033AW] #Hard still Platform (At $F08A)&lt;br /&gt;
%patch $F50C [$0387W] #Up Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F50E [$0387W] #Right Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F510 [$0387W] #Down Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F512 [$0387W] #Left Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F514 [$03A4W] #Sneaky Platform (At $F0F4)&lt;br /&gt;
%patch $F516 [$03B7W] #QED\Fuse counter (At $F107)&lt;br /&gt;
%patch $F518 [$03F1W] #Easy Little Ampton  (At $F141)&lt;br /&gt;
%patch $F51A [$03E7W] #Normal Little Ampton  (At $F137)&lt;br /&gt;
%patch $F51C [$03DDW] #Hard Little Ampton  (At $F12D)&lt;br /&gt;
%patch $F51E [$0418W] #Easy laser up (At $F168)&lt;br /&gt;
%patch $F520 [$0442W] #Easy laser right (At $F192)&lt;br /&gt;
%patch $F522 [$046DW] #Easy laser left (At $F1BD)&lt;br /&gt;
%patch $F524 [$0498W] #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 [$040EW] #Normal laser up (At $F15E)&lt;br /&gt;
%patch $F528 [$0438W] #Normal laser right (At $F188)&lt;br /&gt;
%patch $F52A [$0463W] #Normal laser down (At $F1B3)&lt;br /&gt;
%patch $F52C [$048EW] #Normal laser left (At $F1DE)&lt;br /&gt;
%patch $F52E [$0404W] #Hard laser up (At $F154)&lt;br /&gt;
%patch $F530 [$042EW] #Hard laser right (At $F17E)&lt;br /&gt;
%patch $F532 [$0459W] #Hard laser down (At $F1A9)&lt;br /&gt;
%patch $F534 [$0484W] #Hard laser left (At $F1D4)&lt;br /&gt;
%patch $F536 [$04BEW] #Red gem (At $F20E)&lt;br /&gt;
%patch $F538 [$04BEW] #Yellow gem (At $F20E)&lt;br /&gt;
%patch $F53A [$04BEW] #Green gem (At $F20E)&lt;br /&gt;
%patch $F53C [$04BEW] #Blue gem (At $F20E)&lt;br /&gt;
%patch $F53E [$04BEW] #100 points (At $F20E)&lt;br /&gt;
%patch $F540 [$04BEW] #200 points (At $F20E)&lt;br /&gt;
%patch $F542 [$04BEW] #500 points (At $F20E)&lt;br /&gt;
%patch $F544 [$04BEW] #1000 points (At $F20E)&lt;br /&gt;
%patch $F546 [$04BEW] #2000 points (At $F20E)&lt;br /&gt;
%patch $F548 [$04BEW] #5000 points (At $F20E)&lt;br /&gt;
%patch $F54A [$04BEW] #1UP (At $F20E)&lt;br /&gt;
%patch $F54C [$04BEW] #Raygun (At $F20E)&lt;br /&gt;
%patch $F54E [$04AFW] #Low ammo raygun (At $F1FF)&lt;br /&gt;
%patch $F550 [$04E3W] #V card (At $F233)&lt;br /&gt;
%patch $F552 [$051CW] #Easy Volte-face (At $F26C)&lt;br /&gt;
%patch $F554 [$0512W] #Normal Volte-face (At $F262)&lt;br /&gt;
%patch $F556 [$0508W] #Hard Volte-face (At $F258)&lt;br /&gt;
%patch $F558 [$0543W] #Easy Shelley (At $F293)&lt;br /&gt;
%patch $F55A [$0539W] #Normal Shelley (At $F289)&lt;br /&gt;
%patch $F55C [$052FW] #Hard Shelley (At $F27F)&lt;br /&gt;
%patch $F55E [$056AW] #Easy Spindred (At $F2BA)&lt;br /&gt;
%patch $F560 [$0560W] #Normal Spindred (At $F2B0)&lt;br /&gt;
%patch $F562 [$0556W] #Hard Spindred (At $F2A6)&lt;br /&gt;
%patch $F564 [$057DW] #Up Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F566 [$057DW] #Right Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F568 [$057DW] #Down Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56A [$057DW] #Left Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56C [$059BW] #Up Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F56E [$059BW] #Right Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F570 [$059BW] #Down Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F572 [$059BW] #Left Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F574 [$05CDW] #Easy Shikadi Master (At $F31D)&lt;br /&gt;
%patch $F576 [$05C3W] #Normal Shikadi Master (At $F313)&lt;br /&gt;
%patch $F578 [$05B9W] #Hard Shikadi Master (At $F309)&lt;br /&gt;
%patch $F57A [$0657W] #Up Platform guide (At $F3A7)&lt;br /&gt;
%patch $F57C [$0657W] #Right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F57E [$0657W] #Down Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F580 [$0657W] #Left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F582 [$0657W] #Up-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F584 [$0657W] #Down-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F586 [$0657W] #Down-left  Platform guide (At $F3A7)&lt;br /&gt;
%patch $F588 [$0657W] #Up-left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F58A [$05EDW] #Easy Shikadi (At $F33D)&lt;br /&gt;
%patch $F58C [$05E6W] #Normal Shikadi (At $F336)&lt;br /&gt;
%patch $F58E [$05DFW] #Hard Shikadi (At $F32F)&lt;br /&gt;
%patch $F590 [$060DW] #Easy Shockshund (At $F35D)&lt;br /&gt;
%patch $F592 [$0606W] #Normal Shockshund (At $F356)&lt;br /&gt;
%patch $F594 [$05FFW] #Hard Shockshund (At $F34F)&lt;br /&gt;
%patch $F596 [$062DW] #Easy Sphereful (At $F37D)&lt;br /&gt;
%patch $F598 [$0626W] #Normal Sphereful (At $F376)&lt;br /&gt;
%patch $F59A [$061FW] #Hard Sphereful (At $F36F)&lt;br /&gt;
%patch $F59C [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F59E [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AC [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AE [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BC [$063FW] #Korath (At $F38F)&lt;br /&gt;
%patch $F5BE [$0651W] #Teleporter (At $F3A1)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to, but better structured than Keen 4. The first things to notice the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $6F6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $C2xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0AAF0000RL and $0CCB0007RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right&lt;br /&gt;
%patch $EE96 $B8 [$0001W]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04E7W&lt;br /&gt;
&lt;br /&gt;
#Keen left&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04BDW&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $EEEA $9A {$0CCB0007RL}     $C7 $06 $C27FW  $0001W  $B8 $2B7BRW $8A $16&lt;br /&gt;
             $EC $6F $8E $C0 $26 $08 $16 [$00EBW]  $83 $3E [$6F70W]  {$0D $75} $03&lt;br /&gt;
             $E9 $049AW  $57 $56 $9A {$0CCB050ERL}     $83 $C4 $04 $E9 $048DW&lt;br /&gt;
&lt;br /&gt;
#T map Keen&lt;br /&gt;
%patch $EF1A $83 $3E [$6F70W]  {$0D $74} $03 $E9 $0483W  $57 $56 $9A {$0CCB057FRL}&lt;br /&gt;
                 $83 $C4 $04 $E9 $0476W &lt;br /&gt;
&lt;br /&gt;
#Sparky&lt;br /&gt;
%patch $EF31 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $046CW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0462W  $57 $56 $9A {$11020004RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C289W  $0001W  $E9 $044FW&lt;br /&gt;
&lt;br /&gt;
#Shikadi mine&lt;br /&gt;
%patch $EF58 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0445W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $043BW  $57 $56 $9A {$11C40001RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28BW  $0001W  $E9 $0428W&lt;br /&gt;
&lt;br /&gt;
#Up Slicestar&lt;br /&gt;
%patch $EF7F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $041EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0414W  $33 $C0 $50 $57 $56 $9A {$1102070DRL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C28DW  $0001W  $E9 $03FEW&lt;br /&gt;
&lt;br /&gt;
#RoboRed&lt;br /&gt;
%patch $EFA9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03EAW  $57 $56 $9A {$11C4095CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28FW  $0001W  $E9 $03D7W  &lt;br /&gt;
&lt;br /&gt;
#Spirogrip&lt;br /&gt;
%patch $EFD0 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03CDW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03C3W  $57 $56 $9A {$11C40B61RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C291W  $0001W  $E9 $03B0W&lt;br /&gt;
&lt;br /&gt;
#Bouncy Slicestar&lt;br /&gt;
%patch $EFF7 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03A6W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $039CW  $57 $56 $9A {$110207ACRL} $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28DW  $0001W  $E9 $0389W&lt;br /&gt;
&lt;br /&gt;
#Right Slicestar&lt;br /&gt;
%patch $F01E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $037FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0375W  $B8 [$0001W]  $50 $57 $56 $9A {$1102070DRL}     $83&lt;br /&gt;
             $C4 $06 $C7 $06 $C28DW  $0001W  $E9 $035EW&lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar&lt;br /&gt;
%patch $F049 $B8 [$0001W]  $50 $57 $56 $9A {$174E0B05RL}     $83 $C4 $06 $E9 $034DW&lt;br /&gt;
&lt;br /&gt;
#Red Horizontal-Vertical Platforms&lt;br /&gt;
%patch $F05A $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                 $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $0330W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $F077 $57 $56 $9A {$0F920BC8RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $031DW&lt;br /&gt;
&lt;br /&gt;
#Still Platform -hard&lt;br /&gt;
%patch $F08A $57 $56 $9A {$0F920CECRL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $030AW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - normal&lt;br /&gt;
%patch $F09D $83 $3E [$6F6CW]  {$02 $7E} $03 $E9 $0300W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02EDW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - easy&lt;br /&gt;
%patch $F0BA $83 $3E [$6F6CW]  {$01 $7E} $03 $E9 $02E3W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02D0W&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $F0D7 $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform&lt;br /&gt;
%patch $F0F4 $57 $56 $9A {$0F9214D1RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W&lt;br /&gt;
             $E9 $02A0W&lt;br /&gt;
&lt;br /&gt;
#QED\Fuse&lt;br /&gt;
%patch $F107 $83 $3E [$6F68W]  {$0C $75} $12 $C7 $06 $6F5EW  $0004W  $57 $56 $9A&lt;br /&gt;
             {$11C41D56RL}     $83 $C4 $04 $EB $04 $FF $06 $5E $6F $C7 $06 $C2A5W&lt;br /&gt;
                 $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Little Ampton&lt;br /&gt;
%patch $F12D $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $57 $56 $9A {$11020240RL}     $83 $C4 $04 $C7 $06 $C293W&lt;br /&gt;
                 $0001W  $E9 $0253W&lt;br /&gt;
&lt;br /&gt;
#Laser up&lt;br /&gt;
%patch $F154 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0249W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
                 $03 $E9 $023FW  $33 $C0 $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $0229W&lt;br /&gt;
&lt;br /&gt;
#Laser right&lt;br /&gt;
%patch $F17E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $021FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0215W  $B8 [$0001W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Laser down&lt;br /&gt;
%patch $F1A9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01EAW  $B8 [$0002W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01D3W&lt;br /&gt;
&lt;br /&gt;
#Laser left&lt;br /&gt;
%patch $F1D4 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01C9W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01BFW  $B8 [$0003W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01A8W&lt;br /&gt;
&lt;br /&gt;
#Low ammo raygun (Uses following item initiation)&lt;br /&gt;
%patch $F1FF $83 $3E [$6F56W] {$05 $7C} $03 $E9 $019EW  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $F20E $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17CAW]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $0174W&lt;br /&gt;
&lt;br /&gt;
#V card&lt;br /&gt;
%patch $F233 $8B $46 $FA $05 [$FFC6W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17C8W]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $014FW&lt;br /&gt;
&lt;br /&gt;
#Volte Face&lt;br /&gt;
%patch $F258 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0145W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $013BW  $57 $56 $9A {$0F9211B4RL}     $83 $C4 $04 $C7 $06 $C295W&lt;br /&gt;
                 $0001W  $E9 $0128W&lt;br /&gt;
&lt;br /&gt;
#Shelley&lt;br /&gt;
%patch $F27F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $011EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0114W  $57 $56 $9A $1E $09 $02 $11 $83 $C4 $04 $C7 $06 $C29BW&lt;br /&gt;
             $0001W  $E9 $0101W&lt;br /&gt;
&lt;br /&gt;
#Spindred&lt;br /&gt;
%patch $F2A6 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $00F7W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $00EDW  $57 $56 $9A {$11C40C5DRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C299W  $0001W  $E9 $00DAW&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $F2CD $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFB0W]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $00BCW&lt;br /&gt;
&lt;br /&gt;
#Purple Horizontal-Vertical Platform&lt;br /&gt;
%patch $F2EB $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFACW]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $009EW&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master&lt;br /&gt;
%patch $F309 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0094W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $008AW  $57 $56 $9A {$11C40E47RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C281W  $0001W  $EB $78&lt;br /&gt;
&lt;br /&gt;
#Shikadi&lt;br /&gt;
%patch $F32F $83 $3E [$6F6CW]  {$03 $7C} $71 $83 $3E [$6F6CW]  {$02 $7C} $6A $57 $56&lt;br /&gt;
             $9A {$11C41287RL}     $83 $C4 $04 $C7 $06 $C283W  $0001W  $EB $58&lt;br /&gt;
&lt;br /&gt;
#Shocksund&lt;br /&gt;
%patch $F34F $83 $3E [$6F6CW]  {$03 $7C} $51 $83 $3E [$6F6CW]  {$02 $7C} $4A $57 $56&lt;br /&gt;
             $9A {$11C41617RL}     $83 $C4 $04 $C7 $06 $C285W  $0001W  $EB $38&lt;br /&gt;
&lt;br /&gt;
#Sphereful&lt;br /&gt;
%patch $F36F $83 $3E [$6F6CW]  {$03 $7C} $31 $83 $3E [$6F6CW]  {$02 $7C} $2A $57 $56&lt;br /&gt;
             $9A {$11C419D8RL}     $83 $C4 $04 $C7 $06 $C287W  $0001W  $EB $18&lt;br /&gt;
&lt;br /&gt;
#Korath&lt;br /&gt;
%patch $F38F $57 $56 $9A {$11C41C81RL}     $83 $C4 $04 $C7 $06 $C2A3W  $0001W  $EB $06&lt;br /&gt;
&lt;br /&gt;
#Teleporter&lt;br /&gt;
%patch $F3A1 $C7 $06 $C2A9W  $0001W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $AAF0 $55 $8B $EC $8B $1E $9E3EW  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0888W]  $50 $53 $9A $13B511C4RL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Demo Sign spawn code&lt;br /&gt;
%patch $CCB7 $55 $8B $EC $8B $1E $3C $9E $C7 $07 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $02 [$0002W]  $C7 $47 $06 [$0000W]  $C7 $47 $40 [$FFFFW]  $C7&lt;br /&gt;
             $47 $3E [$FFFFW]  $C7 $47 $42 [$FFFFW]  $C7 $47 $44 [$FFFFW]  $83 $3E&lt;br /&gt;
             {$9B97W}  [$00] {$74} $07 $C7 $47 $1C [$0788W]  $5D $CB&lt;br /&gt;
                                                             $83 $3E {$332CW}&lt;br /&gt;
             [$00] {$75} $12 $B8 [$133EW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
                                 $B8 [$135CW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $B8 $2B7BW  $8A $16 $EC $6F $8E $C0 $26 $08&lt;br /&gt;
             $16 [$006BW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Item spawning code (Includes V card and low ammo)&lt;br /&gt;
%patch $FD9F $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06B91DCDRL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $40 $9E $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A54W]  $8B $1E $40 $9E $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1946W]  $50 $53 $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Red\Purple Platform spawning code&lt;br /&gt;
%patch $FFDC  $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$076EW]&lt;br /&gt;
               $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $83&lt;br /&gt;
              $7E $0C $00 $74 $1B $8B $1E $40 $9E $83 $47 $0A $40 $83 $47 $0C&lt;br /&gt;
              $40 $B8 [$1B7CW]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
              $B8 [$1B5EW]  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Platform direction list&lt;br /&gt;
%patch $1008E $6FDW #Up (At $1001D)&lt;br /&gt;
%patch $10090 $70DW #Right (At $1002D)&lt;br /&gt;
%patch $10092 $71DW #Down (At $1003D)&lt;br /&gt;
%patch $10094 $72DW #Left (At $1004D)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $104E8 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 {$1BB8W}  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting platform spawn code&lt;br /&gt;
%patch $1060C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1C12W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Goplat spawning code&lt;br /&gt;
%patch $1065F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
           $06B91DCDRL     $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $83 $7E $0C $00 $74 $17 $83 $47 $0A&lt;br /&gt;
              $40 $83 $47 $0C $40 $B8 [$1C4EW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $EB $10 $B8 [$1C30W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $40 $9E $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W]  $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Volte-face spawn code&lt;br /&gt;
%patch $10AD4 $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0010W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0002W]  $8B $C7 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $06 [$0000W]  $B8 [$1CCCW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $5E $08 $D1 $E3&lt;br /&gt;
              $8B $87 $87 $BF $D1 $E8 $E0D1W  $8B $16 $53 $9E $8B $DF $D1 $E3&lt;br /&gt;
              $03 $C3 $89 $56 $FE $89 $46 $FC $C4 $5E $FC $26 $83 $7F $FE $5C&lt;br /&gt;
              $75 $05 $BE [$0001W]  $EB $36 $C4 $5E $FC $26 $83 $7F $02 $5E $75&lt;br /&gt;
              $05 $BE [$0003W]  $EB $27 $A1 $4C $9E $D1 $E0 $C4 $5E $FC $2B $D8&lt;br /&gt;
              $26 $83 $3F $5D $75 $05 $BE [$0002W]  $EB $12 $A1 $4C $9E $D1 $E0&lt;br /&gt;
              $C4 $5E $FC $03 $D8 $26 $83 $3F $5B $75 $02 $33 $F6 $8B $C6 $05&lt;br /&gt;
              [$005BW]  $C4 $5E $FC $26 $89 $07 $8B $1E $40 $9E $89 $77 $3E $C7&lt;br /&gt;
              $47 $40 [$0100W]  $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10DF1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DA4W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $10EB7 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$000FW]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$1DFEW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sparky spawn code&lt;br /&gt;
%patch $11024 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $0C $9A $1DFB0036RL     $3D $0080W  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$1F0CW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Little Ampton spawning code&lt;br /&gt;
%patch $11260 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$21DCW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical Slicestar spawning code&lt;br /&gt;
%patch $1172D $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $C7 $47 $44 [$0014W]  $8B $5E $0A $83 $FB [$03] $77 $45 $D1&lt;br /&gt;
              $E3 $2E $FF $A7 [$07A4W]  $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$FFFFW]  $EB $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $EB $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$0001W]  $EB $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $B8 [$23BCW]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slicestar direction list&lt;br /&gt;
%patch $117C4 [$0753W] #Down (At $11773)&lt;br /&gt;
%patch $117C6 [$0763W] #Right (At $11783)&lt;br /&gt;
%patch $117C8 [$0773W] #Left (At $11793)&lt;br /&gt;
%patch $117CA [$0783W] #Up (At $117A3)&lt;br /&gt;
&lt;br /&gt;
#Shelley spawn code&lt;br /&gt;
%patch $1193E $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1DFB0036RL     $3D [$0080W]  {$7D} $0B $8B $1E $40 $9E&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$2416W]  $50 $53 $9A&lt;br /&gt;
          $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mine spawning code&lt;br /&gt;
%patch $11C41 $55 $8B $EC $56 $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $40 $9E $C7 $07 [$000AW]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $C7 $47 $40 [$0100W]  $C7 $47 $42 [$00D0W]&lt;br /&gt;
              $B8 [$2644W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $1E $40&lt;br /&gt;
              $9E $C7 $47 $16 [$0100W]  $33 $F6 $EB $12 $56 $FF $36 $40 $9E $90&lt;br /&gt;
              $0E $E8 $0095W  $83 $C4 $04 $0B $C0 $75 $06 $46 $83 $FE $03 $7E&lt;br /&gt;
              $E9 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Robo Red spawning code&lt;br /&gt;
%patch $1259C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FC00W]  $89 $47 $0C&lt;br /&gt;
              $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $B8 [$2734W]&lt;br /&gt;
                  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Spirogrip spawn code&lt;br /&gt;
%patch $127A1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000DW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8 [$2824W]  $50 $53 $9A&lt;br /&gt;
              $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master Spawn code&lt;br /&gt;
%patch $12A87 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 $80 $FE $89 $47 $0C&lt;br /&gt;
              $B8 [$2AF4W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi spawn code&lt;br /&gt;
%patch $12EC7 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0014W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0004W]  $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $B8 [$2D10W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
              $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shockshund spawn code&lt;br /&gt;
%patch $13257 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0002W]  $B8 [$0001W]  $89 $47 $10 $89 $47 $0E $B8 [$2F0EW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Q.E.D. spawn code&lt;br /&gt;
%patch $13996 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0019W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $89 $77 $2C $89 $7F $2E $8B $47 $2C $40 $89 $47 $30&lt;br /&gt;
              $8B $47 $2E $40 $89 $47 $32 $8B $C6 $B1 $08 $D3 $E0 $05 [$FFF0W]&lt;br /&gt;
              $89 $47 $22 $89 $47 $0A $8B $C7 $D3 $E0 $05 [$FFF0W]  $89 $47 $24&lt;br /&gt;
              $89 $47 $0C $8B $47 $22 $05 $20 $02 $89 $47 $26 $8B $47 $24 $05&lt;br /&gt;
              $20 $02 $89 $47 $28 $B8 [$3186W]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused Platform cache ==&lt;br /&gt;
&lt;br /&gt;
There is one unused [[Patch:Sprite cache|sprite cache]] in Keen 5. It is a single animation in size and  contains a small red platform. This is useful since it is not hard to expand it or use it for a totally unique sprite. It&#039;s call is &amp;lt;tt&amp;gt;$C29F&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Cache&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $31A4C $01BFW #Small red platform cache start&lt;br /&gt;
%patch $31AA0 $01BFW #Cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left and right Keen initiation codes so they use the minimum amount of space. (This is possible because they both require similar code.) It frees space at $EEC5 for a 3-difficulty sprite or several non-difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
The patch is quite basic; in effect the Keen left code only sets Keen&#039;s direction before jumping to the Keen right code, leaving all its space free.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen left code compacted&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $EB $D4&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 5)|Platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F05A-$0FA8 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move initiation pointers (Free $4E at $F05A)&lt;br /&gt;
%patch $F4FA $0359W #Up Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FC $0359W #Right Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FE $0359W #Down Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F500 $0359W #Left Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F504 $036CW #Dropping Platform (At $F0BC)&lt;br /&gt;
%patch $F506 $037EW #Easy still Platform (At $F0CE)&lt;br /&gt;
%patch $F508 $0375W #Normal Still Platform (At $F0C5)&lt;br /&gt;
%patch $F50A $0385W #Hard still Platform (At $F0D5)&lt;br /&gt;
%patch $F50C $037EW #Up Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F50E $038EW #Right Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F510 $038EW #Down Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F512 $038EW #Left Red Goplat (At $F0DE)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F0A9 $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL} $EB $33&lt;br /&gt;
%patch $F0BC $57 $56 $9A {$0F920BC8RL} $EB $36&lt;br /&gt;
%patch $F0C5 $83 $3E {$6F6CW}  [$02] {$7F} $38 $EB $07&lt;br /&gt;
%patch $F0CE $83 $3E {$6F6CW}  [$01] {$7F} $2F $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
             $EB $1D&lt;br /&gt;
%patch $F0DE $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Enemy Shooter initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Enemy shooter (Keen 5)|Enemy Shooter]] initiation codes (They all cache the same graphics and use similar code.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F154-$F1A1 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move pointers (Frees $F154-$F1A1)&lt;br /&gt;
%patch $F51E $0460W #Easy laser up (At $F1B0)&lt;br /&gt;
%patch $F520 $0472W #Easy laser right (At $F1C2)&lt;br /&gt;
%patch $F522 $0485W #Easy laser left (At $F1D5)&lt;br /&gt;
%patch $F524 $0498W #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 $0459W #Normal laser up (At $F1A9)&lt;br /&gt;
%patch $F528 $046BW #Normal laser right (At $F1BB)&lt;br /&gt;
%patch $F52A $047EW #Normal laser down (At $F1CE)&lt;br /&gt;
%patch $F52C $0491W #Normal laser left (At $F1E1)&lt;br /&gt;
%patch $F52E $0452W #Hard laser up (At $F1A2)&lt;br /&gt;
%patch $F530 $0464W #Hard laser right (At $F1B4)&lt;br /&gt;
%patch $F532 $0477W #Hard laser down (At $F1C7)&lt;br /&gt;
%patch $F534 $048AW #Hard laser left (At $F1DA)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F1A2 $83 $3E [$6F6CW]  {$03 $7C} $53 $83 $3E [$6F6CW]  {$02 $7C} $4C&lt;br /&gt;
             [$33 $C0] $EB $37&lt;br /&gt;
%patch $F1B4 $83 $3E [$6F6CW]  {$03 $7C} $41 $83 $3E [$6F6CW]  {$02 $7C} $3A $B8&lt;br /&gt;
             [$0001W]  $EB $24&lt;br /&gt;
%patch $F1C7 $83 $3E [$6F6CW]  {$03 $7C} $2E $83 $3E [$6F6CW]  {$02 $7C} $27 $B8&lt;br /&gt;
             [$0002W]  $EB $11&lt;br /&gt;
%patch $F1DA $83 $3E [$6F6CW]  {$03 $7C} $1B $83 $3E [$6F6CW]  {$02 $7C} $14 $B8 [$0003W]&lt;br /&gt;
                 $50 $57 $56 $9A $0F921597RL     $83 $C4 $06 $C7 $06 $C27DW&lt;br /&gt;
             $0001W  $E9 $01A8W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 6 =&lt;br /&gt;
&lt;br /&gt;
This section is partly incomplete.&lt;br /&gt;
&lt;br /&gt;
[[Keen 6]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E420 + $0532 = $E952)&lt;br /&gt;
%patch $E486 $0532W&lt;br /&gt;
&lt;br /&gt;
#Length of list (105 items)&lt;br /&gt;
%patch $E47B $69&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $E420)&lt;br /&gt;
%patch $E952 [$0068W] #Keen right (At $E488)&lt;br /&gt;
%patch $E954 [$0092W] #Keen left (At $E4B2)&lt;br /&gt;
%patch $E956 [$00BCW] #Map Keen (At $E4DC)&lt;br /&gt;
%patch $E958 [$00F6W] #Easy Bloog (At $E516)&lt;br /&gt;
%patch $E95A [$00ECW] #Medium Bloog (At $E50C)&lt;br /&gt;
%patch $E95C [$00E2W] #Hard Bloog (At $E502)&lt;br /&gt;
%patch $E95E [$0109W] #Red Blooglet (At $E529)&lt;br /&gt;
%patch $E960 [$0109W] #Yellow Blooglet (At $E529)&lt;br /&gt;
%patch $E962 [$0109W] #Blue Blooglet (At $E529)&lt;br /&gt;
%patch $E964 [$0109W] #Green Blooglet (At $E529)&lt;br /&gt;
%patch $E966 [$0109W] #Red keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E968 [$0109W] #Yellow keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96A [$0109W] #Green keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96C [$0109W] #Blue keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96E [$0145W] #Bottom of cliff (At $E565)&lt;br /&gt;
%patch $E970 [$0145W] #Top of cliff (At $E565)&lt;br /&gt;
%patch $E972 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E974 [$016DW] #Easy Fleex (At $E58D)&lt;br /&gt;
%patch $E976 [$0163W] #Medium Fleex (At $E583)&lt;br /&gt;
%patch $E978 [$0159W] #Hard Fleex (At $E579)&lt;br /&gt;
%patch $E97A [$0180W] #Easy UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97C [$0180W] #Medium UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97E [$0180W] #Hard UNUSED (At $E5A0)&lt;br /&gt;
%patch $E980 [$0180W] #Molly (At $E5A0)&lt;br /&gt;
%patch $E982 [$0193W] #Horizontal scrollbar (At $E5B3)&lt;br /&gt;
%patch $E984 [$01A4W] #Vertical scrollbar (At $E5C4)&lt;br /&gt;
%patch $E986 [$01B4W] #Platform up (At $E5D4)&lt;br /&gt;
%patch $E988 [$01B4W] #Platform right (At $E5D4)&lt;br /&gt;
%patch $E98A [$01B4W] #Platform down (At $E5D4)&lt;br /&gt;
%patch $E98C [$01B4W] #Platform left (At $E5D4)&lt;br /&gt;
%patch $E98E [$04A7W] #B sprite (At $E8C7)&lt;br /&gt;
%patch $E990 [$01CEW] #Falling Platform (At $E5EE)&lt;br /&gt;
%patch $E992 [$0211W] #Only-Easy sitting Platform (At $E631)&lt;br /&gt;
%patch $E994 [$01F4W] #Easy\Medium sitting Platform (At $E614)&lt;br /&gt;
%patch $E996 [$01E1W] #Easy\Medium\Hard sitting Platform (At $E601)&lt;br /&gt;
%patch $E998 [$022EW] #Path Platform up (At $E64E)&lt;br /&gt;
%patch $E99A [$022EW] #Path Platform right (At $E64E)&lt;br /&gt;
%patch $E99C [$022EW] #Path Platform down (At $E64E)&lt;br /&gt;
%patch $E99E [$022EW] #Path Platform left (At $E64E)&lt;br /&gt;
%patch $E9A0 [$024EW] #Sneaky Platform (At $E66E)&lt;br /&gt;
%patch $E9A2 [$0275W] #Easy Bobba (At $E695)&lt;br /&gt;
%patch $E9A4 [$026BW] #Medium Bobba (At $E68B)&lt;br /&gt;
%patch $E9A6 [$0261W] #Hard Bobba (At $E681)&lt;br /&gt;
%patch $E9A8 [$0288W] #Satellite dropoff up (At $E6A8)&lt;br /&gt;
%patch $E9AA [$0288W] #Satellite dropoff right (At $E6A8)&lt;br /&gt;
%patch $E9AC [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E9AE [$02B0W] #Easy Nospike (At $E6D0)&lt;br /&gt;
%patch $E9B0 [$02A6W] #Medium Nospike (At $E6C6)&lt;br /&gt;
%patch $E9B2 [$029CW] #Hard Nospike (At $E6BC)&lt;br /&gt;
%patch $E9B4 [$02D7W] #Easy Gik (At $E6F7)&lt;br /&gt;
%patch $E9B6 [$02CDW] #Medium Gik (At $E6ED)&lt;br /&gt;
%patch $E9B8 [$02C3W] #Hard Gik (At $E6E3)&lt;br /&gt;
%patch $E9BA [$02EAW] #Laser up (At $E70A)&lt;br /&gt;
%patch $E9BC [$02EAW] #Laser right (At $E70A)&lt;br /&gt;
%patch $E9BE [$02EAW] #Laser down (At $E70A)&lt;br /&gt;
%patch $E9C0 [$02EAW] #Laser left (At $E70A)&lt;br /&gt;
%patch $E9C2 [$0313W] #Red gem (At $E733)&lt;br /&gt;
%patch $E9C4 [$0313W] #Yellow gem (At $E733)&lt;br /&gt;
%patch $E9C6 [$0313W] #Green gem (At $E733)&lt;br /&gt;
%patch $E9C8 [$0313W] #Blue gem (At $E733)&lt;br /&gt;
%patch $E9CA [$0313W] #100 points (At $E733)&lt;br /&gt;
%patch $E9CC [$0313W] #200 points (At $E733)&lt;br /&gt;
%patch $E9CE [$0313W] #500 points (At $E733)&lt;br /&gt;
%patch $E9D0 [$0313W] #1000 points (At $E733)&lt;br /&gt;
%patch $E9D2 [$0313W] #2000 points (At $E733)&lt;br /&gt;
%patch $E9D4 [$0313W] #5000 points (At $E733)&lt;br /&gt;
%patch $E9D6 [$0313W] #1UP (At $E733)&lt;br /&gt;
%patch $E9D8 [$0313W] #Ammo (At $E733)&lt;br /&gt;
%patch $E9DA [$0304W] #IF ammo (At $E724)&lt;br /&gt;
%patch $E9DC [$034CW] #Easy Orbatrix (At $E76C)&lt;br /&gt;
%patch $E9DE [$0342W] #Medium Orbatrix (At $E762)&lt;br /&gt;
%patch $E9E0 [$0338W] #Hard Orbatrix (At $E758)&lt;br /&gt;
%patch $E9E2 [$0373W] #Easy Bipship (At $E793)&lt;br /&gt;
%patch $E9E4 [$0369W] #Medium Bipship (At $E789)&lt;br /&gt;
%patch $E9E6 [$035FW] #Hard Bipship (At $E77F)&lt;br /&gt;
%patch $E9E8 [$03A0W] #Easy Flect (At $E7C0)&lt;br /&gt;
%patch $E9EA [$0396W] #Medium Flect (At $E7B6)&lt;br /&gt;
%patch $E9EC [$038CW] #Hard Flect (At $E7AC)&lt;br /&gt;
%patch $E9EE [$03C7W] #Easy Blorb (At $E7E7)&lt;br /&gt;
%patch $E9F0 [$03BDW] #Medium Blorb (At $E7DD)&lt;br /&gt;
%patch $E9F2 [$03B3W] #Hard Blorb (At $E7D3)&lt;br /&gt;
%patch $E9F4 [$03EEW] #Easy Ceilick (At $E80E)&lt;br /&gt;
%patch $E9F6 [$03E4W] #Medium Ceilick (At $E804)&lt;br /&gt;
%patch $E9F8 [$03DAW] #Hard Ceilick (At $E7FA)&lt;br /&gt;
%patch $E9FA [$0415W] #Easy Blooguard (At $E835)&lt;br /&gt;
%patch $E9FC [$040BW] #Medium Blooguard (At $E82B)&lt;br /&gt;
%patch $E9FE [$0401W] #Hard Blooguard (At $E821)&lt;br /&gt;
%patch $EA00 [$0428W] #Grabbiter (At $E848)&lt;br /&gt;
%patch $EA02 [$0434W] #Satellite (At $E854)&lt;br /&gt;
%patch $EA04 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $EA06 [$04A7W] #Platform path up (At $E8C7)&lt;br /&gt;
%patch $EA08 [$04A7W] #Platform path right (At $E8C7)&lt;br /&gt;
%patch $EA0A [$04A7W] #Platform path down (At $E8C7)&lt;br /&gt;
%patch $EA0C [$04A7W] #Platform path left (At $E8C7)&lt;br /&gt;
%patch $EA0E [$04A7W] #Platform path up-right (At $E8C7)&lt;br /&gt;
%patch $EA10 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA12 [$04A7W] #Platform path down-left (At $E8C7)&lt;br /&gt;
%patch $EA14 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA16 [$0440W] #Rope and grappling hook (At $E860)&lt;br /&gt;
%patch $EA18 [$0452W] #Sandwich (At $E872)&lt;br /&gt;
%patch $EA1A [$0464W] #Rocket pass (At $E884)&lt;br /&gt;
%patch $EA1C [$0484W] #Easy Babobba (At $E8A4)&lt;br /&gt;
%patch $EA1E [$047DW] #Medium Babobba (At $E89D)&lt;br /&gt;
%patch $EA20 [$0476W] #Hard Babobba (At $E896)&lt;br /&gt;
%patch $EA22 [$0496W] #Rocket on Xax (At $E8B6)&lt;br /&gt;
%patch $EA24 [$0496W] #Rocket on station (At $E8B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $75A8W $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CDxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Nospike&#039;s cache is $37, the Gik&#039;s is $39 (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Nospike calls $10CC0005RL.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right initiation code&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $0415W&lt;br /&gt;
&lt;br /&gt;
#Keen left initiation code&lt;br /&gt;
%patch $E4B2 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $E4DC $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03C5W&lt;br /&gt;
&lt;br /&gt;
#Bloog initiation code&lt;br /&gt;
%patch $E502 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $03BBW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $03B1W  $57 $56 $9A {$0EFC186ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD19W  $0001W  $E9 $039EW&lt;br /&gt;
&lt;br /&gt;
#Blooglet initiation code&lt;br /&gt;
%patch $E529 $8B $46 $FA $05 [$FFF9W]  $50 $57 $56 $9A {$0EFC1B60RL}     $83 $C4&lt;br /&gt;
             $06 $8B $46 $FA $05 [$FFF9W]  $BB [$0004W]  $99 $F7 $FB $D1 $E2 $8B&lt;br /&gt;
             $DA $C7 $87 $CD1BW  $0001W  $83 $7E $FA $0A $7F $03 $E9 $036EW &lt;br /&gt;
             $C7 $06 $CD11W  $0001W  $E9 $0365W  $E9 $0362W&lt;br /&gt;
&lt;br /&gt;
#Cliffs initiation code&lt;br /&gt;
%patch $E565 $8B $46 $FA $05 [$FFF1W]  $50 $57 $56 $9A {$0EFC0A50RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $034EW&lt;br /&gt;
&lt;br /&gt;
#Fleex initiation code&lt;br /&gt;
%patch $E579 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0344W  $83 $3E {$75A8W}  [$03] {$7D}&lt;br /&gt;
             $03 $E9 $033AW  $57 $56 $9A {$11CF000FRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3DW  $0001W  $E9 $0327W  &lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar initiation code&lt;br /&gt;
%patch $E5B3 $B8 $0001W  $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $0303W&lt;br /&gt;
&lt;br /&gt;
#Vertical scrollbar initiation code&lt;br /&gt;
%patch $E5C4 $33 $C0 $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $02F3W&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform initiation code&lt;br /&gt;
%patch $E5D4 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $E9 $02D9W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform initiation code&lt;br /&gt;
%patch $E5EE $57 $56 $9A {$0EFC13C2RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $02C6W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium\Hard Platform initiation code&lt;br /&gt;
%patch $E601 $57 $56 $9A {$0EFC14E6RL}     $83 $C4 $04 $C7 $06 CD23W  $0001W &lt;br /&gt;
             $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium Platform initiation code&lt;br /&gt;
%patch $E614 $83 $3E {$75A8W}  [$02] {$7E} $03 $E9 $02A9W  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0296W &lt;br /&gt;
&lt;br /&gt;
#Only-Easy Platform initiation code&lt;br /&gt;
%patch $E631 $83 $3E {$75A8W}  [$01] {$7E} $03 $E9 $028CW  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0279W&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform initiation code&lt;br /&gt;
%patch $E64E $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $C7 $06 $CD33W  $0001W  $E9 $0259W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform initiation code&lt;br /&gt;
%patch $E66E $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Bobba initiation code&lt;br /&gt;
%patch $E681 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $023CW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0232W  $57 $56 $9A {$11CF015CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD29W  $0001W  $E9 $021FW&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point initiation code&lt;br /&gt;
%patch $E6A8 $8B $46 $FA $05 [$FFD4W]  $50 $57 $56 $9A {$0EFC0CF3RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $020BW&lt;br /&gt;
&lt;br /&gt;
#Nospike initiation code&lt;br /&gt;
%patch $E6BC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0201W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $01F7W  $57 $56 $9A {$10CC0005RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD37W  $0001W  $E9 $01E4W&lt;br /&gt;
&lt;br /&gt;
#Gik initiation code&lt;br /&gt;
%patch $E6E3 $83 $3E $A8 $75 $03 $7D $03 $E9 $01DAW  $83 $3E $A8 $75 $02 $7D&lt;br /&gt;
             $03 $E9 $01D0W  $57 $56 $9A {$10CC045ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD25W  $0001W  $E9 $01BDW&lt;br /&gt;
&lt;br /&gt;
#Enemy gun initiation code&lt;br /&gt;
%patch $E70A $8B $46 $FA $05 [$FFCBW]  $50 $57 $56 $9A $10CC06B1RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD43W  $0001W  $E9 $01A3W&lt;br /&gt;
&lt;br /&gt;
#&#039;IF&#039; Ammo initiation code (Uses following item initiation)&lt;br /&gt;
%patch $E724 $83 $3E {$7590W}  [$05] {$7C} $03 $E9 $0199W  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Item initiation code&lt;br /&gt;
%patch $E733 $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0EFC0420RL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17D8W]  $D1 $E3 $C7 $87 $CCFFW&lt;br /&gt;
             $0001W  $E9 $016FW &lt;br /&gt;
&lt;br /&gt;
#Orbatrix initiation code&lt;br /&gt;
%patch $E758 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0165W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $015BW  $57 $56 $9A {$10CC081ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD39W  $0001W  $E9 $0148W&lt;br /&gt;
&lt;br /&gt;
#Flect initiation code&lt;br /&gt;
%patch $E7AC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0111W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0107W  $57 $56 $9A {$10CC0E24RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2FW  $0001W  $E9 $00F4W&lt;br /&gt;
&lt;br /&gt;
#Ceilick initiation code&lt;br /&gt;
%patch $E7FA $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00C3W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00B9W  $57 $56 $9A {$11CF07BCRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3BW  $0001W  $E9 $00A6W&lt;br /&gt;
&lt;br /&gt;
#Blooguard initiation code&lt;br /&gt;
%patch $E821 $83 $3E $75A8W  [$03] {$7D} $03 $E9 $009CW  $83 $3E $75A8W  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0092W  $57 $56 $9A {$0EFC192ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2DW  $0001W  $E9 $007FW &lt;br /&gt;
&lt;br /&gt;
#Grabbiter initiation code&lt;br /&gt;
%patch $E848 $57 $56 $9A {$0EFC0515RL}     $83 $C4 $04 $EB $73&lt;br /&gt;
&lt;br /&gt;
#Satellite initiation code&lt;br /&gt;
%patch $E854 $57 $56 $9A {$0EFC0D73RL}     $83 $C4 $04 $EB $67&lt;br /&gt;
&lt;br /&gt;
#Rope initiation code&lt;br /&gt;
%patch $E860 $57 $56 $9A {$0EFC0FD1RL}     $83 $C4 $04 $C7 $06 $CD3FW  $0001W&lt;br /&gt;
             $EB $55&lt;br /&gt;
&lt;br /&gt;
#Sandwich initiation code&lt;br /&gt;
%patch $E872 $57 $56 $9A {$0EFC0F90RL}     $83 $C4 $04 $C7 $06 $CD41W  $0001W&lt;br /&gt;
             $EB $43&lt;br /&gt;
&lt;br /&gt;
#Rocket pass initiation code&lt;br /&gt;
%patch $E884 $57 $56 $9A {$0EFC1012RL}     $83 $C4 $04 $C7 $06 $CD45W  $0001W&lt;br /&gt;
             $EB $31&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in Keen 6. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face; this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1CF30034RL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Item spawn code&lt;br /&gt;
%patch $F3E0 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A78W]  $8B $1E $66 $A9 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$196AW]  $50 $53 $9A &lt;br /&gt;
     $08F41219RL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Grabbiter spawn code&lt;br /&gt;
%patch $F4D5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                 $C7 $07 [$001EW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $83 $3E {$7594W}  [$02] {$75} $0F $B8 [$1ACCW]&lt;br /&gt;
                 $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
                                                                 $B8 [$1A90W]&lt;br /&gt;
             $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point spawn code&lt;br /&gt;
%patch $FCB3 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
         $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 [$0002W]  $C7&lt;br /&gt;
             $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$0022W]  $8B $C6 $89&lt;br /&gt;
             $47 $30 $89 $47 $2C $8B $C7 $89 $47 $32 $89 $47 $2E $8B $46 $0A&lt;br /&gt;
             $35 [$0001W]  $40 $89 $47 $3E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $22&lt;br /&gt;
             $89 $47 $0A $8B $47 $22 $05 [$0100W]  $89 $47 $26 $8B $C7 $D3 $E0&lt;br /&gt;
             $89 $47 $24 $89 $47 $0C $8B $47 $24 $05 [$0100W]  $89 $47 $28 $B8&lt;br /&gt;
             [$1C52W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite spawning code&lt;br /&gt;
%patch $FD33 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0&lt;br /&gt;
             $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $06&lt;br /&gt;
             [$0000W]  $C7 $47 $20 [$0002W]  $C7 $47 $02 [$0002W]  $C7 $07 [$0021W]&lt;br /&gt;
             $8B $C6 $B1 $08 $D3 $E0 $89 $47 $0A $8B $C7 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $B8 [$1C8EW]  $50 $53 $9A&lt;br /&gt;
             $08F41219RL     $83 $C4 $04 $C7 $46 $FE [$0003W]  $8B $46 $FE $05&lt;br /&gt;
             [$005BW]  $8B $DF $D1 $E3 $8B $9F $8B $CA $D1 $EB $D1 $E3 $8E $06&lt;br /&gt;
             $79 $A9 $8B $D6 $D1 $E2 $03 $DA $26 $89 $07 $8B $1E $66 $A9 $8B&lt;br /&gt;
             $46 $FE $89 $47 $3E $C7 $47 $40 [$0100W]  $C7 $47 $44 [$0002W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sandwich spawning code&lt;br /&gt;
%patch $FF50 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001BW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D06W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Rope spawning code&lt;br /&gt;
%patch $FF91 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001CW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D24W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Passcard spawning code&lt;br /&gt;
%patch $FFD2 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001DW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D42W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Molly spawning code&lt;br /&gt;
%patch $1006B $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1D60W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform spawn code&lt;br /&gt;
%patch $100D6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] {$77} $45 $D1 $E3 $2E $FF $A7     #3 + 1 Platform types&lt;br /&gt;
          {$11A8W}  $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB #List location, up code&lt;br /&gt;
              $2E $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB #Right code&lt;br /&gt;
              $1E $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB #Down code&lt;br /&gt;
              $0E $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8 #Left code&lt;br /&gt;
              [$1DD8W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Direction list&lt;br /&gt;
%patch $10168 [$1157W] #Up (At $10117)&lt;br /&gt;
%patch $1016A [$1167W] #Right (At $10127)&lt;br /&gt;
%patch $1016C [$1177W] #Down (At $10137)&lt;br /&gt;
%patch $1016E [$1187W] #Left (At $10147)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $10382 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DF6W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting Platforms spawn code&lt;br /&gt;
%patch $104A6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E50W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform spawn code&lt;br /&gt;
%patch $104F9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A &lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $B8 [$1E6EW]  $50 $53 $9A $08F41219RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $8B $CA $D1 $EB $D1 $E3 $8E $06 $79 $A9 $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $66 $A9 $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W] $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10764 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E8CW]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bloog spawn code&lt;br /&gt;
%patch $1082A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0007W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1EE6W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooguard spawning code&lt;br /&gt;
%patch $108EE $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FD80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0003W]&lt;br /&gt;
                  $B8 [$1F7CW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn code&lt;br /&gt;
%patch $10B20 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7&lt;br /&gt;
              $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
              $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]&lt;br /&gt;
                  {$7D} $0B $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]&lt;br /&gt;
              $89 $77 $3E $8B $C6 $BB [$0004W]  $99 $F7 $FB $8B $DA $83 $FB [$03]&lt;br /&gt;
              {$77} $50 $D1 $E3 $2E $FF $A7 [$1C25W]  $B8 [$208AW]  $50 $FF $36 $66&lt;br /&gt;
              $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8 [$2120W]  $50&lt;br /&gt;
              $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8&lt;br /&gt;
              [$21B6W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E&lt;br /&gt;
              $5D $CB $B8 [$224CW]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn list&lt;br /&gt;
%patch $10BE5 [$1BD9W] #Red Blooglet (At $10B99)&lt;br /&gt;
%patch $10BE7 [$1BECW] #Yellow Blooglet (At $10BAC)&lt;br /&gt;
%patch $10BE9 [$1BFFW] #Blue Blooglet (At $10BBF)&lt;br /&gt;
%patch $10BEB [$1C12W] #Green Blooglet (At $10BD2)&lt;br /&gt;
&lt;br /&gt;
#Nospike spawn code&lt;br /&gt;
%patch $10CC5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2460W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $44&lt;br /&gt;
              [$0004W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Gik spawn code&lt;br /&gt;
%patch $1111A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2604W]  $50 $53 $9A&lt;br /&gt;
          $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $11371 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0012W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$26F6W]  $50 $53 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bipship spawn code&lt;br /&gt;
%patch $117C3 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE80W]  $89 $47 $0C&lt;br /&gt;
              $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E&lt;br /&gt;
              $66 $A9 $8B $47 $0E $BA $0014W  $F7 $EA $89 $47 $16 $B8 [$2A5CW]&lt;br /&gt;
              $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blorb spawn code&lt;br /&gt;
%patch $1239C $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66&lt;br /&gt;
              $A9 $C7 $47 $10 [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $10 [$FFFFW]&lt;br /&gt;
                  $8B $1E $66 $A9 $C7 $47 $06 [$0002W]  $B8 [$3164W]  $50 $53 $9A&lt;br /&gt;
              $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ceilick spawning code&lt;br /&gt;
%patch $124AC $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$31BEW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused sprite cache ==&lt;br /&gt;
&lt;br /&gt;
In Keen 6 there is one sprite cache not used by any sprites. This is given by &amp;lt;tt&amp;gt;$C7 $06 $CD17W  $0001W&amp;lt;/tt&amp;gt; and the following patch controls what sprites it contains (It contains none by default.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Unused sprite cache&lt;br /&gt;
%patch $3242A [$0000W] #Unused cache start&lt;br /&gt;
%patch $3247A [$0000W] #Unused cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Free space for new initiation codes ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the default initiation codes so that space is generated for custom sprite initiation codes. There are several options, more than one of which can be used together. These patches are incompatible with any initiation patches elsewhere on this page that also affect these sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E4CE for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked in blue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E954 [$006DW] #Keen left (At $E488)&lt;br /&gt;
%patch $E956 [$0088W] #Map Keen (At $E4A8)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen initiation codes (Frees $E4CE-$E501)&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}&lt;br /&gt;
             $83 $C4 $06 $9A $0CA6000ARL     $C7 $06 $CD01W  $0001W  $EB $15&lt;br /&gt;
%patch $E4A8 $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03F9W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 6)|platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E986 $01FAW #Platform up (At $E61A)&lt;br /&gt;
%patch $E988 $01FAW #Platform right (At $E61A)&lt;br /&gt;
%patch $E98A $01FAW #Platform down (At $E61A)&lt;br /&gt;
%patch $E98C $01FAW #Platform left (At $E61A)&lt;br /&gt;
%patch $E990 $020DW #Falling Platform (At $E62D)&lt;br /&gt;
%patch $E992 $0216W #Only-Easy sitting Platform (At $E636)&lt;br /&gt;
%patch $E994 $0220W #Easy\Medium sitting Platform (At $E640)&lt;br /&gt;
%patch $E996 $022AW #Easy\Medium\Hard sitting Platform (At $E64A)&lt;br /&gt;
%patch $E998 $0233W #Path Platform up (At $E653)&lt;br /&gt;
%patch $E99A $0233W #Path Platform right (At $E653)&lt;br /&gt;
%patch $E99C $0233W #Path Platform down (At $E653)&lt;br /&gt;
%patch $E99E $0233W #Path Platform left (At $E653)&lt;br /&gt;
%patch $E9A0 $0246W #Sneaky Platform (At $E666)&lt;br /&gt;
&lt;br /&gt;
#Compact Platform initiation codes (Frees $E5D4 - $E619)&lt;br /&gt;
%patch $E61A $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4 #HV plats&lt;br /&gt;
             $06 $EB $43&lt;br /&gt;
%patch $E62D $57 $56 $9A {$0EFC13C2RL}     $EB $37			     #Dropping plat&lt;br /&gt;
%patch $E636 $83 $3E {$75A8W}  [$01] {$7E} $0D $E9 $0287W  $83 $3E {$75A8W}  [$02] {$7E} #Sitting plats&lt;br /&gt;
             $03 $E9 $027DW  $57 $56 $9A {$0EFC14E6RL}     $EB $1A&lt;br /&gt;
%patch $E653 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4 #Goplat&lt;br /&gt;
             $06 $EB $0A&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W  #Sneaky plat&lt;br /&gt;
             $E9 $024EW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This addition can be used if the [[Patch:Goplat (Keen 6)|Goplats]] are patched to only use 1 animation. (That is, without Bip riders.) This also frees up graphics and memory. The platform animation cached is highlighted in blue. (It is the same as the default here and marked in blue.) This addition can be added to the end of the above patch, replacing the last patch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 #Sneaky plat&lt;br /&gt;
             $76 $8E $C0 $26 $08 $16 [$01A8W]  $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t draw Goplat Bips in Keen 6&lt;br /&gt;
%patch $10738 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41226</id>
		<title>Patch:Sprite spawning</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41226"/>
		<updated>2019-12-17T06:56:19Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Orbatrix init code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial page on patching sprite spawning. It contains information on what sprite spawn code is and how to patch it. A sprite&#039;s spawn code sets all of the sprite&#039;s variables before it is placed in the level. Many of these variables are important and only set once.&lt;br /&gt;
&lt;br /&gt;
This page deals with patches relating to sprite spawning, covering a number of patches applied to sprites before they&#039;re even created and even allowing more sprites than normal to be placed in a game. The page is prefaced with a section explaining the different areas of sprite spawning, followed by a section for each game.&lt;br /&gt;
&lt;br /&gt;
A related tutorial page dealing with expanding the number of sprites in Keen 1-3 is [[Patch:Patching Vorticon Sprites]] and its equivalent for Keen Galaxy and Dreams is [[Patch:Patching Galaxy Sprites]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Areas of sprite spawning =&lt;br /&gt;
&lt;br /&gt;
There are three areas involved in spawning a sprite, the pointer list, the initiation code and the spawning code proper.&lt;br /&gt;
&lt;br /&gt;
The pointer list is exactly what it sounds like, sprites in level maps are simply values in the sprite plane, from $0000-$FFFF. Certain &#039;standard&#039; values (Lower ones) are used for sprites, other &#039;special&#039; values are treated on a case by case basis, usually [[Patch:Bridges and switches|switches.]]&lt;br /&gt;
&lt;br /&gt;
There are three parts to this, the list&#039;s location, its length (minus one) and the list itself. The list consists of a number of two-byte values each related to the location of a sprite&#039;s initiation code. Every sprite of a certain number will be directed via the list to a certain segment of initiation code.&lt;br /&gt;
&lt;br /&gt;
Initiation code prepares the game for the sprite, setting aside memory, caching graphics and suchlike. It is not a solid block of code, but part of the same code as the pointer list. The initiation code directs the game to the sprite&#039;s individual spawning code.&lt;br /&gt;
&lt;br /&gt;
The spawning code is a solid block of code executed once per sprite that results in the sprite being placed in the level and set in motion; it prepares the sprite for the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 1 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 1]] is unusual in that only the first five sprites are &#039;standard&#039;, while the [[Patch:Icecubes|Ice cannons,]] [[Patch:Falling block|falling block]] and [[Patch:Keen (Keen 1)|Keen himself]] are special cases with specific sprite numbers. It is possible to standardize the sprite initiations and thus allow many more sprite types and customization. This is covered in the following section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $1709W directs the game to the list at $1709. The standard sprite list is 4 + 1 = 5 entries long. Other sprite types are more difficult to work with. Sprites &#039;&#039;less&#039;&#039; than Ice Type 3 ($09) but &#039;&#039;greater&#039;&#039; then the standard types (Including type 6, an Ice Cannon!) are Ice Cannons. (By default $07, $08 and $09.) Type 0 Ice Cannons have their own special type ($06), dealt with &#039;&#039;before&#039;&#039; all other sprites, even standard ones. The Chain&#039;s type is $0A and finally Keen too has a special type, $FF (255).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $1632 {$1709W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $1627 $04&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $1709 [$1656W] #Yorp&lt;br /&gt;
             [$1661W] #Garg&lt;br /&gt;
             [$166CW] #Vorticon&lt;br /&gt;
             [$1676W] #Butler robot&lt;br /&gt;
             [$1680W] #Tank robot&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $161F [$06]    #Ice Type 0&lt;br /&gt;
%patch $1636 [$09]    #Ice Type 3&lt;br /&gt;
%patch $163D [$07]    #Ice Type 1&lt;br /&gt;
%patch $1642 [$08]    #Ice Type 2&lt;br /&gt;
%patch $164A [$0A]    #Falling block&lt;br /&gt;
%patch $164F [$00FFW] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 1 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $1656 $57 $56 $E8 $0225W  $83 $C4 $04 $E9 $008EW 	     #Goes to Yorp (Code at $1656 + $225 + $5 = $1880)&lt;br /&gt;
%patch $1661 $57 $56 $E8 $01DDW  $83 $C4 $04 $E9 $0083W 	     #Goes to Garg (Code at $1661 + $1DD + $5 = $1843)&lt;br /&gt;
%patch $166C $57 $56 $E8 $0164W  $83 $C4 $04 $EB $79		     #Goes to Vorticon (Code at $166C + $164 + $5 = $17D5)&lt;br /&gt;
%patch $1676 $57 $56 $E8 $00FCW  $83 $C4 $04 $EB $6F		     #Goes to Butler Bot (Code at $1676 + $FC + $5 = $1777)&lt;br /&gt;
%patch $1680 $57 $56 $E8 $008EW  $83 $C4 $04 $EB $65		     #Goes to Tank Bot (Code at $1680 + $8E + $5 = $1713)&lt;br /&gt;
%patch $168A $33 $C0 $50 $57 $56 $E8 $028EW  $83 $C4 $06 $EB $58     #Goes to Type 0 Ice Cannon (Code at $168A + $28E + $8 = $1920)&lt;br /&gt;
%patch $1697 $B8 $0001W  $50 $57 $56 $E8 $0280W  $83 $C4 $06 $EB $4A #Goes to Type 1 Ice Cannon (Code at $1697 + $280 + $9 = $1920)&lt;br /&gt;
%patch $16A5 $B8 $0002W  $50 $57 $56 $E8 $0272W  $83 $C4 $06 $EB $3C #Goes to Type 2 Ice Cannon (Code at $16A5 + $272 + $9 = $1920)&lt;br /&gt;
%patch $16B3 $B8 $0003W  $50 $57 $56 $E8 $0264W  $83 $C4 $06 $EB $2E #Goes to Type 3 Ice Cannon (Code at $16B3 + $264 + $9 = $1920)&lt;br /&gt;
%patch $16C1 $57 $56 $E8 $021DW  $83 $C4 $04 $EB $24		     #Goes to Falling block (Code at $16C1 + $21D + $5 = $18E3)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $16CB $8B $C6 $99 $B1 $0C $E8 $CA7EW  $A3 $6EDEW  $89 $16 $6EE0W&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $CA6FW  $05 [$0800W]  $83 $D2 $00 $A3 $6EE2W&lt;br /&gt;
                 $89 $16 $6EE4W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 1 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Yorp&lt;br /&gt;
%patch $1880 $55 $8B $EC $56 $E8 $10AEW  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $C8BBW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8ACW  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$194FW}  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start behavior is at $194F&lt;br /&gt;
             $7F $0F $7C $06 $3B $16 $DE $6E $73 $07 $C7 $44 $20 [$003CW]  $EB #If left of Keen speed = $3C else is $FFC4 (+\-60)&lt;br /&gt;
             $05 $C7 $44 $20 [$FFC4W]  $C7 $44 $34 {$1A68W}  $C7 $44 $28 [$0030W]  #Death at $1A68, start animation = $30 = 48&lt;br /&gt;
             $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Garg&lt;br /&gt;
%patch $1843 $55 $8B $EC $56 $E8 $10EBW  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $C8F8W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8E9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1B51W}  #Start behavior at $1B51&lt;br /&gt;
             $C7 $44 $34 {$1BCEW}  $C7 $44 $28 [$003CW]  $5E $5D $C3             #Death at $1BCE; start animation = $3C = 60&lt;br /&gt;
&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $17D5 $55 $8B $EC $56 $E8 $1159W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $C966W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C957W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1C0EW}  #Behavior at 1C0E&lt;br /&gt;
             $C7 $44 $34 {$1D6EW}  $C7 $44 $24 [$0003W]  $83 $3E $04 $83 {$10 $75} #Death 1D6E, strength = 3 unless level = 16&lt;br /&gt;
             $05 $C7 $44 $24 [$0068W]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Then strength = 100&lt;br /&gt;
             $7C $0F $7F $06 $3B $16 $DE $6E $76 $07 $C7 $44 $20 [$FFA6W]  $EB #If right of Keen speed = FFA6&lt;br /&gt;
             $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$004EW]  $5E $5D $C3         #Else speed = $5A, start animation = $4E&lt;br /&gt;
&lt;br /&gt;
#Butler bot&lt;br /&gt;
%patch $1777 $55 $8B $EC $56 $E8 $11B7W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $C9C4W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C9B5W  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$005AW]  #Start speed = $5A&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E $7F $10 $7C $06 $3B $16&lt;br /&gt;
             $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89 $44 $20 $C7 $44 $32&lt;br /&gt;
         {$1DC7W}  $C7 $44 $34 {$1E94W}  $C7 $44 $28 [$0060W]  $5E $5D $C3         #Behavior 1DC7, death 1E94, start animation $60&lt;br /&gt;
&lt;br /&gt;
#Tank bot&lt;br /&gt;
%patch $1713 $55 $8B $EC $56 $E8 $121BW  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $CA28W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CA19W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $20 [$005AW]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start speed = $5A&lt;br /&gt;
             $7F $10 $7C $06 $3B $16 $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89&lt;br /&gt;
             $44 $20 $C7 $44 $32 {$1F75W}  $C7 $44 $34 {$2045W}  $C7 $44 $28     #Start behavior at $1F75W death at $2045&lt;br /&gt;
          [$006AW]  $5E $5D $C3                                                #Start animation $6A&lt;br /&gt;
&lt;br /&gt;
#Falling block&lt;br /&gt;
%patch $18E3 $55 $8B $EC $56 $E8 $104BW  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $C858W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C849W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3360W}  #Start behavior at $3360 (Nothing)&lt;br /&gt;
             $C7 $44 $34 {$22BBW}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Death $22BB, start (and only) animation $72&lt;br /&gt;
&lt;br /&gt;
#Ice cubes&lt;br /&gt;
%patch $1920 $55 $8B $EC $56 $E8 $1057W  $8B $F0 $C7 $44 $08 $0003W  $C7 $44 #No sprite type or other properties&lt;br /&gt;
             $22 {$204AW}  $8B $46 $08 $89 $44 $0A $8B $46 $04 $99 $89 $04 $89 #Call Canon behavior at $204A&lt;br /&gt;
             $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54 $06 $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 1 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $09 and its location is $168A. This actually greatly simplifies the Keen 1 code, and as such is used in preference to the above default code as it flows more logically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Re-write the core switch statement.&lt;br /&gt;
%patch $161D $4B $83 $FB [$09] $76 $0A $81 $FB $FE $00 $0F $84 $A0 $00 $E9 $C1&lt;br /&gt;
             $00 $D1 $E4 $2E $D1 $E3 $2E $FF $A7 {$168AW}&lt;br /&gt;
#Combine the ice-launchers&lt;br /&gt;
%patch $16B1 $D1 $EB $83 $EB $05 $53&lt;br /&gt;
&lt;br /&gt;
#Locations of jumps to sprite spawn code&lt;br /&gt;
%patch $168A {$1656W} #Yorp&lt;br /&gt;
             {$1661W} #Garg&lt;br /&gt;
             {$166CW} #Vorticon&lt;br /&gt;
             {$1676W} #Butler&lt;br /&gt;
             {$1680W} #Tank&lt;br /&gt;
             {$16B1W} #Ice Launcher 1&lt;br /&gt;
             {$16B1W} #Ice Launcher 2&lt;br /&gt;
             {$16B1W} #Ice Launcher 3&lt;br /&gt;
             {$16B1W} #Ice Launcher 4&lt;br /&gt;
             {$16C1W} #Falling Block&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 2 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 2]] is much more regular than Keen 1 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $3BE2W directs the game to the list at $3BE2. The standard sprite list is 3 + 1 = 4 entries long. Other sprite types are more difficult to work with. Types 5, 6, 7 and 255 have their own separate codes that are jumped to directly, for reasons unknown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3B4A {$3BE2W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $3B3F [$03]&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $3BE2 [$3B5EW] #Vorticon (At $3B5E)&lt;br /&gt;
             [$3B68W] #Youth (At $3B68)&lt;br /&gt;
             [$3B72W] #Vorticon Elite (At $3B72)&lt;br /&gt;
             [$3B7CW] #Scrub (At $3B7C)&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $3B37 [$05] $74 $4C    #Robot (At $3B86)&lt;br /&gt;
%patch $3B4E [$06] $74 $3F    #Platform (At $3B90)&lt;br /&gt;
%patch $3B53 [$07] $74 $44    #Tantalus spark (At $3B9A)&lt;br /&gt;
%patch $3B58 [$00FFW] $74 $48 #Keen (At $3BA4)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 2 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3B5E $57 $56 $E8 $0087W  $83 $C4 $04 $EB $60 #Goes to Vorticon (Code at $3B5E + $87 + $5 = $3BEA)&lt;br /&gt;
%patch $3B68 $57 $56 $E8 $00DFW  $83 $C4 $04 $EB $56 #Goes to Youth (Code at $3B68 + $DF + $5 = $3C4C)&lt;br /&gt;
%patch $3B72 $57 $56 $E8 $0137W  $83 $C4 $04 $EB $4C #Goes to Elite (Code at $3B72 + 137 + $5 = $3CAE)&lt;br /&gt;
%patch $3B7C $57 $56 $E8 $018FW  $83 $C4 $04 $EB $42 #Goes to Scrub (Code at $3B7C + 18F + $5 = $3D10)&lt;br /&gt;
%patch $3B86 $57 $56 $E8 $01C2W  $83 $C4 $04 $EB $38 #Goes to Robot (Code at $3B86 + 1C2 + $5 = $3D4D)&lt;br /&gt;
%patch $3B90 $57 $56 $E8 $01FFW  $83 $C4 $04 $EB $2E #Goes to Platform (Code at $3B90 + 1FF + $5 = $3D94)&lt;br /&gt;
%patch $3B9A $57 $56 $E8 $023DW  $83 $C4 $04 $EB $24 #Goes to Tantalus (Code at $3B9S + 23D + $5 = $3DDC)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $3BA4 $8B $C6 $99 $B1 $0C $E8 $9CD5W  $A3 $6EBAW  $89 $16 $6EBCW&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $9CC6W  $05 [$0800W]  $83 $D2 $00 $A3 $6EBEW&lt;br /&gt;
             $89 $16 $6EC0W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 2 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. &lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon spawning code&lt;br /&gt;
%patch $3BEA $55 $8B $EC $56 $E8 $1B86W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $9C81W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C72W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3E19W}  #Behavior = $3E19&lt;br /&gt;
             $C7 $44 $34 {$3F8CW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $3F8C, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0052W]  $5E #Speed +-90, sprite = $52&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Youth spawning code&lt;br /&gt;
%patch $3C4C $55 $8B $EC $56 $E8 $1B24W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $9C1FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C10W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3FCCW}  #Behavior = $3FCC&lt;br /&gt;
             $C7 $44 $34 {$4093W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $4094, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$0030W]  $5E #Speed +-250, sprite = $30&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Elite spawning code&lt;br /&gt;
%patch $3CAE $55 $8B $EC $56 $E8 $1AC2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $9BBDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9BAEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$40CEW}  #Behavior = $40CE&lt;br /&gt;
             $C7 $44 $34 {$4283W}  $C7 $44 $24 [$0002W]  $8B $44 $06 $8B $54 $04 #Collision = $4283, health = 2&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF9CW]  $EB $05 $C7 $44 $20 [$0064W]  $C7 $44 $28 [$0058W]  $5E #Speed +-100, sprite = $58&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Scrub spawning code&lt;br /&gt;
%patch $3D10 $55 $8B $EC $56 $E8 $1A60W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $9B5BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B4CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$42C1W}  #Behavior = $42C1&lt;br /&gt;
             $C7 $44 $34 {$4507W}  $C7 $44 $28 [$0066W]  $5E $5D $C3             #Collision = $4507, sprite = $66&lt;br /&gt;
&lt;br /&gt;
#Guard Robot spawning code&lt;br /&gt;
%patch $3D4D $55 $8B $EC $56 $E8 $1A23W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $9B1EW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B0FW  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$0064W]  #Speed = 100&lt;br /&gt;
             $C7 $44 $32 {$4539W}  $C7 $44 $34 {$4677W}  $C7 $44 $24 $63 $00 $C7 #Behavior = $4539, collision = $4677, sprite = $78&lt;br /&gt;
             $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Platform spawning code&lt;br /&gt;
%patch $3D94 $55 $8B $EC $56 $E8 $19DCW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $9AD7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9AC8W  $05 [$FC00W]  $83 $D2 $FF $89 $44 $08 $89 $54 #Spawn $FC00 down&lt;br /&gt;
             $0A $C7 $44 $32 {$467CW}  $C7 $44 $34 {$61A2W}  $C7 $44 $28 [$007EW]  #Behavior = $467C, collision = $61A2, speed = $7E, sprite = $4B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Tantalus spawning code&lt;br /&gt;
%patch $3DDC $55 $8B $EC $56 $E8 $1994W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $9A8FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9A80W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}  #Behavior = $46DF, collision = $4716, sprite = $80&lt;br /&gt;
             $C7 $44 $34 {$4716W}  $C7 $44 $28 [$0080W]  $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 2 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $07 and its location is $3B83. This allows several more sprites to be added to the game (here just one new one is added.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Regularized Keen 2 spawning code&lt;br /&gt;
%patch $3B35 $81 $FB $00FFW  $74 $69 $4B $83 $FB [$07] $76 $03 $E9 $0084W  $D1&lt;br /&gt;
             $E3 $2E $FF $A7 $3B83W&lt;br /&gt;
%patch $3B4B $57 $56 $E8 $009AW  $EB $4D $57 $56 $E8 $00F5W  $EB $46&lt;br /&gt;
             $57 $56 $E8 $0150W  $EB $3F $57 $56 $E8 $01ABW  $EB $38&lt;br /&gt;
             $57 $56 $E8 $01E1W  $EB $31 $57 $56 $E8 $0221W  $EB $2A&lt;br /&gt;
             $57 $56 $E8 $0262W  $EB $23 $57 $56 $E8 $CF71W  $EB $1C&lt;br /&gt;
%patch $3B83 $3B4BW  $3B52W  $3B59W  $3B60W  $3B67W  $3B6EW  $3B75W  $3B7CW&lt;br /&gt;
&lt;br /&gt;
#New sprite spawn, immortal, platform type, Tantalus behavior&lt;br /&gt;
%patch $0AF2 $55 $8B $EC $56 $E8 $4C7EW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04&lt;br /&gt;
             $99 $B1 $0C $E8 $CD79W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CD6AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}&lt;br /&gt;
             $C7 $44 $34 {$4677W}  $C7 $44 $28 $0010W  $C7 $44 $20 [$0049W]  $5E&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 3 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 3]] is much more regular than Keen 1 or 2 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. However Keen 3 has one important different. The primary list is a &#039;number list&#039; that gives values in the sprite plane that are converted to various sprites. (For example value 1 in the sprite plane becomes sprite 1, the Vorticon. Value 255 becomes sprite 19, or Keen.) Both this list and the pointer list are the same length, controlled by a single variable, the list length. This is in entries, or words; two bytes long. (So the list length in bytes is this value * 2) The location of the pointer list is a number of bytes after the number list (So changing the number list&#039;s location also changes the pointer list location.) By default this value is the length of the number list in bytes so that both lists form a solid block of data. Also notable is the &#039;Vorticon 2&#039; which has its own sprite number, yet has the same pointer as the Vorticon meaning this sprite is just an unnecessary additional Vorticon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 Initiation lists&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3ACA {$3BD4W} #Number&lt;br /&gt;
%patch $3ADE [$26]    #Pointer list is this many bytes after number list (3BD4 + 26 = 3BFA)&lt;br /&gt;
&lt;br /&gt;
#List lengths (in words, = byte length/2)&lt;br /&gt;
%patch $3AC7 $0013W&lt;br /&gt;
&lt;br /&gt;
#Number list&lt;br /&gt;
%patch $3BD4 [$0001W] #Vorticon&lt;br /&gt;
%patch $3BD6 [$0002W] #Vortikid&lt;br /&gt;
%patch $3BD8 [$0003W] #Vortimom&lt;br /&gt;
%patch $3BDA [$0004W] #Meep&lt;br /&gt;
%patch $3BDC [$0005W] #Vortininja&lt;br /&gt;
%patch $3BDE [$0006W] #Foob&lt;br /&gt;
%patch $3BE0 [$0007W] #Ball&lt;br /&gt;
%patch $3BE2 [$0008W] #Jack&lt;br /&gt;
%patch $3BE4 [$0009W] #H Platform&lt;br /&gt;
%patch $3BE6 [$000AW] #V Platform&lt;br /&gt;
%patch $3BE8 [$000BW] #Vorticon 2&lt;br /&gt;
%patch $3BEA [$000CW] #Purple Spark&lt;br /&gt;
%patch $3BEC [$000DW] #Heart&lt;br /&gt;
%patch $3BEE [$000EW] #Gun across&lt;br /&gt;
%patch $3BF0 [$000FW] #Gun down&lt;br /&gt;
%patch $3BF2 [$0010W] #MM Hand&lt;br /&gt;
%patch $3BF4 [$0011W] #MM Left foot&lt;br /&gt;
%patch $3BF6 [$0012W] #MM Right foot&lt;br /&gt;
%patch $3BF8 [$00FFW] #Keen&lt;br /&gt;
&lt;br /&gt;
#Pointer list&lt;br /&gt;
%patch $3BFA [$3ADFW] #Vorticon&lt;br /&gt;
%patch $3BFC [$3AE9W] #Vortikid&lt;br /&gt;
%patch $3BFE [$3AF3W] #Vortimom&lt;br /&gt;
%patch $3C00 [$3AFDW] #Meep&lt;br /&gt;
%patch $3C02 [$3B07W] #Vortininja&lt;br /&gt;
%patch $3C04 [$3B11W] #Foob&lt;br /&gt;
%patch $3C06 [$3B1BW] #Ball&lt;br /&gt;
%patch $3C08 [$3B25W] #Jack&lt;br /&gt;
%patch $3C0A [$3B2FW] #H Platform&lt;br /&gt;
%patch $3C0C [$3B39W] #V Platform&lt;br /&gt;
%patch $3C0E [$3B42W] #Vorticon 2&lt;br /&gt;
%patch $3C10 [$3B4BW] #Purple Spark&lt;br /&gt;
%patch $3C12 [$3B54W] #Heart&lt;br /&gt;
%patch $3C14 [$3B5DW] #Gun across&lt;br /&gt;
%patch $3C16 [$3B66W] #Gun down&lt;br /&gt;
%patch $3C18 [$3B6FW] #Hand&lt;br /&gt;
%patch $3C1A [$3B78W] #Left Foot&lt;br /&gt;
%patch $3C1C [$3B86W] #Right foot&lt;br /&gt;
%patch $3C1E [$3B94W] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for the various sprites are quite simple. each simply tells the game a new sprite is going to be produced, then jumps to that sprite&#039;s spawn code. The finishing code is run by all sprite initiation codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3ADF $56 $57 $E8 $013CW  $59 $59 $E9 $00D1W				#Goes to Vorticon (Code at $3ADF + $13C + 5 = $3C20)&lt;br /&gt;
%patch $3AE9 $56 $57 $E8 $0194W  $59 $59 $E9 $00C7W				#Goes to Vortikid (Code at $3AE9 + $194 + 5 = $3C82)&lt;br /&gt;
%patch $3AF3 $56 $57 $E8 $01ECW  $59 $59 $E9 $00BDW				#Goes to Vortimom (Code at $3AF3 + $1EC + 5 = $3CE4)&lt;br /&gt;
%patch $3AFD $56 $57 $E8 $0244W  $59 $59 $E9 $00B3W				#Goes to Meep (Code at $3AFD + $244 + 5 = $3D46)&lt;br /&gt;
%patch $3B07 $56 $57 $E8 $02A2W  $59 $59 $E9 $00A9W				#Goes to Vortininja (Code at $3B07 + $2A2 + 5 = $3DAE)&lt;br /&gt;
%patch $3B11 $56 $57 $E8 $02FAW  $59 $59 $E9 $009FW				#Goes to Foob (Code at $3B11 + $2FA + 5 = $3E10)&lt;br /&gt;
%patch $3B1B $56 $57 $E8 $0352W  $59 $59 $E9 $0095W				#Goes to Ball (Code at $3B1B + $352 + 5 = $3E72)&lt;br /&gt;
%patch $3B25 $56 $57 $E8 $03CAW  $59 $59 $E9 $008BW				#Goes to Jack (Code at $3B25 + $3CA + 5 = $3EF4)&lt;br /&gt;
%patch $3B2F $56 $57 $E8 $0442W  $59 $59 $E9 $0081W				#Goes to H Platform (Code at $3B2F + $442 + 5 = $3F76)&lt;br /&gt;
%patch $3B39 $56 $57 $E8 $0480W  $59 $59 $EB $78				#Goes to V Platform (Code at $3B39 + $480 + 5 = $3FBE)&lt;br /&gt;
%patch $3B42 $56 $57 $E8 $00D9W  $59 $59 $EB $6F				#Goes to Vorticon (Code at $3B42 + $D9 + 5 = $3C20)&lt;br /&gt;
%patch $3B4B $56 $57 $E8 $0516W  $59 $59 $EB $66				#Goes to Purple Spark (Code at $3B4B + $516 + 5 = $4066)&lt;br /&gt;
%patch $3B54 $56 $57 $E8 $054AW  $59 $59 $EB $5D				#Goes to Heart (Code at $3B54 + $54A + 5 = $40A3)&lt;br /&gt;
%patch $3B5D $56 $57 $E8 $049EW  $59 $59 $EB $54				#Goes to Gun across (Code at $3B5D + $49E + 5 = $4000)&lt;br /&gt;
%patch $3B66 $56 $57 $E8 $04C8W  $59 $59 $EB $4B				#Goes to Gun down (Code at $3B66 + $4C8 + 5 = $4033)&lt;br /&gt;
%patch $3B6F $56 $57 $E8 $056CW  $59 $59 $EB $42				#Goes to Hand (Code at $3B6F + $56C + 5 = $40E0)&lt;br /&gt;
%patch $3B78 $B8 $FFFFW  $50 $56 $57 $E8 $0597W  $83 $C4 $06 $EB $34		#Goes to Left foot (Code at $3B78 + $597 + 9 = $4118)&lt;br /&gt;
%patch $3B86 $B8 $0001W  $50 $56 $57 $E8 $0589W  $83 $C4 $06 $EB $26		#Goes to Right foot (Code at $3B86 + $589 + 9 = $4118)&lt;br /&gt;
%patch $3B94 $8B $C7 $99 $B1 $0C $E8 $25 $A3B0W  $0A $71 $89 $16 $0C $71 $8B	#Goes to Keen (Code at $3B94 + $B016 + 5 = $EBAA)&lt;br /&gt;
             $C6 $99 $B1 $0C $E8 $B016W  $05 $00 $08 $83 $D2 $00 $A3 $0E $71&lt;br /&gt;
             $89 $16 $10 $71 $EB $00&lt;br /&gt;
%patch $3BBA $47 $3B $3E $34 $6E $7D $03 $E9 $E6 $FE $46 $3B $36 $84 $6E $7D	#Finisher&lt;br /&gt;
             $03 $E9 $D7 $FE $5F $5E $8B $E5 $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 3 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. Notice that the left and right foot of the Mangling Machine use the same spawn code, and that both the MM hands and feet are [[Patch:Meta sprites|metasprites]] not sprites.&lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $3C20 $55 $8B $EC $56 $E8 $2396W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $AF8BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF7CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$414AW}  #Behavior = $414A&lt;br /&gt;
             $C7 $44 $34 {$42D0W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $42D0, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44 #Check for Keen&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0047W]  $5E #Speed +-5A sprite = 47&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortikid&lt;br /&gt;
%patch $3C82 $55 $8B $EC $56 $E8 $2334W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $AF29W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF1AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4311W}  #Behavior = $4311&lt;br /&gt;
             $C7 $44 $34 {$43D9W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $43D9, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$002FW]  $5E #Speed +-250, sprite = 2F&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortimom&lt;br /&gt;
%patch $3CE4 $55 $8B $EC $56 $E8 $22D2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $AEC7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AEB8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$440CW}  #Behavior = $440C&lt;br /&gt;
             $C7 $44 $34 {$470CW}  $C7 $44 $24 [$0005W]  $8B $44 $06 $8B $54 $04 #Collision = $470C, health = 5&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$0055W]  $5E #Speed +-50, sprite = 55&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Meep&lt;br /&gt;
%patch $3D46 $55 $8B $EC $56 $E8 $2270W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AE65W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AE56W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4746W}  $C7 $44 $34 {$4898W}  $C7 $44 $24 [$0001W]  #Behavior = $4746 Collision = $4898, health = 1&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $0C $71 $7C $0F $7F $06 $3B $16&lt;br /&gt;
             $0A $71 $76 $07 $C7 $44 $20 [$FFBFW]  $EB $05 $C7 $44 $20 [$0041W]  #Speed +-65, sprite = 78&lt;br /&gt;
             $C7 $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortininja&lt;br /&gt;
%patch $3DAE $55 $8B $EC $56 $E8 $2208W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $ADFDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ADEEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32{ $48F7W}  #Behavior = $48F7&lt;br /&gt;
             $C7 $44 $34 {$49CDW}  $C7 $44 $24 [$0003W]  $8B $44 $06 $8B $54 $04 #Collision $49CD, health = 3&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFFFW]  $EB $05 $C7 $44 $20 [$0001W]  $C7 $44 $28 [$004DW]  $5E #Face Keen, sprite = 4D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Foob&lt;br /&gt;
%patch $3E10 $55 $8B $EC $56 $E8 $21A6W  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $AD9BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD8CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4A0CW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$4B7EW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $4B 7E, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$005DW]  $5E #Speed +-50, sprite = 5D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Ball&lt;br /&gt;
%patch $3E72 $55 $8B $EC $56 $E8 $2144W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $AD39W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD2AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C0BW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006DW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Jack&lt;br /&gt;
%patch $3EF4 $55 $8B $EC $56 $E8 $20C2W  $8B $F0 $C7 $04 [$0009W]  $8B $46 $04 #Sprite type = 9&lt;br /&gt;
             $99 $B1 $0C $E8 $ACB7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ACA8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4BBDW}  #Behavior = $4BBD&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006EW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H Platform&lt;br /&gt;
%patch $3F76 $55 $8B $EC $56 $E8 $2040W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $AC35W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AC26W  $05 $00 $FC $83 $D2 $FF $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4C47W}  $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]   #Behavior = $4C47, Collision $6A00 Sprite = 6B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3                                 #Speed = +76&lt;br /&gt;
&lt;br /&gt;
#V Platform&lt;br /&gt;
%patch $3FBE $55 $8B $EC $56 $E8 $1FF8W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $ABEDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ABDEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C47W}  #Behavior = $4C47&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]  $C7 $44 $22 [$004BW]  $5E   #Collision $6A00, Sprite = 6B, Speed = +76&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H gun&lt;br /&gt;
%patch $4000 $55 $8B $EC $56 $E8 $2001W  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $ABAAW  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB9CW  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D34W}  $5E $5D $C3 #Behavior = $4D34&lt;br /&gt;
&lt;br /&gt;
#V gun&lt;br /&gt;
%patch $4033 $55 $8B $EC $56 $E8 $1FCEW  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AB77W  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB69W  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D9BW}  $5E $5D $C3 #Behavior = $4D9B&lt;br /&gt;
&lt;br /&gt;
#Purple Spark&lt;br /&gt;
%patch $4066 $55 $8B $EC $56 $E8 $1F50W  $8B $F0 $C7 $04 [$000DW]  $8B $46 $04 #Sprite type = 13&lt;br /&gt;
             $99 $B1 $0C $E8 $AB45W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AB36W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4E02W}  #Behavior = $4E02&lt;br /&gt;
             $C7 $44 $34 {$4E19W}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Collision $4E19, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#Heart&lt;br /&gt;
%patch $40A3 $55 $8B $EC $56 $E8 $1F13W  $8B $F0 $C7 $04 [$000CW]  $8B $46 $04 #Sprite type = 12&lt;br /&gt;
             $B1 $0C $E8 $AB08W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99 $B1&lt;br /&gt;
             $0C $E8 $AAF9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4EA6W}  $C7 #Behavior = $4EA6&lt;br /&gt;
             $44 $34 {$4EBEW}  $C7 $44 $28 [$0072W]  $5E $5D $C3                 #Collision $4EBE, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#MM Hand (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $40E0 $55 $8B $EC $56 $E8 $1F21W  $8B $F0 $C7 $44 $08 [$0006W]  $8B $46 #Sprite type = 6&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $C7 $44 $22 {$50F4W}  $C7 $44 $0C [$0000W]  $C7 $44 $0A [$0001W]  #Direction = right, up&lt;br /&gt;
             $C7 $44 $0E $000FW  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#MM Feet (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $4118 $55 $8B $EC $56 $E8 $1EE9W  $8B $F0 $C7 $44 $08 [$0007W]  $8B $46 #Sprite type = 7&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $8B $46 $08 $89 $44 $0A $89 $44 $0E $C7 $44 $22 {$52F1W}  $5E #Behavior = $52F1&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen Dreams =&lt;br /&gt;
&lt;br /&gt;
[[Keen Dreams]] is similar to Keen Galaxy in that there are two kinds of pointers, &#039;short&#039; (two-byte) pointers used in the pointer list and &#039;long&#039; (four byte) pointers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
Pointers in Dreams are different from those in Vorticons in that they require a value to be added to them to get the actual location they refer to. In Dreams this is $44D0. So a pointer with the value $04FCW actually refers to code at $04FC + $44D0 = $49CC. Interestingly infoplane values are used for both sprites and level entrances on the map. This means that if extra levels are desired some sprites will have to be overwritten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($44D0 + $050DW = $49DD)&lt;br /&gt;
%patch $4774 [$050DW]&lt;br /&gt;
&lt;br /&gt;
#Length of list (60 items)&lt;br /&gt;
%patch $4769 [$3C]&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is 44D0)&lt;br /&gt;
%patch $49DD [$02A6W] #Keen right (At $4776)&lt;br /&gt;
%patch $49DF [$02BDW] #Keen left (At $478D)&lt;br /&gt;
%patch $49E1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49ED [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FD [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A01 [$02D4W] #Map Keen (At $47A4)&lt;br /&gt;
%patch $4A03 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A05 [$02F3W] #100 Pts (At $47C3)&lt;br /&gt;
%patch $4A07 [$02F3W] #200 Pts (At $47C3)&lt;br /&gt;
%patch $4A09 [$02F3W] #500 Pts (At $47C3)&lt;br /&gt;
%patch $4A0B [$02F3W] #1000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0D [$02F3W] #2000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0F [$02F3W] #5000 Pts (At $47C3)&lt;br /&gt;
%patch $4A11 [$02F3W] #1UP (At $47C3)&lt;br /&gt;
%patch $4A13 [$02F3W] #Eye (At $47C3)&lt;br /&gt;
%patch $4A15 [$02F3W] #Flower Power (At $47C3)&lt;br /&gt;
%patch $4A17 [$02F3W] #Flower Pot (At $47C3)&lt;br /&gt;
%patch $4A19 [$02EDW] #Boobus Bomb (At $47BD)&lt;br /&gt;
%patch $4A1B [$02F3W] #Key (At $47C3)&lt;br /&gt;
%patch $4A1D [$0316W] #Door (At $47E6)&lt;br /&gt;
%patch $4A1F [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A21 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A23 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A25 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A27 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A29 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2D [$0332W] #Broccolash (At $4802)&lt;br /&gt;
%patch $4A2F [$0354W] #Tomatooth (At $4824)&lt;br /&gt;
%patch $4A31 [$0376W] #Carrot Courier (At $4846)&lt;br /&gt;
%patch $4A33 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A35 [$0398W] #Asparagusto (At $4868)&lt;br /&gt;
%patch $4A37 [$03BAW] #Sour Grape (At $488A)&lt;br /&gt;
%patch $4A39 [$03DCW] #Tater Trooper (At $48AC)&lt;br /&gt;
%patch $4A3B [$03FEW] #Minecart (At $48CE)&lt;br /&gt;
%patch $4A3D [$0417W] #Frenchy (At $48E7)&lt;br /&gt;
%patch $4A3F [$0439W] #Melon Lips left (At $4909)&lt;br /&gt;
%patch $4A41 [$0439W] #Melon Lips right (At $4909)&lt;br /&gt;
%patch $4A43 [$0439W] #Melon Lips down (At $4909)&lt;br /&gt;
%patch $4A45 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A47 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A49 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4D [$0462W] #Squasher (At $4932)&lt;br /&gt;
%patch $4A4F [$0483W] #Apel (At $4953)&lt;br /&gt;
%patch $4A51 [$04A4W] #Pea Pod (At $4974)&lt;br /&gt;
%patch $4A53 [$04C5W] #Pea Brain (At $4995)&lt;br /&gt;
%patch $4A55 [$04E6W] #Boobus Tuber (At $49B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to those in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
The first and most important thing is sprite cache. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $70xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Brocolash&#039;s cache is $BC, the Tomatooth&#039;s is $BE (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the [[Patch:Pea Brain|Pea Brain]] uses the same cache as the [[Patch:Pea Pod|Pea Pod]]; this may be because the Pea Brain is never used in Keen Dreams by default and so is &#039;slaved&#039; to the Pea Pod.&lt;br /&gt;
&lt;br /&gt;
The call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $05E80CFFRL. All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;Blank&#039; code. These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right Keen initiation code&lt;br /&gt;
%patch $4776 $B8 $0001W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $023FW&lt;br /&gt;
&lt;br /&gt;
#Left Keen initiation code&lt;br /&gt;
%patch $478D $B8 $FFFFW  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $0228W&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $47A4 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80B20RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70BAW  $0001W  $E9 $020FW&lt;br /&gt;
&lt;br /&gt;
#Boobus Bomb (Uses following item initiation code)&lt;br /&gt;
%patch $47BD $C7 $06 $704CW  $0001W &lt;br /&gt;
&lt;br /&gt;
#Items initiation code&lt;br /&gt;
%patch $47C3 $A1 $70ACW  $2D [$0015W]  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $07C504A3RL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W &lt;br /&gt;
             $E9 $01E6W&lt;br /&gt;
&lt;br /&gt;
#Door initiation code&lt;br /&gt;
%patch $47E6 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50323RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $E9 $01CAW&lt;br /&gt;
&lt;br /&gt;
#Broccolash initiation code&lt;br /&gt;
%patch $4802 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50546RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BCW  $0001W  $E9&lt;br /&gt;
             $01A8W&lt;br /&gt;
&lt;br /&gt;
#Tomatooth initiation code&lt;br /&gt;
%patch $4824 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5060ARL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BEW  $0001W  $E9&lt;br /&gt;
             $0186W&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier initiation code&lt;br /&gt;
%patch $4846 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5078DRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C0W  $0001W  $E9&lt;br /&gt;
             $0164W&lt;br /&gt;
&lt;br /&gt;
#Asparagusto initiation code&lt;br /&gt;
%patch $4868 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50896RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C2W  $0001W  $E9&lt;br /&gt;
             $0142W&lt;br /&gt;
&lt;br /&gt;
#Sour Grape initiation code&lt;br /&gt;
%patch $488A $FF $36 $7052W  $FF $36 $7050W  $9A $07C508D4RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C4W  $0001W  $E9&lt;br /&gt;
             $0120W&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper initiation code&lt;br /&gt;
%patch $48AC $FF $36 $7052W  $FF $36 $7050W  $9A $08680006RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C6W  $0001W  $E9&lt;br /&gt;
             $00FEW&lt;br /&gt;
&lt;br /&gt;
#Minecart initiation code&lt;br /&gt;
%patch $48CE $FF $36 $7052W  $FF $36 $7050W  $9A $08680100RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70C8W  $0001W  $E9 $00E5W&lt;br /&gt;
&lt;br /&gt;
#Frenchy initiation code&lt;br /&gt;
%patch $48E7 $FF $36 $7052W  $FF $36 $7050W  $9A $086801E1RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CAW  $0001W  $E9&lt;br /&gt;
             $00C3W&lt;br /&gt;
&lt;br /&gt;
#Melon initiation code&lt;br /&gt;
%patch $4909 $A1 $70ACW  $2D $0032W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $0868035ERL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W&lt;br /&gt;
             $C7 $06 $70CCW  $0001W  $E9 $009AW&lt;br /&gt;
&lt;br /&gt;
#Squasher initiation code&lt;br /&gt;
%patch $4932 $FF $36 $7052W  $FF $36 $7050W  $9A $086807BFRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CEW  $0001W  $EB&lt;br /&gt;
             $79&lt;br /&gt;
&lt;br /&gt;
#Apel initiation code&lt;br /&gt;
%patch $4953 $FF $36 $7052W  $FF $36 $7050W  $9A $086808C8RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D0W  $0001W  $EB&lt;br /&gt;
             $58&lt;br /&gt;
&lt;br /&gt;
#Pea Pod initiation code&lt;br /&gt;
%patch $4974 $FF $36 $7052W  $FF $36 $7050W  $9A $08680B67RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $37&lt;br /&gt;
&lt;br /&gt;
#Pea Brain initiation code&lt;br /&gt;
%patch $4995 $FF $36 $7052W  $FF $36 $7050W  $9A $08680AE9RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $16&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber initiation code&lt;br /&gt;
%patch $49B6 $FF $36 $7052W  $FF $36 $7050W  $9A $08680C8ARL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70D4W  $0001W&lt;br /&gt;
&lt;br /&gt;
#BLANK (All initiation codes jump to this)&lt;br /&gt;
%patch $49CC $8B $1E $3E $70 $83 $7F $02 $02 $74 $05 $C7 $47 $02 $0000W  $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type]] and &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly.&lt;br /&gt;
&lt;br /&gt;
Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything. However it is often used even when this is not the case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen spawn code&lt;br /&gt;
%patch $69A0 $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $83 $3E {$70EEW}  [$00]&lt;br /&gt;
             {$75} $11 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3&lt;br /&gt;
             $E0 $EB $0D $8B $1E $34 $70 $A1 $70EEW  $89 $47 $0A $A1 $70F0W &lt;br /&gt;
             $89 $47 $0C $8B $1E $34 $70 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0001W]&lt;br /&gt;
                 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $C7 $47 $3E [$0006W]&lt;br /&gt;
             $C7 $47 $40 [$0003W]  $C7 $47 $20 [$00D7W]  $B8 [$0D3AW]  $50 $FF $36&lt;br /&gt;
             $34 $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen spawn code&lt;br /&gt;
%patch $6B7F $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]&lt;br /&gt;
             $C7 $47 $06 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0ED8W]  $50 $FF $36 $34 $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door spawn code&lt;br /&gt;
%patch $7F73 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0003W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$FFFFW]  $C7 $47 $06 [$0000W]  $B8 [$1732W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $80F3 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $47 $06 [$0000W]  $C7 $07 [$0004W]  $8B $46&lt;br /&gt;
             $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $83 $FE [$09] {$75} $05 $81 {$0C6FW}  [$0080W]  $8B $1E $3E $70 $C7 $47&lt;br /&gt;
             $10 [$FFFFW]  $89 $77 $3E $8B $DE $D1 $E3 $8B $87 [$19A8W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $20 $89 $47 $40 $83 $FE [$07] {$74} $07 $8B $47 $40&lt;br /&gt;
             $40 $40 $EB $0A $8B $1E $3E $70 $8B $47 $40 $05 [$0004W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $42 $B8 [$196CW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Broccolash spawn code&lt;br /&gt;
%patch $8196 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$19C0W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Tomatooth spawn code&lt;br /&gt;
%patch $825A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0006W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$1B46W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier spawn code&lt;br /&gt;
%patch $83DD $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0007W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1B82W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Asparagusto spawn code&lt;br /&gt;
%patch $84E6 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0009W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $B8 [$1C18W]  $50&lt;br /&gt;
             $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sour Grape spawn code&lt;br /&gt;
%patch $8524 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000AW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $B8 [$1C90W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4&lt;br /&gt;
             $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper spawn code&lt;br /&gt;
%patch $8686 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000BW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1D08W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Minecart spawn code&lt;br /&gt;
%patch $8780 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000CW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FFD0W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $C7 $47 $02 [$0002W]  $B8 [$1DDAW]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Frenchy spawn code&lt;br /&gt;
%patch $8861 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000DW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1E16W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Melon spawn code&lt;br /&gt;
%patch $89DE $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $07 [$000EW] $8B $46 $06 $B1 $08 $D3 $E0&lt;br /&gt;
             $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $0B $F6 $74 $07 $C7&lt;br /&gt;
             $47 $0E [$0001W]  $EB $09 $8B $1E $3E $70 $C7 $47 $0E [$FFFFW]  $83&lt;br /&gt;
             $FE [$02] {$7D} $05 $B8 [$1F9CW]  $EB $03 $B8 [$1FF6W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $9A $16C40026RL     $D1 $F8&lt;br /&gt;
             $8B $1E $3E $70 $89 $47 $1A $89 $77 $3E $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Squasher spawn code&lt;br /&gt;
%patch $8E3F $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0013W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$20C8W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Apel spawning code&lt;br /&gt;
%patch $8F48 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0014W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$215EW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Brain spawn code&lt;br /&gt;
%patch $9169 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0016W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $B8 [$22A8W]  $50 $FF $36 $3E $70 $9A&lt;br /&gt;
             $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Pod spawn code&lt;br /&gt;
%patch $91E7 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0015W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$2320W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber spawn code&lt;br /&gt;
%patch $930A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0017W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FA80W]  $89 $47 $0C $C7 $47 $0E [$FFFFW] $B8&lt;br /&gt;
             [$23D4W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $8B&lt;br /&gt;
             $1E $3E $70 $C7 $47 $44 [$000CW]  $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 4 =&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
The initiation pointer list pointers are short and require another value to be added to them to give the location to which they refer. (Thus in Keen 4 a value of $0064 actually points to code at $E8F0 + $0064 = $E954.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E8F0 + $0595 = $EE85)&lt;br /&gt;
%patch $E952 $0595W&lt;br /&gt;
&lt;br /&gt;
#Length of list (88 items)&lt;br /&gt;
%patch $E947 $57&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is E8F0)&lt;br /&gt;
%patch $EE85 [$0064W] #Right Facing Keen (At $E954)&lt;br /&gt;
%patch $EE87 [$0090W] #Left Facing Keen (At $E980)&lt;br /&gt;
%patch $EE89 [$00BCW] #Map Keen (At $E9AC)&lt;br /&gt;
%patch $EE8B [$00E4W] #Council Member (At $E9D4)&lt;br /&gt;
%patch $EE8D [$010DW] #Easy Berkeloid (At $E9FD)&lt;br /&gt;
%patch $EE8F [$0122W] #Lindsey (At $EA12)&lt;br /&gt;
%patch $EE91 [$014BW] #Easy Wormouth (At $EA3B)&lt;br /&gt;
%patch $EE93 [$0174W] #Easy Skypest (At $EA64)&lt;br /&gt;
%patch $EE95 [$0189W] #Cloud (At $EA79)&lt;br /&gt;
%patch $EE97 [$019EW] #Foot (At $EA8E)&lt;br /&gt;
%patch $EE99 [$01CDW] #Inchworm (At $EABD)&lt;br /&gt;
%patch $EE9B [$01FCW] #Bounder (At $EAEC)&lt;br /&gt;
%patch $EE9D [$0211W] #Egg (At $EB01)&lt;br /&gt;
%patch $EE9F [$0240W] #Easy Lick (At $EB30)&lt;br /&gt;
%patch $EEA1 [$0269W] #Easy Dopefish (At $EB59)&lt;br /&gt;
%patch $EEA3 [$027EW] #Schoolfish (At $EB6E)&lt;br /&gt;
%patch $EEA5 [$02A7W] #Easy Sprite (At $EB97)&lt;br /&gt;
%patch $EEA7 [$02BCW] #Smirky (At $EBAC)&lt;br /&gt;
%patch $EEA9 [$02D1W] #Mimrock (At $EBC1)&lt;br /&gt;
%patch $EEAB [$02FAW] #Easy Arachnut (At $EBEA)&lt;br /&gt;
%patch $EEAD [$030FW] #Mushroom (At $EBFF)&lt;br /&gt;
%patch $EEAF [$0338W] #Easy Slug (At $EC28)&lt;br /&gt;
%patch $EEB1 [$029DW] #Medium Sprite (At $EB8D)&lt;br /&gt;
%patch $EEB3 [$0293W] #Hard Sprite (At $EB83)&lt;br /&gt;
%patch $EEB5 [$034DW] #Horizontal Scrollbar (At $EC3D)&lt;br /&gt;
%patch $EEB7 [$0360W] #Vertical Scrollbar (At $EC50)&lt;br /&gt;
%patch $EEB9 [$0372W] #Up Platform (At $EC62)&lt;br /&gt;
%patch $EEBB [$0372W] #Right Platform (At $EC62)&lt;br /&gt;
%patch $EEBD [$0372W] #Down Platform (At $EC62)&lt;br /&gt;
%patch $EEBF [$0372W] #Left Platform (At $EC62)&lt;br /&gt;
%patch $EEC1 [$050DW] #B Block (At $EDFD)&lt;br /&gt;
%patch $EEC3 [$038EW] #Dropping Platform (At $EC7E)&lt;br /&gt;
%patch $EEC5 [$03A3W] #Miragia (At $EC93)&lt;br /&gt;
%patch $EEC7 [$03B2W] #IF Ammo (At $ECA2)&lt;br /&gt;
%patch $EEC9 [$03DEW] #Wetsuit (At $ECCE)&lt;br /&gt;
%patch $EECB [$050DW] #&#039;I Keen&#039; (At $EDFD)&lt;br /&gt;
%patch $EECD [$050DW] #&#039;Mom&#039; (At $EDFD)&lt;br /&gt;
%patch $EECF [$050DW] #&#039;Dad&#039; (At $EDFD)&lt;br /&gt;
%patch $EED1 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED3 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED5 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED7 [$03FBW] #Swimming Keen (At $ECEB)&lt;br /&gt;
%patch $EED9 [$032EW] #Medium Slug (At $EC1E)&lt;br /&gt;
%patch $EEDB [$0324W] #Hard Slug (At $EC14)&lt;br /&gt;
%patch $EEDD [$016AW] #Medium Skypest (At $EA5A)&lt;br /&gt;
%patch $EEDF [$0160W] #Hard Skypest (At $EA50)&lt;br /&gt;
%patch $EEE1 [$0236W] #Medium Lick (At $EB26)&lt;br /&gt;
%patch $EEE3 [$022CW] #Hard Lick (At $EB1C)&lt;br /&gt;
%patch $EEE5 [$0103W] #Medium Berkeloid (At $E9F3)&lt;br /&gt;
%patch $EEE7 [$00F9W] #Hard Berkeloid (At $E9E9)&lt;br /&gt;
%patch $EEE9 [$0141W] #Medium Wormouth (At $EA31)&lt;br /&gt;
%patch $EEEB [$0137W] #Hard Wormouth (At $EA27)&lt;br /&gt;
%patch $EEED [$0489W] #Easy Up Dart (At $ED79)&lt;br /&gt;
%patch $EEEF [$0489W] #Easy Right Dart (At $ED79)&lt;br /&gt;
%patch $EEF1 [$0489W] #Easy Down Dart (At $ED79)&lt;br /&gt;
%patch $EEF3 [$0489W] #Easy Left Dart (At $ED79)&lt;br /&gt;
%patch $EEF5 [$04A4W] #Red Gem (At $ED94)&lt;br /&gt;
%patch $EEF7 [$04A4W] #Yellow Gem (At $ED94)&lt;br /&gt;
%patch $EEF9 [$04A4W] #Blue Gem (At $ED94)&lt;br /&gt;
%patch $EEFB [$04A4W] #Green Gem (At $ED94)&lt;br /&gt;
%patch $EEFD [$04A4W] #100 Pts (At $ED94)&lt;br /&gt;
%patch $EEFF [$04A4W] #200 pts (At $ED94)&lt;br /&gt;
%patch $EF01 [$04A4W] #500 Pts (At $ED94)&lt;br /&gt;
%patch $EF03 [$04A4W] #1000 Pts (At $ED94)&lt;br /&gt;
%patch $EF05 [$04A4W] #2000 Pts (At $ED94)&lt;br /&gt;
%patch $EF07 [$04A4W] #5000 Pts (At $ED94)&lt;br /&gt;
%patch $EF09 [$04A4W] #1UP (At $ED94)&lt;br /&gt;
%patch $EF0B [$04A4W] #Raygun (At $ED94)&lt;br /&gt;
%patch $EF0D [$04CAW] #Up Mine (At $EDBA)&lt;br /&gt;
%patch $EF0F [$04CAW] #Right Mine (At $EDBA)&lt;br /&gt;
%patch $EF11 [$04CAW] #Down Mine (At $EDBA)&lt;br /&gt;
%patch $EF13 [$04CAW] #Left Mine (At $EDBA)&lt;br /&gt;
%patch $EF15 [$02F0W] #Medium Arachnut (At $EBE0)&lt;br /&gt;
%patch $EF17 [$02E6W] #Hard Arachnut (At $EBD6)&lt;br /&gt;
%patch $EF19 [$04E5W] #Mooning Keen (At $EDD5)&lt;br /&gt;
%patch $EF1B [$04FBW] #Easy Bird(At $EDEB)&lt;br /&gt;
%patch $EF1D [$04F4W] #Medium Bird (At $EDE4)&lt;br /&gt;
%patch $EF1F [$04EDW] #Hard Bird (At $EDDD)&lt;br /&gt;
%patch $EF21 [$0463W] #Medium Up Dart (At $ED53)&lt;br /&gt;
%patch $EF23 [$0463W] #Medium Right Dart (At $ED53)&lt;br /&gt;
%patch $EF25 [$0463W] #Medium Down Dart (At $ED53)&lt;br /&gt;
%patch $EF27 [$0463W] #Medium Left Dart (At $ED53)&lt;br /&gt;
%patch $EF29 [$043DW] #Hard Up Dart (At $ED2D)&lt;br /&gt;
%patch $EF2B [$043DW] #Hard Right Dart (At $ED2D)&lt;br /&gt;
%patch $EF2D [$043DW] #Hard Down Dart (At $ED2D)&lt;br /&gt;
%patch $EF2F [$043DW] #Hard Left dart (At $ED2D)&lt;br /&gt;
%patch $EF31 [$025FW] #Medium Dopefish (At $EB4F)&lt;br /&gt;
%patch $EF33 [$0255W] #Hard Dopefish (At $EB45)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $7A6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CBxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Council Member&#039;s cache is $5D, the Bird&#039;s is $5F (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the Egg sets two cache values, one for itself and one for the Bird. Several sprites set no cache, including the Wetsuit, which uses a hardcoded value for the (Single frame) it caches. Other sprites cache individual animations as well as their cache, or even several animations in addition to their cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0B80000ERL and $0D8F0003RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right facing Keen&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is +1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $047DW		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Left facing Keen&lt;br /&gt;
%patch $E980 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is -1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $0451W		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $E9AC $FF $76 $FC $57 $9A {$0D8F050ARL}      $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB4FW  $0001W  $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
              $26 $08 $16 [$00FDW]  $E9 $0429W					#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Council Member&lt;br /&gt;
%patch $E9D4 $FF $76 $FC $57 $9A {$0FA80269RL}     $83 $C4 $04 $C7 $06 $CB5DW&lt;br /&gt;
             $0001W  $E9 $0414W&lt;br /&gt;
&lt;br /&gt;
#Berkeloid&lt;br /&gt;
%patch $E9E9 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $040AW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0400W  $FF $76 $FC $57 $9A {$1080039BRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB75W  $0001W  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Lindsey&lt;br /&gt;
%patch $EA12 $FF $76 $FC $57 $9A {$11A20DB5RL}     $83 $C4 $04 $C7 $06 $CB57W&lt;br /&gt;
             $0001W  $E9 $03D6W&lt;br /&gt;
&lt;br /&gt;
#Wormouth&lt;br /&gt;
%patch $EA27 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03CCW  $83 $3E [$7A6CW]  {$02}&lt;br /&gt;
             {$7D} $03 $E9 $03C2W  $FF $76 $FC $57 $9A {$10800006RL}     $83 $C4&lt;br /&gt;
             $04 $C7 $06 $CB6BW  $0001W  $E9 $03ADW&lt;br /&gt;
&lt;br /&gt;
#Skypest&lt;br /&gt;
%patch $EA50 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03A3W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0399W  $FF $76 $FC $57 $9A {$0FA80B67RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB69W  $0001W  $E9 $0384W&lt;br /&gt;
#Cloud&lt;br /&gt;
%patch $EA79 $FF $76 $FC $57 $9A {$108001C2RL}     $83 $C4 $04 $C7 $06 $CB73W&lt;br /&gt;
             $0001W  $E9 $036FW&lt;br /&gt;
&lt;br /&gt;
#Foot&lt;br /&gt;
%patch $EA8E $FF $76 $FC $57 $9A {$1080072CRL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0340W      #End&lt;br /&gt;
&lt;br /&gt;
#Inchworm&lt;br /&gt;
%patch $EABD $FF $76 $FC $57 $9A {$108006B2RL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0311W      #End&lt;br /&gt;
&lt;br /&gt;
#Bounder&lt;br /&gt;
%patch $EAEC $FF $76 $FC $57 $9A {$108008EARL}     $83 $C4 $04 $C7 $06 $CB71W&lt;br /&gt;
             $0001W  $E9 $02FCW&lt;br /&gt;
&lt;br /&gt;
#Egg&lt;br /&gt;
%patch $EB01 $FF $76 $FC $57 $9A {$0FA8055DRL}     $83 $C4 $04 $C7 $06 $CB5FW&lt;br /&gt;
             $0001W  $C7 $06 $CB83W  $0001W  $E9 $02E1W&lt;br /&gt;
&lt;br /&gt;
#Lick&lt;br /&gt;
%patch $EB1C $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02D7W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $02CDW  $FF $76 $FC $57 $9A {$10800AC8RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB6DW  $0001W  $E9 $02B8W&lt;br /&gt;
&lt;br /&gt;
#Dopefish&lt;br /&gt;
%patch $EB45 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02AEW  $83&lt;br /&gt;
             $3E [$7A6CW]  {$02 $7D} $03 $E9 $02A4W  $FF $76 $FC $57 $9A {$11A20690RL}&lt;br /&gt;
                     $83 $C4 $04 $C7 $06 $CB63W  $0001W  $E9 $028FW&lt;br /&gt;
&lt;br /&gt;
#Schoolfish&lt;br /&gt;
%patch $EB6E $FF $76 $FC $57 $9A {$11A20AA7RL}     $83 $C4 $04 $C7 $06 $CB65W&lt;br /&gt;
             $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Sprite&lt;br /&gt;
%patch $EB83 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $FF $76 $FC $57 $9A {$11A20B5FRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB7DW  $0001W  $E9 $0251W&lt;br /&gt;
&lt;br /&gt;
#Smirky&lt;br /&gt;
%patch $EBAC $FF $76 $FC $57 $9A {$11A2000ERL}     $83 $C4 $04 $C7 $06 $CB5BW &lt;br /&gt;
             $0001W  $E9 $023CW&lt;br /&gt;
&lt;br /&gt;
#Mimrock&lt;br /&gt;
%patch $EBC1 $FF $76 $FC $57 $9A {$11A20447RL}     $83 $C4 $04 $C7 $06 $CB61W&lt;br /&gt;
             $0001W  $E9 $0227W&lt;br /&gt;
&lt;br /&gt;
#Arachnut&lt;br /&gt;
%patch $EBD6 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $021DW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0213W  $FF $76 $FC $57 $9A {$0FA80A8ERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB67W  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom&lt;br /&gt;
%patch $EBFF $FF $76 $FC $57 $9A {$0FA80445RL}     $83 $C4 $04 $C7 $06 $CB53W&lt;br /&gt;
             $0001W  $E9 $01E9W&lt;br /&gt;
&lt;br /&gt;
#Poison Slugs&lt;br /&gt;
%patch $EC14 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $01DFW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01D5W  $FF $76 $FC $57 $9A {$0FA802FERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB51W  $0001W  $E9 $01C0W&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical scroll bars&lt;br /&gt;
%patch $EC3D $B8 $0001W  $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 $C4 $06 #Horizontal bars = 1&lt;br /&gt;
             $E9 $01ADW  $33 $C0 $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 #Vertical bars = 0&lt;br /&gt;
             $C4 $06 $E9 $019BW&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms&lt;br /&gt;
%patch $EC62 $8B $46 $F8 $05 $FFE5W  $50 $FF $76 $FC $57 $9A {$10800CABRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB6FW  $0001W  $E9 $017FW&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $EC7E $FF $76 $FC $57 $9A {$108010FCRL}     $83 $C4 $04 $C7 $06 $CB6FW&lt;br /&gt;
             $0001W  $E9 $016AW&lt;br /&gt;
&lt;br /&gt;
#Miragia&lt;br /&gt;
%patch $EC93 $FF $76 $FC $57 $9A {$0FA80000RL}     $83 $C4 $04 $E9 $015BW&lt;br /&gt;
&lt;br /&gt;
#IF Ammo&lt;br /&gt;
%patch $ECA2 $83 $3E [$7A58W]  [$05] {$7C} $03 $E9 $0151W  $B8 [$000BW]  $50 $FF $76 #Here check Keen&#039;s ammo &amp;lt; 5, ammo is 12th item kind&lt;br /&gt;
             $FC $57 $9A {$0FA801A3RL}     $83 $C4 $06 $8B $1E [$19D2W]  $D1 $E3&lt;br /&gt;
             $C7 $87 $CB3BW  $0001W  $E9 $0132W  $E9 $012FW&lt;br /&gt;
&lt;br /&gt;
#Wetsuit - Note single frame is cached&lt;br /&gt;
%patch $ECCE $FF $76 $FC $57 $9A {$11A20FD1RL}     $83 $C4 $04 $B8 $2A3ARW $8A&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $16 [$01AEW]  $E9 $0112W&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen&lt;br /&gt;
%patch $ECEB $FF $76 $FC $57 $9A $0E8F0CFERL     $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB7BW  $0001W  $BE [$00DBW]  $EB $0F $B8 $2A3ARW $8A #Cache items got - start&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $94 $00 $00 $46 $81 $FE [$00E2W]  $76 #Cache items got - end&lt;br /&gt;
             $EB $B8 $2A3ARW $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 #Cache scoreboard&lt;br /&gt;
             $00D0W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - hard&lt;br /&gt;
%patch $ED2D $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00C6W  $8B $46 $F8 $05 $FFADW&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7&lt;br /&gt;
             $06 $CB79W  $0001W  $E9 $00AAW&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - medium&lt;br /&gt;
%patch $ED53 $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00A0W  $8B $46 $F8 $05 $FFB1W&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7 $06 $CB79W&lt;br /&gt;
                 $0001W  $E9 $0084W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - easy&lt;br /&gt;
%patch $ED79 $8B $46 $F8 $05 $FFCBW  $50 $FF $76 $FC $57 $9A {$11A20E3BRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB79W  $0001W  $EB $69&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $ED94 $8B $46 $F8 $05 [$FFC7W]  $50 $FF $76 $FC $57 $9A {$0FA801A3RL}&lt;br /&gt;
             $83 $C4 $06 $8B $5E $F8 $D1 $E3 $8B $9F [$194AW]  $D1 $E3 $C7 $87&lt;br /&gt;
             $CB3BW  $0001W  $EB $43&lt;br /&gt;
&lt;br /&gt;
#Mine&lt;br /&gt;
%patch $EDBA $8B $46 $F8 $05 [$FFBBW]  $50 $FF $76 $FC $57 $9A {$11A20CECRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB7FW  $0001W  $EB $28&lt;br /&gt;
&lt;br /&gt;
#Mooning Keen&lt;br /&gt;
%patch $EDD5 $C7 $06 $CB81W  $0001W  $EB $20&lt;br /&gt;
&lt;br /&gt;
#Blue bird&lt;br /&gt;
%patch $EDDD $83 $3E [$7A6CW]  {$03 $7C} $19 $83 $3E [$7A6CW]  {$02 $7C} $12 $FF $76&lt;br /&gt;
             $FC $57 $9A {$0FA805B9RL}     $83 $C4 $04 $C7 $06 $CB5FW  $0001W&lt;br /&gt;
&lt;br /&gt;
#B Block-type sprites&lt;br /&gt;
%patch $EDFD $47 $3B $3E $E4 $A7 $73 $03 $E9 $FB24W  $FF $46 $FC $8B $46 $FC&lt;br /&gt;
             $3B $06 $E2 $A7 $73 $03 $E9 $FB10W  $A1 $D6 $A7 $89 $46 $FE $EB&lt;br /&gt;
             $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. [[Patch:Miragia|Miragia&#039;s]] spawn code is the shortest, but will not allow a sprite to do anything except replace tiles as Miragia does. There are a number of values set.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]],  Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $B80E $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$098CW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Map Keen spawning code&lt;br /&gt;
%patch $DDFA $55 $8B $EC $83 $3E {$7A70W}  [$07] {$74} $03 $E9 $00A9W  $8B $1E $D6&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $C7 $07 [$0002W]  $A1 {$7A1AW}  $89 $47 {$0A}&lt;br /&gt;
             $A1 {$7A1CW}  $89 $47 {$0C} $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $81 $3E {$7A1AW}  [$1400W]&lt;br /&gt;
             {$73} $31 $C7 $47 $3E [$0118W]  $B8 [$1E00W]  $2B $47 $0A $BB [$0118W]&lt;br /&gt;
             $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47 $16 $B8 [$3700W]  $2B&lt;br /&gt;
             $47 $0C $BB [$0118W]  $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47&lt;br /&gt;
             $18 $EB $31 $8B $1E $A7D6W  $C7 $47 $3E [$008CW]  $B8 [$1000W]  $2B&lt;br /&gt;
             $47 $0A $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $A7D6W  $89 $47 $16&lt;br /&gt;
             $B8 [$2F00W]  $2B $47 $0C $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $D6&lt;br /&gt;
             $A7 $89 $47 $18 $B8 [$1492W]  $50 $FF $36 $D6 $A7 $9A $09DC118CRL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
                                     $8B $1E $A7D6W  $C7 $07 [$0002W]  $83 $3E&lt;br /&gt;
             {$7A1AW}  [$00] {$75} $14 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $EB $10 $8B $1E {$A7D6W}  $A1 {$7A1AW}&lt;br /&gt;
             $89 $47 {$0A} $A1 {$7A1CW}  $89 $47 {$0C} $8B $1E $A7D6W  $C7 $47 $02&lt;br /&gt;
             [$0002W]  $C7 $47 $20 [$0001W]  $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]&lt;br /&gt;
                 $C7 $47 $3E [$0006W]  $C7 $47 $40 [$0003W]  $C7 $47 $42 [$0000W]&lt;br /&gt;
             $C7 $47 $1E [$0100W]  $B8 [$14ECW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting flag spawn code&lt;br /&gt;
%patch $E2ED $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0003W]  $C7 $07 [$0022W]&lt;br /&gt;
             $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $05 [$0060W]  $89&lt;br /&gt;
             $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE20W]  $89 $47 $0C $9A $1D02002ARL&lt;br /&gt;
                     $BB [$0010W]  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $1A $B8&lt;br /&gt;
             [$15EEW]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen spawning code&lt;br /&gt;
%patch $F5EE $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $C7 $47 $06 [$0002W]  $B8 [$19ECW]  $50 $53 $9A $10B1118CRL   &lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Miragia spawning code&lt;br /&gt;
%patch $FA80  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0002W]  $8B $46 $06 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $89 $47 $0C $C7 $47 $1C [$1DFCW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $FC23 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0004W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1FA0W]  $8B $1E $D8 $A7 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1EECW]  $50 $53 $9A&lt;br /&gt;
         $09DC118CRL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Council Member spawn&lt;br /&gt;
%patch $FCE9  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$1FB8W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slug spawning code&lt;br /&gt;
%patch $FD7E  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0005W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2012W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom spawning code&lt;br /&gt;
%patch $FEC5  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$20E4W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Egg spawn code&lt;br /&gt;
%patch $FFDD $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
             [$FF8FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
             [$2120W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blue Bird spawning code&lt;br /&gt;
%patch $10039 $55 $8B $EC $B8 $01 $00 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $07 [$001BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $8B $47 $0A $8B $1E $A7D6W  $3B $47 $0A&lt;br /&gt;
              $73 $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W ] $EB $09 $8B $1E $D8&lt;br /&gt;
              $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$21B6W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Skypest spawning code&lt;br /&gt;
%patch $105E7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $10 [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $10 [$FFFFW]  $B8 [$2486W]&lt;br /&gt;
                  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Cloud spawning code&lt;br /&gt;
%patch $109C2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000DW]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$28A0W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Berkeloid spawning code&lt;br /&gt;
%patch $10B9B $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1D02002ARL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0008W]&lt;br /&gt;
                  $B8 [$2AF8W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Inchworm spawning code&lt;br /&gt;
%patch $10EB2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2E9AW]  $50 $9A $09DC118CRL&lt;br /&gt;
                          $83 $C4 $04 $9A $1D02002ARL     $BB [$0020W]  $99 $F7&lt;br /&gt;
              $FB $8B $1E $D8 $A7 $89 $47 $1A $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Foot spawning code&lt;br /&gt;
%patch $10F2C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $05 [$FFFDW]&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $B8 [$2EF4W]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
              $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bounder Spawning code&lt;br /&gt;
%patch $110EA $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000FW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $C7 $47 $10 [$0001W]  $C7 $47 $0E [$0000W]  $B8&lt;br /&gt;
              [$2F12W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Lick spawn code&lt;br /&gt;
%patch $112C8 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0012W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $9A $1D02002ARL     $BB $0040W&lt;br /&gt;
                  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $08 $B8 [$3002W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms Spawning code&lt;br /&gt;
%patch $114AB $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D3CW] #4 kinds of platform, direction list at $1153C&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB    #Up platform&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB    #Right platform&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB    #Down platform&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8    #Left platform&lt;br /&gt;
              [$316AW]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform Spawning code&lt;br /&gt;
%patch $118FC $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$3188W]  $50 $53 $9A $09DC118CRL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Smirky Spawning code&lt;br /&gt;
%patch $11A2E $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$31E2W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mimrock Spawning code&lt;br /&gt;
%patch $11E67 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF30W]  $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$343AW]&lt;br /&gt;
                  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dopefish spawn code&lt;br /&gt;
%patch $120B0 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $C7 $47 $06 [$0002W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $05 [$FD00W]  $89 $47 $0C $9A $1D02002ARL     $3D&lt;br /&gt;
              [$0080W]  $7D $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]&lt;br /&gt;
                  $B8 [$35C0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Schoolfish spawn code&lt;br /&gt;
%patch $124C7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0002W]&lt;br /&gt;
              $C7 $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10&lt;br /&gt;
              $B8 [$3764W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sprite spawn code&lt;br /&gt;
%patch $1257F $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $B8 [$0001W]  $89 $47 {$0E}&lt;br /&gt;
              $89 $47 {$10} $B8 [$37A0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Underwater Mine spawning code&lt;br /&gt;
%patch $1270C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0020W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D7EW]&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8&lt;br /&gt;
              [$3890W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Mine direction list&lt;br /&gt;
%patch $1279E [$0D2DW]] #Up&lt;br /&gt;
              [$0D3DW] #Right&lt;br /&gt;
              [$0D4DW] #Down&lt;br /&gt;
              [$0D5DW] #Left&lt;br /&gt;
&lt;br /&gt;
#Lindsey spawn code&lt;br /&gt;
%patch $127D5 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8 [$38EAW]&lt;br /&gt;
              $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter spawning code&lt;br /&gt;
%patch $1285B $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]  $8B&lt;br /&gt;
              $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $C7 $47 $06 [$0000W]  $8B $46&lt;br /&gt;
              $08 $D3 $E0 $89 $47 $0C $89 $77 $3E $8B $DE $83 $FB [$03] $77 $50&lt;br /&gt;
              $D1 $E3 $2E $FF $A7 {$0EDEW}  $8B $1E $D8 $A7 $83 {$6F $0C} [$30] $81&lt;br /&gt;
              {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017CW]  $EB $35 $8B $1E $D8 $A7 $81&lt;br /&gt;
              {$47 $0A} [$0080W]  $83 {$47 $0C} [$50] $C7 {$47 $1E} [$0180W]  $EB $21 $8B&lt;br /&gt;
              $1E $D8 $A7 $81 {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017EW]  $EB $11 $8B&lt;br /&gt;
              $1E $D8 $A7 $83 {$47 $0C} [$70] $83 {$6F $0A} [$30] $C7 {$47 $1E} [$0182W]&lt;br /&gt;
              $B8 [$3962W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter position list&lt;br /&gt;
%patch $128FE $0E82W #Up (At $128A2)&lt;br /&gt;
%patch $12900 $0E96W #Right (At $128B6)&lt;br /&gt;
%patch $12902 $0EAAW #Down (At $128CA)&lt;br /&gt;
%patch $12904 $0EBAW #Left (At $128DA)&lt;br /&gt;
&lt;br /&gt;
#Wetsuit spawn code&lt;br /&gt;
%patch $129F1 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001EW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $B8 [$3A34W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Scrollbar &#039;spawning&#039; code&lt;br /&gt;
%patch $17048 $55 $8B $EC $83 $7E $0A $00 $74 $29 $8B $1E $AC $CC $D1 $E3 $8B&lt;br /&gt;
              $46 $08 $89 $87 $9E $CC $A1 $AC $CC $FF $06 $AC $CC $3D $06 [$00]&lt;br /&gt;
              {$75} $35 $B8 [$4244W]  $50 $9A $037D022FRL     $83 $C4 $02 $5D $CB&lt;br /&gt;
              $5D $CB&lt;br /&gt;
                      $8B $1E $AA $CC $D1 $E3 $8B $46 $06 $89 $87 $92 $CC $A1&lt;br /&gt;
              $AA $CC $FF $06 $AA $CC $3D $06 [$00] {$75} $0C $B8 [$4279W]  $50 $9A&lt;br /&gt;
              $037D022FRL     $83 $C4 $02 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow more sprite kinds ==&lt;br /&gt;
&lt;br /&gt;
This patch expands the maximum number of different sprite initiations possible in Keen 4; the default patch above allows a maximum of $7F or 127 initiations, whereas this patch allows a maximum of $7FFFW, or thousands, making the number practically unlimited.&lt;br /&gt;
&lt;br /&gt;
This patch will only work as long as right-facing Keen&#039;s initiation code (Above)is not tampered with. The patch here uses the default number of sprites, 87.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Allow more than 127 sprite types in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Allow more than 127 sprite types in Keen 4&lt;br /&gt;
%patch $E945 $81 $FB [$0057W]  $76 $02 $EB $30&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E999 for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked as the last blue value. (The first two are in-level Keen&#039;s left\right facing directions.) Checking the original initiation code will give a more detailed breakdown of what is presented here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $EE87 $0069W #Left Facing Keen (At $E959)&lt;br /&gt;
%patch $EE89 $0081W #Map Keen (At $E971)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen spawns&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}&lt;br /&gt;
                     $83 $C4 $06 $C7 $06 $CB3DW  $0001W  $EB $12&lt;br /&gt;
%patch $E971 $FF $76 $FC $57 $9A {$0D8F050ARL}     $83 $C4 $04 $C7 $06 $CB4FW&lt;br /&gt;
             $0001W  $9A $0D8F0003RL     $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
             $26 $08 $16 [$00FDW]  $E9 $0464W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inchowrm-Foot method ===&lt;br /&gt;
&lt;br /&gt;
This patch collapses the [[Patch:Inchworm|Inchworm]] and [[Patch:Foot|Foot]] initiation codes and stops both caching the Treasure Eater Smoke frames. What this means is that both will take up less memory but the Inchworms cannot transform into the Foot &#039;&#039;and&#039;&#039; emit smoke. As a bonus space is created for an additional  initiation code for a totally new sprite.&lt;br /&gt;
&lt;br /&gt;
The space freed is 61 bytes ($EAAE-$EAEB). This is enough for a 3 difficulty sprite or several single difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change Inchworm pointer to new code&lt;br /&gt;
%patch $EE99 $01B3W #Inchworm (At $EAA3)&lt;br /&gt;
&lt;br /&gt;
#Foot doesn&#039;t cache smoke, Inchworm doesn&#039;t either&lt;br /&gt;
%patch $EAA0 $E9 $035AW  $FF $76 $FC $57 {$9A $108006B2RL}     $EB $E9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 5 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 5]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($ED50 + $0776 = $F4C6)&lt;br /&gt;
%patch $EE94 $0776W&lt;br /&gt;
&lt;br /&gt;
#Length of list (124 items)&lt;br /&gt;
%patch $EE89 $7C&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $ED50)&lt;br /&gt;
%patch $F4C6 [$0146W] #Keen right (At $EE96)&lt;br /&gt;
%patch $F4C8 [$0170W] #Keen left (At $EEC0)&lt;br /&gt;
%patch $F4CA [$019AW] #Map Keen (At $EEEA)&lt;br /&gt;
%patch $F4CC [$01F5W] #Easy Sparky (At $EF45)&lt;br /&gt;
%patch $F4CE [$01EBW] #Normal Sparky (At $EF3B)&lt;br /&gt;
%patch $F4D0 [$01E1W] #Hard Sparky (At $EF31)&lt;br /&gt;
%patch $F4D2 [$021CW] #Easy Mine (At $EF6C)&lt;br /&gt;
%patch $F4D4 [$0212W] #Normal Mine (At $EF62)&lt;br /&gt;
%patch $F4D6 [$0208W] #Hard Mine (At $EF58)&lt;br /&gt;
%patch $F4D8 [$0243W] #Easy up Slicestar (At $EF93)&lt;br /&gt;
%patch $F4DA [$0239W] #Normal up Slicestar (At $EF89)&lt;br /&gt;
%patch $F4DC [$022FW] #Hard up Slicestar (At $EF7F)&lt;br /&gt;
%patch $F4DE [$026DW] #Easy RoboRed (At $EFBD)&lt;br /&gt;
%patch $F4E0 [$0263W] #Normal RoboRed (At $EFB3)&lt;br /&gt;
%patch $F4E2 [$0259W] #Hard RoboRed (At $EFA9)&lt;br /&gt;
%patch $F4E4 [$0294W] #Easy Spirogrip (At $EFE4)&lt;br /&gt;
%patch $F4E6 [$028AW] #Normal Spirogrip (At $EFDA)&lt;br /&gt;
%patch $F4E8 [$0280W] #Hard Spirogrip (At $EFD0)&lt;br /&gt;
%patch $F4EA [$02BBW] #Easy bouncy Slicestar (At $F00B)&lt;br /&gt;
%patch $F4EC [$02B1W] #Normal bouncy Slicestar (At $F001)&lt;br /&gt;
%patch $F4EE [$02A7W] #Hard bouncy Slicestar (At $EFF7)&lt;br /&gt;
%patch $F4F0 [$02E2W] #Easy right Slicestar (At $F032)&lt;br /&gt;
%patch $F4F2 [$02D8W] #Normal right Slicestar (At $F028)&lt;br /&gt;
%patch $F4F4 [$02CEW] #Hard right Slicestar (At $F01E)&lt;br /&gt;
%patch $F4F6 [$02F9W] #Horizontal scrollbar (At $F049)&lt;br /&gt;
%patch $F4F8 [$01CAW] #&#039;T&#039; map Keen (At $EF1A)&lt;br /&gt;
%patch $F4FA [$030AW] #Up Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FC [$030AW] #Right Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FE [$030AW] #Down Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F500 [$030AW] #Left Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F502 [$0657W] #[B] sprite (At $F3A7)&lt;br /&gt;
%patch $F504 [$0327W] #Dropping Platform (At $F077)&lt;br /&gt;
%patch $F506 [$036AW] #Easy still Platform (At $F0BA)&lt;br /&gt;
%patch $F508 [$034DW] #Normal Still Platform (At $F09D)&lt;br /&gt;
%patch $F50A [$033AW] #Hard still Platform (At $F08A)&lt;br /&gt;
%patch $F50C [$0387W] #Up Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F50E [$0387W] #Right Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F510 [$0387W] #Down Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F512 [$0387W] #Left Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F514 [$03A4W] #Sneaky Platform (At $F0F4)&lt;br /&gt;
%patch $F516 [$03B7W] #QED\Fuse counter (At $F107)&lt;br /&gt;
%patch $F518 [$03F1W] #Easy Little Ampton  (At $F141)&lt;br /&gt;
%patch $F51A [$03E7W] #Normal Little Ampton  (At $F137)&lt;br /&gt;
%patch $F51C [$03DDW] #Hard Little Ampton  (At $F12D)&lt;br /&gt;
%patch $F51E [$0418W] #Easy laser up (At $F168)&lt;br /&gt;
%patch $F520 [$0442W] #Easy laser right (At $F192)&lt;br /&gt;
%patch $F522 [$046DW] #Easy laser left (At $F1BD)&lt;br /&gt;
%patch $F524 [$0498W] #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 [$040EW] #Normal laser up (At $F15E)&lt;br /&gt;
%patch $F528 [$0438W] #Normal laser right (At $F188)&lt;br /&gt;
%patch $F52A [$0463W] #Normal laser down (At $F1B3)&lt;br /&gt;
%patch $F52C [$048EW] #Normal laser left (At $F1DE)&lt;br /&gt;
%patch $F52E [$0404W] #Hard laser up (At $F154)&lt;br /&gt;
%patch $F530 [$042EW] #Hard laser right (At $F17E)&lt;br /&gt;
%patch $F532 [$0459W] #Hard laser down (At $F1A9)&lt;br /&gt;
%patch $F534 [$0484W] #Hard laser left (At $F1D4)&lt;br /&gt;
%patch $F536 [$04BEW] #Red gem (At $F20E)&lt;br /&gt;
%patch $F538 [$04BEW] #Yellow gem (At $F20E)&lt;br /&gt;
%patch $F53A [$04BEW] #Green gem (At $F20E)&lt;br /&gt;
%patch $F53C [$04BEW] #Blue gem (At $F20E)&lt;br /&gt;
%patch $F53E [$04BEW] #100 points (At $F20E)&lt;br /&gt;
%patch $F540 [$04BEW] #200 points (At $F20E)&lt;br /&gt;
%patch $F542 [$04BEW] #500 points (At $F20E)&lt;br /&gt;
%patch $F544 [$04BEW] #1000 points (At $F20E)&lt;br /&gt;
%patch $F546 [$04BEW] #2000 points (At $F20E)&lt;br /&gt;
%patch $F548 [$04BEW] #5000 points (At $F20E)&lt;br /&gt;
%patch $F54A [$04BEW] #1UP (At $F20E)&lt;br /&gt;
%patch $F54C [$04BEW] #Raygun (At $F20E)&lt;br /&gt;
%patch $F54E [$04AFW] #Low ammo raygun (At $F1FF)&lt;br /&gt;
%patch $F550 [$04E3W] #V card (At $F233)&lt;br /&gt;
%patch $F552 [$051CW] #Easy Volte-face (At $F26C)&lt;br /&gt;
%patch $F554 [$0512W] #Normal Volte-face (At $F262)&lt;br /&gt;
%patch $F556 [$0508W] #Hard Volte-face (At $F258)&lt;br /&gt;
%patch $F558 [$0543W] #Easy Shelley (At $F293)&lt;br /&gt;
%patch $F55A [$0539W] #Normal Shelley (At $F289)&lt;br /&gt;
%patch $F55C [$052FW] #Hard Shelley (At $F27F)&lt;br /&gt;
%patch $F55E [$056AW] #Easy Spindred (At $F2BA)&lt;br /&gt;
%patch $F560 [$0560W] #Normal Spindred (At $F2B0)&lt;br /&gt;
%patch $F562 [$0556W] #Hard Spindred (At $F2A6)&lt;br /&gt;
%patch $F564 [$057DW] #Up Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F566 [$057DW] #Right Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F568 [$057DW] #Down Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56A [$057DW] #Left Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56C [$059BW] #Up Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F56E [$059BW] #Right Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F570 [$059BW] #Down Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F572 [$059BW] #Left Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F574 [$05CDW] #Easy Shikadi Master (At $F31D)&lt;br /&gt;
%patch $F576 [$05C3W] #Normal Shikadi Master (At $F313)&lt;br /&gt;
%patch $F578 [$05B9W] #Hard Shikadi Master (At $F309)&lt;br /&gt;
%patch $F57A [$0657W] #Up Platform guide (At $F3A7)&lt;br /&gt;
%patch $F57C [$0657W] #Right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F57E [$0657W] #Down Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F580 [$0657W] #Left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F582 [$0657W] #Up-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F584 [$0657W] #Down-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F586 [$0657W] #Down-left  Platform guide (At $F3A7)&lt;br /&gt;
%patch $F588 [$0657W] #Up-left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F58A [$05EDW] #Easy Shikadi (At $F33D)&lt;br /&gt;
%patch $F58C [$05E6W] #Normal Shikadi (At $F336)&lt;br /&gt;
%patch $F58E [$05DFW] #Hard Shikadi (At $F32F)&lt;br /&gt;
%patch $F590 [$060DW] #Easy Shockshund (At $F35D)&lt;br /&gt;
%patch $F592 [$0606W] #Normal Shockshund (At $F356)&lt;br /&gt;
%patch $F594 [$05FFW] #Hard Shockshund (At $F34F)&lt;br /&gt;
%patch $F596 [$062DW] #Easy Sphereful (At $F37D)&lt;br /&gt;
%patch $F598 [$0626W] #Normal Sphereful (At $F376)&lt;br /&gt;
%patch $F59A [$061FW] #Hard Sphereful (At $F36F)&lt;br /&gt;
%patch $F59C [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F59E [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AC [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AE [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BC [$063FW] #Korath (At $F38F)&lt;br /&gt;
%patch $F5BE [$0651W] #Teleporter (At $F3A1)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to, but better structured than Keen 4. The first things to notice the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $6F6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $C2xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0AAF0000RL and $0CCB0007RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right&lt;br /&gt;
%patch $EE96 $B8 [$0001W]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04E7W&lt;br /&gt;
&lt;br /&gt;
#Keen left&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04BDW&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $EEEA $9A {$0CCB0007RL}     $C7 $06 $C27FW  $0001W  $B8 $2B7BRW $8A $16&lt;br /&gt;
             $EC $6F $8E $C0 $26 $08 $16 [$00EBW]  $83 $3E [$6F70W]  {$0D $75} $03&lt;br /&gt;
             $E9 $049AW  $57 $56 $9A {$0CCB050ERL}     $83 $C4 $04 $E9 $048DW&lt;br /&gt;
&lt;br /&gt;
#T map Keen&lt;br /&gt;
%patch $EF1A $83 $3E [$6F70W]  {$0D $74} $03 $E9 $0483W  $57 $56 $9A {$0CCB057FRL}&lt;br /&gt;
                 $83 $C4 $04 $E9 $0476W &lt;br /&gt;
&lt;br /&gt;
#Sparky&lt;br /&gt;
%patch $EF31 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $046CW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0462W  $57 $56 $9A {$11020004RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C289W  $0001W  $E9 $044FW&lt;br /&gt;
&lt;br /&gt;
#Shikadi mine&lt;br /&gt;
%patch $EF58 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0445W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $043BW  $57 $56 $9A {$11C40001RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28BW  $0001W  $E9 $0428W&lt;br /&gt;
&lt;br /&gt;
#Up Slicestar&lt;br /&gt;
%patch $EF7F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $041EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0414W  $33 $C0 $50 $57 $56 $9A {$1102070DRL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C28DW  $0001W  $E9 $03FEW&lt;br /&gt;
&lt;br /&gt;
#RoboRed&lt;br /&gt;
%patch $EFA9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03EAW  $57 $56 $9A {$11C4095CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28FW  $0001W  $E9 $03D7W  &lt;br /&gt;
&lt;br /&gt;
#Spirogrip&lt;br /&gt;
%patch $EFD0 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03CDW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03C3W  $57 $56 $9A {$11C40B61RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C291W  $0001W  $E9 $03B0W&lt;br /&gt;
&lt;br /&gt;
#Bouncy Slicestar&lt;br /&gt;
%patch $EFF7 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03A6W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $039CW  $57 $56 $9A {$110207ACRL} $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28DW  $0001W  $E9 $0389W&lt;br /&gt;
&lt;br /&gt;
#Right Slicestar&lt;br /&gt;
%patch $F01E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $037FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0375W  $B8 [$0001W]  $50 $57 $56 $9A {$1102070DRL}     $83&lt;br /&gt;
             $C4 $06 $C7 $06 $C28DW  $0001W  $E9 $035EW&lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar&lt;br /&gt;
%patch $F049 $B8 [$0001W]  $50 $57 $56 $9A {$174E0B05RL}     $83 $C4 $06 $E9 $034DW&lt;br /&gt;
&lt;br /&gt;
#Red Horizontal-Vertical Platforms&lt;br /&gt;
%patch $F05A $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                 $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $0330W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $F077 $57 $56 $9A {$0F920BC8RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $031DW&lt;br /&gt;
&lt;br /&gt;
#Still Platform -hard&lt;br /&gt;
%patch $F08A $57 $56 $9A {$0F920CECRL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $030AW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - normal&lt;br /&gt;
%patch $F09D $83 $3E [$6F6CW]  {$02 $7E} $03 $E9 $0300W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02EDW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - easy&lt;br /&gt;
%patch $F0BA $83 $3E [$6F6CW]  {$01 $7E} $03 $E9 $02E3W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02D0W&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $F0D7 $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform&lt;br /&gt;
%patch $F0F4 $57 $56 $9A {$0F9214D1RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W&lt;br /&gt;
             $E9 $02A0W&lt;br /&gt;
&lt;br /&gt;
#QED\Fuse&lt;br /&gt;
%patch $F107 $83 $3E [$6F68W]  {$0C $75} $12 $C7 $06 $6F5EW  $0004W  $57 $56 $9A&lt;br /&gt;
             {$11C41D56RL}     $83 $C4 $04 $EB $04 $FF $06 $5E $6F $C7 $06 $C2A5W&lt;br /&gt;
                 $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Little Ampton&lt;br /&gt;
%patch $F12D $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $57 $56 $9A {$11020240RL}     $83 $C4 $04 $C7 $06 $C293W&lt;br /&gt;
                 $0001W  $E9 $0253W&lt;br /&gt;
&lt;br /&gt;
#Laser up&lt;br /&gt;
%patch $F154 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0249W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
                 $03 $E9 $023FW  $33 $C0 $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $0229W&lt;br /&gt;
&lt;br /&gt;
#Laser right&lt;br /&gt;
%patch $F17E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $021FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0215W  $B8 [$0001W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Laser down&lt;br /&gt;
%patch $F1A9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01EAW  $B8 [$0002W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01D3W&lt;br /&gt;
&lt;br /&gt;
#Laser left&lt;br /&gt;
%patch $F1D4 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01C9W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01BFW  $B8 [$0003W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01A8W&lt;br /&gt;
&lt;br /&gt;
#Low ammo raygun (Uses following item initiation)&lt;br /&gt;
%patch $F1FF $83 $3E [$6F56W] {$05 $7C} $03 $E9 $019EW  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $F20E $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17CAW]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $0174W&lt;br /&gt;
&lt;br /&gt;
#V card&lt;br /&gt;
%patch $F233 $8B $46 $FA $05 [$FFC6W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17C8W]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $014FW&lt;br /&gt;
&lt;br /&gt;
#Volte Face&lt;br /&gt;
%patch $F258 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0145W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $013BW  $57 $56 $9A {$0F9211B4RL}     $83 $C4 $04 $C7 $06 $C295W&lt;br /&gt;
                 $0001W  $E9 $0128W&lt;br /&gt;
&lt;br /&gt;
#Shelley&lt;br /&gt;
%patch $F27F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $011EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0114W  $57 $56 $9A $1E $09 $02 $11 $83 $C4 $04 $C7 $06 $C29BW&lt;br /&gt;
             $0001W  $E9 $0101W&lt;br /&gt;
&lt;br /&gt;
#Spindred&lt;br /&gt;
%patch $F2A6 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $00F7W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $00EDW  $57 $56 $9A {$11C40C5DRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C299W  $0001W  $E9 $00DAW&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $F2CD $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFB0W]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $00BCW&lt;br /&gt;
&lt;br /&gt;
#Purple Horizontal-Vertical Platform&lt;br /&gt;
%patch $F2EB $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFACW]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $009EW&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master&lt;br /&gt;
%patch $F309 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0094W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $008AW  $57 $56 $9A {$11C40E47RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C281W  $0001W  $EB $78&lt;br /&gt;
&lt;br /&gt;
#Shikadi&lt;br /&gt;
%patch $F32F $83 $3E [$6F6CW]  {$03 $7C} $71 $83 $3E [$6F6CW]  {$02 $7C} $6A $57 $56&lt;br /&gt;
             $9A {$11C41287RL}     $83 $C4 $04 $C7 $06 $C283W  $0001W  $EB $58&lt;br /&gt;
&lt;br /&gt;
#Shocksund&lt;br /&gt;
%patch $F34F $83 $3E [$6F6CW]  {$03 $7C} $51 $83 $3E [$6F6CW]  {$02 $7C} $4A $57 $56&lt;br /&gt;
             $9A {$11C41617RL}     $83 $C4 $04 $C7 $06 $C285W  $0001W  $EB $38&lt;br /&gt;
&lt;br /&gt;
#Sphereful&lt;br /&gt;
%patch $F36F $83 $3E [$6F6CW]  {$03 $7C} $31 $83 $3E [$6F6CW]  {$02 $7C} $2A $57 $56&lt;br /&gt;
             $9A {$11C419D8RL}     $83 $C4 $04 $C7 $06 $C287W  $0001W  $EB $18&lt;br /&gt;
&lt;br /&gt;
#Korath&lt;br /&gt;
%patch $F38F $57 $56 $9A {$11C41C81RL}     $83 $C4 $04 $C7 $06 $C2A3W  $0001W  $EB $06&lt;br /&gt;
&lt;br /&gt;
#Teleporter&lt;br /&gt;
%patch $F3A1 $C7 $06 $C2A9W  $0001W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $AAF0 $55 $8B $EC $8B $1E $9E3EW  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0888W]  $50 $53 $9A $13B511C4RL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Demo Sign spawn code&lt;br /&gt;
%patch $CCB7 $55 $8B $EC $8B $1E $3C $9E $C7 $07 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $02 [$0002W]  $C7 $47 $06 [$0000W]  $C7 $47 $40 [$FFFFW]  $C7&lt;br /&gt;
             $47 $3E [$FFFFW]  $C7 $47 $42 [$FFFFW]  $C7 $47 $44 [$FFFFW]  $83 $3E&lt;br /&gt;
             {$9B97W}  [$00] {$74} $07 $C7 $47 $1C [$0788W]  $5D $CB&lt;br /&gt;
                                                             $83 $3E {$332CW}&lt;br /&gt;
             [$00] {$75} $12 $B8 [$133EW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
                                 $B8 [$135CW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $B8 $2B7BW  $8A $16 $EC $6F $8E $C0 $26 $08&lt;br /&gt;
             $16 [$006BW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Item spawning code (Includes V card and low ammo)&lt;br /&gt;
%patch $FD9F $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06B91DCDRL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $40 $9E $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A54W]  $8B $1E $40 $9E $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1946W]  $50 $53 $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Red\Purple Platform spawning code&lt;br /&gt;
%patch $FFDC  $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$076EW]&lt;br /&gt;
               $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $83&lt;br /&gt;
              $7E $0C $00 $74 $1B $8B $1E $40 $9E $83 $47 $0A $40 $83 $47 $0C&lt;br /&gt;
              $40 $B8 [$1B7CW]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
              $B8 [$1B5EW]  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Platform direction list&lt;br /&gt;
%patch $1008E $6FDW #Up (At $1001D)&lt;br /&gt;
%patch $10090 $70DW #Right (At $1002D)&lt;br /&gt;
%patch $10092 $71DW #Down (At $1003D)&lt;br /&gt;
%patch $10094 $72DW #Left (At $1004D)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $104E8 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 {$1BB8W}  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting platform spawn code&lt;br /&gt;
%patch $1060C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1C12W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Goplat spawning code&lt;br /&gt;
%patch $1065F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
           $06B91DCDRL     $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $83 $7E $0C $00 $74 $17 $83 $47 $0A&lt;br /&gt;
              $40 $83 $47 $0C $40 $B8 [$1C4EW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $EB $10 $B8 [$1C30W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $40 $9E $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W]  $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Volte-face spawn code&lt;br /&gt;
%patch $10AD4 $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0010W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0002W]  $8B $C7 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $06 [$0000W]  $B8 [$1CCCW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $5E $08 $D1 $E3&lt;br /&gt;
              $8B $87 $87 $BF $D1 $E8 $E0D1W  $8B $16 $53 $9E $8B $DF $D1 $E3&lt;br /&gt;
              $03 $C3 $89 $56 $FE $89 $46 $FC $C4 $5E $FC $26 $83 $7F $FE $5C&lt;br /&gt;
              $75 $05 $BE [$0001W]  $EB $36 $C4 $5E $FC $26 $83 $7F $02 $5E $75&lt;br /&gt;
              $05 $BE [$0003W]  $EB $27 $A1 $4C $9E $D1 $E0 $C4 $5E $FC $2B $D8&lt;br /&gt;
              $26 $83 $3F $5D $75 $05 $BE [$0002W]  $EB $12 $A1 $4C $9E $D1 $E0&lt;br /&gt;
              $C4 $5E $FC $03 $D8 $26 $83 $3F $5B $75 $02 $33 $F6 $8B $C6 $05&lt;br /&gt;
              [$005BW]  $C4 $5E $FC $26 $89 $07 $8B $1E $40 $9E $89 $77 $3E $C7&lt;br /&gt;
              $47 $40 [$0100W]  $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10DF1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DA4W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $10EB7 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$000FW]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$1DFEW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sparky spawn code&lt;br /&gt;
%patch $11024 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $0C $9A $1DFB0036RL     $3D $0080W  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$1F0CW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Little Ampton spawning code&lt;br /&gt;
%patch $11260 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$21DCW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical Slicestar spawning code&lt;br /&gt;
%patch $1172D $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $C7 $47 $44 [$0014W]  $8B $5E $0A $83 $FB [$03] $77 $45 $D1&lt;br /&gt;
              $E3 $2E $FF $A7 [$07A4W]  $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$FFFFW]  $EB $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $EB $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$0001W]  $EB $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $B8 [$23BCW]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slicestar direction list&lt;br /&gt;
%patch $117C4 [$0753W] #Down (At $11773)&lt;br /&gt;
%patch $117C6 [$0763W] #Right (At $11783)&lt;br /&gt;
%patch $117C8 [$0773W] #Left (At $11793)&lt;br /&gt;
%patch $117CA [$0783W] #Up (At $117A3)&lt;br /&gt;
&lt;br /&gt;
#Shelley spawn code&lt;br /&gt;
%patch $1193E $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1DFB0036RL     $3D [$0080W]  {$7D} $0B $8B $1E $40 $9E&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$2416W]  $50 $53 $9A&lt;br /&gt;
          $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mine spawning code&lt;br /&gt;
%patch $11C41 $55 $8B $EC $56 $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $40 $9E $C7 $07 [$000AW]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $C7 $47 $40 [$0100W]  $C7 $47 $42 [$00D0W]&lt;br /&gt;
              $B8 [$2644W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $1E $40&lt;br /&gt;
              $9E $C7 $47 $16 [$0100W]  $33 $F6 $EB $12 $56 $FF $36 $40 $9E $90&lt;br /&gt;
              $0E $E8 $0095W  $83 $C4 $04 $0B $C0 $75 $06 $46 $83 $FE $03 $7E&lt;br /&gt;
              $E9 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Robo Red spawning code&lt;br /&gt;
%patch $1259C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FC00W]  $89 $47 $0C&lt;br /&gt;
              $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $B8 [$2734W]&lt;br /&gt;
                  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Spirogrip spawn code&lt;br /&gt;
%patch $127A1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000DW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8 [$2824W]  $50 $53 $9A&lt;br /&gt;
              $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master Spawn code&lt;br /&gt;
%patch $12A87 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 $80 $FE $89 $47 $0C&lt;br /&gt;
              $B8 [$2AF4W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi spawn code&lt;br /&gt;
%patch $12EC7 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0014W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0004W]  $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $B8 [$2D10W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
              $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shockshund spawn code&lt;br /&gt;
%patch $13257 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0002W]  $B8 [$0001W]  $89 $47 $10 $89 $47 $0E $B8 [$2F0EW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Q.E.D. spawn code&lt;br /&gt;
%patch $13996 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0019W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $89 $77 $2C $89 $7F $2E $8B $47 $2C $40 $89 $47 $30&lt;br /&gt;
              $8B $47 $2E $40 $89 $47 $32 $8B $C6 $B1 $08 $D3 $E0 $05 [$FFF0W]&lt;br /&gt;
              $89 $47 $22 $89 $47 $0A $8B $C7 $D3 $E0 $05 [$FFF0W]  $89 $47 $24&lt;br /&gt;
              $89 $47 $0C $8B $47 $22 $05 $20 $02 $89 $47 $26 $8B $47 $24 $05&lt;br /&gt;
              $20 $02 $89 $47 $28 $B8 [$3186W]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused Platform cache ==&lt;br /&gt;
&lt;br /&gt;
There is one unused [[Patch:Sprite cache|sprite cache]] in Keen 5. It is a single animation in size and  contains a small red platform. This is useful since it is not hard to expand it or use it for a totally unique sprite. It&#039;s call is &amp;lt;tt&amp;gt;$C29F&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Cache&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $31A4C $01BFW #Small red platform cache start&lt;br /&gt;
%patch $31AA0 $01BFW #Cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left and right Keen initiation codes so they use the minimum amount of space. (This is possible because they both require similar code.) It frees space at $EEC5 for a 3-difficulty sprite or several non-difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
The patch is quite basic; in effect the Keen left code only sets Keen&#039;s direction before jumping to the Keen right code, leaving all its space free.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen left code compacted&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $EB $D4&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 5)|Platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F05A-$0FA8 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move initiation pointers (Free $4E at $F05A)&lt;br /&gt;
%patch $F4FA $0359W #Up Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FC $0359W #Right Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FE $0359W #Down Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F500 $0359W #Left Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F504 $036CW #Dropping Platform (At $F0BC)&lt;br /&gt;
%patch $F506 $037EW #Easy still Platform (At $F0CE)&lt;br /&gt;
%patch $F508 $0375W #Normal Still Platform (At $F0C5)&lt;br /&gt;
%patch $F50A $0385W #Hard still Platform (At $F0D5)&lt;br /&gt;
%patch $F50C $037EW #Up Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F50E $038EW #Right Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F510 $038EW #Down Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F512 $038EW #Left Red Goplat (At $F0DE)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F0A9 $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL} $EB $33&lt;br /&gt;
%patch $F0BC $57 $56 $9A {$0F920BC8RL} $EB $36&lt;br /&gt;
%patch $F0C5 $83 $3E {$6F6CW}  [$02] {$7F} $38 $EB $07&lt;br /&gt;
%patch $F0CE $83 $3E {$6F6CW}  [$01] {$7F} $2F $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
             $EB $1D&lt;br /&gt;
%patch $F0DE $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Enemy Shooter initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Enemy shooter (Keen 5)|Enemy Shooter]] initiation codes (They all cache the same graphics and use similar code.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F154-$F1A1 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move pointers (Frees $F154-$F1A1)&lt;br /&gt;
%patch $F51E $0460W #Easy laser up (At $F1B0)&lt;br /&gt;
%patch $F520 $0472W #Easy laser right (At $F1C2)&lt;br /&gt;
%patch $F522 $0485W #Easy laser left (At $F1D5)&lt;br /&gt;
%patch $F524 $0498W #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 $0459W #Normal laser up (At $F1A9)&lt;br /&gt;
%patch $F528 $046BW #Normal laser right (At $F1BB)&lt;br /&gt;
%patch $F52A $047EW #Normal laser down (At $F1CE)&lt;br /&gt;
%patch $F52C $0491W #Normal laser left (At $F1E1)&lt;br /&gt;
%patch $F52E $0452W #Hard laser up (At $F1A2)&lt;br /&gt;
%patch $F530 $0464W #Hard laser right (At $F1B4)&lt;br /&gt;
%patch $F532 $0477W #Hard laser down (At $F1C7)&lt;br /&gt;
%patch $F534 $048AW #Hard laser left (At $F1DA)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F1A2 $83 $3E [$6F6CW]  {$03 $7C} $53 $83 $3E [$6F6CW]  {$02 $7C} $4C&lt;br /&gt;
             [$33 $C0] $EB $37&lt;br /&gt;
%patch $F1B4 $83 $3E [$6F6CW]  {$03 $7C} $41 $83 $3E [$6F6CW]  {$02 $7C} $3A $B8&lt;br /&gt;
             [$0001W]  $EB $24&lt;br /&gt;
%patch $F1C7 $83 $3E [$6F6CW]  {$03 $7C} $2E $83 $3E [$6F6CW]  {$02 $7C} $27 $B8&lt;br /&gt;
             [$0002W]  $EB $11&lt;br /&gt;
%patch $F1DA $83 $3E [$6F6CW]  {$03 $7C} $1B $83 $3E [$6F6CW]  {$02 $7C} $14 $B8 [$0003W]&lt;br /&gt;
                 $50 $57 $56 $9A $0F921597RL     $83 $C4 $06 $C7 $06 $C27DW&lt;br /&gt;
             $0001W  $E9 $01A8W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 6 =&lt;br /&gt;
&lt;br /&gt;
This section is partly incomplete.&lt;br /&gt;
&lt;br /&gt;
[[Keen 6]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E420 + $0532 = $E952)&lt;br /&gt;
%patch $E486 $0532W&lt;br /&gt;
&lt;br /&gt;
#Length of list (105 items)&lt;br /&gt;
%patch $E47B $69&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $E420)&lt;br /&gt;
%patch $E952 [$0068W] #Keen right (At $E488)&lt;br /&gt;
%patch $E954 [$0092W] #Keen left (At $E4B2)&lt;br /&gt;
%patch $E956 [$00BCW] #Map Keen (At $E4DC)&lt;br /&gt;
%patch $E958 [$00F6W] #Easy Bloog (At $E516)&lt;br /&gt;
%patch $E95A [$00ECW] #Medium Bloog (At $E50C)&lt;br /&gt;
%patch $E95C [$00E2W] #Hard Bloog (At $E502)&lt;br /&gt;
%patch $E95E [$0109W] #Red Blooglet (At $E529)&lt;br /&gt;
%patch $E960 [$0109W] #Yellow Blooglet (At $E529)&lt;br /&gt;
%patch $E962 [$0109W] #Blue Blooglet (At $E529)&lt;br /&gt;
%patch $E964 [$0109W] #Green Blooglet (At $E529)&lt;br /&gt;
%patch $E966 [$0109W] #Red keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E968 [$0109W] #Yellow keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96A [$0109W] #Green keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96C [$0109W] #Blue keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96E [$0145W] #Bottom of cliff (At $E565)&lt;br /&gt;
%patch $E970 [$0145W] #Top of cliff (At $E565)&lt;br /&gt;
%patch $E972 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E974 [$016DW] #Easy Fleex (At $E58D)&lt;br /&gt;
%patch $E976 [$0163W] #Medium Fleex (At $E583)&lt;br /&gt;
%patch $E978 [$0159W] #Hard Fleex (At $E579)&lt;br /&gt;
%patch $E97A [$0180W] #Easy UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97C [$0180W] #Medium UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97E [$0180W] #Hard UNUSED (At $E5A0)&lt;br /&gt;
%patch $E980 [$0180W] #Molly (At $E5A0)&lt;br /&gt;
%patch $E982 [$0193W] #Horizontal scrollbar (At $E5B3)&lt;br /&gt;
%patch $E984 [$01A4W] #Vertical scrollbar (At $E5C4)&lt;br /&gt;
%patch $E986 [$01B4W] #Platform up (At $E5D4)&lt;br /&gt;
%patch $E988 [$01B4W] #Platform right (At $E5D4)&lt;br /&gt;
%patch $E98A [$01B4W] #Platform down (At $E5D4)&lt;br /&gt;
%patch $E98C [$01B4W] #Platform left (At $E5D4)&lt;br /&gt;
%patch $E98E [$04A7W] #B sprite (At $E8C7)&lt;br /&gt;
%patch $E990 [$01CEW] #Falling Platform (At $E5EE)&lt;br /&gt;
%patch $E992 [$0211W] #Only-Easy sitting Platform (At $E631)&lt;br /&gt;
%patch $E994 [$01F4W] #Easy\Medium sitting Platform (At $E614)&lt;br /&gt;
%patch $E996 [$01E1W] #Easy\Medium\Hard sitting Platform (At $E601)&lt;br /&gt;
%patch $E998 [$022EW] #Path Platform up (At $E64E)&lt;br /&gt;
%patch $E99A [$022EW] #Path Platform right (At $E64E)&lt;br /&gt;
%patch $E99C [$022EW] #Path Platform down (At $E64E)&lt;br /&gt;
%patch $E99E [$022EW] #Path Platform left (At $E64E)&lt;br /&gt;
%patch $E9A0 [$024EW] #Sneaky Platform (At $E66E)&lt;br /&gt;
%patch $E9A2 [$0275W] #Easy Bobba (At $E695)&lt;br /&gt;
%patch $E9A4 [$026BW] #Medium Bobba (At $E68B)&lt;br /&gt;
%patch $E9A6 [$0261W] #Hard Bobba (At $E681)&lt;br /&gt;
%patch $E9A8 [$0288W] #Satellite dropoff up (At $E6A8)&lt;br /&gt;
%patch $E9AA [$0288W] #Satellite dropoff right (At $E6A8)&lt;br /&gt;
%patch $E9AC [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E9AE [$02B0W] #Easy Nospike (At $E6D0)&lt;br /&gt;
%patch $E9B0 [$02A6W] #Medium Nospike (At $E6C6)&lt;br /&gt;
%patch $E9B2 [$029CW] #Hard Nospike (At $E6BC)&lt;br /&gt;
%patch $E9B4 [$02D7W] #Easy Gik (At $E6F7)&lt;br /&gt;
%patch $E9B6 [$02CDW] #Medium Gik (At $E6ED)&lt;br /&gt;
%patch $E9B8 [$02C3W] #Hard Gik (At $E6E3)&lt;br /&gt;
%patch $E9BA [$02EAW] #Laser up (At $E70A)&lt;br /&gt;
%patch $E9BC [$02EAW] #Laser right (At $E70A)&lt;br /&gt;
%patch $E9BE [$02EAW] #Laser down (At $E70A)&lt;br /&gt;
%patch $E9C0 [$02EAW] #Laser left (At $E70A)&lt;br /&gt;
%patch $E9C2 [$0313W] #Red gem (At $E733)&lt;br /&gt;
%patch $E9C4 [$0313W] #Yellow gem (At $E733)&lt;br /&gt;
%patch $E9C6 [$0313W] #Green gem (At $E733)&lt;br /&gt;
%patch $E9C8 [$0313W] #Blue gem (At $E733)&lt;br /&gt;
%patch $E9CA [$0313W] #100 points (At $E733)&lt;br /&gt;
%patch $E9CC [$0313W] #200 points (At $E733)&lt;br /&gt;
%patch $E9CE [$0313W] #500 points (At $E733)&lt;br /&gt;
%patch $E9D0 [$0313W] #1000 points (At $E733)&lt;br /&gt;
%patch $E9D2 [$0313W] #2000 points (At $E733)&lt;br /&gt;
%patch $E9D4 [$0313W] #5000 points (At $E733)&lt;br /&gt;
%patch $E9D6 [$0313W] #1UP (At $E733)&lt;br /&gt;
%patch $E9D8 [$0313W] #Ammo (At $E733)&lt;br /&gt;
%patch $E9DA [$0304W] #IF ammo (At $E724)&lt;br /&gt;
%patch $E9DC [$034CW] #Easy Orbatrix (At $E76C)&lt;br /&gt;
%patch $E9DE [$0342W] #Medium Orbatrix (At $E762)&lt;br /&gt;
%patch $E9E0 [$0338W] #Hard Orbatrix (At $E758)&lt;br /&gt;
%patch $E9E2 [$0373W] #Easy Bipship (At $E793)&lt;br /&gt;
%patch $E9E4 [$0369W] #Medium Bipship (At $E789)&lt;br /&gt;
%patch $E9E6 [$035FW] #Hard Bipship (At $E77F)&lt;br /&gt;
%patch $E9E8 [$03A0W] #Easy Flect (At $E7C0)&lt;br /&gt;
%patch $E9EA [$0396W] #Medium Flect (At $E7B6)&lt;br /&gt;
%patch $E9EC [$038CW] #Hard Flect (At $E7AC)&lt;br /&gt;
%patch $E9EE [$03C7W] #Easy Blorb (At $E7E7)&lt;br /&gt;
%patch $E9F0 [$03BDW] #Medium Blorb (At $E7DD)&lt;br /&gt;
%patch $E9F2 [$03B3W] #Hard Blorb (At $E7D3)&lt;br /&gt;
%patch $E9F4 [$03EEW] #Easy Ceilick (At $E80E)&lt;br /&gt;
%patch $E9F6 [$03E4W] #Medium Ceilick (At $E804)&lt;br /&gt;
%patch $E9F8 [$03DAW] #Hard Ceilick (At $E7FA)&lt;br /&gt;
%patch $E9FA [$0415W] #Easy Blooguard (At $E835)&lt;br /&gt;
%patch $E9FC [$040BW] #Medium Blooguard (At $E82B)&lt;br /&gt;
%patch $E9FE [$0401W] #Hard Blooguard (At $E821)&lt;br /&gt;
%patch $EA00 [$0428W] #Grabbiter (At $E848)&lt;br /&gt;
%patch $EA02 [$0434W] #Satellite (At $E854)&lt;br /&gt;
%patch $EA04 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $EA06 [$04A7W] #Platform path up (At $E8C7)&lt;br /&gt;
%patch $EA08 [$04A7W] #Platform path right (At $E8C7)&lt;br /&gt;
%patch $EA0A [$04A7W] #Platform path down (At $E8C7)&lt;br /&gt;
%patch $EA0C [$04A7W] #Platform path left (At $E8C7)&lt;br /&gt;
%patch $EA0E [$04A7W] #Platform path up-right (At $E8C7)&lt;br /&gt;
%patch $EA10 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA12 [$04A7W] #Platform path down-left (At $E8C7)&lt;br /&gt;
%patch $EA14 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA16 [$0440W] #Rope and grappling hook (At $E860)&lt;br /&gt;
%patch $EA18 [$0452W] #Sandwich (At $E872)&lt;br /&gt;
%patch $EA1A [$0464W] #Rocket pass (At $E884)&lt;br /&gt;
%patch $EA1C [$0484W] #Easy Babobba (At $E8A4)&lt;br /&gt;
%patch $EA1E [$047DW] #Medium Babobba (At $E89D)&lt;br /&gt;
%patch $EA20 [$0476W] #Hard Babobba (At $E896)&lt;br /&gt;
%patch $EA22 [$0496W] #Rocket on Xax (At $E8B6)&lt;br /&gt;
%patch $EA24 [$0496W] #Rocket on station (At $E8B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $75A8W $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CDxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Nospike&#039;s cache is $37, the Gik&#039;s is $39 (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Nospike calls $10CC0005RL.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right initiation code&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $0415W&lt;br /&gt;
&lt;br /&gt;
#Keen left initiation code&lt;br /&gt;
%patch $E4B2 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $E4DC $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03C5W&lt;br /&gt;
&lt;br /&gt;
#Bloog initiation code&lt;br /&gt;
%patch $E502 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $03BBW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $03B1W  $57 $56 $9A {$0EFC186ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD19W  $0001W  $E9 $039EW&lt;br /&gt;
&lt;br /&gt;
#Blooglet initiation code&lt;br /&gt;
%patch $E529 $8B $46 $FA $05 [$FFF9W]  $50 $57 $56 $9A {$0EFC1B60RL}     $83 $C4&lt;br /&gt;
             $06 $8B $46 $FA $05 [$FFF9W]  $BB [$0004W]  $99 $F7 $FB $D1 $E2 $8B&lt;br /&gt;
             $DA $C7 $87 $CD1BW  $0001W  $83 $7E $FA $0A $7F $03 $E9 $036EW &lt;br /&gt;
             $C7 $06 $CD11W  $0001W  $E9 $0365W  $E9 $0362W&lt;br /&gt;
&lt;br /&gt;
#Cliffs initiation code&lt;br /&gt;
%patch $E565 $8B $46 $FA $05 [$FFF1W]  $50 $57 $56 $9A {$0EFC0A50RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $034EW&lt;br /&gt;
&lt;br /&gt;
#Fleex initiation code&lt;br /&gt;
%patch $E579 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0344W  $83 $3E {$75A8W}  [$03] {$7D}&lt;br /&gt;
             $03 $E9 $033AW  $57 $56 $9A {$11CF000FRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3DW  $0001W  $E9 $0327W  &lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar initiation code&lt;br /&gt;
%patch $E5B3 $B8 $0001W  $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $0303W&lt;br /&gt;
&lt;br /&gt;
#Vertical scrollbar initiation code&lt;br /&gt;
%patch $E5C4 $33 $C0 $50 $57 $56 $9A {$16080C38RL}     $83 $C4 $06 $E9 $02F3W&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform initiation code&lt;br /&gt;
%patch $E5D4 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $E9 $02D9W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform initiation code&lt;br /&gt;
%patch $E5EE $57 $56 $9A {$0EFC13C2RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $02C6W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium\Hard Platform initiation code&lt;br /&gt;
%patch $E601 $57 $56 $9A {$0EFC14E6RL}     $83 $C4 $04 $C7 $06 CD23W  $0001W &lt;br /&gt;
             $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium Platform initiation code&lt;br /&gt;
%patch $E614 $83 $3E {$75A8W}  [$02] {$7E} $03 $E9 $02A9W  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0296W &lt;br /&gt;
&lt;br /&gt;
#Only-Easy Platform initiation code&lt;br /&gt;
%patch $E631 $83 $3E {$75A8W}  [$01] {$7E} $03 $E9 $028CW  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0279W&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform initiation code&lt;br /&gt;
%patch $E64E $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $C7 $06 $CD33W  $0001W  $E9 $0259W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform initiation code&lt;br /&gt;
%patch $E66E $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Bobba initiation code&lt;br /&gt;
%patch $E681 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $023CW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0232W  $57 $56 $9A {$11CF015CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD29W  $0001W  $E9 $021FW&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point initiation code&lt;br /&gt;
%patch $E6A8 $8B $46 $FA $05 [$FFD4W]  $50 $57 $56 $9A {$0EFC0CF3RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $020BW&lt;br /&gt;
&lt;br /&gt;
#Nospike initiation code&lt;br /&gt;
%patch $E6BC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0201W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $01F7W  $57 $56 $9A {$10CC0005RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD37W  $0001W  $E9 $01E4W&lt;br /&gt;
&lt;br /&gt;
#Gik initiation code&lt;br /&gt;
%patch $E6E3 $83 $3E $A8 $75 $03 $7D $03 $E9 $01DAW  $83 $3E $A8 $75 $02 $7D&lt;br /&gt;
             $03 $E9 $01D0W  $57 $56 $9A {$10CC045ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD25W  $0001W  $E9 $01BDW&lt;br /&gt;
&lt;br /&gt;
#Enemy gun initiation code&lt;br /&gt;
%patch $E70A $8B $46 $FA $05 [$FFCBW]  $50 $57 $56 $9A $10CC06B1RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD43W  $0001W  $E9 $01A3W&lt;br /&gt;
&lt;br /&gt;
#&#039;IF&#039; Ammo initiation code (Uses following item initiation)&lt;br /&gt;
%patch $E724 $83 $3E {$7590W}  [$05] {$7C} $03 $E9 $0199W  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Item initiation code&lt;br /&gt;
%patch $E733 $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0EFC0420RL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17D8W]  $D1 $E3 $C7 $87 $CCFFW&lt;br /&gt;
             $0001W  $E9 $016FW &lt;br /&gt;
&lt;br /&gt;
#Orbatrix initiation code&lt;br /&gt;
%patch $E758 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0165W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $015BW  $57 $56 $9A {$10CC081ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD39W  $0001W  $E9 $0148W&lt;br /&gt;
&lt;br /&gt;
#Ceilick initiation code&lt;br /&gt;
%patch $E7FA $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00C3W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00B9W  $57 $56 $9A {$11CF07BCRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3BW  $0001W  $E9 $00A6W&lt;br /&gt;
&lt;br /&gt;
#Blooguard initiation code&lt;br /&gt;
%patch $E821 $83 $3E $75A8W  [$03] {$7D} $03 $E9 $009CW  $83 $3E $75A8W  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0092W  $57 $56 $9A {$0EFC192ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2DW  $0001W  $E9 $007FW &lt;br /&gt;
&lt;br /&gt;
#Grabbiter initiation code&lt;br /&gt;
%patch $E848 $57 $56 $9A {$0EFC0515RL}     $83 $C4 $04 $EB $73&lt;br /&gt;
&lt;br /&gt;
#Satellite initiation code&lt;br /&gt;
%patch $E854 $57 $56 $9A {$0EFC0D73RL}     $83 $C4 $04 $EB $67&lt;br /&gt;
&lt;br /&gt;
#Rope initiation code&lt;br /&gt;
%patch $E860 $57 $56 $9A {$0EFC0FD1RL}     $83 $C4 $04 $C7 $06 $CD3FW  $0001W&lt;br /&gt;
             $EB $55&lt;br /&gt;
&lt;br /&gt;
#Sandwich initiation code&lt;br /&gt;
%patch $E872 $57 $56 $9A {$0EFC0F90RL}     $83 $C4 $04 $C7 $06 $CD41W  $0001W&lt;br /&gt;
             $EB $43&lt;br /&gt;
&lt;br /&gt;
#Rocket pass initiation code&lt;br /&gt;
%patch $E884 $57 $56 $9A {$0EFC1012RL}     $83 $C4 $04 $C7 $06 $CD45W  $0001W&lt;br /&gt;
             $EB $31&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in Keen 6. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face; this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1CF30034RL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Item spawn code&lt;br /&gt;
%patch $F3E0 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A78W]  $8B $1E $66 $A9 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$196AW]  $50 $53 $9A &lt;br /&gt;
     $08F41219RL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Grabbiter spawn code&lt;br /&gt;
%patch $F4D5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                 $C7 $07 [$001EW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $83 $3E {$7594W}  [$02] {$75} $0F $B8 [$1ACCW]&lt;br /&gt;
                 $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
                                                                 $B8 [$1A90W]&lt;br /&gt;
             $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point spawn code&lt;br /&gt;
%patch $FCB3 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
         $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 [$0002W]  $C7&lt;br /&gt;
             $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$0022W]  $8B $C6 $89&lt;br /&gt;
             $47 $30 $89 $47 $2C $8B $C7 $89 $47 $32 $89 $47 $2E $8B $46 $0A&lt;br /&gt;
             $35 [$0001W]  $40 $89 $47 $3E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $22&lt;br /&gt;
             $89 $47 $0A $8B $47 $22 $05 [$0100W]  $89 $47 $26 $8B $C7 $D3 $E0&lt;br /&gt;
             $89 $47 $24 $89 $47 $0C $8B $47 $24 $05 [$0100W]  $89 $47 $28 $B8&lt;br /&gt;
             [$1C52W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite spawning code&lt;br /&gt;
%patch $FD33 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0&lt;br /&gt;
             $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $06&lt;br /&gt;
             [$0000W]  $C7 $47 $20 [$0002W]  $C7 $47 $02 [$0002W]  $C7 $07 [$0021W]&lt;br /&gt;
             $8B $C6 $B1 $08 $D3 $E0 $89 $47 $0A $8B $C7 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $B8 [$1C8EW]  $50 $53 $9A&lt;br /&gt;
             $08F41219RL     $83 $C4 $04 $C7 $46 $FE [$0003W]  $8B $46 $FE $05&lt;br /&gt;
             [$005BW]  $8B $DF $D1 $E3 $8B $9F $8B $CA $D1 $EB $D1 $E3 $8E $06&lt;br /&gt;
             $79 $A9 $8B $D6 $D1 $E2 $03 $DA $26 $89 $07 $8B $1E $66 $A9 $8B&lt;br /&gt;
             $46 $FE $89 $47 $3E $C7 $47 $40 [$0100W]  $C7 $47 $44 [$0002W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sandwich spawning code&lt;br /&gt;
%patch $FF50 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001BW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D06W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Rope spawning code&lt;br /&gt;
%patch $FF91 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001CW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D24W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Passcard spawning code&lt;br /&gt;
%patch $FFD2 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001DW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D42W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Molly spawning code&lt;br /&gt;
%patch $1006B $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1D60W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform spawn code&lt;br /&gt;
%patch $100D6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] {$77} $45 $D1 $E3 $2E $FF $A7     #3 + 1 Platform types&lt;br /&gt;
          {$11A8W}  $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB #List location, up code&lt;br /&gt;
              $2E $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB #Right code&lt;br /&gt;
              $1E $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB #Down code&lt;br /&gt;
              $0E $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8 #Left code&lt;br /&gt;
              [$1DD8W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Direction list&lt;br /&gt;
%patch $10168 [$1157W] #Up (At $10117)&lt;br /&gt;
%patch $1016A [$1167W] #Right (At $10127)&lt;br /&gt;
%patch $1016C [$1177W] #Down (At $10137)&lt;br /&gt;
%patch $1016E [$1187W] #Left (At $10147)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $10382 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DF6W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting Platforms spawn code&lt;br /&gt;
%patch $104A6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E50W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform spawn code&lt;br /&gt;
%patch $104F9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A &lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $B8 [$1E6EW]  $50 $53 $9A $08F41219RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $8B $CA $D1 $EB $D1 $E3 $8E $06 $79 $A9 $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $66 $A9 $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W] $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10764 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E8CW]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bloog spawn code&lt;br /&gt;
%patch $1082A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0007W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1EE6W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooguard spawning code&lt;br /&gt;
%patch $108EE $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FD80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0003W]&lt;br /&gt;
                  $B8 [$1F7CW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn code&lt;br /&gt;
%patch $10B20 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7&lt;br /&gt;
              $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
              $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]&lt;br /&gt;
                  {$7D} $0B $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]&lt;br /&gt;
              $89 $77 $3E $8B $C6 $BB [$0004W]  $99 $F7 $FB $8B $DA $83 $FB [$03]&lt;br /&gt;
              {$77} $50 $D1 $E3 $2E $FF $A7 [$1C25W]  $B8 [$208AW]  $50 $FF $36 $66&lt;br /&gt;
              $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8 [$2120W]  $50&lt;br /&gt;
              $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8&lt;br /&gt;
              [$21B6W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E&lt;br /&gt;
              $5D $CB $B8 [$224CW]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn list&lt;br /&gt;
%patch $10BE5 [$1BD9W] #Red Blooglet (At $10B99)&lt;br /&gt;
%patch $10BE7 [$1BECW] #Yellow Blooglet (At $10BAC)&lt;br /&gt;
%patch $10BE9 [$1BFFW] #Blue Blooglet (At $10BBF)&lt;br /&gt;
%patch $10BEB [$1C12W] #Green Blooglet (At $10BD2)&lt;br /&gt;
&lt;br /&gt;
#Nospike spawn code&lt;br /&gt;
%patch $10CC5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2460W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $44&lt;br /&gt;
              [$0004W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Gik spawn code&lt;br /&gt;
%patch $1111A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2604W]  $50 $53 $9A&lt;br /&gt;
          $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $11371 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0012W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$26F6W]  $50 $53 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bipship spawn code&lt;br /&gt;
%patch $117C3 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE80W]  $89 $47 $0C&lt;br /&gt;
              $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E&lt;br /&gt;
              $66 $A9 $8B $47 $0E $BA $0014W  $F7 $EA $89 $47 $16 $B8 [$2A5CW]&lt;br /&gt;
              $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blorb spawn code&lt;br /&gt;
%patch $1239C $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66&lt;br /&gt;
              $A9 $C7 $47 $10 [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $10 [$FFFFW]&lt;br /&gt;
                  $8B $1E $66 $A9 $C7 $47 $06 [$0002W]  $B8 [$3164W]  $50 $53 $9A&lt;br /&gt;
              $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ceilick spawning code&lt;br /&gt;
%patch $124AC $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$31BEW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused sprite cache ==&lt;br /&gt;
&lt;br /&gt;
In Keen 6 there is one sprite cache not used by any sprites. This is given by &amp;lt;tt&amp;gt;$C7 $06 $CD17W  $0001W&amp;lt;/tt&amp;gt; and the following patch controls what sprites it contains (It contains none by default.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Unused sprite cache&lt;br /&gt;
%patch $3242A [$0000W] #Unused cache start&lt;br /&gt;
%patch $3247A [$0000W] #Unused cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Free space for new initiation codes ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the default initiation codes so that space is generated for custom sprite initiation codes. There are several options, more than one of which can be used together. These patches are incompatible with any initiation patches elsewhere on this page that also affect these sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E4CE for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked in blue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E954 [$006DW] #Keen left (At $E488)&lt;br /&gt;
%patch $E956 [$0088W] #Map Keen (At $E4A8)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen initiation codes (Frees $E4CE-$E501)&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}&lt;br /&gt;
             $83 $C4 $06 $9A $0CA6000ARL     $C7 $06 $CD01W  $0001W  $EB $15&lt;br /&gt;
%patch $E4A8 $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03F9W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 6)|platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E986 $01FAW #Platform up (At $E61A)&lt;br /&gt;
%patch $E988 $01FAW #Platform right (At $E61A)&lt;br /&gt;
%patch $E98A $01FAW #Platform down (At $E61A)&lt;br /&gt;
%patch $E98C $01FAW #Platform left (At $E61A)&lt;br /&gt;
%patch $E990 $020DW #Falling Platform (At $E62D)&lt;br /&gt;
%patch $E992 $0216W #Only-Easy sitting Platform (At $E636)&lt;br /&gt;
%patch $E994 $0220W #Easy\Medium sitting Platform (At $E640)&lt;br /&gt;
%patch $E996 $022AW #Easy\Medium\Hard sitting Platform (At $E64A)&lt;br /&gt;
%patch $E998 $0233W #Path Platform up (At $E653)&lt;br /&gt;
%patch $E99A $0233W #Path Platform right (At $E653)&lt;br /&gt;
%patch $E99C $0233W #Path Platform down (At $E653)&lt;br /&gt;
%patch $E99E $0233W #Path Platform left (At $E653)&lt;br /&gt;
%patch $E9A0 $0246W #Sneaky Platform (At $E666)&lt;br /&gt;
&lt;br /&gt;
#Compact Platform initiation codes (Frees $E5D4 - $E619)&lt;br /&gt;
%patch $E61A $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4 #HV plats&lt;br /&gt;
             $06 $EB $43&lt;br /&gt;
%patch $E62D $57 $56 $9A {$0EFC13C2RL}     $EB $37			     #Dropping plat&lt;br /&gt;
%patch $E636 $83 $3E {$75A8W}  [$01] {$7E} $0D $E9 $0287W  $83 $3E {$75A8W}  [$02] {$7E} #Sitting plats&lt;br /&gt;
             $03 $E9 $027DW  $57 $56 $9A {$0EFC14E6RL}     $EB $1A&lt;br /&gt;
%patch $E653 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4 #Goplat&lt;br /&gt;
             $06 $EB $0A&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W  #Sneaky plat&lt;br /&gt;
             $E9 $024EW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This addition can be used if the [[Patch:Goplat (Keen 6)|Goplats]] are patched to only use 1 animation. (That is, without Bip riders.) This also frees up graphics and memory. The platform animation cached is highlighted in blue. (It is the same as the default here and marked in blue.) This addition can be added to the end of the above patch, replacing the last patch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 #Sneaky plat&lt;br /&gt;
             $76 $8E $C0 $26 $08 $16 [$01A8W]  $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t draw Goplat Bips in Keen 6&lt;br /&gt;
%patch $10738 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41225</id>
		<title>Patch:Sprite spawning</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Sprite_spawning&amp;diff=41225"/>
		<updated>2019-12-16T23:09:57Z</updated>

		<summary type="html">&lt;p&gt;Levellass: bobba init code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a tutorial page on patching sprite spawning. It contains information on what sprite spawn code is and how to patch it. A sprite&#039;s spawn code sets all of the sprite&#039;s variables before it is placed in the level. Many of these variables are important and only set once.&lt;br /&gt;
&lt;br /&gt;
This page deals with patches relating to sprite spawning, covering a number of patches applied to sprites before they&#039;re even created and even allowing more sprites than normal to be placed in a game. The page is prefaced with a section explaining the different areas of sprite spawning, followed by a section for each game.&lt;br /&gt;
&lt;br /&gt;
A related tutorial page dealing with expanding the number of sprites in Keen 1-3 is [[Patch:Patching Vorticon Sprites]] and its equivalent for Keen Galaxy and Dreams is [[Patch:Patching Galaxy Sprites]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Areas of sprite spawning =&lt;br /&gt;
&lt;br /&gt;
There are three areas involved in spawning a sprite, the pointer list, the initiation code and the spawning code proper.&lt;br /&gt;
&lt;br /&gt;
The pointer list is exactly what it sounds like, sprites in level maps are simply values in the sprite plane, from $0000-$FFFF. Certain &#039;standard&#039; values (Lower ones) are used for sprites, other &#039;special&#039; values are treated on a case by case basis, usually [[Patch:Bridges and switches|switches.]]&lt;br /&gt;
&lt;br /&gt;
There are three parts to this, the list&#039;s location, its length (minus one) and the list itself. The list consists of a number of two-byte values each related to the location of a sprite&#039;s initiation code. Every sprite of a certain number will be directed via the list to a certain segment of initiation code.&lt;br /&gt;
&lt;br /&gt;
Initiation code prepares the game for the sprite, setting aside memory, caching graphics and suchlike. It is not a solid block of code, but part of the same code as the pointer list. The initiation code directs the game to the sprite&#039;s individual spawning code.&lt;br /&gt;
&lt;br /&gt;
The spawning code is a solid block of code executed once per sprite that results in the sprite being placed in the level and set in motion; it prepares the sprite for the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 1 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 1]] is unusual in that only the first five sprites are &#039;standard&#039;, while the [[Patch:Icecubes|Ice cannons,]] [[Patch:Falling block|falling block]] and [[Patch:Keen (Keen 1)|Keen himself]] are special cases with specific sprite numbers. It is possible to standardize the sprite initiations and thus allow many more sprite types and customization. This is covered in the following section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $1709W directs the game to the list at $1709. The standard sprite list is 4 + 1 = 5 entries long. Other sprite types are more difficult to work with. Sprites &#039;&#039;less&#039;&#039; than Ice Type 3 ($09) but &#039;&#039;greater&#039;&#039; then the standard types (Including type 6, an Ice Cannon!) are Ice Cannons. (By default $07, $08 and $09.) Type 0 Ice Cannons have their own special type ($06), dealt with &#039;&#039;before&#039;&#039; all other sprites, even standard ones. The Chain&#039;s type is $0A and finally Keen too has a special type, $FF (255).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $1632 {$1709W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $1627 $04&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $1709 [$1656W] #Yorp&lt;br /&gt;
             [$1661W] #Garg&lt;br /&gt;
             [$166CW] #Vorticon&lt;br /&gt;
             [$1676W] #Butler robot&lt;br /&gt;
             [$1680W] #Tank robot&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $161F [$06]    #Ice Type 0&lt;br /&gt;
%patch $1636 [$09]    #Ice Type 3&lt;br /&gt;
%patch $163D [$07]    #Ice Type 1&lt;br /&gt;
%patch $1642 [$08]    #Ice Type 2&lt;br /&gt;
%patch $164A [$0A]    #Falling block&lt;br /&gt;
%patch $164F [$00FFW] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 1 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $1656 $57 $56 $E8 $0225W  $83 $C4 $04 $E9 $008EW 	     #Goes to Yorp (Code at $1656 + $225 + $5 = $1880)&lt;br /&gt;
%patch $1661 $57 $56 $E8 $01DDW  $83 $C4 $04 $E9 $0083W 	     #Goes to Garg (Code at $1661 + $1DD + $5 = $1843)&lt;br /&gt;
%patch $166C $57 $56 $E8 $0164W  $83 $C4 $04 $EB $79		     #Goes to Vorticon (Code at $166C + $164 + $5 = $17D5)&lt;br /&gt;
%patch $1676 $57 $56 $E8 $00FCW  $83 $C4 $04 $EB $6F		     #Goes to Butler Bot (Code at $1676 + $FC + $5 = $1777)&lt;br /&gt;
%patch $1680 $57 $56 $E8 $008EW  $83 $C4 $04 $EB $65		     #Goes to Tank Bot (Code at $1680 + $8E + $5 = $1713)&lt;br /&gt;
%patch $168A $33 $C0 $50 $57 $56 $E8 $028EW  $83 $C4 $06 $EB $58     #Goes to Type 0 Ice Cannon (Code at $168A + $28E + $8 = $1920)&lt;br /&gt;
%patch $1697 $B8 $0001W  $50 $57 $56 $E8 $0280W  $83 $C4 $06 $EB $4A #Goes to Type 1 Ice Cannon (Code at $1697 + $280 + $9 = $1920)&lt;br /&gt;
%patch $16A5 $B8 $0002W  $50 $57 $56 $E8 $0272W  $83 $C4 $06 $EB $3C #Goes to Type 2 Ice Cannon (Code at $16A5 + $272 + $9 = $1920)&lt;br /&gt;
%patch $16B3 $B8 $0003W  $50 $57 $56 $E8 $0264W  $83 $C4 $06 $EB $2E #Goes to Type 3 Ice Cannon (Code at $16B3 + $264 + $9 = $1920)&lt;br /&gt;
%patch $16C1 $57 $56 $E8 $021DW  $83 $C4 $04 $EB $24		     #Goes to Falling block (Code at $16C1 + $21D + $5 = $18E3)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $16CB $8B $C6 $99 $B1 $0C $E8 $CA7EW  $A3 $6EDEW  $89 $16 $6EE0W&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $CA6FW  $05 [$0800W]  $83 $D2 $00 $A3 $6EE2W&lt;br /&gt;
                 $89 $16 $6EE4W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 1 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Yorp&lt;br /&gt;
%patch $1880 $55 $8B $EC $56 $E8 $10AEW  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $C8BBW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8ACW  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$194FW}  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start behavior is at $194F&lt;br /&gt;
             $7F $0F $7C $06 $3B $16 $DE $6E $73 $07 $C7 $44 $20 [$003CW]  $EB #If left of Keen speed = $3C else is $FFC4 (+\-60)&lt;br /&gt;
             $05 $C7 $44 $20 [$FFC4W]  $C7 $44 $34 {$1A68W}  $C7 $44 $28 [$0030W]  #Death at $1A68, start animation = $30 = 48&lt;br /&gt;
             $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Garg&lt;br /&gt;
%patch $1843 $55 $8B $EC $56 $E8 $10EBW  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $C8F8W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C8E9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1B51W}  #Start behavior at $1B51&lt;br /&gt;
             $C7 $44 $34 {$1BCEW}  $C7 $44 $28 [$003CW]  $5E $5D $C3             #Death at $1BCE; start animation = $3C = 60&lt;br /&gt;
&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $17D5 $55 $8B $EC $56 $E8 $1159W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $C966W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C957W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$1C0EW}  #Behavior at 1C0E&lt;br /&gt;
             $C7 $44 $34 {$1D6EW}  $C7 $44 $24 [$0003W]  $83 $3E $04 $83 {$10 $75} #Death 1D6E, strength = 3 unless level = 16&lt;br /&gt;
             $05 $C7 $44 $24 [$0068W]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Then strength = 100&lt;br /&gt;
             $7C $0F $7F $06 $3B $16 $DE $6E $76 $07 $C7 $44 $20 [$FFA6W]  $EB #If right of Keen speed = FFA6&lt;br /&gt;
             $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$004EW]  $5E $5D $C3         #Else speed = $5A, start animation = $4E&lt;br /&gt;
&lt;br /&gt;
#Butler bot&lt;br /&gt;
%patch $1777 $55 $8B $EC $56 $E8 $11B7W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $C9C4W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C9B5W  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$005AW]  #Start speed = $5A&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E $7F $10 $7C $06 $3B $16&lt;br /&gt;
             $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89 $44 $20 $C7 $44 $32&lt;br /&gt;
         {$1DC7W}  $C7 $44 $34 {$1E94W}  $C7 $44 $28 [$0060W]  $5E $5D $C3         #Behavior 1DC7, death 1E94, start animation $60&lt;br /&gt;
&lt;br /&gt;
#Tank bot&lt;br /&gt;
%patch $1713 $55 $8B $EC $56 $E8 $121BW  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $CA28W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CA19W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $20 [$005AW]  $8B $44 $06 $8B $54 $04 $3B $06 $E0 $6E #Start speed = $5A&lt;br /&gt;
             $7F $10 $7C $06 $3B $16 $DE $6E $73 $08 $8B $44 $20 $F7 $D8 $89&lt;br /&gt;
             $44 $20 $C7 $44 $32 {$1F75W}  $C7 $44 $34 {$2045W}  $C7 $44 $28     #Start behavior at $1F75W death at $2045&lt;br /&gt;
          [$006AW]  $5E $5D $C3                                                #Start animation $6A&lt;br /&gt;
&lt;br /&gt;
#Falling block&lt;br /&gt;
%patch $18E3 $55 $8B $EC $56 $E8 $104BW  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $C858W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $C849W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3360W}  #Start behavior at $3360 (Nothing)&lt;br /&gt;
             $C7 $44 $34 {$22BBW}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Death $22BB, start (and only) animation $72&lt;br /&gt;
&lt;br /&gt;
#Ice cubes&lt;br /&gt;
%patch $1920 $55 $8B $EC $56 $E8 $1057W  $8B $F0 $C7 $44 $08 $0003W  $C7 $44 #No sprite type or other properties&lt;br /&gt;
             $22 {$204AW}  $8B $46 $08 $89 $44 $0A $8B $46 $04 $99 $89 $04 $89 #Call Canon behavior at $204A&lt;br /&gt;
             $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54 $06 $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 1 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $09 and its location is $168A. This actually greatly simplifies the Keen 1 code, and as such is used in preference to the above default code as it flows more logically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Re-write the core switch statement.&lt;br /&gt;
%patch $161D $4B $83 $FB [$09] $76 $0A $81 $FB $FE $00 $0F $84 $A0 $00 $E9 $C1&lt;br /&gt;
             $00 $D1 $E4 $2E $D1 $E3 $2E $FF $A7 {$168AW}&lt;br /&gt;
#Combine the ice-launchers&lt;br /&gt;
%patch $16B1 $D1 $EB $83 $EB $05 $53&lt;br /&gt;
&lt;br /&gt;
#Locations of jumps to sprite spawn code&lt;br /&gt;
%patch $168A {$1656W} #Yorp&lt;br /&gt;
             {$1661W} #Garg&lt;br /&gt;
             {$166CW} #Vorticon&lt;br /&gt;
             {$1676W} #Butler&lt;br /&gt;
             {$1680W} #Tank&lt;br /&gt;
             {$16B1W} #Ice Launcher 1&lt;br /&gt;
             {$16B1W} #Ice Launcher 2&lt;br /&gt;
             {$16B1W} #Ice Launcher 3&lt;br /&gt;
             {$16B1W} #Ice Launcher 4&lt;br /&gt;
             {$16C1W} #Falling Block&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 2 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 2]] is much more regular than Keen 1 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. Thus the pointer to the list of value $3BE2W directs the game to the list at $3BE2. The standard sprite list is 3 + 1 = 4 entries long. Other sprite types are more difficult to work with. Types 5, 6, 7 and 255 have their own separate codes that are jumped to directly, for reasons unknown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1 Initiation list&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3B4A {$3BE2W}&lt;br /&gt;
&lt;br /&gt;
#List length&lt;br /&gt;
%patch $3B3F [$03]&lt;br /&gt;
&lt;br /&gt;
#List&lt;br /&gt;
%patch $3BE2 [$3B5EW] #Vorticon (At $3B5E)&lt;br /&gt;
             [$3B68W] #Youth (At $3B68)&lt;br /&gt;
             [$3B72W] #Vorticon Elite (At $3B72)&lt;br /&gt;
             [$3B7CW] #Scrub (At $3B7C)&lt;br /&gt;
&lt;br /&gt;
#Special sprite numbers&lt;br /&gt;
%patch $3B37 [$05] $74 $4C    #Robot (At $3B86)&lt;br /&gt;
%patch $3B4E [$06] $74 $3F    #Platform (At $3B90)&lt;br /&gt;
%patch $3B53 [$07] $74 $44    #Tantalus spark (At $3B9A)&lt;br /&gt;
%patch $3B58 [$00FFW] $74 $48 #Keen (At $3BA4)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for Keen 2 are mostly quite simple, setting aside some memory space then jumping straight to the spawn code. Getting to the spawn code is reasonably easy to decipher, involving the address of the code plus the $E8 call plus the number of bytes before it.&lt;br /&gt;
&lt;br /&gt;
The player&#039;s initiation is different and far more complex. It does not seem to call a spawn code, but the blue value is how high Keen spawns. (This appears to be stored in memory so Keen can be spawned later.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3B5E $57 $56 $E8 $0087W  $83 $C4 $04 $EB $60 #Goes to Vorticon (Code at $3B5E + $87 + $5 = $3BEA)&lt;br /&gt;
%patch $3B68 $57 $56 $E8 $00DFW  $83 $C4 $04 $EB $56 #Goes to Youth (Code at $3B68 + $DF + $5 = $3C4C)&lt;br /&gt;
%patch $3B72 $57 $56 $E8 $0137W  $83 $C4 $04 $EB $4C #Goes to Elite (Code at $3B72 + 137 + $5 = $3CAE)&lt;br /&gt;
%patch $3B7C $57 $56 $E8 $018FW  $83 $C4 $04 $EB $42 #Goes to Scrub (Code at $3B7C + 18F + $5 = $3D10)&lt;br /&gt;
%patch $3B86 $57 $56 $E8 $01C2W  $83 $C4 $04 $EB $38 #Goes to Robot (Code at $3B86 + 1C2 + $5 = $3D4D)&lt;br /&gt;
%patch $3B90 $57 $56 $E8 $01FFW  $83 $C4 $04 $EB $2E #Goes to Platform (Code at $3B90 + 1FF + $5 = $3D94)&lt;br /&gt;
%patch $3B9A $57 $56 $E8 $023DW  $83 $C4 $04 $EB $24 #Goes to Tantalus (Code at $3B9S + 23D + $5 = $3DDC)&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s initiation&lt;br /&gt;
%patch $3BA4 $8B $C6 $99 $B1 $0C $E8 $9CD5W  $A3 $6EBAW  $89 $16 $6EBCW&lt;br /&gt;
             $8B $C7 $99 $B1 $0C $E8 $9CC6W  $05 [$0800W]  $83 $D2 $00 $A3 $6EBEW&lt;br /&gt;
             $89 $16 $6EC0W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 2 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. &lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon spawning code&lt;br /&gt;
%patch $3BEA $55 $8B $EC $56 $E8 $1B86W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $9C81W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C72W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3E19W}  #Behavior = $3E19&lt;br /&gt;
             $C7 $44 $34 {$3F8CW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $3F8C, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0052W]  $5E #Speed +-90, sprite = $52&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Youth spawning code&lt;br /&gt;
%patch $3C4C $55 $8B $EC $56 $E8 $1B24W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $9C1FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9C10W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$3FCCW}  #Behavior = $3FCC&lt;br /&gt;
             $C7 $44 $34 {$4093W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $4094, health = 1&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$0030W]  $5E #Speed +-250, sprite = $30&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vorticon Elite spawning code&lt;br /&gt;
%patch $3CAE $55 $8B $EC $56 $E8 $1AC2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $9BBDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9BAEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$40CEW}  #Behavior = $40CE&lt;br /&gt;
             $C7 $44 $34 {$4283W}  $C7 $44 $24 [$0002W]  $8B $44 $06 $8B $54 $04 #Collision = $4283, health = 2&lt;br /&gt;
             $3B $06 $BC $6E $7C $0F $7F $06 $3B $16 $BA $6E $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF9CW]  $EB $05 $C7 $44 $20 [$0064W]  $C7 $44 $28 [$0058W]  $5E #Speed +-100, sprite = $58&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Scrub spawning code&lt;br /&gt;
%patch $3D10 $55 $8B $EC $56 $E8 $1A60W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $9B5BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B4CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$42C1W}  #Behavior = $42C1&lt;br /&gt;
             $C7 $44 $34 {$4507W}  $C7 $44 $28 [$0066W]  $5E $5D $C3             #Collision = $4507, sprite = $66&lt;br /&gt;
&lt;br /&gt;
#Guard Robot spawning code&lt;br /&gt;
%patch $3D4D $55 $8B $EC $56 $E8 $1A23W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $9B1EW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9B0FW  $89 $44 $08 $89 $54 $0A $C7 $44 $20 [$0064W]  #Speed = 100&lt;br /&gt;
             $C7 $44 $32 {$4539W}  $C7 $44 $34 {$4677W}  $C7 $44 $24 $63 $00 $C7 #Behavior = $4539, collision = $4677, sprite = $78&lt;br /&gt;
             $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Platform spawning code&lt;br /&gt;
%patch $3D94 $55 $8B $EC $56 $E8 $19DCW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $9AD7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9AC8W  $05 [$FC00W]  $83 $D2 $FF $89 $44 $08 $89 $54 #Spawn $FC00 down&lt;br /&gt;
             $0A $C7 $44 $32 {$467CW}  $C7 $44 $34 {$61A2W}  $C7 $44 $28 [$007EW]  #Behavior = $467C, collision = $61A2, speed = $7E, sprite = $4B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Tantalus spawning code&lt;br /&gt;
%patch $3DDC $55 $8B $EC $56 $E8 $1994W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $9A8FW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $9A80W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}  #Behavior = $46DF, collision = $4716, sprite = $80&lt;br /&gt;
             $C7 $44 $34 {$4716W}  $C7 $44 $28 [$0080W]  $5E $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standardize Keen 2 initiations, allow more types of sprite ==&lt;br /&gt;
&lt;br /&gt;
As explained under [[Patch:Patching Vorticon Sprites]] this patch rearranges the &#039;core switch statement&#039; allowing all default sprites to be treated as standard. The new list length is the blue $07 and its location is $3B83. This allows several more sprites to be added to the game (here just one new one is added.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 2 pointers&amp;quot;&amp;gt;&lt;br /&gt;
#Regularized Keen 2 spawning code&lt;br /&gt;
%patch $3B35 $81 $FB $00FFW  $74 $69 $4B $83 $FB [$07] $76 $03 $E9 $0084W  $D1&lt;br /&gt;
             $E3 $2E $FF $A7 $3B83W&lt;br /&gt;
%patch $3B4B $57 $56 $E8 $009AW  $EB $4D $57 $56 $E8 $00F5W  $EB $46&lt;br /&gt;
             $57 $56 $E8 $0150W  $EB $3F $57 $56 $E8 $01ABW  $EB $38&lt;br /&gt;
             $57 $56 $E8 $01E1W  $EB $31 $57 $56 $E8 $0221W  $EB $2A&lt;br /&gt;
             $57 $56 $E8 $0262W  $EB $23 $57 $56 $E8 $CF71W  $EB $1C&lt;br /&gt;
%patch $3B83 $3B4BW  $3B52W  $3B59W  $3B60W  $3B67W  $3B6EW  $3B75W  $3B7CW&lt;br /&gt;
&lt;br /&gt;
#New sprite spawn, immortal, platform type, Tantalus behavior&lt;br /&gt;
%patch $0AF2 $55 $8B $EC $56 $E8 $4C7EW  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04&lt;br /&gt;
             $99 $B1 $0C $E8 $CD79W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $CD6AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$46DFW}&lt;br /&gt;
             $C7 $44 $34 {$4677W}  $C7 $44 $28 $0010W  $C7 $44 $20 [$0049W]  $5E&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 3 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 3]] is much more regular than Keen 1 or 2 in that all its sprites follow he same basic pattern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
All pointers are the same, two-byte values giving the exact location of the data they reference. However Keen 3 has one important different. The primary list is a &#039;number list&#039; that gives values in the sprite plane that are converted to various sprites. (For example value 1 in the sprite plane becomes sprite 1, the Vorticon. Value 255 becomes sprite 19, or Keen.) Both this list and the pointer list are the same length, controlled by a single variable, the list length. This is in entries, or words; two bytes long. (So the list length in bytes is this value * 2) The location of the pointer list is a number of bytes after the number list (So changing the number list&#039;s location also changes the pointer list location.) By default this value is the length of the number list in bytes so that both lists form a solid block of data. Also notable is the &#039;Vorticon 2&#039; which has its own sprite number, yet has the same pointer as the Vorticon meaning this sprite is just an unnecessary additional Vorticon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 Initiation lists&amp;quot;&amp;gt;&lt;br /&gt;
#List location&lt;br /&gt;
%patch $3ACA {$3BD4W} #Number&lt;br /&gt;
%patch $3ADE [$26]    #Pointer list is this many bytes after number list (3BD4 + 26 = 3BFA)&lt;br /&gt;
&lt;br /&gt;
#List lengths (in words, = byte length/2)&lt;br /&gt;
%patch $3AC7 $0013W&lt;br /&gt;
&lt;br /&gt;
#Number list&lt;br /&gt;
%patch $3BD4 [$0001W] #Vorticon&lt;br /&gt;
%patch $3BD6 [$0002W] #Vortikid&lt;br /&gt;
%patch $3BD8 [$0003W] #Vortimom&lt;br /&gt;
%patch $3BDA [$0004W] #Meep&lt;br /&gt;
%patch $3BDC [$0005W] #Vortininja&lt;br /&gt;
%patch $3BDE [$0006W] #Foob&lt;br /&gt;
%patch $3BE0 [$0007W] #Ball&lt;br /&gt;
%patch $3BE2 [$0008W] #Jack&lt;br /&gt;
%patch $3BE4 [$0009W] #H Platform&lt;br /&gt;
%patch $3BE6 [$000AW] #V Platform&lt;br /&gt;
%patch $3BE8 [$000BW] #Vorticon 2&lt;br /&gt;
%patch $3BEA [$000CW] #Purple Spark&lt;br /&gt;
%patch $3BEC [$000DW] #Heart&lt;br /&gt;
%patch $3BEE [$000EW] #Gun across&lt;br /&gt;
%patch $3BF0 [$000FW] #Gun down&lt;br /&gt;
%patch $3BF2 [$0010W] #MM Hand&lt;br /&gt;
%patch $3BF4 [$0011W] #MM Left foot&lt;br /&gt;
%patch $3BF6 [$0012W] #MM Right foot&lt;br /&gt;
%patch $3BF8 [$00FFW] #Keen&lt;br /&gt;
&lt;br /&gt;
#Pointer list&lt;br /&gt;
%patch $3BFA [$3ADFW] #Vorticon&lt;br /&gt;
%patch $3BFC [$3AE9W] #Vortikid&lt;br /&gt;
%patch $3BFE [$3AF3W] #Vortimom&lt;br /&gt;
%patch $3C00 [$3AFDW] #Meep&lt;br /&gt;
%patch $3C02 [$3B07W] #Vortininja&lt;br /&gt;
%patch $3C04 [$3B11W] #Foob&lt;br /&gt;
%patch $3C06 [$3B1BW] #Ball&lt;br /&gt;
%patch $3C08 [$3B25W] #Jack&lt;br /&gt;
%patch $3C0A [$3B2FW] #H Platform&lt;br /&gt;
%patch $3C0C [$3B39W] #V Platform&lt;br /&gt;
%patch $3C0E [$3B42W] #Vorticon 2&lt;br /&gt;
%patch $3C10 [$3B4BW] #Purple Spark&lt;br /&gt;
%patch $3C12 [$3B54W] #Heart&lt;br /&gt;
%patch $3C14 [$3B5DW] #Gun across&lt;br /&gt;
%patch $3C16 [$3B66W] #Gun down&lt;br /&gt;
%patch $3C18 [$3B6FW] #Hand&lt;br /&gt;
%patch $3C1A [$3B78W] #Left Foot&lt;br /&gt;
%patch $3C1C [$3B86W] #Right foot&lt;br /&gt;
%patch $3C1E [$3B94W] #Keen&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The initiation codes for the various sprites are quite simple. each simply tells the game a new sprite is going to be produced, then jumps to that sprite&#039;s spawn code. The finishing code is run by all sprite initiation codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Initiation codes&lt;br /&gt;
%patch $3ADF $56 $57 $E8 $013CW  $59 $59 $E9 $00D1W				#Goes to Vorticon (Code at $3ADF + $13C + 5 = $3C20)&lt;br /&gt;
%patch $3AE9 $56 $57 $E8 $0194W  $59 $59 $E9 $00C7W				#Goes to Vortikid (Code at $3AE9 + $194 + 5 = $3C82)&lt;br /&gt;
%patch $3AF3 $56 $57 $E8 $01ECW  $59 $59 $E9 $00BDW				#Goes to Vortimom (Code at $3AF3 + $1EC + 5 = $3CE4)&lt;br /&gt;
%patch $3AFD $56 $57 $E8 $0244W  $59 $59 $E9 $00B3W				#Goes to Meep (Code at $3AFD + $244 + 5 = $3D46)&lt;br /&gt;
%patch $3B07 $56 $57 $E8 $02A2W  $59 $59 $E9 $00A9W				#Goes to Vortininja (Code at $3B07 + $2A2 + 5 = $3DAE)&lt;br /&gt;
%patch $3B11 $56 $57 $E8 $02FAW  $59 $59 $E9 $009FW				#Goes to Foob (Code at $3B11 + $2FA + 5 = $3E10)&lt;br /&gt;
%patch $3B1B $56 $57 $E8 $0352W  $59 $59 $E9 $0095W				#Goes to Ball (Code at $3B1B + $352 + 5 = $3E72)&lt;br /&gt;
%patch $3B25 $56 $57 $E8 $03CAW  $59 $59 $E9 $008BW				#Goes to Jack (Code at $3B25 + $3CA + 5 = $3EF4)&lt;br /&gt;
%patch $3B2F $56 $57 $E8 $0442W  $59 $59 $E9 $0081W				#Goes to H Platform (Code at $3B2F + $442 + 5 = $3F76)&lt;br /&gt;
%patch $3B39 $56 $57 $E8 $0480W  $59 $59 $EB $78				#Goes to V Platform (Code at $3B39 + $480 + 5 = $3FBE)&lt;br /&gt;
%patch $3B42 $56 $57 $E8 $00D9W  $59 $59 $EB $6F				#Goes to Vorticon (Code at $3B42 + $D9 + 5 = $3C20)&lt;br /&gt;
%patch $3B4B $56 $57 $E8 $0516W  $59 $59 $EB $66				#Goes to Purple Spark (Code at $3B4B + $516 + 5 = $4066)&lt;br /&gt;
%patch $3B54 $56 $57 $E8 $054AW  $59 $59 $EB $5D				#Goes to Heart (Code at $3B54 + $54A + 5 = $40A3)&lt;br /&gt;
%patch $3B5D $56 $57 $E8 $049EW  $59 $59 $EB $54				#Goes to Gun across (Code at $3B5D + $49E + 5 = $4000)&lt;br /&gt;
%patch $3B66 $56 $57 $E8 $04C8W  $59 $59 $EB $4B				#Goes to Gun down (Code at $3B66 + $4C8 + 5 = $4033)&lt;br /&gt;
%patch $3B6F $56 $57 $E8 $056CW  $59 $59 $EB $42				#Goes to Hand (Code at $3B6F + $56C + 5 = $40E0)&lt;br /&gt;
%patch $3B78 $B8 $FFFFW  $50 $56 $57 $E8 $0597W  $83 $C4 $06 $EB $34		#Goes to Left foot (Code at $3B78 + $597 + 9 = $4118)&lt;br /&gt;
%patch $3B86 $B8 $0001W  $50 $56 $57 $E8 $0589W  $83 $C4 $06 $EB $26		#Goes to Right foot (Code at $3B86 + $589 + 9 = $4118)&lt;br /&gt;
%patch $3B94 $8B $C7 $99 $B1 $0C $E8 $25 $A3B0W  $0A $71 $89 $16 $0C $71 $8B	#Goes to Keen (Code at $3B94 + $B016 + 5 = $EBAA)&lt;br /&gt;
             $C6 $99 $B1 $0C $E8 $B016W  $05 $00 $08 $83 $D2 $00 $A3 $0E $71&lt;br /&gt;
             $89 $16 $10 $71 $EB $00&lt;br /&gt;
%patch $3BBA $47 $3B $3E $34 $6E $7D $03 $E9 $E6 $FE $46 $3B $36 $84 $6E $7D	#Finisher&lt;br /&gt;
             $03 $E9 $D7 $FE $5F $5E $8B $E5 $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The spawn codes for Keen 3 are quite complex as they set  most of the sprite&#039;s properties and behaviors, including strength, actions and death code. It is informative to browse [[Patch:Jump conditions]], [[Patch:Sprite collision]], [[Patch:Sprite behavior]], [[Patch:Sprite animations]] and [[Patch:Sprite type]]. All of these are set in the following codes. Notice that the left and right foot of the Mangling Machine use the same spawn code, and that both the MM hands and feet are [[Patch:Meta sprites|metasprites]] not sprites.&lt;br /&gt;
&lt;br /&gt;
A notable difference fro Keen 1 is that nearly all sprites are given a strength value, even if that value is just 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 3 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Vorticon&lt;br /&gt;
%patch $3C20 $55 $8B $EC $56 $E8 $2396W  $8B $F0 $C7 $04 [$0002W]  $8B $46 $04 #Sprite type = 2&lt;br /&gt;
             $99 $B1 $0C $E8 $AF8BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF7CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$414AW}  #Behavior = $414A&lt;br /&gt;
             $C7 $44 $34 {$42D0W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $42D0, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44 #Check for Keen&lt;br /&gt;
             $20 [$FFA6W]  $EB $05 $C7 $44 $20 [$005AW]  $C7 $44 $28 [$0047W]  $5E #Speed +-5A sprite = 47&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortikid&lt;br /&gt;
%patch $3C82 $55 $8B $EC $56 $E8 $2334W  $8B $F0 $C7 $04 [$0003W]  $8B $46 $04 #Sprite type = 3&lt;br /&gt;
             $99 $B1 $0C $E8 $AF29W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AF1AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4311W}  #Behavior = $4311&lt;br /&gt;
             $C7 $44 $34 {$43D9W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision = $43D9, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FF06W]  $EB $05 $C7 $44 $20 [$00FAW]  $C7 $44 $28 [$002FW]  $5E #Speed +-250, sprite = 2F&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortimom&lt;br /&gt;
%patch $3CE4 $55 $8B $EC $56 $E8 $22D2W  $8B $F0 $C7 $04 [$0004W]  $8B $46 $04 #Sprite type = 4&lt;br /&gt;
             $99 $B1 $0C $E8 $AEC7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AEB8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$440CW}  #Behavior = $440C&lt;br /&gt;
             $C7 $44 $34 {$470CW}  $C7 $44 $24 [$0005W]  $8B $44 $06 $8B $54 $04 #Collision = $470C, health = 5&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$0055W]  $5E #Speed +-50, sprite = 55&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Meep&lt;br /&gt;
%patch $3D46 $55 $8B $EC $56 $E8 $2270W  $8B $F0 $C7 $04 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AE65W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AE56W  $05 $00 $08 $83 $D2 $00 $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4746W}  $C7 $44 $34 {$4898W}  $C7 $44 $24 [$0001W]  #Behavior = $4746 Collision = $4898, health = 1&lt;br /&gt;
             $8B $44 $06 $8B $54 $04 $3B $06 $0C $71 $7C $0F $7F $06 $3B $16&lt;br /&gt;
             $0A $71 $76 $07 $C7 $44 $20 [$FFBFW]  $EB $05 $C7 $44 $20 [$0041W]  #Speed +-65, sprite = 78&lt;br /&gt;
             $C7 $44 $28 [$0078W]  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Vortininja&lt;br /&gt;
%patch $3DAE $55 $8B $EC $56 $E8 $2208W  $8B $F0 $C7 $04 [$0006W]  $8B $46 $04 #Sprite type = 6&lt;br /&gt;
             $99 $B1 $0C $E8 $ADFDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ADEEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32{ $48F7W}  #Behavior = $48F7&lt;br /&gt;
             $C7 $44 $34 {$49CDW}  $C7 $44 $24 [$0003W]  $8B $44 $06 $8B $54 $04 #Collision $49CD, health = 3&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFFFW]  $EB $05 $C7 $44 $20 [$0001W]  $C7 $44 $28 [$004DW]  $5E #Face Keen, sprite = 4D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Foob&lt;br /&gt;
%patch $3E10 $55 $8B $EC $56 $E8 $21A6W  $8B $F0 $C7 $04 [$0007W]  $8B $46 $04 #Sprite type = 7&lt;br /&gt;
             $99 $B1 $0C $E8 $AD9BW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD8CW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4A0CW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$4B7EW}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $4B 7E, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FFCEW]  $EB $05 $C7 $44 $20 [$0032W]  $C7 $44 $28 [$005DW]  $5E #Speed +-50, sprite = 5D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Ball&lt;br /&gt;
%patch $3E72 $55 $8B $EC $56 $E8 $2144W  $8B $F0 $C7 $04 [$0008W]  $8B $46 $04 #Sprite type = 8&lt;br /&gt;
             $99 $B1 $0C $E8 $AD39W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AD2AW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C0BW}  #Behavior = $4A0C&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006DW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#Jack&lt;br /&gt;
%patch $3EF4 $55 $8B $EC $56 $E8 $20C2W  $8B $F0 $C7 $04 [$0009W]  $8B $46 $04 #Sprite type = 9&lt;br /&gt;
             $99 $B1 $0C $E8 $ACB7W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ACA8W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4BBDW}  #Behavior = $4BBD&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $24 [$0001W]  $8B $44 $06 $8B $54 $04 #Collision $6A00, health = 1&lt;br /&gt;
             $3B $06 $0C $71 $7C $0F $7F $06 $3B $16 $0A $71 $76 $07 $C7 $44&lt;br /&gt;
             $20 [$FE70W]  $EB $05 $C7 $44 $20 [$0190W]  $8B $44 $0A $8B $54 $08 #H Speed +-400&lt;br /&gt;
             $3B $06 $10 $71 $7C $0F $7F $06 $3B $16 $0E $71 $76 $07 $C7 $44&lt;br /&gt;
             $22 [$FE70W]  $EB $05 $C7 $44 $22 [$0190W]  $C7 $44 $28 [$006EW]  $5E #V Speed +-400, sprite = 6D&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H Platform&lt;br /&gt;
%patch $3F76 $55 $8B $EC $56 $E8 $2040W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $AC35W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AC26W  $05 $00 $FC $83 $D2 $FF $89 $44 $08 $89 $54&lt;br /&gt;
             $0A $C7 $44 $32 {$4C47W}  $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]   #Behavior = $4C47, Collision $6A00 Sprite = 6B&lt;br /&gt;
             $C7 $44 $20 [$004BW]  $5E $5D $C3                                 #Speed = +76&lt;br /&gt;
&lt;br /&gt;
#V Platform&lt;br /&gt;
%patch $3FBE $55 $8B $EC $56 $E8 $1FF8W  $8B $F0 $C7 $04 [$000AW]  $8B $46 $04 #Sprite type = 10&lt;br /&gt;
             $99 $B1 $0C $E8 $ABEDW  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $ABDEW  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4C47W}  #Behavior = $4C47&lt;br /&gt;
             $C7 $44 $34 {$6A00W}  $C7 $44 $28 [$006BW]  $C7 $44 $22 [$004BW]  $5E   #Collision $6A00, Sprite = 6B, Speed = +76&lt;br /&gt;
             $5D $C3&lt;br /&gt;
&lt;br /&gt;
#H gun&lt;br /&gt;
%patch $4000 $55 $8B $EC $56 $E8 $2001W  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $ABAAW  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB9CW  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D34W}  $5E $5D $C3 #Behavior = $4D34&lt;br /&gt;
&lt;br /&gt;
#V gun&lt;br /&gt;
%patch $4033 $55 $8B $EC $56 $E8 $1FCEW  $8B $F0 $C7 $44 $08 [$0005W]  $8B $46 $04 #Sprite type = 5&lt;br /&gt;
             $99 $B1 $0C $E8 $AB77W  $89 $04 $89 $54 $02 $8B $46 $06 $99 $B1 $0C&lt;br /&gt;
             $E8 $AB69W  $89 $44 $04 $89 $54 $06 $C7 $44 $22 {$4D9BW}  $5E $5D $C3 #Behavior = $4D9B&lt;br /&gt;
&lt;br /&gt;
#Purple Spark&lt;br /&gt;
%patch $4066 $55 $8B $EC $56 $E8 $1F50W  $8B $F0 $C7 $04 [$000DW]  $8B $46 $04 #Sprite type = 13&lt;br /&gt;
             $99 $B1 $0C $E8 $AB45W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99&lt;br /&gt;
             $B1 $0C $E8 $AB36W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4E02W}  #Behavior = $4E02&lt;br /&gt;
             $C7 $44 $34 {$4E19W}  $C7 $44 $28 [$0072W]  $5E $5D $C3             #Collision $4E19, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#Heart&lt;br /&gt;
%patch $40A3 $55 $8B $EC $56 $E8 $1F13W  $8B $F0 $C7 $04 [$000CW]  $8B $46 $04 #Sprite type = 12&lt;br /&gt;
             $B1 $0C $E8 $AB08W  $89 $44 $04 $89 $54 $06 $8B $46 $06 $99 $B1&lt;br /&gt;
             $0C $E8 $AAF9W  $89 $44 $08 $89 $54 $0A $C7 $44 $32 {$4EA6W}  $C7 #Behavior = $4EA6&lt;br /&gt;
             $44 $34 {$4EBEW}  $C7 $44 $28 [$0072W]  $5E $5D $C3                 #Collision $4EBE, sprite = 72&lt;br /&gt;
&lt;br /&gt;
#MM Hand (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $40E0 $55 $8B $EC $56 $E8 $1F21W  $8B $F0 $C7 $44 $08 [$0006W]  $8B $46 #Sprite type = 6&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $C7 $44 $22 {$50F4W}  $C7 $44 $0C [$0000W]  $C7 $44 $0A [$0001W]  #Direction = right, up&lt;br /&gt;
             $C7 $44 $0E $000FW  $5E $5D $C3&lt;br /&gt;
&lt;br /&gt;
#MM Feet (Spawns metasprite, not sprite)&lt;br /&gt;
%patch $4118 $55 $8B $EC $56 $E8 $1EE9W  $8B $F0 $C7 $44 $08 [$0007W]  $8B $46 #Sprite type = 7&lt;br /&gt;
             $04 $99 $89 $04 $89 $54 $02 $8B $46 $06 $99 $89 $44 $04 $89 $54&lt;br /&gt;
             $06 $8B $46 $08 $89 $44 $0A $89 $44 $0E $C7 $44 $22 {$52F1W}  $5E #Behavior = $52F1&lt;br /&gt;
             $5D $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen Dreams =&lt;br /&gt;
&lt;br /&gt;
[[Keen Dreams]] is similar to Keen Galaxy in that there are two kinds of pointers, &#039;short&#039; (two-byte) pointers used in the pointer list and &#039;long&#039; (four byte) pointers. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
Pointers in Dreams are different from those in Vorticons in that they require a value to be added to them to get the actual location they refer to. In Dreams this is $44D0. So a pointer with the value $04FCW actually refers to code at $04FC + $44D0 = $49CC. Interestingly infoplane values are used for both sprites and level entrances on the map. This means that if extra levels are desired some sprites will have to be overwritten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($44D0 + $050DW = $49DD)&lt;br /&gt;
%patch $4774 [$050DW]&lt;br /&gt;
&lt;br /&gt;
#Length of list (60 items)&lt;br /&gt;
%patch $4769 [$3C]&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is 44D0)&lt;br /&gt;
%patch $49DD [$02A6W] #Keen right (At $4776)&lt;br /&gt;
%patch $49DF [$02BDW] #Keen left (At $478D)&lt;br /&gt;
%patch $49E1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49E9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49ED [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49EF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F1 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F3 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F5 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F7 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49F9 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FB [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FD [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $49FF [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A01 [$02D4W] #Map Keen (At $47A4)&lt;br /&gt;
%patch $4A03 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A05 [$02F3W] #100 Pts (At $47C3)&lt;br /&gt;
%patch $4A07 [$02F3W] #200 Pts (At $47C3)&lt;br /&gt;
%patch $4A09 [$02F3W] #500 Pts (At $47C3)&lt;br /&gt;
%patch $4A0B [$02F3W] #1000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0D [$02F3W] #2000 Pts (At $47C3)&lt;br /&gt;
%patch $4A0F [$02F3W] #5000 Pts (At $47C3)&lt;br /&gt;
%patch $4A11 [$02F3W] #1UP (At $47C3)&lt;br /&gt;
%patch $4A13 [$02F3W] #Eye (At $47C3)&lt;br /&gt;
%patch $4A15 [$02F3W] #Flower Power (At $47C3)&lt;br /&gt;
%patch $4A17 [$02F3W] #Flower Pot (At $47C3)&lt;br /&gt;
%patch $4A19 [$02EDW] #Boobus Bomb (At $47BD)&lt;br /&gt;
%patch $4A1B [$02F3W] #Key (At $47C3)&lt;br /&gt;
%patch $4A1D [$0316W] #Door (At $47E6)&lt;br /&gt;
%patch $4A1F [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A21 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A23 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A25 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A27 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A29 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A2D [$0332W] #Broccolash (At $4802)&lt;br /&gt;
%patch $4A2F [$0354W] #Tomatooth (At $4824)&lt;br /&gt;
%patch $4A31 [$0376W] #Carrot Courier (At $4846)&lt;br /&gt;
%patch $4A33 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A35 [$0398W] #Asparagusto (At $4868)&lt;br /&gt;
%patch $4A37 [$03BAW] #Sour Grape (At $488A)&lt;br /&gt;
%patch $4A39 [$03DCW] #Tater Trooper (At $48AC)&lt;br /&gt;
%patch $4A3B [$03FEW] #Minecart (At $48CE)&lt;br /&gt;
%patch $4A3D [$0417W] #Frenchy (At $48E7)&lt;br /&gt;
%patch $4A3F [$0439W] #Melon Lips left (At $4909)&lt;br /&gt;
%patch $4A41 [$0439W] #Melon Lips right (At $4909)&lt;br /&gt;
%patch $4A43 [$0439W] #Melon Lips down (At $4909)&lt;br /&gt;
%patch $4A45 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A47 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A49 [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4B [$04FCW] #BLANK (At $49CC)&lt;br /&gt;
%patch $4A4D [$0462W] #Squasher (At $4932)&lt;br /&gt;
%patch $4A4F [$0483W] #Apel (At $4953)&lt;br /&gt;
%patch $4A51 [$04A4W] #Pea Pod (At $4974)&lt;br /&gt;
%patch $4A53 [$04C5W] #Pea Brain (At $4995)&lt;br /&gt;
%patch $4A55 [$04E6W] #Boobus Tuber (At $49B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to those in Keen Vorticons.&lt;br /&gt;
&lt;br /&gt;
The first and most important thing is sprite cache. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $70xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Brocolash&#039;s cache is $BC, the Tomatooth&#039;s is $BE (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the [[Patch:Pea Brain|Pea Brain]] uses the same cache as the [[Patch:Pea Pod|Pea Pod]]; this may be because the Pea Brain is never used in Keen Dreams by default and so is &#039;slaved&#039; to the Pea Pod.&lt;br /&gt;
&lt;br /&gt;
The call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $05E80CFFRL. All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;Blank&#039; code. These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right Keen initiation code&lt;br /&gt;
%patch $4776 $B8 $0001W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $023FW&lt;br /&gt;
&lt;br /&gt;
#Left Keen initiation code&lt;br /&gt;
%patch $478D $B8 $FFFFW  $50 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80CFFRL&lt;br /&gt;
                 $83 $C4 $06 $E9 $0228W&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $47A4 $FF $36 $7052W  $FF $36 $7050W  $9A $05E80B20RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70BAW  $0001W  $E9 $020FW&lt;br /&gt;
&lt;br /&gt;
#Boobus Bomb (Uses following item initiation code)&lt;br /&gt;
%patch $47BD $C7 $06 $704CW  $0001W &lt;br /&gt;
&lt;br /&gt;
#Items initiation code&lt;br /&gt;
%patch $47C3 $A1 $70ACW  $2D [$0015W]  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $07C504A3RL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W &lt;br /&gt;
             $E9 $01E6W&lt;br /&gt;
&lt;br /&gt;
#Door initiation code&lt;br /&gt;
%patch $47E6 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50323RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $E9 $01CAW&lt;br /&gt;
&lt;br /&gt;
#Broccolash initiation code&lt;br /&gt;
%patch $4802 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50546RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BCW  $0001W  $E9&lt;br /&gt;
             $01A8W&lt;br /&gt;
&lt;br /&gt;
#Tomatooth initiation code&lt;br /&gt;
%patch $4824 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5060ARL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70BEW  $0001W  $E9&lt;br /&gt;
             $0186W&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier initiation code&lt;br /&gt;
%patch $4846 $FF $36 $7052W  $FF $36 $7050W  $9A $07C5078DRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C0W  $0001W  $E9&lt;br /&gt;
             $0164W&lt;br /&gt;
&lt;br /&gt;
#Asparagusto initiation code&lt;br /&gt;
%patch $4868 $FF $36 $7052W  $FF $36 $7050W  $9A $07C50896RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C2W  $0001W  $E9&lt;br /&gt;
             $0142W&lt;br /&gt;
&lt;br /&gt;
#Sour Grape initiation code&lt;br /&gt;
%patch $488A $FF $36 $7052W  $FF $36 $7050W  $9A $07C508D4RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C4W  $0001W  $E9&lt;br /&gt;
             $0120W&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper initiation code&lt;br /&gt;
%patch $48AC $FF $36 $7052W  $FF $36 $7050W  $9A $08680006RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C6W  $0001W  $E9&lt;br /&gt;
             $00FEW&lt;br /&gt;
&lt;br /&gt;
#Minecart initiation code&lt;br /&gt;
%patch $48CE $FF $36 $7052W  $FF $36 $7050W  $9A $08680100RL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70C8W  $0001W  $E9 $00E5W&lt;br /&gt;
&lt;br /&gt;
#Frenchy initiation code&lt;br /&gt;
%patch $48E7 $FF $36 $7052W  $FF $36 $7050W  $9A $086801E1RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CAW  $0001W  $E9&lt;br /&gt;
             $00C3W&lt;br /&gt;
&lt;br /&gt;
#Melon initiation code&lt;br /&gt;
%patch $4909 $A1 $70ACW  $2D $0032W  $50 $FF $36 $7052W  $FF $36 $7050W  $9A&lt;br /&gt;
             $0868035ERL     $83 $C4 $06 $8B $1E $3E $70 $C7 $47 $02 $0000W&lt;br /&gt;
             $C7 $06 $70CCW  $0001W  $E9 $009AW&lt;br /&gt;
&lt;br /&gt;
#Squasher initiation code&lt;br /&gt;
%patch $4932 $FF $36 $7052W  $FF $36 $7050W  $9A $086807BFRL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70CEW  $0001W  $EB&lt;br /&gt;
             $79&lt;br /&gt;
&lt;br /&gt;
#Apel initiation code&lt;br /&gt;
%patch $4953 $FF $36 $7052W  $FF $36 $7050W  $9A $086808C8RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D0W  $0001W  $EB&lt;br /&gt;
             $58&lt;br /&gt;
&lt;br /&gt;
#Pea Pod initiation code&lt;br /&gt;
%patch $4974 $FF $36 $7052W  $FF $36 $7050W  $9A $08680B67RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $37&lt;br /&gt;
&lt;br /&gt;
#Pea Brain initiation code&lt;br /&gt;
%patch $4995 $FF $36 $7052W  $FF $36 $7050W  $9A $08680AE9RL     $83 $C4 $04&lt;br /&gt;
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70D2W  $0001W  $EB&lt;br /&gt;
             $16&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber initiation code&lt;br /&gt;
%patch $49B6 $FF $36 $7052W  $FF $36 $7050W  $9A $08680C8ARL     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $70D4W  $0001W&lt;br /&gt;
&lt;br /&gt;
#BLANK (All initiation codes jump to this)&lt;br /&gt;
%patch $49CC $8B $1E $3E $70 $83 $7F $02 $02 $74 $05 $C7 $47 $02 $0000W  $C3&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type]] and &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly.&lt;br /&gt;
&lt;br /&gt;
Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything. However it is often used even when this is not the case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Map Keen spawn code&lt;br /&gt;
%patch $69A0 $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $83 $3E {$70EEW}  [$00]&lt;br /&gt;
             {$75} $11 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3&lt;br /&gt;
             $E0 $EB $0D $8B $1E $34 $70 $A1 $70EEW  $89 $47 $0A $A1 $70F0W &lt;br /&gt;
             $89 $47 $0C $8B $1E $34 $70 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0001W]&lt;br /&gt;
                 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $C7 $47 $3E [$0006W]&lt;br /&gt;
             $C7 $47 $40 [$0003W]  $C7 $47 $20 [$00D7W]  $B8 [$0D3AW]  $50 $FF $36&lt;br /&gt;
             $34 $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen spawn code&lt;br /&gt;
%patch $6B7F $55 $8B $EC $8B $1E $34 $70 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]&lt;br /&gt;
             $C7 $47 $06 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0ED8W]  $50 $FF $36 $34 $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Door spawn code&lt;br /&gt;
%patch $7F73 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0003W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$FFFFW]  $C7 $47 $06 [$0000W]  $B8 [$1732W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $80F3 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $47 $06 [$0000W]  $C7 $07 [$0004W]  $8B $46&lt;br /&gt;
             $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $83 $FE [$09] {$75} $05 $81 {$0C6FW}  [$0080W]  $8B $1E $3E $70 $C7 $47&lt;br /&gt;
             $10 [$FFFFW]  $89 $77 $3E $8B $DE $D1 $E3 $8B $87 [$19A8W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $20 $89 $47 $40 $83 $FE [$07] {$74} $07 $8B $47 $40&lt;br /&gt;
             $40 $40 $EB $0A $8B $1E $3E $70 $8B $47 $40 $05 [$0004W]  $8B $1E&lt;br /&gt;
             $3E $70 $89 $47 $42 $B8 [$196CW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Broccolash spawn code&lt;br /&gt;
%patch $8196 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$19C0W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Tomatooth spawn code&lt;br /&gt;
%patch $825A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0006W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $B8&lt;br /&gt;
             [$1B46W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Carrot Courier spawn code&lt;br /&gt;
%patch $83DD $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0007W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1B82W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Asparagusto spawn code&lt;br /&gt;
%patch $84E6 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0009W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $B8 [$1C18W]  $50&lt;br /&gt;
             $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sour Grape spawn code&lt;br /&gt;
%patch $8524 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000AW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $B8 [$1C90W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4&lt;br /&gt;
             $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Tater Trooper spawn code&lt;br /&gt;
%patch $8686 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000BW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1D08W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $8B $1E $3E $70 $C7 $47 $36 [$0001W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Minecart spawn code&lt;br /&gt;
%patch $8780 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000CW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FFD0W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $C7 $47 $02 [$0002W]  $B8 [$1DDAW]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Frenchy spawn code&lt;br /&gt;
%patch $8861 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$000DW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$1E16W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Melon spawn code&lt;br /&gt;
%patch $89DE $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $044D01C9RL     $44&lt;br /&gt;
             $44 $8B $1E $3E $70 $C7 $07 [$000EW] $8B $46 $06 $B1 $08 $D3 $E0&lt;br /&gt;
             $89 $47 $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $0B $F6 $74 $07 $C7&lt;br /&gt;
             $47 $0E [$0001W]  $EB $09 $8B $1E $3E $70 $C7 $47 $0E [$FFFFW]  $83&lt;br /&gt;
             $FE [$02] {$7D} $05 $B8 [$1F9CW]  $EB $03 $B8 [$1FF6W]  $50 $FF $36 $3E&lt;br /&gt;
             $70 $9A $044D1212RL     $83 $C4 $04 $9A $16C40026RL     $D1 $F8&lt;br /&gt;
             $8B $1E $3E $70 $89 $47 $1A $89 $77 $3E $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Squasher spawn code&lt;br /&gt;
%patch $8E3F $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0013W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$20C8W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Apel spawning code&lt;br /&gt;
%patch $8F48 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0014W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$215EW]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Brain spawn code&lt;br /&gt;
%patch $9169 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0016W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $B8 [$22A8W]  $50 $FF $36 $3E $70 $9A&lt;br /&gt;
             $044D1212RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Pea Pod spawn code&lt;br /&gt;
%patch $91E7 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0015W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
             $47 $10 [$0001W]  $B8 [$2320W]  $50 $FF $36 $3E $70 $9A $044D1212RL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boobus Tuber spawn code&lt;br /&gt;
%patch $930A $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E&lt;br /&gt;
             $70 $C7 $07 [$0017W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FA80W]  $89 $47 $0C $C7 $47 $0E [$FFFFW] $B8&lt;br /&gt;
             [$23D4W]  $50 $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $8B&lt;br /&gt;
             $1E $3E $70 $C7 $47 $44 [$000CW]  $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 4 =&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
The initiation pointer list pointers are short and require another value to be added to them to give the location to which they refer. (Thus in Keen 4 a value of $0064 actually points to code at $E8F0 + $0064 = $E954.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E8F0 + $0595 = $EE85)&lt;br /&gt;
%patch $E952 $0595W&lt;br /&gt;
&lt;br /&gt;
#Length of list (88 items)&lt;br /&gt;
%patch $E947 $57&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is E8F0)&lt;br /&gt;
%patch $EE85 [$0064W] #Right Facing Keen (At $E954)&lt;br /&gt;
%patch $EE87 [$0090W] #Left Facing Keen (At $E980)&lt;br /&gt;
%patch $EE89 [$00BCW] #Map Keen (At $E9AC)&lt;br /&gt;
%patch $EE8B [$00E4W] #Council Member (At $E9D4)&lt;br /&gt;
%patch $EE8D [$010DW] #Easy Berkeloid (At $E9FD)&lt;br /&gt;
%patch $EE8F [$0122W] #Lindsey (At $EA12)&lt;br /&gt;
%patch $EE91 [$014BW] #Easy Wormouth (At $EA3B)&lt;br /&gt;
%patch $EE93 [$0174W] #Easy Skypest (At $EA64)&lt;br /&gt;
%patch $EE95 [$0189W] #Cloud (At $EA79)&lt;br /&gt;
%patch $EE97 [$019EW] #Foot (At $EA8E)&lt;br /&gt;
%patch $EE99 [$01CDW] #Inchworm (At $EABD)&lt;br /&gt;
%patch $EE9B [$01FCW] #Bounder (At $EAEC)&lt;br /&gt;
%patch $EE9D [$0211W] #Egg (At $EB01)&lt;br /&gt;
%patch $EE9F [$0240W] #Easy Lick (At $EB30)&lt;br /&gt;
%patch $EEA1 [$0269W] #Easy Dopefish (At $EB59)&lt;br /&gt;
%patch $EEA3 [$027EW] #Schoolfish (At $EB6E)&lt;br /&gt;
%patch $EEA5 [$02A7W] #Easy Sprite (At $EB97)&lt;br /&gt;
%patch $EEA7 [$02BCW] #Smirky (At $EBAC)&lt;br /&gt;
%patch $EEA9 [$02D1W] #Mimrock (At $EBC1)&lt;br /&gt;
%patch $EEAB [$02FAW] #Easy Arachnut (At $EBEA)&lt;br /&gt;
%patch $EEAD [$030FW] #Mushroom (At $EBFF)&lt;br /&gt;
%patch $EEAF [$0338W] #Easy Slug (At $EC28)&lt;br /&gt;
%patch $EEB1 [$029DW] #Medium Sprite (At $EB8D)&lt;br /&gt;
%patch $EEB3 [$0293W] #Hard Sprite (At $EB83)&lt;br /&gt;
%patch $EEB5 [$034DW] #Horizontal Scrollbar (At $EC3D)&lt;br /&gt;
%patch $EEB7 [$0360W] #Vertical Scrollbar (At $EC50)&lt;br /&gt;
%patch $EEB9 [$0372W] #Up Platform (At $EC62)&lt;br /&gt;
%patch $EEBB [$0372W] #Right Platform (At $EC62)&lt;br /&gt;
%patch $EEBD [$0372W] #Down Platform (At $EC62)&lt;br /&gt;
%patch $EEBF [$0372W] #Left Platform (At $EC62)&lt;br /&gt;
%patch $EEC1 [$050DW] #B Block (At $EDFD)&lt;br /&gt;
%patch $EEC3 [$038EW] #Dropping Platform (At $EC7E)&lt;br /&gt;
%patch $EEC5 [$03A3W] #Miragia (At $EC93)&lt;br /&gt;
%patch $EEC7 [$03B2W] #IF Ammo (At $ECA2)&lt;br /&gt;
%patch $EEC9 [$03DEW] #Wetsuit (At $ECCE)&lt;br /&gt;
%patch $EECB [$050DW] #&#039;I Keen&#039; (At $EDFD)&lt;br /&gt;
%patch $EECD [$050DW] #&#039;Mom&#039; (At $EDFD)&lt;br /&gt;
%patch $EECF [$050DW] #&#039;Dad&#039; (At $EDFD)&lt;br /&gt;
%patch $EED1 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED3 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED5 [$050DW] #BLANK (At $EDFD)&lt;br /&gt;
%patch $EED7 [$03FBW] #Swimming Keen (At $ECEB)&lt;br /&gt;
%patch $EED9 [$032EW] #Medium Slug (At $EC1E)&lt;br /&gt;
%patch $EEDB [$0324W] #Hard Slug (At $EC14)&lt;br /&gt;
%patch $EEDD [$016AW] #Medium Skypest (At $EA5A)&lt;br /&gt;
%patch $EEDF [$0160W] #Hard Skypest (At $EA50)&lt;br /&gt;
%patch $EEE1 [$0236W] #Medium Lick (At $EB26)&lt;br /&gt;
%patch $EEE3 [$022CW] #Hard Lick (At $EB1C)&lt;br /&gt;
%patch $EEE5 [$0103W] #Medium Berkeloid (At $E9F3)&lt;br /&gt;
%patch $EEE7 [$00F9W] #Hard Berkeloid (At $E9E9)&lt;br /&gt;
%patch $EEE9 [$0141W] #Medium Wormouth (At $EA31)&lt;br /&gt;
%patch $EEEB [$0137W] #Hard Wormouth (At $EA27)&lt;br /&gt;
%patch $EEED [$0489W] #Easy Up Dart (At $ED79)&lt;br /&gt;
%patch $EEEF [$0489W] #Easy Right Dart (At $ED79)&lt;br /&gt;
%patch $EEF1 [$0489W] #Easy Down Dart (At $ED79)&lt;br /&gt;
%patch $EEF3 [$0489W] #Easy Left Dart (At $ED79)&lt;br /&gt;
%patch $EEF5 [$04A4W] #Red Gem (At $ED94)&lt;br /&gt;
%patch $EEF7 [$04A4W] #Yellow Gem (At $ED94)&lt;br /&gt;
%patch $EEF9 [$04A4W] #Blue Gem (At $ED94)&lt;br /&gt;
%patch $EEFB [$04A4W] #Green Gem (At $ED94)&lt;br /&gt;
%patch $EEFD [$04A4W] #100 Pts (At $ED94)&lt;br /&gt;
%patch $EEFF [$04A4W] #200 pts (At $ED94)&lt;br /&gt;
%patch $EF01 [$04A4W] #500 Pts (At $ED94)&lt;br /&gt;
%patch $EF03 [$04A4W] #1000 Pts (At $ED94)&lt;br /&gt;
%patch $EF05 [$04A4W] #2000 Pts (At $ED94)&lt;br /&gt;
%patch $EF07 [$04A4W] #5000 Pts (At $ED94)&lt;br /&gt;
%patch $EF09 [$04A4W] #1UP (At $ED94)&lt;br /&gt;
%patch $EF0B [$04A4W] #Raygun (At $ED94)&lt;br /&gt;
%patch $EF0D [$04CAW] #Up Mine (At $EDBA)&lt;br /&gt;
%patch $EF0F [$04CAW] #Right Mine (At $EDBA)&lt;br /&gt;
%patch $EF11 [$04CAW] #Down Mine (At $EDBA)&lt;br /&gt;
%patch $EF13 [$04CAW] #Left Mine (At $EDBA)&lt;br /&gt;
%patch $EF15 [$02F0W] #Medium Arachnut (At $EBE0)&lt;br /&gt;
%patch $EF17 [$02E6W] #Hard Arachnut (At $EBD6)&lt;br /&gt;
%patch $EF19 [$04E5W] #Mooning Keen (At $EDD5)&lt;br /&gt;
%patch $EF1B [$04FBW] #Easy Bird(At $EDEB)&lt;br /&gt;
%patch $EF1D [$04F4W] #Medium Bird (At $EDE4)&lt;br /&gt;
%patch $EF1F [$04EDW] #Hard Bird (At $EDDD)&lt;br /&gt;
%patch $EF21 [$0463W] #Medium Up Dart (At $ED53)&lt;br /&gt;
%patch $EF23 [$0463W] #Medium Right Dart (At $ED53)&lt;br /&gt;
%patch $EF25 [$0463W] #Medium Down Dart (At $ED53)&lt;br /&gt;
%patch $EF27 [$0463W] #Medium Left Dart (At $ED53)&lt;br /&gt;
%patch $EF29 [$043DW] #Hard Up Dart (At $ED2D)&lt;br /&gt;
%patch $EF2B [$043DW] #Hard Right Dart (At $ED2D)&lt;br /&gt;
%patch $EF2D [$043DW] #Hard Down Dart (At $ED2D)&lt;br /&gt;
%patch $EF2F [$043DW] #Hard Left dart (At $ED2D)&lt;br /&gt;
%patch $EF31 [$025FW] #Medium Dopefish (At $EB4F)&lt;br /&gt;
%patch $EF33 [$0255W] #Hard Dopefish (At $EB45)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $7A6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CBxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Council Member&#039;s cache is $5D, the Bird&#039;s is $5F (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
Notice the Egg sets two cache values, one for itself and one for the Bird. Several sprites set no cache, including the Wetsuit, which uses a hardcoded value for the (Single frame) it caches. Other sprites cache individual animations as well as their cache, or even several animations in addition to their cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0B80000ERL and $0D8F0003RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Right facing Keen&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is +1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $047DW		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Left facing Keen&lt;br /&gt;
%patch $E980 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}			#Keen&#039;s direction is -1&lt;br /&gt;
             $83 $C4 $06 $9A {$0D8F0003RL}     $C7 $06 $CB3DW  $0001W  $B8 $2A3ARW&lt;br /&gt;
                 $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 $0451W		#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $E9AC $FF $76 $FC $57 $9A {$0D8F050ARL}      $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB4FW  $0001W  $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
              $26 $08 $16 [$00FDW]  $E9 $0429W					#Cache scoreboard too&lt;br /&gt;
&lt;br /&gt;
#Council Member&lt;br /&gt;
%patch $E9D4 $FF $76 $FC $57 $9A {$0FA80269RL}     $83 $C4 $04 $C7 $06 $CB5DW&lt;br /&gt;
             $0001W  $E9 $0414W&lt;br /&gt;
&lt;br /&gt;
#Berkeloid&lt;br /&gt;
%patch $E9E9 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $040AW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0400W  $FF $76 $FC $57 $9A {$1080039BRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB75W  $0001W  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Lindsey&lt;br /&gt;
%patch $EA12 $FF $76 $FC $57 $9A {$11A20DB5RL}     $83 $C4 $04 $C7 $06 $CB57W&lt;br /&gt;
             $0001W  $E9 $03D6W&lt;br /&gt;
&lt;br /&gt;
#Wormouth&lt;br /&gt;
%patch $EA27 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03CCW  $83 $3E [$7A6CW]  {$02}&lt;br /&gt;
             {$7D} $03 $E9 $03C2W  $FF $76 $FC $57 $9A {$10800006RL}     $83 $C4&lt;br /&gt;
             $04 $C7 $06 $CB6BW  $0001W  $E9 $03ADW&lt;br /&gt;
&lt;br /&gt;
#Skypest&lt;br /&gt;
%patch $EA50 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $03A3W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0399W  $FF $76 $FC $57 $9A {$0FA80B67RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB69W  $0001W  $E9 $0384W&lt;br /&gt;
#Cloud&lt;br /&gt;
%patch $EA79 $FF $76 $FC $57 $9A {$108001C2RL}     $83 $C4 $04 $C7 $06 $CB73W&lt;br /&gt;
             $0001W  $E9 $036FW&lt;br /&gt;
&lt;br /&gt;
#Foot&lt;br /&gt;
%patch $EA8E $FF $76 $FC $57 $9A {$1080072CRL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0340W      #End&lt;br /&gt;
&lt;br /&gt;
#Inchworm&lt;br /&gt;
%patch $EABD $FF $76 $FC $57 $9A {$108006B2RL}     $83 $C4 $04 $C7 $06 $CB59W&lt;br /&gt;
             $0001W  $BE [$015EW]  $EB $0F $B8 $3A $2A $8A $16 $EC $7A $8E $C0 #Also cache Smirky clouds, start&lt;br /&gt;
             $26 $08 $94 $00 $00 $46 $81 $FE [$0161W]  $76 $EB $E9 $0311W      #End&lt;br /&gt;
&lt;br /&gt;
#Bounder&lt;br /&gt;
%patch $EAEC $FF $76 $FC $57 $9A {$108008EARL}     $83 $C4 $04 $C7 $06 $CB71W&lt;br /&gt;
             $0001W  $E9 $02FCW&lt;br /&gt;
&lt;br /&gt;
#Egg&lt;br /&gt;
%patch $EB01 $FF $76 $FC $57 $9A {$0FA8055DRL}     $83 $C4 $04 $C7 $06 $CB5FW&lt;br /&gt;
             $0001W  $C7 $06 $CB83W  $0001W  $E9 $02E1W&lt;br /&gt;
&lt;br /&gt;
#Lick&lt;br /&gt;
%patch $EB1C $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02D7W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $02CDW  $FF $76 $FC $57 $9A {$10800AC8RL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB6DW  $0001W  $E9 $02B8W&lt;br /&gt;
&lt;br /&gt;
#Dopefish&lt;br /&gt;
%patch $EB45 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $02AEW  $83&lt;br /&gt;
             $3E [$7A6CW]  {$02 $7D} $03 $E9 $02A4W  $FF $76 $FC $57 $9A {$11A20690RL}&lt;br /&gt;
                     $83 $C4 $04 $C7 $06 $CB63W  $0001W  $E9 $028FW&lt;br /&gt;
&lt;br /&gt;
#Schoolfish&lt;br /&gt;
%patch $EB6E $FF $76 $FC $57 $9A {$11A20AA7RL}     $83 $C4 $04 $C7 $06 $CB65W&lt;br /&gt;
             $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Sprite&lt;br /&gt;
%patch $EB83 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $FF $76 $FC $57 $9A {$11A20B5FRL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB7DW  $0001W  $E9 $0251W&lt;br /&gt;
&lt;br /&gt;
#Smirky&lt;br /&gt;
%patch $EBAC $FF $76 $FC $57 $9A {$11A2000ERL}     $83 $C4 $04 $C7 $06 $CB5BW &lt;br /&gt;
             $0001W  $E9 $023CW&lt;br /&gt;
&lt;br /&gt;
#Mimrock&lt;br /&gt;
%patch $EBC1 $FF $76 $FC $57 $9A {$11A20447RL}     $83 $C4 $04 $C7 $06 $CB61W&lt;br /&gt;
             $0001W  $E9 $0227W&lt;br /&gt;
&lt;br /&gt;
#Arachnut&lt;br /&gt;
%patch $EBD6 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $021DW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0213W  $FF $76 $FC $57 $9A {$0FA80A8ERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB67W  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom&lt;br /&gt;
%patch $EBFF $FF $76 $FC $57 $9A {$0FA80445RL}     $83 $C4 $04 $C7 $06 $CB53W&lt;br /&gt;
             $0001W  $E9 $01E9W&lt;br /&gt;
&lt;br /&gt;
#Poison Slugs&lt;br /&gt;
%patch $EC14 $83 $3E [$7A6CW]  {$03 $7D} $03 $E9 $01DFW  $83 $3E [$7A6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01D5W  $FF $76 $FC $57 $9A {$0FA802FERL}     $83 $C4 $04&lt;br /&gt;
             $C7 $06 $CB51W  $0001W  $E9 $01C0W&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical scroll bars&lt;br /&gt;
%patch $EC3D $B8 $0001W  $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 $C4 $06 #Horizontal bars = 1&lt;br /&gt;
             $E9 $01ADW  $33 $C0 $50 $FF $76 $FC $57 $9A {$16540B08RL}     $83 #Vertical bars = 0&lt;br /&gt;
             $C4 $06 $E9 $019BW&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms&lt;br /&gt;
%patch $EC62 $8B $46 $F8 $05 $FFE5W  $50 $FF $76 $FC $57 $9A {$10800CABRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB6FW  $0001W  $E9 $017FW&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $EC7E $FF $76 $FC $57 $9A {$108010FCRL}     $83 $C4 $04 $C7 $06 $CB6FW&lt;br /&gt;
             $0001W  $E9 $016AW&lt;br /&gt;
&lt;br /&gt;
#Miragia&lt;br /&gt;
%patch $EC93 $FF $76 $FC $57 $9A {$0FA80000RL}     $83 $C4 $04 $E9 $015BW&lt;br /&gt;
&lt;br /&gt;
#IF Ammo&lt;br /&gt;
%patch $ECA2 $83 $3E [$7A58W]  [$05] {$7C} $03 $E9 $0151W  $B8 [$000BW]  $50 $FF $76 #Here check Keen&#039;s ammo &amp;lt; 5, ammo is 12th item kind&lt;br /&gt;
             $FC $57 $9A {$0FA801A3RL}     $83 $C4 $06 $8B $1E [$19D2W]  $D1 $E3&lt;br /&gt;
             $C7 $87 $CB3BW  $0001W  $E9 $0132W  $E9 $012FW&lt;br /&gt;
&lt;br /&gt;
#Wetsuit - Note single frame is cached&lt;br /&gt;
%patch $ECCE $FF $76 $FC $57 $9A {$11A20FD1RL}     $83 $C4 $04 $B8 $2A3ARW $8A&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $16 [$01AEW]  $E9 $0112W&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen&lt;br /&gt;
%patch $ECEB $FF $76 $FC $57 $9A $0E8F0CFERL     $83 $C4 $04 $9A {$0D8F0003RL}&lt;br /&gt;
                 $C7 $06 $CB7BW  $0001W  $BE [$00DBW]  $EB $0F $B8 $2A3ARW $8A #Cache items got - start&lt;br /&gt;
             $16 $EC $7A $8E $C0 $26 $08 $94 $00 $00 $46 $81 $FE [$00E2W]  $76 #Cache items got - end&lt;br /&gt;
             $EB $B8 $2A3ARW $8A $16 $EC $7A $8E $C0 $26 $08 $16 [$00FDW]  $E9 #Cache scoreboard&lt;br /&gt;
             $00D0W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - hard&lt;br /&gt;
%patch $ED2D $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00C6W  $8B $46 $F8 $05 $FFADW&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7&lt;br /&gt;
             $06 $CB79W  $0001W  $E9 $00AAW&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - medium&lt;br /&gt;
%patch $ED53 $83 $3E [$7A6CW]  {$02 $7D} $03 $E9 $00A0W  $8B $46 $F8 $05 $FFB1W&lt;br /&gt;
             $50 $FF $76 $FC $57 $9A {$11A20E3BRL}     $83 $C4 $06 $C7 $06 $CB79W&lt;br /&gt;
                 $0001W  $E9 $0084W&lt;br /&gt;
&lt;br /&gt;
#Dart shooter - easy&lt;br /&gt;
%patch $ED79 $8B $46 $F8 $05 $FFCBW  $50 $FF $76 $FC $57 $9A {$11A20E3BRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB79W  $0001W  $EB $69&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $ED94 $8B $46 $F8 $05 [$FFC7W]  $50 $FF $76 $FC $57 $9A {$0FA801A3RL}&lt;br /&gt;
             $83 $C4 $06 $8B $5E $F8 $D1 $E3 $8B $9F [$194AW]  $D1 $E3 $C7 $87&lt;br /&gt;
             $CB3BW  $0001W  $EB $43&lt;br /&gt;
&lt;br /&gt;
#Mine&lt;br /&gt;
%patch $EDBA $8B $46 $F8 $05 [$FFBBW]  $50 $FF $76 $FC $57 $9A {$11A20CECRL}&lt;br /&gt;
             $83 $C4 $06 $C7 $06 $CB7FW  $0001W  $EB $28&lt;br /&gt;
&lt;br /&gt;
#Mooning Keen&lt;br /&gt;
%patch $EDD5 $C7 $06 $CB81W  $0001W  $EB $20&lt;br /&gt;
&lt;br /&gt;
#Blue bird&lt;br /&gt;
%patch $EDDD $83 $3E [$7A6CW]  {$03 $7C} $19 $83 $3E [$7A6CW]  {$02 $7C} $12 $FF $76&lt;br /&gt;
             $FC $57 $9A {$0FA805B9RL}     $83 $C4 $04 $C7 $06 $CB5FW  $0001W&lt;br /&gt;
&lt;br /&gt;
#B Block-type sprites&lt;br /&gt;
%patch $EDFD $47 $3B $3E $E4 $A7 $73 $03 $E9 $FB24W  $FF $46 $FC $8B $46 $FC&lt;br /&gt;
             $3B $06 $E2 $A7 $73 $03 $E9 $FB10W  $A1 $D6 $A7 $89 $46 $FE $EB&lt;br /&gt;
             $17&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. [[Patch:Miragia|Miragia&#039;s]] spawn code is the shortest, but will not allow a sprite to do anything except replace tiles as Miragia does. There are a number of values set.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]],  Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $B80E $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$098CW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Map Keen spawning code&lt;br /&gt;
%patch $DDFA $55 $8B $EC $83 $3E {$7A70W}  [$07] {$74} $03 $E9 $00A9W  $8B $1E $D6&lt;br /&gt;
             $A7 $C7 $47 $06 [$0000W]  $C7 $07 [$0002W]  $A1 {$7A1AW}  $89 $47 {$0A}&lt;br /&gt;
             $A1 {$7A1CW}  $89 $47 {$0C} $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]  $81 $3E {$7A1AW}  [$1400W]&lt;br /&gt;
             {$73} $31 $C7 $47 $3E [$0118W]  $B8 [$1E00W]  $2B $47 $0A $BB [$0118W]&lt;br /&gt;
             $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47 $16 $B8 [$3700W]  $2B&lt;br /&gt;
             $47 $0C $BB [$0118W]  $33 $D2 $F7 $F3 $40 $8B $1E $A7D6W  $89 $47&lt;br /&gt;
             $18 $EB $31 $8B $1E $A7D6W  $C7 $47 $3E [$008CW]  $B8 [$1000W]  $2B&lt;br /&gt;
             $47 $0A $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $A7D6W  $89 $47 $16&lt;br /&gt;
             $B8 [$2F00W]  $2B $47 $0C $BB [$008CW]  $99 $F7 $FB $40 $8B $1E $D6&lt;br /&gt;
             $A7 $89 $47 $18 $B8 [$1492W]  $50 $FF $36 $D6 $A7 $9A $09DC118CRL&lt;br /&gt;
                 $83 $C4 $04 $5D $CB&lt;br /&gt;
                                     $8B $1E $A7D6W  $C7 $07 [$0002W]  $83 $3E&lt;br /&gt;
             {$7A1AW}  [$00] {$75} $14 $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $EB $10 $8B $1E {$A7D6W}  $A1 {$7A1AW}&lt;br /&gt;
             $89 $47 {$0A} $A1 {$7A1CW}  $89 $47 {$0C} $8B $1E $A7D6W  $C7 $47 $02&lt;br /&gt;
             [$0002W]  $C7 $47 $20 [$0001W]  $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0000W]&lt;br /&gt;
                 $C7 $47 $3E [$0006W]  $C7 $47 $40 [$0003W]  $C7 $47 $42 [$0000W]&lt;br /&gt;
             $C7 $47 $1E [$0100W]  $B8 [$14ECW]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting flag spawn code&lt;br /&gt;
%patch $E2ED $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0003W]  $C7 $07 [$0022W]&lt;br /&gt;
             $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $05 [$0060W]  $89&lt;br /&gt;
             $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE20W]  $89 $47 $0C $9A $1D02002ARL&lt;br /&gt;
                     $BB [$0010W]  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $1A $B8&lt;br /&gt;
             [$15EEW]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Swimming Keen spawning code&lt;br /&gt;
%patch $F5EE $55 $8B $EC $8B $1E $A7D6W  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]&lt;br /&gt;
                 $C7 $47 $06 [$0002W]  $B8 [$19ECW]  $50 $53 $9A $10B1118CRL   &lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Miragia spawning code&lt;br /&gt;
%patch $FA80  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0002W]  $8B $46 $06 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $89 $47 $0C $C7 $47 $1C [$1DFCW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Items spawn code&lt;br /&gt;
%patch $FC23 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $D8 $A7 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0004W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1FA0W]  $8B $1E $D8 $A7 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1EECW]  $50 $53 $9A&lt;br /&gt;
         $09DC118CRL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Council Member spawn&lt;br /&gt;
%patch $FCE9  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$1FB8W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slug spawning code&lt;br /&gt;
%patch $FD7E  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0005W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF8FW]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2012W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mad Mushroom spawning code&lt;br /&gt;
%patch $FEC5  $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF0FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$20E4W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Egg spawn code&lt;br /&gt;
%patch $FFDD $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $D8 $A7 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
             [$FF8FW]  $89 $47 $0C $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
             [$2120W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blue Bird spawning code&lt;br /&gt;
%patch $10039 $55 $8B $EC $B8 $01 $00 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $07 [$001BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $8B $47 $0A $8B $1E $A7D6W  $3B $47 $0A&lt;br /&gt;
              $73 $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W ] $EB $09 $8B $1E $D8&lt;br /&gt;
              $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$21B6W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Skypest spawning code&lt;br /&gt;
%patch $105E7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $10 [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $10 [$FFFFW]  $B8 [$2486W]&lt;br /&gt;
                  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Cloud spawning code&lt;br /&gt;
%patch $109C2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000DW]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$28A0W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Berkeloid spawning code&lt;br /&gt;
%patch $10B9B $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1D02002ARL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0008W]&lt;br /&gt;
                  $B8 [$2AF8W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Inchworm spawning code&lt;br /&gt;
%patch $10EB2 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$2E9AW]  $50 $9A $09DC118CRL&lt;br /&gt;
                          $83 $C4 $04 $9A $1D02002ARL     $BB [$0020W]  $99 $F7&lt;br /&gt;
              $FB $8B $1E $D8 $A7 $89 $47 $1A $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Foot spawning code&lt;br /&gt;
%patch $10F2C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $05 [$FFFDW]&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $B8 [$2EF4W]  $50 $53 $9A $09DC118CRL     $83&lt;br /&gt;
              $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bounder Spawning code&lt;br /&gt;
%patch $110EA $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$000FW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $C7 $47 $10 [$0001W]  $C7 $47 $0E [$0000W]  $B8&lt;br /&gt;
              [$2F12W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Lick spawn code&lt;br /&gt;
%patch $112C8 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0012W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1D02002ARL     $3D [$0080W]  {$7D} $0B $8B $1E $D8 $A7&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $9A $1D02002ARL     $BB $0040W&lt;br /&gt;
                  $99 $F7 $FB $8B $1E $D8 $A7 $89 $47 $08 $B8 [$3002W]  $50 $53&lt;br /&gt;
              $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platforms Spawning code&lt;br /&gt;
%patch $114AB $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D3CW] #4 kinds of platform, direction list at $1153C&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB    #Up platform&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB    #Right platform&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB    #Down platform&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8    #Left platform&lt;br /&gt;
              [$316AW]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform Spawning code&lt;br /&gt;
%patch $118FC $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0014W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$3188W]  $50 $53 $9A $09DC118CRL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Smirky Spawning code&lt;br /&gt;
%patch $11A2E $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1D02002ARL     $3D {$0080W}  $7D $0B $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $D8 $A7 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]  $B8 [$31E2W]  $50&lt;br /&gt;
              $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mimrock Spawning code&lt;br /&gt;
%patch $11E67 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF30W]  $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10 $B8 [$343AW]&lt;br /&gt;
                  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dopefish spawn code&lt;br /&gt;
%patch $120B0 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $C7 $47 $06 [$0002W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $05 [$FD00W]  $89 $47 $0C $9A $1D02002ARL     $3D&lt;br /&gt;
              [$0080W]  $7D $0B $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $EB $09 $8B&lt;br /&gt;
              $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $8B $1E $D8 $A7 $C7 $47 $10 [$0001W]&lt;br /&gt;
                  $B8 [$35C0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Schoolfish spawn code&lt;br /&gt;
%patch $124C7 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0002W]&lt;br /&gt;
              $C7 $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $0C $B8 [$0001W]  $89 $47 $0E $89 $47 $10&lt;br /&gt;
              $B8 [$3764W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sprite spawn code&lt;br /&gt;
%patch $1257F $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $B8 [$0001W]  $89 $47 {$0E}&lt;br /&gt;
              $89 $47 {$10} $B8 [$37A0W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Underwater Mine spawning code&lt;br /&gt;
%patch $1270C $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0020W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$0D7EW]&lt;br /&gt;
                  $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $D8 $A7 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $D8 $A7 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $D8 $A7 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8&lt;br /&gt;
              [$3890W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Mine direction list&lt;br /&gt;
%patch $1279E [$0D2DW]] #Up&lt;br /&gt;
              [$0D3DW] #Right&lt;br /&gt;
              [$0D4DW] #Down&lt;br /&gt;
              [$0D5DW] #Left&lt;br /&gt;
&lt;br /&gt;
#Lindsey spawn code&lt;br /&gt;
%patch $127D5 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8 [$38EAW]&lt;br /&gt;
              $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter spawning code&lt;br /&gt;
%patch $1285B $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06BD1E11RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $D8 $A7 $C7 $07 [$0001W]  $C7 $47 $02 [$0001W]  $8B&lt;br /&gt;
              $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $C7 $47 $06 [$0000W]  $8B $46&lt;br /&gt;
              $08 $D3 $E0 $89 $47 $0C $89 $77 $3E $8B $DE $83 $FB [$03] $77 $50&lt;br /&gt;
              $D1 $E3 $2E $FF $A7 {$0EDEW}  $8B $1E $D8 $A7 $83 {$6F $0C} [$30] $81&lt;br /&gt;
              {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017CW]  $EB $35 $8B $1E $D8 $A7 $81&lt;br /&gt;
              {$47 $0A} [$0080W]  $83 {$47 $0C} [$50] $C7 {$47 $1E} [$0180W]  $EB $21 $8B&lt;br /&gt;
              $1E $D8 $A7 $81 {$47 $0A} [$0090W]  $C7 {$47 $1E} [$017EW]  $EB $11 $8B&lt;br /&gt;
              $1E $D8 $A7 $83 {$47 $0C} [$70] $83 {$6F $0A} [$30] $C7 {$47 $1E} [$0182W]&lt;br /&gt;
              $B8 [$3962W]  $50 $FF $36 $D8 $A7 $9A $09DC118CRL     $83 $C4 $04&lt;br /&gt;
              $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Dart shooter position list&lt;br /&gt;
%patch $128FE $0E82W #Up (At $128A2)&lt;br /&gt;
%patch $12900 $0E96W #Right (At $128B6)&lt;br /&gt;
%patch $12902 $0EAAW #Down (At $128CA)&lt;br /&gt;
%patch $12904 $0EBAW #Left (At $128DA)&lt;br /&gt;
&lt;br /&gt;
#Wetsuit spawn code&lt;br /&gt;
%patch $129F1 $55 $8B $EC $33 $C0 $50 $9A $06BD1E11RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $D8 $A7 $C7 $07 [$001EW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $B8 [$3A34W]  $50 $53 $9A $09DC118CRL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Scrollbar &#039;spawning&#039; code&lt;br /&gt;
%patch $17048 $55 $8B $EC $83 $7E $0A $00 $74 $29 $8B $1E $AC $CC $D1 $E3 $8B&lt;br /&gt;
              $46 $08 $89 $87 $9E $CC $A1 $AC $CC $FF $06 $AC $CC $3D $06 [$00]&lt;br /&gt;
              {$75} $35 $B8 [$4244W]  $50 $9A $037D022FRL     $83 $C4 $02 $5D $CB&lt;br /&gt;
              $5D $CB&lt;br /&gt;
                      $8B $1E $AA $CC $D1 $E3 $8B $46 $06 $89 $87 $92 $CC $A1&lt;br /&gt;
              $AA $CC $FF $06 $AA $CC $3D $06 [$00] {$75} $0C $B8 [$4279W]  $50 $9A&lt;br /&gt;
              $037D022FRL     $83 $C4 $02 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Allow more sprite kinds ==&lt;br /&gt;
&lt;br /&gt;
This patch expands the maximum number of different sprite initiations possible in Keen 4; the default patch above allows a maximum of $7F or 127 initiations, whereas this patch allows a maximum of $7FFFW, or thousands, making the number practically unlimited.&lt;br /&gt;
&lt;br /&gt;
This patch will only work as long as right-facing Keen&#039;s initiation code (Above)is not tampered with. The patch here uses the default number of sprites, 87.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Allow more than 127 sprite types in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Allow more than 127 sprite types in Keen 4&lt;br /&gt;
%patch $E945 $81 $FB [$0057W]  $76 $02 $EB $30&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E999 for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked as the last blue value. (The first two are in-level Keen&#039;s left\right facing directions.) Checking the original initiation code will give a more detailed breakdown of what is presented here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $EE87 $0069W #Left Facing Keen (At $E959)&lt;br /&gt;
%patch $EE89 $0081W #Map Keen (At $E971)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen spawns&lt;br /&gt;
%patch $E954 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $FF $76 $FC $57 $9A {$0B80000ERL}&lt;br /&gt;
                     $83 $C4 $06 $C7 $06 $CB3DW  $0001W  $EB $12&lt;br /&gt;
%patch $E971 $FF $76 $FC $57 $9A {$0D8F050ARL}     $83 $C4 $04 $C7 $06 $CB4FW&lt;br /&gt;
             $0001W  $9A $0D8F0003RL     $B8 $2A3ARW $8A $16 $EC $7A $8E $C0&lt;br /&gt;
             $26 $08 $16 [$00FDW]  $E9 $0464W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inchowrm-Foot method ===&lt;br /&gt;
&lt;br /&gt;
This patch collapses the [[Patch:Inchworm|Inchworm]] and [[Patch:Foot|Foot]] initiation codes and stops both caching the Treasure Eater Smoke frames. What this means is that both will take up less memory but the Inchworms cannot transform into the Foot &#039;&#039;and&#039;&#039; emit smoke. As a bonus space is created for an additional  initiation code for a totally new sprite.&lt;br /&gt;
&lt;br /&gt;
The space freed is 61 bytes ($EAAE-$EAEB). This is enough for a 3 difficulty sprite or several single difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Change Inchworm pointer to new code&lt;br /&gt;
%patch $EE99 $01B3W #Inchworm (At $EAA3)&lt;br /&gt;
&lt;br /&gt;
#Foot doesn&#039;t cache smoke, Inchworm doesn&#039;t either&lt;br /&gt;
%patch $EAA0 $E9 $035AW  $FF $76 $FC $57 {$9A $108006B2RL}     $EB $E9&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 5 =&lt;br /&gt;
&lt;br /&gt;
[[Keen 5]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($ED50 + $0776 = $F4C6)&lt;br /&gt;
%patch $EE94 $0776W&lt;br /&gt;
&lt;br /&gt;
#Length of list (124 items)&lt;br /&gt;
%patch $EE89 $7C&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $ED50)&lt;br /&gt;
%patch $F4C6 [$0146W] #Keen right (At $EE96)&lt;br /&gt;
%patch $F4C8 [$0170W] #Keen left (At $EEC0)&lt;br /&gt;
%patch $F4CA [$019AW] #Map Keen (At $EEEA)&lt;br /&gt;
%patch $F4CC [$01F5W] #Easy Sparky (At $EF45)&lt;br /&gt;
%patch $F4CE [$01EBW] #Normal Sparky (At $EF3B)&lt;br /&gt;
%patch $F4D0 [$01E1W] #Hard Sparky (At $EF31)&lt;br /&gt;
%patch $F4D2 [$021CW] #Easy Mine (At $EF6C)&lt;br /&gt;
%patch $F4D4 [$0212W] #Normal Mine (At $EF62)&lt;br /&gt;
%patch $F4D6 [$0208W] #Hard Mine (At $EF58)&lt;br /&gt;
%patch $F4D8 [$0243W] #Easy up Slicestar (At $EF93)&lt;br /&gt;
%patch $F4DA [$0239W] #Normal up Slicestar (At $EF89)&lt;br /&gt;
%patch $F4DC [$022FW] #Hard up Slicestar (At $EF7F)&lt;br /&gt;
%patch $F4DE [$026DW] #Easy RoboRed (At $EFBD)&lt;br /&gt;
%patch $F4E0 [$0263W] #Normal RoboRed (At $EFB3)&lt;br /&gt;
%patch $F4E2 [$0259W] #Hard RoboRed (At $EFA9)&lt;br /&gt;
%patch $F4E4 [$0294W] #Easy Spirogrip (At $EFE4)&lt;br /&gt;
%patch $F4E6 [$028AW] #Normal Spirogrip (At $EFDA)&lt;br /&gt;
%patch $F4E8 [$0280W] #Hard Spirogrip (At $EFD0)&lt;br /&gt;
%patch $F4EA [$02BBW] #Easy bouncy Slicestar (At $F00B)&lt;br /&gt;
%patch $F4EC [$02B1W] #Normal bouncy Slicestar (At $F001)&lt;br /&gt;
%patch $F4EE [$02A7W] #Hard bouncy Slicestar (At $EFF7)&lt;br /&gt;
%patch $F4F0 [$02E2W] #Easy right Slicestar (At $F032)&lt;br /&gt;
%patch $F4F2 [$02D8W] #Normal right Slicestar (At $F028)&lt;br /&gt;
%patch $F4F4 [$02CEW] #Hard right Slicestar (At $F01E)&lt;br /&gt;
%patch $F4F6 [$02F9W] #Horizontal scrollbar (At $F049)&lt;br /&gt;
%patch $F4F8 [$01CAW] #&#039;T&#039; map Keen (At $EF1A)&lt;br /&gt;
%patch $F4FA [$030AW] #Up Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FC [$030AW] #Right Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F4FE [$030AW] #Down Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F500 [$030AW] #Left Horizontal-Vertical Red Platform (At $F05A)&lt;br /&gt;
%patch $F502 [$0657W] #[B] sprite (At $F3A7)&lt;br /&gt;
%patch $F504 [$0327W] #Dropping Platform (At $F077)&lt;br /&gt;
%patch $F506 [$036AW] #Easy still Platform (At $F0BA)&lt;br /&gt;
%patch $F508 [$034DW] #Normal Still Platform (At $F09D)&lt;br /&gt;
%patch $F50A [$033AW] #Hard still Platform (At $F08A)&lt;br /&gt;
%patch $F50C [$0387W] #Up Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F50E [$0387W] #Right Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F510 [$0387W] #Down Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F512 [$0387W] #Left Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F514 [$03A4W] #Sneaky Platform (At $F0F4)&lt;br /&gt;
%patch $F516 [$03B7W] #QED\Fuse counter (At $F107)&lt;br /&gt;
%patch $F518 [$03F1W] #Easy Little Ampton  (At $F141)&lt;br /&gt;
%patch $F51A [$03E7W] #Normal Little Ampton  (At $F137)&lt;br /&gt;
%patch $F51C [$03DDW] #Hard Little Ampton  (At $F12D)&lt;br /&gt;
%patch $F51E [$0418W] #Easy laser up (At $F168)&lt;br /&gt;
%patch $F520 [$0442W] #Easy laser right (At $F192)&lt;br /&gt;
%patch $F522 [$046DW] #Easy laser left (At $F1BD)&lt;br /&gt;
%patch $F524 [$0498W] #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 [$040EW] #Normal laser up (At $F15E)&lt;br /&gt;
%patch $F528 [$0438W] #Normal laser right (At $F188)&lt;br /&gt;
%patch $F52A [$0463W] #Normal laser down (At $F1B3)&lt;br /&gt;
%patch $F52C [$048EW] #Normal laser left (At $F1DE)&lt;br /&gt;
%patch $F52E [$0404W] #Hard laser up (At $F154)&lt;br /&gt;
%patch $F530 [$042EW] #Hard laser right (At $F17E)&lt;br /&gt;
%patch $F532 [$0459W] #Hard laser down (At $F1A9)&lt;br /&gt;
%patch $F534 [$0484W] #Hard laser left (At $F1D4)&lt;br /&gt;
%patch $F536 [$04BEW] #Red gem (At $F20E)&lt;br /&gt;
%patch $F538 [$04BEW] #Yellow gem (At $F20E)&lt;br /&gt;
%patch $F53A [$04BEW] #Green gem (At $F20E)&lt;br /&gt;
%patch $F53C [$04BEW] #Blue gem (At $F20E)&lt;br /&gt;
%patch $F53E [$04BEW] #100 points (At $F20E)&lt;br /&gt;
%patch $F540 [$04BEW] #200 points (At $F20E)&lt;br /&gt;
%patch $F542 [$04BEW] #500 points (At $F20E)&lt;br /&gt;
%patch $F544 [$04BEW] #1000 points (At $F20E)&lt;br /&gt;
%patch $F546 [$04BEW] #2000 points (At $F20E)&lt;br /&gt;
%patch $F548 [$04BEW] #5000 points (At $F20E)&lt;br /&gt;
%patch $F54A [$04BEW] #1UP (At $F20E)&lt;br /&gt;
%patch $F54C [$04BEW] #Raygun (At $F20E)&lt;br /&gt;
%patch $F54E [$04AFW] #Low ammo raygun (At $F1FF)&lt;br /&gt;
%patch $F550 [$04E3W] #V card (At $F233)&lt;br /&gt;
%patch $F552 [$051CW] #Easy Volte-face (At $F26C)&lt;br /&gt;
%patch $F554 [$0512W] #Normal Volte-face (At $F262)&lt;br /&gt;
%patch $F556 [$0508W] #Hard Volte-face (At $F258)&lt;br /&gt;
%patch $F558 [$0543W] #Easy Shelley (At $F293)&lt;br /&gt;
%patch $F55A [$0539W] #Normal Shelley (At $F289)&lt;br /&gt;
%patch $F55C [$052FW] #Hard Shelley (At $F27F)&lt;br /&gt;
%patch $F55E [$056AW] #Easy Spindred (At $F2BA)&lt;br /&gt;
%patch $F560 [$0560W] #Normal Spindred (At $F2B0)&lt;br /&gt;
%patch $F562 [$0556W] #Hard Spindred (At $F2A6)&lt;br /&gt;
%patch $F564 [$057DW] #Up Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F566 [$057DW] #Right Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F568 [$057DW] #Down Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56A [$057DW] #Left Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56C [$059BW] #Up Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F56E [$059BW] #Right Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F570 [$059BW] #Down Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F572 [$059BW] #Left Horizontal-Vertical Purple Platform (At $F2EB)&lt;br /&gt;
%patch $F574 [$05CDW] #Easy Shikadi Master (At $F31D)&lt;br /&gt;
%patch $F576 [$05C3W] #Normal Shikadi Master (At $F313)&lt;br /&gt;
%patch $F578 [$05B9W] #Hard Shikadi Master (At $F309)&lt;br /&gt;
%patch $F57A [$0657W] #Up Platform guide (At $F3A7)&lt;br /&gt;
%patch $F57C [$0657W] #Right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F57E [$0657W] #Down Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F580 [$0657W] #Left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F582 [$0657W] #Up-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F584 [$0657W] #Down-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F586 [$0657W] #Down-left  Platform guide (At $F3A7)&lt;br /&gt;
%patch $F588 [$0657W] #Up-left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F58A [$05EDW] #Easy Shikadi (At $F33D)&lt;br /&gt;
%patch $F58C [$05E6W] #Normal Shikadi (At $F336)&lt;br /&gt;
%patch $F58E [$05DFW] #Hard Shikadi (At $F32F)&lt;br /&gt;
%patch $F590 [$060DW] #Easy Shockshund (At $F35D)&lt;br /&gt;
%patch $F592 [$0606W] #Normal Shockshund (At $F356)&lt;br /&gt;
%patch $F594 [$05FFW] #Hard Shockshund (At $F34F)&lt;br /&gt;
%patch $F596 [$062DW] #Easy Sphereful (At $F37D)&lt;br /&gt;
%patch $F598 [$0626W] #Normal Sphereful (At $F376)&lt;br /&gt;
%patch $F59A [$061FW] #Hard Sphereful (At $F36F)&lt;br /&gt;
%patch $F59C [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F59E [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5A8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AC [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5AE [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B0 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B2 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B4 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B6 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5B8 [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BA [$0657W] #BLANK (At $F3A7)&lt;br /&gt;
%patch $F5BC [$063FW] #Korath (At $F38F)&lt;br /&gt;
%patch $F5BE [$0651W] #Teleporter (At $F3A1)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are quite similar to, but better structured than Keen 4. The first things to notice the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $6F6CW  $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $C2xxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache.&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Normal Keen calls $0AAF0000RL and $0CCB0007RL, with that second one being the code that spawns him. (The other one sets him as the player.) Again, some sprites are not spawned at all, but just sit there.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right&lt;br /&gt;
%patch $EE96 $B8 [$0001W]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04E7W&lt;br /&gt;
&lt;br /&gt;
#Keen left&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AAF0000RL}     $83 $C4 $06 $9A&lt;br /&gt;
         {$0CCB0007RL}     $C7 $06 $C269W  $0001W  $B8 $2B7BRW $8A $16 $EC $6F&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00EBW]  $E9 $04BDW&lt;br /&gt;
&lt;br /&gt;
#Map Keen&lt;br /&gt;
%patch $EEEA $9A {$0CCB0007RL}     $C7 $06 $C27FW  $0001W  $B8 $2B7BRW $8A $16&lt;br /&gt;
             $EC $6F $8E $C0 $26 $08 $16 [$00EBW]  $83 $3E [$6F70W]  {$0D $75} $03&lt;br /&gt;
             $E9 $049AW  $57 $56 $9A {$0CCB050ERL}     $83 $C4 $04 $E9 $048DW&lt;br /&gt;
&lt;br /&gt;
#T map Keen&lt;br /&gt;
%patch $EF1A $83 $3E [$6F70W]  {$0D $74} $03 $E9 $0483W  $57 $56 $9A {$0CCB057FRL}&lt;br /&gt;
                 $83 $C4 $04 $E9 $0476W &lt;br /&gt;
&lt;br /&gt;
#Sparky&lt;br /&gt;
%patch $EF31 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $046CW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0462W  $57 $56 $9A {$11020004RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C289W  $0001W  $E9 $044FW&lt;br /&gt;
&lt;br /&gt;
#Shikadi mine&lt;br /&gt;
%patch $EF58 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0445W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $043BW  $57 $56 $9A {$11C40001RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28BW  $0001W  $E9 $0428W&lt;br /&gt;
&lt;br /&gt;
#Up Slicestar&lt;br /&gt;
%patch $EF7F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $041EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0414W  $33 $C0 $50 $57 $56 $9A {$1102070DRL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C28DW  $0001W  $E9 $03FEW&lt;br /&gt;
&lt;br /&gt;
#RoboRed&lt;br /&gt;
%patch $EFA9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03EAW  $57 $56 $9A {$11C4095CRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28FW  $0001W  $E9 $03D7W  &lt;br /&gt;
&lt;br /&gt;
#Spirogrip&lt;br /&gt;
%patch $EFD0 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03CDW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $03C3W  $57 $56 $9A {$11C40B61RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C291W  $0001W  $E9 $03B0W&lt;br /&gt;
&lt;br /&gt;
#Bouncy Slicestar&lt;br /&gt;
%patch $EFF7 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $03A6W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $039CW  $57 $56 $9A {$110207ACRL} $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C28DW  $0001W  $E9 $0389W&lt;br /&gt;
&lt;br /&gt;
#Right Slicestar&lt;br /&gt;
%patch $F01E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $037FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0375W  $B8 [$0001W]  $50 $57 $56 $9A {$1102070DRL}     $83&lt;br /&gt;
             $C4 $06 $C7 $06 $C28DW  $0001W  $E9 $035EW&lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar&lt;br /&gt;
%patch $F049 $B8 [$0001W]  $50 $57 $56 $9A {$174E0B05RL}     $83 $C4 $06 $E9 $034DW&lt;br /&gt;
&lt;br /&gt;
#Red Horizontal-Vertical Platforms&lt;br /&gt;
%patch $F05A $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                 $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $0330W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform&lt;br /&gt;
%patch $F077 $57 $56 $9A {$0F920BC8RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $031DW&lt;br /&gt;
&lt;br /&gt;
#Still Platform -hard&lt;br /&gt;
%patch $F08A $57 $56 $9A {$0F920CECRL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $030AW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - normal&lt;br /&gt;
%patch $F09D $83 $3E [$6F6CW]  {$02 $7E} $03 $E9 $0300W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02EDW&lt;br /&gt;
&lt;br /&gt;
#Still Platform - easy&lt;br /&gt;
%patch $F0BA $83 $3E [$6F6CW]  {$01 $7E} $03 $E9 $02E3W  $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $C29DW  $0001W  $E9 $02D0W&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $F0D7 $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform&lt;br /&gt;
%patch $F0F4 $57 $56 $9A {$0F9214D1RL}     $83 $C4 $04 $C7 $06 $C29DW  $0001W&lt;br /&gt;
             $E9 $02A0W&lt;br /&gt;
&lt;br /&gt;
#QED\Fuse&lt;br /&gt;
%patch $F107 $83 $3E [$6F68W]  {$0C $75} $12 $C7 $06 $6F5EW  $0004W  $57 $56 $9A&lt;br /&gt;
             {$11C41D56RL}     $83 $C4 $04 $EB $04 $FF $06 $5E $6F $C7 $06 $C2A5W&lt;br /&gt;
                 $0001W  $E9 $027AW&lt;br /&gt;
&lt;br /&gt;
#Little Ampton&lt;br /&gt;
%patch $F12D $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0270W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0266W  $57 $56 $9A {$11020240RL}     $83 $C4 $04 $C7 $06 $C293W&lt;br /&gt;
                 $0001W  $E9 $0253W&lt;br /&gt;
&lt;br /&gt;
#Laser up&lt;br /&gt;
%patch $F154 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0249W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
                 $03 $E9 $023FW  $33 $C0 $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $0229W&lt;br /&gt;
&lt;br /&gt;
#Laser right&lt;br /&gt;
%patch $F17E $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $021FW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0215W  $B8 [$0001W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01FEW&lt;br /&gt;
&lt;br /&gt;
#Laser down&lt;br /&gt;
%patch $F1A9 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01F4W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01EAW  $B8 [$0002W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01D3W&lt;br /&gt;
&lt;br /&gt;
#Laser left&lt;br /&gt;
%patch $F1D4 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $01C9W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $01BFW  $B8 [$0003W]  $50 $57 $56 $9A {$0F921597RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $C27DW  $0001W  $E9 $01A8W&lt;br /&gt;
&lt;br /&gt;
#Low ammo raygun (Uses following item initiation)&lt;br /&gt;
%patch $F1FF $83 $3E [$6F56W] {$05 $7C} $03 $E9 $019EW  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Items&lt;br /&gt;
%patch $F20E $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17CAW]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $0174W&lt;br /&gt;
&lt;br /&gt;
#V card&lt;br /&gt;
%patch $F233 $8B $46 $FA $05 [$FFC6W]  $50 $57 $56 $9A {$0F92047FRL}     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17C8W]  $D1 $E3 $C7 $87 $C25FW&lt;br /&gt;
             $0001W  $E9 $014FW&lt;br /&gt;
&lt;br /&gt;
#Volte Face&lt;br /&gt;
%patch $F258 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0145W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $013BW  $57 $56 $9A {$0F9211B4RL}     $83 $C4 $04 $C7 $06 $C295W&lt;br /&gt;
                 $0001W  $E9 $0128W&lt;br /&gt;
&lt;br /&gt;
#Shelley&lt;br /&gt;
%patch $F27F $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $011EW  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $0114W  $57 $56 $9A $1E $09 $02 $11 $83 $C4 $04 $C7 $06 $C29BW&lt;br /&gt;
             $0001W  $E9 $0101W&lt;br /&gt;
&lt;br /&gt;
#Spindred&lt;br /&gt;
%patch $F2A6 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $00F7W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $00EDW  $57 $56 $9A {$11C40C5DRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C299W  $0001W  $E9 $00DAW&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $F2CD $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFB0W]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $00BCW&lt;br /&gt;
&lt;br /&gt;
#Purple Horizontal-Vertical Platform&lt;br /&gt;
%patch $F2EB $B8 [$0001W]  $50 $8B $46 $FA $05 [$FFACW]  $50 $57 $56 $9A {$0F9206BCRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $009EW&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master&lt;br /&gt;
%patch $F309 $83 $3E [$6F6CW]  {$03 $7D} $03 $E9 $0094W  $83 $3E [$6F6CW]  {$02 $7D}&lt;br /&gt;
             $03 $E9 $008AW  $57 $56 $9A {$11C40E47RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $C281W  $0001W  $EB $78&lt;br /&gt;
&lt;br /&gt;
#Shikadi&lt;br /&gt;
%patch $F32F $83 $3E [$6F6CW]  {$03 $7C} $71 $83 $3E [$6F6CW]  {$02 $7C} $6A $57 $56&lt;br /&gt;
             $9A {$11C41287RL}     $83 $C4 $04 $C7 $06 $C283W  $0001W  $EB $58&lt;br /&gt;
&lt;br /&gt;
#Shocksund&lt;br /&gt;
%patch $F34F $83 $3E [$6F6CW]  {$03 $7C} $51 $83 $3E [$6F6CW]  {$02 $7C} $4A $57 $56&lt;br /&gt;
             $9A {$11C41617RL}     $83 $C4 $04 $C7 $06 $C285W  $0001W  $EB $38&lt;br /&gt;
&lt;br /&gt;
#Sphereful&lt;br /&gt;
%patch $F36F $83 $3E [$6F6CW]  {$03 $7C} $31 $83 $3E [$6F6CW]  {$02 $7C} $2A $57 $56&lt;br /&gt;
             $9A {$11C419D8RL}     $83 $C4 $04 $C7 $06 $C287W  $0001W  $EB $18&lt;br /&gt;
&lt;br /&gt;
#Korath&lt;br /&gt;
%patch $F38F $57 $56 $9A {$11C41C81RL}     $83 $C4 $04 $C7 $06 $C2A3W  $0001W  $EB $06&lt;br /&gt;
&lt;br /&gt;
#Teleporter&lt;br /&gt;
%patch $F3A1 $C7 $06 $C2A9W  $0001W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in games. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxxW&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1D02002ARL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Normal Keen spawning code&lt;br /&gt;
%patch $AAF0 $55 $8B $EC $8B $1E $9E3EW  $C7 $07 [$0002W]  $C7 $47 $02 [$0002W]&lt;br /&gt;
             $C7 $47 $20 [$0001W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $05 [$FF0FW]  $89 $47 $0C $8B $46 $0A $89 $47 $0E&lt;br /&gt;
             $C7 $47 $10 [$0001W]  $B8 [$0888W]  $50 $53 $9A $13B511C4RL     $83&lt;br /&gt;
             $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Demo Sign spawn code&lt;br /&gt;
%patch $CCB7 $55 $8B $EC $8B $1E $3C $9E $C7 $07 [$0001W]  $C7 $47 $20 [$0003W]&lt;br /&gt;
             $C7 $47 $02 [$0002W]  $C7 $47 $06 [$0000W]  $C7 $47 $40 [$FFFFW]  $C7&lt;br /&gt;
             $47 $3E [$FFFFW]  $C7 $47 $42 [$FFFFW]  $C7 $47 $44 [$FFFFW]  $83 $3E&lt;br /&gt;
             {$9B97W}  [$00] {$74} $07 $C7 $47 $1C [$0788W]  $5D $CB&lt;br /&gt;
                                                             $83 $3E {$332CW}&lt;br /&gt;
             [$00] {$75} $12 $B8 [$133EW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
             $83 $C4 $04 $5D $CB&lt;br /&gt;
                                 $B8 [$135CW]  $50 $FF $36 $3C $9E $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $B8 $2B7BW  $8A $16 $EC $6F $8E $C0 $26 $08&lt;br /&gt;
             $16 [$006BW]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Item spawning code (Includes V card and low ammo)&lt;br /&gt;
%patch $FD9F $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $06B91DCDRL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $40 $9E $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A54W]  $8B $1E $40 $9E $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$1946W]  $50 $53 $9A $090B11C4RL&lt;br /&gt;
                     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Red\Purple Platform spawning code&lt;br /&gt;
%patch $FFDC  $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] $77 $45 $D1 $E3 $2E $FF $A7 [$076EW]&lt;br /&gt;
               $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB&lt;br /&gt;
              $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB&lt;br /&gt;
              $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB&lt;br /&gt;
              $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $83&lt;br /&gt;
              $7E $0C $00 $74 $1B $8B $1E $40 $9E $83 $47 $0A $40 $83 $47 $0C&lt;br /&gt;
              $40 $B8 [$1B7CW]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
              $B8 [$1B5EW]  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04&lt;br /&gt;
              $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Platform direction list&lt;br /&gt;
%patch $1008E $6FDW #Up (At $1001D)&lt;br /&gt;
%patch $10090 $70DW #Right (At $1002D)&lt;br /&gt;
%patch $10092 $71DW #Down (At $1003D)&lt;br /&gt;
%patch $10094 $72DW #Left (At $1004D)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $104E8 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 {$1BB8W}  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting platform spawn code&lt;br /&gt;
%patch $1060C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1C12W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Goplat spawning code&lt;br /&gt;
%patch $1065F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
           $06B91DCDRL     $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $83 $7E $0C $00 $74 $17 $83 $47 $0A&lt;br /&gt;
              $40 $83 $47 $0C $40 $B8 [$1C4EW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $EB $10 $B8 [$1C30W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $40 $9E $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W]  $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Volte-face spawn code&lt;br /&gt;
%patch $10AD4 $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0010W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0002W]  $8B $C7 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $06 [$0000W]  $B8 [$1CCCW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $5E $08 $D1 $E3&lt;br /&gt;
              $8B $87 $87 $BF $D1 $E8 $E0D1W  $8B $16 $53 $9E $8B $DF $D1 $E3&lt;br /&gt;
              $03 $C3 $89 $56 $FE $89 $46 $FC $C4 $5E $FC $26 $83 $7F $FE $5C&lt;br /&gt;
              $75 $05 $BE [$0001W]  $EB $36 $C4 $5E $FC $26 $83 $7F $02 $5E $75&lt;br /&gt;
              $05 $BE [$0003W]  $EB $27 $A1 $4C $9E $D1 $E0 $C4 $5E $FC $2B $D8&lt;br /&gt;
              $26 $83 $3F $5D $75 $05 $BE [$0002W]  $EB $12 $A1 $4C $9E $D1 $E0&lt;br /&gt;
              $C4 $5E $FC $03 $D8 $26 $83 $3F $5B $75 $02 $33 $F6 $8B $C6 $05&lt;br /&gt;
              [$005BW]  $C4 $5E $FC $26 $89 $07 $8B $1E $40 $9E $89 $77 $3E $C7&lt;br /&gt;
              $47 $40 [$0100W]  $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10DF1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DA4W]  $50 $53 $9A $090B11C4RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $10EB7 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$000FW]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$1DFEW]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sparky spawn code&lt;br /&gt;
%patch $11024 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF00W]  $89 $47 $0C $9A $1DFB0036RL     $3D $0080W  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$1F0CW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Little Ampton spawning code&lt;br /&gt;
%patch $11260 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000EW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$21DCW]  $50&lt;br /&gt;
              $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal\Vertical Slicestar spawning code&lt;br /&gt;
%patch $1172D $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000BW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $C7 $47 $44 [$0014W]  $8B $5E $0A $83 $FB [$03] $77 $45 $D1&lt;br /&gt;
              $E3 $2E $FF $A7 [$07A4W]  $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$FFFFW]  $EB $2E $8B $1E $40 $9E $C7 $47 $0E [$0001W]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $EB $1E $8B $1E $40 $9E $C7 $47 $0E [$0000W]  $C7&lt;br /&gt;
              $47 $10 [$0001W]  $EB $0E $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $C7&lt;br /&gt;
              $47 $10 [$0000W]  $B8 [$23BCW]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Slicestar direction list&lt;br /&gt;
%patch $117C4 [$0753W] #Down (At $11773)&lt;br /&gt;
%patch $117C6 [$0763W] #Right (At $11783)&lt;br /&gt;
%patch $117C8 [$0773W] #Left (At $11793)&lt;br /&gt;
%patch $117CA [$0783W] #Up (At $117A3)&lt;br /&gt;
&lt;br /&gt;
#Shelley spawn code&lt;br /&gt;
%patch $1193E $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0009W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1DFB0036RL     $3D [$0080W]  {$7D} $0B $8B $1E $40 $9E&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $40 $9E $C7 $47 $10 [$0001W]  $B8 [$2416W]  $50 $53 $9A&lt;br /&gt;
          $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Mine spawning code&lt;br /&gt;
%patch $11C41 $55 $8B $EC $56 $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B&lt;br /&gt;
              $1E $40 $9E $C7 $07 [$000AW]  $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]&lt;br /&gt;
                  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0&lt;br /&gt;
              $05 [$FF0FW]  $89 $47 $0C $C7 $47 $40 [$0100W]  $C7 $47 $42 [$00D0W]&lt;br /&gt;
              $B8 [$2644W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $8B $1E $40&lt;br /&gt;
              $9E $C7 $47 $16 [$0100W]  $33 $F6 $EB $12 $56 $FF $36 $40 $9E $90&lt;br /&gt;
              $0E $E8 $0095W  $83 $C4 $04 $0B $C0 $75 $06 $46 $83 $FE $03 $7E&lt;br /&gt;
              $E9 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Robo Red spawning code&lt;br /&gt;
%patch $1259C $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FC00W]  $89 $47 $0C&lt;br /&gt;
              $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47 $0E [$FFFFW]  $B8 [$2734W]&lt;br /&gt;
                  $50 $FF $36 $40 $9E $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Spirogrip spawn code&lt;br /&gt;
%patch $127A1 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$000DW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0001W]  $B8 [$2824W]  $50 $53 $9A&lt;br /&gt;
              $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi Master Spawn code&lt;br /&gt;
%patch $12A87 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0013W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 $80 $FE $89 $47 $0C&lt;br /&gt;
              $B8 [$2AF4W]  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shikadi spawn code&lt;br /&gt;
%patch $12EC7 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0014W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF00W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0004W]  $9A $1DFB0036RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $40 $9E $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $40 $9E $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $B8 [$2D10W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
              $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Shockshund spawn code&lt;br /&gt;
%patch $13257 $55 $8B $EC $33 $C0 $50 $9A $06B91DCDRL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $40 $9E $C7 $07 [$0015W]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C&lt;br /&gt;
              $C7 $47 $40 [$0002W]  $B8 [$0001W]  $89 $47 $10 $89 $47 $0E $B8 [$2F0EW]&lt;br /&gt;
                  $50 $53 $9A $090B11C4RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Q.E.D. spawn code&lt;br /&gt;
%patch $13996 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A $06B91DCDRL&lt;br /&gt;
                          $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0019W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $89 $77 $2C $89 $7F $2E $8B $47 $2C $40 $89 $47 $30&lt;br /&gt;
              $8B $47 $2E $40 $89 $47 $32 $8B $C6 $B1 $08 $D3 $E0 $05 [$FFF0W]&lt;br /&gt;
              $89 $47 $22 $89 $47 $0A $8B $C7 $D3 $E0 $05 [$FFF0W]  $89 $47 $24&lt;br /&gt;
              $89 $47 $0C $8B $47 $22 $05 $20 $02 $89 $47 $26 $8B $47 $24 $05&lt;br /&gt;
              $20 $02 $89 $47 $28 $B8 [$3186W]  $50 $53 $9A $090B11C4RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused Platform cache ==&lt;br /&gt;
&lt;br /&gt;
There is one unused [[Patch:Sprite cache|sprite cache]] in Keen 5. It is a single animation in size and  contains a small red platform. This is useful since it is not hard to expand it or use it for a totally unique sprite. It&#039;s call is &amp;lt;tt&amp;gt;$C29F&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Cache&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $31A4C $01BFW #Small red platform cache start&lt;br /&gt;
%patch $31AA0 $01BFW #Cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create space for new initiation code ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the existing initiation codes so that they are ore compact. This allows a modder to insert new code in the freed space. All the patches in this section can be combined to free up the maximum amount of space.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left and right Keen initiation codes so they use the minimum amount of space. (This is possible because they both require similar code.) It frees space at $EEC5 for a 3-difficulty sprite or several non-difficulty sprites.&lt;br /&gt;
&lt;br /&gt;
The patch is quite basic; in effect the Keen left code only sets Keen&#039;s direction before jumping to the Keen right code, leaving all its space free.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Keen left code compacted&lt;br /&gt;
%patch $EEC0 $B8 [$FFFFW]  $EB $D4&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 5)|Platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F05A-$0FA8 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move initiation pointers (Free $4E at $F05A)&lt;br /&gt;
%patch $F4FA $0359W #Up Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FC $0359W #Right Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F4FE $0359W #Down Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F500 $0359W #Left Horizontal-Vertical Red Platform (At $F0A9)&lt;br /&gt;
%patch $F504 $036CW #Dropping Platform (At $F0BC)&lt;br /&gt;
%patch $F506 $037EW #Easy still Platform (At $F0CE)&lt;br /&gt;
%patch $F508 $0375W #Normal Still Platform (At $F0C5)&lt;br /&gt;
%patch $F50A $0385W #Hard still Platform (At $F0D5)&lt;br /&gt;
%patch $F50C $037EW #Up Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F50E $038EW #Right Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F510 $038EW #Down Red Goplat (At $F0DE)&lt;br /&gt;
%patch $F512 $038EW #Left Red Goplat (At $F0DE)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F0A9 $33 $C0 $50 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0F9206BCRL} $EB $33&lt;br /&gt;
%patch $F0BC $57 $56 $9A {$0F920BC8RL} $EB $36&lt;br /&gt;
%patch $F0C5 $83 $3E {$6F6CW}  [$02] {$7F} $38 $EB $07&lt;br /&gt;
%patch $F0CE $83 $3E {$6F6CW}  [$01] {$7F} $2F $57 $56 $9A {$0F920CECRL}&lt;br /&gt;
             $EB $1D&lt;br /&gt;
%patch $F0DE $33 $C0 $50 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Enemy Shooter initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Enemy shooter (Keen 5)|Enemy Shooter]] initiation codes (They all cache the same graphics and use similar code.) This requires extensive reorganization but frees up a considerable amount of initiation space. (Specifically the space from $F154-$F1A1 is freed.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Create space for new initiation code in Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Move pointers (Frees $F154-$F1A1)&lt;br /&gt;
%patch $F51E $0460W #Easy laser up (At $F1B0)&lt;br /&gt;
%patch $F520 $0472W #Easy laser right (At $F1C2)&lt;br /&gt;
%patch $F522 $0485W #Easy laser left (At $F1D5)&lt;br /&gt;
%patch $F524 $0498W #Easy laser down (At $F1E8)&lt;br /&gt;
%patch $F526 $0459W #Normal laser up (At $F1A9)&lt;br /&gt;
%patch $F528 $046BW #Normal laser right (At $F1BB)&lt;br /&gt;
%patch $F52A $047EW #Normal laser down (At $F1CE)&lt;br /&gt;
%patch $F52C $0491W #Normal laser left (At $F1E1)&lt;br /&gt;
%patch $F52E $0452W #Hard laser up (At $F1A2)&lt;br /&gt;
%patch $F530 $0464W #Hard laser right (At $F1B4)&lt;br /&gt;
%patch $F532 $0477W #Hard laser down (At $F1C7)&lt;br /&gt;
%patch $F534 $048AW #Hard laser left (At $F1DA)&lt;br /&gt;
&lt;br /&gt;
#Compress initiation codes&lt;br /&gt;
%patch $F1A2 $83 $3E [$6F6CW]  {$03 $7C} $53 $83 $3E [$6F6CW]  {$02 $7C} $4C&lt;br /&gt;
             [$33 $C0] $EB $37&lt;br /&gt;
%patch $F1B4 $83 $3E [$6F6CW]  {$03 $7C} $41 $83 $3E [$6F6CW]  {$02 $7C} $3A $B8&lt;br /&gt;
             [$0001W]  $EB $24&lt;br /&gt;
%patch $F1C7 $83 $3E [$6F6CW]  {$03 $7C} $2E $83 $3E [$6F6CW]  {$02 $7C} $27 $B8&lt;br /&gt;
             [$0002W]  $EB $11&lt;br /&gt;
%patch $F1DA $83 $3E [$6F6CW]  {$03 $7C} $1B $83 $3E [$6F6CW]  {$02 $7C} $14 $B8 [$0003W]&lt;br /&gt;
                 $50 $57 $56 $9A $0F921597RL     $83 $C4 $06 $C7 $06 $C27DW&lt;br /&gt;
             $0001W  $E9 $01A8W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Keen 6 =&lt;br /&gt;
&lt;br /&gt;
This section is partly incomplete.&lt;br /&gt;
&lt;br /&gt;
[[Keen 6]] is similar to Keen 4, and the same points apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initiations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 pointer list&amp;quot;&amp;gt;&lt;br /&gt;
#Location of list ($E420 + $0532 = $E952)&lt;br /&gt;
%patch $E486 $0532W&lt;br /&gt;
&lt;br /&gt;
#Length of list (105 items)&lt;br /&gt;
%patch $E47B $69&lt;br /&gt;
&lt;br /&gt;
#Sprite code pointer list (Origin is $E420)&lt;br /&gt;
%patch $E952 [$0068W] #Keen right (At $E488)&lt;br /&gt;
%patch $E954 [$0092W] #Keen left (At $E4B2)&lt;br /&gt;
%patch $E956 [$00BCW] #Map Keen (At $E4DC)&lt;br /&gt;
%patch $E958 [$00F6W] #Easy Bloog (At $E516)&lt;br /&gt;
%patch $E95A [$00ECW] #Medium Bloog (At $E50C)&lt;br /&gt;
%patch $E95C [$00E2W] #Hard Bloog (At $E502)&lt;br /&gt;
%patch $E95E [$0109W] #Red Blooglet (At $E529)&lt;br /&gt;
%patch $E960 [$0109W] #Yellow Blooglet (At $E529)&lt;br /&gt;
%patch $E962 [$0109W] #Blue Blooglet (At $E529)&lt;br /&gt;
%patch $E964 [$0109W] #Green Blooglet (At $E529)&lt;br /&gt;
%patch $E966 [$0109W] #Red keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E968 [$0109W] #Yellow keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96A [$0109W] #Green keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96C [$0109W] #Blue keygem Blooglet (At $E529)&lt;br /&gt;
%patch $E96E [$0145W] #Bottom of cliff (At $E565)&lt;br /&gt;
%patch $E970 [$0145W] #Top of cliff (At $E565)&lt;br /&gt;
%patch $E972 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E974 [$016DW] #Easy Fleex (At $E58D)&lt;br /&gt;
%patch $E976 [$0163W] #Medium Fleex (At $E583)&lt;br /&gt;
%patch $E978 [$0159W] #Hard Fleex (At $E579)&lt;br /&gt;
%patch $E97A [$0180W] #Easy UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97C [$0180W] #Medium UNUSED (At $E5A0)&lt;br /&gt;
%patch $E97E [$0180W] #Hard UNUSED (At $E5A0)&lt;br /&gt;
%patch $E980 [$0180W] #Molly (At $E5A0)&lt;br /&gt;
%patch $E982 [$0193W] #Horizontal scrollbar (At $E5B3)&lt;br /&gt;
%patch $E984 [$01A4W] #Vertical scrollbar (At $E5C4)&lt;br /&gt;
%patch $E986 [$01B4W] #Platform up (At $E5D4)&lt;br /&gt;
%patch $E988 [$01B4W] #Platform right (At $E5D4)&lt;br /&gt;
%patch $E98A [$01B4W] #Platform down (At $E5D4)&lt;br /&gt;
%patch $E98C [$01B4W] #Platform left (At $E5D4)&lt;br /&gt;
%patch $E98E [$04A7W] #B sprite (At $E8C7)&lt;br /&gt;
%patch $E990 [$01CEW] #Falling Platform (At $E5EE)&lt;br /&gt;
%patch $E992 [$0211W] #Only-Easy sitting Platform (At $E631)&lt;br /&gt;
%patch $E994 [$01F4W] #Easy\Medium sitting Platform (At $E614)&lt;br /&gt;
%patch $E996 [$01E1W] #Easy\Medium\Hard sitting Platform (At $E601)&lt;br /&gt;
%patch $E998 [$022EW] #Path Platform up (At $E64E)&lt;br /&gt;
%patch $E99A [$022EW] #Path Platform right (At $E64E)&lt;br /&gt;
%patch $E99C [$022EW] #Path Platform down (At $E64E)&lt;br /&gt;
%patch $E99E [$022EW] #Path Platform left (At $E64E)&lt;br /&gt;
%patch $E9A0 [$024EW] #Sneaky Platform (At $E66E)&lt;br /&gt;
%patch $E9A2 [$0275W] #Easy Bobba (At $E695)&lt;br /&gt;
%patch $E9A4 [$026BW] #Medium Bobba (At $E68B)&lt;br /&gt;
%patch $E9A6 [$0261W] #Hard Bobba (At $E681)&lt;br /&gt;
%patch $E9A8 [$0288W] #Satellite dropoff up (At $E6A8)&lt;br /&gt;
%patch $E9AA [$0288W] #Satellite dropoff right (At $E6A8)&lt;br /&gt;
%patch $E9AC [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $E9AE [$02B0W] #Easy Nospike (At $E6D0)&lt;br /&gt;
%patch $E9B0 [$02A6W] #Medium Nospike (At $E6C6)&lt;br /&gt;
%patch $E9B2 [$029CW] #Hard Nospike (At $E6BC)&lt;br /&gt;
%patch $E9B4 [$02D7W] #Easy Gik (At $E6F7)&lt;br /&gt;
%patch $E9B6 [$02CDW] #Medium Gik (At $E6ED)&lt;br /&gt;
%patch $E9B8 [$02C3W] #Hard Gik (At $E6E3)&lt;br /&gt;
%patch $E9BA [$02EAW] #Laser up (At $E70A)&lt;br /&gt;
%patch $E9BC [$02EAW] #Laser right (At $E70A)&lt;br /&gt;
%patch $E9BE [$02EAW] #Laser down (At $E70A)&lt;br /&gt;
%patch $E9C0 [$02EAW] #Laser left (At $E70A)&lt;br /&gt;
%patch $E9C2 [$0313W] #Red gem (At $E733)&lt;br /&gt;
%patch $E9C4 [$0313W] #Yellow gem (At $E733)&lt;br /&gt;
%patch $E9C6 [$0313W] #Green gem (At $E733)&lt;br /&gt;
%patch $E9C8 [$0313W] #Blue gem (At $E733)&lt;br /&gt;
%patch $E9CA [$0313W] #100 points (At $E733)&lt;br /&gt;
%patch $E9CC [$0313W] #200 points (At $E733)&lt;br /&gt;
%patch $E9CE [$0313W] #500 points (At $E733)&lt;br /&gt;
%patch $E9D0 [$0313W] #1000 points (At $E733)&lt;br /&gt;
%patch $E9D2 [$0313W] #2000 points (At $E733)&lt;br /&gt;
%patch $E9D4 [$0313W] #5000 points (At $E733)&lt;br /&gt;
%patch $E9D6 [$0313W] #1UP (At $E733)&lt;br /&gt;
%patch $E9D8 [$0313W] #Ammo (At $E733)&lt;br /&gt;
%patch $E9DA [$0304W] #IF ammo (At $E724)&lt;br /&gt;
%patch $E9DC [$034CW] #Easy Orbatrix (At $E76C)&lt;br /&gt;
%patch $E9DE [$0342W] #Medium Orbatrix (At $E762)&lt;br /&gt;
%patch $E9E0 [$0338W] #Hard Orbatrix (At $E758)&lt;br /&gt;
%patch $E9E2 [$0373W] #Easy Bipship (At $E793)&lt;br /&gt;
%patch $E9E4 [$0369W] #Medium Bipship (At $E789)&lt;br /&gt;
%patch $E9E6 [$035FW] #Hard Bipship (At $E77F)&lt;br /&gt;
%patch $E9E8 [$03A0W] #Easy Flect (At $E7C0)&lt;br /&gt;
%patch $E9EA [$0396W] #Medium Flect (At $E7B6)&lt;br /&gt;
%patch $E9EC [$038CW] #Hard Flect (At $E7AC)&lt;br /&gt;
%patch $E9EE [$03C7W] #Easy Blorb (At $E7E7)&lt;br /&gt;
%patch $E9F0 [$03BDW] #Medium Blorb (At $E7DD)&lt;br /&gt;
%patch $E9F2 [$03B3W] #Hard Blorb (At $E7D3)&lt;br /&gt;
%patch $E9F4 [$03EEW] #Easy Ceilick (At $E80E)&lt;br /&gt;
%patch $E9F6 [$03E4W] #Medium Ceilick (At $E804)&lt;br /&gt;
%patch $E9F8 [$03DAW] #Hard Ceilick (At $E7FA)&lt;br /&gt;
%patch $E9FA [$0415W] #Easy Blooguard (At $E835)&lt;br /&gt;
%patch $E9FC [$040BW] #Medium Blooguard (At $E82B)&lt;br /&gt;
%patch $E9FE [$0401W] #Hard Blooguard (At $E821)&lt;br /&gt;
%patch $EA00 [$0428W] #Grabbiter (At $E848)&lt;br /&gt;
%patch $EA02 [$0434W] #Satellite (At $E854)&lt;br /&gt;
%patch $EA04 [$04A7W] #BLANK (At $E8C7)&lt;br /&gt;
%patch $EA06 [$04A7W] #Platform path up (At $E8C7)&lt;br /&gt;
%patch $EA08 [$04A7W] #Platform path right (At $E8C7)&lt;br /&gt;
%patch $EA0A [$04A7W] #Platform path down (At $E8C7)&lt;br /&gt;
%patch $EA0C [$04A7W] #Platform path left (At $E8C7)&lt;br /&gt;
%patch $EA0E [$04A7W] #Platform path up-right (At $E8C7)&lt;br /&gt;
%patch $EA10 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA12 [$04A7W] #Platform path down-left (At $E8C7)&lt;br /&gt;
%patch $EA14 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA16 [$0440W] #Rope and grappling hook (At $E860)&lt;br /&gt;
%patch $EA18 [$0452W] #Sandwich (At $E872)&lt;br /&gt;
%patch $EA1A [$0464W] #Rocket pass (At $E884)&lt;br /&gt;
%patch $EA1C [$0484W] #Easy Babobba (At $E8A4)&lt;br /&gt;
%patch $EA1E [$047DW] #Medium Babobba (At $E89D)&lt;br /&gt;
%patch $EA20 [$0476W] #Hard Babobba (At $E896)&lt;br /&gt;
%patch $EA22 [$0496W] #Rocket on Xax (At $E8B6)&lt;br /&gt;
%patch $EA24 [$0496W] #Rocket on station (At $E8B6)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are several things to note about the initiation codes. They are far more thorough than in Keen Vorticons. The first things to note are the difficulty checks. Those sprites that have easy, normal and hard spawns have three different values. The easy pointer value is largest, with normal and hard being ten less each, since the way the code is set up has the difficulty checks first. The difficulty check is usually a ten byte string &amp;lt;tt&amp;gt;$83 $3E $75A8W $02\$03 $7D $03 $E9 $xxxxW&amp;lt;/tt&amp;gt; This means roughly &#039;If the difficulty is equal or harder than this, jump over the &#039;do nothing&#039; jump.&#039; Normal difficulty is $02, Hard is $03. The check can be understood by looking at [[Patch:Jump conditions]] and [[Patch:Game stats]].&lt;br /&gt;
&lt;br /&gt;
The second things are sprite caches. When a sprite is spawned it often (But not always!) sets a value in memory to 1. This section of memory is then scanned and sprites cached off the [[Patch:Sprite cache|sprite cache list.]] This is a five byte string &amp;lt;tt&amp;gt;$C7 $06 $CDxxW  $0001W&amp;lt;/tt&amp;gt;, where xx is different for each sprite cache. As an example the Nospike&#039;s cache is $37, the Gik&#039;s is $39 (They are next to each other in the cache list, and thus differ by 2 in memory.) A fuller explanation of this is given at [[Patch:Sprite cache]].&lt;br /&gt;
&lt;br /&gt;
The last call ($9A $xxxxxxxxRL) is the call to the actual spawning code. So for example Nospike calls $10CC0005RL.&lt;br /&gt;
&lt;br /&gt;
All jumps (&amp;lt;tt&amp;gt;$E9 $xxxxW&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;$EB $xx&amp;lt;/tt&amp;gt;.) go to the &#039;B Block&#039; code. (The B Block code is used for sprites that do nothing, however only the B Block sprite will stop platforms.) These will need to be adjusted if the code is copied somewhere else, for example to make a new sprite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 initiation codes&amp;quot;&amp;gt;&lt;br /&gt;
#Keen right initiation code&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $0415W&lt;br /&gt;
&lt;br /&gt;
#Keen left initiation code&lt;br /&gt;
%patch $E4B2 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}     $83 $C4 $06 $9A&lt;br /&gt;
         $0CA6000ARL     $C7 $06 $CD01W  $0001W  $B8 $2BF3RW $8A $16 $28 $76&lt;br /&gt;
             $8E $C0 $26 $08 $16 [$00AFW]  $E9 $03EBW&lt;br /&gt;
&lt;br /&gt;
#Map Keen initiation code&lt;br /&gt;
%patch $E4DC $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03C5W&lt;br /&gt;
&lt;br /&gt;
#Bloog initiation code&lt;br /&gt;
%patch $E502 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $03BBW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $03B1W  $57 $56 $9A {$0EFC186ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD19W  $0001W  $E9 $039EW&lt;br /&gt;
&lt;br /&gt;
#Blooglet initiation code&lt;br /&gt;
%patch $E529 $8B $46 $FA $05 [$FFF9W]  $50 $57 $56 $9A $0EFC1B60RL     $83 $C4&lt;br /&gt;
             $06 $8B $46 $FA $05 [$FFF9W]  $BB [$0004W]  $99 $F7 $FB $D1 $E2 $8B&lt;br /&gt;
             $DA $C7 $87 $CD1BW  $0001W  $83 $7E $FA $0A $7F $03 $E9 $036EW &lt;br /&gt;
             $C7 $06 $CD11W  $0001W  $E9 $0365W  $E9 $0362W&lt;br /&gt;
&lt;br /&gt;
#Cliffs initiation code&lt;br /&gt;
%patch $E565 $8B $46 $FA $05 [$FFF1W]  $50 $57 $56 $9A $0EFC0A50RL     $83 $C4&lt;br /&gt;
             $06 $E9 $034EW&lt;br /&gt;
&lt;br /&gt;
#Fleex initiation code&lt;br /&gt;
%patch $E579 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0344W  $83 $3E {$75A8W}  [$03] {$7D}&lt;br /&gt;
             $03 $E9 $033AW  $57 $56 $9A $11CF000FRL     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3DW  $0001W  $E9 $0327W  &lt;br /&gt;
&lt;br /&gt;
#Horizontal scrollbar initiation code&lt;br /&gt;
%patch $E5B3 $B8 $0001W  $50 $57 $56 $9A $16080C38RL     $83 $C4 $06 $E9 $0303W&lt;br /&gt;
&lt;br /&gt;
#Vertical scrollbar initiation code&lt;br /&gt;
%patch $E5C4 $33 $C0 $50 $57 $56 $9A $16080C38RL     $83 $C4 $06 $E9 $02F3W&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform initiation code&lt;br /&gt;
%patch $E5D4 $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $E9 $02D9W&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform initiation code&lt;br /&gt;
%patch $E5EE $57 $56 $9A {$0EFC13C2RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $02C6W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium\Hard Platform initiation code&lt;br /&gt;
%patch $E601 $57 $56 $9A {$0EFC14E6RL}     $83 $C4 $04 $C7 $06 CD23W  $0001W &lt;br /&gt;
             $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Easy\Medium Platform initiation code&lt;br /&gt;
%patch $E614 $83 $3E {$75A8W}  [$02] {$7E} $03 $E9 $02A9W  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0296W &lt;br /&gt;
&lt;br /&gt;
#Only-Easy Platform initiation code&lt;br /&gt;
%patch $E631 $83 $3E {$75A8W}  [$01] {$7E} $03 $E9 $028CW  $57 $56 $9A {$0EFC14E6RL}&lt;br /&gt;
                 $83 $C4 $04 $C7 $06 $CD23W  $0001W  $E9 $0279W&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform initiation code&lt;br /&gt;
%patch $E64E $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A $0EFC1539RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $C7 $06 $CD33W  $0001W  $E9 $0259W&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform initiation code&lt;br /&gt;
%patch $E66E $57 $56 $9A $0EFC17A4RL     $83 $C4 $04 $C7 $06 $CD23W  $0001W&lt;br /&gt;
             $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Bobba initiation code&lt;br /&gt;
%patch $E681 $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $023CW  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0232W  $57 $56 $9A $11CF015CRL     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD29W  $0001W  $E9 $021FW&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point initiation code&lt;br /&gt;
%patch $E6A8 $8B $46 $FA $05 [$FFD4W]  $50 $57 $56 $9A {$0EFC0CF3RL}     $83 $C4&lt;br /&gt;
             $06 $E9 $020BW&lt;br /&gt;
&lt;br /&gt;
#Nospike initiation code&lt;br /&gt;
%patch $E6BC $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $0201W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $01F7W  $57 $56 $9A {$10CC0005RL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD37W  $0001W  $E9 $01E4W&lt;br /&gt;
&lt;br /&gt;
#Gik initiation code&lt;br /&gt;
%patch $E6E3 $83 $3E $A8 $75 $03 $7D $03 $E9 $01DAW  $83 $3E $A8 $75 $02 $7D&lt;br /&gt;
             $03 $E9 $01D0W  $57 $56 $9A {$10CC045ARL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD25W  $0001W  $E9 $01BDW&lt;br /&gt;
&lt;br /&gt;
#Enemy gun initiation code&lt;br /&gt;
%patch $E70A $8B $46 $FA $05 [$FFCBW]  $50 $57 $56 $9A $10CC06B1RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD43W  $0001W  $E9 $01A3W&lt;br /&gt;
&lt;br /&gt;
#&#039;IF&#039; Ammo initiation code (Uses following item initiation)&lt;br /&gt;
%patch $E724 $83 $3E {$7590W}  [$05] {$7C} $03 $E9 $0199W  $C7 $46 $FA [$0044W]&lt;br /&gt;
&lt;br /&gt;
#Item initiation code&lt;br /&gt;
%patch $E733 $8B $46 $FA $05 [$FFC7W]  $50 $57 $56 $9A $0EFC0420RL     $83 $C4&lt;br /&gt;
             $06 $8B $5E $FA $D1 $E3 $8B $9F [$17D8W]  $D1 $E3 $C7 $87 $CCFFW&lt;br /&gt;
             $0001W  $E9 $016FW &lt;br /&gt;
&lt;br /&gt;
#Ceilick initiation code&lt;br /&gt;
%patch $E7FA $83 $3E {$75A8W}  [$03] {$7D} $03 $E9 $00C3W  $83 $3E {$75A8W}  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $00B9W  $57 $56 $9A {$11CF07BCRL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD3BW  $0001W  $E9 $00A6W&lt;br /&gt;
&lt;br /&gt;
#Blooguard initiation code&lt;br /&gt;
%patch $E821 $83 $3E $75A8W  [$03] {$7D} $03 $E9 $009CW  $83 $3E $75A8W  [$02] {$7D}&lt;br /&gt;
             $03 $E9 $0092W  $57 $56 $9A {$0EFC192ERL}     $83 $C4 $04 $C7 $06&lt;br /&gt;
             $CD2DW  $0001W  $E9 $007FW &lt;br /&gt;
&lt;br /&gt;
#Grabbiter initiation code&lt;br /&gt;
%patch $E848 $57 $56 $9A {$0EFC0515RL}     $83 $C4 $04 $EB $73&lt;br /&gt;
&lt;br /&gt;
#Satellite initiation code&lt;br /&gt;
%patch $E854 $57 $56 $9A {$0EFC0D73RL}     $83 $C4 $04 $EB $67&lt;br /&gt;
&lt;br /&gt;
#Rope initiation code&lt;br /&gt;
%patch $E860 $57 $56 $9A {$0EFC0FD1RL}     $83 $C4 $04 $C7 $06 $CD3FW  $0001W&lt;br /&gt;
             $EB $55&lt;br /&gt;
&lt;br /&gt;
#Sandwich initiation code&lt;br /&gt;
%patch $E872 $57 $56 $9A {$0EFC0F90RL}     $83 $C4 $04 $C7 $06 $CD41W  $0001W&lt;br /&gt;
             $EB $43&lt;br /&gt;
&lt;br /&gt;
#Rocket pass initiation code&lt;br /&gt;
%patch $E884 $57 $56 $9A {$0EFC1012RL}     $83 $C4 $04 $C7 $06 $CD45W  $0001W&lt;br /&gt;
             $EB $31&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spawn codes ==&lt;br /&gt;
&lt;br /&gt;
These are spawn codes found in Keen 6. Unlike the initiation codes, they are standalone and can be swapped about and edited as desired. Notice that usually the very last variable set in Galaxy is the [[Patch:Sprite actions|sprite action]]; in Vorticons it is the location of the sprite code and collision.&lt;br /&gt;
&lt;br /&gt;
Depending on the spawn code, different things may happen. Many spawn codes are of the same basic size and structure, simply tweaking a few basic sprite properties such as foreground and sprite type.&lt;br /&gt;
&lt;br /&gt;
The last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the sprite uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $47 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite Activity Variable|sprite activity]], &amp;lt;tt&amp;gt;$C7 $47 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Some sprites also have &amp;lt;tt&amp;gt;$C7 $47 $40 $xxxxW&amp;lt;/tt&amp;gt; set its [[Patch:Sprite strength|strength.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction and works similarly. Some sprites have a [[Patch:Probability|probability check]] to determine which way they face; this is always 50:50 (Though it needn&#039;t be.) and the code responsible for this is &amp;lt;tt&amp;gt;$9A $1CF30034RL     $3D $0080W&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 spawn codes&amp;quot;&amp;gt;&lt;br /&gt;
#Item spawn code&lt;br /&gt;
%patch $F3E0 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
             $C4 $02 $8B $1E $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
             $C7 $07 [$0005W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
             $08 $D3 $E0 $89 $47 $0C $C7 $47 $10 [$FFFFW]  $89 $77 $3E $8B $DE&lt;br /&gt;
             $D1 $E3 $8B $87 [$1A78W]  $8B $1E $66 $A9 $89 $47 $1E $89 $47 $40&lt;br /&gt;
             $8B $47 $40 $05 [$0002W]  $89 $47 $42 $B8 [$196AW]  $50 $53 $9A &lt;br /&gt;
     $08F41219RL     $83 $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Grabbiter spawn code&lt;br /&gt;
%patch $F4D5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $02 [$0001W]  $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]&lt;br /&gt;
                 $C7 $07 [$001EW]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
             $46 $08 $D3 $E0 $89 $47 $0C $83 $3E {$7594W}  [$02] {$75} $0F $B8 [$1ACCW]&lt;br /&gt;
                 $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
                                                                 $B8 [$1A90W]&lt;br /&gt;
             $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite dropoff point spawn code&lt;br /&gt;
%patch $FCB3 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
         $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 [$0002W]  $C7&lt;br /&gt;
             $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$0022W]  $8B $C6 $89&lt;br /&gt;
             $47 $30 $89 $47 $2C $8B $C7 $89 $47 $32 $89 $47 $2E $8B $46 $0A&lt;br /&gt;
             $35 [$0001W]  $40 $89 $47 $3E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $22&lt;br /&gt;
             $89 $47 $0A $8B $47 $22 $05 [$0100W]  $89 $47 $26 $8B $C7 $D3 $E0&lt;br /&gt;
             $89 $47 $24 $89 $47 $0C $8B $47 $24 $05 [$0100W]  $89 $47 $28 $B8&lt;br /&gt;
             [$1C52W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Satellite spawning code&lt;br /&gt;
%patch $FD33 $55 $8B $EC $83 $EC $02 $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0&lt;br /&gt;
             $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $06&lt;br /&gt;
             [$0000W]  $C7 $47 $20 [$0002W]  $C7 $47 $02 [$0002W]  $C7 $07 [$0021W]&lt;br /&gt;
             $8B $C6 $B1 $08 $D3 $E0 $89 $47 $0A $8B $C7 $D3 $E0 $89 $47 $0C&lt;br /&gt;
             $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $B8 [$1C8EW]  $50 $53 $9A&lt;br /&gt;
             $08F41219RL     $83 $C4 $04 $C7 $46 $FE [$0003W]  $8B $46 $FE $05&lt;br /&gt;
             [$005BW]  $8B $DF $D1 $E3 $8B $9F $8B $CA $D1 $EB $D1 $E3 $8E $06&lt;br /&gt;
             $79 $A9 $8B $D6 $D1 $E2 $03 $DA $26 $89 $07 $8B $1E $66 $A9 $8B&lt;br /&gt;
             $46 $FE $89 $47 $3E $C7 $47 $40 [$0100W]  $C7 $47 $44 [$0002W]  $5F&lt;br /&gt;
             $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sandwich spawning code&lt;br /&gt;
%patch $FF50 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001BW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D06W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Rope spawning code&lt;br /&gt;
%patch $FF91 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001CW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D24W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Passcard spawning code&lt;br /&gt;
%patch $FFD2 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
             $66 $A9 $C7 $47 $06 [$0000W]  $C7 $47 $20 [$0002W]  $C7 $07 [$001DW]&lt;br /&gt;
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
             $47 $0C $B8 [$1D42W]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
             $CB&lt;br /&gt;
&lt;br /&gt;
#Molly spawning code&lt;br /&gt;
%patch $1006B $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$000CW]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1D60W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Horizontal-Vertical Platform spawn code&lt;br /&gt;
%patch $100D6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $8B $5E $0A $83 $FB [$03] {$77} $45 $D1 $E3 $2E $FF $A7     #3 + 1 Platform types&lt;br /&gt;
          {$11A8W}  $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$FFFFW]  $EB #List location, up code&lt;br /&gt;
              $2E $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $C7 $47 $10 [$0000W]  $EB #Right code&lt;br /&gt;
              $1E $8B $1E $66 $A9 $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $EB #Down code&lt;br /&gt;
              $0E $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $C7 $47 $10 [$0000W]  $B8 #Left code&lt;br /&gt;
              [$1DD8W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5D&lt;br /&gt;
              $CB&lt;br /&gt;
&lt;br /&gt;
#Direction list&lt;br /&gt;
%patch $10168 [$1157W] #Up (At $10117)&lt;br /&gt;
%patch $1016A [$1167W] #Right (At $10127)&lt;br /&gt;
%patch $1016C [$1177W] #Down (At $10137)&lt;br /&gt;
%patch $1016E [$1187W] #Left (At $10147)&lt;br /&gt;
&lt;br /&gt;
#Dropping Platform spawn code&lt;br /&gt;
%patch $10382 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1DF6W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sitting Platforms spawn code&lt;br /&gt;
%patch $104A6 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W] &lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $3E $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E50W]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform spawn code&lt;br /&gt;
%patch $104F9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A &lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $B8 [$1E6EW]  $50 $53 $9A $08F41219RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $8B $CA $D1 $EB $D1 $E3 $8E $06 $79 $A9 $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $66 $A9 $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W] $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Sneaky Platform spawn code&lt;br /&gt;
%patch $10764 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0006W]  $C7 $47 $02 [$0002W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $3E $89 $47 $0A $8B $46 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10 [$0001W]  $C7&lt;br /&gt;
              $47 $06 [$0000W]  $B8 [$1E8CW]  $50 $53 $9A $08F41219RL     $83 $C4&lt;br /&gt;
              $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bloog spawn code&lt;br /&gt;
%patch $1082A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0007W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE00W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$1EE6W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooguard spawning code&lt;br /&gt;
%patch $108EE $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0018W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FD80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $C7 $47 $40 [$0003W]&lt;br /&gt;
                  $B8 [$1F7CW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn code&lt;br /&gt;
%patch $10B20 $55 $8B $EC $56 $8B $76 $0A $33 $C0 $50 $9A $069A1E25RL     $83&lt;br /&gt;
              $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0008W]  $C7 $47 $02 [$0001W]  $C7&lt;br /&gt;
              $47 $20 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46&lt;br /&gt;
              $08 $D3 $E0 $05 [$FF80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]&lt;br /&gt;
                  {$7D} $0B $8B $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]&lt;br /&gt;
              $89 $77 $3E $8B $C6 $BB [$0004W]  $99 $F7 $FB $8B $DA $83 $FB [$03]&lt;br /&gt;
              {$77} $50 $D1 $E3 $2E $FF $A7 [$1C25W]  $B8 [$208AW]  $50 $FF $36 $66&lt;br /&gt;
              $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8 [$2120W]  $50&lt;br /&gt;
              $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E $5D $CB $B8&lt;br /&gt;
              [$21B6W]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04 $5E&lt;br /&gt;
              $5D $CB $B8 [$224CW]  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blooglet spawn list&lt;br /&gt;
%patch $10BE5 [$1BD9W] #Red Blooglet (At $10B99)&lt;br /&gt;
%patch $10BE7 [$1BECW] #Yellow Blooglet (At $10BAC)&lt;br /&gt;
%patch $10BE9 [$1BFFW] #Blue Blooglet (At $10BBF)&lt;br /&gt;
%patch $10BEB [$1C12W] #Green Blooglet (At $10BD2)&lt;br /&gt;
&lt;br /&gt;
#Nospike spawn code&lt;br /&gt;
%patch $10CC5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0010W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2460W]  $50&lt;br /&gt;
              $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $44&lt;br /&gt;
              [$0004W]  $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Gik spawn code&lt;br /&gt;
%patch $1111A $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0011W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89&lt;br /&gt;
              $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9&lt;br /&gt;
              $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]&lt;br /&gt;
              $8B $1E $66 $A9 $C7 $47 $10 [$0001W]  $B8 [$2604W]  $50 $53 $9A&lt;br /&gt;
          $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Enemy shooter spawn code&lt;br /&gt;
%patch $11371 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0012W]  $C7 $47&lt;br /&gt;
              $02 [$0001W]  $8B $C6 $89 $47 $2C $89 $47 $30 $8B $C7 $89 $47 $32&lt;br /&gt;
              $89 $47 $2E $8B $C6 $B1 $08 $D3 $E0 $89 $47 $26 $89 $47 $22 $89&lt;br /&gt;
              $47 $0A $8B $C7 $D3 $E0 $89 $47 $28 $89 $47 $24 $89 $47 $0C $8B&lt;br /&gt;
              $46 $0A $89 $47 $3E $B8 [$26F6W]  $50 $53 $9A $08F41219RL     $83&lt;br /&gt;
              $C4 $04 $5F $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Bipship spawn code&lt;br /&gt;
%patch $117C3 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$001AW]  $C7 $47 $02 [$0001W]  $8B $46 $06 $B1 $08&lt;br /&gt;
              $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05 [$FE80W]  $89 $47 $0C&lt;br /&gt;
              $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E [$FFFFW]  $8B $1E&lt;br /&gt;
              $66 $A9 $8B $47 $0E $BA $0014W  $F7 $EA $89 $47 $16 $B8 [$2A5CW]&lt;br /&gt;
              $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Blorb spawn code&lt;br /&gt;
%patch $1239C $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0016W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05&lt;br /&gt;
              [$FE80W]  $89 $47 $0C $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B&lt;br /&gt;
              $1E $66 $A9 $C7 $47 $0E [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47&lt;br /&gt;
              $0E [$FFFFW]  $9A $1CF30034RL     $3D [$0080W]  $7D $0B $8B $1E $66&lt;br /&gt;
              $A9 $C7 $47 $10 [$0001W]  $EB $09 $8B $1E $66 $A9 $C7 $47 $10 [$FFFFW]&lt;br /&gt;
                  $8B $1E $66 $A9 $C7 $47 $06 [$0002W]  $B8 [$3164W]  $50 $53 $9A&lt;br /&gt;
              $08F41219RL     $83 $C4 $04 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ceilick spawning code&lt;br /&gt;
%patch $124AC $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E&lt;br /&gt;
              $66 $A9 $C7 $07 [$0017W]  $C7 $47 $02 [$0001W]  $C7 $47 $20 [$0000W]&lt;br /&gt;
              $C7 $47 $06 [$0000W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B&lt;br /&gt;
              $46 $08 $D3 $E0 $89 $47 $3E $89 $47 $0C $C7 $47 $10 [$0001W]  $B8&lt;br /&gt;
              [$31BEW]  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Unused sprite cache ==&lt;br /&gt;
&lt;br /&gt;
In Keen 6 there is one sprite cache not used by any sprites. This is given by &amp;lt;tt&amp;gt;$C7 $06 $CD17W  $0001W&amp;lt;/tt&amp;gt; and the following patch controls what sprites it contains (It contains none by default.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Unused sprite cache&lt;br /&gt;
%patch $3242A [$0000W] #Unused cache start&lt;br /&gt;
%patch $3247A [$0000W] #Unused cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Free space for new initiation codes ==&lt;br /&gt;
&lt;br /&gt;
These patches rearrange the default initiation codes so that space is generated for custom sprite initiation codes. There are several options, more than one of which can be used together. These patches are incompatible with any initiation patches elsewhere on this page that also affect these sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Keen initiation method ===&lt;br /&gt;
&lt;br /&gt;
This patch compacts the Left, right and map Keen initiation codes so they use the minimum amount of space. (This is possible because they all require similar code.) It frees space at $E4CE for a 3-difficulty sprite or several non-difficulty sprites. Note that the scorebox&#039;s cached graphic is marked in blue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E954 [$006DW] #Keen left (At $E488)&lt;br /&gt;
%patch $E956 [$0088W] #Map Keen (At $E4A8)&lt;br /&gt;
&lt;br /&gt;
#Compact Keen initiation codes (Frees $E4CE-$E501)&lt;br /&gt;
%patch $E488 $B8 [$0001W]  $EB $03 $B8 [$FFFFW]  $50 $57 $56 $9A {$0AA20004RL}&lt;br /&gt;
             $83 $C4 $06 $9A $0CA6000ARL     $C7 $06 $CD01W  $0001W  $EB $15&lt;br /&gt;
%patch $E4A8 $57 $56 $9A {$0CA60511RL}     $83 $C4 $04 $9A $0CA6000ARL     $C7&lt;br /&gt;
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08&lt;br /&gt;
             $16 [$00AFW]  $E9 $03F9W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Compact Platform initiations method ===&lt;br /&gt;
&lt;br /&gt;
This patch works by compacting the very similar [[Patch:Platform (Keen 6)|platform]] initiation codes (They all cache the same graphics.) This requires extensive reorganization but frees up a considerable amount of initiation space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Change pointers&lt;br /&gt;
%patch $E986 $01FAW #Platform up (At $E61A)&lt;br /&gt;
%patch $E988 $01FAW #Platform right (At $E61A)&lt;br /&gt;
%patch $E98A $01FAW #Platform down (At $E61A)&lt;br /&gt;
%patch $E98C $01FAW #Platform left (At $E61A)&lt;br /&gt;
%patch $E990 $020DW #Falling Platform (At $E62D)&lt;br /&gt;
%patch $E992 $0216W #Only-Easy sitting Platform (At $E636)&lt;br /&gt;
%patch $E994 $0220W #Easy\Medium sitting Platform (At $E640)&lt;br /&gt;
%patch $E996 $022AW #Easy\Medium\Hard sitting Platform (At $E64A)&lt;br /&gt;
%patch $E998 $0233W #Path Platform up (At $E653)&lt;br /&gt;
%patch $E99A $0233W #Path Platform right (At $E653)&lt;br /&gt;
%patch $E99C $0233W #Path Platform down (At $E653)&lt;br /&gt;
%patch $E99E $0233W #Path Platform left (At $E653)&lt;br /&gt;
%patch $E9A0 $0246W #Sneaky Platform (At $E666)&lt;br /&gt;
&lt;br /&gt;
#Compact Platform initiation codes (Frees $E5D4 - $E619)&lt;br /&gt;
%patch $E61A $8B $46 $FA $05 [$FFE5W]  $50 $57 $56 $9A {$0EFC1116RL}     $83 $C4 #HV plats&lt;br /&gt;
             $06 $EB $43&lt;br /&gt;
%patch $E62D $57 $56 $9A {$0EFC13C2RL}     $EB $37			     #Dropping plat&lt;br /&gt;
%patch $E636 $83 $3E {$75A8W}  [$01] {$7E} $0D $E9 $0287W  $83 $3E {$75A8W}  [$02] {$7E} #Sitting plats&lt;br /&gt;
             $03 $E9 $027DW  $57 $56 $9A {$0EFC14E6RL}     $EB $1A&lt;br /&gt;
%patch $E653 $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A {$0EFC1539RL}     $83 $C4 #Goplat&lt;br /&gt;
             $06 $EB $0A&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $C7 $06 $CD23W  $0001W  #Sneaky plat&lt;br /&gt;
             $E9 $024EW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This addition can be used if the [[Patch:Goplat (Keen 6)|Goplats]] are patched to only use 1 animation. (That is, without Bip riders.) This also frees up graphics and memory. The platform animation cached is highlighted in blue. (It is the same as the default here and marked in blue.) This addition can be added to the end of the above patch, replacing the last patch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
%patch $E666 $57 $56 $9A {$0EFC17A4RL}     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 #Sneaky plat&lt;br /&gt;
             $76 $8E $C0 $26 $08 $16 [$01A8W]  $E9 $0246W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t draw Goplat Bips in Keen 6&lt;br /&gt;
%patch $10738 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Game_errors&amp;diff=41224</id>
		<title>Patch:Game errors</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Game_errors&amp;diff=41224"/>
		<updated>2019-12-16T21:05:21Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add Goplat errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Game errors are problems that occur during gameplay that (usually) result in the crash of the game or the display of an error message. They are useful patch-wise in that a well constructed mod will never use these errors and they can be co-opted for other means.&lt;br /&gt;
&lt;br /&gt;
There are four basic types of error encountered in the Keen games; the first are nonfatal errors, these will display an error message, but will allow the game to continue being played. An example of this is the &#039;Unable to play background music&#039; error. The second kind are crashes, and they cause the game to crash leaving just a command prompt and (usually) a single line of text explaining technical details. These are the most common and least useful errors. An example is the &#039;too many animating tiles&#039; error. The third kind of error is a freezing error, where the game will freeze, needing to be closed. An example is the animating tile freeze. The final category of errors will not affect gameply hugely but result in &#039;gibberish&#039; or other limits on what can be done.&lt;br /&gt;
&lt;br /&gt;
This page will cover two basic functions. The first is to identify errors and how they are triggered and thus aid the modder in avoiding them. The second will be to supply patches where possible to remove or modify error code or more useful purposes. (It may be useful to see [[Patch:Text patches]]&lt;br /&gt;
&lt;br /&gt;
Since most errors occur in the Keen Galaxy series, all errors listed on this page apply &#039;&#039;only&#039;&#039; to Keens 4, 5 and 6 &#039;&#039;unless sated otherwise.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Nonfatal errors =&lt;br /&gt;
&lt;br /&gt;
As noted these are errors that show a message, but allow the player to continue, though not without consequences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Low memory ===&lt;br /&gt;
&lt;br /&gt;
This error is specific to [[Keen Dreams]] and occurs when the game is first being loaded into memory. If there is enough memory to run the game but not to ensure it will not crash, the screen will display a warning and offer the player the option to continue or quit. [[Patch:Scancodes|Pressing the &#039;C&#039; key]] will allow the game to continue, any other key will quit the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams low memory error&amp;quot;&amp;gt;&lt;br /&gt;
#Text calls&lt;br /&gt;
%patch $3A64  [$01F2W] #Text called from 1&lt;br /&gt;
%patch $3A6F  [$023BW] #Text called from 2&lt;br /&gt;
%patch $3A7A  [$0284W] #Text called from 3&lt;br /&gt;
%patch $3A85  [$02CAW] #Text called from 4&lt;br /&gt;
%patch $3A90  [$02F0W] #Text called from 5&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $23C62 &amp;quot;There is not enough memory available to play the game reliably.  You can&amp;quot; $00&lt;br /&gt;
%patch $23CAB &amp;quot;play anyway, but an out of memory condition will eventually pop up.  The&amp;quot; $00&lt;br /&gt;
%patch $23CF4 &amp;quot;correct solution is to unload some TSRs or rename your CONFIG.SYS and&amp;quot; $00&lt;br /&gt;
%patch $23D3A &amp;quot;AUTOEXEC.BAT to free up more memory.&amp;quot; $0A $00&lt;br /&gt;
%patch $23D60 &amp;quot;Do you want to (Q)uit, or (C)ontinue?&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Key to continue&lt;br /&gt;
%patch $3AAB $2E&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Disable\Ignore ====&lt;br /&gt;
&lt;br /&gt;
This patch disables the low memory check. It will &#039;&#039;not&#039;&#039; disable the game crashing if there is &#039;&#039;not&#039;&#039; enough memory, only borderline cases. (Which should not occur on modern setups at any rate.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ignore Keen Dreams low memory error&amp;quot;&amp;gt;&lt;br /&gt;
#Ignore low memory (Frees $3A45-$3AB8)&lt;br /&gt;
%patch $3A43 $EB $74&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Insufficient Memory to play music ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when after all the level and graphics have been loaded, there does not remain enough free memory to load the IMF music file selected for that level. The solution is to either use a smaller music file for the level or free up memory.&lt;br /&gt;
&lt;br /&gt;
This error is both easy to diagnose and remedy. The first step is to load the level with the error. Using the [[Patch:F10 M Cheat|memory test cheat]] (F10 + M) the amount of free memory &#039;&#039;without the music&#039;&#039; can be found. This can then be compared with the size of the IMF file needing to be played to give a good estimate of how much extra memory needs to be freed up. If a smaller music file is not desirable or cannot be found then more memory will have to be freed up. This can be constantly checked with the memory cheat.&lt;br /&gt;
&lt;br /&gt;
There are three main ways to free up memory. The first is to physically shrink the level&#039;s size; each tile removed will free up six bytes of memory, so trimming a large level can save a lot. This however is often not preferable.&lt;br /&gt;
&lt;br /&gt;
The second method is to lessen the number of different tiles in the level (This is why [[TED5]] has a function to tell you how many there are.) each background tile will save 128 bytes and each foreground tile 140 bytes of memory. Again this may not be preferable, but a large level often contains many tiles that do not really add anything to it.&lt;br /&gt;
&lt;br /&gt;
Finally certain sprites may be removed. [[Patch:Sprite cache|Each sprite caches all its graphics into memory so it can display them]] A sprite can easily take up tens of kilobytes of space, the larger and showier it is, the more memory it needs. To remove a sprite cache, &#039;&#039;all&#039;&#039; instances of the sprite must be removed from the level, not one can remain.&lt;br /&gt;
&lt;br /&gt;
A related solution is to edit the graphics, either making them smaller, or changing how many copies are placed into memory. (In theory this will make the sprite move less smoothy, but this is often hard to see.) This can halve or even quarter the amount of memory the sprite needs to run.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Insufficient memory to play music&amp;quot;&amp;gt;&lt;br /&gt;
#Insufficient memory to play music window -Keen 4:&lt;br /&gt;
%patch $8D18  $EB    #Never show (Free 8D1A-8D7F)&lt;br /&gt;
%patch $8D1B  [$0008W] #Height&lt;br /&gt;
%patch $8D1F  [$0014W] #Width&lt;br /&gt;
%patch $8D30  [$06ECW] #Text called from&lt;br /&gt;
%patch $2F55C &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
              &amp;quot;for background music!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Insufficient memory to play music window -Keen 5:&lt;br /&gt;
%patch $8C8A  $EB    #Never show (Free 8C8C-8CEE)&lt;br /&gt;
%patch $8C8D  [$0008W] #Height&lt;br /&gt;
%patch $8C91  [$0014W] #Width&lt;br /&gt;
%patch $8CA2  [$065EW] #Text called from&lt;br /&gt;
%patch $3099E &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
              &amp;quot;for background music!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Insufficient memory to play music window -Keen 6:&lt;br /&gt;
%patch $8AF2  $EB    #Never show (Free 8AF4-8B69)&lt;br /&gt;
%patch $8AF5  [$0008W] #Height&lt;br /&gt;
%patch $8AF9  [$0014W] #Width&lt;br /&gt;
%patch $8B0A  [$0656W] #Text called from&lt;br /&gt;
%patch $31386 &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
              &amp;quot;for background music!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Not enough memory to load game ===&lt;br /&gt;
&lt;br /&gt;
This error occurs quite simply when a saved game demands more memory than the game has. This usually happens if the game was saved in a different mod or different version of the same mod. In this case it is not the saved game or even necessarily the mod that is broken, there is simply an incompatibility between the conditions the game was saved in and the conditions it was loaded in. Even the smallest change can cause this. Working only with games saved in the most recent version of the game should fix this.&lt;br /&gt;
&lt;br /&gt;
If this occurs in a completed or stable mod then it points to deep and unpredictable errors that can be difficult to fix. The best strategy is simply to attempt to discover what conditions cause this to happen, starting with which level\difficulty then looking for more specific subconditions such as the presence of a certain sprite.&lt;br /&gt;
&lt;br /&gt;
There are two situations in which this error can arise and in Keen 4\6 they use different text. In Keen 5 they use the same text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Not enough memory to load game error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $5E82  [$0259W] #Text called from&lt;br /&gt;
%patch $2F0C9 &amp;quot;Not enough memory&amp;quot; $0A &amp;quot;to load game!&amp;quot; $00&lt;br /&gt;
%patch $5EFF  [$0279W] #Text called from&lt;br /&gt;
%patch $2F0E9 &amp;quot;Not enough memory&amp;quot; $0A &amp;quot;to load game!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $5E1C  [$01FEW] #Text called from 1&lt;br /&gt;
%patch $5E98  [$01FEW] #Text called from 2&lt;br /&gt;
%patch $3053E &amp;quot;Not enough memory&amp;quot; $0A &amp;quot;to load game!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $5C56  [$019DW] #Text called from&lt;br /&gt;
%patch $30ECD &amp;quot;Not enough memory&amp;quot; $0A &amp;quot;to load game!&amp;quot; $00&lt;br /&gt;
%patch $5CD3  [$01BDW] #Text called from&lt;br /&gt;
%patch $30EED &amp;quot;Not enough memory&amp;quot; $0A &amp;quot;to load game!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Insufficient Memory to load level ===&lt;br /&gt;
&lt;br /&gt;
This occurs when a level is too large to be played. It relates entirely to the size of the level. A good &#039;large&#039; size for a level is 100x100 tiles, (See also level size limits in the &#039;other limitations&#039; section.) A level that is much larger than this, in area (Height * width) will exceed the memory allocated and be unable to load. the only way to resolve this is to reduce the size of the level.&lt;br /&gt;
&lt;br /&gt;
At present the exact maximum size of the level that can be loaded is unknown. however it also affects sprites and background music, for both of these to load (In that order.) there must be enough &#039;&#039;free memory&#039;&#039; after the level has been loaded.&lt;br /&gt;
&lt;br /&gt;
If the levels do not trigger this error then the code space may be used for other things.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Insufficient memory to load level error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 Insufficient memory to load level window:&lt;br /&gt;
%patch $69EF  $EB    #Never show (Free 69F1-6A32)&lt;br /&gt;
%patch $69F8  [$0008W] #Height&lt;br /&gt;
%patch $69FC  [$0014W] #Width&lt;br /&gt;
%patch $6A0D  [$0335W] #Text called from&lt;br /&gt;
%patch $2F1A5 &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
               &amp;quot;to load level!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5 Insufficient memory to load level window:&lt;br /&gt;
%patch $69AA  $EB    #Never show (Free 69AC-69ED)&lt;br /&gt;
%patch $69B3  [$0008W] #Height&lt;br /&gt;
%patch $69B7  [$0014W] #Width&lt;br /&gt;
%patch $69C8  [$02D8W] #Text called from&lt;br /&gt;
%patch $30618 &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
               &amp;quot;to load level!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 Insufficient memory to load level window:&lt;br /&gt;
%patch $67E0  $EB    #Never show (Free 67E2-6823)&lt;br /&gt;
%patch $67E9  [$0008W] #Height&lt;br /&gt;
%patch $67ED  [$0014W] #Width&lt;br /&gt;
%patch $67FE  [$027BW] #Text called from&lt;br /&gt;
%patch $30FAB &amp;quot;Insufficient memory&amp;quot; $0A&lt;br /&gt;
               &amp;quot;to load level!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Crash errors =&lt;br /&gt;
&lt;br /&gt;
As mentioned, these errors cause the executable to crash, leaving the user at the command prompt with technical details of the error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Null pointer assignment ===&lt;br /&gt;
&lt;br /&gt;
This is a bizarre error that sometimes appears when the game is exited to DOS or when something is massively wrong. It can be overlaid with gibberish and usually only the first line appears. It appears to be inserted by the C++ compiler and thus totally unrelated to the game&#039;s actual errors.&lt;br /&gt;
&lt;br /&gt;
It is likely this error only appears when something corrupts the game to such an extent that it fails completely. (Its appearance when the game is quit may be due to the game not being able to shut itself down correctly.) There is little that can be done to mitigate this error.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Null pointer assignment text&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 1:&lt;br /&gt;
%patch $1307D &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $0&lt;br /&gt;
&lt;br /&gt;
#Keen 2:&lt;br /&gt;
%patch $177AD &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $0&lt;br /&gt;
&lt;br /&gt;
#Keen 3:&lt;br /&gt;
%patch $1984D &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $0&lt;br /&gt;
&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $2EE9F &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $0&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $3036F &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $0&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $30D5F &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $0&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $23A9F &amp;quot;Null pointer assignment&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Divide error&amp;quot; $0D $0A&lt;br /&gt;
              &amp;quot;Abnormal program termination&amp;quot; $0D $0A $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Missing a text file ===&lt;br /&gt;
&lt;br /&gt;
This error is displayed when a vital external file is missing from the game directory. It is mostly encountered in [[Keen 1]] where all the game texts are external but can also appear when things like the Finale file are absent. This can happen if the filename the game searches for has been altered or if the file itself is missing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Missing text file error texts &amp;quot;&amp;gt;&lt;br /&gt;
#Keen 1:&lt;br /&gt;
%patch $B37B  [$359DW] #Text called from&lt;br /&gt;
%patch $165ED &amp;quot;Missing a text file!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 2:&lt;br /&gt;
%patch $AA94  [$3578W] #Text called from&lt;br /&gt;
%patch $1ACF8 &amp;quot;Missing a text file!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 3:&lt;br /&gt;
%patch $BDEE  [$37C8W] #Text called from&lt;br /&gt;
%patch $1CFE8 &amp;quot;Missing a text file!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disk error ===&lt;br /&gt;
&lt;br /&gt;
This error occurs while starting the game when the game cannot access one of the files it needs. This may be because the disk drive has been disconnected, is read only or broken. This error was much more common in the days of floppy disks and is not expected to occur on modern systems.&lt;br /&gt;
&lt;br /&gt;
The first error is the initial message which allows the player to attempt to correct the problem. The second error is displayed after the first if problems continue or if &#039;abort&#039; has been selected. The third error indicates that the game is aborting its attempt and will shut down.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Disk error texts&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 1:&lt;br /&gt;
%patch $7B3E  [$2AF4W] $EB $19 #Text called from&lt;br /&gt;
%patch $15B44 &amp;quot;DISK ERROR!  I am having some problems&amp;quot; $0A&lt;br /&gt;
%patch $15B6C &amp;quot;accessing the disk drive. Put the disk&amp;quot; $0A&lt;br /&gt;
%patch $15B94 &amp;quot;back in (if it&#039;s out) and press a key&amp;quot; $0A&lt;br /&gt;
%patch $15BBB &amp;quot;to retry, or ESC to abort:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $7B94  [$2B86W] $EB $07 #Text called from&lt;br /&gt;
%patch $15BD6 &amp;quot;DISK ERROR!  I am having some problems&amp;quot; $0A&lt;br /&gt;
%patch $15BFE &amp;quot;accessing the disk drive.&amp;quot; $0A $00&lt;br /&gt;
&lt;br /&gt;
%patch $7BD7  [$2BC9W] #Text called from&lt;br /&gt;
%patch $15C19 &amp;quot;Aborting.&amp;quot; $0A $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 2:&lt;br /&gt;
%patch $7F4E  [$2DD3W] $EB $19 #Text called from&lt;br /&gt;
%patch $1A553 &amp;quot;DISK ERROR!  I am having some problems&amp;quot; $0A&lt;br /&gt;
%patch $1A57B &amp;quot;accessing the disk drive. Put the disk&amp;quot; $0A&lt;br /&gt;
%patch $1A5A3 &amp;quot;back in (if it&#039;s out) and press a key&amp;quot; $0A&lt;br /&gt;
%patch $1A5CA &amp;quot;to retry, or ESC to abort:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $7FA4  [$2E65W] $EB $07 #Text called from&lt;br /&gt;
%patch $1A5E5 &amp;quot;DISK ERROR!  I am having some problems&amp;quot; $0A&lt;br /&gt;
%patch $1A60D &amp;quot;accessing the disk drive.&amp;quot; $0A $00&lt;br /&gt;
&lt;br /&gt;
%patch $7FE7  [$2EA8W] #Text called from&lt;br /&gt;
%patch $1A628 &amp;quot;Aborting.&amp;quot; $0A $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 3:&lt;br /&gt;
%patch $8857  [$2E75W] $EB $16 #Text called from&lt;br /&gt;
%patch $1C695 &amp;quot;DISK ERROR!  I am having some problems&amp;quot; $0A&lt;br /&gt;
%patch $1C6BD &amp;quot;accessing the disk drive. Put the disk&amp;quot; $0A&lt;br /&gt;
%patch $1C6E5 &amp;quot;back in (if it&#039;s out) and press a key&amp;quot; $0A&lt;br /&gt;
%patch $1C70C &amp;quot;to retry, or ESC to abort:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $88A9  [$2F07W] $EB $06 #Text called from&lt;br /&gt;
%patch $1C727 &amp;quot;DISK ERROR!  I am having some problems&amp;quot; $0A&lt;br /&gt;
%patch $1C74F &amp;quot;accessing the disk drive.&amp;quot; $0A $00&lt;br /&gt;
&lt;br /&gt;
%patch $88EE  [$2F4AW] #Text called from&lt;br /&gt;
%patch $1C76A &amp;quot;Aborting.&amp;quot; $0A $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t open files errors ===&lt;br /&gt;
&lt;br /&gt;
These errors occur when a vital file cannot be opened. There are three possible causes for this; firstly the file&#039;s [[Patch:Files and filenames|filename]] has been overwritten by a patch, secondly the file itself may have been deleted or renamed and thirdly the file may be restricted by the operating system. (Having read only properties for example.)&lt;br /&gt;
&lt;br /&gt;
If the last two causes can be ruled out (They are easy to check.) then removing recent patches to test for conflict is the best way to test for the problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Can&#039;t open files errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $3D47  [$018EW] #Text called from&lt;br /&gt;
%patch $2EFFE &amp;quot;Can&#039;t open EGAGRAPH.CK4!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $13363  [$3AEFW] #Text called from&lt;br /&gt;
%patch $3295F &amp;quot;Can&#039;t open GAMEMAPS.CK4!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $133A7  [$3B12W] #Text called from&lt;br /&gt;
%patch $32982 &amp;quot;Can&#039;t open AUDIO.CK4!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $3D41  [$0147W] #Text called from&lt;br /&gt;
%patch $30487 &amp;quot;Can&#039;t open EGAGRAPH.CK5!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $14300  [$3245W] #Text called from&lt;br /&gt;
%patch $33585 &amp;quot;Can&#039;t open GAMEMAPS.CK5!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $14344  [$3268W] #Text called from&lt;br /&gt;
%patch $335A8 &amp;quot;Can&#039;t open AUDIO.CK5!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $12E94  [$34EFW] #Text called from&lt;br /&gt;
%patch $3421F &amp;quot;Can&#039;t open GAMEMAPS.CK6!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $12ED8  [$3512W] #Text called from&lt;br /&gt;
%patch $34242 &amp;quot;Can&#039;t open AUDIO.CK6!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $439D  [$03C0W] #Text called from&lt;br /&gt;
%patch $23E30 &amp;quot;Can&#039;t load TITLE SCREEN&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $B983  [$283AW] #Text called from&lt;br /&gt;
%patch $262AA &amp;quot;Can&#039;t open KDREAMS.MAP!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $B9C1  [$285EW] #Text called from&lt;br /&gt;
%patch $262CE &amp;quot;Can&#039;t open KDREAMS.AUD!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:EGAGRAPH|EGAGRAPH errors]] ===&lt;br /&gt;
&lt;br /&gt;
In [[Keen 4]] the game contains code both to check for &amp;lt;tt&amp;gt;EGAGRAPH&amp;lt;/tt&amp;gt; and if it is not found to create it from two files, &amp;lt;tt&amp;gt;EGA1.CK4&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;EGA2.CK4&amp;lt;/tt&amp;gt;. [[Keen 5]] has the code but it is defective, and [[Keen 6]] does not have this ability at all. The only error that should appear is the &amp;quot;Can&#039;t open EGAGRAPH.CK4!&amp;quot; if the &amp;lt;tt&amp;gt;EGAGRAPH&amp;lt;/tt&amp;gt; file is absent or its name has been patched and a matching file is not present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Check for EGAGRAPH&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $3CD4  [$0112W] #Check for this file (EGAGRAPH) if not found...&lt;br /&gt;
%patch $3CF7  [$011FW] #Combining text&lt;br /&gt;
%patch $3D03  [$015DW] #Prepare to write data to this file (EGAGRAPH)&lt;br /&gt;
%patch $3D07  [$0154W] #Check for this file (EGA1)&lt;br /&gt;
%patch $3D18  [$016AW] #Can&#039;t rename file&lt;br /&gt;
%patch $3D34  [$0181W] #Rename EGA1 data to this (EGAGRAPH)&lt;br /&gt;
%patch $3D47  [$018EW] #Can&#039;t open EGAGRAPH to dump data&lt;br /&gt;
%patch $3D74  [$01A7W] #Check for this file (EGA2)&lt;br /&gt;
%patch $3D87  [$01B0W] #Can&#039;t find EGA2&lt;br /&gt;
%patch $3E6A  [$01C5W] #Rename this file (EGA2)&lt;br /&gt;
&lt;br /&gt;
%patch $2EF82 &amp;quot;EGAGRAPH.CK4&amp;quot; $00	#Check for this file&lt;br /&gt;
%patch $2EF8F &amp;quot;Combining EGA1.CK4 and EGA2.CK4 into EGAGRAPH.CK4...&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $2EFCD &amp;quot;EGAGRAPH.CK4&amp;quot; $00	#Create this file&lt;br /&gt;
%patch $2EFC4 &amp;quot;EGA1.CK4&amp;quot; $00		#Check, read from this file...&lt;br /&gt;
%patch $2EFDA &amp;quot;Can&#039;t rename EGA1.CK4!&amp;quot; $00&lt;br /&gt;
%patch $2EFF1 &amp;quot;EGAGRAPH.CK4&amp;quot; $00	#...rename to this file&lt;br /&gt;
%patch $2EFFE &amp;quot;Can&#039;t open EGAGRAPH.CK4!&amp;quot; $00&lt;br /&gt;
%patch $2F017 &amp;quot;EGA2.CK4&amp;quot; $00		#Check, read from this file...&lt;br /&gt;
%patch $2F020 &amp;quot;Can&#039;t find EGA2.CK4!&amp;quot; $00&lt;br /&gt;
%patch $2F035 &amp;quot;EGA2.CK4&amp;quot; $00		#Rename this file?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $3CCE  [$00E5W] #Check for this file (EGAGRAPH) if not found...&lt;br /&gt;
%patch $3CF1  [$00F2W] #Combining text&lt;br /&gt;
%patch $3D01  [$0127W] #Check for this file (EGA1)&lt;br /&gt;
%patch $3D12  [$0130W] #Can&#039;t rename file&lt;br /&gt;
%patch $3D41  [$0147W] #Can&#039;t open EGAGRAPH to dump data&lt;br /&gt;
%patch $3D6E  [$0160W] #Check for this file (EGA2)&lt;br /&gt;
%patch $3D81  [$0169W] #Can&#039;t find EGA2&lt;br /&gt;
&lt;br /&gt;
%patch $30425 &amp;quot;EGAGRAPH.CK5&amp;quot; $00	#Check for this file&lt;br /&gt;
%patch $30432 &amp;quot;Combining EGA1.CK5 and EGA2.CK5 into EGAGRAPH.CK5...&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $30467 &amp;quot;EGA1.CK5&amp;quot; $00		#Check, read from this file...&lt;br /&gt;
%patch $30470 &amp;quot;Can&#039;t rename EGA1.CK5!&amp;quot; $00&lt;br /&gt;
%patch $30487 &amp;quot;Can&#039;t open EGAGRAPH.CK5!&amp;quot; $00&lt;br /&gt;
%patch $304A0 &amp;quot;EGA2.CK5&amp;quot; $00		#Check, read from this file...&lt;br /&gt;
%patch $304A9 &amp;quot;Can&#039;t find EGA2.CK5!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RF_MarkTileGraphics errors ===&lt;br /&gt;
&lt;br /&gt;
All errors involving &#039;RF_MarkTileGraphics&#039; are errors with tile animation. They are patch problems that result when a modder produces a corrupt &amp;lt;tt&amp;gt;[[Patch:Tileinfo|TILEINFO.CKx]]&amp;lt;/tt&amp;gt; file. This error is the best result as it provides information about both the problem and the tile responsible. The worst case scenario is that the game freezes.&lt;br /&gt;
&lt;br /&gt;
There are three types of error and six possible errors (Five in [[Keen 5]]); three for background and three for foreground tiles. Each type of error is as follows. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Too many unique animating tiles:&#039;&#039; Animating tiles require extra memory on top of what is needed for their graphics. When too many different types of animated tile are in a level then this memory will be overrun and the level will not be playable. The solution is to remove some kinds of animating tile from the level. (&#039;&#039;All&#039;&#039; instances of a tile must be removed, which is why [[TED5]] has a feature to count the number of different tiles in a level, if even one tile of type x remains, type x will still be loaded into memory.)&lt;br /&gt;
&lt;br /&gt;
If this error occurs &#039;&#039;during&#039;&#039; play, not at the start then the problem is with how &#039;&#039;many&#039;&#039; animating tiles are appearing at once; no more than 24 animating tiles of any kind can appear in play (Onscreen or within 2 tiles of the screen borders) at one time.&lt;br /&gt;
&lt;br /&gt;
Note that in Keen 5 the same text is used for both the background and foreground error, in the other Galaxy games different texts are used.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Anim of 0:&#039;&#039; This occurs when a tile animates to tile 0. Since tile 0 is a special case (No tile) this cannot happen. It is the easiest error to fix as the offending tile will be at the top of the tileset, within the first 128 tiles. The offending tile must be made to animate to another tile or not animate at all. This error is rare as it requires a modder to deliberately set tile 0 as an animation target.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Unending animation:&#039;&#039; This occurs when a tile animation is not a nice neat loop. It is rather common as there are many ways a modder may unintentionally cause it. The first possibility is that a tile that animates (Has an animation delay) does not have anything to animate &#039;&#039;to&#039;&#039;, this can happen if part of an animation loop is removed or not set in the first place.&lt;br /&gt;
&lt;br /&gt;
The second way this may happen is if two tiles are set to animate to the same target &#039;&#039;and&#039;&#039; both &#039;start&#039; tiles are present in a level. Like two cars trying to park in the same space, they clash.&lt;br /&gt;
&lt;br /&gt;
If a modder is conscientious they will have kept a record of what they have done before the error so that they have a good idea as to what tile may be the problem. If not there may be some guesswork. The tile error might well give a tile number, but this is hard to pin down as it is a &#039;chunk number&#039; and needs a certain value removed from it to give the actual tile number. In desperate situations it is possible to back up levels and delete the newest parts of them, stopping when the error stops/ (The tile can then be identified, fixed and the backed up levels restored.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;&#039;RF_MarkTileGraphics&#039; errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $168F9  [$4099W] #Text called from&lt;br /&gt;
%patch $32F09 &amp;quot;RF_MarkTileGraphics: Background anim of 0:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16969  [$40C4W] #Text called from&lt;br /&gt;
%patch $32F34 &amp;quot;RF_MarkTileGraphics: Too many unique animated tiles!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $169F5  [$40F9W] #Text called from&lt;br /&gt;
%patch $32F69 &amp;quot;RF_MarkTileGraphics: Unending background animation:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16AC1  [$412DW] #Text called from&lt;br /&gt;
%patch $32F9D &amp;quot;RF_MarkTileGraphics: Foreground anim of 0:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16B3A  [$4158W] #Text called from&lt;br /&gt;
%patch $32FC8 &amp;quot;RF_MarkTileGraphics: Too many unique animated tiles!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16BC6  [$418DW] #Text called from&lt;br /&gt;
%patch $32FFD &amp;quot;RF_MarkTileGraphics: Unending foreground animation:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $17896  [$3750W] #Text called from&lt;br /&gt;
%patch $33A90 &amp;quot;RF_MarkTileGraphics: Background anim of 0:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $17906  [$377BW] #Text called from&lt;br /&gt;
%patch $33ABB &amp;quot;RF_MarkTileGraphics: Too many unique animated tiles!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $17992  [$37B0W] #Text called from&lt;br /&gt;
%patch $33AF0 &amp;quot;RF_MarkTileGraphics: Unending background animation:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $17A5E  [$37E4W] #Text called from&lt;br /&gt;
%patch $33B24 &amp;quot;RF_MarkTileGraphics: Foreground anim of 0:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $17B63  [$380FW] #Text called from&lt;br /&gt;
%patch $33B4F &amp;quot;RF_MarkTileGraphics: Unending foreground animation:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $16468  [$3A99W] #Text called from&lt;br /&gt;
%patch $347C9 &amp;quot;RF_MarkTileGraphics: Background anim of 0:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $164DC  [$3AC4W] #Text called from&lt;br /&gt;
%patch $347F4 &amp;quot;RF_MarkTileGraphics: Too many unique animated tiles!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $165B7  [$3AF9W] #Text called from&lt;br /&gt;
%patch $34829 &amp;quot;RF_MarkTileGraphics: Unending background animation:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16686  [$3B2DW] #Text called from&lt;br /&gt;
%patch $3485D &amp;quot;RF_MarkTileGraphics: Foreground anim of 0:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16703  [$3B58W] #Text called from&lt;br /&gt;
%patch $34888 &amp;quot;RF_MarkTileGraphics: Too many unique animated tiles!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $167E3  [$3B8DW] #Text called from&lt;br /&gt;
%patch $348BD &amp;quot;RF_MarkTileGraphics: Unending foreground animation:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $E7D6  [$4120W] #Text called from 1&lt;br /&gt;
%patch $E903  [$4120W] #Text called from 2&lt;br /&gt;
%patch $27B90 &amp;quot;MarkTileGraphics: Unending animation!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RF_CheckForAnimTile error ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when too many animated tiles are shown onscreen at once. There is only a limited number of tile frames available for animation and this can be exhausted by many animated tiles being onscreen, an animation loop having lots of different tiles in it, or both.&lt;br /&gt;
&lt;br /&gt;
The most common cause is too many tiles, removing any large blocks of animating tiles from the level will fix this.&lt;br /&gt;
&lt;br /&gt;
There are two errors, one for background and on for foreground tiles. both use the same text, and in [[Keen 5]] and [[Keen Dreams]] the texts were combined for efficiency.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;RF_CheckForAnimTile error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $16CA1  [$41C1W] #Text called from&lt;br /&gt;
%patch $33031 &amp;quot;RF_CheckForAnimTile: No free spots in tilearray!&amp;quot; $00&lt;br /&gt;
%patch $16D3A  [$41F2W] #Text called from&lt;br /&gt;
%patch $33062 &amp;quot;RF_CheckForAnimTile: No free spots in tilearray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $17C3E  [$3843W] #Text called from&lt;br /&gt;
%patch $33B83 &amp;quot;RF_CheckForAnimTile: No free spots in tilearray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $168D5  [$3BC1W] #Text called from&lt;br /&gt;
%patch $348F1 &amp;quot;RF_CheckForAnimTile: No free spots in tilearray!&amp;quot; $00&lt;br /&gt;
%patch $16974  [$3BF2W] #Text called from&lt;br /&gt;
%patch $34922 &amp;quot;RF_CheckForAnimTile: No free spots in tilearray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $E9A2  [$4146W] #Text called from&lt;br /&gt;
%patch $27BB6 &amp;quot;RF_CheckForAnimTile: No free spots in tilearray!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RFL_AnimateTiles errors ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when an animated tile is set to animate to a tile that is not in fact in the tileset. Using standard modding tools this should be impossible but it may occur if data becomes corrupted or a patch interferes with things. The error can be checked for in three ways; by backing up levels and removing layers, then individual sections of tiles to see what the &#039;bad tile&#039; is; by removing recent patches from the patchfile or by using an earlier version of the tile properties to see if that file was corrupted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;RFL_AnimateTiles errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $16F39  [$4223W] #Text called from&lt;br /&gt;
%patch $33093 &amp;quot;RFL_AnimateTiles: Out of bounds!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $17ED6  [$3874W] #Text called from&lt;br /&gt;
%patch $33BB4 &amp;quot;RFL_AnimateTiles: Out of bounds!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $16BA9  [$3C23W] #Text called from&lt;br /&gt;
%patch $34953 &amp;quot;RFL_AnimateTiles: Out of bounds!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams :&lt;br /&gt;
%patch $EBE6  [$4177W] #Text called from&lt;br /&gt;
%patch $27BE7 &amp;quot;RFL_AnimateTiles: Out of bounds!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MM_ClearBlock errors ===&lt;br /&gt;
&lt;br /&gt;
This error is triggered when a level contains too many unique tiles to fit into memory. This includes regular &#039;&#039;and&#039;&#039; animated tiles, all of which must be cached before the level loads. The only way to avoid this error is to edit the level to not contain so many unique foreground or background tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen &amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $159FC [$3FA1W] #Text called from&lt;br /&gt;
%patch $32E11 &amp;quot;MM_ClearBlock: No purgable blocks!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $16999 [$3659W] #Text called from&lt;br /&gt;
%patch $33999 &amp;quot;MM_ClearBlock: No purgable blocks!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $1552D [$39A1W] #Text called from&lt;br /&gt;
%patch $346D1 &amp;quot;MM_ClearBlock: No purgable blocks!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WallDebug errors ===&lt;br /&gt;
&lt;br /&gt;
These are [[Patch:Tileinfo|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 [[Patch:F10 Y Cheat|Wall Debug cheat (F10 + Y)]] is used in a level containing a problematic tile. The number of the &#039;&#039;first&#039;&#039; tile that has this problem will be given with the error, allowing quick identification and fixing.&lt;br /&gt;
&lt;br /&gt;
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 &#039;scrambling error&#039; 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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;WallDebug errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $72EC  [$04ACW] #Text called from&lt;br /&gt;
%patch $2F31C &amp;quot;WallDebug: East wall other than 1:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $7350  [$04CFW] #Text called from&lt;br /&gt;
%patch $2F33F &amp;quot;WallDebug: West wall other than 1:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $72A1  [$0428W] #Text called from&lt;br /&gt;
%patch $30768 &amp;quot;WallDebug: East wall other than 1:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $7305  [$044BW] #Text called from&lt;br /&gt;
%patch $3078B &amp;quot;WallDebug: West wall other than 1:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $70BB  [$0424W] #Text called from&lt;br /&gt;
%patch $31154 &amp;quot;WallDebug: East wall other than 1:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $711F  [$0447W] #Text called from&lt;br /&gt;
%patch $31177 &amp;quot;WallDebug: West wall other than 1:&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FullClipToWalls ===&lt;br /&gt;
&lt;br /&gt;
This is an issue with a sprite&#039;s [[Patch:Sprite clipping and foreground|clipping]]; specifically it is trying to use a clipping of 2 (Full clipping to walls\slopes) when it can&#039;t. Most sprites use a clipping of 1, allowing them to move up slopes but not into walls. Some sprites however like the [[Patch:Dopefish|Dopefish]] need to avoid sloped tiles altogether and thus use a value of 2. But this has very limited usability.&lt;br /&gt;
&lt;br /&gt;
This error usually occurs when an &#039;ordinary&#039; sprite is given the wrong clipping but can also occur if something goes severely wrong and a sprite gets muddled. To identify the error make a test level and add sprites in one-by-one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;FullClipToWalls errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $A7BC  [$08D8W] #Text called from&lt;br /&gt;
%patch $2F748 &amp;quot;FullClipToWalls: Bad obclass&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $9AE4  [$07C4W] #Text called from&lt;br /&gt;
%patch $30B04 &amp;quot;FullClipToWalls: Bad obclass&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $99C9  [$07BCW] #Text called from&lt;br /&gt;
%patch $314EC &amp;quot;FullClipToWalls: Bad obclass&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Object with bad state ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when a sprite&#039;s &#039;state&#039; doesn&#039;t make sense. This can be triggered by a number of things but usually means that a patch has become garbled and caused a sprite to have values for things that it shouldn&#039;t. To identify the error make a test level and add sprites in one-by-one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Object with bad state errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $B6C6  [$08F5W] #Text called from&lt;br /&gt;
%patch $2F765 &amp;quot;Object with bad state!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $A9FD  [$07E1W] #Text called from&lt;br /&gt;
%patch $30B21 &amp;quot;Object with bad state!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $A8E2  [$07D9W] #Text called from&lt;br /&gt;
%patch $31509 &amp;quot;Object with bad state!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tried to load a non existent map ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when the game tries to load a level that doesn&#039;t exist. While it is possible for a patch to corrupt the [[Patch:MAPHEAD|map header data]] this is not common and instead it usually involves an error by a level editing program or the patches required to play custom maps. See [[Patch:GAMEMAPS]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Tried to load a non existent map errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $13D4F  [$3B4CW] #Text called from&lt;br /&gt;
%patch $329BC &amp;quot;CA_CacheMap: Tried to load a non existent map!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $14CEC  [$32A2W] #Text called from&lt;br /&gt;
%patch $335E2 &amp;quot;CA_CacheMap: Tried to load a non existent map!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $13880  [$354CW] #Text called from&lt;br /&gt;
%patch $3427C &amp;quot;CA_CacheMap: Tried to load a non existent map!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $C2BE  [$289AW] #Text called from&lt;br /&gt;
%patch $2630A &amp;quot;CA_CacheMap: Tried to load a non existant map!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Map is too tall ===&lt;br /&gt;
&lt;br /&gt;
This error can occur under two circumstances. The first, which is very rare, is when the map is literally too tall, over 200 tiles high. Such a level will already be suffering from the &#039;level size limit&#039; bug in the &#039;other limits&#039; section.&lt;br /&gt;
&lt;br /&gt;
However the most common appearance of this level is an accidental triggering when using [[TED5]] as a level editor. TED5 can compress levels (Carmackize them) and Keen Galaxy games require this. If the levels are saved but &#039;&#039;not&#039;&#039; compressed (Which takes time unless [[Instant Carma]] is used.) then the game sees nothing but gibberish and crashes with this error. Checking that levels are carmackized is the first step to solving this.&lt;br /&gt;
&lt;br /&gt;
Similar situation will also cause this bug, if level data has become corrupt, if the &amp;lt;tt&amp;gt;MAPHEAD.CKx&amp;lt;/tt&amp;gt; file is corrupt or not the right one for the levels or not patched correctly. Such situations can be aggravating and underlie the need to backup regularly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Map too tall error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $16744  [$4080W] #Text called from&lt;br /&gt;
%patch $32EF0 &amp;quot;RF_NewMap: Map too tall!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $176E1  [$3737W] #Text called from&lt;br /&gt;
%patch $33A77 &amp;quot;RF_NewMap: Map too tall!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $16275  [$3A80W] #Text called from&lt;br /&gt;
%patch $347B0 &amp;quot;RF_NewMap: Map too tall!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Maximum map height limit ====&lt;br /&gt;
&lt;br /&gt;
This patch alters the maximum map height. For Keen 4 and 6 this is 200 tiles, for Keen 5 however it is 250 tiles. Increasing the limit will cause problems; for Keen 4 and 6 maps taller than 200 tiles cause &#039;flicker errors&#039; where lines 200-204 start to overlap with the top rows of the level. (The rest of the level is playable.) Levels taller than 250 tiles confuse Keen&#039;s location and will result in &#039;insta-wins&#039; when the player enters the level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Map height limit&amp;quot;&amp;gt;&lt;br /&gt;
#Maximum map height -Keen 4&lt;br /&gt;
%patch $1673F [$00C8W]&lt;br /&gt;
&lt;br /&gt;
#Maximum map height -Keen 5&lt;br /&gt;
%patch $176DC [$00FAW]&lt;br /&gt;
&lt;br /&gt;
#Maximum map height -Keen 6&lt;br /&gt;
%patch $16270 [$00C8W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Insufficient memory to load map level ===&lt;br /&gt;
&lt;br /&gt;
This error is identical in nature to the &#039;unable to load level&#039; error, except that in this case it is the map level that cannot be loaded. Since a lot of important things are also done at this point, the game cannot simply throw up an error, but must crash. The solutions are the same as given in the level error section above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $6A3B  [$0358W] #Text called from&lt;br /&gt;
%patch $2F1C8 &amp;quot;GameLoop: Insufficient memory to load world map!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $69F6  [$02FBW] #Text called from&lt;br /&gt;
%patch $3063B &amp;quot;GameLoop: Insufficient memory to load world map!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $682C  [$029EW] #Text called from&lt;br /&gt;
%patch $30FCE &amp;quot;GameLoop: Insufficient memory to load world map!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RF_SetScrollBlock errors ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when the modder has placed too many [[Patch:Scrollbars|scrollbars]] in a level. It should always happen when first entering a level. The error will explain which type of scrollbar is at fault, vertical or horizontal. The only solution to this is to remove scrollbars from the level until the error stops occurring.&lt;br /&gt;
&lt;br /&gt;
If all scrollbars are removed yet the error recurs then it is a patch error and the entire patchfile must be checked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Scroll bar errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $1706B  [$4244W] #Text called from&lt;br /&gt;
%patch $330B4 &amp;quot;RF_SetScrollBlock: Too many horizontal scroll blocks&amp;quot; $00&lt;br /&gt;
%patch $17094  [$4279W] #Text called from&lt;br /&gt;
%patch $330E9 &amp;quot;RF_SetScrollBlock: Too many vertical scroll blocks&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $18008  [$3895W] #Text called from&lt;br /&gt;
%patch $33BD5 &amp;quot;RF_SetScrollBlock: Too many horizontal scroll blocks&amp;quot; $00&lt;br /&gt;
%patch $18031  [$38CAW] #Text called from&lt;br /&gt;
%patch $33C0A &amp;quot;RF_SetScrollBlock: Too many vertical scroll blocks&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $16CDB  [$3C44W] #Text called from&lt;br /&gt;
%patch $34974 &amp;quot;RF_SetScrollBlock: Too many horizontal scroll blocks&amp;quot; $00&lt;br /&gt;
%patch $16D04  [$3C79W] #Text called from&lt;br /&gt;
%patch $349A9 &amp;quot;RF_SetScrollBlock: Too many vertical scroll blocks&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RFL_NewRow errors ===&lt;br /&gt;
&lt;br /&gt;
This error appears to relate to scroll blocks and may occur if a scroll block has been corrupted and is neither vertical or horizontal. However, this is only conjecture.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;RFL_NewRow errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $17251  [$42ACW] #Text called from&lt;br /&gt;
%patch $3311C &amp;quot;RFL_NewRow: Bad dir!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $181EE  [$38FDW] #Text called from&lt;br /&gt;
%patch $33C3D &amp;quot;RFL_NewRow: Bad dir!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $16EC1  [$3CACW] #Text called from&lt;br /&gt;
%patch $349DC &amp;quot;RFL_NewRow: Bad dir!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams :&lt;br /&gt;
%patch $EE0C  [$4198W] #Text called from&lt;br /&gt;
%patch $27C08 &amp;quot;RFL_NewRow: Bad dir!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== No free spots in Objarray ===&lt;br /&gt;
&lt;br /&gt;
This error occurs at the start of a level when there are too many objects (Enemies, keys, etc) in a level. The &#039;object array&#039; can only hold 100 different objects, that is things in layer 3 of the level (Not tiles of any kind.) and this is why [[TED5]] has a feature to show how many objects exist in the level.&lt;br /&gt;
&lt;br /&gt;
The object array is a specific amount of memory set aside for any object placed in the level that stores its properties. All objects thus use the same amount, one entry, in this array. Therefore the only way to rectify this error is to remove objects from the level, starting with the least significant. (Such at point objects, but not point tiles.)&lt;br /&gt;
&lt;br /&gt;
This error is included in [[Keen Dreams]], but is called a &#039;sprite array&#039; error, see the below section. In Keen Vorticons the level will simply crash on loading. The limit in Vorticons is 76 sprites or fewer per level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Object array errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $89FD  [$067FW] #Text called from&lt;br /&gt;
%patch $2F4EF &amp;quot;GetNewObj: No free spots in objarray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $8979  [$05F1W] #Text called from&lt;br /&gt;
%patch $30931 &amp;quot;GetNewObj: No free spots in objarray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $87E1  [$05E9W] #Text called from&lt;br /&gt;
%patch $31319 &amp;quot;GetNewObj: No free spots in objarray!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t crash, just don&#039;t spawn sprites ====&lt;br /&gt;
&lt;br /&gt;
These patches avoid crashing the game and notifying the player. Instead the game simply doesn&#039;t spawn the extra sprites. However since this occurs at the start of a level it will mean that &#039;&#039;anything&#039;&#039; that creates a new sprite will cause a &#039;sprite array&#039; crash unless that is also patched out. (See section below.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If&#039;&#039; the sprite array error is also dealt with the level will still play oddly, Keen will be unable to shoot and points will not show when items are obtained. This will happen until enough objects have been destroyed to free up some array space. The level will also be missing the &#039;extra&#039; objects, those at the bottom and right corner of the level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Remove object array errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $89FC $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $8978 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $87E0 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== No free spots in Sprite array ===&lt;br /&gt;
&lt;br /&gt;
This error occurs for the same reasons as the error above; there is no space in the sprite (object) array for new sprites to be placed. However it differs in that it occurs in the middle of gameplay, not when the level is loaded. In other words it occurs when existing sprites that fit into the sprite array produce a new sprite that can&#039;t.&lt;br /&gt;
&lt;br /&gt;
This will happen if any sprite shoots a projectile that isn&#039;t destroyed or shoots fast enough that about 60 new sprites can be onscreen at once or if a marginal level produces just one or two extra sprites. This can be checked using the [[Patch:F10 C Cheat|Count objects cheat]] included in the game for just this purpose. The total number of objects in a level should not exceed 70 or so. If the count is high at the level start, this means the level is dangerously marginal and some objects should be removed from the map. If not then it is a production\disposal problem and regular checks of the count will keep the modder informed as to what is going on.&lt;br /&gt;
&lt;br /&gt;
In [[Keen Dreams]] this cannot occur as the game prevents new sprites being produced when the object array is full. This is a surprising feature. However when this error &#039;&#039;does&#039;&#039; occur, it is not a sprite array error but an object array error, triggered at the level start. (See above section.) Only the wording is different.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite array error messagess&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $17C1B  [$42C1W] #Text called from&lt;br /&gt;
%patch $33131 &amp;quot;RF_PlaceSprite: No free spots in spritearray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $18BB8  [$3912W] #Text called from&lt;br /&gt;
%patch $33C52 &amp;quot;RF_PlaceSprite: No free spots in spritearray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $1788A  [$3CC1W] #Text called from&lt;br /&gt;
%patch $349F1 &amp;quot;RF_PlaceSprite: No free spots in spritearray!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $F2A3  [$41ADW] #Text called from&lt;br /&gt;
%patch $27C1D &amp;quot;RF_PlaceSprite: No free spots in spritearray!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t crash, just don&#039;t spawn sprites ====&lt;br /&gt;
&lt;br /&gt;
These patches avoid crashing the game and notifying the player. Instead the game simply doesn&#039;t spawn the sprite. This can have interesting effects. For example, when the sprite array is full Keen can shoot but no shot will be produced. Likewise item point indicators will not appear. This may be a worthwhile tradeoff if a modder is confident no serious issues will occur. (Say if a large level has one isolated point where too many sprites appear.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Remove sprite array errors&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t spawn sprites when there&#039;s no array space -Keen 4:&lt;br /&gt;
%patch $17C1A $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t spawn sprites when there&#039;s no array space -Keen 5:&lt;br /&gt;
%patch $18BBA $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t spawn sprites when there&#039;s no array space -Keen 6:&lt;br /&gt;
%patch $17889 $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t spawn sprites when there&#039;s no array space -Keen Dreams:&lt;br /&gt;
%patch $F2A2  $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Placed uncached sprite ===&lt;br /&gt;
&lt;br /&gt;
This error occurs during gameplay when an object tries to use a graphic image that wasn&#039;t cached at the level start. (See [[Patch:Sprite animations|Animations]] and [[Patch:Sprite cache|Sprite cache]] for an explanation of this.) This is annoyingly common when advanced patching is involved and enemies, etc are using animations they did not originally.&lt;br /&gt;
&lt;br /&gt;
The error comes with a number, which is useful if the modder is using [[Keengraph]] as it will be the same number as the sprite bitmap that was trying to be loaded, usually allowing the modder to check, identify the sprite at fault and alter their patch file accordingly. In Modkeen this is not possible as the sprite bitmaps are not numbered as the game numbers them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Placed uncached sprite error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $17C88  [$42EFW] #Text called from&lt;br /&gt;
%patch $3315F &amp;quot;RF_PlaceSprite: Placed an uncached sprite:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $18C25  [$3940W] #Text called from&lt;br /&gt;
%patch $33C80 &amp;quot;RF_PlaceSprite: Placed an uncached sprite:&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $178F7  [$3CEFW] #Text called from&lt;br /&gt;
%patch $34A1F &amp;quot;RF_PlaceSprite: Placed an uncached sprite:&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ignore error ====&lt;br /&gt;
&lt;br /&gt;
These patches cause the game to ignore the uncached error. Instead of crashing the game will display gibberish on the screen where the uncached sprite should be. (In severe circumstances this will cause the game to freeze.) This may be of use when debugging or if the error is hard to eliminate and intermittent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ignore sprite errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $17C85 $EB&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $18C22 $EB&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $178F4 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tried to remove the player ===&lt;br /&gt;
&lt;br /&gt;
The game tracks a certain sprite (The last Keen-type sprite encountered when loading sprites from the level map.) as the player. The screen will follow it, it will die when the &#039;kill player&#039; code is called, etc. While other sprites can &#039;&#039;act&#039;&#039; like the player, they are not special and can be removed, destroyed, etc. However if due to a certain patch the player sprite is set to action=0 (Nothing, that is, removed from the level.) then the game will crash as it does not have a way to pick a new player sprite.&lt;br /&gt;
&lt;br /&gt;
This is always a patching error. It usually occurs when two sprites collide. As an example, setting Keen&#039;s [[Patch:Sprite type|sprite type]] to 3 (The same as his shot) will cause Keen to stun enemy sprites and vanish. The only way to solve this problem is to check the patch file for any patches that may be causing a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;&#039;Tried to remove the player&#039; error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $8A69  [$06A5W] #Text called from&lt;br /&gt;
%patch $2F515 &amp;quot;RemoveObj: Tried to remove the player!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $89E5  [$0617W] #Text called from&lt;br /&gt;
%patch $30957 &amp;quot;RemoveObj: Tried to remove the player!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $884D  [$060FW] #Text called from&lt;br /&gt;
%patch $3133F &amp;quot;RemoveObj: Tried to remove the player!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Removing player loses level ====&lt;br /&gt;
&lt;br /&gt;
This patch alters the game code so that trying to remove the player automatically loses the level, as it would if Keen died. This can allow a unique method of dying in addition to the regular types and is less frustrating than a game crash. By altering the [[Patch:Level exit|level state]] value highlighted in blue the game can do other things, such as win the level instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Remove player loses the level&amp;quot;&amp;gt;&lt;br /&gt;
#Remove player loses the level -Keen 4&lt;br /&gt;
%patch $8A68 $C7 $06 $7A70W  [$0001W]  $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Sprite shifts|Bad shifts number]] ===&lt;br /&gt;
&lt;br /&gt;
This is a graphics error that occurs when the modder has written an incorrect [[Patch:Sprite shifts|sprite shifts]] entry in &amp;lt;tt&amp;gt;SPRITES.TXT&amp;lt;/tt&amp;gt; (Modkeen) or &amp;lt;tt&amp;gt;LIST.TXT&amp;lt;/tt&amp;gt; (Keengraph) and imported it. This relates to the number of sprite shifts, or how smoothly a sprite animation can move in the level. it can be 1, 2 or 4, but no other number. This number is the last number in every sprite entry in the text file. This error will only occur when an incorrect sprite animation is called, which will help narrow down the search.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Galaxy and Dreams shifts errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $13954  [$3B28W] #Text called from&lt;br /&gt;
%patch $32998 &amp;quot;CAL_CacheSprite: Bad shifts number!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $148F1  [$327EW] #Text called from&lt;br /&gt;
%patch $335BE &amp;quot;CAL_CacheSprite: Bad shifts number!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $13485  [$3528W] #Text called from&lt;br /&gt;
%patch $34258 &amp;quot;CAL_CacheSprite: Bad shifts number!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $BEFC  [$2876W] #Text called from&lt;br /&gt;
%patch $262E6 &amp;quot;CAL_CacheSprite: Bad shifts number!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== No star specs for object ===&lt;br /&gt;
&lt;br /&gt;
This error occurs only in [[Keen 6]] and is encountered when the game is not told where to put the [[Patch:Stunned sprite stars|stun stars]] when a sprite is stunned. Notably, changing the [[Patch:Nospike|Nospike&#039;s]] sprite type will cause this to happen whenever one is stunned or falls off a cliff.&lt;br /&gt;
&lt;br /&gt;
This error can be fixed by patching the relevant entry for the [[Patch:Stunned sprite stars#Keen_6|stunned sprite star position]] to &amp;lt;tt&amp;gt;$1A6CW&amp;lt;/tt&amp;gt; or another valid value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#No star specs for object error&lt;br /&gt;
%patch $A9A1  [$7F0W] #Text called from&lt;br /&gt;
%patch $31520 &amp;quot;No star spec for object!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SpawnShot - Bad dir ===&lt;br /&gt;
&lt;br /&gt;
This error technically occurs because the player has produced a shot that is moving in an illegal direction (Say up and down at the same time.) In practice this will appear only due to patch errors corrupting the shooting code. (Around $E500) The only solution to this is to check each patch, especially recently added patches to see if this fixes the error.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Spawn shot errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $E608  [$184CW] #Text called from&lt;br /&gt;
%patch $306BC &amp;quot;SpawnShot: Bad dir!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $DD37  [$1631W] #Text called from&lt;br /&gt;
%patch $31971 &amp;quot;SpawnShot: Bad dir!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $D8A2  [$1652W] #Text called from&lt;br /&gt;
%patch $32382 &amp;quot;SpawnShot: Bad dir!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KeenThrow - Bad state ===&lt;br /&gt;
&lt;br /&gt;
This error is the Keen Dreams equivalent of the Spawnshot error mentioned above. It should be handled in the same way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Bad State call&lt;br /&gt;
%patch $7643  [$1713W]&lt;br /&gt;
&lt;br /&gt;
#Text&lt;br /&gt;
%patch $25183 &amp;quot;KeenThrow: Bad state!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Disable ====&lt;br /&gt;
&lt;br /&gt;
This patch disables the error; instead of crashing the game Keen&#039;s shot will just fall to the ground..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Prevent bad state error&lt;br /&gt;
%patch $7642 $EB $09&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Walk: Bad dir ===&lt;br /&gt;
&lt;br /&gt;
This error is specific to [[Keen 5]] and occurs when a [[Patch:Shikadi Mine|Shikadi Mine]] moves in an &#039;incorrect&#039; direction. This should only occur if the default Shikadi Mine code has been tampered with somehow or another patch is massively incorrect.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Shikadi Mine error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $11E23 [$31A4W] #Text called from&lt;br /&gt;
%patch $334E4 &amp;quot;Walk: Bad dir&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Goplat moved to a bad spot ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when the [[Patch:Goplat (Keen 5)|Keen 5 Goplats]] and [[Patch:Goplat (Keen 6)|Keen 6 Goplats]] follow an arrow path onto a square with no arrow. Having no direction to move in the game crashes. [[Keen 5]] has two types of Goplat while [[Keen 6]] has only one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Goplat errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $10845 [$1C8AW] #Text called from&lt;br /&gt;
%patch $31FCA &amp;quot;Goplat moved to a bad spot: &amp;quot; $00&lt;br /&gt;
%patch $10A62 [$1EF0W] #Text called from&lt;br /&gt;
%patch $32230 &amp;quot;Goplat moved to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $106A2  [$2443W] #Text called from&lt;br /&gt;
%patch $33173 &amp;quot;Goplat moved to a bad spot!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ignore error, Goplats freeze ====&lt;br /&gt;
&lt;br /&gt;
These patches circumvent the Goplat error. Instead of crashing the game the Goplats merely freeze in place. This can be useful for creating things such as a Platform that rises up out of the ground to a specific height before stopping.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Goplats freeze on error&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplats freeze when they run out of arrows - Keen 5&lt;br /&gt;
%patch $10844 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#Purple Goplats freeze when they run out of arrows - Keen 5&lt;br /&gt;
%patch $10A61 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#Goplats freeze when they run out of arrows - Keen 6&lt;br /&gt;
%patch $106A1 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Keyholder points to bad spot ===&lt;br /&gt;
&lt;br /&gt;
This error should occur when the player tries to [[Patch:Keygem door|place a key gem to open a door.]] It occurs when the keyholder does not have a correct sprite value over it. usually this happens when the modder forgets to put a value in, giving a default value of 0,0. Other invalid values are those outside the level borders. This error is easy enough to fix since there should only be a small number of keyholders in the level to check for validity.&lt;br /&gt;
&lt;br /&gt;
This error may also occur if a &#039;hidden&#039; keyholder is triggered, say if the modder accidentally gives a tile the keyholder property. (The hidden holder will of course not be given a value and can be hard to find until the player accidentally runs into one while having the right colored gem.)&lt;br /&gt;
&lt;br /&gt;
In either case the best course of action is to play the level and note exactly where the game crashes. This will be the exact location of the broken keyholder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keyholder errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $C2E0  [$1426W] #Text called from&lt;br /&gt;
%patch $30296 &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $B6FE  [$130EW] #Text called from&lt;br /&gt;
%patch $3164E &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $B4E1  [$129EW] #Text called from&lt;br /&gt;
%patch $31FCE &amp;quot;Keyholder points to a bad spot!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ignore error, door fails ====&lt;br /&gt;
&lt;br /&gt;
These patches ignore the &#039;bad spot&#039; error, simply aborting the door opening sequence. This means that while Keen can place the gem but no door sprite can be created. This allows &#039;pointless&#039; keyholders to be placed that take gems but do nothing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ignore Keyholder errors&amp;quot;&amp;gt;&lt;br /&gt;
#Ignore bad keyholder error -Keen 4&lt;br /&gt;
%patch $C2DF $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ignore bad keyholder error -Keen 5&lt;br /&gt;
%patch $B6FD $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ignore bad keyholder error -Keen 6&lt;br /&gt;
%patch $B4E0 $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== StartMusic - Bad level number ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when a song is started. This is usually when a level is entered, but may also be when something else changes the music, the ending sequence for example or rescuing an Oracle Council member. StartMusic works by taking a value (3 say) then looking at the level music list and reading that music entry from it to play. (Why it doesn&#039;t just take a music value directly is unknown.) See [[Patch:Music]].&lt;br /&gt;
&lt;br /&gt;
There are two sources of error that may cause this. In the first the entry in the level music list is for a song that doesn&#039;t exist. (Say song 300.) Obviously playing a nonexistent song is impossible. The second cause is if the game is told to play the song of a nonexistent level. This can happen when the background music for say, the ending sequence is set to a nonexistent level (Again, say level 300) Both of these errors will involve a problem in the music patch.&lt;br /&gt;
&lt;br /&gt;
It is also possible a faulty sound file will cause this problem, but this is unlikely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;&#039;StartMusic - Bad level number&#039; error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $8CAD  [$06CCW] #Text called from&lt;br /&gt;
%patch $2F53C &amp;quot;StartMusic() - bad level number&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $8C29  [$063EW] #Text called from&lt;br /&gt;
%patch $3097E &amp;quot;StartMusic() - bad level number&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $8A91  [$0636W] #Text called from&lt;br /&gt;
%patch $31366 &amp;quot;StartMusic() - bad level number&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ignore error ====&lt;br /&gt;
&lt;br /&gt;
These patches cause the game to ignore the error. The first set cause the game to play no music at all- silence. The second causes the game to continue playing the song it is playing when the error occurs. (This can still be silence if the game has called StopMusic before attempting to switch to the erroneous song.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ignore bad level number, play silence&amp;quot;&amp;gt;&lt;br /&gt;
#Ignore bad level number, play silence -Keen 4:&lt;br /&gt;
%patch $8CAC $B8 $0001W $EB $07&lt;br /&gt;
&lt;br /&gt;
#Ignore bad level number, play silence -Keen 5:&lt;br /&gt;
%patch $8C28 $B8 $0001W $EB $07&lt;br /&gt;
&lt;br /&gt;
#Ignore bad level number, play silence -Keen 6:&lt;br /&gt;
%patch $8A90 $B8 $0001W $EB $07&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ignore bad level number, don&#039;t switch song&amp;quot;&amp;gt;&lt;br /&gt;
#Ignore bad level number, don&#039;t switch song -Keen 4:&lt;br /&gt;
%patch $8CAC $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ignore bad level number, don&#039;t switch song -Keen 5:&lt;br /&gt;
%patch $8C28 $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Ignore bad level number, don&#039;t switch song -Keen 6:&lt;br /&gt;
%patch $8A90 $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MM_Set errors ===&lt;br /&gt;
&lt;br /&gt;
There are two possible errors in the &#039;MM Set&#039;; Purge and Lock. Both are caused by massive memory problems and are often symptomatic of patching errors. &#039;Purge&#039; errors deal with trying to clear things from memory to &#039;make more space&#039;; This error often occurs aside from patching when a level contains two many memory &#039;blocks&#039; and there is not enough space in the memory block array to store more. This is a combination problem as background tiles, foreground tiles, sprite images and bitmaps all add together to take up memory block space. The easiest way to remove this error is to &#039;simplify&#039; a level, often by removing rarely used foreground or background tiles.&lt;br /&gt;
&lt;br /&gt;
When patching is an issue (Say the problem only appeared after a new patch was added.) purge errors occur most often when an exceptionally long string of text is loaded somewhere expecting a short string, such as a level name. This is similar to the &#039;string exceeds width&#039; error above, but moreso. This often happens when a terminal $00 is left out of a [[Patch:Text patches|text patch,]] mixing two strings into one big one.&lt;br /&gt;
&lt;br /&gt;
Purge errors can also occur when a non-level music call asks for a song that doesn&#039;t exist. For example, if the[[Patch:Ending sequence|ending sequence]] song is set to level 3&#039;s music, and level 3 plays song 99 (Which doesn&#039;t exist.) then entering level 3 will cause a song error, but winning the game will result in this error. (If the game can be won without entering level 3, then the player will not encounter any error before this one.)&lt;br /&gt;
&lt;br /&gt;
Lock errors involve the game trying to load something into memory that it shouldn&#039;t. It&#039;s hard to cause, and hard to fix.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen MM_Set errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $16091 [$4008W] #Text called from&lt;br /&gt;
%patch $32E78 &amp;quot;MM_SetPurge: Block not found!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $16114 [$4026W] #Text called from&lt;br /&gt;
%patch $32E96 &amp;quot;MM_SetLock: Block not found!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $1702E [$36BFW] #Text called from&lt;br /&gt;
%patch $339FF &amp;quot;MM_SetPurge: Block not found!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $170B1 [$36DDW] #Text called from&lt;br /&gt;
%patch $33A1D &amp;quot;MM_SetLock: Block not found!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $15BC2 [$3A08W] #Text called from&lt;br /&gt;
%patch $34738 &amp;quot;MM_SetPurge: Block not found!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $15C45 [$3A26W] #Text called from&lt;br /&gt;
%patch $34756 &amp;quot;MM_SetLock: Block not found!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== String exceeds width ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when a text window is given a line of text too wide for it. This is nearly always the result of a [[Patch:Text patches|text patch,]] usually when a $0A or $00 is left out, resulting in one long, wide line of text. Close checking of text patches will  often show the problem.&lt;br /&gt;
&lt;br /&gt;
This error can also occur when inputting text into the [[Patch:Story Screen (Galaxy)|star wars story screen,]] in this case the cause is identical, one of the lines of text in the story is too wide and must be reduced. The maximum width of a line of text is approximately 24 characters (Or &amp;quot;123456789012345678901234&amp;quot; for reference when patching.), but this varies with what characters are used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;String exceeds width error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $1A195 [$4721W] #Text called from&lt;br /&gt;
%patch $33591 &amp;quot;US_CPrintLine() - String exceeds width&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $1B133 [$3D3CW] #Text called from&lt;br /&gt;
%patch $3407C &amp;quot;US_CPrintLine() - String exceeds width&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $19E05 [$4121W] #Text called from&lt;br /&gt;
%patch $34E51 &amp;quot;US_CPrintLine() - String exceeds width&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ignore error ====&lt;br /&gt;
&lt;br /&gt;
These patches cause the game to ignore the width error. Instead of crashing the game will simply not display any visible text. This may be of use when debugging or if the error is hard to eliminate and intermittent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Ignore &#039;String exceeds width&#039; errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $1A192 $EB&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $1B130 $EB&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $19E02 $EB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PageLayout errors ===&lt;br /&gt;
&lt;br /&gt;
These errors should be encountered while using the [[Patch:Computer Wrist|Computer Wrist]] or in the [[Patch:Ending sequence|ending sequence.]] They occur when something is wrong relating to the text in these sequences. They will be triggered when the offending sequence is loaded, meaning that each page in the sequence will have to be scanned for possible errors.&lt;br /&gt;
&lt;br /&gt;
The first error, the word limit, occurs when too much text has been placed on a single page. The word limit is such that in order to trigger this error the text will have to spill off the bottom of the page. It usually occurs when two pages are accidentally merged when modding the page text document.&lt;br /&gt;
&lt;br /&gt;
The second error, &#039;Text not headed with ^P&#039; occurs, as would be expected, when text in a page does not start with &#039;^P&#039; This can occur if the sequence document does not start with &#039;^P&#039;, but usually occurs when a page &#039;&#039;that is not the last page in the sequence&#039;&#039; has no text on it at all; this confuses the parser into thinking the &#039;&#039;next&#039;&#039; page has no &#039;^P&#039; header.&lt;br /&gt;
&lt;br /&gt;
The third error, &amp;quot;No ^E to terminate file&amp;quot; occurs when the text in a chunk does not end with &#039;^E&#039;. All text chunks must end with this to tell the game when to stop reading data. This however may occur with a perfectly fine chunk in the [[Patch:Ending sequence (Keen 4)|Keen 4 ending sequence]] if the wrong chunk is used. Due to a unique bug only one specific text chunk can be used to end the game.&lt;br /&gt;
&lt;br /&gt;
The ^P and ^E errors can also be triggered if the game runs low on memory while browsing the Computerwrist. This can happen if the help documents are reasonably (but not &#039;&#039;unreasonably&#039;&#039;) large.&lt;br /&gt;
&lt;br /&gt;
All these errors can only be corrected by a modder looking at the offending text document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;PageLayout errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $955F  [$0720W] #Text called from&lt;br /&gt;
%patch $2F590 &amp;quot;PageLayout: Word limit exceeded&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $96DE  [$0740W] #Text called from&lt;br /&gt;
%patch $2F5B0 &amp;quot;PageLayout: Text not headed with ^P&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $98DD  [$076DW] #Text called from&lt;br /&gt;
%patch $2F5DD &amp;quot;CacheLayoutGraphics: No ^E to terminate file!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $E4C7  [$1650W] #Text called from&lt;br /&gt;
%patch $31990 &amp;quot;PageLayout: Word limit exceeded&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $E646  [$1670W] #Text called from&lt;br /&gt;
%patch $319B0 &amp;quot;PageLayout: Text not headed with ^P&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $E845  [$169DW] #Text called from&lt;br /&gt;
%patch $319DD &amp;quot;CacheLayoutGraphics: No ^E to terminate file!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $DFE7  [$1666W] #Text called from&lt;br /&gt;
%patch $32396 &amp;quot;PageLayout: Word limit exceeded&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $E0FD  [$1686W] #Text called from&lt;br /&gt;
%patch $323B6 &amp;quot;PageLayout: Text not headed with ^P&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
%patch $E2D3  [$16B3W] #Text called from&lt;br /&gt;
%patch $323E3 &amp;quot;CacheLayoutGraphics: No ^E to terminate file!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Don&#039;t crash game, just blank screen ====&lt;br /&gt;
&lt;br /&gt;
These patches avoid the game crashing if the ^P error is triggered, instead simply displaying a blank help page that can be quit to return to the Computerwrist menu. This is really only useful as a last-ditch save if memory issues cause random crashes in help. If memory is low and the player continues to try and open new help documents the game will run out of memory entirely and crash anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;^P error doesn&#039;t crash game&amp;quot;&amp;gt;&lt;br /&gt;
#^P error doesn&#039;t crash game -Keen 4&lt;br /&gt;
%patch $96DD $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#^P error doesn&#039;t crash game -Keen 5&lt;br /&gt;
%patch $E645 $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
&lt;br /&gt;
#^P error doesn&#039;t crash game -Keen 6&lt;br /&gt;
%patch $E0FC $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CA_FarRead\CA_FarWrite ===&lt;br /&gt;
&lt;br /&gt;
These two errors relate to file sizes, specifically when the game tries to load or create a file that has a chunk in it larger than 64K. This is actually quite rare and usually occurs after a bad import. They can also be triggered by code getting garbled and accidentally loading two files instead of one. It is most commonly encountered in the [[Patch:Computer Wrist|Computer Wrist]] or ending sequences if they are laid out incorrect. FarRead is by far the most common of this pair of errors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;CA_FarRead\CA_FarWrite errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $12B66  [$3A66W] #Text called from&lt;br /&gt;
%patch $328D6 &amp;quot;CA_FarRead doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
%patch $12BB2  [$3A90W] #Text called from&lt;br /&gt;
%patch $32900 &amp;quot;CA_FarWrite doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $13B03  [$31BCW] #Text called from&lt;br /&gt;
%patch $334FC &amp;quot;CA_FarRead doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
%patch $13B4F  [$31E6W] #Text called from&lt;br /&gt;
%patch $33526 &amp;quot;CA_FarWrite doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $12697  [$3466W] #Text called from&lt;br /&gt;
%patch $34196 &amp;quot;CA_FarRead doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
%patch $126E3  [$3490W] #Text called from&lt;br /&gt;
%patch $341C0 &amp;quot;CA_FarWrite doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams :&lt;br /&gt;
%patch $B350  [$27B4W] #Text called from&lt;br /&gt;
%patch $26224 &amp;quot;CA_FarRead doesn&#039;t support 64K reads yet!&amp;quot; $00&lt;br /&gt;
%patch $B39B  [$27DEW] #Text called from&lt;br /&gt;
%patch $2624E &amp;quot;CA_FarWrite doesn&#039;t support 64K reads yet!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USL_ConfirmComm errors ===&lt;br /&gt;
&lt;br /&gt;
This error is very rare and occurs when the [[Patch:Main menu|Main Menu]] is asked to do something it cannot, such as save a game when no game is being played. Getting this error is a sign that some patch has gone severely wrong, interfering with the menu code around $19000-$1C000. The only solution is to make a note of what circumstances cause the error and check the patch file for patches that fix the error when removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;USL_ConfirmComm errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $1AF87  [$4903W] #Text called from&lt;br /&gt;
%patch $33773 &amp;quot;USL_ConfirmComm() - empty comm&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $1BF25  [$3EF4W] #Text called from&lt;br /&gt;
%patch $34234 &amp;quot;USL_ConfirmComm() - empty comm&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $1ABF7  [$437DW] #Text called from&lt;br /&gt;
%patch $350AD &amp;quot;USL_ConfirmComm() - empty comm&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Demo loop exited ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when something goes wrong with the [[Patch:Demo#Main_Menu_Demo_Loop|demo loop]] in Keen Galaxy or Dreams. The exact sources of error vary but are usually a corrupt demo file or a problem with the demo loop code. Checking demo files and demo patches is a good way to debug this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Demo loop exited error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $3ECF  [$01DAW] #Text called from&lt;br /&gt;
%patch $2F04A &amp;quot;Demo loop exited???&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $3EC9  [$018AW] #Text called from&lt;br /&gt;
%patch $304CA &amp;quot;Demo loop exited???&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $3CF8  [$011EW] #Text called from&lt;br /&gt;
%patch $30E4E &amp;quot;Demo loop exited???&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $3BF7  [$0357W] #Text called from&lt;br /&gt;
%patch $23DC7 &amp;quot;Demo loop exited???&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Demo buffer overflow ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when something goes wrong with the [[Patch:F10 D Cheat|demo cheat]] in Keen Galaxy or Dreams. Specifically it occurs when a demo is recorded for too long, exceeding the amount of memory available for storing a demo file. The solution is to stop recording a demo before this happens. If this does not occur during demo recording then it is due to a random patch corrupting the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Demo buffer overflow error&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $152FA  [$3EFCW] #Text called from&lt;br /&gt;
%patch $32D6C &amp;quot;Demo buffer overflow&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $16297  [$35B4W] #Text called from&lt;br /&gt;
%patch $338F4 &amp;quot;Demo buffer overflow&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $14E2B  [$38FCW] #Text called from&lt;br /&gt;
%patch $3462C &amp;quot;Demo buffer overflow&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $1093A  [$461EW] #Text called from&lt;br /&gt;
%patch $2808E &amp;quot;Demo buffer overflow&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Demo playback exceeded ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when trying to play a demo that is too large for the memory set aside. It is thus similar to the above error except that it occurs when a demo is being played rather than recorded. This should not be possible however if a demo chunk is corrupted or was recorded under different memory conditions than the demo is  being played back then it is possible that this error will occur. The only solution is to use a smaller\shorter demo chunk for this demo. If this error occurs no matter what demo is used or outside of the [[Patch:Demo#Main_Menu_Demo_Loop|demo loop]] then it is due to a random patch corrupting the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Demo playback exceeded&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4:&lt;br /&gt;
%patch $1504B  [$3EE5W] #Text called from&lt;br /&gt;
%patch $32D55 &amp;quot;Demo playback exceeded&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 5:&lt;br /&gt;
%patch $15FE8  [$359DW] #Text called from&lt;br /&gt;
%patch $338DD &amp;quot;Demo playback exceeded&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen 6:&lt;br /&gt;
%patch $14B7C  [$38E5W] #Text called from&lt;br /&gt;
%patch $34615 &amp;quot;Demo playback exceeded&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams:&lt;br /&gt;
%patch $106E2  [$4607W] #Text called from&lt;br /&gt;
%patch $28077 &amp;quot;Demo playback exceeded&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CA_UpLevel\CA_DownLevel ===&lt;br /&gt;
&lt;br /&gt;
These errors relate to the &#039;cache level&#039; of the game. This is a value between 0 and 7 that controls what resources are being loaded or cleared from memory. As an example, when Keen enters a new level that level&#039;s sprites and tiles must be loaded into memory at a certain cache level. When he exits the level they&#039;re unloaded. But more vital things like the game&#039;s fonts are not altered when this happens.&lt;br /&gt;
&lt;br /&gt;
This error results from an &#039;imbalance&#039; in code; normally anything that loads stuff into memory has an equal and opposite bit of code that will unload it. However a patch can overwrite this. If unloading is disabled the game will eventually run out of cache levels (down past 0), conversely if loading is disabled vital game resources can be unloaded. (up past 7.)&lt;br /&gt;
&lt;br /&gt;
The only way to test for this error is to remove patches from your patchfile and see if it still occurs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;CA_UpLevel\CA_DownLevel errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 4 :&lt;br /&gt;
%patch $13F38  [$3B7BW] #Text called from&lt;br /&gt;
%patch $329EB &amp;quot;CA_UpLevel: Up past level 7!&amp;quot; $00&lt;br /&gt;
%patch $13F5A  [$3B98W] #Text called from&lt;br /&gt;
%patch $32A08 &amp;quot;CA_DownLevel: Down past level 0!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 5 :&lt;br /&gt;
%patch $14ED5  [$32D1W] #Text called from&lt;br /&gt;
%patch $33611 &amp;quot;CA_UpLevel: Up past level 7!&amp;quot; $00&lt;br /&gt;
%patch $14EF7  [$32EEW] #Text called from&lt;br /&gt;
%patch $3362E &amp;quot;CA_DownLevel: Down past level 0!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 6 :&lt;br /&gt;
%patch $13A69  [$357BW] #Text called from&lt;br /&gt;
%patch $342AB &amp;quot;CA_UpLevel: Up past level 7!&amp;quot; $00&lt;br /&gt;
%patch $13A8B  [$3598W] #Text called from&lt;br /&gt;
%patch $342C8 &amp;quot;CA_DownLevel: Down past level 0!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen Dreams :&lt;br /&gt;
%patch $C4B6  [$28C9W] #Text called from&lt;br /&gt;
%patch $26339 &amp;quot;CA_UpLevel: Up past level 7!&amp;quot; $00&lt;br /&gt;
%patch $C4D3  [$28E6W] #Text called from&lt;br /&gt;
%patch $26356 &amp;quot;CA_DownLevel: Down past level 0!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Out of memory ===&lt;br /&gt;
&lt;br /&gt;
These errors occur when the game runs out of memory. In many respects this is a &#039;general error&#039; expected to occur whenever something goes wrong. In [[Keen 1]] all these occurrences are separate, (for example the third error occurs when the [[Patch&amp;quot;LZW compression|LZW compression]] goes awry.) but in the other two Vorticons episodes the errors all redirect to the same area of code with only one error message for efficiency.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Out of memory errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 1:&lt;br /&gt;
%patch $5C91  [$278FW] #Text called from&lt;br /&gt;
%patch $157DF &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&lt;br /&gt;
%patch $6936  [$27D8W] #Text called from&lt;br /&gt;
%patch $15828 &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&lt;br /&gt;
%patch $69B6  [$2801W] #Text called from&lt;br /&gt;
%patch $15851 &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&lt;br /&gt;
%patch $69DF  [$282AW] #Text called from&lt;br /&gt;
%patch $1587A &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 2:&lt;br /&gt;
%patch $2264  [$26EFW] #Text called from&lt;br /&gt;
%patch $19E6F &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 3:&lt;br /&gt;
%patch $2210  [$27EBW] #Text called from&lt;br /&gt;
%patch $1C00B &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bad pointers ===&lt;br /&gt;
&lt;br /&gt;
These errors occur when the game is given a &#039;bad pointer&#039;; that is an address for some code. There are two kinds of pointer, &#039;think&#039; and &#039;contact&#039;, the difference between which is not important. These errors usually occur when a massive patch error has occurred causing the game to become completely lost. It is the least specific game error and one of the hardest to pin down.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Bad pointer errors&amp;quot;&amp;gt;&lt;br /&gt;
#Keen 1 :&lt;br /&gt;
%patch $291D  [$241CW] #Text called from&lt;br /&gt;
%patch $1546C &amp;quot;Bad think pointer!&amp;quot; $00&lt;br /&gt;
%patch $292B  [$242FW] #Text called from&lt;br /&gt;
%patch $1547F &amp;quot;Bad contact pointer!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 2 :&lt;br /&gt;
%patch $575F  [$2CC8W] #Text called from&lt;br /&gt;
%patch $1A448 &amp;quot;Bad think pointer!&amp;quot; $00&lt;br /&gt;
%patch $576D  [$2CDBW] #Text called from&lt;br /&gt;
%patch $1A45B &amp;quot;Bad contact pointer!&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#Keen 3 :&lt;br /&gt;
%patch $5FA7  [$2D02W] #Text called from&lt;br /&gt;
%patch $1C522 &amp;quot;Bad think pointer!&amp;quot; $00&lt;br /&gt;
%patch $5FB4  [$2D15W] #Text called from&lt;br /&gt;
%patch $1C535 &amp;quot;Bad contact pointer!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Error during code expansion ===&lt;br /&gt;
&lt;br /&gt;
These are [[Keen 1]] errors. The first error appears during [[Patch&amp;quot;LZW compression|LZW decompression]] when the code encounters nonsense data. As the only way this can occur is corruption of the original LZW compressed file this error should never appear on modern systems.&lt;br /&gt;
&lt;br /&gt;
The second error occurs when the decompressed code uses up all available memory and also often occurs when nonsense data is encountered, causing the expanded data to be very large. It too is unlikely to appear on modern systems. (However identical errors occur in other situations. See above sections.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 1&amp;quot;&amp;gt;&lt;br /&gt;
#LZW decompression error&lt;br /&gt;
%patch $6BB1  [$2853W] #Text called from&lt;br /&gt;
%patch $158A3 &amp;quot;Error during code expansion!&amp;quot; $0A $00&lt;br /&gt;
&lt;br /&gt;
%patch $69B6  [$2801W] #Text called from&lt;br /&gt;
%patch $15851 &amp;quot;Out of memory!  Try unloading your TSRs!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Freeze errors =&lt;br /&gt;
&lt;br /&gt;
These errors cause the game to freeze, and sometimes cause the music to stick on a single note. The game is unresponsive and must be closed down. These are also known as &#039;divide by zero&#039; errors after their most common cause. There is no way to tell what the error is except via context, timing and trial and error. As such the following subsections describe the cause of the error, not any sort of message the player may get.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Game freezes at ONE MOMENT image ===&lt;br /&gt;
&lt;br /&gt;
This error occurs in Vorticons and is when the game freezes, often with a display of gibberish, at the [[Patch:One Moment Screen (Vorticons)|One Moment screen.]] This is usually caused by a corrputed data file, usually the &amp;lt;tt&amp;gt;SCORE.CKx&amp;lt;/tt&amp;gt; file, but possibly a &amp;lt;tt&amp;gt;*TEXT.CKx&amp;lt;/tt&amp;gt; file or &amp;lt;tt&amp;gt;CTLPANEL.CKx&amp;lt;/tt&amp;gt; file. Deleting or replacing these files should solve the problem.&lt;br /&gt;
&lt;br /&gt;
If the screen fills entirely with gibberish then what has likely happened is that there was no valid one moment graphic in the graphics file. This may have been due to graphic modification or a patch that changes what bitmap is used. (If the game can be run without the patch file but still freezes it is the second option.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level freezes just after loading ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when the game freezes shortly after entering a level, usually less than ten seconds after. It does not matter what the player does, though the freeze can be delayed by going to the main menu or checking the status window.&lt;br /&gt;
&lt;br /&gt;
The cause is an animating tile that animates to a non-animating tile. The game tries to animate this tile infinitely fast, freezing the game. This is usually a [[Patch:Tileinfo|tileinfo]] problem and can be resolved by fixing the errant tile. There are two ways to do this.&lt;br /&gt;
&lt;br /&gt;
The first is to check the tileinfo by carefully going over ll the tiles used in the level and checking them. This may miss the tile.&lt;br /&gt;
&lt;br /&gt;
The second is to remove tiles from the level until it no longer freezes, then adding suspect tiles back to see if the error returns. This is often more reliable, but requires the modder to back up their game maps.&lt;br /&gt;
&lt;br /&gt;
In rare cases there will be just one too many animating tiles in a level. (See freeze with music, below.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level loads to black screen ===&lt;br /&gt;
&lt;br /&gt;
This error occurs when a sprite is behaving improperly. Usually this is the player sprite or something in the sprite&#039;s [[Patch:Sprite spawning|initiation or spawning code]], since it occurs immediately after the level loads. The most common cause is the modder not putting a player sprite in the level (for example mistaking the &#039;I&#039; Keen helmet for the actual player sprite.) Levels can be debugged by checking the player sprite is present, and if the error persists, removing sprite types from the level one by one and seeing when functionality is restored. (The affected sprite can then be checked over.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level loads to black with music ===&lt;br /&gt;
&lt;br /&gt;
While this can happen due to a bad behavior (As above.), it often occurs when there is one too many animated tiles in the level. The game freezes when the tile tries to animate. This is a very borderline case, enough to be exactly at the limit and cause problems, but not enough to cause the game to crash with an error. It can be confirmed by adding another, unique animated tile to the level and seeing the corresponding crash. To solve this simply remove the least needed animated tile from the level.&lt;br /&gt;
&lt;br /&gt;
This is sometimes caused by a sprite behavior issue (See &#039;freezes just after loading&#039; above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Level loads to gibberish or gibberish appears while loading ==&lt;br /&gt;
&lt;br /&gt;
This is usually a patch error, but may, in rare circumstances be a level error (See the &#039;other limits&#039; section below.) In short the level has loaded as gibberish, causing the game to display nonsense.&lt;br /&gt;
&lt;br /&gt;
The first step to fixing this is to check if only one level is affected, if all levels are affected this is likely a patch problem. If only one level is affected it may be a patch relating to a sprite appearing only in that level. Otherwise it may be a game limit bug.&lt;br /&gt;
&lt;br /&gt;
If the level is in Vorticons and complex enough it may be that the sprite limit has been reached. In Vorticons only 76 ordinary sprites can be placed in any one level. If this limit is exceeded when the level starts then the level will turn to gibberish and crash. In some level editors this is easy enough to check by adding up all the sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other limits\problems =&lt;br /&gt;
&lt;br /&gt;
These are not errors as such, or have no way for the game to handle them, but are limitations that the modder may not be aware of. In some cases it is possible to circumvent these, in other cases not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level height\width limit ===&lt;br /&gt;
&lt;br /&gt;
In Keen Galaxy and Dreams it is impossible for a level to be wider &#039;&#039;or&#039;&#039; taller than 257 tiles. This is because of how the game reads Keen&#039;s position. If a level exceeds one of these dimensions (It cannot exceed both) then a large part of the level, though displaying correctly, will be &#039;uninhabitable&#039; for Keen; he will simply exit the level or die when he enters it.&lt;br /&gt;
&lt;br /&gt;
This is because the game &#039;wraps the level around&#039; so it thinks that most of the level is negative and thus that Keen is outside it, ready to exit to the world map.&lt;br /&gt;
&lt;br /&gt;
It is also possible for a map to be so large it causes its own &#039;map to tall&#039; error, but this is unlikely.&lt;br /&gt;
&lt;br /&gt;
There is no way to circumvent this error at present, nor is there likely to be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximum number of sprites ===&lt;br /&gt;
&lt;br /&gt;
In Keen galaxy an error will appear if the sprite limit is exceeded. (No free spots in objarray for example.) In Keen Vorticons the level will simply crash on loading. (See freeze errors section above.) The limit in Keen Vorticons is 76 sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forbidden pointer values and gibberish in-level ===&lt;br /&gt;
&lt;br /&gt;
Due to the way the game&#039;s compression works, there are certain values that cannot be used as sprite pointers for doors or switches by naive level editors. This is especially an issue in levels that are 100 tiles wide or wider.&lt;br /&gt;
&lt;br /&gt;
There are three sets of forbidden values that will cause the level to load as gibberish or freeze if placed within it. The first is the value $ABCD which affects the RLEW compression. The second is $xxA7 and the third $xxA8, both of which destroy the Carmack compression of the level. It is unlikely these values will be placed in a level, but it has happened.&lt;br /&gt;
&lt;br /&gt;
Levels saved by [[Abiathar]] are invincible to these problems; it performs RLEW compression and escapes Carmack magic values.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Tiles become gibberish ===&lt;br /&gt;
&lt;br /&gt;
There are numerous conditions when a tile will not display correctly. To see examples of this use the [[Patch:F10 Y Cheat|F10 Y cheat]] in Keen 4 or 6. Such gibberish is actually data from memory where the tile &#039;&#039;should&#039;&#039; be.&lt;br /&gt;
&lt;br /&gt;
The first way this may happen is if animating foreground tiles are placed over animating background tiles. Due to the way these work they interfere and result in nonsense. Note that item tiles are animating tiles.&lt;br /&gt;
&lt;br /&gt;
The second way is when a [[Patch:Doors (Galaxy)|door is not set up properly,]] a door must consist of a top tile, any number of middle tiles and a bottom tile, all of which must not animate but have animation targets set &#039;&#039;and&#039;&#039; be part of a door opening tile sequence (By default four frames long.) If any of these conditions is not met, some or all of the door tiles will become gibberish.&lt;br /&gt;
&lt;br /&gt;
The third way this may occur is similar, but involving [[Patch:Bridges and switches|bridges and switches,]] switch tiles must have the switch property and have animation targets but not animate (bridge tiles are the same) They must also loop, so that eventually the bridge or switch can return to its original appearance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximum number of cached items ===&lt;br /&gt;
&lt;br /&gt;
The maximum number of items the game can cache at once is 1200. This includes sprite images, sounds, tiles, music and other game chunks. Of this tiles are likely to be the largest component. This causes no error, just a game crash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximum number of sprite images onscreen ===&lt;br /&gt;
&lt;br /&gt;
No more than 60 sprite images can be onscreen at once. This is not 60 sprite, but rather 60 separate sprite image chunks. So a sprite like Keen 4&#039;s moving platform which is one single object with several images counts for more than one sprite image. (The [[Patch:Sphereful|Sphereful]] counts for 5 images for example.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Maximum number of affected tiles ===&lt;br /&gt;
&lt;br /&gt;
There is a limit to how many 16x16 tile squares can be updated via scrolling onscreen, having a sprite pass in front of them or animating. Only 90 tiles may do this in any one game loop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cannot place Keyholder pointers, Switch pointers or [B] sprites on animating tiles ===&lt;br /&gt;
&lt;br /&gt;
The animation time of an animating tile is stored in the ifnoplane (sprite) layer of the level. This means that any infoplane value that must sit there for the duration of the level will be deleted if the tile (background or foreground) animates. These things include [B] sprites used for changing the direction of moving platforms and pointers for doors and bridges.&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 1|}}&lt;br /&gt;
{{PatchCategories|Keen 2|}}&lt;br /&gt;
{{PatchCategories|Keen 3|}}&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Item|}}&lt;br /&gt;
{{PatchCategories|Misc|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;br /&gt;
{{PatchCategories|Text|}}&lt;br /&gt;
{{PatchCategories|Tutorial|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Goplat_(Keen_6)&amp;diff=41223</id>
		<title>Patch:Goplat (Keen 6)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Goplat_(Keen_6)&amp;diff=41223"/>
		<updated>2019-12-16T21:04:53Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add Goplat errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Patch:Platform|Platforms]] in [[Keen 6]] are sprites that Keen can stand on and sometimes be carried places on. This page lists patches relating to a specific Platform sprite, the Goplat or path following Platform. The page is divided into sections relating to the various sprite properties the patches involved. Being fluent with various sprite patch pages will help when working with these patches.&lt;br /&gt;
&lt;br /&gt;
The Goplats are &#039;path following&#039; platforms; they move in loops and paths. Platforms that move back and forth are [[Patch:Horizontal-Vertical Platform (Keen 6)|Horizontal-Vertical Platforms]].&lt;br /&gt;
&lt;br /&gt;
Patches relating to other Keen 6 platforms can be found at [[Patch:Platform (Keen 6)]]. Patches relating to the Dropping Platform in other Keen games can be found at [[Patch:Platform (Keen 4)]] and [[Patch:Goplat (Keen 5)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bad Spot error =&lt;br /&gt;
&lt;br /&gt;
This error occurs when the Goplats follow an arrow path onto a square with no arrow. Having no direction to move in the game crashes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Goplat errors&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat error&lt;br /&gt;
%patch $106A2  [$2443W] #Text called from&lt;br /&gt;
%patch $33173 &amp;quot;Goplat moved to a bad spot!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ignore error, Goplats freeze ==&lt;br /&gt;
&lt;br /&gt;
These patches circumvent the Goplat error. Instead of crashing the game the Goplats merely freeze in place. This can be useful for creating things such as a Platform that rises up out of the ground to a specific height before stopping. This is impossible to do with regular Goplats. This approach also allows easier troubleshooting of the problem as the exact platform and location responsible can be found.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Goplats freeze on error&amp;quot;&amp;gt;&lt;br /&gt;
#Goplats freeze when they run out of arrows&lt;br /&gt;
%patch $106A1 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite type|Sprite Type]] =&lt;br /&gt;
&lt;br /&gt;
Dropping Goplats use type 6, one of the types that lets Keen stand on a sprite. Changing this may make it impossible for Keen to stand on the platforms. The Goplat uses the same value as all other platforms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat sprite type&lt;br /&gt;
%patch $10515 $06&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
The Goplat has one single action and is spawned using it and does nothing else, making its actions quite simple.&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $1E6EW #Goplat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn Goplats:&lt;br /&gt;
%patch $10541 {$1C4EW}&lt;br /&gt;
&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BBA {$0000W}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
The Goplat type has its own unique behavior. This is what makes it follow Goplat paths.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $0EFC15BFRL #Goplat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 Goplat behavior&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BAE $0EFC15BFRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed]] =&lt;br /&gt;
&lt;br /&gt;
The Goplat&#039;s speeds are controlled by their behavior code and cannot yet be patched. Their animation motion is not used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Animation motion&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BAA [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
Goplats have no sprite collision. They do not interact with any sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collision values ==&lt;br /&gt;
&lt;br /&gt;
Goplats have no collision at all. They do not interact with any sprites. (Keen being able to stand on them is part of &#039;&#039;his&#039;&#039; collision, not the Goplat&#039;s.) Giving the Goplat a collision can make them more interesting. (Destructible for instance.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 collision values&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BB2 $00000000L  #Nothing&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
The Goplats use a single animation with a differing set of &#039;accessory animations&#039; depending on Platform direction. &#039;Their&#039; caches are not however used only by them; instead it is used by &#039;&#039;all&#039;&#039; Platforms. This means that changing them will affect the other Platforms and cause either memory issues or an uncached sprite error. This makes editing the Goplat&#039;s animations difficult.&lt;br /&gt;
&lt;br /&gt;
Interestingly the Goplat sets &#039;&#039;two&#039;&#039; caches, one of which doesn&#039;t cache any animations used by the platforms (and is therefore irrelevant.) It in fact caches the &#039;squished Bip&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Caches&lt;br /&gt;
%patch $32436 [$01A8W] #Platform cache start&lt;br /&gt;
%patch $32486 [$01B0W] #Platform cache end&lt;br /&gt;
&lt;br /&gt;
%patch $32446 [$01A7W] #Squished Bip cache start&lt;br /&gt;
%patch $32496 [$01A7W] #Squished Bip cache end&lt;br /&gt;
&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32B9E $01A8W $01A8W&lt;br /&gt;
%patch $32BA8 $0000W&lt;br /&gt;
&lt;br /&gt;
#First Goplat accessory animation (All others based on this)&lt;br /&gt;
%patch $10742 $01ABW&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessory animation location ==&lt;br /&gt;
&lt;br /&gt;
This patch allows control over where the accessory animations appear relative to the top left of the Goplat&#039;s main animation. These values are positive (below, right) but can also be negative.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat accessory animation location&lt;br /&gt;
%patch $10749 $0100W #Vertical&lt;br /&gt;
%patch $10750 $0100W #Horizontal&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Don&#039;t draw accessory animations ==&lt;br /&gt;
&lt;br /&gt;
This patch removes the accessory animations from the Goplat, leaving it a bare platform.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t draw Goplat Bips in Keen 6&lt;br /&gt;
%patch $10738 $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite Activity Variable|Sitting Platform Activity]] =&lt;br /&gt;
&lt;br /&gt;
The Sitting Platform&#039;s activity is quite important, it must remain active when offscreen and so has its activity value set to 2. If this is otherwise then the Goplats can stop moving offscreen until Keen finds them, this can result in Keen get trapped when a Goplat leaves.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Horizontal-Vertical Platform activity variable&lt;br /&gt;
%patch $1051A $0002W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite clipping and foreground|Clipping and foreground]] =&lt;br /&gt;
&lt;br /&gt;
The Goplats have a foreground variable of 0, meaning they appears behind all sprites and foreground tiles. The clipping cannot be patched by default; having no clipping allowing them to move through solid tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat foreground variable&lt;br /&gt;
%patch $1051F $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat clipping variable&lt;br /&gt;
%patch $1053E $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
The Goplat does not interact with tiles at all, it can pass right through them. Its tile interaction is simply to ensure it stays visible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BB6 $0EFC1754RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Action_Type|Action type]] =&lt;br /&gt;
&lt;br /&gt;
Goplats need to be instantly responsive. As such it uses type 2 for its action.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BA2 $0002W #Stunned&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] =&lt;br /&gt;
&lt;br /&gt;
The Goplats needs neither of these variables and so both are set to 0 in all of their actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat&lt;br /&gt;
%patch $32BA4 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite spawning|Sprite spawn code]] =&lt;br /&gt;
&lt;br /&gt;
Goplats have four types of initiation pointer. In each case all four pointers use the &#039;&#039;same&#039;&#039; initiation code. Notice that there are two different caches set, the first is the general Platform cache, the second actually has no function. The cache is set in &amp;lt;tt&amp;gt;$C7 $06 $C2x3W $0001W&amp;lt;/tt&amp;gt;. The Platform guide sprites have no initiation code, they are merely special cases of &#039;do nothing&#039; sprites.&lt;br /&gt;
&lt;br /&gt;
The initiation codes are where the platforms&#039; directions are set. Notice that both Red and Purple platform initiation codes use the &#039;&#039;same&#039;&#039; spawning code. They do however send a different value to it (o and 1 respectively) that let&#039;s the game change their initial action.&lt;br /&gt;
&lt;br /&gt;
The spawning code is more complex. In the spawning code the third-to-last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the Goplat uses as it proceeds to act in-level. &amp;lt;tt&amp;gt;$C7 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Galaxy Sprite Parameters#Sprite_activity|sprite activity,]] &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction the sprite starts moving in, either $0001W (Facing down), $FFFFW (Facing up) or $0000W (Neither.) &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction. All Goplats start the level moving downwards, but this is modified somehow.&lt;br /&gt;
&lt;br /&gt;
Depending on their initial spawn value the Goplats will leave a certain sprite behind where they were initially spawned so there is no &#039;gap&#039; in the guide loop they occupy. The start of this sprite placement is sprite $005B (Upwards guide arrow.)&lt;br /&gt;
&lt;br /&gt;
The spawn code contains and is thus incompatible with a number of patches elsewhere on this page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6 sprite spawning&amp;quot;&amp;gt;&lt;br /&gt;
%patch $E998 [$022EW] #Path Platform up (At $E64E)&lt;br /&gt;
%patch $E99A [$022EW] #Path Platform right (At $E64E)&lt;br /&gt;
%patch $E99C [$022EW] #Path Platform down (At $E64E)&lt;br /&gt;
%patch $E99E [$022EW] #Path Platform left (At $E64E)&lt;br /&gt;
&lt;br /&gt;
%patch $EA06 [$04A7W] #Platform path up (At $E8C7)&lt;br /&gt;
%patch $EA08 [$04A7W] #Platform path right (At $E8C7)&lt;br /&gt;
%patch $EA0A [$04A7W] #Platform path down (At $E8C7)&lt;br /&gt;
%patch $EA0C [$04A7W] #Platform path left (At $E8C7)&lt;br /&gt;
%patch $EA0E [$04A7W] #Platform path up-right (At $E8C7)&lt;br /&gt;
%patch $EA10 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
%patch $EA12 [$04A7W] #Platform path down-left (At $E8C7)&lt;br /&gt;
%patch $EA14 [$04A7W] #Platform path down-right (At $E8C7)&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform initiation code&lt;br /&gt;
%patch $E64E $8B $46 $FA $05 [$FFDCW]  $50 $57 $56 $9A $0EFC1539RL     $83 $C4&lt;br /&gt;
             $06 $C7 $06 $CD23W  $0001W  $C7 $06 $CD33W  $0001W  $E9 $0259W&lt;br /&gt;
&lt;br /&gt;
#Path Following Platform spawn code&lt;br /&gt;
%patch $104F9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A &lt;br /&gt;
          $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $B8 [$1E6EW]  $50 $53 $9A $08F41219RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $8B $CA $D1 $EB $D1 $E3 $8E $06 $79 $A9 $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $66 $A9 $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W] $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Goplat_(Keen_5)&amp;diff=41222</id>
		<title>Patch:Goplat (Keen 5)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Goplat_(Keen_5)&amp;diff=41222"/>
		<updated>2019-12-16T21:03:13Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Add Goplat errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Patch:Platform|Platforms]] in [[Keen 5]] are sprites that Keen can stand on and sometimes be carried places on. This page lists patches relating to a specific Platform sprite, the Goplat or path following Platform. The page is divided into sections relating to the various sprite properties the patches involved. Being fluent with various sprite patch pages will help when working with these patches.&lt;br /&gt;
&lt;br /&gt;
The Goplats are &#039;path following&#039; platforms; they move in loops and paths. Platforms that move back and forth are [[Patch:Horizontal-Vertical Platform (Keen 5)|Horizontal-Vertical Platforms]].&lt;br /&gt;
&lt;br /&gt;
Patches relating to other Keen 5 platforms can be found at [[Patch:Platform (Keen 5)]]. Patches relating to the Dropping Platform in other Keen games can be found at [[Patch:Platform (Keen 4)]] and [[Patch:Goplat (Keen 6)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bad Spot error =&lt;br /&gt;
&lt;br /&gt;
This error occurs when the Goplats follow an arrow path onto a square with no arrow. Having no direction to move in the game crashes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Goplat errors&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat error&lt;br /&gt;
%patch $10845 [$1C8AW] #Text called from&lt;br /&gt;
%patch $31FCA &amp;quot;Goplat moved to a bad spot: &amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat error&lt;br /&gt;
%patch $10A62 [$1EF0W] #Text called from&lt;br /&gt;
%patch $32230 &amp;quot;Goplat moved to a bad spot!&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ignore error, Goplats freeze ==&lt;br /&gt;
&lt;br /&gt;
These patches circumvent the Goplat error. Instead of crashing the game the Goplats merely freeze in place. This can be useful for creating things such as a Platform that rises up out of the ground to a specific height before stopping. This is impossible to do with regular Goplats. This approach also allows easier troubleshooting of the problem as the exact platform and location responsible can be found.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Goplats freeze on error&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplats freeze when they run out of arrows&lt;br /&gt;
%patch $10844 $EB $0A&lt;br /&gt;
&lt;br /&gt;
#Purple Goplats freeze when they run out of arrows&lt;br /&gt;
%patch $10A61 $EB $0A&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite type|Sprite Type]] =&lt;br /&gt;
&lt;br /&gt;
Dropping Goplats use type 6, one of the types that lets Keen stand on a sprite. Changing this may make it impossible for Keen to stand on the platforms. The Goplat uses the same value as all other platforms. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat sprite type&lt;br /&gt;
%patch $1067b $06&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
There are two types of Goplat; red and purple. The first kind has one single action while the second loops between two actions. Both are spawned in the first of their actions and do nothing else, making their actions quite simple.&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $1C30W #Red Goplat&lt;br /&gt;
 $1C4EW #Purple Goplat&lt;br /&gt;
 $1C6CW #Purple Goplat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn Goplats:&lt;br /&gt;
%patch $106B5 {$1C4EW} #Purple&lt;br /&gt;
%patch $106C4 {$1C30W} #Red&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $31F8C {$0000W}&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $31FAA {$1C6CW}&lt;br /&gt;
%patch $31FC8 {$1C4EW}&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
Each Goplat type has its own unique behavior. This is because one must animate while the other has no need to.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $0F921005RL #Purple Goplat&lt;br /&gt;
 $0F921524RL #Red Goplat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Goplat behaviors&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $31F80 $0F920DE5RL&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $31F9E $0F921005RL&lt;br /&gt;
%patch $31FBE $0F921005RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete behavior code for the Goplats. For the red Goplats the first two lines check that two variables are zero before proceeding with the rest of the code. $000CW is the Goplat&#039;s speed. The rest of the code is currently of unknown function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Red Goplat behavior code&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat behavior&lt;br /&gt;
%patch $10705 $55 $8B $EC $83 $EC $48 $56 $57 $8B $76 $06 $83 $3E {$BF85W}  [$00]&lt;br /&gt;
              {$74} $03 $E9 $0205W  $83 $3E {$BF83W}  [$00] {$74} $03 $E9 $01FBW  $A1&lt;br /&gt;
              $9BB4W  $BA [$000CW]  $F7 $EA $89 $46 $FE $8B $44 $40 $3B $46 $FE&lt;br /&gt;
              $76 $73 $2B $46 $FE $89 $44 $40 $8B $5C $3E $D1 $E3 $8B $BF $26&lt;br /&gt;
              $19 $83 {$FF} [$01] {$75} $0B $A1 $BF85W  $03 $46 $FE $A3 $BF85W  $EB&lt;br /&gt;
              $14 $83 {$FFFFW}  [$75] $0F $8B $46 $FE $F7 $D8 $8B $16 $BF85W  $03&lt;br /&gt;
              $D0 $89 $16 $BF85W  $8B $5C $3E $D1 $E3 $8B $BF $36 $19 $83 {$FF}&lt;br /&gt;
              [$0]1 {$75} $0F $A1 $BF83W  $03 $46 $FE $A3 $BF83W  $5F $5E $8B $E5&lt;br /&gt;
              $5D $CB&lt;br /&gt;
                      $83 {$FFFFW}  [$74] $03 $E9 $0190W  $8B $46 $FE $F7 $D8 $8B&lt;br /&gt;
              $16 $BF83W  $03 $D0 $89 $16 $BF83W  $5F $5E $8B $E5 $5D $CB $5F&lt;br /&gt;
              $5E $8B $E5 $5D $CB&lt;br /&gt;
                                  $8B $5C $3E $D1 $E3 $8B $BF $26 $19 $83 {$FF}&lt;br /&gt;
              [$01] {$75} $09 $8B $44 $40 $01 $06 $BF85W  $EB $0E $83 {$FFFFW}  [$75]&lt;br /&gt;
              $09 $8B $44 $40 $F7 $D8 $01 $06 $BF85W  $8B $5C $3E $D1 $E3 $8B&lt;br /&gt;
              $BF $36 $19 $83 {$FF} [$01] {$75} $09 $8B $44 $40 $01 $06 $BF83W  $EB&lt;br /&gt;
              $0E $83 {$FFFFW}  [$75] $09 $8B $44 $40 $F7 $D8 $01 $06 $BF83W  $8B&lt;br /&gt;
              $44 $0A $03 $06 $BF85W  $B1 $08 $D3 $E8 $89 $46 $FC $8B $44 $0C&lt;br /&gt;
              $03 $06 $BF83W  $D3 $E8 $89 $46 $FA $8B $5E $FA $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $46 $FC $D1 $E0 $03&lt;br /&gt;
              $D8 $26 $8B $07 $2D [$005BW]  $89 $44 $3E $83 $7C $3E [$00] {$7C} $09&lt;br /&gt;
              $83 $7C $3E [$08] {$7F} $03 $E9 $0080W  $16 $8D $46 $B8 [$1E50W]  $B8&lt;br /&gt;
              [$1C8AW]  $50 $B9 [$003CW]  $9A $000032E5RL     $16 $8D $46 $F4 $50&lt;br /&gt;
              $1E $B8 [$1CC6W]  $50 $B9 [$0005W]  $9A $000032E5RL     $B8 [$0010W]&lt;br /&gt;
              $50 $8D $46 $F4 $50 {$FF} [$74] $0A $9A $00001C6FRL     $83 $C4 $06&lt;br /&gt;
              $50 $8D $46 $B8 $50 $9A $00002281RL     $83 $C4 $04 $B8 [$1EEEW]&lt;br /&gt;
              $50 $8D $46 $B8 $50 $9A $00002281RL     $83 $C4 $04 $B8 [$0010W]&lt;br /&gt;
              $50 $8D $46 $F4 $50 {$FF} [$74] $0C $9A $00001C6FRL     $83 $C4 $06&lt;br /&gt;
              $50 $8D $46 $B8 $50 $9A $00002281RL     $83 $C4 $04 $8D $46 $B8&lt;br /&gt;
              $50 $9A $037D022FRL     $83 $C4 $02 $8B $44 $40 $29 $46 $FE $B8&lt;br /&gt;
              [$0100W]  $2B $46 $FE $89 $44 $40 $8B $5C $3E $D1 $E3 $8B $BF $26&lt;br /&gt;
              $19 $83 {$FF} [$01] {$75} $0B $A1 $BF85W  $03 $46 $FE $A3 $BF85W  $EB&lt;br /&gt;
              $0E $83 [$FFFFW]  {$75} $09 $A1 $BF85W  $2B $46 $FE $A3 $BF85W  $8B&lt;br /&gt;
              $5C $3E $D1 $E3 $8B $BF $36 $19 $83 {$FF} [$01] {$75} $0F $A1 $BF83W&lt;br /&gt;
              $03 $46 $FE $A3 $BF83W  $5F $5E $8B $E5 $5D $CB&lt;br /&gt;
                                                              $83 [$FFFFW]  {$75}&lt;br /&gt;
              $09 $A1 $BF83W  $2B $46 $FE $A3 $BF83W  $5F $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed]] =&lt;br /&gt;
&lt;br /&gt;
The Goplat&#039;s speeds are controlled by their behavior code and cannot yet be patched. Their animation motion is not used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Animation motion&amp;quot;&amp;gt;&lt;br /&gt;
#Info path red plat&lt;br /&gt;
%patch $31F7C [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Info path purple plat&lt;br /&gt;
%patch $31F9A [$0000W $0000W]&lt;br /&gt;
%patch $31FB8 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
Goplats have no sprite collision. They do not interact with any sprites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collision values ==&lt;br /&gt;
&lt;br /&gt;
Goplats have no collision at all. They do not interact with any sprites. (Keen being able to stand on them is part of &#039;&#039;his&#039;&#039; collision, not the Goplat&#039;s.) Giving the Goplat a collision can make them more interesting. (Destructible for instance.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 collision values&amp;quot;&amp;gt;&lt;br /&gt;
#Info path Red Goplat&lt;br /&gt;
%patch $31F84 $00000000L  #Nothing&lt;br /&gt;
&lt;br /&gt;
#Info path Purple plat&lt;br /&gt;
%patch $31FA2 $00000000L  #Nothing&lt;br /&gt;
%patch $31FC0 $00000000L  #Nothing&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
The Goplats use one or two animations by default; a different one for each action. &#039;Their&#039; caches are not however used only by them; instead it is used by &#039;&#039;all&#039;&#039; red\purple platforms. This means that changing them will affect the other red\purple platforms and cause either memory issues or an uncached sprite error. This makes editing the Goplat&#039;s animations difficult.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 Cache&amp;quot;&amp;gt;&lt;br /&gt;
#Caches&lt;br /&gt;
%patch $31A44 {$01A6W} #Purple plat cache start&lt;br /&gt;
%patch $31A98 {$01A7W} #Cache end&lt;br /&gt;
&lt;br /&gt;
%patch $31A4A {$01BEW} #Red plat cache start&lt;br /&gt;
%patch $31A9E {$01BEW} #Cache end&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $31F70 $01BEW $01BEW #Red plat&lt;br /&gt;
%patch $31F7A $0000W        #Wait&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $31F8E $01A6W $01A6W #Purple plat&lt;br /&gt;
%patch $31F98 $0000W        #Wait&lt;br /&gt;
%patch $31FAC $01A7W $01A7W #Purple plat&lt;br /&gt;
%patch $31FB6 $0000W        #Wait&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite clipping and foreground|Clipping and foreground]] =&lt;br /&gt;
&lt;br /&gt;
The Goplats have a foreground variable of 0, meaning they appears behind all sprites and foreground tiles. The clipping cannot be patched by default; having no clipping allowing them to move through solid tiles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat foreground variable&lt;br /&gt;
%patch $10685 $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Goplat clipping variable&lt;br /&gt;
%patch $106A4 $0000W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
The Goplat does not interact with tiles at all, it can pass right through them. Its tile interaction is simply to ensure it stays visible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $31F88 $090B17B5RL&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $31FA6 $090B17B5RL&lt;br /&gt;
%patch $31FC4 $090B17B5RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Action_Type|Action type]] =&lt;br /&gt;
&lt;br /&gt;
Both platforms need to be instantly responsive. The Red Goplat does not need to animate and thus uses type 2 for its action. The Purple Goplats do however and must use type 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $31F74 $0002W #Stunned&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $31F92 $0003W #Can fall&lt;br /&gt;
%patch $31FB0 $0003W #Can fall&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] =&lt;br /&gt;
&lt;br /&gt;
The Goplats needs neither of these variables and so both are set to 0 in all of their actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $31F76 [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $31F94 [$0000W $0000W]&lt;br /&gt;
%patch $31FB2 [$0000W $0000W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite spawning|Sprite spawn code]] =&lt;br /&gt;
&lt;br /&gt;
Both Red and Purple Goplats have four types of initiation pointer. In each case all four pointers use the &#039;&#039;same&#039;&#039; initiation code. (Each set of four however uses a different initiation code from each other.) Notice that there are two different caches; one for each platform type. The cache is set in &amp;lt;tt&amp;gt;$C7 $06 $C2xxW $0001W&amp;lt;/tt&amp;gt;. The Platform guide sprites have no initiation code, they are merely special cases of &#039;do nothing&#039; sprites.&lt;br /&gt;
&lt;br /&gt;
The initiation codes are where the platforms&#039; directions are set. Notice that both Red and Purple platform initiation codes use the &#039;&#039;same&#039;&#039; spawning code. They do however send a different value to it (0 and 1 respectively) that let&#039;s the game change their initial action.&lt;br /&gt;
&lt;br /&gt;
The spawning code is more complex. In the spawning code the third- and fourth-to-last blue highlighted value is the [[Patch:Sprite actions|sprite action]] the Platform uses as it proceeds to act in-level. Notice that there are &#039;&#039;two&#039;&#039; actions in the code; as noted above Red and Purple platforms send a different value to the spawning code letting it &#039;pick&#039; this one difference between the two platforms. Otherwise their spawning is the same.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $06 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|clipping,]] &amp;lt;tt&amp;gt;$C7 $07 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite type|sprite type,]] &amp;lt;tt&amp;gt;$C7 $20 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Sprite clipping and foreground|foreground value.]] Finally &amp;lt;tt&amp;gt;$D3 $E0 $05 $xxxx&amp;lt;/tt&amp;gt; is how far down (Or more usually &#039;&#039;up&#039;&#039;) the sprite is spawned from where it is placed. This is necessary for sprites that walk on the ground as they can only be placed in the level at multiples of 16 pixels high while their actual height can be anything.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$C7 $02 $xxxxW&amp;lt;/tt&amp;gt; sets the [[Patch:Galaxy Sprite Parameters#Sprite_activity|sprite activity,]] &amp;lt;tt&amp;gt;$C7 $47 $10 $xxxxW&amp;lt;/tt&amp;gt; is the vertical direction the sprite starts moving in, either $0001W (Facing down), $FFFFW (Facing up) or $0000W (Neither.) &amp;lt;tt&amp;gt;$C7 $47 $0E $xxxxW&amp;lt;/tt&amp;gt; is the horizontal direction. All Goplats start the level moving downwards, but this is modified somehow.&lt;br /&gt;
&lt;br /&gt;
Depending on their initial spawn value the Red or Purple Goplats will leave a certain sprite behind where they were initially spawned so there is no &#039;gap&#039; in the guide loop they occupy. The start of this sprite placement is sprite $005B (Upwards guide arrow.)&lt;br /&gt;
&lt;br /&gt;
The spawn code contains and is thus incompatible with a number of patches elsewhere on this page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5 sprite spawning&amp;quot;&amp;gt;&lt;br /&gt;
%patch $F50C [$0387W] #Up Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F50E [$0387W] #Right Red Goplat (At $F0D7)&lt;br /&gt;
%patch $F510 [$0387W] #Down Red Goplat  (At $F0D7)&lt;br /&gt;
%patch $F512 [$0387W] #Left Red Goplat  (At $F0D7)&lt;br /&gt;
&lt;br /&gt;
%patch $F564 [$057DW] #Up Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F566 [$057DW] #Right Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F568 [$057DW] #Down Purple Goplat (At $F2CD)&lt;br /&gt;
%patch $F56A [$057DW] #Left Purple Goplat (At $F2CD)&lt;br /&gt;
&lt;br /&gt;
%patch $F57A [$0657W] #Up Platform guide (At $F3A7)&lt;br /&gt;
%patch $F57C [$0657W] #Right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F57E [$0657W] #Down Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F580 [$0657W] #Left Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F582 [$0657W] #Up-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F584 [$0657W] #Down-right Platform guide  (At $F3A7)&lt;br /&gt;
%patch $F586 [$0657W] #Down-left  Platform guide (At $F3A7)&lt;br /&gt;
%patch $F588 [$0657W] #Up-left Platform guide  (At $F3A7)&lt;br /&gt;
&lt;br /&gt;
#Red Goplat&lt;br /&gt;
%patch $F0D7 $33 $C0 $50 $8B $46 $FA $05 $FFDCW  $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
             $83 $C4 $08 $C7 $06 $C29DW  $0001W  $E9 $02B3W&lt;br /&gt;
&lt;br /&gt;
#Purple Goplat&lt;br /&gt;
%patch $F2CD $B8 [$0001W]  $50 $8B $46 $FA $05 $B0 $FF $50 $57 $56 $9A {$0F920D3FRL}&lt;br /&gt;
                     $83 $C4 $08 $C7 $06 $C297W  $0001W  $E9 $00BCW&lt;br /&gt;
&lt;br /&gt;
#Goplat spawning code&lt;br /&gt;
%patch $1065F $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $33 $C0 $50 $9A&lt;br /&gt;
           $06B91DCDRL    $83 $C4 $02 $8B $1E $40 $9E $C7 $07 [$0006W]  $C7 $47&lt;br /&gt;
              $02 [$0002W]  $C7 $47 $20 [$0000W]  $8B $C6 $B1 $08 $D3 $E0 $89 $47&lt;br /&gt;
              $0A $8B $C7 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0000W]  $C7 $47 $10&lt;br /&gt;
              [$0001W]  $C7 $47 $06 [$0000W]  $83 $7E $0C $00 $74 $17 $83 $47 $0A&lt;br /&gt;
              $40 $83 $47 $0C $40 $B8 [$1C4EW]  $50 $53 $9A $090B11C4RL    $83&lt;br /&gt;
              $C4 $04 $EB $10 $B8 [$1C30W]  $50 $FF $36 $40 $9E $9A $090B11C4RL&lt;br /&gt;
                  $83 $C4 $04 $8B $46 $0A $05 [$005BW]  $8B $DF $D1 $E3 $8B $9F&lt;br /&gt;
              $87 $BF $D1 $EB $D1 $E3 $8E $06 $53 $9E $8B $D6 $D1 $E2 $03 $DA&lt;br /&gt;
              $26 $89 $07 $8B $1E $40 $9E $8B $46 $0A $89 $47 $3E $C7 $47 $40&lt;br /&gt;
              [$0100W]  $5F $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_walking_(Dreams)&amp;diff=41201</id>
		<title>Patch:Keen walking (Dreams)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_walking_(Dreams)&amp;diff=41201"/>
		<updated>2019-12-13T15:23:40Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Data update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains patches that relate to the player walking and under what conditions the player starts and stops doing so. This page also covers patches relating to Keen standing still as these are closely related. It does &#039;&#039;not&#039;&#039; cover patches relating to Keen being [[Patch:Keen bored|bored,]] [[Patch:Keen mooning|mooning]] or other actions where he doesn&#039;t move.&lt;br /&gt;
&lt;br /&gt;
Other patches relating to Keen can be found under [[Patch:Keen (Keen 4)|Keen (Keen 4)]], [[Patch:Keen (Keen 5)|Keen (Keen 5)]], [[Patch:Keen (Keen 6)|Keen (Keen 6)]] and [[Patch:Keen (Keen Dreams)|Keen (Keen Dreams)]]. Patches for Keen&#039;s walking in [[Patch:Keen walking (Vorticons)|Vorticons]] and [[Patch:Keen walking (Galaxy)|Galaxy]] have their own pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
Keen is spawned standing when he first starts a level. While standing he continues to stand as long as nothing else happens. When arrow keys are pressed, standing Keen will start walking. If he attempts to walk into a wall he will be set to standing.&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s walk cycle is four actions long, when the arrow keys are no longer pressed he will revert to standing.&lt;br /&gt;
&lt;br /&gt;
Keen will revert to his standing action under a wide variety of circumstances since it is the most basic thing he can do. There are no less than five situations where this happens. The first is when Keen walks into solid walls; this stops him moving entirely. The second and third situations happen in his standing\walking code and make him stand if no keys are pressed. The fourth situation is when he stop [[Patch:Keen look|looking down.]] The fifth is when Keen lands on the ground after falling through the air.&lt;br /&gt;
&lt;br /&gt;
Keen will also automatically return to his standing action after performing certain other actions. No less than four of these occur after Keen&#039;s various [[Patch:Keen bored|bored sequences.]] Another two occur after [[Patch:Keen shooting (Dreams)|Keen has thrown a Flower Power while standing on the ground.]] Finally there are two situations after [[Patch:Keen jumping (Dreams)|Keen has jumped/fallen.]] (These aren&#039;t in fact used as the above mentioned &#039;land on ground&#039; code overrides them.)&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $0ED8W #Keen stand&lt;br /&gt;
 $1388W #Keen walk 1&lt;br /&gt;
 $13A6W #Keen walk 2&lt;br /&gt;
 $13C4W #Keen walk 3&lt;br /&gt;
 $13E2W #Keen walk 4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn Keen -standing&lt;br /&gt;
%patch $6BB5  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen standing Keen keeps standing&lt;br /&gt;
%patch $24964 [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Start walking when arrows pressed&lt;br /&gt;
%patch $6CB6  [$1388W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s walk loop&lt;br /&gt;
%patch $24E14 [$13A6W]&lt;br /&gt;
%patch $24E32 [$13C4W]&lt;br /&gt;
%patch $24E50 [$13E2W]&lt;br /&gt;
%patch $24E6E [$1388W]&lt;br /&gt;
&lt;br /&gt;
#Keen goes to standing when walking against walls&lt;br /&gt;
%patch $7A39  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen goes to standing when no keys are pressed&lt;br /&gt;
%patch $6D62  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen goes to standing before keys are pressed&lt;br /&gt;
%patch $6DA0  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen stop looking down when key not pressed&lt;br /&gt;
%patch $6F21  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen stand after landing on ground&lt;br /&gt;
%patch $7B78  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen returns to standing after...&lt;br /&gt;
%patch $24982 [$0ED8W] #...being bored once&lt;br /&gt;
%patch $249FA [$0ED8W] #...being bored twice&lt;br /&gt;
%patch $24AAE [$0ED8W] #...being bored thrice&lt;br /&gt;
%patch $24B44 [$0ED8W] #...waking up from napping&lt;br /&gt;
%patch $24EE6 [$0ED8W] #...shooting l\r&lt;br /&gt;
%patch $24F40 [$0ED8W] #...shooting up&lt;br /&gt;
%patch $24F9A [$0ED8W] #...jumping vertically&lt;br /&gt;
%patch $24FF4 [$0ED8W] #...jumping horizontally&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
Walking Keen only uses one behavior when walking, with an additional behavior when standing. The standing behavior is also used by many other actions where Keen does not move, such as his bored sequence.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $05E80EF9RL #Keen still&lt;br /&gt;
 $05E811A6RL #Keen walking&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing behavior&lt;br /&gt;
%patch $24958 $05E80EF9RL&lt;br /&gt;
&lt;br /&gt;
#Keen walk behaviors&lt;br /&gt;
%patch $24E08 $05E811A6RL&lt;br /&gt;
%patch $24E26 $05E811A6RL&lt;br /&gt;
%patch $24E44 $05E811A6RL&lt;br /&gt;
%patch $24E62 $05E811A6RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standing behavior code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s standing behavior, used by many actions where the player stands still. It is divided up into several sections. The very first section checks for all possible player inputs, arrow keys, jump and shoot. If &#039;&#039;any&#039;&#039; of these keys are being pressed the game runs code to make Keen do stuff. (This is &#039;ground reactions&#039; and involves things like starting to walk or shoot.) Interestingly it changes Keen&#039;s action to &#039;stand&#039; right before it does this.&lt;br /&gt;
&lt;br /&gt;
The remaining sections deal with Keen being [[Patch:Keen bored|bored.]] The second section points to a list of code to go to depending on Keen&#039;s &#039;boredom count&#039;. (The list is 5+1 actions long.) Each section is broadly the same, a &#039;boredom timer&#039; is checked, and if it is higher than a certain value, Keen&#039;s action is changed to  one of his boredom actions, and he timer is reset.&lt;br /&gt;
&lt;br /&gt;
Note that times are not cumulative; the second boredom timer is &#039;&#039;not&#039;&#039; the total time since no key has been pressed, but rather the time since the last boredom action started. It should be noted that the timer is &#039;&#039;not&#039;&#039; reset in the final action as there are no more bored actions after it. It should also be noted that one action sequence occurs twice in the full boredom sequence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing behavior&lt;br /&gt;
%patch $6D79 $55 $8B $EC $56 $8B $76 $06 $83 $3E $7022W  $08 $75 $0E $83 $3E&lt;br /&gt;
             $7016W  $00 $75 $07 $83 $3E $7018W  $00 $74 $17 $33 $C0 $89 $44&lt;br /&gt;
             $40 $89 $44 $3E $C7 $44 $1E [$0ED8W]  $56 $0E $E8 $FEF8W  $44 $44&lt;br /&gt;
             $E9 $00A4W&lt;br /&gt;
                         $8B $44 $36 $25 [$FFF8W]  $3D [$0018W]  $74 $0A $8B $44&lt;br /&gt;
             $3E $03 $06 $D4 $BD $89 $44 $3E $8B $5C $40 $83 $FB [$05] $76 $03&lt;br /&gt;
             $E9 $0084W  $D1 $E3 $2E $FF $A7 [$0FD4W]&lt;br /&gt;
                                                     $81 $7C $3E [$00C8W]  {$7E}&lt;br /&gt;
             $76 $FF $44 $40 $C7 $44 $1E [$0EF6W]  $C7 $44 $3E [$0000W]  $EB $67&lt;br /&gt;
             $81 $7C $3E [$012CW]  {$7E} $60 $FF $44 $40 $C7 $44 $1E [$0F8CW]  $C7&lt;br /&gt;
             $44 $3E [$0000W]  $EB $51&lt;br /&gt;
                                     $81 $7C $3E [$02BCW]  {$7E} $4A $FF $44 $40&lt;br /&gt;
             $C7 $44 $1E [$0F14W]  $C7 $44 $3E [$0000W]  $EB $3B&lt;br /&gt;
                                                             $81 $7C $3E [$0190W]&lt;br /&gt;
                 {$7E} $34 $FF $44 $40 $C7 $44 $1E [$0EF6W]  $C7 $44 $3E [$0000W]&lt;br /&gt;
             $EB $25&lt;br /&gt;
                     $81 $7C $3E [$02BCW]  {$7E} $1E $FF $44 $40 $C7 $44 $1E [$0F14W]&lt;br /&gt;
                 $C7 $44 $3E [$0000W]  $EB $0F&lt;br /&gt;
                                              $81 $7C $3E [$0190W]  {$7E} $08 $FF&lt;br /&gt;
             $44 $40 $C7 $44 $1E [$1040W]  $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boredom actions list&lt;br /&gt;
%patch $6E54 [$0F53W]&lt;br /&gt;
             [$0F69W]&lt;br /&gt;
             [$0F7FW]&lt;br /&gt;
             [$0F95W]&lt;br /&gt;
             [$0FABW]&lt;br /&gt;
             [$0FC1W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Walking behavior code==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s walking behavior. On the first line the game checks inputs (&#039;Ground reactions&#039;), this will make him do various things like start or stop walking. This in fact duplicates most of the code that follows, elsewhere.&lt;br /&gt;
&lt;br /&gt;
After this comes code to check if Keen can jump, it checks a few variables including the &#039;already jumping&#039; variable, and if all is clear sound $02 will play, Keen&#039;s upwards speed will be set to $FFD8W and his jump timer to $10. Finally his action will be set to the first frame of his jumping sequence.&lt;br /&gt;
&lt;br /&gt;
The next section checks if Keen can [[Patch:Keen shooting (Dreams)|throw a Flower Power horizontally,]] it is considerably simpler than his jumping check, only changing his action and the &#039;already throwing&#039; variable.&lt;br /&gt;
&lt;br /&gt;
Finally, on the last line, a list is checked. This gives Keen&#039;s running speeds on various slopes. (And thus applies only if Keen is still running and not doing anything else.) This is explained more fully in the speed section below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen walking behavior&lt;br /&gt;
%patch $7026 $55 $8B $EC $4C $4C $56 $8B $76 $06 $83 $3E $701EW  $00 $75 $0A #Check inputs&lt;br /&gt;
             $56 $0E $E8 $FC64W  $44 $44 $E9 $008DW  $A1 $701EW  $89 $44 $0E&lt;br /&gt;
             $83 $3E $7020W  $00 $74 $0B $56 $0E $E8 $FB74W  $44 $44 $0B $C0 #Check to jump&lt;br /&gt;
             $75 $75 $83 $3E $7016W  $00 $74 $3C $83 $3E $8EDAW  $00 $75 $35&lt;br /&gt;
             $B8 [$0002W]  $50 $9A $10BB1282RL     $44 $44 $8B $44 $0E $B1 $04&lt;br /&gt;
             $D3 $E0 $89 $44 $16 $C7 $44 $18 [$FFD8W]  $C7 $44 $12 $0000W  $C7&lt;br /&gt;
             $44 $14 $0000W  $C7 $06 $8EDAW  $0001W  $C7 $06 $8EE4W  [$0010W]&lt;br /&gt;
             $C7 $44 $1E [$152CW]  $83 $3E $7018W  $00 $74 $14 $83 $3E $8EDCW&lt;br /&gt;
             $00 $75 $0D $C7 $44 $1E [$1400W]  $C7 $06 $8EDCW  $0001W  $EB $17 #Check to Throw&lt;br /&gt;
             $8B $5C $36 $81 $E3 $0007W  $D1 $E3 $8B $87 [$1694W]  $F7 $2E $D4 #Speed list&lt;br /&gt;
             $BD $89 $46 $FE $01 $44 $12 $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ground reactions ==&lt;br /&gt;
&lt;br /&gt;
When Keen is &#039;on the ground&#039; (Standing, walking, most of his bored sequence, etc.) his behaviors point to a shared segment of code that handles keypresses. This avoids requiring a large segment of code for every separate behavior. It handles everything Keen can do while on the ground; shooting, jumping, pogoing and looking up\down.&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s input handling when he is on the ground (Standing or walking). The first section checks to see if a left or right arrow is being pressed. If it is Keen is sent into his first walking action.&lt;br /&gt;
&lt;br /&gt;
The second section does a similar thing with dropping down from one-way-up ledges; the key is checked then &#039;is Keen jumping already?&#039; If Keen can jump then sound $02 is played, Keen&#039;s horizontal speed is set to 0 and his vertical speed to &amp;lt;tt&amp;gt;$FFD8W&amp;lt;/tt&amp;gt; (upwards). Keen is given a &#039;jump duration&#039; of $10 and his action is changed to his first falling action.&lt;br /&gt;
&lt;br /&gt;
The third section deals with alt being pressed. First the key is checked, then the &#039;is Keen shooting already?&#039; variable. If he is then the game skips to the next section. If he isn&#039;t then the game sets this to 1. Then Keen&#039;s vertical direction is checked; if Keen is looking up (Vertical direction is -1) he goes to the &#039;shoot up&#039; action. Otherwise he goes to the &#039;shoot horizontally&#039; action.&lt;br /&gt;
&lt;br /&gt;
Section 5 deals with Keen looking up or down. First his looking direction is checked, whether it is +-1. If it is neither the code jumps to Keen&#039;s standing action. This will cause any behavior calling this code to make Keen go to standing if he&#039;s doing nothing else.&lt;br /&gt;
&lt;br /&gt;
Otherwise looking up is run first; Keen&#039;s sprite is sent to some checking code, if this returns anything but zero the remaining code is skipped. Otherwise the game sets Keen&#039;s action to &#039;look up&#039;.&lt;br /&gt;
&lt;br /&gt;
After this is looking down; it sends Keen&#039;s sprite to a check and, if this returns anything but zero, changes his action to &#039;look down&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen Ground Input code&lt;br /&gt;
%patch $6C9F $55 $8B $EC $56 $8B $76 $06 $83 $3E $701EW  $00 $74 $24 $A1 $701EW&lt;br /&gt;
                 $89 $44 $0E $C7 $44 $1E [$1388W]  $8B $44 $0E $F7 $2E $94 $13&lt;br /&gt;
             $F7 $2E $D4 $BD $89 $44 $12 $56 $9A $05E811A6RL     $44 $44 $E9&lt;br /&gt;
             $00A5W&lt;br /&gt;
                     $83 $3E $7016W  $00 $74 $39 $83 $3E $8EDAW  $00 $75 $32&lt;br /&gt;
             $B8 [$0002W]  $50 $9A $10BB1282RL     $44 $44 $C7 $44 $16 $0000W &lt;br /&gt;
             $C7 $44 $18 [$FFD8W]  $C7 $44 $12 $0000W  $C7 $44 $14 $0000W  $C7&lt;br /&gt;
             $06 $8EE4W  [$0010W]  $C7 $44 $1E [$14D2W]  $C7 $06 $8EDAW  $0001W&lt;br /&gt;
             $EB $65&lt;br /&gt;
                     $83 $3E $7018W  $00 $74 $22 $83 $3E $8EDCW  $00 $75 $1B&lt;br /&gt;
             $83 $3E $7020W  $FF $75 $07 $C7 $44 $1E [$1478W]  $EB $05 $C7 $44&lt;br /&gt;
             $1E [$1400W]  $C7 $06 $8EDCW  $0001W  $EB $3C&lt;br /&gt;
                                                         $A1 $7020W  $3D [$FFFFW]&lt;br /&gt;
                 $74 $0B $0B $C0 $74 $19 $3D [$0001W]  $74 $1B $EB $29 $56 $0E&lt;br /&gt;
             $E8 $FE74W  $44 $44 $0B $C0 $75 $1E $C7 $44 $1E [$1130W]  $EB $17&lt;br /&gt;
             $C7 $44 $1E [$0ED8W]  $EB $10 $56 $0E $E8 $FE5BW  $44 $44 $0B $C0&lt;br /&gt;
             $75 $05 $C7 $44 $1E [$114EW]  $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed]] =&lt;br /&gt;
&lt;br /&gt;
Keen has a constant animation speed when running that depends both on the values listed here and how fast he animates. Keen has no horizontal speed when standing still, but does attempt to move down; when combined with his animation speed and &#039;stick to ground&#039; type this causes him to fall down when there is no longer any solid ground beneath him. (Other actions such as looking up will not respond to gravity so readily.)&lt;br /&gt;
&lt;br /&gt;
Keen also slows down or speeds up going up and down slopes respectively; the speed changes are stored in a list accessed by the walking behavior. The values in the list are for Keen moving right, when Keen moves left the value is reversed. (So for example when walking right over a Top-&amp;gt;bottom tile Keen&#039;s speed is increased by 8 as this is downhill. When walking left, or uphill, his speed is &#039;&#039;slowed&#039;&#039; by 8.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing speed&lt;br /&gt;
%patch $24954 [$0000W $0010W]&lt;br /&gt;
&lt;br /&gt;
#Keen running speeds&lt;br /&gt;
%patch $24E04 [$0018W $0000W]&lt;br /&gt;
%patch $24E22 [$0018W $0000W]&lt;br /&gt;
%patch $24E40 [$0018W $0000W]&lt;br /&gt;
%patch $24E5E [$0018W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Modifier list location&lt;br /&gt;
%patch $70C1 [$1694W]&lt;br /&gt;
&lt;br /&gt;
#Walking speed modifiers&lt;br /&gt;
%patch $25104 [$0000W] #No ground        (Don&#039;t affect speed)&lt;br /&gt;
              [$0000W] #Walking on flat  (Don&#039;t affect speed)&lt;br /&gt;
              [$0004W] #Top -&amp;gt; middle    (Increase by 4)&lt;br /&gt;
              [$0004W] #Middle -&amp;gt; bottom (Increase by 4)&lt;br /&gt;
              [$0008W] #Top -&amp;gt; bottom    (Increase by 8)&lt;br /&gt;
              [$FFFCW] #Bottom -&amp;gt; middle (Decrease by 4)&lt;br /&gt;
              [$FFFCW] #Middle -&amp;gt; top    (Decrease by 4)&lt;br /&gt;
              [$FFF8W] #Bottom -&amp;gt; top    (Decrease by 8)&lt;br /&gt;
              [$FFF8W] #???              (Decrease by 8)&lt;br /&gt;
              [$0000W] #???              (Don&#039;t affect speed)&lt;br /&gt;
              [$0008W] #???              (Increase by 8)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
Keen really has only one sprite collision and this is used in most of his actions. Naturally this includes both standing and walking. The actual collision is explained and dissected on Keen&#039;s [[Patch:Keen (Keen Dreams)|Keen Dreams page.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing&lt;br /&gt;
%patch $2495C $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen walking&lt;br /&gt;
%patch $24E0C $05E817FCRL&lt;br /&gt;
%patch $24E2A $05E817FCRL&lt;br /&gt;
%patch $24E48 $05E817FCRL&lt;br /&gt;
%patch $24E66 $05E817FCRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s walking sequence consists of four actions. These behave pretty simply using eight total animations animating every 6 ticks. Keen&#039;s standing sequence is a single action whose &#039;animation&#039; speed controls how quickly Keen responds to outside influences. (By default it&#039;s 4, faster tan most visible game changes.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing animations&lt;br /&gt;
%patch $24948 $0050W $0048W&lt;br /&gt;
%patch $24952 $0004W&lt;br /&gt;
&lt;br /&gt;
#Keen walking animations&lt;br /&gt;
%patch $24DF8 $0051W $0049W&lt;br /&gt;
%patch $24E02 $0006W&lt;br /&gt;
%patch $24E16 $0052W $004AW&lt;br /&gt;
%patch $24E20 $0006W&lt;br /&gt;
%patch $24E34 $0053W $004BW&lt;br /&gt;
%patch $24E3E $0006W&lt;br /&gt;
%patch $24E52 $0054W $004CW&lt;br /&gt;
%patch $24E5C $0006W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite Sounds|Sounds]] =&lt;br /&gt;
&lt;br /&gt;
There are several sounds related to Keen walking or standing. The first is when Keen jumps while standing. The same sound plays when Keen jumps while walking. Another is when Keen is standing and the ground vanishes beneath him. This seems quite obtuse, but since Keen goes to standing after he shoots (Even when in the air) this sound actually plays many times when Keen throws a Flower Power. (It just isn&#039;t heard.)&lt;br /&gt;
&lt;br /&gt;
Unlike in Keen Galaxy, Keen doesn&#039;t make noise when he walks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
%patch $6CE0 $02     #Keen jump while standing sound&lt;br /&gt;
%patch $6CDF $EB $09 #Don&#039;t play Keen jump while standing sound&lt;br /&gt;
&lt;br /&gt;
%patch $7067 $02     #Keen jump while walking sound&lt;br /&gt;
%patch $7066 $EB $09 #Don&#039;t play Keen jump while walking sound&lt;br /&gt;
&lt;br /&gt;
%patch $7970 $19     #Keen standing drops down sound&lt;br /&gt;
%patch $796F $EB $09 #Don&#039;t play Keen standing drops down sound&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen makes noise while walking ==&lt;br /&gt;
&lt;br /&gt;
This patch alters things so that Keen makes sounds while walking, at least in levels. (Walking on the map is different.) It works by creating space by merging Keen&#039;s walking and standing tile collisions to an extent. Some other patches on this page are incompatible with it since it slightly rearranges things. (Mostly those involving Keen walking against walls.)&lt;br /&gt;
&lt;br /&gt;
Two sounds are played in a 1-2-1-2 rhythm depending on a timer that is reset to zero after sound two plays. The timing between the two sounds is $0010W and $0020W here and the sounds used are $02 and $03. These parameters will probably need to be tweaked for the best sounding walk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen makes a sound when he walks&lt;br /&gt;
%patch $7A17 $EB $4E $83 $7C $38 $00 $75 $06 $83 $7C $3C $00 $74 $1B $C7 $44&lt;br /&gt;
             $1A $0000W  $C7 $44 $1E $0ED8W  $A1 $0ED8W  $83 $7C $0E $01 $75&lt;br /&gt;
             $03 $A1 $0EDAW  $89 $44 $20 $EB $27 $FF $06 $0368W  $B8 [$0003W]&lt;br /&gt;
             $81 $3E $0368W  [$0010W]  $74 $10 $81 $3E $0368W  [$0020W]  $7C $10&lt;br /&gt;
             $33 $C0 $A3 $0368W  $B8 [$0002W]  $50 $9A $10BB1282RL     $44 $44&lt;br /&gt;
             $E9 $FF45W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
Keen has two interactions, one while standing and one while walking. Keen&#039;s standing interaction deals with him landing on flat ground and being moved by conveyor belts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen stand&lt;br /&gt;
%patch $24960 $05E81AE2RL&lt;br /&gt;
&lt;br /&gt;
#Keen walking&lt;br /&gt;
%patch $24E10 $05E81B50RL&lt;br /&gt;
%patch $24E2E $05E81B50RL&lt;br /&gt;
%patch $24E4C $05E81B50RL&lt;br /&gt;
%patch $24E6A $05E81B50RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standing interaction code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s standing tile interaction. In Keen Dreams the first line checks whether Keen is standing on solid ground. If not the falling sequence is activated. Sound $19 plays, Keen changes to the falling action ($1568W). After this Keen&#039;s jump variable is set to 0, preventing him from jumping while falling. It should be noted that, for various reasons, this code is run quite often after Keen completes things like throwing a Flower Power.&lt;br /&gt;
&lt;br /&gt;
After this is some unknown code. The last two lines draw Keen&#039;s sprite on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen&#039;s standing tile interaction&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing tile collision&lt;br /&gt;
%patch $7962 $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $31 $B8 [$0019W]&lt;br /&gt;
             $50 $9A $10BB1282RL     $44 $44 $8B $44 $0E $D1 $E0 $D1 $E0 $D1&lt;br /&gt;
             $E0 $89 $44 $16 $B8 [$1568W]  $50 $56 $9A $07C50255RL     $83 $C4&lt;br /&gt;
             $04 $C7 $44 $40 $0001W  $C7 $06 $8EE4W  [$0000W]  $EB $0F $8B $44&lt;br /&gt;
             $36 $25 $FFF8W  $3D $0008W  $75 $04 $0E $E8 $FCA1W  $B8 $0001W &lt;br /&gt;
             $50 $33 $C0 $50 $FF $74 $20 $FF $74 $0C $FF $74 $0A $8B $C6 $05&lt;br /&gt;
             $46 $00 $50 $9A $0E450DC5RL     $83 $C4 $0C $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Walking interaction code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s standing tile interaction. In Keen Dreams the first line checks whether Keen is standing on solid ground. If not the falling sequence is activated. Keen&#039;s vertical speed is set to 0 and he changes to the falling action ($1568.) After this Keen&#039;s jump variable is set to 0, preventing him from jumping while falling. Oddly enough no falling sound is played, even though this happens in Keen&#039;s standing tile code.&lt;br /&gt;
&lt;br /&gt;
Next checks are made for Keen walking into walls. This is handled oddly; the game first checks if Keen is walking into a left or right wall with a value of 2, if he is then the remaining code is skipped. Only then the code checks to see if Keen is touching a left or right wall of value 1. (Or &#039;&#039;not&#039;&#039; 0 in this case.)&lt;br /&gt;
&lt;br /&gt;
This means there should be solid walls Keen can run against in Keen Dreams, though these are never used in the game itself.&lt;br /&gt;
&lt;br /&gt;
Assuming Keen is walking into a wall the game sets his action timer to 0 and his action to &#039;standing&#039;. It then checks whether he is facing left or right, and loads the appropriate animation from Keen&#039;s standing action. (Left is the action value, right is the action value plus two.) The result of this is to instantly turn him into standing with no delay.&lt;br /&gt;
&lt;br /&gt;
The last two lines draw Keen&#039;s sprite on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen&#039;s standing tile interaction&amp;quot;&amp;gt;&lt;br /&gt;
#Keen walking tile interaction&lt;br /&gt;
%patch $79D0 $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $2B $8B $44 $0E&lt;br /&gt;
             $D1 $E0 $D1 $E0 $D1 $E0 $89 $44 $16 $C7 $44 $18 [$0000W]  $B8 [$1568W]&lt;br /&gt;
                 $50 $56 $9A $07C50255RL     $83 $C4 $04 $C7 $44 $40 $0001W&lt;br /&gt;
             $C7 $06 $8EE4W  [$0000W]  $EB $11 $8B $44 $36 $25 $FFF8W  $3D $0008W&lt;br /&gt;
                 $75 $06 $0E $E8 $FC39W  $EB $33 $83 $7C $38 $02 $74 $2D $83&lt;br /&gt;
             $7C $3C $02 $74 $27 $83 $7C $38 $00 $75 $06 $83 $7C $3C $00 $74&lt;br /&gt;
             $1B $C7 $44 $1A [$0000W]  $C7 $44 $1E [$0ED8W]  $83 $7C {$0E} [$01] $75&lt;br /&gt;
             $05 $A1 [$0EDAW]  $EB $03 $A1 [$0ED8W]  $89 $44 $20 $B8 $0001W  $50&lt;br /&gt;
             $33 $C0 $50 $FF $74 $20 $FF $74 $0C $FF $74 $0A $8B $C6 $05 $46&lt;br /&gt;
             $00 $50 $9A $0E450DC5RL     $83 $C4 $0C $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Action_Type|Action type]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s standing action must animate as well as react quickly so is type 3. When walking Keen additionally needs to move smoothly, using type 4 actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite action types&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing&lt;br /&gt;
%patch $2494C [$0003W]&lt;br /&gt;
&lt;br /&gt;
#Keen walking&lt;br /&gt;
%patch $24DFC [$0004W]&lt;br /&gt;
%patch $24E1A [$0004W]&lt;br /&gt;
%patch $24E38 [$0004W]&lt;br /&gt;
%patch $24E56 [$0004W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Galaxy Action Parameters#Deprotect_Animation|Deprotect and stick to ground]] =&lt;br /&gt;
&lt;br /&gt;
Keen needs to stick to the ground while standing &#039;&#039;and&#039;&#039; walking and thus uses a value of 1 for this variable in its walking actions. Interestingly his walking actions deprotect their animation, probably due to their need to cut short their animation should Keen start doing other things while walking.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Sprite deprotect, stick&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing&lt;br /&gt;
%patch $2494E [$0000W $0001W]&lt;br /&gt;
&lt;br /&gt;
#Keen walking&lt;br /&gt;
%patch $24DFE [$0001W $0001W]&lt;br /&gt;
%patch $24E1C [$0001W $0001W]&lt;br /&gt;
%patch $24E3A [$0001W $0001W]&lt;br /&gt;
%patch $24E58 [$0001W $0001W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Player|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_walking_(Dreams)&amp;diff=41200</id>
		<title>Patch:Keen walking (Dreams)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Keen_walking_(Dreams)&amp;diff=41200"/>
		<updated>2019-12-13T14:46:40Z</updated>

		<summary type="html">&lt;p&gt;Levellass: actions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains patches that relate to the player walking and under what conditions the player starts and stops doing so. This page also covers patches relating to Keen standing still as these are closely related. It does &#039;&#039;not&#039;&#039; cover patches relating to Keen being [[Patch:Keen bored|bored,]] [[Patch:Keen mooning|mooning]] or other actions where he doesn&#039;t move.&lt;br /&gt;
&lt;br /&gt;
Other patches relating to Keen can be found under [[Patch:Keen (Keen 4)|Keen (Keen 4)]], [[Patch:Keen (Keen 5)|Keen (Keen 5)]], [[Patch:Keen (Keen 6)|Keen (Keen 6)]] and [[Patch:Keen (Keen Dreams)|Keen (Keen Dreams)]]. Patches for Keen&#039;s walking in [[Patch:Keen walking (Vorticons)|Vorticons]] and [[Patch:Keen walking (Galaxy)|Galaxy]] have their own pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
Keen is spawned standing when he first starts a level. While standing he continues to stand as long as nothing else happens. When arrow keys are pressed, standing Keen will start walking. If he attempts to walk into a wall he will be set to standing.&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s walk cycle is four actions long, when the arrow keys are no longer pressed he will revert to standing.&lt;br /&gt;
&lt;br /&gt;
Keen will revert to his standing action under a wide variety of circumstances since it is the most basic thing he can do. There are no less than five situations where this happens. The first is when Keen walks into solid walls; this stops him moving entirely. The second and third situations happen in his standing\walking code and make him stand if no keys are pressed. The fourth situation is when he stop [[Patch:Keen look|looking down.]] The fifth is when Keen lands on the ground after falling through the air.&lt;br /&gt;
&lt;br /&gt;
Keen will also automatically return to his standing action after performing certain other actions. No less than four of these occur after Keen&#039;s various [[Patch:Keen bored|bored sequences.]] Another two occur after [[Patch:Keen shooting (Dreams)|Keen has thrown a Flower Power while standing on the ground.]] Finally there are two situations after [[Patch:Keen jumping (Dreams)|Keen has jumped/fallen.]] (These aren&#039;t in fact used as the above mentioned &#039;land on ground&#039; code overrides them.)&lt;br /&gt;
&lt;br /&gt;
 Actions:&lt;br /&gt;
 $0ED8W #Keen stand&lt;br /&gt;
 $1388W #Keen walk 1&lt;br /&gt;
 $13A6W #Keen walk 2&lt;br /&gt;
 $13C4W #Keen walk 3&lt;br /&gt;
 $13E2W #Keen walk 4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Spawn Keen -standing&lt;br /&gt;
%patch $6BB5  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen standing Keen keeps standing&lt;br /&gt;
%patch $24964 [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Start walking when arrows pressed&lt;br /&gt;
%patch $6CB6  [$1388W]&lt;br /&gt;
&lt;br /&gt;
#Keen&#039;s walk loop&lt;br /&gt;
%patch $24E14 [$13A6W]&lt;br /&gt;
%patch $24E32 [$13C4W]&lt;br /&gt;
%patch $24E50 [$13E2W]&lt;br /&gt;
%patch $24E6E [$1388W]&lt;br /&gt;
&lt;br /&gt;
#Keen goes to standing when walking against walls&lt;br /&gt;
%patch $7A39  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen goes to standing when no keys are pressed&lt;br /&gt;
%patch $6D62  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen goes to standing before keys are pressed&lt;br /&gt;
%patch $6DA0  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen stop looking down when key not pressed&lt;br /&gt;
%patch $6F21  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen stand after landing on ground&lt;br /&gt;
%patch $7B78  [$0ED8W]&lt;br /&gt;
&lt;br /&gt;
#Keen returns to standing after...&lt;br /&gt;
%patch $24982 [$0ED8W] #...being bored once&lt;br /&gt;
%patch $249FA [$0ED8W] #...being bored twice&lt;br /&gt;
%patch $24AAE [$0ED8W] #...being bored thrice&lt;br /&gt;
%patch $24B44 [$0ED8W] #...waking up from napping&lt;br /&gt;
%patch $24EE6 [$0ED8W] #...shooting l\r&lt;br /&gt;
%patch $24F40 [$0ED8W] #...shooting up&lt;br /&gt;
%patch $24F9A [$0ED8W] #...jumping vertically&lt;br /&gt;
%patch $24FF4 [$0ED8W] #...jumping horizontally&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
Walking Keen only uses one behavior when walking, with an additional behavior when standing. The standing behavior is also used by many other actions where Keen does not move, such as his bored sequence.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $05E80EF9RL #Keen still&lt;br /&gt;
 $05E811A6RL #Keen walking&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing behavior&lt;br /&gt;
%patch $24958 $05E80EF9RL&lt;br /&gt;
&lt;br /&gt;
#Keen walk behaviors&lt;br /&gt;
%patch $24E08 $05E811A6RL&lt;br /&gt;
%patch $24E26 $05E811A6RL&lt;br /&gt;
%patch $24E44 $05E811A6RL&lt;br /&gt;
%patch $24E62 $05E811A6RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standing behavior code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s standing behavior, used by many actions where the player stands still. It is divided up into several sections. The very first section checks for all possible player inputs, arrow keys, jump and shoot. If &#039;&#039;any&#039;&#039; of these keys are being pressed the game runs code to make Keen do stuff. (This is &#039;ground reactions&#039; and involves things like starting to walk or shoot.) Interestingly it changes Keen&#039;s action to &#039;stand&#039; right before it does this.&lt;br /&gt;
&lt;br /&gt;
The remaining sections deal with Keen being [[Patch:Keen bored|bored.]] The second section points to a list of code to go to depending on Keen&#039;s &#039;boredom count&#039;. (The list is 5+1 actions long.) Each section is broadly the same, a &#039;boredom timer&#039; is checked, and if it is higher than a certain value, Keen&#039;s action is changed to  one of his boredom actions, and he timer is reset.&lt;br /&gt;
&lt;br /&gt;
Note that times are not cumulative; the second boredom timer is &#039;&#039;not&#039;&#039; the total time since no key has been pressed, but rather the time since the last boredom action started. It should be noted that the timer is &#039;&#039;not&#039;&#039; reset in the final action as there are no more bored actions after it. It should also be noted that one action sequence occurs twice in the full boredom sequence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing behavior&lt;br /&gt;
%patch $6D79 $55 $8B $EC $56 $8B $76 $06 $83 $3E $7022W  $08 $75 $0E $83 $3E&lt;br /&gt;
             $7016W  $00 $75 $07 $83 $3E $7018W  $00 $74 $17 $33 $C0 $89 $44&lt;br /&gt;
             $40 $89 $44 $3E $C7 $44 $1E [$0ED8W]  $56 $0E $E8 $FEF8W  $44 $44&lt;br /&gt;
             $E9 $00A4W&lt;br /&gt;
                         $8B $44 $36 $25 [$FFF8W]  $3D [$0018W]  $74 $0A $8B $44&lt;br /&gt;
             $3E $03 $06 $D4 $BD $89 $44 $3E $8B $5C $40 $83 $FB [$05] $76 $03&lt;br /&gt;
             $E9 $0084W  $D1 $E3 $2E $FF $A7 [$0FD4W]&lt;br /&gt;
                                                     $81 $7C $3E [$00C8W]  {$7E}&lt;br /&gt;
             $76 $FF $44 $40 $C7 $44 $1E [$0EF6W]  $C7 $44 $3E [$0000W]  $EB $67&lt;br /&gt;
             $81 $7C $3E [$012CW]  {$7E} $60 $FF $44 $40 $C7 $44 $1E [$0F8CW]  $C7&lt;br /&gt;
             $44 $3E [$0000W]  $EB $51&lt;br /&gt;
                                     $81 $7C $3E [$02BCW]  {$7E} $4A $FF $44 $40&lt;br /&gt;
             $C7 $44 $1E [$0F14W]  $C7 $44 $3E [$0000W]  $EB $3B&lt;br /&gt;
                                                             $81 $7C $3E [$0190W]&lt;br /&gt;
                 {$7E} $34 $FF $44 $40 $C7 $44 $1E [$0EF6W]  $C7 $44 $3E [$0000W]&lt;br /&gt;
             $EB $25&lt;br /&gt;
                     $81 $7C $3E [$02BCW]  {$7E} $1E $FF $44 $40 $C7 $44 $1E [$0F14W]&lt;br /&gt;
                 $C7 $44 $3E [$0000W]  $EB $0F&lt;br /&gt;
                                              $81 $7C $3E [$0190W]  {$7E} $08 $FF&lt;br /&gt;
             $44 $40 $C7 $44 $1E [$1040W]  $5E $5D $CB&lt;br /&gt;
&lt;br /&gt;
#Boredom actions list&lt;br /&gt;
%patch $6E54 [$0F53W]&lt;br /&gt;
             [$0F69W]&lt;br /&gt;
             [$0F7FW]&lt;br /&gt;
             [$0F95W]&lt;br /&gt;
             [$0FABW]&lt;br /&gt;
             [$0FC1W]&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Walking behavior code==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s walking behavior. On the first line the game checks inputs (&#039;Ground reactions&#039;), this will make him do various things like start or stop walking. This in fact duplicates most of the code that follows, elsewhere.&lt;br /&gt;
&lt;br /&gt;
After this comes code to check if Keen can jump, it checks a few variables including the &#039;already jumping&#039; variable, and if all is clear sound $02 will play, Keen&#039;s upwards speed will be set to $FFD8W and his jump timer to $10. Finally his action will be set to the first frame of his jumping sequence.&lt;br /&gt;
&lt;br /&gt;
The next section checks if Keen can [[Patch:Keen shooting (Dreams)|throw a Flower Power horizontally,]] it is considerably simpler than his jumping check, only changing his action and the &#039;already throwing&#039; variable.&lt;br /&gt;
&lt;br /&gt;
Finally, on the last line, a list is checked. This gives Keen&#039;s running speeds on various slopes. (And thus applies only if Keen is still running and not doing anything else.) This is explained more fully in the speed section below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen walking behavior&lt;br /&gt;
%patch $7026 $55 $8B $EC $4C $4C $56 $8B $76 $06 $83 $3E $701EW  $00 $75 $0A #Check inputs&lt;br /&gt;
             $56 $0E $E8 $FC64W  $44 $44 $E9 $008DW  $A1 $701EW  $89 $44 $0E&lt;br /&gt;
             $83 $3E $7020W  $00 $74 $0B $56 $0E $E8 $FB74W  $44 $44 $0B $C0 #Check to jump&lt;br /&gt;
             $75 $75 $83 $3E $7016W  $00 $74 $3C $83 $3E $8EDAW  $00 $75 $35&lt;br /&gt;
             $B8 [$0002W]  $50 $9A $10BB1282RL     $44 $44 $8B $44 $0E $B1 $04&lt;br /&gt;
             $D3 $E0 $89 $44 $16 $C7 $44 $18 [$FFD8W]  $C7 $44 $12 $0000W  $C7&lt;br /&gt;
             $44 $14 $0000W  $C7 $06 $8EDAW  $0001W  $C7 $06 $8EE4W  [$0010W]&lt;br /&gt;
             $C7 $44 $1E [$152CW]  $83 $3E $7018W  $00 $74 $14 $83 $3E $8EDCW&lt;br /&gt;
             $00 $75 $0D $C7 $44 $1E [$1400W]  $C7 $06 $8EDCW  $0001W  $EB $17 #Check to Throw&lt;br /&gt;
             $8B $5C $36 $81 $E3 $0007W  $D1 $E3 $8B $87 [$1694W]  $F7 $2E $D4 #Speed list&lt;br /&gt;
             $BD $89 $46 $FE $01 $44 $12 $5E $8B $E5 $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ground reactions ==&lt;br /&gt;
&lt;br /&gt;
When Keen is &#039;on the ground&#039; (Standing, walking, most of his bored sequence, etc.) his behaviors point to a shared segment of code that handles keypresses. This avoids requiring a large segment of code for every separate behavior. It handles everything Keen can do while on the ground; shooting, jumping, pogoing and looking up\down.&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s input handling when he is on the ground (Standing or walking). The first section checks to see if a left or right arrow is being pressed. If it is Keen is sent into his first walking action.&lt;br /&gt;
&lt;br /&gt;
The second section does a similar thing with dropping down from one-way-up ledges; the key is checked then &#039;is Keen jumping already?&#039; If Keen can jump then sound $02 is played, Keen&#039;s horizontal speed is set to 0 and his vertical speed to &amp;lt;tt&amp;gt;$FFD8W&amp;lt;/tt&amp;gt; (upwards). Keen is given a &#039;jump duration&#039; of $10 and his action is changed to his first falling action.&lt;br /&gt;
&lt;br /&gt;
The third section deals with alt being pressed. First the key is checked, then the &#039;is Keen shooting already?&#039; variable. If he is then the game skips to the next section. If he isn&#039;t then the game sets this to 1. Then Keen&#039;s vertical direction is checked; if Keen is looking up (Vertical direction is -1) he goes to the &#039;shoot up&#039; action. Otherwise he goes to the &#039;shoot horizontally&#039; action.&lt;br /&gt;
&lt;br /&gt;
Section 5 deals with Keen looking up or down. First his looking direction is checked, whether it is +-1. If it is neither the code jumps to Keen&#039;s standing action. This will cause any behavior calling this code to make Keen go to standing if he&#039;s doing nothing else.&lt;br /&gt;
&lt;br /&gt;
Otherwise looking up is run first; Keen&#039;s sprite is sent to some checking code, if this returns anything but zero the remaining code is skipped. Otherwise the game sets Keen&#039;s action to &#039;look up&#039;.&lt;br /&gt;
&lt;br /&gt;
After this is looking down; it sends Keen&#039;s sprite to a check and, if this returns anything but zero, changes his action to &#039;look down&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen Ground Input code&lt;br /&gt;
%patch $6C9F $55 $8B $EC $56 $8B $76 $06 $83 $3E $701EW  $00 $74 $24 $A1 $701EW&lt;br /&gt;
                 $89 $44 $0E $C7 $44 $1E [$1388W]  $8B $44 $0E $F7 $2E $94 $13&lt;br /&gt;
             $F7 $2E $D4 $BD $89 $44 $12 $56 $9A $05E811A6RL     $44 $44 $E9&lt;br /&gt;
             $00A5W&lt;br /&gt;
                     $83 $3E $7016W  $00 $74 $39 $83 $3E $8EDAW  $00 $75 $32&lt;br /&gt;
             $B8 [$0002W]  $50 $9A $10BB1282RL     $44 $44 $C7 $44 $16 $0000W &lt;br /&gt;
             $C7 $44 $18 [$FFD8W]  $C7 $44 $12 $0000W  $C7 $44 $14 $0000W  $C7&lt;br /&gt;
             $06 $8EE4W  [$0010W]  $C7 $44 $1E [$14D2W]  $C7 $06 $8EDAW  $0001W&lt;br /&gt;
             $EB $65&lt;br /&gt;
                     $83 $3E $7018W  $00 $74 $22 $83 $3E $8EDCW  $00 $75 $1B&lt;br /&gt;
             $83 $3E $7020W  $FF $75 $07 $C7 $44 $1E [$1478W]  $EB $05 $C7 $44&lt;br /&gt;
             $1E [$1400W]  $C7 $06 $8EDCW  $0001W  $EB $3C&lt;br /&gt;
                                                         $A1 $7020W  $3D [$FFFFW]&lt;br /&gt;
                 $74 $0B $0B $C0 $74 $19 $3D [$0001W]  $74 $1B $EB $29 $56 $0E&lt;br /&gt;
             $E8 $FE74W  $44 $44 $0B $C0 $75 $1E $C7 $44 $1E [$1130W]  $EB $17&lt;br /&gt;
             $C7 $44 $1E [$0ED8W]  $EB $10 $56 $0E $E8 $FE5BW  $44 $44 $0B $C0&lt;br /&gt;
             $75 $05 $C7 $44 $1E [$114EW]  $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite speed|Speed]] =&lt;br /&gt;
&lt;br /&gt;
Keen has a constant animation speed when running that depends both on the values listed here and how fast he animates. Keen has no horizontal speed when standing still, but does attempt to move down, for unknown reasons.&lt;br /&gt;
&lt;br /&gt;
Keen also slows down or speeds up going up and down slopes respectively; the speed changes are stored in a list accessed by the walking behavior. The values in the list are for Keen moving right, when Keen moves left the value is reversed. (So for example when walking right over a Top-&amp;gt;bottom tile Keen&#039;s speed is increased by 8 as this is downhill. When walking left, or uphill, his speed is &#039;&#039;slowed&#039;&#039; by 8.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing speed&lt;br /&gt;
%patch $24954 [$0000W $0020W]&lt;br /&gt;
&lt;br /&gt;
#Keen running speeds&lt;br /&gt;
%patch $24E04 [$0018W $0000W]&lt;br /&gt;
%patch $24E22 [$0018W $0000W]&lt;br /&gt;
%patch $24E40 [$0018W $0000W]&lt;br /&gt;
%patch $24E5E [$0018W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Modifier list location&lt;br /&gt;
%patch $70C1 [$1694W]&lt;br /&gt;
&lt;br /&gt;
#Walking speed modifiers&lt;br /&gt;
%patch $25104 [$0000W] #No ground        (Don&#039;t affect speed)&lt;br /&gt;
              [$0000W] #Walking on flat  (Don&#039;t affect speed)&lt;br /&gt;
              [$0004W] #Top -&amp;gt; middle    (Increase by 4)&lt;br /&gt;
              [$0004W] #Middle -&amp;gt; bottom (Increase by 4)&lt;br /&gt;
              [$0008W] #Top -&amp;gt; bottom    (Increase by 8)&lt;br /&gt;
              [$FFFCW] #Bottom -&amp;gt; middle (Decrease by 4)&lt;br /&gt;
              [$FFFCW] #Middle -&amp;gt; top    (Decrease by 4)&lt;br /&gt;
              [$FFF8W] #Bottom -&amp;gt; top    (Decrease by 8)&lt;br /&gt;
              [$FFF8W] #???              (Decrease by 8)&lt;br /&gt;
              [$0000W] #???              (Don&#039;t affect speed)&lt;br /&gt;
              [$0008W] #???              (Increase by 8)&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
Keen really has only one sprite collision and this is used in most of his actions. Naturally this includes both standing and walking. The actual collision is explained and dissected on Keen&#039;s [[Patch:Keen (Keen Dreams)|Keen Dreams page.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing&lt;br /&gt;
%patch $2495C $05E817FCRL&lt;br /&gt;
&lt;br /&gt;
#Keen walking&lt;br /&gt;
%patch $24E0C $05E817FCRL&lt;br /&gt;
%patch $24E2A $05E817FCRL&lt;br /&gt;
%patch $24E48 $05E817FCRL&lt;br /&gt;
%patch $24E66 $05E817FCRL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
Keen&#039;s walking sequence consists of four actions. These behave pretty simply using eight total animations animating every 6 ticks. Keen&#039;s standing sequence is a single action whose &#039;animation&#039; speed controls how quickly Keen responds to outside influences. (By default it&#039;s 4, faster tan most visible game changes.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing animations&lt;br /&gt;
%patch $24948 $0050W $0048W&lt;br /&gt;
%patch $24952 $0004W&lt;br /&gt;
&lt;br /&gt;
#Keen walking animations&lt;br /&gt;
%patch $24DF8 $0051W $0049W&lt;br /&gt;
%patch $24E02 $0006W&lt;br /&gt;
%patch $24E16 $0052W $004AW&lt;br /&gt;
%patch $24E20 $0006W&lt;br /&gt;
%patch $24E34 $0053W $004BW&lt;br /&gt;
%patch $24E3E $0006W&lt;br /&gt;
%patch $24E52 $0054W $004CW&lt;br /&gt;
%patch $24E5C $0006W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite Sounds|Sounds]] =&lt;br /&gt;
&lt;br /&gt;
There are several sounds related to Keen walking or standing. The first is when Keen jumps while standing. The same sound plays when Keen jumps while walking. Another is when Keen is standing and the ground vanishes beneath him. This seems quite obtuse, but since Keen goes to standing after he shoots (Even when in the air) this sound actually plays many times when Keen throws a Flower Power. (It just isn&#039;t heard.)&lt;br /&gt;
&lt;br /&gt;
Unlike in Keen Galaxy, Keen doesn&#039;t make noise when he walks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
%patch $6CE0 $02     #Keen jump while standing sound&lt;br /&gt;
%patch $6CDF $EB $09 #Don&#039;t play Keen jump while standing sound&lt;br /&gt;
&lt;br /&gt;
%patch $7067 $02     #Keen jump while walking sound&lt;br /&gt;
%patch $7066 $EB $09 #Don&#039;t play Keen jump while walking sound&lt;br /&gt;
&lt;br /&gt;
%patch $7970 $19     #Keen standing drops down sound&lt;br /&gt;
%patch $796F $EB $09 #Don&#039;t play Keen standing drops down sound&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Keen makes noise while walking ==&lt;br /&gt;
&lt;br /&gt;
This patch alters things so that Keen makes sounds while walking, at least in levels. (Walking on the map is different.) It works by creating space by merging Keen&#039;s walking and standing tile collisions to an extent. Some other patches on this page are incompatible with it since it slightly rearranges things. (Mostly those involving Keen walking against walls.)&lt;br /&gt;
&lt;br /&gt;
Two sounds are played in a 1-2-1-2 rhythm depending on a timer that is reset to zero after sound two plays. The timing between the two sounds is $0010W and $0020W here and the sounds used are $02 and $03. These parameters will probably need to be tweaked for the best sounding walk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen makes a sound when he walks&lt;br /&gt;
%patch $7A17 $EB $4E $83 $7C $38 $00 $75 $06 $83 $7C $3C $00 $74 $1B $C7 $44&lt;br /&gt;
             $1A $0000W  $C7 $44 $1E $0ED8W  $A1 $0ED8W  $83 $7C $0E $01 $75&lt;br /&gt;
             $03 $A1 $0EDAW  $89 $44 $20 $EB $27 $FF $06 $0368W  $B8 [$0003W]&lt;br /&gt;
             $81 $3E $0368W  [$0010W]  $74 $10 $81 $3E $0368W  [$0020W]  $7C $10&lt;br /&gt;
             $33 $C0 $A3 $0368W  $B8 [$0002W]  $50 $9A $10BB1282RL     $44 $44&lt;br /&gt;
             $E9 $FF45W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite-tile interaction|Sprite-tile interaction]] =&lt;br /&gt;
&lt;br /&gt;
Keen has two interactions, one while standing and one while walking. Keen&#039;s standing interaction deals with him landing on flat ground and being moved by conveyor belts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen Dreams&amp;quot;&amp;gt;&lt;br /&gt;
#Keen stand&lt;br /&gt;
%patch $24960 $05E81AE2RL&lt;br /&gt;
&lt;br /&gt;
#Keen walking&lt;br /&gt;
%patch $24E10 $05E81B50RL&lt;br /&gt;
%patch $24E2E $05E81B50RL&lt;br /&gt;
%patch $24E4C $05E81B50RL&lt;br /&gt;
%patch $24E6A $05E81B50RL&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standing interaction code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s standing tile interaction. In Keen Dreams the first line checks whether Keen is standing on solid ground. If not the falling sequence is activated. Sound $19 plays, Keen changes to the falling action ($1568W). After this Keen&#039;s jump variable is set to 0, preventing him from jumping while falling. It should be noted that, for various reasons, this code is run quite often after Keen completes things like throwing a Flower Power.&lt;br /&gt;
&lt;br /&gt;
After this is some unknown code. The last two lines draw Keen&#039;s sprite on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen&#039;s standing tile interaction&amp;quot;&amp;gt;&lt;br /&gt;
#Keen standing tile collision&lt;br /&gt;
%patch $7962 $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $31 $B8 [$0019W]&lt;br /&gt;
             $50 $9A $10BB1282RL     $44 $44 $8B $44 $0E $D1 $E0 $D1 $E0 $D1&lt;br /&gt;
             $E0 $89 $44 $16 $B8 [$1568W]  $50 $56 $9A $07C50255RL     $83 $C4&lt;br /&gt;
             $04 $C7 $44 $40 $0001W  $C7 $06 $8EE4W  [$0000W]  $EB $0F $8B $44&lt;br /&gt;
             $36 $25 $FFF8W  $3D $0008W  $75 $04 $0E $E8 $FCA1W  $B8 $0001W &lt;br /&gt;
             $50 $33 $C0 $50 $FF $74 $20 $FF $74 $0C $FF $74 $0A $8B $C6 $05&lt;br /&gt;
             $46 $00 $50 $9A $0E450DC5RL     $83 $C4 $0C $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Walking interaction code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete code for Keen&#039;s standing tile interaction. In Keen Dreams the first line checks whether Keen is standing on solid ground. If not the falling sequence is activated. Keen&#039;s vertical speed is set to 0 and he changes to the falling action ($1568.) After this Keen&#039;s jump variable is set to 0, preventing him from jumping while falling. Oddly enough no falling sound is played, even though this happens in Keen&#039;s standing tile code.&lt;br /&gt;
&lt;br /&gt;
Next checks are made for Keen walking into walls. This is handled oddly; the game first checks if Keen is walking into a left or right wall with a value of 2, if he is then the remaining code is skipped. Only then the code checks to see if Keen is touching a left or right wall of value 1. (Or &#039;&#039;not&#039;&#039; 0 in this case.)&lt;br /&gt;
&lt;br /&gt;
This means there should be solid walls Keen can run against in Keen Dreams, though these are never used in the game itself.&lt;br /&gt;
&lt;br /&gt;
Assuming Keen is walking into a wall the game sets his action timer to 0 and his action to &#039;standing&#039;. It then checks whether he is facing left or right, and loads the appropriate animation from Keen&#039;s standing action. (Left is the action value, right is the action value plus two.) The result of this is to instantly turn him into standing with no delay.&lt;br /&gt;
&lt;br /&gt;
The last two lines draw Keen&#039;s sprite on the screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen&#039;s standing tile interaction&amp;quot;&amp;gt;&lt;br /&gt;
#Keen walking tile interaction&lt;br /&gt;
%patch $79D0 $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $2B $8B $44 $0E&lt;br /&gt;
             $D1 $E0 $D1 $E0 $D1 $E0 $89 $44 $16 $C7 $44 $18 [$0000W]  $B8 [$1568W]&lt;br /&gt;
                 $50 $56 $9A $07C50255RL     $83 $C4 $04 $C7 $44 $40 $0001W&lt;br /&gt;
             $C7 $06 $8EE4W  [$0000W]  $EB $11 $8B $44 $36 $25 $FFF8W  $3D $0008W&lt;br /&gt;
                 $75 $06 $0E $E8 $FC39W  $EB $33 $83 $7C $38 $02 $74 $2D $83&lt;br /&gt;
             $7C $3C $02 $74 $27 $83 $7C $38 $00 $75 $06 $83 $7C $3C $00 $74&lt;br /&gt;
             $1B $C7 $44 $1A [$0000W]  $C7 $44 $1E [$0ED8W]  $83 $7C {$0E} [$01] $75&lt;br /&gt;
             $05 $A1 [$0EDAW]  $EB $03 $A1 [$0ED8W]  $89 $44 $20 $B8 $0001W  $50&lt;br /&gt;
             $33 $C0 $50 $FF $74 $20 $FF $74 $0C $FF $74 $0A $8B $C6 $05 $46&lt;br /&gt;
             $00 $50 $9A $0E450DC5RL     $83 $C4 $0C $5E $5D $CB&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen Dreams|}}&lt;br /&gt;
{{PatchCategories|Gameplay|}}&lt;br /&gt;
{{PatchCategories|Player|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:CONFIG&amp;diff=41199</id>
		<title>Patch:CONFIG</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:CONFIG&amp;diff=41199"/>
		<updated>2019-12-13T07:28:47Z</updated>

		<summary type="html">&lt;p&gt;Levellass: Disable patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;lt;tt&amp;gt;CONFIG.CKx&amp;lt;/tt&amp;gt; (CONFIGuration) file is a file containing the [[Patch:Configuration options|configuration options]] in Keen Galaxy. It is loaded when the game starts, and saved when the game is properly exited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== File name ==&lt;br /&gt;
&lt;br /&gt;
These patches control the CONFIG file name. The first controls what file configuration options are read from when the game starts, while the second controls what file the options are saved to on exit. If the two filenames differ then odd things occur, notably the game setting may not save, so the game will effectively be &#039;reset&#039; each time it is played.&lt;br /&gt;
&lt;br /&gt;
In Keen 5 the same filename is used for looking and for creating the CONFIG file so this problem cannot so easily occur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 4&amp;quot;&amp;gt;&lt;br /&gt;
#Look for CONFIG&lt;br /&gt;
%patch $1949D  [$468CW]&lt;br /&gt;
%patch $334FC &amp;quot;CONFIG.CK4&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Create CONFIG&lt;br /&gt;
%patch $1966D  [$469BW]&lt;br /&gt;
%patch $3350B &amp;quot;CONFIG.CK4&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 5&amp;quot;&amp;gt;&lt;br /&gt;
#Look for CONFIG&lt;br /&gt;
%patch $1A43B  [$3CDEW]&lt;br /&gt;
&lt;br /&gt;
#Create CONFIG&lt;br /&gt;
%patch $1A60B  [$3CDEW]&lt;br /&gt;
&lt;br /&gt;
#Filename&lt;br /&gt;
%patch $3401E &amp;quot;CONFIG.CK5&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Keen 6&amp;quot;&amp;gt;&lt;br /&gt;
#Look for CONFIG&lt;br /&gt;
%patch $1910D  [$408CW]&lt;br /&gt;
%patch $34DBC &amp;quot;CONFIG.CK6&amp;quot; $00&lt;br /&gt;
&lt;br /&gt;
#Create CONFIG&lt;br /&gt;
%patch $192DD  [$409BW]&lt;br /&gt;
%patch $34DCB &amp;quot;CONFIG.CK6&amp;quot; $00&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disable saving configuration ==&lt;br /&gt;
&lt;br /&gt;
These patches prevent the game saving data to the configuration file when the game is exited. The end result of this is to &#039;lock&#039; the game into its default settings (If no CONFIG file is provided) or to custom settings (If a configuration file &#039;&#039;is&#039;&#039; provided.)&lt;br /&gt;
&lt;br /&gt;
Note that players will be able to alter the game settings, but their alterations will not be saved and will have to be repeated each time they play the game.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;patch title=&amp;quot;Disable saving configuration&amp;quot;&amp;gt;&lt;br /&gt;
#Don&#039;t write to config file on exit -Keen 4&lt;br /&gt;
%patch $19664 $E9 $0134W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t write to config file on exit -Keen 5&lt;br /&gt;
%patch $1A602 $E9 $0134W&lt;br /&gt;
&lt;br /&gt;
#Don&#039;t write to config file on exit -Keen 6&lt;br /&gt;
%patch $192D4 $E9 $0134W&amp;lt;/patch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 4|}}&lt;br /&gt;
{{PatchCategories|Keen 5|}}&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Configuration|}}&lt;br /&gt;
{{PatchCategories|Text|}}&lt;/div&gt;</summary>
		<author><name>Levellass</name></author>
	</entry>
</feed>