|  | Routines | 
| Prev: C3E0 | Up: Map | Next: C531 | 
| C4A6 | LD HL,($A01B) | Set HL to the tile address under entity | ||
| C4A9 | LD DE,$0040 | Set HL to the tile address in front-upper of enemy | ||
| C4AC | AND A | |||
| C4AD | SBC HL,DE | |||
| C4AF | DEC HL | |||
| C4B0 | CALL $D06C | Check if tile type is wall | ||
| C4B3 | JP Z,$C521 | Jump if it's a wall | ||
| C4B6 | LD DE,$0020 | Increment address to tile in front-lower of enemy | ||
| C4B9 | ADD HL,DE | |||
| C4BA | CALL $D06C | Check if tile type is wall | ||
| C4BD | JP Z,$C521 | Jump if it's a wall and change direction | ||
| C4C0 | LD A,(IX+$00) | Computes new x-position based on speed | ||
| C4C3 | SUB (IX+$10) | |||
| C4C6 | CP $E8 | if x-position is less than $18 then jump and handle left collision with room border | ||
| C4C8 | JP NC,$C49C | |||
| 
no collision, continue moving
 | ||||
| C4CB | LD (IX+$00),A | Set the new x-position | ||
| C4CE | LD (IX+$02),$01 | Continue in the same direction | ||
| C4D2 | LD A,(IX+$03) | Return if jumping | ||
| C4D5 | OR A | |||
| C4D6 | RET NZ | |||
| C4D7 | LD A,(IX+$06) | Return if falling | ||
| C4DA | OR A | |||
| C4DB | RET NZ | |||
| C4DC | LD A,(IX+$09) | Check enemy type | ||
| C4DF | OR A | Jump if enemy type is not FOOT MAN | ||
| C4E0 | JP NZ,$C501 | |||
| 
handle special behavior of FOOT MAN
 | ||||
| C4E3 | LD HL,($A01B) | Set HL to the tile address under FOOT MAN | ||
| C4E6 | LD DE,$0020 | Check tile type where is FOOT MAN | ||
| C4E9 | AND A | |||
| C4EA | SBC HL,DE | |||
| C4EC | LD A,(HL) | |||
| C4ED | CP $0F | tile type is $0F? | ||
| C4EF | JP Z,$C5FD | Jump to handle a forced jump for FOOT MAN | ||
| C4F2 | CP $0E | tile type is $0E? | ||
| C4F4 | JP Z,$C54E | Jump to handle a forced crouch for FOOT MAN | ||
| C4F7 | CP $10 | tile type is $10? | ||
| C4F9 | CALL Z,$C531 | Jump to handle a possible crouch for FOOT MAN | ||
| C4FC | CP $11 | tile type is $11? | ||
| C4FE | CALL Z,$C540 | Jump to handle a possible jump for FOOT MAN | ||
| 
check for space under the feet in next tile
 | ||||
| C501 | LD HL,($A01B) | Return if next tile under a feet is not space | ||
| C504 | DEC HL | |||
| C505 | LD A,(HL) | |||
| C506 | OR A | |||
| C507 | RET NZ | |||
| C508 | LD A,(IX+$09) | Check enemy type | ||
| C50B | AND $7F | Return if FOOT MAN | ||
| C50D | OR A | |||
| C50E | RET Z | |||
| C50F | CP $03 | Return if train wagon | ||
| C511 | RET Z | |||
| C512 | CP $04 | |||
| C514 | RET Z | |||
| C515 | CP $05 | |||
| C517 | RET Z | |||
| C518 | CP $08 | Return if SCANNER | ||
| C51A | RET Z | |||
| C51B | CP $0C | Return if POD | ||
| C51D | RET Z | |||
| C51E | CP $0D | Return if MINE LAYER | ||
| C520 | RET Z | |||
| 
change direction
 | ||||
| C521 | LD A,(IX+$09) | Return if FOOT MAN dying | ||
| C524 | CP $06 | |||
| C526 | RET Z | |||
| C527 | CP $07 | |||
| C529 | RET Z | |||
| C52A | LD (IX+$02),$00 | Change enemy direction | ||
| C52E | JP $C47A | Special case for train wagons (no change direction, simple dissapear if wall hit) | ||
| Prev: C3E0 | Up: Map | Next: C531 |