DE | Play area coordinates of point above character's head |
27276 | 3AFF7F | LD A,(32767) | A=column of play area at far left of screen |
27279 | 47 | LD B,A | |
27280 | 7B | LD A,E | A=x-coordinate of point above character |
27281 | E6F8 | AND 248 | A=x-coordinate of left side of message |
27283 | 90 | SUB B | |
27284 | FE20 | CP 32 | |
27286 | 3F | CCF | |
27287 | D8 | RET C | Return if the message would be off-screen to the right |
27288 | 5F | LD E,A | 0≤E≤31: relative x-coordinate of left side of message |
27289 | 7A | LD A,D | A=y-coordinate of point above character's head |
27290 | D603 | SUB 3 | A=y-coordinate of top line of message |
27292 | D8 | RET C | Return if this would be off the top of the screen |
27293 | 1600 | LD D,0 | |
27295 | E5 | PUSH HL | |
27296 | 87 | ADD A,A | |
27297 | 87 | ADD A,A | |
27298 | 87 | ADD A,A | |
27299 | 6F | LD L,A | |
27300 | 2616 | LD H,22 | |
27302 | 29 | ADD HL,HL | |
27303 | 29 | ADD HL,HL | |
27304 | 19 | ADD HL,DE | HL=attribute file address for top left corner of message |
27305 | E5 | PUSH HL | |
27306 | 1128E3 | LD DE,58152 | Point DE at the buffer used to save screen area |
27309 | 3E03 | LD A,3 | 3 rows |
27311 | 010800 | LD BC,8 | 8 character squares per row |
27314 | EDB0 | LDIR | Copy 8 attribute bytes into the buffer |
27316 | 0E18 | LD C,24 | |
27318 | 09 | ADD HL,BC | |
27319 | 3D | DEC A | |
27320 | 20F5 | JR NZ,27311 | Jump back until all the attribute bytes have been copied |
27322 | E1 | POP HL | |
27323 | E5 | PUSH HL | |
27324 | 7C | LD A,H | |
27325 | D650 | SUB 80 | |
27327 | 87 | ADD A,A | |
27328 | 87 | ADD A,A | |
27329 | 87 | ADD A,A | |
27330 | 67 | LD H,A | HL=display file address for top left of message |
27331 | 0E03 | LD C,3 | 3 rows |
27333 | 3E08 | LD A,8 | 8 pixel lines per row |
27335 | C5 | PUSH BC | |
27336 | E5 | PUSH HL | |
27337 | 0E08 | LD C,8 | 8 character squares per row |
27339 | EDB0 | LDIR | Copy one pixel line into the buffer |
27341 | E1 | POP HL | |
27342 | 24 | INC H | |
27343 | 3D | DEC A | |
27344 | 20F6 | JR NZ,27336 | Jump back until all 8 pixel lines for this row have been copied |
27346 | 7D | LD A,L | |
27347 | C620 | ADD A,32 | |
27349 | 6F | LD L,A | |
27350 | 3804 | JR C,27356 | |
27352 | 7C | LD A,H | |
27353 | D608 | SUB 8 | |
27355 | 67 | LD H,A | |
27356 | C1 | POP BC | |
27357 | 0D | DEC C | |
27358 | 20E5 | JR NZ,27333 | Jump back until all 3 rows have been copied |
27360 | D1 | POP DE | |
27361 | E1 | POP HL | |
27362 | C9 | RET |