Skip to navigation

Elite on the BBC Micro and NES

Flight: TT110

[NES version, Bank 0]

Name: TT110 [Show more] Type: Subroutine Category: Flight Summary: Launch from a station or show the front space view
Context: See this subroutine in context in the source code References: This subroutine is called as follows: * Ghy calls TT110 * TT102 calls TT110

Launch the ship (if we are docked), or show the front space view (if we are already in space). new galaxy, or after a hyperspace if the current view is a space view.
.TT110 LDX QQ12 ; If we are not docked (QQ12 = 0) then jump to NLUNCH BEQ NLUNCH ; to skip the launch tunnel and setup process LDA #0 ; Set VIEW = 0 to switch to the front view STA VIEW STA QQ12 ; Set QQ12 = 0 to indicate that we are not docked LDA allowInSystemJump ; Set bit 7 of allowInSystemJump to prevent us from ORA #%10000000 ; being able to do an in-system jump, as you can't jump STA allowInSystemJump ; when you're in the space station's safe zone JSR ResetShipStatus ; Reset the ship's speed, hyperspace counter, laser ; temperature, shields and energy banks JSR NWSTARS ; Set up a new stardust field JSR LAUN ; Show the space station launch tunnel JSR RES2 ; Reset a number of flight variables and workspaces JSR UpdateSaveCount ; Update the save counter for the current commander JSR WaitForNMI ; Wait until the next NMI interrupt has passed (i.e. the ; next VBlank) INC INWK+8 ; Increment z_sign ready for the call to SOS, so the ; planet appears at a z_sign of 1 in front of us when ; we launch JSR SOS1 ; Call SOS1 to set up the planet's data block and add it ; to FRIN, where it will get put in the first slot as ; it's the first one to be added to our local bubble of ; universe following the call to RES2 above LDA #128 ; For the space station, set z_sign to $80, so it's STA INWK+8 ; behind us ($80 is negative) INC INWK+7 ; And increment z_hi, so it's only just behind us JSR NWSPS ; Add a new space station to our local bubble of ; universe LDA #12 ; Set our launch speed in DELTA to 12 STA DELTA JSR BAD ; Call BAD to work out how much illegal contraband we ; are carrying in our hold (A is up to 40 for a ; standard hold crammed with contraband, up to 70 for ; an extended cargo hold full of narcotics and slaves) ORA FIST ; OR the value in A with our legal status in FIST to ; get a new value that is at least as high as both ; values, to reflect the fact that launching with a ; hold full of contraband can only make matters worse STA FIST ; Update our legal status with the new value JSR NWSTARS ; Set up a new stardust field JSR WaitForNMI ; Wait until the next NMI interrupt has passed (i.e. the ; next VBlank) LDX #4 ; Set the current space view to 4, which indicates that STX VIEW ; we are in the process of generating a new space view .NLUNCH LDX #0 ; Set QQ12 to 0 to indicate we are not docked STX QQ12 JMP LOOK1 ; Jump to LOOK1 to switch to the front view (X = 0), ; returning from the subroutine using a tail call