Patch:Main menu (Galaxy)

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 (Dreams).

The Galaxy menu is more closely related to Keen Vorticons' menu, but is also like the Dreams menu in that it also uses bitmaps (it even has its own fullscreen graphic). It is also much more complex than the Vorticons menus.

This page is divided into several sections. The first two sections are minor and deal with disabling the entire menu and playing music when the menu is called. They are pretty self-explanatory. The third section deals with menu bitmaps in general and the range the menu can use. More useful is the fourth section which details 'menu segments'; these control how the various menus are laid out, their texts and bitmaps, a very broad and powerful set of tools. The fifth section pertains to menu 'bars', that is horizontal lines that divide up the menus. The sixth section involves 'colors' and deals with the colors of various texts and objects in the menus. The remaining two sections are minor and rather miscellaneous things.


Disable

There are two parts to this patch, the first disables accessing the Main Menu during normal gameplay by pressing the F2-F6 keys or Esc. The second part skips going to the Main Menu when the game is first started, instead launching the demo mode game.

Keen 4

#Disable Main Menu in-game
%patch $798E $E9 $00AAW

#Skip Main Menu, go straight to new game on startup
%patch $51F8 $EB $05

Keen 5

#Disable Main Menu in-game
%patch $7949 $E9 $00AAW

Keen 6

#Disable Main Menu in-game
%patch $7722 $E9 $00AAW


What blocks ingame menu

This patch shows what controls the blocking of the Main Menu ingame. Ordinarily this is 'demo mode', a special gameplay mode activated by the -demo switch. This can be changed however so that the menu is permanently or temporarily disabled.

What blocks Main Menu ingame

#What blocks Main Menu ingame -Keen 4
%patch $796E {$7A72W} [$00] {$74}

#What blocks Main Menu ingame -Keen 5
%patch $7929 {$6F72W} [$00] {$74}

#What blocks Main Menu ingame -Keen 6
%patch $7702 {$75AEW} [$00] {$74}


Skip menu on startup

This patch changes things so that when the game is started there is no Main Menu, instead the player is sent straight to a new game. The second line controls the difficulty of that game; by default it is 2, or, normal.

Note that the player can still access the menu and quit the game\start a different difficulty if they wish.

Keen 4

#Skip Main Menu, go straight to new game on startup
%patch $51F8 $EB $05

#Difficulty of new game
%patch $5209 [$0002W]


Play music in menu

