Routines |
Prev: 687E | Up: Map | Next: 68DD |
|
||||||||
6880 | CALL $6755 | Collect information about the board | ||||||
6883 | INC B | Point BC at the second byte of the board's buffer | ||||||
6884 | LD C,B | |||||||
6885 | LD B,$7F | |||||||
6887 | LD A,(BC) | Pick this up in A | ||||||
6888 | AND A | Has the board been written on already? | ||||||
6889 | JP NZ,$6390 | Terminate this interruptible subcommand if so | ||||||
688C | LD A,H | A=character's number | ||||||
688D | LD (BC),A | Signal: this character wrote on the board | ||||||
688E | DEC C | Point BC at the first byte of the board's buffer (7F54, 7F5A, 7F60, 7F66 or 7F6C) and initialise the pixel column to 1 | ||||||
688F | LD A,$01 | |||||||
6891 | LD (BC),A | |||||||
6892 | LD L,$10 | Make sure there are no (sub)submessage addresses lying around in bytes 0x0D-0x10 of the character's buffer | ||||||
6894 | LD (HL),$00 | |||||||
6896 | LD L,$0E | |||||||
6898 | LD (HL),$00 | |||||||
689A | LD A,H | A=character's number (0xC9-0xCC, 0xCE) | ||||||
689B | CP $CE | Set E as follows: 0x20=MR WITHIT, 0x26=MR ROCKITT, 0x2C=MR CREAK, 0x32=MISS TAKE, 0x38=BOY WANDER | ||||||
689D | ADC A,$3B | |||||||
689F | LD E,A | |||||||
68A0 | ADC A,A | |||||||
68A1 | ADD A,E | |||||||
68A2 | ADD A,A | |||||||
68A3 | LD E,A | |||||||
68A4 | CALL $6291 | Collect a random number between 0 and 5 in A | ||||||
68A7 | AND $07 | |||||||
68A9 | CP $06 | |||||||
68AB | JR NC,$68A4 | |||||||
68AD | ADD A,E | Now E=blackboard message number | ||||||
68AE | LD E,A | |||||||
68AF | LD D,$FE | Pick up the address of the message and place it into bytes 0x0B and 0x0C of the character's buffer | ||||||
68B1 | LD L,$0B | |||||||
68B3 | LD A,(DE) | |||||||
68B4 | LD (HL),A | |||||||
68B5 | INC D | |||||||
68B6 | INC L | |||||||
68B7 | LD A,(DE) | |||||||
68B8 | LD (HL),A | |||||||
68B9 | LD L,$09 | Replace the address of this routine in bytes 0x09 and 0x0A of the character's buffer with 68BD (below) | ||||||
68BB | LD (HL),$BD | |||||||
68BD | CALL $6791 | Write one letter on the board | ||||||
68C0 | JR NZ,$68CD | Jump unless the character has finished writing | ||||||
This entry point is used by the routine at 6D00.
|
||||||||
68C2 | CALL $61B4 | Update the SRB for the character's current animatory state and location | ||||||
68C5 | AND $F8 | A=base animatory state of the character (arm down) | ||||||
68C7 | CALL $6130 | Update the character's animatory state and update the SRB | ||||||
68CA | JP $6390 | Terminate this interruptible subcommand | ||||||
The character hasn't finished writing yet. Figure out his next arm movement (up or down).
|
||||||||
68CD | CALL $61B4 | Update the SRB for the character's current animatory state and location | ||||||
68D0 | RRCA | Set the carry flag if the character's arm is raised | ||||||
68D1 | RLCA | |||||||
68D2 | JR C,$68D9 | Jump if the character's arm is raised | ||||||
68D4 | OR $07 | A=animatory state of the character with his arm up | ||||||
68D6 | JP $6130 | Update the character's animatory state and location and update the SRB | ||||||
68D9 | AND $F8 | A=base animatory state of character (arm down) | ||||||
68DB | JR $68D6 | Jump back to update the SRB |
Prev: 687E | Up: Map | Next: 68DD |