<?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=Multimania</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=Multimania"/>
	<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/wiki/Special:Contributions/Multimania"/>
	<updated>2026-04-14T20:07:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.11</generator>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Patch:Orbatrix&amp;diff=47145</id>
		<title>Patch:Orbatrix</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Patch:Orbatrix&amp;diff=47145"/>
		<updated>2023-06-25T09:53:07Z</updated>

		<summary type="html">&lt;p&gt;Multimania: The &amp;quot;unknown&amp;quot; check for Orbatrix behaviour is &amp;quot;if (obj-&amp;gt;clipRects.unitY2 == ck_keenObj-&amp;gt;clipRects.unitY2)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page covers patches relating to the [[Orbatrix]] in [[Keen 6]]. Orbatrix are blue, one-eyed floating-bouncing enemies found in many levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite type|Sprite Type]] =&lt;br /&gt;
&lt;br /&gt;
Orbatrix use sprite type 16. This is used by no other sprites, nor does it interact with any other sprite types.&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;
#Orbatrix sprite type&lt;br /&gt;
%patch $114F2 $13&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite actions|Sprite Actions]] =&lt;br /&gt;
&lt;br /&gt;
Orbatrix have several actions and cycles. Sadly little is known about them. The Orbatrix is spawned floating, which is a two frame loop. While floating it can randomly curl up, a three frame sequence that ends with it going to the bounding action, or partially uncurl.&lt;br /&gt;
&lt;br /&gt;
The bouncing loop is four frames long and eventually ends with the Orbatrix uncurling, a six frame loop consisting of two parts. For the first two frames the Orbatrix uncurls, four the next four frames it rises up off the ground (Or wherever it has landed) until it is about level with Keen. It then goes to floating.&lt;br /&gt;
&lt;br /&gt;
When shot the Orbatrix simply floats.&lt;br /&gt;
&lt;br /&gt;
 $27E6W  #Orbatrix float 1&lt;br /&gt;
 $2804W  #Orbatrix float 2&lt;br /&gt;
 $2822W  #Orbatrix curls 1&lt;br /&gt;
 $2840W  #Orbatrix curls 2&lt;br /&gt;
 $285EW  #Orbatrix curls 3&lt;br /&gt;
 $287CW  #Orbatrix uncurls 1&lt;br /&gt;
 $289AW  #Orbatrix uncurls 2&lt;br /&gt;
 $28B8W  #Orbatrix uncurls 3&lt;br /&gt;
 $28D6W  #Orbatrix uncurls 4&lt;br /&gt;
 $28F4W  #Orbatrix uncurls 5&lt;br /&gt;
 $2912W  #Orbatrix uncurls 6&lt;br /&gt;
 $2930W  #Orbatrix bounding 1&lt;br /&gt;
 $294EW  #Orbatrix bounding 2&lt;br /&gt;
 $296CW  #Orbatrix bounding 3&lt;br /&gt;
 $298AW  #Orbatrix bounding 4&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;
#When spawned&lt;br /&gt;
%patch $11540 [$27E6W]&lt;br /&gt;
&lt;br /&gt;
#Floating loop&lt;br /&gt;
%patch $33532 [$2804W]&lt;br /&gt;
%patch $33550 [$27E6W]&lt;br /&gt;
&lt;br /&gt;
#Partially uncurl (When floating)&lt;br /&gt;
%patch $11563 [$28B8W]&lt;br /&gt;
&lt;br /&gt;
#Curl (When floating)&lt;br /&gt;
%patch $1159F [$2822W]&lt;br /&gt;
&lt;br /&gt;
#Curl sequence&lt;br /&gt;
%patch $3356E [$2840W]&lt;br /&gt;
%patch $3358C [$285EW]&lt;br /&gt;
%patch $335AA [$2930W]&lt;br /&gt;
&lt;br /&gt;
#Bounce loop&lt;br /&gt;
%patch $3367C [$294EW]&lt;br /&gt;
%patch $3369A [$296CW]&lt;br /&gt;
%patch $336B8 [$298AW]&lt;br /&gt;
%patch $336D6 [$2930W]&lt;br /&gt;
&lt;br /&gt;
#Uncurl (When bouncing)&lt;br /&gt;
%patch $11686 [$287CW]&lt;br /&gt;
&lt;br /&gt;
#Uncurl sequence&lt;br /&gt;
%patch $335C8 [$289AW]&lt;br /&gt;
%patch $335E6 [$28B8W]&lt;br /&gt;
%patch $33604 [$28D6W] #Start rising here&lt;br /&gt;
%patch $33622 [$28F4W]&lt;br /&gt;
%patch $33640 [$2912W]&lt;br /&gt;
%patch $3365E [$27E6W]&lt;br /&gt;
&lt;br /&gt;
#When shot&lt;br /&gt;
%patch $115BB [$27E6W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite behavior|Sprite Behavior]] =&lt;br /&gt;
&lt;br /&gt;
The Orbatrix has three unique and one shared behavior. When floating it uses its float behavior which also dictates when it can attack Keen. When curling up it has no behavior until its third action, when it uses its curling behavior. The bouncing Orbatrix uses a generic &#039;move through the air&#039; behavior also used by other sprites. The first frame of its uncurling sequence has its own behavior while the other five have no behavior.&lt;br /&gt;
&lt;br /&gt;
The curling\uncurling behaviors change the Orbatrix&#039;s sprite properties so that it can move between floating and bouncing.&lt;br /&gt;
&lt;br /&gt;
 Behaviors:&lt;br /&gt;
 $08F41765RL #Move through air&lt;br /&gt;
 $10CC088ERL #Orbatrix float&lt;br /&gt;
 $10CC09DARL #Orbatrix curl&lt;br /&gt;
 $10CC0A13RL #Orbatrix uncurl&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;
