Prev: 9BC1 Up: Map Next: 9BEA
9BD2: Calculate Attribute Address
Input
HL Pixel address co-ordinates
Output
HL Attribute buffer address
Converts a given pixel address to the associated attribute buffer address.
AttributeAddress 9BD2 PUSH BC Stash BC on the stack.
9BD3 LD A,L Horizontal co-ordinate.
9BD4 RRCA Divide by 08.
9BD5 RRCA
9BD6 RRCA
9BD7 AND %00011111 Keep only bits 0-4 (00-1F / minimum-maximum horizontal screen values).
9BD9 LD L,A Store this back in L.
9BDA LD A,H Vertical co-ordinate.
9BDB RLCA Multiply by 04.
9BDC RLCA
9BDD LD C,A Store this in C temporarily.
9BDE AND %11100000 Keep only bits 5-7.
9BE0 OR L Set the bits from L.
9BE1 LD L,A L=A.
9BE2 LD A,C Fetch the stored value from C.
9BE3 AND %00000011 Keep only bits 0-1.
9BE5 OR %01011000 Set MSB of the attribute buffer 58. This ensures our value is >= 5800.
9BE7 LD H,A Store this back in H.
9BE8 POP BC Restore BC from the stack.
9BE9 RET Return.
View the equivalent code in;
Prev: 9BC1 Up: Map Next: 9BEA