Patch:Ending sequence (Keen 1)

From KeenWiki
Jump to navigation Jump to search

An ending sequence is a series of events that occur after the main game is completed. It ends with an entry or view of the high scores and a return to the main menu. Each game has its own unique ending sequence. This page lists patches relating to the ending sequence of Keen 1. This sequence starts after Keen has acquired all four Ship Parts.

Patches relating to ending sequences in general can be found at Patch:Ending sequence.

The patches on this page are organized chronologically, that is, those that affect things that happen early on in the ending sequence will appear first. Several patches may also be found on other pages.


Ending Sequence in general

These patches affect the starting of the ending sequence and the ending sequence in general.


What is needed to win the game

This is what is required to trigger the ending sequence when Keen exits a level. By default Keen must have all four Ship Parts, that is, the value for these game stats must not be 0. (See also Patch:Jump conditions.) To make a part unnecessary simply replace $74 with $90 $90. If all four parts are treated this way, Keen will win the game on exiting any level.

Keen 1

#What we need before we can win: (Default: win if all 4 NOT 0)
%patch $8022 {$AA94W} [$00] {$74} #Joystick
%patch $8029 {$AA9CW} [$00] {$74} #Battery
%patch $8030 {$AA96W} [$00] {$74} #Vacuum
%patch $8037 {$AA98W} [$00] {$74} #Whiskey


Don't need parts to win game

The following patches eliminate some or all of the parts needed to win the game. If all four parts are removed the Keen will win the game as soon as he exits a level. Parts are eliminated in reverse order. (The first to go is the Whiskey, then the Vacuum and so on.) Only one patch of the four can be used.

Keen 1

#What we need before we can win:
%patch $8020 $EB $1A #No parts
%patch $8027 $EB $13 #1 part
%patch $802E $EB $0C #2 parts
%patch $8035 $EB $05 #3 parts


Keen can win game if he has enough points

This patch allows Keen to win the game if he exits a level with more than a certain number of points. (In this example 150 or $0096W). There is a limit to this patch; if Keen acquires more than 65536 points the score variable will 'wrap around' (That is this really checks the score mod 65536.)

Keen 1

#Keen can win game if he has enough points
%patch $8020 $81 $3E {$AACAW}  [$0096W] {$7C} $1D $EB $12


Skip parts of sequence

These patches cause parts of the ending sequence to be skipped, making the whole sequence shorter.


Skip entire sequence, goto Game Over\High Scores

This patch removes the ending sequence entirely; the player is simply confronted with a Game Over or High Scores box depending on whether they got a high enough score. The screen will not shift from where they won the game.

Keen 1

#Ignore ending sequence, go to game over\high scores
%patch $803D $EC0AW


Skip Mars Map sequence

This patch skips the mars map sequence. Instead Keen goes directly to the flight to Earth sequence.

Keen 1

#Skip Mars map sequence
%patch $81C9 $E9 $0086W
%patch $825B $EB $07


Skip Mars map and flight to Earth sequence

This patch, which also may be unstable (but has been tested extensively.), skips the sequence of text boxes that occur on the Mars map, as well as Keen's ship flying to Earth. That is, the ending sequence starts directly at Keen's house.

Keen 1

#No flight to Earth or mars map sequence
%patch $81A3 $02


Skip flight to Earth and Keen's house sequences (Go from Mars to Endtext)

This patch takes Keen directly from the Mars map textbox sequence to the endtext sequence, skipping the flight to Earth and house sequences. As a side effect the endtext, and game over (and enter high score name box if the player gets a high score) will appear over the Mars map. Also the duration of the mars map sequence is altered, so this is included with the patch as an optional extra.

Keen 1

#Go directly from Mars map sequence to Endtext (Frees $8256-$88D1)
%patch $8252 $E9 $067DW

#How long Mars textbox waits
%patch $88D3 [$0190W]


Skip Mothership investigation sequence

This patch causes the BWB to go straight to Earth, ignoring the Vorticon Mothership (Though it will fly to the mothership after the house sequence.)

Keen 1

#Skip Vorticon Mothership sequence
%patch $83D5 $E9 $00D1W
%patch $83D1 $005CW
%patch $8514 $90 $90


