.SetEngine CMP engineStatus \ If the value of engineStatus is already the same as A, BEQ seng3 \ jump to seng3 to return from the subroutine STA engineStatus \ Update the value of engineStatus to the new status in \ A TAX \ Either turn the engine sound off (if A = 0) or turn it JSR ToggleEngineSound \ on (if A is non-zero) LDA forceFactor+5 \ Set A to the force factor for zLiftDrag LDX engineStatus \ If the engine is now on, jump to seng1 BNE seng1 CLC \ Set A = A + 20 ADC #20 \ \ so having the engine off increases drag BNE seng2 \ Jump to seng2 (this BNE is effectively a JMP as A is \ never zero) .seng1 SEC \ Set A = A - 20 SBC #20 \ \ so having the engine on decreases drag .seng2 STA forceFactor+5 \ Update the force factor for zLiftDrag, so it is \ incremented by 20 when the engine is off, and reduced \ by 20 when the engine is on, i.e. having the engine \ off increases drag .seng3 RTS \ Return from the subroutineName: SetEngine [Show more] Type: Subroutine Category: Flight model Summary: Set the engine statusContext: See this subroutine in context in the source code References: This subroutine is called as follows: * ApplyFlightModel (Part 7 of 7) calls SetEngine * MainLoop (Part 11 of 15) calls SetEngine * ProcessLanding (Part 6 of 7) calls SetEngine
Arguments: A The new status of the engine: * 0 = engine off * 1 = engine on
[X]
Subroutine ToggleEngineSound (category: Sound)
Turn the engine sound on or off
[X]
Variable engineStatus in workspace Main variable workspace
Engine status
[X]
Variable forceFactor (category: Flight model)
The factors by which the flight forces are multiplied as part of the scaling process
[X]
Label seng1 is local to this routine
[X]
Label seng2 is local to this routine
[X]
Label seng3 is local to this routine