Routines |
Prev: 25233 | Up: Map | Next: 25296 |
Used by the routines at 20956, 28160, 62094 and 63210. Goes through the screen refresh buffer (SRB) and for every set bit found, updates the corresponding character square on-screen.
|
||||
25248 | CALL 26849 | Update the SRB so that speech bubbles are not corrupted by moving characters | ||
25251 | LD B,84 | 21 screen rows, 4 bytes (32 bits) per row | ||
25253 | LD A,(HL) | Pick up a byte from the screen refresh buffer | ||
25254 | AND A | Anything need updating in this particular 8-tile segment? | ||
25255 | JR Z,25292 | Jump if not | ||
25257 | PUSH BC | Save the SRB byte counter | ||
25258 | LD A,L | For this particular byte of the SRB, compute the corresponding screen row number (0-20) in D | ||
25259 | AND 252 | |||
25261 | RRCA | |||
25262 | RRCA | |||
25263 | LD D,A | |||
25264 | LD A,L | Also for this particular SRB byte, compute the column of the screen (0, 8, 16 or 24) corresponding to bit 7 | ||
25265 | AND 3 | |||
25267 | ADD A,A | |||
25268 | ADD A,A | |||
25269 | ADD A,A | |||
25270 | DEC A | |||
25271 | LD E,A | |||
25272 | INC E | |||
25273 | SLA (HL) | Does a character square need printing? | ||
25275 | JR C,25281 | Jump if so | ||
25277 | JR NZ,25272 | Jump back if there are still non-zero bits left in this SRB byte | ||
25279 | JR 25291 | Jump forward to consider the next SRB byte | ||
We found a set bit in the current SRB byte. Print the corresponding character square.
|
||||
25281 | PUSH HL | Save the SRB pointer | ||
25282 | PUSH DE | Save the screen (row,column) pointer | ||
25283 | EX DE,HL | Switch the screen (row,column) pointer to HL | ||
25284 | CALL 24684 | Print the character square at this row and column | ||
25287 | POP DE | Restore the screen (row,column) pointer to DE | ||
25288 | POP HL | Restore the SRB pointer to HL | ||
25289 | JR 25272 | Examine the next bit of the current SRB byte | ||
There are no set bits remaining in the current SRB byte. Move to the next SRB byte.
|
||||
25291 | POP BC | Restore the SRB byte counter to B | ||
25292 | INC L | Point HL at the next SRB byte | ||
25293 | DJNZ 25253 | Jump back until all 84 SRB bytes have been dealt with | ||
25295 | RET |
Prev: 25233 | Up: Map | Next: 25296 |