Routines |
Prev: 29174 | Up: Map | Next: 29330 |
Used by the routine at 28101.
|
||||
29272 | LD A,(23701) | If Magic Knight's current room is not 1 (USS Pisces, 1, The Bridge)... | ||
29275 | CP 1 | ... | ||
29277 | RET NZ | ...then return | ||
29278 | LD A,(23700) | If the USS Pisces' current location is 20 (Gangrole)... | ||
29281 | CP 20 | ... | ||
29283 | RET Z | ...then return | ||
29284 | LD A,255 | Store 255 at 23694 and 23696... | ||
29286 | LD (23696),A | ...to preserve attributes already on screen... | ||
29289 | LD (23694),A | ... | ||
29292 | LD A,(23700) | Load the USS Pisces' current location into H and L... | ||
29295 | LD H,A | ...so that HL points to an address in ROM (pseudo-random data)... | ||
29296 | LD L,A | ... | ||
29297 | LD B,50 | Load B with 50 (as we are PLOTting 50 stars) | ||
29299 | PUSH BC | Store BC (remaining number of stars to PLOT) | ||
29300 | INC HL | Advance HL by one byte | ||
29301 | LD A,(HL) | Load A with byte at HL | ||
29302 | AND 63 | Clear bits 6 and 7 | ||
29304 | CP 56 | If this y-coordinate value is 56 or more... | ||
29306 | JP NC,29300 | ...then loop back to 29300 to get next byte value | ||
29309 | LD B,A | Load this pseudo-random value (0-55) into B (y-coordinate) | ||
29310 | INC HL | Advance HL by one byte | ||
29311 | LD A,(HL) | Load A with byte at HL | ||
29312 | AND 127 | Clear bit 7 | ||
29314 | LD C,A | Load this x-coordinate value (0-127) into C (x-coordinate) | ||
29315 | PUSH HL | Store HL (current address in ROM) | ||
Stars are PLOTted as pixels using the ROM PLOT routine. Therefore, coordinates are relative to the bottom-left of the display. The x-coordinate increases towards the right of the display while the y-coordinate increases towards the top. Stars are always PLOTted ABOVE the planet rendered on the viewscreen, therefore the lower-left bound of the rectangular area for displaying stars ("star area") under this system is (64, 56) pixels. The upper-right bound is (191, 111) pixels.
|
||||
29316 | LD HL,14400 | Load H and L with the y- and x-coordinates (56 and 64, respectively) of the lower-left of the viewscreen's "star area" | ||
29319 | ADD HL,BC | Add B and C (pseudo-random values) to H and L respectively as offsets | ||
29320 | PUSH HL | Transfer values from H (56-111) and L (64-191)... | ||
29321 | POP BC | ...to B and C | ||
29322 | CALL 8933 | PLOT the pixel (x=C, y=B) | ||
29325 | POP HL | Restore HL (current address in ROM) | ||
29326 | POP BC | Restore BC (remaining number of stars to PLOT) | ||
29327 | DJNZ 29299 | Decrease remaining number of stars and loop back to 29299 | ||
29329 | RET | Return |
Prev: 29174 | Up: Map | Next: 29330 |