Prev: 29385 Up: Map Next: 29441
29394: Update the SRB for the middle six columns of the speech bubble
Used by the routines at 29746 and 62714. Returns with the carry flag set if the speech bubble is off-screen.
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 Next: 29441