Routines |
Prev: 47363 | Up: Map | Next: 47468 |
Used by the routine at 47363.
|
||||
47431 | LD A,(34210) | Load remaining time / lives into A... | ||
47434 | OR A | ...and if none remain... | ||
47435 | RET Z | ...then return | ||
47436 | LD E,A | Load remaining time / lives into E | ||
47437 | LD A,18 | Load A with 18 minus remaining time / lives (i.e. number in range 2 to 18)... | ||
47439 | SUB E | ... | ||
As the value of x (remaining time / lives) decreases, the probability that a randomly generated number between 0 and (18-x) is 2 or more increases. This probability is used to ensure that the rate at which each timer figure is updated remains roughly constant.
|
||||
47440 | CALL 54222 | Load A with a random number, 0-(17 minus remaining time / lives) | ||
47443 | CP 2 | If generated number is 2 or more... | ||
47445 | RET NC | ...then return | ||
47446 | LD IX,23232 | Point IX to start of second-last row of attribute file | ||
47450 | LD A,E | Load remaining time / lives into A | ||
If remaining time / lives is one, then there is only one timer figure to update
|
||||
47451 | CP 1 | If this is 1... | ||
47453 | JP Z,47315 | ...then jump to 47315 (if show-score flag reset then draw pair of timer figure eyes and return) | ||
Otherwise, randomly select one of the remaining timer figures to update
|
||||
47456 | CALL 54222 | Load A with random number between 0 and (x-1) where x is remaining time / lives | ||
47459 | ADD A,A | Double A... | ||
47460 | LD C,A | ...and load into BC... | ||
47461 | LD B,0 | ... | ||
47463 | ADD IX,BC | Add BC as offset to IX (i.e. advance IX to point to left eye of randomly chosen timer figure) | ||
47465 | JP 47315 | If show-score flag reset then draw pair of timer figure eyes (open, random frame) at attribute file address IX, advance IX by two bytes then return |
Prev: 47363 | Up: Map | Next: 47468 |