Patch:Main menu (Dreams)

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

The Dreams menu is unlike that of both Vorticons and Galaxy and is notable for its difficulty of navigation and its use of a large number of bitmap images. Since nearly everything about the menu is controlled by menu 'actions' this page focuses on these as a whole, divided by what menu they belong to.


Skip titlescreen, go straight to menu

The first patch causes the game to go straight to the menu instead of displaying the titlescreen. The title (and High Scores) can be viewed by pressing 'Esc' in the main menu screen but otherwise will not appear.

The second patch is related, except the titlescreen appears, the player is sent to the menu after a time instead of seeing the High Scores.

Go straight to menu

#Skip titlescreen go straight to Main Menu
%patch $439A $00FBW

#Go to menu after titlescreen
%patch $4408 $90 $90


Loading text

This is the text displayed in the loading window when the player presses 'Esc' ingame. The window vanishes when the menu loads.

Menu loading text

#Text called from
%patch $1635F [$5C27W]
%patch $29697 "Options Screen" $00


Background screen color

This patch controls the background color of the menu screen. When the menu window appears a 320x200 pixel square of color 1 is drawn first. This erases anything previously on the screen and provides a background color. (Blue by default.)

Main menu background color

#Main menu background color
%patch $16390 [$0001W]


Menu footers

Whenever a given menu is open there is usually a line of 'footer text' at the bottom of the screen that provides information on what the current option does. (For example 'Start new game in easy mode'.) While many are governed by the menu that brings them up, thus being dealt with elsewhere, others are 'special' in that they appear in certain circumstances.

These texts have pointers to their location and many also are colored -something that can be patched. The following sections detail patches relating to these.


Idling text

If the player does not press any keys for a period of approximately 10 seconds then the game will replace the current menu's bottom text with 'Press F1 for help', which will flash between light red and black to catch the player's attention.

The patches below affect this.Aside from the text itself it is possible to control how long it takes before the text displays as well as the two colors it flashes. The flashing speed is somewhat coarse, at fastest it can only go twice as fast as default.

Menu idling text

#Menu idling text call
%patch $168A8  [$5C4FW]

#Text
%patch $296BD "Press F1 for Help" $00

#Time before text displays
%patch $1687B [$02BCW]

#Text flashing speed
%patch $1689B [$02]

#Idle text colors
%patch $168A6 [$03] #Color 1 (Red)
%patch $168B5 [$0F] #Color 2 (Black)


Disable

This patch disables the text change.

No idling text

#Don't display red 'Press F1' text when idling in menu
%patch $16875 $EB


Exiting text

This text appears when Keen quits the game, it is colored red by default.

Exiting text

#Exiting text
%patch $168F6 [$03]    #Color (Red)
%patch $168F8 [$5C5FW] #Call

#Text
%patch $296CF "Now Exiting to DOS..." $00


Saving text

This text appears when Keen tries to save a game, it is colored red by default.

Saving text

#Saving text
%patch $15A23 [$03]    #Color (Red)
%patch $15A25 [$5BBFW] #Call

#Text
%patch $2962F "Enter Game Name / Escape Aborts" $00


Loading text

This text appears when Keen tries to load a game while playing a game. It is colored red by default and consists of two different lines of text, both of which use the same color.

Loading text

#Loading text
%patch $15D48 [$03]    #Color (Red)
%patch $15D4A [$5BEFW] #Call 1
%patch $15D54 [$5C0FW] #Call 2

#Texts
%patch $2965F "Warning! If you do this, you'll" $00
%patch $2967F "abort the current game." $00


Help text footer

This text appears when Keen explores the help sections. The first line appears as the section is loading, on faster systems it won't appear at all. The second line appears while the section is open. Both are red by default and must be the same color. It is also possible to color the entire helptext section another color, though by default it's black.

Help text

#Help text color
%patch $15152 [$0F] #Black

#Help footer text
%patch $1561D [$03]    #Color (Red)
%patch $1561F [$5B96W] #Call -loading
%patch $15145 [$5B77W] #Call -Arrows

