Patch:Ordering Info
The Ordering Info is a screen shown in all versions and episodes of Keen Vorticons. It provides information on how to order the Vorticons trilogy as well as a small sprite animation for eye candy. As such while there are similarities, there are also differences between episodes.
There are two main things that can be patched, the O.I text itself, and the sprite animation. Altering the text involves text patching so it pays to read that page first. The sprite animations are not sprites in a true sense, but merely a series of images displayed onscreen. As such they can be edited in interesting ways.
Screen position
This is the horizontal position of the screen in the title screen level. There are two values, the first is worth 16 tiles, the second a single tile. The default value of $01,$70 (1,112) is thus 118 tiles from the level's left side.
Keen 3
#Ordering info screen position in title level:
%patch $AEC4 $01 #H position major
%patch $AEBD $70 #H position minor
Text
This is the ordering info text. It begins at a certain position in the window and proceeds from there.
Text start location
This is where the text begins on the screen. All other text is below and right of this. It can be considered the upper left 'margin' of the screen. In Keen 1 there are three horizontal offsets; the first is 0 and so doesn't need to be defined, leaving two patchable values. The first affects the first seven lined and the second a single line following of text. This was done to save text space but was overly complicated and so dropped for Keen 2&3. To show this the text patch for it has the offset as spaces, as it would appear onscreen.
Keen 1
#Text locations
%patch $A4A7 [$0004W] #Lines down from top text begins
%patch $A49B [$000CW] #First 7 lines h offset
%patch $A4E9 [$0005W] #8th line h offset (Other lines no offset)
Keen 3
#Text locations
%patch $AE37 [$04] #h position (in letters)
%patch $AE43 [$04] #v position (in lines)
Text
Keen 1
#Ordering Info text
%patch $1632C "Commander Keen: Invasion" $0A $00
%patch $16346 "of the Vorticons consists" $0A $00
%patch $16361 " of three unique and" $0A $00
%patch $16379 " challenging episodes:" $0A $00
%patch $16392 "1. Marooned on Mars $15" $0A $00
%patch $163AD "2. The Earth Explodes $15" $0A $00
%patch $163C8 "3. Keen Must Die! $15" $0A $00
%patch $163E3 " Order the trilogy for $30 and you get" $0A $00
%patch $1640B " * The 'Secret Hints & Tricks' sheet" $0A $00
%patch $16432 " * The special 'cheat mode' password" $0A $00
%patch $16459 " * The latest version of each game" $0A $00
%patch $1647E " * SEVERAL FREE BONUS GAMES!" $0A $0A $00
%patch $1649E " Mail orders to:" $0A $00
%patch $164C6 "(U.S. funds only Apogee Software" $0A $00
%patch $164EE "checks or M/O's P.O. Box 476389" $0A $00
%patch $16516 "include $2 P&H) Garland, TX 75047" $0A $0A $0A $00
%patch $16542 "Specify 5.25/3.5 disk size when ordering" $0A $00
%patch $16570 " Or order toll free: 1-800-852-5659 " $0A $00
#Text read from: (13050 + value = location)
%patch $A4AA $32DC
%patch $A4B3 $32F6W
%patch $A4BC $3311W
%patch $A4C5 $3329W
%patch $A4CE $3342W
%patch $A4D7 $335DW
%patch $A4E0 $3378W
%patch $A4F2 $3393W
%patch $A505 $33BBW
%patch $A40E $33E2W
%patch $A517 $3409W
%patch $A520 $342EW
%patch $A529 $344EW
%patch $A532 $3476W
%patch $A53B $349EW
%patch $A544 $34C6W
%patch $A54D $34F2W
%patch $A55C $351CW
Keen 2
#Ordering info text:
%patch $1AADA " Commander Keen: Invasion of the" $0A $00
%patch $1AB00 " Vorticons consists of three unique" $0A $00
%patch $1AB26 " and challenging episodes:" $0A $0A $00
%patch $1AB48 " Order the trilogy for $30 and you get" $0A $00
%patch $1AB6D "* The 'Secret Hints & Tricks' sheet" $0A $00
%patch $1AB92 "* The special 'cheat mode' password" $0A $00
%patch $1ABB7 "* The latest version of each game" $0A $00
%patch $1ABDA "* SEVERAL FREE BONUS GAMES!" $0A $0A $00
%patch $1ABF8 " Mail orders to:" $0A $00
%patch $1AC13 " Apogee Software" $0A $00
%patch $1AC2E " P.O. Box 476389" $0A $00
%patch $1AC53 " Garland, TX 75047" $0A $0A $00
%patch $1AC67 " U.S. funds only; checks or M/O's" $0A $00
%patch $1AC8B " Include $2 postage & handling" $0A $00
%patch $1ACAD "Specify 5.25/3.5 disk when ordering." $0A $00
%patch $1ACD3 " Or order toll free: 1-800-852-5659 " $00
Keen 3
#Ordering info text
%patch $1CBEE " Commander Keen: Invasion of the" $0A $00
%patch $1CC13 " Vorticons consists of three unique" $0A $00
%patch $1CC3A " and challenging episodes:" $0A $0A $00
%patch $1CC5E " Order the trilogy for $30 and get:" $0A $00
%patch $1CC85 " * The 'Secret Hints & Tricks' sheet" $0A $00
%patch $1CCAC " * The special 'cheat mode' password" $0A $00
%patch $1CCD3 " * The latest version of each game" $0A $00
%patch $1CCF8 " * SEVERAL FREE BONUS GAMES!" $0A $0A $00
%patch $1CD18 " Mail orders to: U.S funds only;" $0A $00
%patch $1CD3E " Apogee Software checks or M/O's." $0A $00
%patch $1CD65 " P.O. Box 476389 Include $2 postage" $0A $00
%patch $1CD8E " Garland, TX 75047 and handling." $0A $0A $00
%patch $1CDB3 "Specify 5.25/3.5 disk size when ordering" $0A $00
%patch $1CDDD " Or order toll free: 1-800-852-5659 " $00
#Text read from:
%patch $AE43 $33CEW
%patch $AE4E $33F3W
%patch $AE56 $341AW
%patch $AE5E $343EW
%patch $AE66 $3465W
%patch $AE6E $348CW
%patch $AE76 $34B3W
%patch $AE7E $34D8W
%patch $AE86 $34F8W
%patch $AE8E $351EW
%patch $AE96 $3545W
%patch $AE9E $356EW
%patch $AEA6 $3593W
%patch $AEAE $35BDW
Don't display text
This stops all of the O.I text appearing. The text space may then be used somewhere else. This patch also frees up significant code space.
Keen 1
#Blank O.I text (Free $A497-$A565; 520 chars free at $1632C)
%patch $A497 $C3
Keen 2
#Blank O.I text (Free $9F32-$9FD5; 520 chars free at $1AADA)
%patch $9F32 $C3
Keen 3
#Blank O.I text (Free $AE34-$AEB6; 533 chars spare at $1CBEE)
%patch $AE33 $C3
Sprite animations
These are the little sequences that play while the O.I screen is visible. They differ greatly in each episode.
In Keen 1 two selections of randomish animations appear, by default these look like a randomly animating Yorp and Garg. This is done by reading information from three lists, then randomizing it. The lists are sprite animation to use, vertical position of image and horizontal position of image. To change the sprite displayed you simply have to patch the sprite list, this gives the value of the lowest value sprite displayed. The 'amount to randomize' gives the number of frames that can be picked to display (If the starting sprite is 10 and the randomizer value is 7, then frames 10-17 can be displayed in the O.I)
Keen 1
#Don't show sprites
%patch $A343 $EB $2E
#Sprite list for Ordering Info
%patch $A34A $3102W #Read from
%patch $A34E $0004W #Length of list to read
%patch $16152 $0030W #List, two sprites, Yorp and Garg
$003CW #Garg
#V Positioning list
%patch $A35A $3106W #Read from
%patch $A35E $0008W #Length of list to read
%patch $16156 $9700W $0000W #Yorp
$8F00W $0000W #Garg
#H Positioning list
%patch $A36A $310EW #Read from
%patch $A36E $0008W #Length of list to read
%patch $1615E $9000W $0000W #Yorp
$8D00W $0000W #Garg
#Randomness stuff:
%patch $A3DC $0031W #Randomizer for stuff added to sprite anims
%patch $A3E5 $0007W #Amount to randomize (Lower = more)
In Keen 3 there are two sprites, 'Keen' and a 'Foob'; the Foob walks towards Keen. Keen 'threatens' the Foob by pointing his gun at it, it 'sees' him and runs away, like it would in the game. There is a pause, and the Foob enters again, restarting the cycle.
This is managed by taking several sprite images and displaying them at certain positions on the screen. The 'animating' Foob sprites are two frames, the second a certain offset (Default 2 frames) after the first.
At present not everything can be patched.
Keen 3
#Remove stuff:
%patch $AB89 $00 #No Keen or Foob
%patch $AB31 $00 #No Foob appears, thus Keen just stands there.
%patch $ACD3 $01 #Foob runs off and never comes back
%patch $ACBE $01 $00 #Exit O.I When Foob is scared
%patch $ADEC $00 $00 #Exit O.I when Foob leaves screen
#Misc Foob stuff:
%patch $ADCE [$0032W] #Pause after Foob leaves before it comes back
%patch $ACE6 [$0022W] #Sound of scared Foob
#Keen position (First is v, next is h)
%patch $AB8F $B0 #Standing about
%patch $AB9F $08
%patch $ABC9 $B0 #Threaten Foob 1
%patch $ABD9 $08
%patch $ACFE $B0 #Threaten Foob 2
%patch $AD0E $08
%patch $AD5B $B0 #Threaten Foob 3
%patch $AD6B $08
%patch $ABF4 $B0 #After threatening
%patch $AC04 $08
#Foob walk height: (Can be used to make Foob vanish)
%patch $AC75 $B8 #Walking left
%patch $AD28 $B8 #Scared 1
%patch $AD28 $B8 #Scared 2
%patch $AD85 $B8 #Scared 3
%patch $ACAD $B8 #Fleeing right
#Foob Animations
%patch $AC68 [$005DW] #Walking toward Keen
%patch $AC5F [$0002W] #Frame offset
%patch $ACA0 [$005FW] #Running from Keen
%patch $AC97 [$0002W] #Frame offset
%patch $AD1B [$0061W] #Scared 1
%patch $AD78 [$0062W] #Scared 2
#Keen Animations
%patch $ABBC [$0014W ]#Keen threaten while Foob approaching
%patch $ACF1 [$0014W] #Keen threaten after Foob flees
%patch $AD4E [$0014W] #Yet another threaten animation