Don't return to mothership

This patch (which may be unstable) stops Keen returning to the Vorticon Mothership after the events at his house. keen's ship thus remains on Earth.

Keen 1

#After house text, Keen doesn't leave Earth
%patch $81B2 $90


Skip Keen's house sequence

This patch skips the Keen's house sequence. Instead the BWB lands on Earth, turns around and goes to the Mothership.

Keen 1

#Skip Keen's house sequence
%patch $853C $E9 $0294W
%patch $851F $90 $90 $90
%patch $8815 $90 $90 $90


Text writing speed

This patch alters how fast text appears in text boxes in the ending sequence. by default one new letter appears every 6 ticks of game time. Thus, making this value larger slows how fast text is written. It is likely a modder would prefer a quicker writing speed, maybe even instantaneous.

Keen 1

#Text writing speed
%patch $8173 [$0006W]


All text appears instantly

This patch makes all text appear in text boxes instantly, like the 'What is this green thing in your room' text at Keen's house.

Keen 1

#All text appears instantly
%patch $8172 $EB $07


Black screen pause before ending sequence

This is how long the screen remains black before the ending sequence. It is inserted into the ending sequence to give a feeling of suspense as the player wonders what happens next. It is however almost superfluous and most players probably do not realize it exists at all. The shortest this can be is $0004W ticks long, otherwise the game will crash. Shortening this makes the ending sequence's arrival seem much more immediate and active.

Keen 1

#Black screen pause before ending sequence
%patch $820D [$012CW]


No black screen pause

This patch removes the black screen pause entirely, instead a simple fade-out\fade-in changes the screen to the map level.

Keen 1

#No black screen pause before ending sequence
%patch $820C $EB $07


Mars Map sequence

This is the first part of the ending sequence proper and involves by default Keen appearing next to his ship on the map.


Mars map location and level

These patches affect where the Mars Map sequence of text boxes occur. By default the map level is used (level 80), but any other level, even a totally unique one just for the ending sequence can be used.

The position of events is treated rather uniquely; both x and y position, in tiles are given, however they must be worked out in a very odd way. There are two values for each, the first is a number of tiles * $10, the second a number of tiles that needs to be multiplied by $10. As an example the vertical location of $23 tiles down is $30/$10 + $02 * $10 = $03 + $20. If this is confusing, then just fiddling with the values until a desired result is obtained works.

Keen 1

#Level used
%patch $81CA  [80]

Keen 1

#Level position coordinates
%patch $81D7 [$30]     #x position (x10)
%patch $81DD [$00]     #x position (Total 0-3 = $03 tiles)
%patch $81E2 [$30]     #Y position (x10)
%patch $81E8 [$02]     #Y position (Total 2-3 = $23 tiles)


Don't change level on ending

This patch makes the Mars map textbox appear in the exact location the player won the game. Keen's map sprite will not be shown.

Keen 1

#Don't change level on ending
%patch $8209 $90 $90 $90


Mars map sprite

This is the sprite shown during the Mars map sequence. It is map Keen facing left, but can be anything else as well. The position of the sprite is treated similar to the level location; both x and y position, in tiles are given, however they are worked out as a number of tiles * $10. If this is confusing, then just fiddling with the values until a desired result is obtained works.

Keen 1

#Sprite shown (Map Keen facing left)
%patch $81F1  40

#Sprite position coordinates
%patch $81F9 [$70]     #x position (x10)
%patch $8200 [$D0]     #Y position (x10)


Don't show Keen during map sequence

This patch stops any sprite appearing on the screen during the map ending sequence.

Keen 1

#Don't show Keen on the map ending sequence
%patch $8203 $90 $90 $90


Map text box and text

These patches relate to the size, position and content of the text box that appears on the Mars map portion of the ending sequence. The size and location of the box are given by four variables, each defining one corner of the text box. The box contains four lines of text. (See Patch:Text patches.) There is also a 'duration' variable that defines how long the textbox is visible (After text has stopped writing) before the screen fades and the flight to Earth sequence begins.

Keen 1