#Footer text
%patch $29606 "Loading & Formatting Text..." $00
%patch $295E7 "Arrow Keys Move / Escape Exits" $00


Item disabled text

This text appears when the player clicks an item on the menu that is currently disabled. There are two different calls. The first appears when the player tries to click a disabled item with mouse while the second appears when the player tries to click with keyboard. Both are red and appear only while the player is attempting to select an item.

Item disabled text

#Item disabled text 1
%patch $14649 [$03]    #Color (Red)
%patch $1464B [$5B06W] #Call

#Text
%patch $29576 "This item is disabled" $00


#Item disabled text 2
%patch $144BB [$03]    #Color (Red)
%patch $144BD [$5AF0W] #Call

#Text
%patch $29560 "This Item is Disabled" $00

Key already used text

This text appears when the player attempts to change a control to use a key that's already being used by another action.

Key already used text

#Key already used text
%patch $14D9E [$03]    #Color (Red)
%patch $14DA0 [$5B1CW] #Call

#Text
%patch $2958C "That Key is Already Used!" $00


Joystick test text

This text appears when the player calibrates the joystick. There are two texts, both the same color (red) by default.

Joystick test text

#Joystick test text
%patch $14E2C [$03]    #Color (Red)
%patch $14E31 [$5B36W] #Call 1
%patch $14E7A [$5B56W] #Call 2

#Text
%patch $295A6 "Move Joystick to the Upper-Left" $00
%patch $295C6 "Move Joystick to the Lower-Right" $00


Menu cache

The menu caches all of the image chunks when it loads; if some are unused these can be excluded from the cache to save memory. This is the only known case of unmasked images being cached as a group in the Keen series.

Keen Dreams menu image cache

#Main menu cache
%patch $23E72 [$0004W] #Image cache start
%patch $23E9E [$0044W] #Image cache end


Menu actions

Menu actions are 26-byte long strings of data that to a large degree govern the appearance and function of the Main Menu and all subsidiary menus. This section of the page deals with menu actions exclusively and as discrete collections of actions. While each action patch could be broken into sub-patches such as bitmaps, bitmap position and behavior, it is often of more utility to patch the entire action.

Each menu in the game is composed of one or more menu actions. Each action places one menu item onscreen and thus allows one additional action to (potentially) be performed. A menu has one or more pointers to the first menu action it contains and continues reading menu actions until it reaches an 'end' action which has the following values:

Keen Dreams End menu action

#End menu action setup
%patch $2850E $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W


Following is a description of the action structure followed by the actions in each of the game's menus.


Action structure

A menu action is 26 bytes long being composed of 10 words, a dword and a final word in that order. A brief description of each value is as follows:

Example menu action

#Example menu action
%patch $284DA $0090W $0010W $00B0W $0028W $0002W $0035W $0036W $5729W #Choose Difficulty
              $003FW $0000W $11FA3CE4RL   $0000W
Int     Description		
Int 0:  Item image horizontal position
Int 2:  Item image vertical position
Int 4:  Item image cursor horizontal position
Int 6:  Item image cursor vertical position
Int 8:  Item type
Int 10: Unselected image bitmap
Int 12: Selected image bitmap
Int 14: Item text location
Int 16: Unknown 1
Int 18: Unknown 2
Int 20: Item behavior
Int 24: Special text location

A more thorough description of each value is as follows:


Image position

Ints 0 and 2 (The first two values) are simply the location of the menu item's image in pixels on the screen.


Cursor position

The third and fourth values control where the cursor moves when the player uses the keyboard (not the mouse) to navigate the menu. It also affects the 'click zone' location for each item. These are usually set up so that the cursor appears in the center of the item's image. As such when moving the item's image it is vital that the cursor position be altered by the same amount for the item to continue functioning as before


Item type

The fifth value controls the behavior of them item when it is clicked. It thus relates mostly to the 'button's appearance. It has one of two valid values as follows:

Value  Description
0:     INVALID (Blanks all menu options after it)
1:     Switch between image 1 and image 2 when clicked
2:     Default image 1, briefly show image 2 when clicked then revert


Image used

