Prev: 670C Up: Map Next: 6780
6755: Get the identifier and coordinates of the blackboard close to a character
Used by the routines at 5E45, 6791, 6880, 6FF2 and F100. If the character is not standing at a blackboard, the routine returns with the carry flag set. Otherwise the routine returns with the carry flag reset, B holding the blackboard identifier (the LSB of 7F54, 7F5A, 7F60, 7F66 or 7F6C), and DE holding the coordinates of the top left-hand square of the board.
Input
H Character number (0xC8-0xCC, 0xCE)
6755 LD B,$03 There are three blackboards on the top floors
6757 LD DE,$D337 The table at D337 contains the x-coordinates of the left edges of the blackboards
675A LD L,$02 Byte 0x02 of the character's buffer holds his y-coordinate
675C LD A,(HL) Pick this up in A
675D DEC L L=0x01
675E CP B Is the character on the top floor?
675F JR Z,$6768 Jump if so
6761 LD E,$3A DE=D33A
6763 DEC B B=2 (two blackboards on the middle floors)
6764 CP $0A Is the character on the middle floor?
6766 JR NZ,$6774 Jump if not
6768 LD A,(DE) A=x-coordinate of the left edge of a blackboard
6769 CP (HL) Is the character to the left of this blackboard?
676A JR NC,$6774 Jump if so
676C ADD A,$04 Is the character no more than 4 (or 12, if coming from 6FF2) spaces to the right of the left edge of this blackboard?
676E CP (HL)
676F JR NC,$6776 Jump if so
6771 INC E Next blackboard
6772 DJNZ $6768
6774 SCF Signal: the character is not standing at a blackboard
6775 RET
The character is standing close enough to the blackboard (to either write on it or start wiping it).
6776 EX DE,HL Now HL points to the blackboard info table
6777 LD A,(HL) A=x-coordinate of the left edge of the blackboard (from the table at D337)
6778 INC H
6779 LD B,(HL) B=blackboard identifier (from the table at D437)
677A INC H
677B LD H,(HL) H=y-coordinate of the top row of the blackboard (from the table at D537)
677C LD L,A Pass the x-coordinate to L
677D AND A Clear the carry flag to indicate success
677E EX DE,HL DE=coordinates of the top-left corner of the blackboard
677F RET
The contents of the blackboard info tables are as follows:
x ID y Room
3 0x54 3 Blue Room
41 0x5A 3 Yellow Room
161 0x60 3 Top-floor room in the girls' skool
32 0x66 9 Science Lab
161 0x6C 9 Middle-floor room in the girls' skool
Prev: 670C Up: Map Next: 6780