#Map textbox:
%patch $825C [$00F0W] #Duration
%patch $821E [$000FW] #Top
%patch $8216 [$0014W] #Bottom
%patch $821A [$002AW] #Right side
%patch $8222 [$0005W] #left side
%patch $822F [$2BD4W] #First line of text read from
%patch $8238 [$2BF9W] #Second line of text read from
%patch $8241 [$2C1CW] #Third line of text read from
%patch $824A [$2C41W] #Fourth line of text read from

%patch $15C24 "Commander Keen returns to the Bean-" $0A $00
%patch $15C49 "with-Bacon Megarocket and quickly" $0A $00
%patch $15C6C "replaces the missing parts. He must" $0A $00
%patch $15C91 "get home before his parents do!" $00


Pause before textbox appears on map

This patch inserts a pause between when the map level appears and when the map textbox appears on it. As a side effect however the 'black screen pause' mentioned above is removed, meaning the screen jumps directly to the map level, which can be jarring. The pause length is the blue variable.

Keen 1

#Pause map before map box appears
%patch $81EB $EA5CW
%patch $822B $90 $90 $90
%patch $820D [$004CW]


Flight to Earth sequence

This sequence occurs after the Mars Map sequence. It involves Keen flying from Mars to earth. The sequence is then interrupted by Keen's House sequence, before continuing as Keen flies tot he Vorticon Mothership. These patches thus affect things that happen before and after Keen's House sequence.


Flight to Earth level

These patches affect where the Flight to Earth sequence of text boxes occur. By default a unique level is used (level 81), but any other level can be used.

Keen 1

#Flight to Earth level
%patch $8253  81


Rocket sprite, position and movement times

The rocket sprite's start location is given based on the current screen location. (By default this is 0,0 in the level.) It has vertical and horizontal components each of which has a x10 and x1 component. Values are in pixels so the default start location is $64,$50 or 6.25,5 tiles from the top-left of the screen.

Both the rocket sprite and screen speeds are not connected. Each has a horizontal and vertical component.

There are four different sprite images used in this sequence, Keen's rocket facing right and left, a '?' sprite and a '!' sprite. These are not *real* sprites as appear in levels, but rather a series of images that only appear to be connected.

As well as patches affect what images are shown, there are also patches here affecting how they move and for how long, as well as some misc patches that fit here.

Keen 1

#Rocket start location
%patch $828E [$64]     #x position (x10)
%patch $8293 [$00]     #x position (x1)
%patch $8298 [$50]     #Y position (x10)
%patch $829D [$00]     #Y position (x1)

#Rocket going up off Mars
%patch $82D0 [$0073W] #Sprite used
%patch $82E9 [$0004W] #Speed going up (Higher = slower)

#Rocket go to Earth, screen doesn't move
%patch $8328 [$0073W] #Sprite used
%patch $8316 [$03]    #Rocket left movement speed
%patch $831F [$01]    #Rocket down movement speed
%patch $8344 [$0014W] #Length of screen still phase

#Rocket going to Earth, screen moves
%patch $8376 [$0073W] #Sprite used
%patch $834F [$03]    #Screen left movement speed
%patch $835A [$01]    #Screen down movement speed
%patch $8364 [$03]    #Rocket left movement speed
%patch $836D [$01]    #Rocket down movement speed
%patch $8392 [$00C8W] #Length of screen moving phase

#Rocket going to Earth, screen doesn't move 2
%patch $83B5 [$0073W] #Sprite used
%patch $839C [$03]    #Rocket left movement speed
%patch $83AB [$01]    #Rocket down movement speed
%patch $83D1 [$003CW] #Length of rocket moving down phase

#Rocket landed
%patch $83D6 [$0014W] #Pause between reaching Earth and ? appearing
%patch $83E4 [$0073W] #Sprite used for rocket when ? appears
%patch $83FA [$0076W] #? sprite
%patch $8428 [$001EW] #How long ? appears and rocket is still
%patch $8404 [$0014W] #? appears on top of rocket

#Rocket heads to investigate Vorticon Mothership
%patch $843B [$0074W] #Sprite used for rocket going to Vorticon Mothership
%patch $8457 [$0032W] #Length of rocket moving toward Vorticon Mothership phase

