Patch:Main menu (Vorticons)

From KeenWiki
Jump to navigation Jump to search

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 (Galaxy) and Patch:Main menu (Dreams).

The menu appears over the title screen. It has seven items, New game, Continue game, Story, About id, High scores, Ordering info, Previews and Restart demo. The currently selected item is shown by an 8x8 cursor taken from the 8x8 tiles. The menu window itself is set up like a normal "game window" and uses the same tiles.

There are three basic things to consider when changing the menu; the menu text, the menu item and what the item does. To properly alter the menu, all three must be considered. As an example, if we wanted to delete the "Continue game" option we would have to do three things; remove the continue game text so the player cannot see it, "shorten" the menu so that the player cannot select an "empty" option, and finally rearrange what the items do so they make sense again.

There is now a small utility, KeVoMeEd that lets a patcher build up the Main Menu of their choice with as many or as few items as they want (With some limits, notably text-wise.) It can be downloaded here.


Menu items

Menu items are independent of the text displayed in the menu. Each item is a "line" that the player can select with the cursor. For simplicity you can change the number of items by changing the last two values of this patch. (Default 7 items.) More complexly, this patch controls where the cursor navigates to when the arrow keys are pressed. There is a value for the top and the bottom of the menu so that the cursor knows where to go when "wrapping around" (going from the top of the menu to the bottom and vice versa). These should be the same to avoid problems.

Making the menu "shorter" will simply mean that there are items the player cannot select and thus cannot use. For example, making the bottom item 5 means the last two items, Previews and Restart demo appear, but cannot be selected. Making the top item 1 means "New game" cannot be selected.

Keen 1, Change number of menu items

#Menu start item
%patch $9331 [$00]    #When moving up
%patch $9472 [$0000W] #When wrapping around from bottom

#Menu bottom item
%patch $9414 [$07]    #Moving down
%patch $938F [$0007W] #When wrapping from top
%patch $95CD [$07]    #When refreshing window

Keen 2, Change number of menu items

#Menu start item
%patch $8DC4 [$00]    #When moving up
%patch $8F05 [$0000W] #When wrapping around from bottom

#Menu bottom item
%patch $8EA7 [$07]    #Moving down
%patch $8E22 [$0007W] #When wrapping from top
%patch $9060 [$07]    #When refreshing window

Keen 3, Change number of menu items

#Menu start item
%patch $9C15 [$00]    #When moving up
%patch $9D53 [$0000W] #When wrapping around from bottom

#Menu bottom item
%patch $9CF6 [$07]    #Moving down
%patch $9C72 [$0007W] #When wrapping from top
%patch $9EB9 [$07]    #When refreshing window


Menu cursor

As mentioned above, the cursor uses graphics from the 8x8 tiles (also known as the "font"). It can use any number of these when moving about the menu. The first 8x8 tile is 0, and so on. Only the idle (no keys being pressed) cursor animates. The cursor also leaves behind a vertical "trail" of tiles which should, usually, be the same as the background (space) tile of the menu window.

Keen 1, 8x8 cursor graphics

#Idle
%patch $92FB $09
%patch $9316 $02 #Animation frames - 1

#Moving up
%patch $933E $09 #While moving
%patch $93B5 $09 #After moving (Should be the same as above line)
%patch $937E $02 #Animation frames - 1
%patch $9361 $20 #Tile left behind (White space)

#Moving down
%patch $9421 $09 #While moving
%patch $9498 $09 #After moving (Should be the same as above line)
%patch $9461 $02 #Animation frames - 1
%patch $9444 $20 #Tile left behind (White space)

#Cursor speed:
%patch $9358 $01 #Up
%patch $943B $01 #Down

Keen 2, 8x8 cursor graphics

#Idle
%patch $8D8E $09
%patch $8DA9 $02 #Animation frames - 1

#Moving up
%patch $8DD1 $09 #While moving
%patch $8E48 $09 #After moving (Should be the same as above line)
%patch $8E11 $02 #Animation frames - 1
%patch $8DF4 $20 #Tile left behind (White space)

#Moving down
%patch $8EB4 $09 #While moving
%patch $8F2B $09 #After moving (Should be the same as above line)
%patch $8EF4 $02 #Animation frames - 1
%patch $8ED7 $20 #Tile left behind (White space)

#Cursor speed:
%patch $8DEB $01 #Up
%patch $8ECE $01 #Down

