Routines |
Prev: 36273 | Up: Map | Next: 36415 |
Used by the routine at 31688.
|
||||
36321 | LD A,70 | Load A with y-coordinate of viewscreen centre (pixels) | ||
36323 | RRCA | Divide by 8 to get y-coordinate in characters... | ||
36324 | RRCA | ... | ||
36325 | RRCA | ... | ||
36326 | NEG | Negate and add 21... | ||
36328 | ADD A,21 | ...to adjust for fact that PLOT origin is at bottom-left of screen | ||
36330 | LD B,A | Load y-coordinate (characters) into B | ||
36331 | LD A,128 | Load A with x-coordinate of viewscreen centre (pixels) | ||
36333 | RRCA | Divide by 8 to get x-coordinate in characters... | ||
36334 | RRCA | ... | ||
36335 | RRCA | ... | ||
36336 | LD C,A | Load x-coordinate (characters) into C | ||
36337 | CALL 54148 | Load HL with attribute file address for coordinates (C, B) (characters) | ||
36340 | LD (HL),0 | Set attribute at this location to zero (black INK, black PAPER) to hide stars' origin | ||
36342 | LD IX,24832 | Point IX at start of table of stars' movement data | ||
36346 | LD B,20 | Load B with 20 (as there are 20 stars to process) | ||
36348 | PUSH BC | Store BC (B = remaining number of stars to process) | ||
The operand of the instruction at 36349 represents a delay constant. This is modified by the instruction at 31975.
|
||||
36349 | LD C,0 | Load C with delay constant, outer loop | ||
36351 | LD B,30 | Load B with 30 (delay constant, inner loop) | ||
36353 | DJNZ 36353 | Pause for 30 cycles | ||
36355 | DEC C | Decrease C by one | ||
36356 | JR NZ,36351 | If C is not zero then loop back to 36351 | ||
36358 | LD B,(IX+1) | Load B with star's current y-coordinate | ||
36361 | LD C,(IX+0) | Load C with star's current x-coordinate | ||
36364 | CALL 8933 | PLOT the star to remove it from display (x=C, y=B) | ||
36367 | CALL 36499 | Load BC with new (y,x) coordinates of a star depending upon the signs and magnitudes of its direction | ||
36370 | LD A,B | If new y-coordinate is less than 33... | ||
36371 | CP 33 | ... | ||
36373 | JR C,36388 | ...then reset star to point of origin and generate a new direction and movement data and jump ahead to 36406 | ||
36375 | CP 112 | If new y-coordinate is 112 or more... | ||
36377 | JR NC,36388 | ...then reset star to point of origin and generate a new direction and movement data and jump ahead to 36406 | ||
36379 | LD A,C | If new x-coordinate is less than 56... | ||
36380 | CP 56 | ... | ||
36382 | JR C,36388 | ...then reset star to point of origin and generate a new direction and movement data and jump ahead to 36406 | ||
36384 | CP 198 | If new x-coordinate is less than 198... | ||
36386 | JR C,36393 | ...then skip ahead to 36393 | ||
36388 | CALL 36273 | Reset star to point of origin and generate a new direction and movement data | ||
36391 | JR 36406 | Advance to next star | ||
36393 | LD A,C | If new x-coordinate is zero... | ||
36394 | AND A | ... | ||
36395 | JR Z,36388 | ...then reset star to point of origin and generate a new direction and movement data and jump ahead to 36406 | ||
36397 | LD (IX+0),C | Update star's coordinates in table at 24832 with new position data... | ||
36400 | LD (IX+1),B | ... | ||
36403 | CALL 8933 | PLOT the star to add it to display (x=C, y=B) | ||
36406 | POP BC | Restore BC (B = remaining number of stars to process) | ||
36407 | LD DE,9 | Advance IX by nine bytes to data for next star... | ||
36410 | ADD IX,DE | ... | ||
36412 | DJNZ 36348 | Decrease remaining number of stars to process and loop back to 36348 | ||
36414 | RET | Return |
Prev: 36273 | Up: Map | Next: 36415 |