#Keen surprised at Vorticon Mothership
%patch $8461 [$0074W] #Sprite used for rocket when ! appears
%patch $8477 [$0075W] #! sprite
%patch $84A5 [$001EW] #Length of ! and rocket staying still pahase
%patch $8481 [$0014W] #! appears on top of rocket

#Rocket returns to Earth
%patch $84DF [$0073W] #Rocket landing on Earth sprite
%patch $8517 [$003CW] #Pause between rocket landing and Keen's house phase


Rocket's speed details

While the rocket uses basic patches for large sections of its movement, at times a more precise control is used. In this case the precise horizontal and vertical speeds, in pixels,a re read from a series of lists. These lists consist of a series of H and V speeds, each 'entry' four bytes long. Positive values are down and right while negative ones are up and left.

The lists are loaded at the start of the ending sequence and switched between at odd times. The lists are also interrupted by simple rocket movements. As an example the first list is used to move the rocket up from Mars. It is then interrupted by the rocket heading to Earth. The second list starts after the BWB heads down to Earth and moves it to investigate the mothership. The third list leaves the mothership and returns to Earth before being interrupted by the house sequence, after which is returns the BWB to the mothership.

The length of the lists can limit the infer BWB motions and also speed up the ending sequence.

Keen 1

#1st BWB list- Flight to Earth
%patch $819B [$292EW] #Location
%patch $819F [$003CW] #Length

#1st list directions -up from Mars
%patch $1597E $0000W $FFFDW  $0000W $FFFDW  $0000W $FFFDW  $0000W $FFFDW
              $0000W $FFFDW  $0000W $FFFDW  $0000W $FFFDW  $0000W $FFFDW
              $0000W $FFFDW  $0000W $FFFDW  $0003W $FFFDW  $0003W $FFFEW
              $0003W $FFFFW  $0003W $0000W  $0000W $0000W


#2nd BWB list
%patch $81AC [$296AW] #Location
%patch $81B0 [$00ACW] #Length

#2nd list directions -Flight to mothership
%patch $159BA $FFFDW $FFFDW  $FFFDW $FFFDW  $FFFDW $FFFDW  $FFFDW $FFFDW
              $FFFDW $FFFDW  $FFFDW $FFFDW  $FFFDW $FFFDW  $FFFDW $FFFDW
              $FFFDW $FFFEW  $FFFDW $FFFEW  $FFFDW $FFFEW  $FFFDW $FFFEW
              $FFFDW $FFFEW  $FFFDW $FFFEW  $FFFDW $FFFEW  $FFFDW $FFFEW
              $FFFDW $FFFFW  $FFFDW $FFFFW  $FFFDW $FFFFW  $FFFDW $FFFFW
              $FFFDW $FFFFW  $FFFDW $FFFFW  $FFFDW $FFFFW  $FFFDW $FFFFW
              $FFFDW $0000W  $FFFDW $0000W  $FFFDW $0000W  $FFFDW $0000W
              $FFFDW $0000W  $FFFDW $0000W  $FFFDW $0000W  $FFFDW $0001W
              $FFFDW $0001W  $FFFDW $0002W  $FFFDW $0002W  $FFFCW $0002W
              $FFFCW $0002W  $FFFCW $0002W  $FFFCW $0002W  $FFFCW $0003W
              $FFFDW $0003W  $FFFEW $0003W  $0000W $0000W


#3rd BWB list -From Mothership to Earth
%patch $81BD [$2A16W] #Location
%patch $81C1 [$00A0W] #Length

#3rd list -return to mothership
%patch $15A66 $0003W $FFFFW  $0003W $FFFFW  $0003W $FFFEW  $0003W $FFFEW
              $0003W $FFFEW  $0003W $FFFEW  $0003W $FFFEW  $0003W $FFFEW
              $0003W $0000W  $0003W $0000W  $0003W $0000W  $0003W $0000W
              $0003W $0000W  $0003W $0000W  $0003W $0000W  $0003W $0001W
              $0003W $0001W  $0003W $0001W  $0003W $0001W  $0003W $0001W
              $0003W $0001W  $0003W $0001W  $0003W $0001W  $0003W $0002W
              $0003W $0002W  $0003W $0002W  $0003W $0002W  $0003W $0002W
              $0003W $0002W  $0003W $0002W  $0003W $0002W  $0002W $0002W
              $0001W $0002W  $0001W $0002W  $0001W $0002W  $0001W $0002W
              $0001W $0002W  $0001W $0002W  $0001W $0002W  $0000W $0000W


