Patch:About Id

From KeenWiki
Jump to navigation Jump to search

The About Id screen is found in Keen Vorticons and displays information about Id Software. The screen is part of the main menu level and contains some text and a bitmap.

There are in fact two ways to access the About Id screen and both can be made to do different things. (See the 'blank screen' and 'location' sections below.) The first is via the Main Menu itself and the second is by waiting long enough at the title screen for the 'demo loop' to go to the About Id screen.


Bitmap

The bitmap acts like the screen title. It is a single graphic displayed on the screen. Animating tiles will appear over it the first time they animate. While the h position on the screen is in pixels, the v position is in 'lines' or 8 pixels. (A value of 4 is thus 24 pixels down.)

Keen 1

#Bitmap
%patch $980A [$0001] #Bitmap used
%patch $980E [$0017] #V position, in pixels
%patch $9812 [$0011] #H position, in 8x8 blocks

#Don't show ID bitmap:
%patch $9815 $90 $90 $90

Keen 2

#Bitmap
%patch $928B [$0001] #Bitmap used
%patch $928F [$0017] #V position, in pixels
%patch $9293 [$0011] #H position, in 8x8 blocks

#Don't show ID bitmap:
%patch $9296 $90 $90 $90

Keen 3

#Bitmap
%patch $A0E4 [$0001] #Bitmap used
%patch $A0E8 [$0017] #V position, in pixels
%patch $A0EC [$0011] #H position, in 8x8 blocks

#Don't show ID bitmap:
%patch $A0EF $90 $90 $90

Text

This is the text. It is horrendously complicated to patch, though it can be made simpler. The following patches are set up as if the default approach is used, giving the maximum line length. Any line can be shorter than this, but MUST end with $00

