BBC Micro Elite

# Main loop: Main game loop (Part 3 of 6) (6502SP version)

```       Name: Main game loop (Part 3 of 6)                      [View in context]
Type: Subroutine
Category: Main loop
Summary: Potentially spawn a cop, particularly if we've been bad

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

* Very rarely, consider spawning a Thargoid, or vanishingly rarely, a Cougar

.MTT1

LDA SSPR               \ If we are outside the space station's safe zone, skip
BEQ P%+5               \ the following instruction

.MLOOPS

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

CMP #136               \ If the random number in A = 136 (0.4% chance), jump
BEQ fothg              \ to fothg in part 4 to spawn either a Thargoid or, very
\ rarely, a Cougar

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

LDA MANY+COPS          \ If we now have at least one cop in the local bubble,
BNE MLOOPS             \ jump down to MLOOPS, otherwise fall through into the
\ next part to look at spawning something else
```