Keen 3, 8x8 cursor graphics

#Idle
%patch $9BDF $09
%patch $9BFA $02 #Animation frames - 1

#Moving up
%patch $9C22 $09 #While moving
%patch $9C98 $09 #After moving (Should be the same as above line)
%patch $9C61 $02 #Animation frames - 1
%patch $9C44 $20 #Tile left behind (White space)

#Moving down
%patch $9D03 $09 #While moving
%patch $9D79 $09 #After moving (Should be the same as above line)
%patch $9D42 $02 #Animation frames - 1
%patch $9D25 $20 #Tile left behind (White space)

#Cursor speed:
%patch $9C3C $01 #Up
%patch $9D1D $01 #Down


Window size

The menu size is in 8x8 blocks. Try not to make a window shorter or narrower than the text in it, it does not look pretty.

Keen 1

%patch $9601 [$000AW] #Height
%patch $9605 [$0012W] #Width

Keen 2

%patch $9094 [$000AW] #Height
%patch $9098 [$0012W] #Width

Keen 3

%patch $9EF0 [$000AW] #Height
%patch $9EF4 [$0012W] #Width


Positionable menu

The following patch alters the Main Menu so that it can be positioned anywhere on the screen instead of being simply centered. There are now four variables that govern the menu's size, the first four blue values in the patch. These are the bottom, right, top and left edges of the window in that order. (The patch given here thus produces a window starting at 4,10 to e,20 on the screen.) Adding 1 to any value moves the window by a 8-pixel block. Note that this patch is compatible with menu text patches on this page.

If using KeVoMeEd then this patch will replace the line under '#Simple Main Menu text patch'

Keen 1

#Positionable menu (Bottom, right, top, left.)
%patch $9601 [$000EW]  $50 $B8 [$0020W]  $50 $B8 [$0004W]  $50 $B8 [$0010W]  $50 $E8
             $C90BW  $83 $C4 $08 $A1 $8282W  $99 $A3 $AAF4W  $89 $16 $F6 $AA
             $A1 $82F8W  $99 $A3 $AAF8W  $89 $16 $FA $AA $B8 [$27D8W]  $50 $E8
             $CC9FW  $44 $44 $EB $3E

#Menu text
%patch $15828 "   New Game" $0A
              "   Continue Game" $0A
              "   Story" $0A
              "   About ID..." $0A
              "   High Scores" $0A
              "   Ordering Info" $0A
              "   Previews!" $0A
              "   Restart Demo" $0A $0A
              "Use the " $00


Menu options

These are a collection of two-byte addresses that "point" to the various options. The actual values are not important unless the actual option code is being patched (which is more complicated and should be unnecessary). When "removing" an option, your best bet is to simply delete the pointer. To keep the line in the menu box but make it unuseable, replace the pointer with the value replace the pointer with $95CAW or 'do nothing'

Keen 1

#Menu pointers
%patch $95ED {$9570W} # New Game
             {$9577W} # Continue Game
             {$957FW} # Story
             {$9589W} # About ID...
             {$9596W} # High Scores
             {$95A3W} # Ordering Info
             {$95B5W} # Previews!
             {$95C2W} # Restart Demo

Keen 2

#Menu pointers
%patch $9080 {$9003W} # New Game
             {$900AW} # Continue Game
             {$9012W} # Story
             {$901CW} # About ID...
             {$9029W} # High Scores
             {$9036W} # Ordering Info
             {$9048W} # Previews!
             {$9055W} # Restart Demo

Keen 3

#Menu pointers
%patch $9EDC {$9E4FW} # New Game
             {$9E56W} # Continue Game
             {$9E5EW} # Story
             {$9E68W} # About ID...
             {$9E78W} # High Scores
             {$9E88W} # Ordering Info
             {$9E9CW} # Previews!
             {$9EACW} # Restart Demo


Restart Demo option exits to DOS

This patch changes things so that if the player selects the 'restart demo' option the game will immediately exit to DOS without asking for conformation.

Restart demo option quits to DOS

#Restart demo quits to DOS -Keen 1
%patch $95C2 $9A $00001261RL

#Restart demo quits to DOS -Keen 2
%patch $9055 $9A $0000121BRL

#Restart demo quits to DOS -Keen 3
%patch $9EAC $9A $000011BFRL


Text