The text setup on this screen is unusual, it was possibly designed as an experiment in displaying text with margins, but was evidently abandoned. While several lines of text are displayed, they are all printed from one location. The screen takes a chunk of text then reads segments every x charters, writing them one after another. Thus the line of text reading 'This is*****a line******of text.****' where '*' is character 0 (Blank) reads as "This is a line of text." if the 'line length' is 12. (The * aren't displayed. Note the text segment length is (number of lines) * (line length))

This achieves the exact same effect as just having one long line of text with $0As to move down a line. (See Patch:Text patches) This can be achieved by setting the number of lines to 1 and the line length to a large value like $0200W (512 characters.) This avoids having to worry about line length and number.

Keen 1

#Text setup:
%patch $981C [$0007W] #Text H position
%patch $9828 [$0009W] #Text V position (in lines)
%patch $9831 [$0028W] #Length of text lines (40 chars)
%patch $9844 [$0B]    #Number of lines
%patch $9800 [$2F30W] #Read from

#Text
%patch $15F80 "We are a group of software artists    " $0A $00
%patch $15FA8 "whose goal is to bring commercial     " $0A $00
%patch $15FD0 "quality software to the public        " $0A $00
%patch $15FF8 "at shareware prices.                 " $0A $0A $00
%patch $16020 "Our effort is only possible with      " $0A $00
%patch $16048 "your support. Without it, we cannot   " $0A $00
%patch $16070 "continue to make this fine            " $0A $00
%patch $16098 "software so affordable.              " $0A $0A $00
%patch $160C0 "Thank you in advance for your         " $0A $00
%patch $160E8 "contribution to the future of the     " $0A $00
%patch $16110 "growing shareware market.             " $0A $00

Keen 2

#Text setup:
%patch $929D [$0007W] #Text H position
%patch $92A9 [$0009W] #Text V position (in lines)
%patch $92B2 [$0028W] #Length of text lines (40 chars)
%patch $92C5 [$0B]    #Number of lines
%patch $9281 [$2FD4W] #Read from

#Text
%patch $1A754 "We are a group of software artists    " $0A $00
%patch $1A77C "whose goal is to bring commercial     " $0A $00
%patch $1A7A4 "quality software to the public        " $0A $00
%patch $1A7CC "at shareware prices.                 " $0A $0A $00
%patch $1A7F4 "Our effort is only possible with      " $0A $00
%patch $1A81C "your support. Without it, we cannot   " $0A $00
%patch $1A844 "continue to make this fine            " $0A $00
%patch $1A86C "software so affordable.              " $0A $0A $00
%patch $1A894 "Thank you in advance for your         " $0A $00
%patch $1A8BC "contribution to the future of the     " $0A $00
%patch $1A8E4 "growing shareware market.             " $0A $00

Keen 3

#Text setup:
%patch $A0F6 [$0007W] #Text H position
%patch $A102 [$0009W] #Text V position (in lines)
%patch $A10B [$0028W] #Length of text lines (40 chars)
%patch $A11D [$0B]    #Number of lines
%patch $A0DA [$3050W] #Read from

#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


No A.I text

These patches stop any text appearing in the A.I window, leaving the text space free as well as the screen. 90 bytes of code are also freed up.

Keen 1

#About Id is blank (Frees $97F1-$984B)
%patch $97F0 $C3

Keen 2

#About Id is blank (Frees $9272-$92CC)
%patch $9271 $C3

Keen 3

#About Id is blank (Frees $A0CB-$A124)
%patch $A0CA $C3


Locations

This patch controls the location, in the titlescreen level, of the About Id screens. There are in fact two, placed in the exact same location by default. As noted in the intro to this page they are the screen accessed from the Main Menu and accessed via waiting at the titlescreen for the demo loop. Both screens have the same text and bitmap by default, but one screen can be blanked (See below.) or both screens can have different locations and tiles, just for fun.

The location is tricky and is in two parts. The first horizontal\vertical value is in units of 16 tiles, adding 1 will move the screen across or down 16 tiles. The second is in 256ths of a pixel; adding 1 has no effect, adding 256 ($0100W) will move it one pixel right or down and adding 4096 ($1000W) will move the screen one whole tile. (This means that the second value cannot be higher than $FF00W, 15 tiles and 15 pixels.)

So to convert the location take the desired location and divide by 16 tiles to get the first value, then add '00' to the end of the remainder. (Pixel specific locations are probably not needed.) Here the default location is 63, 1.75 tiles. This breaks down to 3x16 + 15 and 0x16 + 1 + 12 pixels.

Keen 1

#Demo loop About ID location
%patch $917B [$F000W] #Horizontal 1
%patch $9181 [$0003W] #Horizontal 2
%patch $9187 [$1C00W] #Vertical 1
%patch $9187 [$0000W] #Vertical 2

#Menu accessed About Id location
%patch $973C [$F000W] #Horizontal 1
%patch $9742 [$0003W] #Horizontal 2
%patch $9748 [$1C00W] #Vertical 1
%patch $974E [$0000W] #Vertical 2

Keen 2

#Demo loop About ID location
%patch $8C0F [$F000W] #Horizontal 1
%patch $8C15 [$0003W] #Horizontal 2
%patch $8C1B [$1C00W] #Vertical 1
%patch $8C21 [$0000W] #Vertical 2

#Menu accessed About Id location
%patch $91BD [$F000W] #Horizontal 1
%patch $91C3 [$0003W] #Horizontal 2
%patch $91C9 [$1C00W] #Vertical 1
%patch $91CF [$0000W] #Vertical 2

Keen 3

#Demo loop About ID location
%patch $9A5D [$F000W] #Horizontal 1
%patch $9A63 [$0003W] #Horizontal 2
%patch $9A69 [$1C00W] #Vertical 1
%patch $9A6F [$0000W] #Vertical 2

#Menu accessed About Id location
%patch $A017 [$F000W] #Horizontal 1
%patch $A01D [$0003W] #Horizontal 2
%patch $A023 [$1C00W] #Vertical 1
%patch $A019 [$0000W] #Vertical 2


Blank screen

This patch makes the About Id blank. It will show neither the bitmap nor the text. Since there are two ways to access the screen this, in combination with the location patch above, allows the modder to make a separate blank screen for either the menu or the demo loop. This could perhaps be a secret or, using tiles,a useful extra.

Each disabling patch requires two lines to ensure it works correctly.

Keen 1

#Demo loop About Id screen is blank
%patch $913F $90 $90 $90
%patch $918F $90 $90 $90

#Mai Menu About Id screen is blank
%patch $9756 $90 $90 $90
%patch $976C $90 $90 $90