Patch:Game over (Vorticons)

From KeenWiki
Jump to navigation Jump to search

This page contains patches relating tot he Game Over sequence. This is triggered in one of three different circumstances, when the player quits their game, when the player loses all of their lives and when the game is won. The sequence may differ depending on circumstances. Closely related patches can be found at Patch:High Scores (Vorticons).

In Keen Vorticons the Game Over sequence may or may not ask the player to enter a high score, depending on their score. The sequences are so tightly interwoven that it is difficult to separate them ad this 'high Score Entry Window' will be treated here as part of the Game Over sequence. It contains a congratulatory message and allows the player to enter their name. After this the high scores are shown and the game ends.

Note that this is actually slightly more complex. First the SCORES.CKx file is read to see if the player actually has a high score. If not then the Game Over bitmap is shown, otherwise the high score window appears and the score is entered. In either case the game then goes to the high scores screen.


No GAME OVER

This patch removes the GAME OVER entirely; instead of seeing the GAME OVER or Highscores textbox the game simply quits directly to the Main Menu.

Keen 2

#No GAME OVER
%patch $8596 $C3


No GAME OVER when out of lives

This patch stops Keen losing a life when he dies and disables the GAME OVER check. This means that Keen can only experience a GAME OVER by quitting the game.

Keen 1

#Infinite lives - Skip G.O. check
%patch $8041 $E9 $FC9CW

Keen 2

#Infinite lives - Skip G.O. check
%patch $8446 $E9 $FCA7W

Keen 3

#Infinite lives - Skip G.O. check
%patch $8DFE $90 $90 $E9 $FC8CW


GAME OVER\High score sound

A sound is played when the game is over whether or not the Enter High Score Window appears. This can be blocked.

GAME OVER\High score sound

#GAME OVER\High score sound - Keen 1
%patch $8BBF $10

%patch $8BBE $EB $07 
#Game over\won sound disabled

#GAME OVER\High score sound - Keen 2
%patch $8676  $10

#GAME OVER\High score sound - Keen 3
%patch $9547  $10

Don't play GAME OVER\High score sound

#Don't play GAME OVER\High score sound - Keen 1
%patch $8BBE $EB $07

#Don't play GAME OVER\High score sound - Keen 2
%patch $8675  $EB $07

#Don't play GAME OVER\High score sound - Keen 3
%patch $9546  $EB $06


GAME OVER bitmap

The GAME OVER bitmap is displayed over the high score window and is onscreen whether or not the Enter High Score Window is present. Changing this will also change the game over sequence when Keen does no have a high score.

Keen 1

%patch $8BA4 [$0007W] #GAME OVER bitmap used
%patch $8BB5 [$0009W] #Bitmap h location

Keen 2

%patch $865B [$0007W] #GAME OVER bitmap used
%patch $866C [$0009W] #Bitmap h location

Keen 3

%patch $952C [$0006W] #GAME OVER bitmap used
%patch $953D [$0009W] #Bitmap h location


Don't show GAME OVER bitmap

This patch stops the GAME OVER bitmap appearing, either in the Enter High Score Window or when Keen does not have a high score.

Don't show GAME OVER bitmap

#Don't show GAME OVER bitmap -Keen 1
%patch $8BA3 $EB $19

#Don't show GAME OVER bitmap -Keen 2
%patch $965A $EB $19

#Don't show GAME OVER bitmap -Keen 3
%patch $952B $EB $19


High scores window

No Enter High Scores Window

This patch completely disables the Enter High Scores Window. When quitting or winning a game the player will simply be sent back to the main menu no matter what their score. As a side effect this will also happen when the player runs out of lives, there will be no GAME OVER bitmap shown.

A second patch is available that avoids this side effect, in this case the player will simply never be able to enter a new high score, they will always get the GAME OVER instead. In either case this means that the default scores can never be changed.

No high score window or game over

#Disable Enter High Scores Window entirely -Keen 1
%patch $8055 $90 $90 $90

#Disable Enter High Scores Window entirely -Keen 2
%patch $845A $90 $90 $90

#Disable Enter High Scores Window entirely -Keen 3
%patch $8055 $90 $90 $90

No Enter High Scores Window, allow game over

#Disable Enter High Scores Window -Keen 1
%patch $8B42 $90 $90

#Disable Enter High Scores Window -Keen 2
%patch $85F9 $90 $90

#Disable Enter High Scores Window -Keen 3
%patch $94CB $90 $90


Always display Enter High Scores Window

This patch displays the Enter High Scores Window whenever the player quits or wins the game, even if they have no high score (even if they have no points!) The player will be able to enter their name, but their score will not be added to the high scores unless they do in fact have a high score.

Always show Enter High Scores Window

#Always show Enter High Scores Window -Keen 1
%patch $8B42 $EB

