![]() |
Routines |
| Prev: 6B1A | Up: Map | Next: 6B45 |
|
||||||||||
| 6B1B | LD ($D60B),DE | Save the message address in bytes 0x0B and 0x0C of the character buffer in page 0xD6 | ||||||||
|
This entry point is used by the routine at 6B46 to write the second line of text into the message box graphic buffer at E428.
|
||||||||||
| 6B1F | PUSH HL | Copy the buffer address to HL' | ||||||||
| 6B20 | EXX | |||||||||
| 6B21 | POP HL | |||||||||
| 6B22 | LD BC,$0000 | B=0 (during startup) or 64, C=0 (this instruction is set to LD BC,$4000 before the game starts; see 53A0) | ||||||||
| 6B25 | LD (HL),C | Create 64 (or 256) empty pixel columns in the buffer | ||||||||
| 6B26 | INC HL | |||||||||
| 6B27 | DJNZ $6B25 | |||||||||
| 6B29 | DEC HL | |||||||||
| 6B2A | EXX | |||||||||
| 6B2B | LD H,$D6 | We are using the character buffer in page 0xD6 to process the message | ||||||||
| 6B2D | LD C,$FF | The message box is 255 (during startup) or 64 pixels wide (this instruction is set to LD C,$40 before the game starts; see 53A0) | ||||||||
| 6B2F | CALL $66CE | A=ASCII code of the next character in the message | ||||||||
| 6B32 | CP $03 | Is the ASCII code 0, 1 or 2 (end of line)? | ||||||||
| 6B34 | JR C,$6B3B | Jump if so to centre the text | ||||||||
| 6B36 | CALL $69E6 | Slide the bitmap for CHR$(A) into the buffer | ||||||||
| 6B39 | JR $6B2F | Jump back to do the next character | ||||||||
| 6B3B | SRL C | Now C=half the number of unused pixel columns left in the buffer | ||||||||
| 6B3D | RET Z | Return if this is zero (the buffer is full) | ||||||||
| 6B3E | CALL $69F4 | Create C empty pixel columns in the buffer, thus centring the message | ||||||||
| 6B41 | DEC C | |||||||||
| 6B42 | JR NZ,$6B3E | |||||||||
| 6B44 | RET | |||||||||
| Prev: 6B1A | Up: Map | Next: 6B45 |