This allows you to play music in the main menu. As a side effect the menu background color is black, not cyan. This only matters if your menu image is smaller than 320x200. The value used here is the level whose music is used. (For example a value of 0 will play the map level's music.) See Patch:Music.

Keen 4

#Play music in the menu
%patch $1CC6F $06BD20C7RL
%patch $1CC6B [$0003W]      #Play this level's song

Keen 5

#Play music in the menu
%patch $1DC0C $06B92083RL
%patch $1DC08 [$0003W]      #Play this level's song

Keen 6

#Play music in the menu
%patch $1C8DE $069A20DBRL
%patch $1C8DA [$0003W]      #Play this level's song


Menu doesn't stop game music

This patch lets the game music keep playing when the menu is called. This means the music playing in the level or demo the player plays before calling the menu. When the game initially starts the menu will be silent.

Keen 4

#Don't interrupt music when Main menu is called
%patch $7994 $90 $90 $90 $90
%patch $79A2 $EB $0A

Keen 5

#Don't interrupt music when Main menu is called
%patch $794F $90 $90 $90 $90
%patch $795D $EB $0A

Keen 6

#Don't interrupt music when Main menu is called
%patch $7728 $90 $90 $90 $90
%patch $7736 $EB $0A


Menu bitmaps

The Main Menu uses a variety of bitmaps. Primary among these is the 'background bitmap' that fills the entire screen and over which other bitmaps are displayed. These 'sub bitmaps' are called by various 'menu actions' (See below.)

As such all these bitmaps must be cached when the menu is first displayed. They are also displayed in the same location onscreen (despite being different sizes.)


Bitmap cache

The bitmap cache controls all the possible bitmaps the Main Menu can display. Note that while the first value is a word, the second is only a byte. At the same time it also caches the required sprites for the Paddle War minigame and the 'DEMO' sign for demo display. The sprite images used for Paddle War are cached at a different location when the minigame is loaded.

Keen 4

#Main menu bitmaps cache
%patch $1CBEF [$0058W] #Start
%patch $1CC04 [$67]    #End

#Paddle War sprites\DEMO cache
%patch $1CC08 [$007CW] #Start
%patch $1CC1D [$0080W] #End

Keen 5

#Main menu bitmaps cache
%patch $1DB8D [$0043W] #Start
%patch $1DBA2 [$52]    #End

#Paddle War sprites\DEMO cache
%patch $1DBA6 [$0066W] #Start
%patch $1DBBB [$6A]    #End

Keen 6

#Main menu bitmaps cache
%patch $1C85F [$000BW] #Start
%patch $1C874 [$1A]    #End

#Paddle War sprites\DEMO cache
%patch $1C878 [$002EW] #Start
%patch $1C88D [$32]    #End


Unused cache

Interestingly Keen Galaxy contains an unused bitmap cache possibly from an older version of the Main Menu.

Keen 4

#Main menu bitmaps cache
%patch $306D0 [$0058W] #Start
%patch $3071A [$0067W] #End


Background bitmap

This is the 'background' bitmap used for the main menu, in short Keen's computerwrist. If this is not displayed the game will show the menu text and bitmaps over a blank screen. There are two separate uses of the bitmap, one for all menus except Paddle War, and one for Paddle War itself.

Keen 4

#Main Menu background bitmap
%patch $1AC07 [$0067W] #Draw current menu
%patch $1C6D2 [$0067W] #Paddle War

Keen 5

#Main Menu background bitmap
%patch $1BBA5 [$0052W] #Draw current menu
%patch $1D670 [$0052W] #Paddle War


Menu name bitmap locations

As stated above, all the menu name bitmaps are displayed in the same location, no matter how wide they are. (They are the same height.) The actual bitmap displayed depends on what menu the player is currently in.

Keen 4

#Location of menu name bitmaps
%patch $1AB34 [$0030W] #Vertical
%patch $1AB38 [$0050W] #Horizontal

Keen 5

#Location of menu name bitmaps
%patch $1BDA2 [$0030W] #Vertical
%patch $1BDA6 [$0050W] #Horizontal

Keen 6

#Location of menu name bitmaps
%patch $1A7A4 [$0030W] #Vertical
%patch $1A7A8 [$0050W] #Horizontal


Menu actions

The structure of the Main menu's actions and options is discussed in detail in this tutorial page. Menu actions and options control most of the menu text, the number of options in menus and how they are laid out, the bitmaps that appear and more.


Debug menu

This is a 'hidden' menu not seen during normal gameplay used by the developers when debugging the game. By default it can be ignored. It contains only one option 'DEBUG' and it is not known how functional this is.

This menu uses the 'MAIN MENU' bitmap and its only option is type 1.

Keen 4 Debug menu

#Menu setup
%patch $1F854 $0000W $0000W $0058W $0000W $0000W $1F83RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1F830 $0001W $0000W $0000W $477CW $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $335EC "DEBUG" $00

Keen 5 Debug menu

#Menu setup
%patch $206E4 $0000W $0000W $0043W $0000W $0000W $206CRW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $206C0 $0001W $0000W $0000W $3D98W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $340D8 "DEBUG" $00

Keen 6 Debug menu

#Menu setup
%patch $1F6B4 $0000W $0000W $000BW $0000W $0000W $1F69RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1F690 $0001W $0000W $0000W $41F6W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34F26 "DEBUG" $00


Sound effects menu

This menu allows the player to control how sounds are played in the game. It has four options, each of type 2. Each item uses its third value for a currently unknown function.

The menu itself uses the 'SOUND EFFECTS MENU' bitmap and positions all its options 8 pixels right of the Computerwrist's left side.

Keen 4 Sound menu

#Menu setup
%patch $1F8CA $0008W $0000W $005DW $0000W $0000W $1F87RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1F870 $0002W $0000W $0031W $4782W $0000W $00000000L  $0000W $0000W
%patch $1F882 $0002W $0000W $0019W $4793W $0000W $00000000L  $0000W $0000W
%patch $1F894 $0002W $0000W $001EW $479EW $0000W $00000000L  $0000W $0000W
%patch $1F8A6 $0002W $0000W $0010W $47B1W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $335F2 "NO SOUND EFFECTS" $00
%patch $33603 "PC SPEAKER" $00
%patch $3360E "ADLIB/SOUNDBLASTER" $00
%patch $33621 "QUIET ADLIB/SOUNDBLASTER" $00

Keen 5 Sound menu

#Menu setup
%patch $2075A $0008W $0000W $0048W $0000W $0000W $2070RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $20700 $0002W $0000W $0031W $3D9EW $0000W $00000000L  $0000W $0000W
%patch $20712 $0002W $0000W $0019W $3DAFW $0000W $00000000L  $0000W $0000W
%patch $20724 $0002W $0000W $001EW $3DBAW $0000W $00000000L  $0000W $0000W
%patch $20736 $0002W $0000W $0010W $3DCDW $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $340DE "NO SOUND EFFECTS" $00
%patch $340EF "PC SPEAKER" $00
%patch $340FA "ADLIB/SOUNDBLASTER" $00
%patch $3410D "QUIET ADLIB/SOUNDBLASTER" $00

Keen 6 Sound menu

#Menu setup
%patch $1F72A $0008W $0000W $0010W $0000W $0000W $1F6DRW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1F6D0 $0002W $0000W $0031W $41FCW $0000W $00000000L  $0000W $0000W
%patch $1F6E2 $0002W $0000W $0019W $420DW $0000W $00000000L  $0000W $0000W
%patch $1F6F4 $0002W $0000W $001EW $4218W $0000W $00000000L  $0000W $0000W
%patch $1F706 $0002W $0000W $0010W $422BW $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34F2C "NO SOUND EFFECTS" $00
%patch $34F3D "PC SPEAKER" $00
%patch $34F48 "ADLIB/SOUNDBLASTER" $00
%patch $34F5B "QUIET ADLIB/SOUNDBLASTER" $00


Music menu

This menu allows the player to control how music is played in the game. It has two options, each of type 2. Each option's third value, $1E and $31 are the scancodes for each option's shortcut key, 'A' and 'N' respectively.

The menu itself uses the 'MUSIC MENU' bitmap and positions all its options 8 pixels right of the Computerwrist's left side.

Keen 4 Music menu

#Menu setup
%patch $1F916 $0008W $0000W $005EW $0000W $0000W $1F8ERW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1F8E0 $0002W $0000W $0031W $47CAW $0000W $00000000L  $0000W $0000W
%patch $1F8F2 $0002W $0000W $001EW $47D3W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $3363A "NO MUSIC" $00
%patch $33643 "ADLIB/SOUNDBLASTER" $00

Keen 5 Music menu

#Menu setup
%patch $207A6 $0008W $0000W $0049W $0000W $0000W $2077RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $20770 $0002W $0000W $0031W $3DE6W $0000W $00000000L  $0000W $0000W
%patch $20782 $0002W $0000W $001EW $3DBAW $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34126 "NO MUSIC" $00
%patch $340FA "ADLIB/SOUNDBLASTER" $00

Keen 6 Music menu

#Menu setup
%patch $1F776 $0008W $0000W $0011W $0000W $0000W $1F74RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1F740 $0002W $0000W $0031W $4244W $0000W $00000000L  $0000W $0000W
%patch $1F752 $0002W $0000W $001EW $424DW $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34F74 "NO MUSIC" $00
%patch $34F7D "ADLIB/SOUNDBLASTER" $00


New game menu

This menu allows the player to select the difficulty of a new game from either Easy, Medium or Hard. It has three options, each of type 1. Each item uses its third value for a currently unknown function. The fifth value controls what kind of game is started; 5 starts an easy game, 6 normal and 7 hard.

The menu itself uses the 'NEW GAME MENU' bitmap and positions all its options 8 pixels right of the Computerwrist's left side. Its eighth value is 1 for unknown reasons. It is possible to add a fourth difficulty option to this menu by using the (unused) debug menu.

Keen 4 New game menu

#Menu setup
%patch $1F978 $0008W $0000W $0059W $0000W $0000W $1F93RW $00000000L   $0001W $0000W $0000W

#Menu options
%patch $1F930 $0001W $0000W $0012W $47E6W $0005W $00000000L  $0000W $0000W
%patch $1F942 $0001W $0000W $0031W $47F6W $0006W $00000000L  $0000W $0000W
%patch $1F954 $0001W $0000W $0023W $4808W $0007W $00000000L  $0000W $0000W

#Menu texts
%patch $33656 "BEGIN EASY GAME" $00
%patch $33666 "BEGIN NORMAL GAME" $00
%patch $33678 "BEGIN HARD GAME" $00

Keen 5 New game menu

#Menu setup
%patch $20808 $0008W $0000W $0044W $0000W $0000W $207CRW $00000000L   $0001W $0000W $0000W

#Menu options
%patch $207C0 $0001W $0000W $0012W $3DEFW $0005W $00000000L  $0000W $0000W
%patch $207D2 $0001W $0000W $0031W $3DFFW $0006W $00000000L  $0000W $0000W
%patch $207E4 $0001W $0000W $0023W $3E11W $0007W $00000000L  $0000W $0000W

#Menu texts
%patch $3412F "BEGIN EASY GAME" $00
%patch $3413F "BEGIN NORMAL GAME" $00
%patch $34151 "BEGIN HARD GAME" $00

Keen 6 New game menu

#Menu setup
%patch $1F7D8 $0008W $0000W $000CW $0000W $0000W $1F79RW $00000000L   $0001W $0000W $0000W

#Menu options
%patch $1F790 $0001W $0000W $0012W $4260W $0005W $00000000L  $0000W $0000W
%patch $1F7A2 $0001W $0000W $0031W $4270W $0006W $00000000L  $0000W $0000W
%patch $1F7B4 $0001W $0000W $0023W $4282W $0007W $00000000L  $0000W $0000W

#Menu texts
%patch $34F90 "BEGIN EASY GAME" $00
%patch $34FA0 "BEGIN NORMAL GAME" $00
%patch $34FB2 "BEGIN HARD GAME" $00


Load\save menu

This is one of the more complex menus. It has two menu setups as well as multiple 'blank' options filled in by saved game data. The first menu is the load menu used when loading games while the second is the 'save' menu used when saving games. Both menus offset their texts 4 pixels horizontally and 3 pixels vertically and use the same options. Each menu has its own unique code to run when in use.

Each option is type 1 and its third value controls what game is loaded. (2 loads game 1 and so on.) Each option has no text associated with it, this is supplied by the saved game entry for that option.

Keen 4 Load menu

#Menu setups
%patch $1FA0E $0004W $0003W $005AW $0000W $0000W $1F99RW $1A891581RL  $0000W $0000W $0000W #Load
%patch $1FA24 $0004W $0003W $005BW $0000W $0000W $1F99RW $1A8918A6RL  $0000W $0000W $0000W #Save

#Menu options
%patch $1F990 $0001W $0000W $0002W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F9A2 $0001W $0000W $0003W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F9B4 $0001W $0000W $0004W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F9C6 $0001W $0000W $0005W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F9D8 $0001W $0000W $0006W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F9EA $0001W $0000W $0007W $0000W $0000W $00000000L  $0000W $0000W

Keen 5 Load menu

#Menu setups
%patch $2089E $0004W $0003W $0045W $0000W $0000W $2082RW $1B83157FRL  $0000W $0000W $0000W #Load
%patch $208B4 $0004W $0003W $0046W $0000W $0000W $2082RW $1B8318A4RL  $0000W $0000W $0000W #Save

#Menu options
%patch $20820 $0001W $0000W $0002W $0000W $0000W $00000000L  $0000W $0000W
%patch $20832 $0001W $0000W $0003W $0000W $0000W $00000000L  $0000W $0000W
%patch $20844 $0001W $0000W $0004W $0000W $0000W $00000000L  $0000W $0000W
%patch $20856 $0001W $0000W $0005W $0000W $0000W $00000000L  $0000W $0000W
%patch $20868 $0001W $0000W $0006W $0000W $0000W $00000000L  $0000W $0000W
%patch $2087A $0001W $0000W $0007W $0000W $0000W $00000000L  $0000W $0000W

Keen 6 Load menu

#Menu setups
%patch $1F86E $0004W $0003W $000DW $0000W $0000W $1F7FW $1A501581RL  $0000W $0000W $0000W #Load
%patch $1F884 $0004W $0003W $000EW $0000W $0000W $1F7FW $1A5018A6RL  $0000W $0000W $0000W #Save

#Menu options
%patch $1F7F0 $0001W $0000W $0002W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F802 $0001W $0000W $0003W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F814 $0001W $0000W $0004W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F826 $0001W $0000W $0005W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F838 $0001W $0000W $0006W $0000W $0000W $00000000L  $0000W $0000W
%patch $1F84A $0001W $0000W $0007W $0000W $0000W $00000000L  $0000W $0000W


Options menu

This menu allows the player to modify several options in the game such as turning the scorebox off and on. It uses the 'OPTIONS MENU' bitmap and displays text 8 pixels right of the computerwrist's left side. There are also four 'option menus' run by each menu option when it is selected.

There are four menu options none of which has text since the text must change when the option is turned off or on. (The text must be patched another way.) It is not known what the text field does in these options, it appears to simply point to empty text strings to avoid displaying anything. The options are all type 3 and have their own unique codes to run when selected.

The last four menus have no text offsets or bitmaps to display. Their function is to run code when a menu option is changed, changing that option and the text displayed.

Keen 4 Options menu

#Menu setups
%patch $1FAFA $0008W $0000W $0063W $0000W $0000W $1FAARW $00000000L  $0000W $0000W $0000W #Main
%patch $1FA3A $0000W $0000W $0000W $0000W $0000W $0000W  $1A890926RL $0000W $0000W $0000W #Scorebox
%patch $1FA50 $0000W $0000W $0000W $0000W $0000W $0000W  $1A8909D1RL $0000W $0000W $0000W #Two-button firing
%patch $1FA66 $0000W $0000W $0000W $0000W $0000W $0000W  $1A89095FRL $0000W $0000W $0000W #Jerky motion fix
%patch $1FA7C $0000W $0000W $0000W $0000W $0000W $0000W  $1A890998RL $0000W $0000W $0000W #SVGA compatibility

#Menu options
%patch $1FAA0 $0003W $0000W $001FW $4818W $0000W $1F9900AARL  $0000W $0000W
%patch $1FAB2 $0003W $0000W $0014W $4819W $0000W $1F9900C0RL  $0000W $0000W
%patch $1FAC4 $0003W $0000W $0032W $481AW $0000W $1F9900D6RL  $0000W $0000W
%patch $1FAD6 $0003W $0000W $002EW $481BW $0000W $1F9900ECRL  $0000W $0000W

#Menu texts called from
%patch $1B106 [$4A04W] #Score on
%patch $1B10B [$4A13W] #Score off
%patch $1B11E [$4A23W] #Two-button on
%patch $1B123 [$4A3AW] #Two-button off
%patch $1B136 [$4A52W] #Fix on
%patch $1B13B [$4A68W] #Fix off
%patch $1B14E [$4A7FW] #SVGA on
%patch $1B153 [$4A97W] #SVGA off

#Menu texts
%patch $33874 "SCORE BOX (ON)" $00
%patch $33883 "SCORE BOX (OFF)" $00
%patch $33893 "TWO-BUTTON FIRING (ON)" $00
%patch $338AA "TWO-BUTTON FIRING (OFF)" $00
%patch $338C2 "FIX JERKY MOTION (ON)" $00
%patch $338D8 "FIX JERKY MOTION (OFF)" $00
%patch $338EF "SVGA COMPATIBILITY (ON)" $00
%patch $33907 "SVGA COMPATIBILITY (OFF)" $00

#Change texts called from
%patch $1B1D7  [$4AE1W] #Score on
%patch $1B1DC  [$4AF2W] #Score off
%patch $1B282  [$4B96W] #2-button on
%patch $1B287  [$4BAFW] #2-button off
%patch $1B1CC  [$4B04W] #Press any- Scorebox change
%patch $1B205  [$4B45W] #Press any- jerk change
%patch $1B23E  [$4B88W] #Press any- SVGA change
%patch $1B277  [$4BC9W] #Press any- 2-Button change

#Change texts
%patch $33951 "Score box now on" $00
%patch $33962 "Score box now off" $00
%patch $33A06 "Two-button firing now on" $00
%patch $33A1F "Two-button firing now off" $00
%patch $33974 "Press any key" $00
%patch $339B5 "Press any key" $00
%patch $339F8 "Press any key" $00
%patch $33A39 "Press any key" $00

Keen 5 Options menu

#Menu setups
%patch $2098A $0008W $0000W $004EW $0000W $0000W $2093RW $00000000L   $0000W $0000W $0000W #Main
%patch $208CA $0000W $0000W $0000W $0000W $0000W $0000W  $1B830924RL  $0000W $0000W $0000W #Scorebox
%patch $208E0 $0000W $0000W $0000W $0000W $0000W $0000W  $1B8309CFRL  $0000W $0000W $0000W #Two-button firing
%patch $208F6 $0000W $0000W $0000W $0000W $0000W $0000W  $1B83095DRL  $0000W $0000W $0000W #Jerky motion fix
%patch $2090C $0000W $0000W $0000W $0000W $0000W $0000W  $1B830996RL  $0000W $0000W $0000W #SVGA compatibility

#Menu options
%patch $20930 $0003W $0000W $001FW $3D9DW $0000W $208200AARL $0000W $0000W
%patch $20942 $0003W $0000W $0014W $3D9DW $0000W $208200C0RL $0000W $0000W
%patch $20954 $0003W $0000W $0032W $3D9DW $0000W $208200D6RL $0000W $0000W
%patch $20966 $0003W $0000W $002EW $3D9DW $0000W $208200ECRL $0000W $0000W

#Menu texts called from
%patch $1C0A4 [$3FE4W] #Score on
%patch $1C0A9 [$3FF3W] #Score off
%patch $1C0BC [$4003W] #Two button on
%patch $1C0C1 [$4014W] #Two button off
%patch $1C0D4 [$4032W] #Jerk on
%patch $1C0D9 [$4048W] #Jerk off
%patch $1C0EC [$405FW] #SVGA on
%patch $1C0F1 [$4077W] #SVGA off

#Menu texts
%patch $34324 "SCORE BOX (ON)" $00
%patch $34333 "SCORE BOX (OFF)" $00
%patch $34343 "TWO-BUTTON FIRING (ON)" $00
%patch $3435A "TWO-BUTTON FIRING (OFF)" $00
%patch $34372 "FIX JERKY MOTION (ON)" $00
%patch $34388 "FIX JERKY MOTION (OFF)" $00
%patch $3439F "SVGA COMPATIBILITY (ON)" $00
%patch $343B7 "SVGA COMPATIBILITY (OFF)" $00

#Change texts called from
%patch $1C175  [$40C1W] #Score on
%patch $1C17A  [$40D2W] #Score off
%patch $1C220  [$415AW] #2-button on
%patch $1C225  [$4173W] #2-button off
%patch $1C16A  [$40E4W] #Press any- Scorebox change

#Change texts
%patch $34401 "Score box now on" $00
%patch $34412 "Score box now off" $00
%patch $3449A "Two-button firing now on" $00
%patch $344B3 "Two-button firing now off" $00
%patch $34424 "Press any key" $00

Keen 6 Options menu

#Menu setup
%patch $1F95A $0008W $0000W $0016W $0000W $0000W $1F90RW $00000000L   $0000W $0000W $0000W #Main
%patch $1F89A $0000W $0000W $0000W $0000W $0000W $0000W  $1A500926RL  $0000W $0000W $0000W #Scorebox
%patch $1F8B0 $0000W $0000W $0000W $0000W $0000W $0000W  $1A5009D1RL  $0000W $0000W $0000W #Two-button firing
%patch $1F8C6 $0000W $0000W $0000W $0000W $0000W $0000W  $1A50095FRL  $0000W $0000W $0000W #Jerky motion fix
%patch $1F8DC $0000W $0000W $0000W $0000W $0000W $0000W  $1A500998RL  $0000W $0000W $0000W #SVGA compatibility

#Menu options
%patch $1F900 $0003W $0000W $001FW $4292W $0000W $1F7F00AARL  $0000W $0000W
%patch $1F912 $0003W $0000W $0014W $4293W $0000W $1F7F00C0RL  $0000W $0000W
%patch $1F924 $0003W $0000W $0032W $4294W $0000W $1F7F00D6RL  $0000W $0000W
%patch $1F936 $0003W $0000W $002EW $4295W $0000W $1F7F00ECRL  $0000W $0000W

#Menu texts
%patch $351AE "SCORE BOX (ON)" $00
%patch $351BD "SCORE BOX (OFF)" $00
%patch $351CD "TWO-BUTTON FIRING (ON)" $00
%patch $351E4 "TWO-BUTTON FIRING (OFF)" $00
%patch $351FC "FIX JERKY MOTION (ON)" $00
%patch $35212 "FIX JERKY MOTION (OFF)" $00
%patch $35229 "SVGA COMPATIBILITY (ON)" $00
%patch $35241 "SVGA COMPATIBILITY (OFF)" $00

#Change texts called from
%patch $1AE47  [$455BW] #Score on
%patch $1AE4C  [$456CW] #Score off
%patch $1AEF2  [$4610W] #2-button on
%patch $1AEF7  [$4629W] #2-button off
%patch $1AE3C  [$457EW] #Press any- Scorebox change
%patch $1AE75  [$45BFW] #Press any- jerk change
%patch $1AEAE  [$4602W] #Press any- SVGA change
%patch $1AEE7  [$4643W] #Press any- 2-Button change

#Change texts
%patch $3528B "Score box now on" $00
%patch $3529C "Score box now off" $00
%patch $35340 "Two-button firing now on" $00
%patch $35359 "Two-button firing now off" $00
%patch $352AE "Press any key" $00
%patch $352EF "Press any key" $00
%patch $35332 "Press any key" $00
%patch $35373 "Press any key" $00


Movement setup menu

This menu allows the player to change which keyboard keys move Keen in various directions. It has eight options all of type 1, one for each movement direction. Each option has its own text. The menu itself uses the 'MOVEMENT SETUP' bitmap.

Keen 4 Movement setup menu

#Menu setup
%patch $1FBB2 $0000W $0000W $0060W $0000W $0000W $1FB1RW $1A890C0ERL  $0000W $0000W $0000W

#Menu options
%patch $1FB10 $0001W $0000W $0000W $481CW $0000W $00000000L  $0000W $0000W
%patch $1FB22 $0001W $0000W $0000W $4826W $0000W $00000000L  $0000W $0000W
%patch $1FB34 $0001W $0000W $0000W $4829W $0000W $00000000L  $0000W $0000W
%patch $1FB46 $0001W $0000W $0000W $4834W $0000W $00000000L  $0000W $0000W
%patch $1FB58 $0001W $0000W $0000W $483AW $0000W $00000000L  $0000W $0000W
%patch $1FB6A $0001W $0000W $0000W $4847W $0000W $00000000L  $0000W $0000W
%patch $1FB7C $0001W $0000W $0000W $484CW $0000W $00000000L  $0000W $0000W
%patch $1FB8E $0001W $0000W $0000W $4858W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $3368C "UP & LEFT" $00
%patch $33696 "UP" $00
%patch $33699 "UP & RIGHT" $00
%patch $336A4 "RIGHT" $00
%patch $336AA "DOWN & RIGHT" $00
%patch $336B7 "DOWN" $00
%patch $336BC "DOWN & LEFT" $00
%patch $336C8 "LEFT" $00

Keen 5 Movement setup menu

#Menu setup
%patch $20A42 $0000W $0000W $004BW $0000W $0000W $209ARW $1B830C0CRL  $0000W $0000W $0000W

#Menu options
%patch $209A0 $0001W $0000W $0000W $3E21W $0000W $00000000L  $0000W $0000W
%patch $209B2 $0001W $0000W $0000W $3E2BW $0000W $00000000L  $0000W $0000W
%patch $209C4 $0001W $0000W $0000W $3E2EW $0000W $00000000L  $0000W $0000W
%patch $209D6 $0001W $0000W $0000W $3E33W $0000W $00000000L  $0000W $0000W
%patch $209E8 $0001W $0000W $0000W $3E39W $0000W $00000000L  $0000W $0000W
%patch $209FA $0001W $0000W $0000W $3E46W $0000W $00000000L  $0000W $0000W
%patch $20A0C $0001W $0000W $0000W $3E4BW $0000W $00000000L  $0000W $0000W
%patch $20A1E $0001W $0000W $0000W $3E26W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34161 "UP & LEFT" $00
%patch $3416B "UP" $00
%patch $3416E "UP & RIGHT" $00
%patch $34173 "RIGHT" $00
%patch $34179 "DOWN & RIGHT" $00
%patch $34186 "DOWN" $00
%patch $3418B "DOWN & LEFT" $00
%patch $34166 "LEFT" $00

Keen 6 Movement setup menu

#Menu setup
%patch $1FA12 $0000W $0000W $0013W $0000W $0000W $1F97RW $1A500C0ERL  $0000W $0000W $0000W

#Menu options
%patch $1F970 $0001W $0000W $0000W $4296W $0000W $00000000L  $0000W $0000W
%patch $1F982 $0001W $0000W $0000W $42A0W $0000W $00000000L  $0000W $0000W
%patch $1F994 $0001W $0000W $0000W $42A3W $0000W $00000000L  $0000W $0000W
%patch $1F9A6 $0001W $0000W $0000W $42AEW $0000W $00000000L  $0000W $0000W
%patch $1F9B8 $0001W $0000W $0000W $42B4W $0000W $00000000L  $0000W $0000W
%patch $1F9CA $0001W $0000W $0000W $42C1W $0000W $00000000L  $0000W $0000W
%patch $1F9DC $0001W $0000W $0000W $42C6W $0000W $00000000L  $0000W $0000W
%patch $1F9EE $0001W $0000W $0000W $42D2W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34FC6 "UP & LEFT" $00
%patch $34FD0 "UP" $00
%patch $34FD3 "UP & RIGHT" $00
%patch $34FDE "RIGHT" $00
%patch $34FE4 "DOWN & RIGHT" $00
%patch $34FF1 "DOWN" $00
%patch $34FF6 "DOWN & LEFT" $00
%patch $35002 "LEFT" $00


Button setup menu

This menu allows the player to change which keyboard keys make Keen jump, pogo and shoot. It has three options all of type 1, one for each action. Each option has its own text. The menu itself uses the 'BUTTON SETUP' bitmap and uses the same code as the movement setup menu.

Keen 4 Button setup menu

#Menu setup
%patch $1FC18 $0000W $0000W $0061W $0000W $0000W $1FBDRW $1A890C0ERL  $0000W $0000W $0000W

#Menu options
%patch $1FBD0 $0001W $0000W $0024W $485DW $0000W $00000000L  $0000W $0000W
%patch $1FBE2 $0001W $0000W $0019W $4862W $0000W $00000000L  $0000W $0000W
%patch $1FBF4 $0001W $0000W $0021W $4867W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $336CD "JUMP" $00
%patch $336D2 "POGO" $00
%patch $336D7 "FIRE" $00

Keen 5 Button setup menu

#Menu setup
%patch $20AA8 $0000W $0000W $004CW $0000W $0000W $20A6RW $1B830C0CRL  $0000W $0000W $0000W

#Menu options
%patch $20A60 $0001W $0000W $0024W $3E57W $0000W $00000000L  $0000W $0000W
%patch $20A72 $0001W $0000W $0019W $3E5CW $0000W $00000000L  $0000W $0000W
%patch $20A84 $0001W $0000W $0021W $3E61W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $34197 "JUMP" $00
%patch $3419C "POGO" $00
%patch $341A1 "FIRE" $00

Keen 6 Button setup menu

#Menu setup
%patch $1FA78 $0000W $0000W $0014W $0000W $0000W $1FA3RW $1A500C0ERL  $0000W $0000W $0000W

#Menu options
%patch $1FA30 $0001W $0000W $0024W $42D7W $0000W $00000000L  $0000W $0000W
%patch $1FA42 $0001W $0000W $0019W $42DCW $0000W $00000000L  $0000W $0000W
%patch $1FA54 $0001W $0000W $0021W $42E1W $0000W $00000000L  $0000W $0000W

#Menu texts
%patch $35007 "JUMP" $00
%patch $3500C "POGO" $00
%patch $35011 "FIRE" $00


Keyboard\Joystick\Gravis menus

This menu consists of two different parts. The first menu lets the player pick between the movement and button setup menus. It has two type 3options each with their own text and code to run when selected. The menu itself uses the 'KEYBOARD MENU' bitmap.

The second, third and fourth menus switch control to Joystick 1, Joystick 2 and the Gravis Gamepad respectively. They do not change the screen or menu and instead are called by the Configure menu, run some code then return control to the Configure menu. As such they are not quite separate menus. It can be seen that they have no options but do have their own bitmap to display.

The two options themselves call two menus the movement and button configuration menus.

Keen 4 Keyboard\Joystick\Gravis menus

#Menu setups
%patch $1FC66 $0008W $0000W $005FW $0000W $0000W $1FC3RW $1A890BF1RL  $0000W $0000W $0000W #Keyboard
%patch $1FC7C $0000W $0000W $0062W $0000W $0000W $0000W  $1A891075RL  $0000W $0000W $0000W #Joystick 1
%patch $1FC92 $0000W $0000W $0062W $0000W $0000W $0000W  $1A8910B1RL  $0000W $0000W $0000W #Joystick 2
%patch $1FCA8 $0000W $0000W $0062W $0000W $0000W $0000W  $1A8912C8RL  $0000W $0000W $0000W #Gravis Gamepad

#Menu options
%patch $1FC30 $0003W $0000W $0032W $486CW $0000W $1FB100A2RL $0000W $0000W #Movement (Calls movement menu)
%patch $1FC42 $0003W $0000W $0030W $4875W $0000W $1FBD0048RL $0000W $0000W #Buttons (Calls button menu)

#Menu texts
%patch $336DC "MOVEMENT" $00
%patch $336E5 "BUTTONS" $00

Keen 5 Keyboard\Joystick\Gravis menus

#Menu setups
%patch $20AF6 $0008W $0000W $004AW $0000W $0000W $20ACRW $1B830BEFRL  $0000W $0000W $0000W #Keyboard
%patch $20B0C $0000W $0000W $004DW $0000W $0000W $0000W  $1B831073RL  $0000W $0000W $0000W #Joystick 1
%patch $20B22 $0000W $0000W $004DW $0000W $0000W $0000W  $1B8310AFRL  $0000W $0000W $0000W #Joystick 2
%patch $20B38 $0000W $0000W $004DW $0000W $0000W $0000W  $1B8312C6RL  $0000W $0000W $0000W #Gravis Gamepad

#Menu options
%patch $20AC0 $0003W $0000W $0032W $3E66W $0000W $209A00A2RL $0000W $0000W #Movement (Calls movement menu)
%patch $20AD2 $0003W $0000W $0030W $3E6FW $0000W $20A60048RL $0000W $0000W #Buttons (Calls button menu)

#Menu texts
%patch $341A6 "MOVEMENT" $00
%patch $341AF "BUTTONS" $00

Keen 6 Keyboard\Joystick\Gravis menus

#Menu setups
%patch $1FAC6 $0008W $0000W $0012W $0000W $0000W $1FA9RW $1A500BF1RL  $0000W $0000W $0000W #Keyboard
%patch $1FADC $0000W $0000W $0015W $0000W $0000W $0000W  $1A501075RL  $0000W $0000W $0000W #Joystick 1
%patch $1FAF2 $0000W $0000W $0015W $0000W $0000W $0000W  $1A5010B1RL  $0000W $0000W $0000W #Joystick 2
%patch $1FB08 $0000W $0000W $0015W $0000W $0000W $0000W  $1A5012C8RL  $0000W $0000W $0000W #Gravis Gamepad

#Menu options
%patch $1FA90 $0003W $0000W $0032W $42E6W $0000W $1F9700A2RL $0000W $0000W #Movement (Calls movement menu)
%patch $1FAA2 $0003W $0000W $0030W $42EFW $0000W $1FA30048RL $0000W $0000W #Buttons (Calls button menu)

#Menu texts
%patch $35016 "MOVEMENT" $00
%patch $3501F "BUTTONS" $00


Configure menu

This menu lets the player pick between the configuration menus. It is as such the most central menu. It has seven type 3 options, each with its own text. (Except that last which points to blank text.) The menu itself uses the 'CONFIGURATION MENU' bitmap.

Each option calls its own code, usually another menu. The last three options call a menu that doesn't change the screen and keeps the player in the options menu.

Notice the last option has no text. This is because its text must change depending on whether or not the Gravis Gamepad is active. The fourth option ('keyboard') has a second variable value of 8, which moves the next line down 8 pixels, creating a space between the first four and last three options.

Patches relating to how the menu's code works (What variables it can alter, how it behaves when an option is selected.) are covered under Patch:Configuration options.

Keen 4 Configure menu

#Menu setups
%patch $1FD50 $0000W $0000W $005CW $0000W $0000W $1FCCRW $1A890A0ARL  $0000W $0000W $0000W

#Menu options
%patch $1FCC0 $0003W $0000W $001FW $487DW $0000W $1F87005ARL $0000W $0000W #Sound (Call Sound menu)
%patch $1FCD2 $0003W $0000W $0032W $4883W $0000W $1F8E0036RL $0000W $0000W #Music (Call music menu)
%patch $1FCE4 $0003W $0000W $0018W $4889W $0000W $1FAA005ARL $0000W $0000W #Options (Call main options menu)
%patch $1FCF6 $0003W $0008W $0025W $4891W $0000W $1FC30036RL $0000W $0000W #Keyboard (Call keyboard menu)
%patch $1FD08 $0003W $0000W $0002W $489EW $0000W $1FC3004CRL $0000W $0000W #Joystick 1 (Call Joy 1 menu)
%patch $1FD1A $0003W $0000W $0003W $48AEW $0000W $1FC30062RL $0000W $0000W #Joystick 2 (Call Joy 2 menu)
%patch $1FD2C $0003W $0000W $0022W $48BEW $0000W $1FC30078RL $0000W $0000W #Gravis (Call Gravis menu)

#Menu texts
%patch $336ED "SOUND" $00
%patch $336F3 "MUSIC" $00
%patch $336F9 "OPTIONS" $00
%patch $33701 "USE KEYBOARD" $00
%patch $3370E "USE JOYSTICK #1" $00
%patch $3371E "USE JOYSTICK #2" $00

#Other texts
%patch $33920 "USE GRAVIS GAMEPAD (ON)" $00
              "USE GRAVIS GAMEPAD (OFF)" $00

Keen 5 Configure menu

#Menu setups
%patch $20BE0 $0000W $0000W $0047W $0000W $0000W $20B5RW $1B830A08RL  $0000W $0000W $0000W

#Menu options
%patch $20B50 $0003W $0000W $001FW $3E77W $0000W $2070005ARL $0000W $0000W #Sound (Call Sound menu)
%patch $20B62 $0003W $0000W $0032W $3DE9W $0000W $20770036RL $0000W $0000W #Music (Call music menu)
%patch $20B74 $0003W $0000W $0018W $3E7DW $0000W $2093005ARL $0000W $0000W #Options (Call main options menu)
%patch $20B86 $0003W $0008W $0025W $3E85W $0000W $20AC0036RL $0000W $0000W #Keyboard (Call keyboard menu)
%patch $20B98 $0003W $0000W $0002W $3E92W $0000W $20AC004CRL $0000W $0000W #Joystick 1 (Call Joy 1 menu)
%patch $20BAA $0003W $0000W $0003W $3EA2W $0000W $20AC0062RL $0000W $0000W #Joystick 2 (Call Joy 2 menu)
%patch $20BBC $0003W $0000W $0022W $3D9DW $0000W $20AC0078RL $0000W $0000W #Gravis (Call Gravis menu)

#Menu texts
%patch $341B7 "SOUND" $00
%patch $34129 "MUSIC" $00
%patch $341BD "OPTIONS" $00
%patch $341C5 "USE KEYBOARD" $00
%patch $341D2 "USE JOYSTICK #1" $00
%patch $341E2 "USE JOYSTICK #2" $00

#Other texts called from
%patch $1C142 $4090W #Gravis on
%patch $1C147 $40A8W #Gravis off

#Other texts
%patch $343D0 "USE GRAVIS GAMEPAD (ON)" $00
%patch $343E8 "USE GRAVIS GAMEPAD (OFF)" $00

Keen 6 Configure menu

#Menu setups
%patch $1FBB0 $0000W $0000W $000FW $0000W $0000W $1FB2RW $1A500A0ARL  $0000W $0000W $0000W

#Menu options
%patch $1FB20 $0003W $0000W $001FW $42F7W $0000W $1F6D005ARL $0000W $0000W #Sound (Call Sound menu)
%patch $1FB32 $0003W $0000W $0032W $42FDW $0000W $1F740036RL $0000W $0000W #Music (Call music menu)
%patch $1FB44 $0003W $0000W $0018W $4303W $0000W $1F90005ARL $0000W $0000W #Options (Call main options menu)
%patch $1FB56 $0003W $0008W $0025W $430BW $0000W $1FA90036RL $0000W $0000W #Keyboard (Call keyboard menu)
%patch $1FB68 $0003W $0000W $0002W $4318W $0000W $1FA9004CRL $0000W $0000W #Joystick 1 (Call Joy 1 menu)
%patch $1FB7A $0003W $0000W $0003W $4328W $0000W $1FA90062RL $0000W $0000W #Joystick 2 (Call Joy 2 menu)
%patch $1FB8C $0003W $0000W $0022W $4338W $0000W $1FA90078RL $0000W $0000W #Gravis (Call Gravis menu)

#Menu texts
%patch $35027 "SOUND" $00
%patch $3502D "MUSIC" $00
%patch $35033 "OPTIONS" $00
%patch $3503B "USE KEYBOARD" $00
%patch $35048 "USE JOYSTICK #1" $00
%patch $35058 "USE JOYSTICK #2" $00

#Other texts
%patch $3525A "USE GRAVIS GAMEPAD (ON)" $00
              "USE GRAVIS GAMEPAD (OFF)" $00


Main menu

This menu is the most central menu of the game, the one that first appears when the player leaves the title screen or presses 'Esc' during gameplay. It leads to all other menus.

It has only one menu setup using the 'MAIN MENU' bitmap. Text is 20 pixels right and 4 pixels down from the top left of the Computerwrist screen.

Keen 4 Main menu

#Menu setup
%patch $1FE22 $0020W $0004W $0058W $0000W $0000W $1FD8RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1FD80 $0003W $0000W $0031W $48BFW $0000W $1F930048RL $0000W $0000W #New game (Call New game menu)
%patch $1FD92 $0003W $0000W $0026W $48C8W $0000W $1F99007ERL $0000W $0000W #Load game (Call load game menu)
%patch $1FDA4 $0003W $0000W $001FW $48D2W $0000W $1F990094RL $0000W $0000W #Save game (Call save game menu)
%patch $1FDB6 $0003W $0000W $002EW $48DCW $0000W $1FCC0090RL $0000W $0000W #Configure (Call configure menu)
%patch $1FDC8 $0001W $0000W $0013W $0000W $0001W $00000000L  $0000W $0000W #Return
%patch $1FDDA $0001W $0000W $0012W $48E6W $0002W $00000000L  $0000W $0000W #End game
%patch $1FDEC $0003W $0000W $0019W $48EFW $0000W $1FCC00A6RL $0000W $0000W #Paddle war (Call Paddle menu)
%patch $1FDFE $0001W $0000W $0010W $48FAW $0003W $00000000L  $0000W $0000W #Quit

#Menu texts
%patch $3372F "NEW GAME" $00
%patch $33738 "LOAD GAME" $00
%patch $33742 "SAVE GAME" $00
%patch $3374C "CONFIGURE" $00
%patch $33CCA "RETURN TO GAME" $00
%patch $33CD9 "RETURN TO DEMO" $00
%patch $33756 "END GAME" $00
%patch $3375F "PADDLE WAR" $00
%patch $3376A "QUIT" $00

Keen 5 Main menu

#Menu setup
%patch $20CB2 $0020W $0004W $0043W $0000W $0000W $20C1RW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $20C10 $0003W $0000W $0031W $3EB2W $0000W $207C0048RL $0000W $0000W #New game (Call New game menu)
%patch $20C22 $0003W $0000W $0026W $3EBBW $0000W $2082007ERL $0000W $0000W #Load game (Call load game menu)
%patch $20C34 $0003W $0000W $001FW $3EC5W $0000W $20820094RL $0000W $0000W #Save game (Call save game menu)
%patch $20C46 $0003W $0000W $002EW $3ECFW $0000W $20B50090RL $0000W $0000W #Configure (Call configure menu)
%patch $20C58 $0001W $0000W $0013W $0000W $0001W $00000000L  $0000W $0000W #Return
%patch $20C6A $0001W $0000W $0012W $3ED9W $0002W $00000000L  $0000W $0000W #End game
%patch $20C7C $0003W $0000W $0019W $3EE2W $0000W $20B500A6RL $0000W $0000W #Paddle war (Call Paddle menu)
%patch $20C8E $0001W $0000W $0010W $3EEDW $0003W $00000000L  $0000W $0000W #Quit

#Menu texts
%patch $341F2 "NEW GAME" $00
%patch $341FB "LOAD GAME" $00
%patch $34205 "SAVE GAME" $00
%patch $3420F "CONFIGURE" $00
%patch $3469A "RETURN TO GAME" $00
%patch $346A9 "RETURN TO DEMO" $00
%patch $34219 "END GAME" $00
%patch $34222 "PADDLE WAR" $00
%patch $3422D "QUIT" $00

Keen 6 Main menu

#Menu setup
%patch $1FC82 $0020W $0004W $000BW $0000W $0000W $1FBERW $00000000L   $0000W $0000W $0000W

#Menu options
%patch $1FBE0 $0003W $0000W $0031W $4339W $0000W $1F790048RL $0000W $0000W #New game (Call New game menu)
%patch $1FBF2 $0003W $0000W $0026W $4342W $0000W $1F7F007ERL $0000W $0000W #Load game (Call load game menu)
%patch $1FC04 $0003W $0000W $001FW $434CW $0000W $1F7F0094RL $0000W $0000W #Save game (Call save game menu)
%patch $1FC16 $0003W $0000W $002EW $4356W $0000W $1FB20090RL $0000W $0000W #Configure (Call configure menu)
%patch $1FC28 $0001W $0000W $0013W $0000W $0001W $00000000L  $0000W $0000W #Return
%patch $1FC3A $0001W $0000W $0012W $4360W $0002W $00000000L  $0000W $0000W #End game
%patch $1FC4C $0003W $0000W $0019W $4369W $0000W $1FB200A6RL $0000W $0000W #Paddle war (Call Paddle menu)
%patch $1FC5E $0001W $0000W $0010W $4374W $0003W $00000000L  $0000W $0000W #Quit

#Menu texts
%patch $35069 "NEW GAME" $00
%patch $35072 "LOAD GAME" $00
%patch $3507C "SAVE GAME" $00
%patch $35086 "CONFIGURE" $00
%patch $35604 "RETURN TO GAME" $00
%patch $35613 "RETURN TO DEMO" $00
%patch $35090 "END GAME" $00
%patch $35099 "PADDLE WAR" $00
%patch $350A4 "QUIT" $00

#Other texts
%patch $35604 "RETURN TO GAME" $00
              "RETURN TO DEMO" $00


Paddle war menu

This menu is called by the Main menu when the player selects the 'Paddle war' option. It runs the Paddle war code. It has no options or text or bitmaps to display as that is handled by the Paddle war code.

Keen 4 Paddle War menu

#Menu setup
%patch $1FD66 $0000W $0000W $0000W $0000W $0000W $0000W  $1A891E34RL  $0000W $0000W $0000W

Keen 5 Paddle War menu

#Menu setup
%patch $20BF6 $0000W $0000W $0000W $0000W $0000W $0000W  $1B831E32RL  $0000W $0000W $0000W

Keen 6 Paddle War menu

#Menu setup
%patch $1FBC6 $0000W $0000W $0000W $0000W $0000W $0000W  $1A501E34RL  $0000W $0000W $0000W


Menu loading text

This text appears when the menu is loading; either after a demo loop entry or when the player loads the menu from a current game. The text is replaced by the menu once it loads.

Menu loading text

#Keen 4 :
%patch $1CC37  [$4E78W] #Text called from
%patch $33CE8 "Control Panel" $00


#Keen 5 :
%patch $1DBD4  [$4378W] #Text called from
%patch $346B8 "Control Panel" $00


#Keen 6 :
%patch $1C8A6  [$48F2W] #Text called from
%patch $35622 "Control Panel" $00


Other menu related texts

These are strings of text used in the various menus that are not currently patchable using the above listed menu patches. More complete patches can be found on other pages such as Patch:Quit Windows.

Keen 4

#Text
%patch $33792 "ESC TO BACK OUT" $00
%patch $337A2 "REALLY END CURRENT GAME?" $00
              "PRESS Y TO END IT" $00
%patch $337CD "REALLY QUIT?" $00
              "PRESS Y TO QUIT" $00
%patch $337EA "YOU'RE IN A GAME" $00
              "PRESS Y TO LOAD GAME" $00
%patch $33810 "YOU'RE IN A GAME" $00
              "PRESS Y FOR NEW GAME" $00

#Options menu
%patch $33951 "Score box now on" $00
              "Score box now off" $00
              "Press any key" $00
%patch $33CCA "RETURN TO GAME" $00 
              "RETURN TO DEMO" $00
%patch $33D11 "Quitting..." $00

Keen 5

#Text
%patch $34253 "ESC TO BACK OUT" $00
%patch $34263 "REALLY END CURRENT GAME?" $00
              "PRESS Y TO END IT" $00
%patch $3428E "REALLY QUIT?" $00
              "PRESS Y TO QUIT" $00
%patch $342AB "YOU'RE IN A GAME" $00
              "PRESS Y TO LOAD GAME" $00
%patch $342D1 "PRESS Y FOR NEW GAME" $00
%patch $3469A "RETURN TO GAME" $00
              "RETURN TO DEMO" $00
%patch $346E1 "Quitting..." $00 

#Options menu text:
%patch $34401 "Score box now on" $00
              "Score box now off" $00
              "Press any key" $00

Keen 6

#Text
%patch $350CC "ESC TO BACK OUT" $00
%patch $350DC "REALLY END CURRENT GAME?" $00
              "PRESS Y TO END IT" $00
%patch $35107 "REALLY QUIT?" $00
              "PRESS Y TO QUIT" $00
%patch $35124 "YOU'RE IN A GAME" $00
              "PRESS Y TO LOAD GAME" $00
%patch $3514A "YOU'RE IN A GAME" $00
              "PRESS Y FOR NEW GAME" $00
%patch $3564B "Quitting..." $00

#Options menu
%patch $3528B "Score box now on" $00
              "Score box now off" $00
              "Press any key" $00


Bars

The bars are horizontal lines of color that separate various sections of the menu. The Main menu has two, a top and bottom bar. All bars have four variables of interest. The first is the bar's color, the second how far down the screen it appears and the last two are the left and right ends of the bar. There is also a patch to remove the bars entirely. (Or their vertical position can be set to 0.)

Keen 4

#Top menu bar
%patch $1AB14 [$000AW] #Color
%patch $1AB18 [$0085W] #Vertical position
%patch $1AB1C [$00E7W] #Right end
%patch $1AB20 [$004DW] #Left start

#Don't show top bar
%patch $1AB13 $EB $16

#Bottom menu bar
%patch $1AAC1 [$000AW] #Color
%patch $1AAC5 [$0085W] #Vertical position
%patch $1AAC9 [$00E7W] #Right end
%patch $1AACD [$004DW] #Left start

#Don't show bottom bar
%patch $1AAC0 $8B $E5 $5D $CB

Keen 5

#Top menu bar
%patch $1BAB2 [$000AW] #Color
%patch $1BAB6 [$0085W] #Vertical position
%patch $1BABA [$00E7W] #Right end
%patch $1BABE [$004DW] #Left start

#Don't show top bar
%patch $1BAB1 $EB $16

#Bottom menu bar
%patch $1BA5F [$000AW] #Color
%patch $1BA63 [$0085W] #Vertical position
%patch $1BA67 [$00E7W] #Right end
%patch $1BA6B [$004DW] #Left start

#Don't show bottom bar
%patch $1BA5E $8B $E5 $5D $CB

Keen 6

#Top menu bar
%patch $1A784 [$000AW] #Color
%patch $1A788 [$0085W] #Vertical position
%patch $1A78C [$00E7W] #Right end
%patch $1A790 [$004DW] #Left start

#Don't show top bar
%patch $1A783 $EB $16

#Bottom menu bar
%patch $1A731 [$000AW] #Color
%patch $1A735 [$0085W] #Vertical position
%patch $1A739 [$00E7W] #Right end
%patch $1A73D [$004DW] #Left start

#Don't show bottom bar
%patch $1A730 $8B $E5 $5D $CB


Colors

There are numerous functions that set watch text and background colors, allowing you to have different colors in different parts of the watch. The following patch is appended with numerous notes which are invaluable for understanding what each section of the patch does.

Keen 4

#Main Menu
%patch $1A9C6 $B0 [$08] $50 #Background 1 (Dark grey)
              $B0 [$08] $50 #Background 2 (Should match back 1)
              $B0 [$9F] $50 #Width of background box
%patch $1AA06 [$02]         #Selected text color (Light green)*
%patch $1AA0D [$0A]         #Unselected text color (Dark green)*
%patch $1AA33 [$0F]         #Unknown text color (Light grey)*
%patch $1AB14 [$0A]         #Top line color (Light green)
%patch $1AAC1 [$0A]         #Bottom line color (Light green)
%patch $1AA40 [$0A]         #Menu bottom text color (Dark green)*
%patch $1AABF [$00]         #Unknown menu bottom text color (Black)*

#Menu message box
%patch $1AC75 [$0A] #Top of box (Light green)
%patch $1AC90 [$0A] #Bottom of box (Light green)
%patch $1ACAE [$0A] #Left side of box (Light green)
%patch $1ACC9 [$0A] #Right side of box (Light green)
%patch $1AC5B [$08] #Background color (Dark grey)
%patch $1AE6C [$02] #Top text (Light green)*
%patch $1AEA3 [$0A] #Bar in the middle (Light green)
%patch $1AEC8 [$0A] #Bottom text (Dark green)*

#Configure menu
%patch $1B2F6 [$0A] #Control text

#Change keyboard keys menu
%patch $1B50E $B0 [$08] $50 #Background 1 (Dark grey)
              $B0 [$08] $50 #Background 2 (Should match back 1)
              $B0 [$9F] $50 #Width of background (Should match main menu width above)
%patch $1B543 [$02]         #Selected text (Light green)*
%patch $1B547 [$0A]         #Unselected text (Dark green)*
%patch $1B572 [$08]         #Normal box color (XOR)
%patch $1B595 [$08]         #Normal box background
%patch $1B33B [$02]         #Changing key box color 1 (Dark green)
%patch $1B35E [$08]         #Changing key box color 2 (Dark grey, XOR)
%patch $1B381 [$08]         #Changing key box background

#Change joystick buttons menu
%patch $1B64F [$08] #Background color
%patch $1B670 [$02] #Text color (Light green)*

#Change gamepad button menu
%patch $1B987 [$08] #Background color
%patch $1BB9C [$02] #Text color (Light green)*

#Save\load game menu
%patch $1BC73 [$02] #Selected text and box
%patch $1BC77 [$0A] #Unselected text and box
%patch $1BC7E [$08] #Text color modifier
%patch $1BEA7 [$08] #Box background color
%patch $1BFAF [$02] #Saving game text color
%patch $1BFB1 [$08] #Saving game background color

#Load menu
%patch $1CC69 [$0F] #Unknown text color (Black)
%patch $1CD8E [$0F] #Loading menu text (Black)


NOTES

All values in the patches below are the default values. If you get confused it is a simple matter to replace all of one value with another value. (Say $0A with $0B)

The colors of fonts are opposite those of other items. Thus $02 is dark green and $0A is light green for most menu components, but the exact opposite is true for fonts. Items that involve font colors are marked with an * so the patcher can be made aware of this.


Things that can't be patched

Two sorts of menu items cannot be patched, or rather cannot be changed by patching. these are the 8x8 tiles (Used for the menu cursor for example) and the menu graphics (For example the image that says 'MAIN MENU' in the main menu.) These need to be altered with a graphics program to change their colors.


Main Menu and general setup

This is the menu the player is first presented with. It's graphic reads 'MAIN MENU' and it lists all the other options and sub-menus the player can access.

It consists of three parts, a top section, (Containing a single divider line and the menu graphic.) the middle section containing various options and a bottom section (Containing a divider and menu controls text.)

The Main Menu setup is used by most of the sub-menus (Such as the configure menu) so patches here have the widest effects.

The first thing that can be changed is the background. When the menu is drawn, first the menu graphic is drawn onscreen, then a box of a certain width and color is drawn over it. THEN the text is drawn over this. Changing the background color will also change the color of the font displayed on it, so be careful.

By default the background is $08 or dark grey so as not to interfere with font color. In the patch above two values for this are given, both must match. It is not wise to change the width of the background box, for if the text is too large for it, much confusion results.

It is also possible to change the color of the menu text. There are three main colors, selected, unselected and the text that appears at the bottom of the menu (Telling you to use the arrows to move and so on.) There are two less well known text colors, one light grey, one black. Finally the top and bottom divider line colors can be changed.


Menu Message Box

This box appears over the main menu, such as when the player selects the 'Quit' option. It is made of a top, bottom, left and right line with a bar in the middle that separates the top and bottom texts. It also has a background color that works the same way as the main menu. Each of these item's color can be changed. (Notice this box can have different text in it depending on what it's being used for, but the colors will remain the same.)


