![]() |
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 |