Prev: 27663 Up: Map Next: 27718
27680: Check the attribute bytes at a sprite's location
Used by the routines at 26017 and 26276.
Input
HL Sprite location
Output
A 58 (cherry/strawberry), 59 (guard), 60 (flower), or 0 (none of these)
F Zero flag set if A is 0 (nothing found)
27680 PUSH BC Save BC.
27681 PUSH DE Save DE.
27682 PUSH HL Save the sprite location.
27683 LD BC,16384 Convert the sprite location into a display file address.
27686 ADD HL,BC
27687 CALL 27663 Set HL' to the corresponding attribute file address.
27690 EXX Exchange registers.
27691 LD E,0 E' will hold the attribute of any interesting tile at this location; initialise it now.
27693 CALL 27718 Check the attribute of the top-left tile.
27696 INC HL Point HL' at the top-right tile.
27697 CALL 27718 Check the attribute of the top-right tile.
27700 LD BC,31 Point HL' at the bottom-left tile.
27703 ADD HL,BC
27704 CALL 27718 Check the attribute of the bottom-left tile.
27707 INC HL Point HL' at the bottom-right tile.
27708 CALL 27718 Check the attribute of the bottom-right tile.
27711 LD A,E Copy the tile attribute indicator to A.
27712 EXX Exchange registers.
27713 POP HL Restore the sprite location to HL.
27714 POP DE Restore DE.
27715 POP BC Restore BC.
27716 AND A Set the zero flag if no interesting tile (guard, flower, cherry, strawberry) was found.
27717 RET
Prev: 27663 Up: Map Next: 27718