Configure menu

This mostly uses the Main Menu's colors except for the text explaining what currently controls Keen (Keyboard or joystick.) this has its own color.


Change keys menu

This is part of the configure menu and appears when the player wants to change what keys move Keen. It consists of two separate, but similar menus that consist of a list of actions paired with boxes showing what key controls that action.

As a separate menu it has its own background color setup, identical to that of the main menu's. It is also possible to change the selected and unselected text colors as well as the border color and background color of the boxes that show the current control keys.

Things get more complicated when a key is selected. The boxes containing the control key get their color from the selected and unselected text, plus a modifier. By default this modifier has no effect, but if it is patched, odd things can happen, so it is suggested that patchers be very careful when altering it.


Joystick\gamepad menu

These menus are much simpler than the keyboard menu, having only a background and text color.


Save\Load game menu

This consists of a series of savegame positions, each a name enclosed in a box. The color of the box is controlled by the same variable that controls that of the text. The 'selected' text color is the color of the selected game and also the color its box 'blinks' The text color modifier affects text color by adding to it. It thus affects both the selected and unselected text colors. By default it is $08. There is no point in patching this. There is also a background color, as well as a text AND background color for when the player is typing a name for their saved game.


Loading menu

This applies to windows that appear when the menu is being loaded or closed. (Such as the 'Demo' window when a demo is starting or 'Control panel' when the menu appears.) All that can currently be patched is the text color in these windows. They are not really part of the main menu proper.