The sixth and seventh values are the two images the item uses. The first is commonly known as 'unselected' because this is the image all items use by default. The second is commonly known as 'selected' as this image is switched to when the item is selected. (But see above section.)


Text location

The eighth value is a value showing the location of the text displayed at the bottom of the screen when the cursor is over the item's 'click zone'. This is the actual location of the text less $ Note that this text may not always be displayed, it can be overwritten by text in the item's code. (Such as when saving\loading a game; the game's name overrides the 'save\load game here' text.) See also Patch:Text patches.


Unknown values

The ninth and tenth values (The first two on the second line of each action's patch.) are currently unknown. The tenth appears to always be zero, but the ninth can have an array of values.


Item behavior

This is the code that is run when an item is clicked. Often all actions in a given menu will have the same value, but this need not be the case. This value can be zero and the game will freeze or crash if it is invalid. A list of values is as follows:

Menu action behavior code calls
$11FA2BACRL   #Main menu
$11FA3CE4RL   #Start game
$11FA3DD0RL   #Choose difficulty
$11FA3E3DRL   #Resume game
$11FA3631RL   #Help menu
$11FA3737RL   #Load\Save menu
$11FA3877RL   #Load game selection
$11FA3A30RL   #Save game selection
$11FA3E5ERL   #Exit to DOS
$11FA3E95RL   #Configure keyboard\joystick selection
$11FA2CBDRL   #Change key
$11FA2E52RL   #Configure joystick
$11FA3C60RL   #Change sound configuration

Special text location

The last value is the special text location. it works identically to the usual text location but is almost never used. It contains the location of a second string of text used in special circumstances. By default the player will never see it utilized.


Disabling menus and menu items

It is possible to reduce the number of items in a menu. (Increasing is more difficult and requires finding available space.) It is a simple matter of taking the entire patch for the menu and removing the unwanted actions. The remaining actions may then need to have their addresses altered so that they are consecutive. As an example this is the default patch\ for the difficulty selection menu actions containing three items and an end action:

Keen Dreams

#Choose difficulty menu actions
%patch $28528 $00A8W $0060W $00C8W $0078W $0001W $002DW $002EW $5764W #Normal
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $28542 $0080W $0060W $00A0W $0078W $0001W $002BW $002CW $5782W #Easy
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $2855C $00D0W $0060W $00F0W $0078W $0001W $002FW $0030W $579EW #Hard
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $28576 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W


If we wish to remove the easy difficulty option (The second menu action.) it is a simple matter of first deleting the action:

Keen Dreams

#Choose difficulty menu actions
%patch $28528 $00A8W $0060W $00C8W $0078W $0001W $002DW $002EW $5764W #Normal
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $2855C $00D0W $0060W $00F0W $0078W $0001W $002FW $0030W $579EW #Hard
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $28576 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W


And then altering the addresses of the two following actions to that of the previous action. (Otherwise simple deletion will have no effect.) In sum we have 'moved' the two following actions up one action space, overwriting the easy option action:

Keen Dreams

#Choose difficulty menu actions
%patch $28528 $00A8W $0060W $00C8W $0078W $0001W $002DW $002EW $5764W #Normal
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $28542 $00D0W $0060W $00F0W $0078W $0001W $002FW $0030W $579EW #Hard
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $2855C $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W


Using this method it is possible to disable all options that don't lead to another menu and most menus. (Some menus will be activated by other means such as hotkeys, these too must be patched to remove the option entirely.)


Main menu

This is the 'highest level' menu, that is, the menu that contains all other accessible menu options as sub-menus. It contains six items (Seven actions including the terminal action.) each of which leads to a sub-menu with further items.

The items in this menu are always on display while the menu is open. It is thus called when the menu window is first opened and nowhere else. (When the game starts or the player presses Esc during a game.)

Otherwise the menu is not particularly notable, It presents a vertical stack of options to the extreme left of the screen.

Keen Dreams

#Call menu when opening game menu window
%patch $16401 [$49B4W] #Unknown
%patch $28B32 [$49B4W] #Menu list

#Main menu actions
%patch $28424 $0008W $0004W $0030W $0024W $0002W $0004W $000AW $56AAW #Start or Resume a Game
              $0000W $0000W $11FA2BACRL   $0000W
%patch $2843E $0008W $0024W $0030W $0044W $0002W $0005W $000BW $56C1W #Get Help
              $0000W $0000W $11FA2BACRL   $0000W
%patch $28458 $0008W $0044W $0030W $0064W $0002W $0006W $000CW $56DEW #Load / Save / Quit
              $0000W $0000W $11FA2BACRL   $0000W
%patch $28472 $0008W $0064W $0030W $0084W $0002W $0007W $000DW $56F1W #Choose Controls
              $002EW $0000W $11FA2BACRL   $0000W
%patch $2848C $0008W $0084W $0030W $00A4W $0002W $0008W $000EW $5701W #Select Sound Device
              $003CW $0000W $11FA2BACRL   $0000W
%patch $284A6 $0008W $00A4W $0030W $00C4W $0002W $0009W $000FW $5715W #Turn Music On / Off
              $0041W $0000W $11FA2BACRL   $0000W
%patch $284C0 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $2911A "Start or Resume a Game" $00
%patch $29131 "Get Help With Commander Keen" $00
%patch $2914E "Load / Save / Quit" $00
%patch $29161 "Choose Controls" $00
%patch $29171 "Select Sound Device" $00
%patch $29185 "Turn Music On / Off" $00


Main menu options

While in the Main Menu there will be displayed a sub-menu option on the right of the screen. What this sub-menu is depends on what menu is called off of a seven item list. By default this contains every 'level 1' sub-menu (That is those sub-menus that may have sub-menus off their own.)

The net result of this is that as the player moves down the Main Menu he sees the corresponding sub-menu displayed. These are important as they are the major method by which the user can access these menus.

The menu list is actually accessed from two locations, firstly from the game menu itself and secondly when keys are pressed in-game to call up various menus.

Keen Dreams

#Access menu list
%patch $14C1D [$50B6W] #From menu screen
%patch $16054 [$50B6W] #From game

#Main menu menu calls
%patch $28B26 [$4A6AW] #Start game
              [$4B54W] #Help
              [$4BBCW] #Load\Save
              [$4DC4W] #Configure
              [$4F7EW] #Sounds
              [$5068W] #Music
              [$49B4W] #Main menu


Start\resume game menu

This is a 'level 1' menu, that is a sub-menu of the Main Menu that contains further options. As well as being accessible from the Main Menu it can be accessed by pressing the F4\F5 keys. This menu will be skipped if the player is not already playing a game.

The menu contains two options, one to proceed to the choose difficult sub-sub-menu and the other to return to the current game.

Keen Dreams

#Call menu
%patch $160CA [$4A6AW] #Unknown
%patch $28B26 [$4A6AW] #Menu list

#Start game menu actions
%patch $284DA $0090W $0010W $00B0W $0028W $0002W $0035W $0036W $5729W #Choose Difficulty
              $003FW $0000W $11FA3CE4RL   $0000W
%patch $284F4 $00B8W $0010W $00D8W $0028W $0002W $0031W $0032W $574CW #Go Back
              $0000W $0000W $11FA3CE4RL   $0000W
%patch $2850E $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $29199 "Choose Difficulty for the New Game" $00
%patch $291BC "Go Back to Current Game" $00


Difficulty selection menu

This menu is normally a 'level 2' menu, that is a menu that is a sub-menu of a sub-menu (In this case accessed via the Main Menu -> start\resume ->) but if the player is not already playing a game this menu will be directly accessible from the Main Menu. This menu has no sub-menus of its own.

The menu contains three options, one for each difficulty level. Notice that normal difficulty is option 1, not 2 as would be expected.

Keen Dreams

#Call this menu from start\resume menu
%patch $15CC3 $4AB8W

#Choose difficulty menu actions
%patch $28528 $00A8W $0060W $00C8W $0078W $0001W $002DW $002EW $5764W #Normal
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $28542 $0080W $0060W $00A0W $0078W $0001W $002BW $002CW $5782W #Easy
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $2855C $00D0W $0060W $00F0W $0078W $0001W $002FW $0030W $579EW #Hard
              $0000W $0000W $11FA3DD0RL   $0000W
%patch $28576 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $291D4 "Start New Game in Normal Mode" $00
%patch $291F2 "Start New Game in Easy Mode" $00
%patch $2920E "Start New Game in Hard Mode" $00


Resume game menu

This menu is a 'level 2' menu, that is a menu that is a sub-menu of a sub-menu (In this case accessed via the Main Menu -> start\resume ->) If the player is not already playing a game this menu will not appear. This menu has no sub-menus of its own.

The menu contains a single option, that which allows the player to resume their game.

Keen Dreams

#Call this menu from start\resume menu
%patch $15CBE $4B20W

#Resume menu actions
%patch $28590 $00A8W $0060W $00C8W $0078W $0001W $0033W $0034W $57BAW #Resume Current Game
              $0000W $0000W $11FA3E3DRL   $0000W
%patch $285AA $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Text
%patch $2922A "Resume Current Game" $00


Help menu

This is a 'level 1' menu, that is a sub-menu of the Main Menu. However it itself does not contain further sub-menus. It is accessible from the Main Menu and cannot be accessed by pressing a shortcut key. The first option is accessible by pressing the F1 key

The menu contains three options, each of which displays scrollable text instead of another menu. One option is for for general help, one for control help and one for the story and tips.

Keen Dreams

#Call menu
%patch $28B28 [$4B54W] #Menu list (First option)

#Help menu actions
%patch $285C4 $0080W $0010W $00A0W $0028W $0001W $003DW $003EW $57CEW #Help Me
              $003BW $0000W $11FA3631RL   $0000W
%patch $285DE $00A8W $0010W $00C8W $0028W $0001W $003BW $003CW $57E1W #Controls
              $0000W $0000W $11FA3631RL   $0000W
%patch $285F8 $00D0W $0010W $00F0W $0028W $0001W $0039W $003AW $57F8W #Tips
              $0000W $0000W $11FA3631RL   $0000W
%patch $28612 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $2923E "Help Me, I'm Lost!" $00
%patch $29251 "Get Help with Controls" $00
%patch $29268 "Read Story & Game Tips" $00


Save\Load\Quit menu

This is a 'level 1' menu, that is a sub-menu of the Main Menu that contains further options. It is accessible from the Main Menu and can also be accessed by pressing the F6 key.

The menu contains two options, the first leads to the load\save selection sub-menu while the second leads to the exit to DOS sub-menu.

Keen Dreams

#Call menu
%patch $160F7 [$4BBCW] #Unknown
%patch $28B2A [$4BBCW] #Menu list

#Load\Save menu actions
%patch $2862C $0088W $0010W $00A8W $0028W $0002W $003FW $0040W $580FW #Load or Save
              $0040W $0000W $11FA3737RL   $0000W
%patch $28646 $00B8W $0010W $00D8W $0028W $0002W $0041W $0042W $5823W #Exit 
              $0010W $0000W $11FA3737RL   $0000W
%patch $28660 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $2927F "Load or Save a Game" $00
%patch $29293 "Exit to DOS" $00


Load\save selection menu

This menu is a 'level 2' menu, that is a menu that is a sub-menu of a sub-menu (In this case accessed via the Main Menu -> Save\Load\Quit ->) This menu has no sub-menus of its own. There are two calls to this menu. The first calls the menu when the Load\Save item is selected in the Save\Load\Quit menu. (This allows switching back and forth between this menu and the 'Exit to DOS' menu) the second automatically displays this menu when the Save\Load\Quit menu is first selected. (This means that the player will automatically be sent to the Load\Save selection when they open the Save\Load\Quit menu.)

The menu contains fourteen options arranged as seven load\save pairs. Decreasing the number of options will decrease the number of saved game slots available. Each slot uses the same text by default and this text is only displayed if the slot is empty, otherwise it is overwritten with different text containing the game's name.

Keen Dreams

#Load\Save selection menu calls
%patch $15716 $4C0AW #Call menu from Load\Save menu
%patch $16107 $4C0AW #Auto display menu when Load\Save menu is displayed

#Load\Save selection menu actions
%patch $2867A $0048W $0038W $0068W $0048W $0001W $0029W $002AW $582FW #Load 1
              $0000W $0000W $11FA3877RL   $0000W
%patch $28694 $0070W $0038W $0090W $0048W $0001W $0027W $0028W $583EW #Save 1
              $0000W $0000W $11FA3A30RL   $0000W
%patch $286AE $0048W $0048W $0068W $0058W $0001W $0029W $002AW $582FW #Load 2
              $0000W $0000W $11FA3877RL   $0000W
%patch $286C8 $0070W $0048W $0090W $0058W $0001W $0027W $0028W $583EW #Save 2
              $0000W $0000W $11FA3A30RL   $0000W
%patch $286E2 $0048W $0058W $0068W $0068W $0001W $0029W $002AW $582FW #Load 3
              $0000W $0000W $11FA3877RL   $0000W
%patch $286FC $0070W $0058W $0090W $0068W $0001W $0027W $0028W $583EW #Save 3
              $0000W $0000W $11FA3A30RL   $0000W
%patch $28716 $0048W $0068W $0068W $0078W $0001W $0029W $002AW $582FW #Load 4
              $0000W $0000W $11FA3877RL   $0000W
%patch $28730 $0070W $0068W $0090W $0078W $0001W $0027W $0028W $583EW #Save 4
              $0000W $0000W $11FA3A30RL   $0000W
%patch $2874A $0048W $0078W $0068W $0088W $0001W $0029W $002AW $582FW #Load 5
              $0000W $0000W $11FA3877RL   $0000W
%patch $28764 $0070W $0078W $0090W $0088W $0001W $0027W $0028W $583EW #Save 5
              $0000W $0000W $11FA3A30RL   $0000W
%patch $2877E $0048W $0088W $0068W $0098W $0001W $0029W $002AW $582FW #Load 6
              $0000W $0000W $11FA3877RL   $0000W
%patch $28798 $0070W $0088W $0090W $0098W $0001W $0027W $0028W $583EW #Save 6
              $0000W $0000W $11FA3A30RL   $0000W
%patch $287B2 $0048W $0098W $0068W $00A8W $0001W $0029W $002AW $582FW #Load 7
              $0000W $0000W $11FA3877RL   $0000W
%patch $287CC $0070W $0098W $0090W $00A8W $0001W $0027W $0028W $583EW #Save 7
              $0000W $0000W $11FA3A30RL   $0000W
%patch $287E6 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $2929F "Load This Game" $00
%patch $292AE "Save Current Game Here" $00


Don't open Load\Save selection menu automatically

This patch stops the Load\Save selection menu being automatically displayed when the Save\Load\Quit menu is first opened. Instead the player must select that option to open the menu.

Keen Dreams

#Don't open Load\Save selection menu automatically
%patch $16100 $EB $0E


Really exit menu

This menu is a 'level 2' menu, that is a menu that is a sub-menu of a sub-menu (In this case accessed via the Main Menu -> Save\Load\Quit ->). This menu has no sub-menus of its own, instead containing a single option that quits the game. This menu can only be accessed from the Save\Load\Quit menu and is called there.

Keen Dreams

#Call menu from Load\Save menu
%patch $15711 $4D90W

#Really exit menu actions
%patch $28800 $00A0W $0060W $00C8W $0078W $0001W $0043W $0044W $5855W #Really Exit
              $0000W $0000W $11FA3E5ERL   $0000W
%patch $2881A $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Text
%patch $292C5 "Really Exit to DOS" $00


Configure menu

This menu is a 'level 1' menu, that is a menu that is a sub-menu and contains other options. This menu contains three sub-menus, one to define keyboard keys and two others to configure joysticks 1 and 2. It can be accessed from the Main Menu or by pressing the F3 key. There are three calls to this menu, each of unknown function.

Interestingly the two joystick options lead to the same 'Configure Joystick' menu.

Keen Dreams

#Configure menu calls
%patch $14E11 [$4DC4W] #Unknown
%patch $16155 [$4DC4W] #Unknown
%patch $16282 [$4DC4W] #Unknown
%patch $28B2C [$4DC4W] #Menu list

#Configure menu actions
%patch $28834 $0080W $0010W $00A0W $0028W $0002W $0010W $0019W $5868W #Keyboard
              $003DW $0000W $11FA3E95RL   $0000W
%patch $2884E $00A8W $0010W $00C8W $0028W $0002W $0011W $001AW $5881W #Joystick 1
              $0000W $0000W $11FA3E95RL   $0000W
%patch $28868 $00D0W $0010W $00F0W $0028W $0002W $0012W $001BW $589CW #Joystick 2
              $0000W $0000W $11FA3E95RL   $0000W
%patch $28882 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $292D8 "Use / Configure Keyboard" $00
%patch $292F1 "Use / Configure Joystick 1" $00
%patch $2930C "Use / Configure Joystick 2" $00


Define keys menu

This menu is a 'level 2' menu, that is a menu that is a sub-menu of a sub-menu (In this case accessed via the Main Menu -> Configure ->). This menu can be accessed from the Configure menu and is called there. This menu can only be accessed if using the keyboard as a source of input for the game.

The menu contains ten options, each of which allows the player to redefine one key.

Keen Dreams

#Call menu from Configure menu
%patch $15E78 $4E2CW

#Define keys menu actions
%patch $2889C $0048W $0048W $0080W $0068W $0004W $0024W $0025W $58B7W #Jump
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $288B6 $0048W $0068W $0080W $0088W $0004W $0024W $0025W $58CEW #Throw
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $288D0 $0080W $0038W $00B8W $0058W $0004W $0024W $0025W $58E6W #Up-left
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $288EA $00B8W $0038W $00F0W $0058W $0004W $0024W $0025W $5903W #Up
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $28904 $00F0W $0038W $0128W $0058W $0004W $0024W $0025W $5919W #Up-right
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $2891E $0080W $0058W $00B8W $0078W $0004W $0024W $0025W $5937W #Left
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $28938 $00F0W $0058W $0128W $0078W $0004W $0024W $0025W $594FW #Right
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $28952 $0080W $0078W $00B8W $0098W $0004W $0024W $0025W $5968W #Down-left
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $2896C $00B8W $0078W $00F0W $0098W $0004W $0024W $0025W $5987W #Down
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $28986 $00F0W $0078W $0128W $0098W $0004W $0024W $0025W $599FW #Down-right
              $0000W $0000W $11FA2CBDRL   $0000W
%patch $289A0 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $29327 "Define Key for Jumping" $00
%patch $2933E "Define Key for Throwing" $00
%patch $29356 "Define Key to move Up & Left" $00
%patch $29373 "Define Key to move Up" $00
%patch $29389 "Define Key to move Up & Right" $00
%patch $293A7 "Define Key to move Left" $00
%patch $293BF "Define Key to move Right" $00
%patch $293D8 "Define Key to move Down & Left" $00
%patch $293F7 "Define Key to move Down" $00
%patch $2940F "Define Key to move Down & Right" $00


Define Joystick menu

This menu is a 'level 2' menu, that is a menu that is a sub-menu of a sub-menu (In this case accessed via the Main Menu -> Configure ->). This menu can be accessed from the Configure menu and is called there. This menu can only be accessed if using one or more joysticks as a source of input for the game.

The menu contains a single option that when selected allows the player to configure the joystick. This menu is the same when configuring joystick 1 or 2.

Keen Dreams

#Define joystick menu call
%patch $15EA7 $4DC4W

#Define joystick menu actions
%patch $289BA $00A8W $0060W $00C8W $0078W $0001W $0037W $0038W $59BFW #Configure
              $0000W $0000W $11FA2E52RL   $0000W
%patch $289D4 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Text
%patch $2942F "Configure Joystick" $00


Sound menu

This menu is a 'level 1' menu, that is a menu that is a sub-menu and contains other options. This menu contains five options, each of which alters how the sound is played. It can be accessed from the Main Menu or by pressing the F2 key. There are also two calls to this menu of unknown function.

The two later options, those for SoundBlaster and Sound Source sounds are permanently disabled in the game as they were never implemented.

Keen Dreams

#Sound menu calls
%patch $161F1 [$4F7EW] #Unknown
%patch $162BE [$4F7EW] #Unknown
%patch $28B2E [$4F7EW] #Menu list

#Sound menu actions
%patch $289EE $0058W $0010W $0078W $0028W $0002W $0013W $001CW $59D2W #No sound
              $0000W $0000W $11FA3C60RL   $0000W
%patch $28A08 $0080W $0010W $00A0W $0028W $0002W $0014W $001DW $59E1W #PC
              $0000W $0000W $11FA3C60RL   $0000W
%patch $28A22 $00A8W $0010W $00C8W $0028W $0002W $0015W $001EW $59F0W #AdLib
              $0000W $0000W $11FA3C60RL   $0000W
%patch $28A3C $00D0W $0010W $00F0W $0028W $0002W $0016W $001FW $5A08W #SoundBlaster
              $0000W $0000W $11FA3C60RL   $0000W
%patch $28A56 $00F8W $0010W $0118W $0028W $0002W $0017W $0020W $5A27W #Sound Source
              $0000W $0000W $11FA3C60RL   $0000W
%patch $28A70 $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $29442 "Turn Sound Off" $00
%patch $29451 "Use PC Speaker" $00
%patch $29460 "Use AdLib Sound Effects" $00
%patch $29478 "Use SoundBlaster Sound Effects" $00
%patch $29497 "Use Sound Source Sound Effects" $00


Music menu

This menu is a 'level 1' menu, that is a menu that is a sub-menu and contains other options. This menu contains two options that determine whether music is played. It can be accessed from the Main Menu or by pressing the F7 key. There are also two calls to this menu of unknown function.

This menu is pointless and nonfunctional by default as music had to be removed from the game late in development. It is thus a relic of earlier development.

Keen Dreams

#Music configure menu calls
%patch $16254 [$5068W] #Unknown
%patch $162F3 [$5068W] #Unknown
%patch $28B30 [$5068W] #Menu list

#Music configure menu actions
%patch $28AD8 $0088W $0010W $00A8W $0028W $0002W $0018W $0021W $5A8EW #No music
              $0000W $0000W $00000000L    $0000W
%patch $28AF2 $00B8W $0010W $00D8W $0028W $0002W $0015W $001EW $5AA3W #Music
              $0000W $0000W $00000000L    $0000W
%patch $28B0C $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $294FE "Background Music Off" $00
%patch $29513 "Use AdLib/SoundBlaster Music" $00


Misc menu

This menu is a 'level 1' menu, that is a menu that is a sub-menu and contains other options. This menu contains two options that are nonfunctional. It cannot be accessed from the Main Menu or by pressing any known key combination.

This menu is doubly pointless and nonfunctional. It deals with options that were never included in the finished game and cannot be accessed normally. It has no unique bitmaps of its own and no \associated code. Interestingly however it is the only menu to make use of the special text variable.

Keen Dreams

#Misc configure menu call
%patch $15C46 $501AW

#Misc configure menu actions
%patch $28A8A $0078W $0048W $0098W $0060W $0003W $0022W $0023W $5A46W #Tandy
              $0000W $0000W $00000000L    $5A5FW
%patch $28AA4 $0078W $0068W $0098W $0080W $0003W $0022W $0023W $5A6AW #LPT1-LPT2
              $0000W $0000W $00000000L    $5A85W
%patch $28ABE $FFFFW $FFFFW $FFFFW $FFFFW $0000W $0000W $0000W $0000W #END
              $0000W $0000W $00000000L    $0000W

#Texts
%patch $294B6 "Turn Tandy Mode On / Off" $00
%patch $294CF "Tandy Mode" $00
%patch $294DA "Switch between LPT1 & LPT2" $00
%patch $294F5 "Use LPT2" $00