#Always show Enter High Scores Window -Keen 2
%patch $85F9 $EB

#Always show Enter High Scores Window -Keen 3
%patch $94CB $EB


Window size and text start

The basic window setup common to all three games is a 13x32 window with a GAME OVER bitmap at the top. Aside from this text and other objects displayed differ between games. The text in the window starts a certain number of lines down from the window top.

Keen 1

#Enter High Scores Window setup
%patch $8B7C [$000DW] #Height (lines)
%patch $8B80 [$0020W] #Width (Letters)
%patch $8BDF [$0004W] #How far down text starts

Keen 2

#Enter High Scores Window setup
%patch $8633 [$000DW] #Height (lines)
%patch $8637 [$0020W] #Width (Letters)
%patch $8696 [$0004W] #How far down text starts

Keen 3

#Enter High Scores Window setup
%patch $9505 [$000DW] #Height (lines)
%patch $9509 [$0020W] #Width (Letters)
%patch $9566 [$0004W] #How far down text starts


Score base and don't show score

This patch changes the base that the score is shown in. By default this is base 10 (Numbers 0-9). If it is shown in base '0' then the score will not be shown at all.

Display score in base (10)

#Display score in base (10) -Keen 1
%patch $8BEE  10

#Display score in base (10) -Keen 2
%patch $86A5  10

#Display score in base (10) -Keen 3
%patch $9574  10


Ship parts tiles

In Keen 1 four ship parts tiles appear in the Enter High Score Window if Keen has obtained them.


What makes the ship parts appear in the window

This patch controls what makes the four parts tiles appear in the Enter High Scores Window. By default they are shown if the relevant part value is not 0. (See Patch:Jump conditions.) Changing all four $74s to $EBs will ensure none of the tiles are ever shown. See also Item bytes.

Keen 1

#What makes the parts appear in the high scores window: (Default: Show if NOT 0)
%patch $8C14 {$AA94W}  [$00] $74 #Joystick
%patch $8C38 {$AA9CW}  [$00] $74 #Battery
%patch $8C5E {$AA96W}  [$00] $74 #Vacuum
%patch $8C85 {$AA98W}  [$00] $74 #Whiskey


Parts tiles locations

In Keen 1 up to four parts tiles will appear in a line if Keen keen has them. The line's vertical location is patchable. Altering it will alter the vertical position of all four parts tiles.

Parts tiles have three variables that determine their location relative to that line; two of those variables alter the vertical location and one the horizontal. The horizontal and first vertical variables are in multiples of 8 pixels (Thus a value of 2 is 16 pixels and so on.) The second vertical variable is in single pixels.

The two 8 pixel variables have an odd quirk, the value $0002W or 16 pixels is instead represented as $40 $40 and it can only be changed to $40 $90 (8 pixels) or $90 $90 (0 pixels).

Keen 1

#Parts tiles
%patch $8C1A [$01C0W] #Joystick got tile
%patch $8C3E [$01C1W] #Battery got tile
%patch $8C64 [$01C2W] #Vacuum got tile
%patch $8C8B [$01C3W] #Whiskey got tile

#Parts tiles basic vertical location in 8 pixel increments
%patch $8C0D [$000BW]

#Joystick tile location: 13 pixels down
%patch $8C20 $40 $40 #Joystick v1 (1 tile down)
%patch $8C29 [$FFFCW] #Joystick v2 (3 pixels up)

#Battery tile location: 13 pixels down, 16 pixels right
%patch $8C20 $40 $40 #Battery v1 (1 tile down)
%patch $8C4D [$FFFCW]  #Battery v2 (3 pixels up)
%patch $8C53 $40 $40 #Battery h   (1 tile right)

#Vacuum tile location: 13 pixels down, 32 pixels right
%patch $8C6A $40 $40 #Vacuum  v1 (1 tile down)
%patch $8C73 [$FFFCW] #Vacuum  v2 (3 pixels up)
%patch $8C53 [$0004W] #Vacuum  h   (2 tiles right)

#Whiskey tile location: 13 pixels down, 48 pixels right
%patch $8C91 $40 $40 #Whiskey v1 (1 tile down)
%patch $8C9A [$FFFCW] #Whiskey v2 (3 pixels up)
%patch $8CA1 [$0006W] #Whiskey h   (3 tiles right)


Window text

The Enter High Scores Window contains three lines of text, a statement of score, congratulations and a request to enter the player's name. In Keen 2 mention of how many cities the player saved is also included, this is treated separately below. The 'first, second', etc text is a special case, explained in a subsection below.

Window text: Keen 1

#Score
%patch $8BE5  [$2E36W]
%patch $15E86 "         SCORE:" $00

#CONGRATULATIONS
%patch $8CB6  [$2E46W]
%patch $15E96 "       CONGRATULATIONS!" $0A $00

