Ordering info and About Id text and setup

Completed patches for Keen3.
Post Reply
User avatar
levellord
Crazy pAtChEr
Posts: 1401
Joined: Thu Nov 20, 2003 11:35 pm
Location: NewZealand
Contact:

Ordering info and About Id text and setup

Post by levellord »

On the way to making my status screen patch I did this; if anyone asks I'll do the same for the About Id screen and put it here as well.

This is basically how the Ordering info text is set up; which is a lot simpler than Keen 1. I hope this makes it more than just a screen to blank out of the menu.

Code: Select all

#Ordering info screen position in title level:
%patch $AEC4 $01 #H position major [in 16 tiles]
%patch $AEBD $70 #H position minor [in tiles]

#Text locations
%patch $AE37 $04 #h position [all text!; in letters]
%patch $AE43 $04 #v position [in lines]

#Text read from: [19820 + value = text location]
%patch $AE43 $CE $33 #1st line, etc
%patch $AE4E $F3 $33
%patch $AE56 $1A $34
%patch $AE5E $3E $34
%patch $AE66 $65 $34
%patch $AE6E $8C $34
%patch $AE76 $B3 $34
%patch $AE7E $D8 $34
%patch $AE86 $F8 $34
%patch $AE8E $1E $35
%patch $AE96 $45 $35
%patch $AE9E $6E $35
%patch $AEA6 $93 $35
%patch $AEAE $BD $35

#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
These patches follow the usual rules about text location/text editing. Much 1337ness can be done. The AvK O.I screen is an example of a brief twiddle

Enjoy!
Last edited by levellord on Tue Jun 20, 2006 2:36 am, edited 1 time in total.
User avatar
Freeyorp101
Posts: 159
Joined: Thu Nov 24, 2005 2:12 am
Location: New Zealand

Post by Freeyorp101 »

if anyone asks I'll do the same for the About Id screen and put it here as well.
That'd be nice.



Would it be possible to read every line from a single blank string, saving space for further patches?


These patches follow the usual rules about text location/text editing.
Hmm. Each line has it's each $00, so rather than loading one big block of text it's loads 13 different text lines. Is that a waste of space, or is there a reason for keen3 to do this?
User avatar
levellord
Crazy pAtChEr
Posts: 1401
Joined: Thu Nov 20, 2003 11:35 pm
Location: NewZealand
Contact:

Post by levellord »

I am not entirely sure of this myself; the Keen 1 O.I text has extra space taken up in order to space the text, when' ' and $0A could've done, I think *that* was just trying out something.

