Skip to navigation


Flight: TT18

[Commodore 64 version]

Name: TT18 [Show more] Type: Subroutine Category: Flight Summary: Try to initiate a jump into hyperspace
Context: See this subroutine in context in the source code References: This subroutine is called as follows: * TT102 calls TT18

Try to go through hyperspace. Called from TT102 in the main loop when the hyperspace countdown has finished.
.TT18 LDA QQ14 ; Subtract the distance to the selected system (in QQ8) SEC ; from the amount of fuel in our tank (in QQ14) into A SBC QQ8 BCS P%+4 ; If the subtraction didn't overflow, skip the next ; instruction LDA #0 ; The subtraction overflowed, so set A = 0 so we don't ; end up with a negative amount of fuel STA QQ14 ; Store the updated fuel amount in QQ14 LDA QQ11 ; If the current view is not a space view, jump to ee5 BNE ee5 ; to skip the following JSR TT66 ; Clear the top part of the screen, draw a border box, ; and set the current view type in QQ11 to 0 (space ; view) JSR LL164 ; Call LL164 to show the hyperspace tunnel and make the ; hyperspace sound .ee5 JSR CTRL ; Scan the keyboard to see if CTRL is currently pressed, ; returning a negative value in A if it is AND PATG ; If the game is configured to show the author's names ; on the start-up screen, then PATG will contain $FF, ; otherwise it will be 0 BMI ptg ; By now, A will be negative if we are holding down CTRL ; and author names are configured, which is what we have ; to do in order to trigger a manual mis-jump, so jump ; to ptg to do a mis-jump (ptg not only mis-jumps, but ; updates the competition flags, so Acornsoft could tell ; from the competition code whether this feature had ; been used) JSR DORND ; Set A and X to random numbers CMP #253 ; If A >= 253 (0.78% chance) then jump to MJP to trigger BCS MJP ; a mis-jump into witchspace ;JSR TT111 ; This instruction is commented out in the original ; source. It finds the closest system to coordinates ; (QQ9, QQ10), but we don't need to do this as the ; crosshairs will already be on a system by this point JSR hyp1+3 ; Jump straight to the system at (QQ9, QQ10) without ; first calculating which system is closest JSR RES2 ; Reset a number of flight variables and workspaces JSR SOLAR ; Halve our legal status, update the missile indicators, ; and set up data blocks and slots for the planet and ; sun ;JSR CATLOD ; These instructions are commented out in the original ;JSR LOMOD ; source LDA QQ11 ; If the current view in QQ11 is not a space view (0) or AND #%00111111 ; one of the charts (64 or 128), return from the BNE RTS111 ; subroutine (as RTS111 contains an RTS) JSR TTX66 ; Otherwise clear the screen and draw a border box LDA QQ11 ; If the current view is one of the charts, jump to BNE TT114 ; TT114 (from which we jump to the correct routine to ; display the chart) INC QQ11 ; This is a space view, so increment QQ11 to 1 ; Fall through into TT110 to show the front space view