The menu text is one line of text for each item plus a bottom of window instruction telling the player how to use the menu. Two things can be done, the text can be removed entirely or it can be changed.

Changing the text is complicated. (See Patch:Text patches.) Removing an item's text does not in fact disable the item, it merely changes the whole menu to not have that text, likewise adding text. The following patches (Which must be included in full to work1) make changing\deleting text easier, but it is likely that any modder wanting to alter the Main Menu significantly would prefer to use the utility at the bottom of the page to handle this sort of complex patching.

Keen 1

#Simple Main Menu text patch
%patch $9625 [$27D8W]  $50 $E8 $CCA7W  $44 $44 $EB $46

#Menu text
%patch $15828 "   New Game" $0A
              "   Continue Game" $0A
              "   Story" $0A
              "   About ID..." $0A
              "   High Scores" $0A
              "   Ordering Info" $0A
              "   Previews!" $0A
              "   Restart Demo" $0A $0A
              "Use the " $00

#Extra text
%patch $15F6A "arrows" $00
%patch $15F71 "mouse" $00
%patch $15F77 "joystick" $00
%patch $9686 [$2F1AW] #Arrows (Using keyboard)
%patch $968B [$2F21W] #Mouse (Using mouse)
%patch $9690 [$2F27W] #Joystick (Using joystick)

Keen 2

#Simple Main Menu text patch (Frees $9F1C-$9F59)
%patch $90B8 [$2F39W]  $50 $E8 $97E7W  $44 $44 $EB $46

#Menu text
%patch $1A6B9 "   New Game" $0A
              "   Continue Game" $0A
              "   Story" $0A
              "   About ID..." $0A
              "   High Scores" $0A
              "   Ordering Info" $0A
              "   Previews!" $0A
              "   Restart Demo" $0A $0A
              "Use the " $00

#Extra text
%patch $1A73D "arrows" $00
%patch $1A744 "mouse" $00
%patch $1A74A "joystick" $00
%patch $9119 [$2FBDW] #Arrows (Using keyboard)
%patch $911E [$2FC4W] #Mouse (Using mouse)
%patch $9123 [$2FCAW] #Joystick (Using joystick)

Keen 3

#Simple Main Menu text patch (Frees $9F1C-$9F59)
%patch $9F13 [$2FB5W]  $50 $E8 $892AW  $59 $EB $3E

#Menu text
%patch $1C7D5 "   New Game" $0A
              "   Continue Game" $0A
              "   Story" $0A
              "   About ID..." $0A
              "   High Scores" $0A
              "   Ordering Info" $0A
              "   Previews!" $0A
              "   Restart Demo" $0A $0A
              "Use the " $00

#Extra text
%patch $1C859 "arrows" $00
%patch $1C860 "mouse" $00
%patch $1C866 "joystick" $00
%patch $9F6B [$3039W] #Arrows (Using keyboard)
%patch $9F75 [$3040W] #Mouse (Using mouse)
%patch $9F7F [$3046W] #Joystick (Using joystick)


No 'arrows\buttons', etc text

These patches make sure that the menu text is always the same by removing the variable 'arrows' etc text that appears at the end of the menu's 'Use the' line.

Keen 3

#No 'arrows' etc texts
%patch $9F5A $EB $2A


Menu demo sequence

Disable

If the main menu window is left closed (Using the 'Restart demo' option.) for approximately ten seconds, then the screen will change a number of times, highlighting the About Id, High Scores and Ordering Info windows in that order, before returning to the main menu screen. This is the 'demo sequence' The patches below stop this happening; the window will never change and the player must select an option from the menu before they can see any alternate screens. If a menu option has been disabled, this is a great way to ensure the disabled screen never appears in-game.

Stop demo sequence

#Stop demo sequence -Keen 1
%patch $915C $90 $90

#Stop demo sequence -Keen 2
%patch $8BF0 $90 $90

#Stop demo sequence -Keen 3
%patch $9A3E $90 $90

Don't load menu option text files

This patch stops the game loading the various menu option text files into memory when starting and also prevents it checking if the file is present. If the relevant option in the menu is not disabled, accessing it will crash the game. Using this patch frees up some memory and also allows the various files to be deleted without crashing the game.

Keen 1

#Don't use Previews text file
%patch $7972 $EB $0C #Don't load
%patch $79C8 $EB $07 #Don't check


External links