Whereas here, well, it seems to be done all over the place; all the text sections use this format, I think it may have been if you wanted to alter a single text linewithout affecting the others, but then again it may just be that ID never though of doing it simpler. [Besides, if they'd done it simpler, well; it'd've removed some of the potential.]

To blank an O.I line, use the value $CD $33 [1 less than the start of the text] This can be used to blank as many lines of O.I text as you want.

However, the 1st line is special. Use the value $F2 $22 if you want to put any text in the O.I section [Otherwise any text you put in there will be ruined]

This patch here will leave one line of text in O.I [thus saving space] But the single line tells you the cheats.

Code: Select all

#Text locations  [shift down and left]
%patch $AE37 $08 #h position [all text!; in letters] 
%patch $AE43 $08 #v position [in lines] 
#Text read from: [19820 + value = text location] 
%patch $AE43 $CE $33 #1st line, etc 
%patch $AE4E $CD $33 
%patch $AE56 $CD $33 
%patch $AE5E $CD $33 
%patch $AE66 $CD $33 
%patch $AE6E $CD $33
%patch $AE76 $CD $33 
%patch $AE7E $CD $33 
%patch $AE86 $CD $33
%patch $AE8E $CD $33
%patch $AE96 $CD $33
%patch $AE9E $CD $33 
%patch $AEA6 $CD $33 
%patch $AEAE $CD $33 
#Ordering info text 
%patch $1CBEE  "Thanks for reading!" $0A $0A
                         "God mode: G+O+D" $0A
                         "Items: C+T+Space" $00
What makes these text patches so useful is that a location in one patch can be used in another. If you didn't use the statusbox text space for example, the O.I can use it, or the menu, or whatever.

One 'About Id coming up!
User avatar
levellord
Crazy pAtChEr
Posts: 1401
Joined: Thu Nov 20, 2003 11:35 pm
Location: NewZealand
Contact:

Post by levellord »

The A.Id text is even less efficient than the O.I text; look at all the blank spaces! However, it is also unique; only one line is read, but it is read totally different. One line is read 11 times, offset a bit each time. The $00's are ignored and the program just keeps reading text until it goes offscreen. This makes the Id text almost impossible to replace.

Code: Select all

#Bitmap
%patch $A0E4 $01 $00 #Id software bitmap used
%patch $A0E8 $17 $00 #H position, in pixels
%patch $A0EC $11 $00 #V position, lin 8x8 blocks
%patch $A10B $28 $00 #Line offset [second line is $28, = 40 letters right of the first]

#Text setup:
%patch $A0F6 $07 $00 #Text H position
%patch $A102 $09 $00 #Text V position [in lines]


#Text read from: [19920 + value = location]
%patch $A0DA $50 $30 #1st and only line; 2nd line is 1st line repeated, 40 letters right of first, etc

#About ID text
%patch $1C870 "We are a group of software artists    " $0A $00
%patch $1C898 "whose goal is to bring commercial     " $0A $00
%patch $1C8C0 "quality software to the public        " $0A $00
%patch $1C8E8 "at shareware prices.                 " $0A $0A $00
%patch $1C910 "Our effort is only possible with      " $0A $00
%patch $1C938 "your support. Without it, we cannot   " $0A $00
%patch $1C960 "continue to make this fine            " $0A $00
%patch $1C988 "software so affordable.              " $0A $0A $00
%patch $1C9B0 "Thank you in advance for your         " $0A $00
%patch $1C9D8 "contribution to the future of the     " $0A $00
%patch $1CA00 "growing shareware market.             " $0A $00
This patch completely wipes all the text [and the ID bitmap] Use this only if you want a totally blank screen, which, I dunno, maybe you could make it look pretty.

Code: Select all

#About Id is blank[no text]
%patch $A0CA $C3
User avatar
Freeyorp101
Posts: 159
Joined: Thu Nov 24, 2005 2:12 am
Location: New Zealand

Post by Freeyorp101 »

I dunno, maybe you could make it look pretty.
or maybe another preview for the game, like a 'demo' level?
User avatar
levellord
Crazy pAtChEr
Posts: 1401
Joined: Thu Nov 20, 2003 11:35 pm
Location: NewZealand
Contact:

Post by levellord »

Brilliant!

[After all, it has Keen and a Foob in the bottom of it]

You could even fiddle some tiles and the text, put a big sign in the middle of the 'level' with some text in it, I know thats what I'm going to do.

A demonstration level with a sign saying 'Winners don't loose Foobs' in paradoy of JOTJ's 'Winners don't loose frogs' sign.

So far I haven't found what controls the Keen/Foob subroutine, but I do know they're not sprites.
Stealthy71088
Posts: 583
Joined: Thu Mar 17, 2005 11:54 pm
Location: NY

Post by Stealthy71088 »

I haven't seen the sign, so I don't know if its intentional or not, but shouldn't it be lose?
User avatar
levellord
Crazy pAtChEr
Posts: 1401
Joined: Thu Nov 20, 2003 11:35 pm
Location: NewZealand
Contact:

Post by levellord »

No, loose; I have frog enemies at the moment.
User avatar
levellord
Crazy pAtChEr
Posts: 1401
Joined: Thu Nov 20, 2003 11:35 pm
Location: NewZealand
Contact:

Post by levellord »

And here are a few patches governing the Keen/Foob sequence:

Forst some misc stuff about what happens:

Code: Select all

#O.I shows text and 'An Apogee presentation of an ID...' text
%patch $AB5B $71

#No Keen or Foob
%patch $AB89 $00

#No Foob appears, thus Keen just stands there.
%patch $AB31 $00

#Same as above, but Keen shoots occasionally
%patch $AC20 $00

#Foob only appears while running away
%patch $AC77 $01

#Foob only appears when not running away
%patch $ACAF $01 $00

#Exit O.I When Foob is scared
%patch $ACBE $01 $00

#Exit O.I when Foob leaves screen
%patch $ADEC $00 $00

#Foob runs off and never comes back
%patch $ACD3 $01

#Keen raises gun again after Foob has run
%patch $ABAF $00
%patch $ABB7 $00
Now the sprites n sound used:

Code: Select all

%patch $AC68 $5D $00 #Walking toward Keen
%patch $AC5F $02 $00 #Second frame is $xx after 1st

%patch $ACA0 $5F $00 #Running from Keen
%patch $AC97 $02 $00 #Second frame is $xx after 1st

%patch $AD1B $61 $00 #Scared 1
%patch $AD78 $62 $00 #Scared 2
%patch $ACE6 $22 $00 #Sound of scared Foob

%patch $ABBC $14 $00 #Keen shoot while Foob approaching
%patch $ACF1 $14 $00 #Keen shoot after Foob flees
%patch $AD4E $14 $00 #Yet another shot animation
And finally two distance/time patches:

Code: Select all

#Foob goes across screen variable [random, $01 = not far, $00 $02 = right across]
%patch $AC2E $AF $00

#Pause after Foob leaves before it comes back
%patch $ADCE $32 $00
Well, thats everything!
levellass
Posts: 3001
Joined: Wed Oct 11, 2006 12:03 pm
Location: Ngaruawahia New Zealand

Post by levellass »

Rendering a few of the above patches unrequired, these patches control the location of Keen and the Foob in the Ordering Info screen. This is useful if you want to change the setup, or have changed your sprites.

Code: Select all

#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:
%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
Post Reply