#Floating&lt;br /&gt;
%patch $33526 $10CC088ERL&lt;br /&gt;
%patch $33544 $10CC088ERL&lt;br /&gt;
&lt;br /&gt;
#Curling up&lt;br /&gt;
%patch $33562 $00000000L&lt;br /&gt;
%patch $33580 $00000000L&lt;br /&gt;
%patch $3359E $10CC09DARL&lt;br /&gt;
&lt;br /&gt;
#Uncurling&lt;br /&gt;
%patch $335BC $10CC0A13RL&lt;br /&gt;
%patch $335DA $00000000L&lt;br /&gt;
%patch $335F8 $00000000L&lt;br /&gt;
%patch $33616 $00000000L&lt;br /&gt;
%patch $33634 $00000000L&lt;br /&gt;
%patch $33652 $00000000L&lt;br /&gt;
&lt;br /&gt;
#Bounding&lt;br /&gt;
%patch $33670 $08F41765RL&lt;br /&gt;
%patch $3368E $08F41765RL&lt;br /&gt;
%patch $336AC $08F41765RL&lt;br /&gt;
%patch $336CA $08F41765RL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Orbatrix float behavior ===&lt;br /&gt;
&lt;br /&gt;
This is the complete behavior code for the Orbatrix floating. On the first line a random check is made which, if passed, makes the Orbatrix go to its third uncurling frame. (This stops it chasing Keen and makes it sit still.)&lt;br /&gt;
&lt;br /&gt;
The second section deals with seeking Keen; if the Orbatrix is at the same Y coordinate as Keen, then Keen&#039;s X coordinate is checked on the next line, causing the Orbatrix to face him. On the second to last line there are two proximity checks to see if Keen is closer than 5 tiles left or right. If so the Orbatrix will attack via curling, if not it won&#039;t. (And will instead just head in his direction.)&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;
#Orbatrix float behavior&lt;br /&gt;
%patch $1154E $55 $8B $EC $56 $57 $8B $76 $06 $9A $1CF30034RL     $3D [$0020W]&lt;br /&gt;
              $7D $09 $C7 $44 $1C [$28B8W]  $5F $5E $5D $CB&lt;br /&gt;
                                                          $8B $44 $28 $8B $1E&lt;br /&gt;
              $64 $A9 $3B $47 $28 {$75} $2C $8B $1E $64 $A9 $8B $47 $0A $2B $44&lt;br /&gt;
              $0A $8B $F8 $0B $FF $7D $05 $B8 [$FFFFW]  $EB $03 $B8 [$0001W]  $89&lt;br /&gt;
              $44 $0E $81 $FF [$FB00W]  $7E $0B $81 $FF [$0500W]  $7D $05 $C7 $44&lt;br /&gt;
              $1C [$2822W]  $5F $5E $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Patch:Seeking Keen|Seeking Keen]] ===&lt;br /&gt;