Don't draw sprites

These patches stop the rocket and other sprites appearing at certain times.

Keen 1

#Don't draw...
%patch $82CF $EB $14 #Rocket rising off Mars
%patch $8327 $EB $14 #Rocket going to Earth -screen still
%patch $8375 $EB $14 #Rocket going to Earth -screen moves
%patch $83B4 $EB $14 #Rocket going to Earth -screen still 2
%patch $83E3 $EB $14 #Rocket with '?'
%patch $83F9 $EB $26 #'?'
%patch $843A $EB $14 #Rocket heads to mothership
%patch $8460 $EB $14 #Rocket with '1'
%patch $8476 $EB $26 #'!'
%patch $84DE $EB $14 #Rocket heads to Earth


Keen's House sequence

This covers everything from when the FINALE.CK1 image is loaded to the 'to be continued' text box. All of it is shown over the finale image.


Finale file

This is the file that contains the fullscreen image displayed during this entire sequence. The game calls a line of text, then attempts to open that file. Note that the file extension can be whatever is desired. This is also similar to a text patch.

Keen 1

#At Keen's house...
%patch $853D  [$2C62W]       #Finale file name called from
%patch $15CB2 "FINALE.CK1" #Finale graphics name


Number of text boxes

It is possible to patch out any number of textboxes up to having only the first textbox appear. Only one line of the following set of patches needs to be used. The second textbox is the first to be removed, then the third, fourth and so on until only the first textbox remains. This patch also removes any of the associated bitmap and sound stuff with a textbox. Patches that remove textboxes individually can be found in the following section.

Keen 1

#Number of textboxes
%patch $8582 $E9 $00AFW #7
%patch $8582 $E9 $00F2W #6
%patch $8582 $E9 $0126W #5
%patch $8582 $E9 $0163W #4
%patch $8582 $E9 $018EW #3
%patch $8582 $E9 $01F6W #2
%patch $8582 $E9 $024BW #1


Text boxes, bitmaps and sounds

Text boxes appear during the sequence. Each one needs its four corners defined, where its text is read from, the text itself and the time visible before it is removed. When a textbox is removed it leaves behind a black space.

Values for the locations of corners are in 8x8 blocks. A textbox must be wide enough to contain the text in it and its bottom\right values must be larger than its top\left values. The width\height in letters\8x8 blocks is obviously (top\left) - (right\bottom) Text boxes evidently involve Text patches

