Routines
 Prev: 25233 Up: Map Next: 25296
25248: Update the display
 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