.MTT1 LDA SSPR \ If we are outside the space station's safe zone, skip BEQ P%+5 \ the following instruction .MLOOPS JMP MLOOP \ Jump to MLOOP to skip the following 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) ASL A \ Double A to a maximum of 80 or 140 LDX MANY+COPS \ If there are no cops in the local bubble, skip the BEQ P%+5 \ next instruction ORA FIST \ There are cops in the vicinity and we've got a hold \ full of jail time, so OR the value in A with FIST to \ get a new value that is at least as high as both \ values, to reflect the fact that they have almost \ certainly scanned our ship STA T \ Store our badness level in T JSR Ze \ Call Ze to initialise INWK to a potentially hostile \ ship, and set A and X to random values \ \ Note that because Ze uses the value of X returned by \ DORND, and X contains the value of A returned by the \ previous call to DORND, this does not set the new ship \ to a totally random location \ --- Mod: Code removed for Elite-A: ------------------> \CMP T \ If the random value in A >= our badness level, which \BCS P%+7 \ will be the case unless we have been really, really \ \ bad, then skip the following two instructions (so \ \ if we are really bad, there's a higher chance of \ \ spawning a cop, otherwise we got away with it, for \ \ now) \ \LDA #COPS \ Add a new police ship to the local bubble \JSR NWSHP \ --- And replaced by: --------------------------------> CMP T \ If the random value in A >= our badness level, which BCS P%+8 \ will be the case unless we have been really, really \ bad, then skip the following three instructions (so \ if we are really bad, there's a higher chance of \ spawning a cop, otherwise we got away with it, for \ now) LDA #COPS \ Set A to the ship type for a cop, so the following \ call to hordes will spawn a pack of cops .horde_plain LDX #0 \ Jump to hordes to spawn a pack of ships of type A, BEQ hordes \ returning from the subroutine using a tail call (the \ BEQ is effectively a JMP as X is always zero) \ --- End of replacement ------------------------------> LDA MANY+COPS \ If we now have at least one cop in the local bubble, BNE MLOOPS \ jump down to MLOOPS to stop spawning, otherwise fall \ through into the next part to look at spawning \ something elseName: Main game loop (Part 3 of 6) [Show more] Type: Subroutine Category: Main loop Summary: Potentially spawn a cop, particularly if we've been bad Deep dive: Program flow of the main game loop Ship data blocks Fixing ship positionsContext: See this subroutine in context in the source code References: No direct references to this subroutine in this source file
This section covers the following: * Potentially spawn a cop (in a Viper), very rarely if we have been good, more often if have been naughty, and very often if we have been properly bad
[X]
Configuration variable COPS = 16
Ship blueprint position for the cop
[X]
Entry point MLOOP in subroutine Main game loop (Part 5 of 6) (category: Main loop)
The entry point for the main game loop. This entry point comes after the call to the main flight loop and spawning routines, so it marks the start of the main game loop for when we are docked (as we don't need to call the main flight loop or spawning routines if we aren't in space)
[X]
Label MLOOPS is local to this routine
[X]
Subroutine Ze (category: Universe)
Initialise the INWK workspace to a hostile ship
[X]
Entry point hordes in subroutine Main game loop (Part 4 of 6) (category: Main loop)
Spawn a pack of ships, made up of ships from type A to type A + X, with the pack size normally being one to four ships, but rarely being up to eight ships