If a value of $2C6CW is used for the 'text read from' value will result in no text being displayed for that line. This is useful if you want to reduce all the text in one window into a single line, as occurs in Keen 4-6. (This makes patches easier, since you don't have to alter all the read from values and text patches just to fix one line.)

During the ending sequence bitmaps are placed over the screen. These are not removed like the text windows. Like text windows the can be placed anywhere on the screen. Any bitmaps can be used, though by default only two are. Their placement is identical to text windows (That is, in 8x8 blocks.) A bitmap needs three values, the image used, the sound used and the x co-ordinate of its position. (The y co-ordinate is always 0 sadly.) There is also the length of time before the bitmap appears or before the next text window appears.

By default the bitmaps are places in the same location, covering each other up, though this is not necessary. Pauses CANNOT be zero, they must be at least 4 long.

First textbox

#Size:
%patch $8546 [$13]    #Bottom
%patch $854A [$1B]    #Right side
%patch $854E [$0F]    #Top
%patch $8552 [$04]    #Left
%patch $857A [$0078W] #Time visible

#Text read from:
%patch $855F {$2C6DW $EB $10}

#Text:
%patch $15CBD "Keen makes it home and" $0A
              "rushes to beat his" $0A
              "parents upstairs." $00

Bitmap stuff

#First bitmap
%patch $8586 [$003CW] #Pause between textbox going and bitmap appearing
%patch $858F [$0C]    #Bitmap used ('light on')
%patch $8596 [$0E]    #x-location
%patch $85A0 [$19]    #Sound played

%patch $8599 $90 $90 $90 #Don't show bitmap
%patch $85A3 $90 $90 $90 #Don't play sound

#Second bitmap
%patch $85A9 [$0078W] #Pause before next bitmap appears 
%patch $85B2 [$0D]    #Bitmap used ('light off')
%patch $85B9 [$0E]    #x-location
%patch $85C3 [$19]    #Sound played
%patch $85CC [$012CW] #Pause before second textbox appears

%patch $85BC $90 $90 $90 #Don't show bitmap
%patch $85CF $90 $90 $90 #Don't play sound

#Skip both bitmaps
%patch $8582 $E9 $004FW

Second textbox

#Size:
%patch $85D5 [$13]    #Bottom
%patch $85D9 [$1B]    #Right side
%patch $85DD [$0F]    #Top
%patch $85E1 [$04]    #Left
%patch $8606 [$00B4W] #Time visible

#Text read from:
%patch $85EB {$2CABW} $EB $10

#Text:
%patch $15CFB "Shhh, honey...let's" $0A
              "see if little Billy" $0A
              "is asleep." $00

Bitmap stuff

#Third bitmap
%patch $8612 [$003CW] #Pause between textbox going and bitmap appearing
%patch $861B [$0C]    #Bitmap used ('light on')
%patch $8622 [$0E]    #x-location
%patch $862C [$19]    #Sound played

%patch $8625 $90 $90 $90 #Don't show bitmap
%patch $862F $90 $90 $90 #Don't play sound


Third textbox

#Size:
%patch $8635 [$14]    #Bottom
%patch $8639 [$1B]    #Right side
%patch $863D [$0F]    #Top
%patch $8641 [$04]    #Left
%patch $866F [$00F0W] #Time visible

#Text read from:
%patch $864B {$2CE0W}
%patch $8654 {$2CF7W}
%patch $865D {$2D0EW}
%patch $8666 {$2D23W}

#Text:
%patch $15D30 "Billy...? Are you a--" $0A $00
%patch $15D47 "WHAT IS THIS ONE-EYED" $0A $00 #Text jump
%patch $15D5E "GREEN THING IN YOUR" $0A $00
%patch $15D73 "ROOM!!!!???" $00


#Stop 3rd textbox appearing
%patch $8634 $EB $40

#Stop 3rd, 4th textbox appearing
%patch $8634 $EB $75

Fourth textbox

#Size:
%patch $867B [$12]    #Bottom
%patch $867F [$1B]    #Right side
%patch $8683 [$0F]    #Top
%patch $8687 [$04]    #Left
%patch $86A3 [$00B4W] #Time visible

#Text read from:
%patch $8691 {$2D30W}
%patch $869A {$2D42W}

#Text
%patch $15D80 "Aw, Mom, can't I" $0A $00
%patch $15D92 "keep him?" $00


#Stop 4th textbox appearing
%patch $8677 $EB $31

Fifth textbox

#Size:
%patch $86AF [$13]    #Bottom
%patch $86B3 [$1D]    #Right side
%patch $86B7 [$0F]    #Top
%patch $8687 [$04]    #Left
%patch $86E0 [$00B4W] #Time visible

#Text read from:
%patch $86C5 {$2D4CW}
%patch $86CE {$2D64W}
%patch $86D7 {$2D7AW}

#Text
%patch $15D9C "Well, we'll talk about" $0A $00
%patch $15DB4 "that in the morning," $0A $00
%patch $15DCA "son. You get some rest." $00


#Stop 5th textbox appearing
%patch $86AE $EB $3A

Sixth textbox

#Size:
%patch $86EC [$11]    #Bottom
%patch $86F0 [$1B]    #Right side
%patch $86F4 [$0F]    #Top
%patch $86F8 [$04]    #Left
%patch $870B [$00B4W] #Time visible

#Text read from:
%patch $8702 {$2D92W}

#Text
%patch $15DE2 "Ok, Mom. Goodnight." $00

#Stop 6th textbox appearing
%patch $86EB $EB $25

#Stop 6th, 7th textbox appearing
%patch $86EB $EB $4E

Seventh textbox

#Size:
%patch $8714 [$11]    #Bottom
%patch $8718 [$1B]    #Right side
%patch $871C [$0F]    #Top
%patch $8720 [$04]    #Left
%patch $8733 [$00B4W] #Time visible

#Text read from:
%patch $872A {$2DA6W}

#Text
%patch $15DF6 "Goodnight, dear." $00

#Stop 7th textbox appearing
%patch $8713 $EB $25

Bitmap stuff

#Fourth bitmap
%patch $873F [$003CW] #Pause between textbox going and bitmap appearing
%patch $8748 [$0D]    #Bitmap used ('light off')
%patch $874F [$0E]    #x-location
%patch $8759 [$19]    #Sound played

%patch $8752 $90 $90 $90 #Don't show bitmap
%patch $875C $90 $90 $90 #Don't play sound

#Fifth bitmap
%patch $8762 [$012CW] #Pause between fourth bitmap appearing and fifth bitmap
%patch $876B [$0C]    #Bitmap used ('light off')
%patch $8772 [$0E]    #x-location
%patch $8792 [$19]    #Sound played (Part of eighth textbox!)

%patch $8775 $90 $90 $90 #Don't show bitmap
%patch $8795 $90 $90 $90 #Don't play sound

Eighth textbox

#Size:
%patch $877C [$15]    #Bottom
%patch $8780 [$1D]    #Right side
%patch $8784 [$0F]    #Top
%patch $8788 [$04]    #Left
%patch $87C8 [$012CW] #Time visible

#Text read from:
%patch $879B {$2DB7W} $EB $22

#Text
%patch $15E07 "But there is no sleep" $0A
              "for Commander Keen! The" $0A
              "Vorticon Mothership" $0A
              "looms above, ready to" $0A
              "destroy Earth!" $00

#Stop eighth textbox appearing
%patch $877B $EB $53


Continued sequence

This covers everything from the reappearance of Keen's rocket to returning to the main menu.


BWB visits Mothership

The first thing that happens is a screen that, by default, looks identical to that at the end of the 'flight to Earth' sequence appears. Keen's BWB moves from Earth to the Vorticon Mothership. In reality the screen is reloaded. While the location is the same as the end of the 'flight to Earth' sequence the level and sprites shown are new.

The sequence is composed of two basic parts. Firstly the BWB is on Earth for a time before rising and moving left. (No movement patches are known at present.) Then it moves down and lands on the Mothership, lands and there is a pause before the textbox appears.

Keen 1

#Keen leaves
%patch $87D4 [81]     #Level (Located at last location of rocket sprite in FTE sequence)
%patch $87FD [$74]    #Rocket sprite shown on Earth
%patch $8819 [$001EW] #How long ship stays on Earth

#Keen lands
%patch $8857 [$74]    #Sprite for rocket traveling to Mothership
%patch $8892 [$73]    #Sprite for rocket LANDED on Mothership
%patch $88AB [$003CW] #Pause between ship landing and textbox appearing


Don't draw sprites

These patches prevent the BWB appearing at certain times.

Keen 1

#Don't draw...
%patch $87FC $EB $14 #Rocket on Earth
%patch $8856 $EB $14 #Rocket heading to mothership
%patch $8891 $EB $14 #Rocket on mothership


To Be Continued textbox

This textbox appears onscreen after Keen's BWB lands on the Vorticon Mothership. After it disappears the endtext is shown.

Continued textbox

#Size:
%patch $88B4 [$05]    #Bottom
%patch $88B8 [$20]    #Right side
%patch $88BC [$03]    #Top
%patch $88C0 [$0C]    #Left
%patch $88D3 [$0190W] #Time visible

#Text read from:
%patch $88CA {$2E22W}

#Text
%patch $15E72 "TO BE CONTINUED...." $00


End text

This is the final screen, appearing over the Flight to Earth level. It is a text window and covered under Patch:Large text files. When this is exited the game over will appear and Keen can possibly enter his name into the high scores.

The end text window appears with a specific sound and is a specific height. It also seems to reload a level.

Keen 1

#Endtext:
%patch $88F7 [$29] #Sound for endtext appearing
%patch $8900 [$16] #Endtext window height
%patch $8922 [80]  #Endtext level (Also used for game over)