Prev: 57050 Up: Map Next: 57109
57064: Handle Dust
Handler for the object types 72 to 75 (a puff of dust). The counter in byte 8 goes down on every call and the puff is removed, and erased, when it reaches zero. Bit 0 of the type follows bit 0 of the counter, which makes the puff flicker between two frames. The puff is removed if Sabreman is not in its room.
Input
IX Object record
Handle_Dust 57064 CALL StoreEntity Save the state of the puff.
57067 LD A,(36636) Fetch the room x of Sabreman.
57070 CP (IX+2) Jump to Remove_Unseen_Weapon to remove the puff if it is in a different room x.
57073 JP NZ,Remove_Unseen_Weapon
57076 LD A,(36638) Fetch the room y of Sabreman.
57079 CP (IX+4) Jump to Remove_Unseen_Weapon to remove the puff if it is in a different room y.
57082 JP NZ,Remove_Unseen_Weapon
57085 DEC (IX+8) Decrease the counter and jump to Remove_Thrown_Weapon to remove the puff when it reaches zero.
57088 JP Z,Remove_Thrown_Weapon
57091 LD A,(IX+8) Fetch the counter.
57094 AND %00000001 Keep only bit 0.
57096 LD B,A Store it in B.
57097 LD A,(IX+0) Fetch the type.
57100 AND %11111110 Reset bit 0.
57102 ADD A,B Add bit 0 of the counter.
57103 LD (IX+0),A Store the type.
57106 JP Update_Object_Sprite Jump to Update_Object_Sprite.
Prev: 57050 Up: Map Next: 57109