.BRIEF LSR TP ; Set bit 0 of TP to indicate that mission 1 is now in SEC ; progress ROL TP JSR BRIS_b0 ; Call BRIS to clear the screen, display "INCOMING ; MESSAGE" and wait for 2 seconds JSR ZINF ; Call ZINF to reset the INWK ship workspace LDA #CON ; Set the ship type in TYPE to the Constrictor STA TYPE JSR NWSHP ; Add a new Constrictor to the local bubble (in this ; case, the briefing screen) JSR HideFromScanner_b1 ; Hide the ship from the scanner LDA #1 ; Move the text cursor to column 1 STA XC LDA #1 ; This instruction has no effect, as A is already 1 STA INWK+7 ; Set z_hi = 1, the distance at which we show the ; rotating ship LDA #80 ; Set z_lo = 80 to set the low byte of the distance at STA INWK+6 ; which we show the rotating ship JSR FadeAndHideSprites ; Fade the screen to black and hide all sprites, so we ; can update the screen while it's blacked-out LDA #$92 ; Clear the screen and set the view type in QQ11 to $92 JSR ChangeToView ; (Mission 1 briefing: rotating ship) LDA #64 ; Set the main loop counter to 64, so the ship rotates STA MCNT ; for 64 iterations through MVEIT .BRL1 LDX #%01111111 ; Set the ship's roll counter to a positive roll that STX INWK+29 ; doesn't dampen (a clockwise roll) STX INWK+30 ; Set the ship's pitch counter to a positive pitch that ; doesn't dampen (a diving pitch) JSR DrawShipInBitplane ; Flip the drawing bitplane and draw the current ship in ; the newly flipped bitplane JSR MVEIT ; Call MVEIT to rotate the ship in space DEC MCNT ; Decrease the counter in MCNT BNE BRL1 ; Loop back to keep moving the ship until we have done ; all 64 iterations .BRL2 LSR INWK ; Halve x_lo so the Constrictor moves towards the centre INC INWK+6 ; Increment z_lo so the Constrictor moves away from us BEQ BR2 ; If z_lo = 0 (i.e. it just went past 255), jump to BR2 ; to show the briefing INC INWK+6 ; Increment z_lo so the Constrictor moves a bit further ; away from us BEQ BR2 ; If z_lo = 0 (i.e. it just went past 255), jump out of ; the loop to BR2 to stop moving the ship up the screen ; and show the briefing LDX INWK+3 ; Set X = y_lo + 1 INX CPX #100 ; If X < 100 then skip the next instruction BCC P%+4 LDX #100 ; X is bigger than 100, so set X = 100 so that X has a ; maximum value of 100 STX INWK+3 ; Set y_lo = X ; = y_lo + 1 ; ; so the ship moves up the screen (as space coordinates ; have the y-axis going up) JSR DrawShipInBitplane ; Flip the drawing bitplane and draw the current ship in ; the newly flipped bitplane JSR MVEIT ; Call MVEIT to move and rotate the ship in space DEC MCNT ; Decrease the counter in MCNT JMP BRL2 ; Loop back to keep moving the ship up the screen and ; away from us .BR2 INC INWK+7 ; Increment z_hi, to keep the ship at the same distance ; as we just incremented z_lo past 255 LDA #$93 ; Clear the screen and set the view type in QQ11 to $93 JSR TT66 ; (Mission 1 briefing: ship and text) LDA #10 ; Set A = 10 so the call to BRP prints extended token 10 ; (the briefing for mission 1 where we find out all ; about the stolen Constrictor) JMP BRP ; Jump to BRP to print the extended token in A and show ; the Status Mode screen, returning from the subroutine ; using a tail callName: BRIEF [Show more] Type: Subroutine Category: Missions Summary: Start mission 1 and show the mission briefing Deep dive: The Constrictor missionContext: See this subroutine in context in the source code References: This subroutine is called as follows: * DOENTRY calls BRIEF
This routine does the following: * Clear the screen * Display "INCOMING MESSAGE" in the middle of the screen * Wait for 2 seconds * Clear the screen * Show the Constrictor rolling and pitching in the middle of the screen * Do this for 64 loop iterations * Move the ship away from us and up until it's near the top of the screen * Show the mission 1 briefing in extended token 10 The mission briefing ends with a "{display ship, wait for key press}" token, which calls the PAUSE routine. This continues to display the rotating ship, waiting until a key is pressed, and then removes the ship from the screen.
[X]
Label BR2 is local to this routine
[X]
Subroutine BRIS_b0 (category: Missions)
Clear the screen, display "INCOMING MESSAGE" and wait for 2 seconds
[X]
Label BRL1 is local to this routine
[X]
Label BRL2 is local to this routine
[X]
Subroutine BRP (category: Missions)
Print an extended token and show the Status Mode screen
[X]
Configuration variable CON = 31
Ship type for a Constrictor
[X]
Subroutine ChangeToView (category: Drawing the screen)
Clear the screen and set a new view type
[X]
Subroutine DrawShipInBitplane (category: Drawing ships)
Flip the drawing bitplane and draw the current ship in the newly flipped bitplane
[X]
Subroutine FadeAndHideSprites (category: Drawing sprites)
Fade the screen to black and hide all sprites
[X]
Subroutine HideFromScanner_b1 (category: Dashboard)
Call the HideFromScanner routine in ROM bank 1
[X]
Subroutine MVEIT (Part 1 of 9) (category: Moving)
Move current ship: Tidy the orientation vectors
[X]
Subroutine NWSHP (category: Universe)
Add a new ship to our local bubble of universe
[X]
Subroutine TT66 (category: Drawing the screen)
Clear the screen and set the new view type
[X]
Subroutine ZINF (category: Universe)
Reset the INWK workspace and orientation vectors