&lt;br /&gt;
The Orbatrix heads towards Keen when floating, though it does not do so very well.&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;
#Seek Keen when floating&lt;br /&gt;
%patch $11586 $FFFFW&lt;br /&gt;
%patch $1158B $0001W&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Orbatrix doesn&#039;t curl or bounce ==&lt;br /&gt;
&lt;br /&gt;
This patch stops the Orbatrix from curling up and bouncing. This means all it can do is chase Keen and look around. This also stops it getting off of the platforms it is floating above.&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;
#Orbatrix doesn&#039;t curl or bounce&lt;br /&gt;
%patch $11590 $5F $5E $5D $CB&amp;lt;/syntaxhighlight&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 Orbatrix&#039;s floating speed is defined in its animation motion; all other animation speeds are zero. Its bouncing speed however is defined in its own code.&lt;br /&gt;
&lt;br /&gt;
=== Animation motion ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Floating&lt;br /&gt;
%patch $33522 [$0010W $0000W]&lt;br /&gt;
%patch $33540 [$0010W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Curling&lt;br /&gt;
%patch $3355E [$0000W $0000W]&lt;br /&gt;
%patch $3357C [$0000W $0000W]&lt;br /&gt;
%patch $3359A [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Uncurling&lt;br /&gt;
%patch $335B8 [$0000W $0000W]&lt;br /&gt;
%patch $335D6 [$0000W $0000W]&lt;br /&gt;
%patch $335F4 [$0000W $0000W]&lt;br /&gt;
%patch $33612 [$0000W $0000W]&lt;br /&gt;
%patch $33630 [$0000W $0000W]&lt;br /&gt;
%patch $3364E [$0000W $0000W]&lt;br /&gt;
&lt;br /&gt;
#Bouncing&lt;br /&gt;
%patch $3366C [$0000W $0000W]&lt;br /&gt;
%patch $3368A [$0000W $0000W]&lt;br /&gt;
%patch $336A8 [$0000W $0000W]&lt;br /&gt;
%patch $336C6 [$0000W $0000W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Orbatrix bounce variables ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Orbatrix bounces:&lt;br /&gt;
%patch $116AB [$003CW] #Width&lt;br /&gt;
%patch $116B5 [$FFE0W] #Height&lt;br /&gt;
%patch $116C0 [$0005W] #Number of bounces&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite collision|Sprite Collision]] =&lt;br /&gt;
&lt;br /&gt;
The Orbatrix has two collision values. It will kill Keen if he touches it and is indestructible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collision values ==&lt;br /&gt;
&lt;br /&gt;
The Orbatrix has two collisions, one &#039;floating&#039; one &#039;bounding&#039; Both collisions are quite similar, Keen will die if he touches the Orbatrix in any circumstances, however the bounding collision is unique; if Keen shoots the Orbatrix while it uses this then it will uncurl and resume chasing him. This can be used to control where the Orbatrix goes, even trapping it.&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 collision values ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Floating&lt;br /&gt;
%patch $3352A $10CC08E5RL #Orbatrix float&lt;br /&gt;
%patch $33548 $10CC08E5RL #Orbatrix float&lt;br /&gt;
&lt;br /&gt;
#Curling up&lt;br /&gt;
%patch $33566 $10CC08E5RL #Orbatrix float&lt;br /&gt;
%patch $33584 $10CC08E5RL #Orbatrix float&lt;br /&gt;
%patch $335A2 $10CC08E5RL #Orbatrix float&lt;br /&gt;
&lt;br /&gt;
#Uncurling&lt;br /&gt;
%patch $335C0 $10CC0A41RL #Orbatrix bouncing&lt;br /&gt;
%patch $335DE $10CC0A41RL #Orbatrix bouncing&lt;br /&gt;
%patch $335FC $10CC08E5RL #Orbatrix float&lt;br /&gt;
%patch $3361A $10CC08E5RL #Orbatrix float&lt;br /&gt;
%patch $33638 $10CC08E5RL #Orbatrix float&lt;br /&gt;
%patch $33656 $10CC08E5RL #Orbatrix float&lt;br /&gt;
&lt;br /&gt;
#Bounding&lt;br /&gt;
%patch $33674 $10CC0A41RL #Orbatrix bouncing&lt;br /&gt;
%patch $33692 $10CC0A41RL #Orbatrix bouncing&lt;br /&gt;
%patch $336B0 $10CC0A41RL #Orbatrix bouncing&lt;br /&gt;
%patch $336CE $10CC0A41RL #Orbatrix bouncing&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Floating collision code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete sprite collision code for the floating Orbatrix . It reacts only to Keen&#039;s shot type. This is canned for on the first line. If detected then the &#039;transform colliding sprite into smashed shot&#039; code is called and the Orbatrix&#039;s action changes to that of uncurling.&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;
#Orbatrix float collision code&lt;br /&gt;
%patch $115A5 $55 $8B $EC $56 $8B $76 $08 $83 $3C [$03] {$75} $18 $56 $9A $0CA60EC2RL&lt;br /&gt;
                      $83 $C4 $02 $B8 [$28B8W]  $50 $FF $76 $06 $9A $08F41297RL&lt;br /&gt;
                  $83 $C4 $04 $5E $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bouncing collision code ==&lt;br /&gt;
&lt;br /&gt;
This is the complete sprite collision code for the bouncing Orbatrix . It reacts to Keen&#039;s type on line 1, running the &#039;kill the player&#039; code. On the second line a check for Keen&#039;s shot type is made and if found the &#039;transform colliding sprite into smashed shot&#039; code is called and the Orbatrix&#039;s [[Patch:Sprite speed|horizontal speed]] is set to 0.&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;
#Orbatrix bouncing collision  code&lt;br /&gt;
%patch $11701 $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $08 $83 $3C [$02] {$75} $09&lt;br /&gt;
              $9A $0AA213CARL     $5F $5E $5D $CB $83 $3C [$03] {$75} $0E $56 $9A&lt;br /&gt;
              $0CA60EC2RL     $83 $C4 $02 $C7 $45 $16 [$0000W]  $5F $5E $5D $CB&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite animations|Animations]] =&lt;br /&gt;
&lt;br /&gt;
The Orbatrix has several animations. Four are used when floating left or right, the animation speed there controls how fast the Orbatrix moves. Three are used when curling up, here the animation speed controls how long the curling sequence takes. Four are used when bouncing, where the animation speed is more trivial. Finally the uncurling sequence uses the remaining frames where the animation speed controls how long this sequence takes.&lt;br /&gt;
&lt;br /&gt;
=== Keen 6 Animations ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Cache&lt;br /&gt;
%patch $3244C [$0149W] #Orbatrix cache start&lt;br /&gt;
%patch $3249C [$0155W] #Orbatrix cache end&lt;br /&gt;
&lt;br /&gt;
#Floating&lt;br /&gt;
%patch $33516 $014DW $014FW #Orbatrix moving&lt;br /&gt;
%patch $33520 $000CW        #Animation speed&lt;br /&gt;
%patch $33534 $014EW $0150W #Orbatrix moving&lt;br /&gt;
%patch $3353E $000CW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Curling up&lt;br /&gt;
%patch $33552 $0149W $0149W #Orbatrix curls 1&lt;br /&gt;
%patch $3355C $000CW        #Animation speed&lt;br /&gt;
%patch $33570 $0155W $0155W #Orbatrix curls 2&lt;br /&gt;
%patch $3357A $000CW        #Animation speed&lt;br /&gt;
%patch $3358E $0155W $0155W #Orbatrix curls 3&lt;br /&gt;
%patch $33598 $000CW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Uncurl&lt;br /&gt;
%patch $335AC $0151W $0151W #Orbatrix uncurls 1&lt;br /&gt;
%patch $335B6 $000CW        #Animation speed&lt;br /&gt;
%patch $335CA $0155W $0155W #Orbatrix uncurls 2&lt;br /&gt;
%patch $335D4 $000CW        #Animation speed&lt;br /&gt;
%patch $335E8 $0149W $0149W #Orbatrix uncurls 3&lt;br /&gt;
%patch $335F2 $000CW        #Animation speed&lt;br /&gt;
%patch $33606 $014AW $014AW #Orbatrix uncurls 4&lt;br /&gt;
%patch $33610 $000CW        #Animation speed&lt;br /&gt;
%patch $33624 $014BW $014BW #Orbatrix uncurls 5&lt;br /&gt;
%patch $3362E $000CW        #Animation speed&lt;br /&gt;
%patch $33642 $014CW $014CW #Orbatrix uncurls 6&lt;br /&gt;
%patch $3364C $000CW        #Animation speed&lt;br /&gt;
&lt;br /&gt;
#Bouncing&lt;br /&gt;
%patch $33660 $0154W $0151W #Orbatrix bounding 1&lt;br /&gt;
%patch $3366A $0006W        #Animation speed&lt;br /&gt;
%patch $3367E $0153W $0152W #Orbatrix bounding 2&lt;br /&gt;
%patch $33688 $0006W        #Animation speed&lt;br /&gt;
%patch $3369C $0152W $0153W #Orbatrix bounding 3&lt;br /&gt;
%patch $336A6 $0006W        #Animation speed&lt;br /&gt;
%patch $336BA $0151W $0154W #Orbatrix bounding 4&lt;br /&gt;
%patch $336C4 $0006W        #Animation speed&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Sprite positioning|Sprite positioning and attack range]] =&lt;br /&gt;
&lt;br /&gt;
The Orbatrix spawns 1.5 tiles higher than where placed, allowing it to float above the ground. It will also only attack Keen via bouncing if closer than 5 tiles left or right of him. (See [[Patch:Jump conditions]].)&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;
#Orbatrix spawn height&lt;br /&gt;
%patch $1150E [$FE80W] #1.5 tiles up&lt;br /&gt;
&lt;br /&gt;
#Orbatrix attack range&lt;br /&gt;
%patch $11592 [$FB00W] {$7E} #Closer than 5 tiles left&lt;br /&gt;
%patch $11598 [$0500W] {$7D} #Closer than 5 tiles right&amp;lt;/syntaxhighlight&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 Orbatrix has a foreground variable of 1, meaning it appears behind foreground tiles, required for consistency when it bounces into things.&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;
#Orbatrix foreground variable&lt;br /&gt;
%patch $114FC [$0000W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[Patch:Probability|Probability and randomness]] =&lt;br /&gt;
&lt;br /&gt;
There is a small chance that when floating the Orbatrix will chase Keen or attack him via curling (depending on how close he is.) The higher this probability the more aggressive it will be.&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;
#Chance of Orbatrix chasing Keen\Curling&lt;br /&gt;
%patch $1155C [$0020W]&amp;lt;/syntaxhighlight&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 Orbatrix has two unique tile interaction codes. The first is used when bounding and lets it bounce off of walls and floors. The second is used when &#039;floating&#039;. This is not just the main floating actions, but the curling up actions and all but the first two uncurling actions.&lt;br /&gt;
&lt;br /&gt;
The first two uncurling actions are special and use a generic draw sprite&#039; interaction. This is what can cause Orbatrix to get stuck in walls or floors if they uncurl at the wrong time.&lt;br /&gt;
&lt;br /&gt;
=== Sprite tile interactions ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Floating&lt;br /&gt;
%patch $3352E $10CC090CRL&lt;br /&gt;
%patch $3354C $10CC090CRL&lt;br /&gt;
&lt;br /&gt;
#Curling up&lt;br /&gt;
%patch $3356A $10CC090CRL&lt;br /&gt;
%patch $33588 $10CC090CRL&lt;br /&gt;
%patch $335A6 $10CC090CRL&lt;br /&gt;
&lt;br /&gt;
#Uncurling&lt;br /&gt;
%patch $335C4 $08F4180ARL&lt;br /&gt;
%patch $335E2 $08F4180ARL&lt;br /&gt;
%patch $33600 $10CC090CRL&lt;br /&gt;
%patch $3361E $10CC090CRL&lt;br /&gt;
%patch $3363C $10CC090CRL&lt;br /&gt;
%patch $3365A $10CC090CRL&lt;br /&gt;
&lt;br /&gt;
#Bounding&lt;br /&gt;
%patch $33678 $10CC0962RL&lt;br /&gt;
%patch $33696 $10CC0962RL&lt;br /&gt;
%patch $336B4 $10CC0962RL&lt;br /&gt;
%patch $336D2 $10CC0962RL&amp;lt;/syntaxhighlight&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;
When floating the Orbatrix needs to move smoothly, it thus uses action type 1. When bounding it must also react and animate and so uses action type 3. This is also used for most curling\uncurling actions.&lt;br /&gt;
&lt;br /&gt;
There are two &#039;adjustment&#039; actions, one each for curling and uncurling. These are type 2 and allow the Orbatrix to move into the right place.&lt;br /&gt;
&lt;br /&gt;
=== Sprite action types ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Floating&lt;br /&gt;
%patch $3351A [$0001W]&lt;br /&gt;
%patch $33538 [$0001W]&lt;br /&gt;
&lt;br /&gt;
#Curling up&lt;br /&gt;
%patch $33556 [$0003W]&lt;br /&gt;
%patch $33574 [$0003W]&lt;br /&gt;
%patch $33592 [$0002W]&lt;br /&gt;
&lt;br /&gt;
#Uncurling&lt;br /&gt;
%patch $335B0 [$0002W]&lt;br /&gt;
%patch $335CE [$0000W]&lt;br /&gt;
%patch $335EC [$0003W]&lt;br /&gt;
%patch $3360A [$0003W]&lt;br /&gt;
%patch $33628 [$0003W]&lt;br /&gt;
%patch $33646 [$0003W]&lt;br /&gt;
&lt;br /&gt;
#Bounding&lt;br /&gt;
%patch $33664 [$0003W]&lt;br /&gt;
%patch $33682 [$0003W]&lt;br /&gt;
%patch $336A0 [$0003W]&lt;br /&gt;
%patch $336BE [$0003W]&amp;lt;/syntaxhighlight&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 Orbatrix sticks to the ground in many of its actions (such as when floating, allowing it to float down hills.) This may seem a bit odd,but prevents it getting &#039;stuck&#039; too high in he air.&lt;br /&gt;
&lt;br /&gt;
=== Sprite deprotect, stick ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
#Floating&lt;br /&gt;
%patch $3351C [$0000W $0001W]&lt;br /&gt;
%patch $3353A [$0000W $0001W]&lt;br /&gt;
&lt;br /&gt;
#Curling up&lt;br /&gt;
%patch $33558 [$0000W $0001W]&lt;br /&gt;
%patch $33576 [$0000W $0001W]&lt;br /&gt;
%patch $33594 [$0000W $0001W]&lt;br /&gt;
&lt;br /&gt;
#Uncurling&lt;br /&gt;
%patch $335B2 [$0000W $0000W]&lt;br /&gt;
%patch $335D0 [$0000W $0000W]&lt;br /&gt;
%patch $335EE [$0000W $0001W]&lt;br /&gt;
%patch $3360C [$0000W $0001W]&lt;br /&gt;
%patch $3362A [$0000W $0001W]&lt;br /&gt;
%patch $33648 [$0000W $0001W]&lt;br /&gt;
&lt;br /&gt;
#Bounding&lt;br /&gt;
%patch $33666 [$0000W $0000W]&lt;br /&gt;
%patch $33684 [$0000W $0000W]&lt;br /&gt;
%patch $336A2 [$0000W $0000W]&lt;br /&gt;
%patch $336C0 [$0000W $0000W]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{PatchCategories|Keen 6|}}&lt;br /&gt;
{{PatchCategories|Sprite|}}&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=Omnispeak_(game_engine)&amp;diff=43275</id>
		<title>Omnispeak (game engine)</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=Omnispeak_(game_engine)&amp;diff=43275"/>
		<updated>2021-03-12T10:04:49Z</updated>

		<summary type="html">&lt;p&gt;Multimania: Update the Omnispeak page. The downloads are still out-of-date, though…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Fangame Infobox&lt;br /&gt;