Menu mask

When certain actions are selected, such as the 'Quit' option, the menu is masked to show its inacessibility. By default this uses a masked bitmap that is a checkerboard pattern of grey pixels, placed over the menu screen to half-erase the text. The bitmap can be changed, moved and even prevented from appearing entirely.

Main Menu Mask

#Keen 4 Main menu bitmap mask
%patch $1AC2D [$0079W] #Bitmap
%patch $1AC31 [$0030W] #Horizontal position
%patch $1AC35 [$004AW] #Vertical position

#Don't mask
%patch $1AC2C $EB $12

#Keen 5 Main menu bitmap mask
%patch $1BBCB [$0063W] #Bitmap
%patch $1BBCF [$0030W] #Horizontal position
%patch $1BBD3 [$004AW] #Vertical position

#Don't mask
%patch $1BBCA $EB $12

#Keen 6 Main menu bitmap mask
%patch $1A89D [$002BW] #Bitmap
%patch $1A8A1 [$0030W] #Horizontal position
%patch $1A8A5 [$004AW] #Vertical position

#Don't mask
%patch $1A89C $EB $12


Main Menu Demo Loop

The main menu demo loop is the sequence of events that plays out whenever the player selects 'Return to demo' from the main menu. The default sequence is 'play demo 1, story screen, demo 2 highscore demo, demo 3, demo 4' (Then the terminator text will display, resetting the cycle.

To remove an item from the loop simply replace its '$9A $xxxxxxxxRL' string with '$90 $90 $90 $90 $90' Items can also be rearranged, though this takes a little more nuance. It is also possible to rearrange the order the demos play in by changing the numbers before the demo calls. (See section below on demo numbers\disabling demos.)

Demo Loop

#Keen 4
%patch $3C2F $33 $C0 $50 {$9A $03ED1A31RL}     $83 $C4 $02 $EB $65 {$9A}         #Play demo 1
     {$03ED18B8RL}     $EB $5E $B8 [$0001W]  $50 {$9A $03ED1A31RL}     $83 $C4 $02 #Story screen\demo 2
             $EB $50 {$9A $03ED1D55RL}     $EB $49 $B8 [$0002W]  $50 {$9A}         #Highscores
     {$03ED1A31RL}     $83 $C4 $02 $EB $3B $33 $FF $B8 [$0003W]  $50 {$9A}         #Demo 3
     {$03ED1A31RL}     $83 $C4 $02                                             #Demo 4


Demo loop list

This is the pointer list to all the items in the above code. By simply swapping various pointers around it is possible to change the order that various actions appear or replace one action with another. A novel option is to replace the terminator text with the star wars story

Keen 4

#Main menu actions list
%patch $3CB9 {$0448W} #3C18: Terminator sequence and title screen
             {$045FW} #3C2F: Demo 1
             {$046CW} #3C3C: Star wars story
             {$0473W} #3C43: Demo 2
             {$0481W} #3C51: High score demo
             {$0488W} #3C58: Demo 3
             {$0496W} #3C66: Demo 4