#You got
%patch $8CBF  [$2E5FW]
%patch $15EAF "     You got " $00

#Place, enter name
%patch $8CDA  [$2E6DW]
%patch $15EBD " place!" $0A $0A $0A "Enter your name:" $00

Window text: Keen 2

#Score
%patch $869C  [$2EB3W]
%patch $1A633 "         SCORE:" $00

#CONGRATULATIONS
%patch $8744  [$2EE9W]
%patch $1A669 "       CONGRATULATIONS!" $0A $00

#You got
%patch $874D  [$2F02W]
%patch $1A682 "     You got " $00

#Place, enter name
%patch $8768  [$2F10W]
%patch $1A690 " place!" $0A $0A $0A "Enter your name:" $00

Window text: Keen 3

#Score
%patch $956C  [$2F55W]
%patch $1C775 "         SCORE:" $00

#CONGRATULATIONS
%patch $95A3  [$2F65W]
%patch $1C785 "       CONGRATULATIONS!" $0A $00

#You got
%patch $95AB  [$2F7EW]
%patch $1C79E "     You got " $00

#Place, enter name
%patch $95C4  [$2F8CW]
%patch $1C7AC " place!" $0A $0A $0A "Enter your name:" $00


Keen 2 cities saved text

In Keen 2 the player is told how many cities they have saved. If they have saved none the text reads 'You saved no cities!', if one city is saved then the text reads 'You saved 1 city!', and if more than one city has been saved the text reads 'You saved x cities!' where x is the number saved.

Keen 2 cities saved text

%patch $8703  [$2EC3W]
%patch $1A643 "You saved " $00

%patch $8726  [$2ED9W]
%patch $1A659 " cities!" $00

%patch $872B  [$2EE2W]
%patch $1A662 " city!" $00

%patch $8712  [$2ECEW]
%patch $1A64E "no cities!" $00


The variable scanned can also be patched so that the high scores counts something else. By default it is the 'cities saved' variable increased every time a Tantalus Ray is destroyed.

Keen 2 cities saved variable

#Keen 2 cities saved variable
%patch $870C {$D47EW}  [$00] {$75} #If 0 cities saved print 'no cities' and finish, else print # of cities saved then,
%patch $8720 {$D47EW}  [$01] {$7E} #If >1 cities saved print 'cities' else print 'city'


First, second, etc place text

The text for what place the player gets is called in a complicated manner. By default a string of a certain length is called at the start. The player's place then defines where the game starts reading the text, reading until the first $00. This effectively 'cuts' the string into smaller segments. By default

As such only three variables are needed, the location of the score position text string, the length of that string and the length of the segments it is divided into.

Keen 1 First, second, etc place text

#Text called from
%patch $8AFE  [$2AC3W]

#Total length of text to read (= 7 * following value)
%patch $8B01  [$0031W]

#Length of 'first' 'second' etc texts
%patch $8CCA $07

#Texts
%patch $15B13 "first" $00 $00
%patch $15B1A "second" $00
%patch $15B21 "third"  $00 $00
%patch $15B28 "fourth" $00
%patch $15B2F "fifth"  $00 $00
%patch $15B36 "sixth"  $00 $00
%patch $15B3D "last"   $00 $00 $00

Keen 2 First, second, etc place text

#Text called from
%patch $85B5  [$2DA2W]

#Total length of text to read (= 7 * following value)
%patch $85B9  [$0031W]

#Length of 'first' 'second' etc texts
%patch $8758 $07

#Texts
%patch $1A522 "first" $00 $00
%patch $19529 "second" $00
%patch $19530 "third"  $00 $00
%patch $19537 "fourth" $00
%patch $1953E "fifth" $00 $00
%patch $19545 "sixth" $00 $00
%patch $1954C "last" $00 $00 $00

Keen 3 First, second, etc place text

#Text called from
%patch $9488  [$2E44W]

#Total length of text to read (= 7 * following value)
%patch $948C  [$0031W]

#Length of 'first' 'second' etc texts
%patch $95B5 $07

#Texts
%patch $15B13 "first" $00
%patch $1C664 "first"
%patch $1C668 "second"
%patch $1C672 "third" 
%patch $1C679 "fourth"
%patch $1C680 "fifth"
%patch $1C687 "sixth"
%patch $1C68E "last"


Maximum length of high score name

The player's high score name cannot be of any length; it must be equal or less than a certain number of characters. This patch controls that maximum length. Note that if the length is made longer than 12 characters problems will occur with saving the name to the SCORES.CKx file.

Maximum length of high score name

#Maximum length of high score name -Keen 1
%patch $8D8C $0C

#Maximum length of high score name -Keen 2
%patch $881A $0C

#Maximum length of high score name -Keen 3
%patch $9674 $0C