| Status = In development&lt;br /&gt;
| Authors = [[User:Multimania|sulix]], NY00123, and [[User:Lemm|lemm]]&lt;br /&gt;
| OS = Windows, Linux&lt;br /&gt;
| ReleaseDate = 2014-03-14&lt;br /&gt;
| Genre = Game engine&lt;br /&gt;
| Homepage = [http://davidgow.net/keen/omnispeak.html Homepage]&amp;lt;br/&amp;gt;[https://pckf.com/viewtopic.php?f=4&amp;amp;t=4032 Discussion (v1.0)]&amp;lt;br/&amp;gt;[https://pckf.com/viewtopic.php?t=3021 Discussion (2014)]&amp;lt;br/&amp;gt;[http://github.com/sulix/omnispeak GitHub]&lt;br /&gt;
| Download = [http://www.shikadi.net/wiki/files/tools/t.omnispeak_win32.sulix_ny00123_lemm.2014-03-14.zip Windows 32-bit (2014 Preview)]&amp;lt;br/&amp;gt;[http://www.shikadi.net/wiki/files/tools/t.omnispeak_win64.sulix_ny00123_lemm.2014-03-14.zip Windows 64-bit (2014 Preview)]&amp;lt;br/&amp;gt;[http://www.shikadi.net/wiki/files/tools/t.omnispeak_macos.sulix_ny00123_lemm.2014-03-14.tar.gz Mac OS X 10.9 (2014 Preview)]&amp;lt;br/&amp;gt;[http://www.shikadi.net/wiki/files/tools/t.omnispeak_linux.sulix_ny00123_lemm.2014-03-14.tar.gz Linux (2014 Preview)]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Omnispeak (game engine)|Omnispeak]] is a game engine created by [[User:Multimania|sulix]], NY00123 and [[User:Lemm|lemm]].  It is billed as &#039;an open-source reimplementation of Commander Keen episodes 4, 5, and 6&#039; and aims to be a bug-for-bug compatible version of Keens 4–6 for modern systems. It is based on several reverse-engineering efforts, and supports features such as the cyan overscan border which are not supported by DOSBox.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to play through all of Keen 4, 5, and 6 under Omnispeak, and saved games from the original DOS games can be loaded by Omnispeak and vice-versa. The data files from a supported version of Keen are required to play: Omnispeak supports version 1.4 of Keens 4–6, and version 1.5 of Keen 6.&lt;br /&gt;
&lt;br /&gt;
While Omnispeak does not officially support playing mods, it is possible to play simple mods by replacing some file and/or modifying the source code: [https://pckf.com/viewtopic.php?f=2&amp;amp;t=4864 PCKF Discussion].&lt;br /&gt;
&lt;br /&gt;
Parts of the Omnispeak code were used in [[Keen:Galaxy Source Modding Package|CKSRCMOD]] and other source mods, like [[Atroxian Realm]]. [[Chocolate Keen]] is the equivalent for the Vorticons trilogy.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game_engines]]&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=File:Fangame-ingame-Omnispeak_(game_engine).png&amp;diff=43274</id>
		<title>File:Fangame-ingame-Omnispeak (game engine).png</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=File:Fangame-ingame-Omnispeak_(game_engine).png&amp;diff=43274"/>
		<updated>2021-03-12T09:37:04Z</updated>

		<summary type="html">&lt;p&gt;Multimania: A screenshot of Keen 5 running under Omnispeak (in windowed mode).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of Keen 5 running under Omnispeak (in windowed mode).&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User:Multimania&amp;diff=43273</id>
		<title>User:Multimania</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User:Multimania&amp;diff=43273"/>
		<updated>2021-03-12T09:34:39Z</updated>

		<summary type="html">&lt;p&gt;Multimania: Update the really dodgy user page I made ages ago.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m David Gow, known in the Keen community as Multimania and elsewhere as sulix, and have done a variety of Keen-related things over the years. I still have the old 486 I first played Keen on, and continue to play Keen on it to this day.&lt;br /&gt;
&lt;br /&gt;
I started the [[Omnispeak (game engine)]] project, which is a complete re-implementation of the Keen 4–6 engine for modern systems.&lt;br /&gt;
&lt;br /&gt;
[[Keen Dreams]] always fascinated me as the weird &amp;quot;in-between&amp;quot; Keen, so I wrote [[KDRPatch]] and the Keen Dreams support in [[ModKeen]]. I was also the lead programmer on the short-lived Steam version of Keen Dreams, and released a version of its [https://github.com/sulix/keen-dreams-sdl2/tree/steam source code].&lt;br /&gt;
&lt;br /&gt;
I also have released a few other miscellaneous things, including a pretty terrible mod ([[Robot Rebellion]]), and the [[Keen 1 Randomiser]].&lt;br /&gt;
&lt;br /&gt;
Finally, I wrote a lot of patches back in the day, including the initial version of the New sprite patch in [[Patch:Sprites (Keen 1)]].&lt;br /&gt;
&lt;br /&gt;
== My Mods ==&lt;br /&gt;
&lt;br /&gt;
{{MyMods}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://pckf.com/memberlist.php?mode=viewprofile&amp;amp;u=78 My PCKF Profile]&lt;br /&gt;
* [https://keenmodding.org/memberlist.php?mode=viewprofile&amp;amp;u=48 My Keen:Modding Profile]&lt;br /&gt;
* [https://davidgow.net/keen/kdreams.html Multimania&#039;s Keen Dreams Page] — Contains some history of the SDL2 port, Steam version, and Keen Dreams versions of [[CKPatch]] and [[ModKeen]].&lt;br /&gt;
* [https://davidgow.net/keen/omnispeak.html Omnispeak Homepage] — The homepage for the [[Omnispeak]] game engine.&lt;br /&gt;
* [https://davidgow.net/keen/randomiser.html Keen 1 Randomiser Homepage] — The homepage for the [[Keen 1 Randomiser]].&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=KeenWright&amp;diff=4952</id>
		<title>KeenWright</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=KeenWright&amp;diff=4952"/>
		<updated>2007-02-15T12:57:54Z</updated>

		<summary type="html">&lt;p&gt;Multimania: Mentioned adurdin&amp;#039;s view on DOS/Windows versions + source release.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
[[Image:keenwright dos.png|320px|thumb|The DOS version of KeenWright.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Keenwright win.png|320px|thumb|The Windows version of KeenWright.]]&lt;br /&gt;
&lt;br /&gt;
[[KeenWright]], also called &#039;&#039;&#039;KeenEdit&#039;&#039;&#039;, is a DOS-based, graphical level editor for Keens 1-3, created by [[Andrew Durdin]] and first released in 2000. It has the same resolution and colour depth as Keen, and therefore it allows the most immersive experience possible from a level editor. It can be used full-screen, and in Windows 98, ME, etc.,  it can also be used in a window. It is the preferred editor of many modders, partly due to its lack of bugs and widespread compatibility.&lt;br /&gt;
&lt;br /&gt;
It allows tiles, custom sprites (true sprites and numerical sprite values) to be placed in levels. It can assign a tile each to the letters Z, X and C on the keyboard.&lt;br /&gt;
&lt;br /&gt;
It has a map mode, accessed by pressing M, which shows sprite values as yellow boxes to show where levels and teleporters are located. It has a fill function, used by pressing F, which is useful for small areas, but crashes the program if used on an area that is too large. It also has a rectangle function, used by pressing R on a corner of the rectangle, then ENTER on the opposite corner. This function can be used to fill a whole level with a tile. There is a line function, used by pressing L at one end of the line, and ENTER at the other, which can draw straight lines across a level. Unlike many other editors, it lacks a facility for copying and pasting patterns of tiles.&lt;br /&gt;
&lt;br /&gt;
The graphics used in the editor are stored in a file called Keenedit.DAT. The [[TileInfo]] utility, also a work of Andrew Durdin&#039;s, is capable of exporting custom tiles into a Keenedit.DAT file which is compatible with KeenWright. There is no facility as yet for importing sprite images into KeenWright. &lt;br /&gt;
&lt;br /&gt;
It can automatically calculate the sprite numbers for map levels which block Keen from passing until the level is completed. The original release has no on-board helptext but it provides a separate, in-depth readme file.&lt;br /&gt;
&lt;br /&gt;
Despite the fact that it is more popular, [[Andrew Durdin]] has said that he would like to &amp;quot;kill&amp;quot; the DOS version of KeenEdit/KeenWright, in favor of the newer Windows version. The source code to both the DOS and Windows version is available, the latter being released under the GNU GPL.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://andy.durdin.net/keen/ Andrew Durdin&#039;s website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding Tools (Vorticons)]]&lt;br /&gt;
[[Category:Level Editors (Vorticons)]]&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=ModKeen&amp;diff=4910</id>
		<title>ModKeen</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=ModKeen&amp;diff=4910"/>
		<updated>2007-02-13T11:26:49Z</updated>

		<summary type="html">&lt;p&gt;Multimania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&#039;&#039;&#039;ModKeen&#039;&#039;&#039; is a Keen graphics importing/exporting utility written by [[Andrew Durdin]]. Each version has been released under the terms of the [[Wikipedia:GNU General Public License|GNU General Public License (GPL)]]. The official releases are written for the DOS platform, using the &#039;&#039;DOS 32-bit Protected Mode programming Interface (DPMI)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Its first version, 1.0, was an enhancement of the earlier [[ModLatch]] utility by Andrew Durdin. This first version was capable of importing and exporting [[Invasion of the Vorticons|Keen 1-3]] graphics, including the tileset bitmap, all the sprite animation frames, and miscellaneous bitmaps used by the engine, including the character set. All those are exported to the Windows Bitmap (BMP) format.&lt;br /&gt;
&lt;br /&gt;
Its second version, ModKeen 2.0, released in March 2004, added functionality for [[Goodbye Galaxy|Keen 4-6]] graphics and miscellaneous data importing/exporting. A revision, ModKeen 2.0.1, was released at the end of the same month, fixing several bugs in the Keen 1-3 data manipulation routines. Later, a unofficial revision with the same version number was released by [[User:Multimania|MultiMania]] in January 2005, adding support for [[Keen Dreams]] graphics and data importing/exporting. [http://andy.durdin.net/keen/modding/viewtopic.php?t=452]&lt;br /&gt;
&lt;br /&gt;
An unofficial Win32 port of ModKeen version 1.0 was released in March 2006 by [[z-1]]. [http://andy.durdin.net/keen/modding/viewtopic.php?t=881]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://andy.durdin.net/keen/modding/viewforum.php?f=9 The ModKeen forum on K:M]&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding Tools (Vorticons)]]&lt;br /&gt;
[[Category:Modding Tools (Galaxy)]]&lt;br /&gt;
[[Category:Graphics Modding Tools (Vorticons)]]&lt;br /&gt;
[[Category:Graphics Modding Tools (Galaxy)]]&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
	<entry>
		<id>https://keenwiki.shikadi.net/w/index.php?title=User:Multimania&amp;diff=4909</id>
		<title>User:Multimania</title>
		<link rel="alternate" type="text/html" href="https://keenwiki.shikadi.net/w/index.php?title=User:Multimania&amp;diff=4909"/>
		<updated>2007-02-13T11:24:58Z</updated>

		<summary type="html">&lt;p&gt;Multimania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Multimania is a long time keen fan who has made several Patches for Commander Keen and who made [[KDRPatch]] and who added Keen Dreams support to [[modkeen]].&lt;br /&gt;
&lt;br /&gt;
He does not live in Surrey.&lt;/div&gt;</summary>
		<author><name>Multimania</name></author>
	</entry>
</feed>