Prev: C03A Up: Map Next: C0E0
C05A: Handle POD and MINE LAYER
Used by the routine at C620.
C05A LD A,(IX+$11) Jump forward if emeny is not moving up
C05D OR A
C05E JP NZ,$C0C4
C061 LD A,(IX+$01) Decrement y-position based on speed
C064 SUB (IX+$12)
C067 LD (IX+$01),A
C06A CALL $C72B Obtain into HL the tile type address pointer under the entity
C06D LD DE,$0040 Point HL to the top of the entity
C070 AND A
C071 SBC HL,DE
C073 CALL $D06C Check is tile type is wall
C076 JP Z,$C0BB Jump if it's a wall
C079 INC HL Increment HL
C07A CALL $D06C Check is tile type is wall
C07D JP Z,$C0BB Jump if it's a wall
check enemy moving beyond bounds
C080 JP Z,$C0C4 never jump!
C083 LD A,(IX+$01) is y-position less than $18
C086 CP $18
C088 JP C,$C0BB Jump if so and change enemy state to move down
C08B CP $A8 is y-position greather than $A8
C08D JP NC,$C0B2 Jump if so and change enemy state to move up
C090 CALL $A375 Set A a pseudo-random number
C093 CP $07 random number is less than $07
C095 JP C,$C0A9 Jump to change direction
C098 LD A,(IX+$09) return if enemy is a MINE LAYER
C09B CP $0D
C09D RET Z
increment speed for POD
C09E LD A,(IX+$12) increment speed for POD
C0A1 INC A
C0A2 CP $05 if speed is $05 don't increment a return
C0A4 RET Z
C0A5 LD (IX+$12),A Set the new speed for the enemy
C0A8 RET
change enemy horizontal direction
C0A9 LD A,(IX+$02) change enemy horizontal direction
C0AC XOR $01
C0AE LD (IX+$02),A
C0B1 RET
enemy change direction to moves up
C0B2 LD (IX+$11),$00 Set enemy direction up
C0B6 LD (IX+$12),$01 Set enemy speed
C0BA RET
enemy change direction to moves down
C0BB LD (IX+$11),$01 Set enemy direction down
C0BF LD (IX+$12),$01 Set enemy speed
C0C3 RET
enemy moves down
C0C4 LD A,(IX+$01) Increment y-position based on speed
C0C7 ADD A,(IX+$12)
C0CA LD (IX+$01),A
C0CD CALL $C72B Obtain into HL the tile type address pointer under the entity
C0D0 CALL $D06C Check is tile type is wall
C0D3 JP Z,$C0B2 Jump back if it's a wall
C0D6 INC HL Increment HL
C0D7 CALL $D06C Check is tile type is wall
C0DA JP Z,$C0B2 Jump back if it's a wall
C0DD JP $C080 Jump back and check enemy moving beyond screen boundary
Prev: C03A Up: Map Next: C0E0