![]() |
Routines |
Prev: 29385 | Up: Map |
|
||||||||
29394 | LD DE,(32612) | Copy the speech bubble lip coordinates from 32612 to DE | ||||||
29398 | LD A,E | Now E holds the x-coordinate of the left edge of the speech bubble | ||||||
29399 | AND 248 | |||||||
29401 | LD E,A | |||||||
29402 | LD A,(32512) | A=leftmost column of the skool on screen (0-64) | ||||||
29405 | SUB E | Is the speech bubble at the far left of the screen? | ||||||
29406 | JR Z,29418 | Jump if so | ||||||
29408 | CCF | Return with the carry flag set if the speech bubble is off-screen to the left | ||||||
29409 | RET C | |||||||
29410 | CP 225 | Return with the carry flag set if the speech bubble is off-screen to the right | ||||||
29412 | RET C | |||||||
29413 | NEG | A=1, 2 or 3 (corresponding to the quadrant of the screen containing the speech bubble) | ||||||
29415 | RRCA | |||||||
29416 | RRCA | |||||||
29417 | RRCA | |||||||
29418 | LD E,A | E=0-3 (quadrant of the screen containing the speech bubble) | ||||||
29419 | LD A,D | Point DE at the byte of the screen refresh buffer corresponding to the top row of the speech bubble | ||||||
29420 | SUB 151 | |||||||
29422 | ADD A,A | |||||||
29423 | ADD A,A | |||||||
29424 | ADD A,E | |||||||
29425 | LD E,A | |||||||
29426 | LD D,127 | |||||||
29428 | LD A,(DE) | Set bits 1-6 of this screen refresh buffer byte (so that the part of the screen hidden by the middle 6 UDGs of the top row of the speech bubble will be refreshed) | ||||||
29429 | OR 126 | |||||||
29431 | LD (DE),A | |||||||
29432 | LD A,E | Point DE at the byte of the screen refresh buffer corresponding to the bottom row of the speech bubble | ||||||
29433 | ADD A,4 | |||||||
29435 | LD E,A | |||||||
29436 | LD A,(DE) | Set bits 1-6 of this screen refresh buffer byte (so that the part of the screen hidden by the middle 6 UDGS of the bottom row of the speech bubble will be refreshed) | ||||||
29437 | OR 126 | |||||||
29439 | LD (DE),A | |||||||
29440 | RET | Return with the carry flag reset |
Prev: 29385 | Up: Map |