Prev: 7262 Up: Map Next: 7325
72F5: Bug Collision
Used by the routine at 64ED.
Input
IX Bug object
Output
E 00 no collision
E 01 collision
BugCollision 72F5 LD HL,$5E6C HL=State_Robbie_Active.
72F8 LD E,$00 E=Default value 00 (no collision).
72FA LD A,(HL) A=State_Robbie_Active.
72FB AND %00111111 Keep only bits 0-5.
72FD DEC A Decrease A by one.
72FE JR Z,BugCollision_X If A is zero then jump to BugCollision_X.
7300 DEC A
7301 RET NZ
BugCollision_X 7302 INC HL A=State_Robbie_Pos_X.
7303 LD A,(HL)
7304 SUB (IX+$01) Robbie X position - bug X Position.
7307 JP P,BugCollision_Test_X Make sure we have a positive byte.
730A NEG
BugCollision_Test_X 730C CP $10 Return if A >= 10.
730E RET NC
730F INC HL A=State_Robbie_Pos_Y.
This entry point is used by the routine at 7262.
BugCollision_0 7310 LD A,(HL) }
7311 SUB (IX+$02) Robbie Y position - bug Y position.
7314 JP P,BugCollision_SetHeight Set D to 12 if it's a positive number.
7317 NEG
7319 LD D,(IX+$07) D=bug sprite height.
731C JR BugCollision_Test_Y Jump to BugCollision_Test_Y.
BugCollision_SetHeight 731E LD D,$12 D=12.
BugCollision_Test_Y 7320 CP D Return if D >= A.
7321 RET NC
A collision has been detected.
7322 LD E,$01 E=01.
7324 RET Return.
Prev: 7262 Up: Map Next: 7325