![]() |
Routines |
| Prev: C149 | Up: Map | Next: C1CA |
|
Used by the routine at BFEF.
|
||||
| C14D | CALL $C0E0 | Handle collision detection for BLOB | ||
|
Handle for BLOB and MINE movement. This entry point is used by the routine at BFEF.
|
||||
| C150 | LD A,(IX+$00) | Set new x-position based on x-delta | ||
| C153 | ADD A,(IX+$04) | |||
| C156 | LD (IX+$00),A | |||
| C159 | LD A,(IX+$01) | Set new y-position based on y-delta | ||
| C15C | ADD A,(IX+$05) | |||
| C15F | LD (IX+$01),A | |||
| C162 | LD A,(IX+$09) | Check enemy type | ||
| C165 | CP $0F | Jump forward if BLOB | ||
| C167 | JP Z,$C179 | |||
| C16A | LD HL,($A01B) | Set HL to the address into tile buffer for MINE | ||
| C16D | LD DE,$0020 | |||
| C170 | AND A | |||
| C171 | SBC HL,DE | |||
| C173 | CALL $D06C | is a wall tile type? | ||
| C176 | JP Z,$981F | Jump to destroy MINE if so | ||
| C179 | DEC (IX+$11) | Decrement state change counter | ||
| C17C | RET NZ | Return if no zero | ||
| C17D | LD A,R | Set A a random number between 2-5 | ||
| C17F | AND $03 | |||
| C181 | ADD A,$02 | |||
| C183 | LD (IX+$11),A | Reset state change counter | ||
| C186 | LD A,(IX+$09) | Check enemy type | ||
| C189 | CP $0F | Jump forward if BLOB | ||
| C18B | JP Z,$C198 | |||
| C18E | LD A,(IX+$12) | Change state for MINE | ||
| C191 | XOR $01 | |||
| C193 | LD (IX+$12),A | |||
| C196 | OR A | Return if MINE continue fixed movement | ||
| C197 | RET Z | |||
| C198 | LD A,R | Set A a random number between 8 and 15 | ||
| C19A | AND $07 | |||
| C19C | ADD A,$08 | |||
| C19E | LD (IX+$11),A | Reset state change counter with this number | ||
| C1A1 | LD A,(IX+$09) | Jump to define x/y-delta for BLOB | ||
| C1A4 | CP $0F | |||
| C1A6 | JP Z,$C12E | |||
|
Set x/y-delta for MINE
|
||||
| C1A9 | LD (IX+$04),$01 | Set x-delta to 1 for MINE | ||
| C1AD | LD A,($A0B6) | if x-position of Rex is less than x-position of MINE then set x-delta to -1 | ||
| C1B0 | CP (IX+$00) | |||
| C1B3 | JP NC,$C1BA | |||
| C1B6 | LD (IX+$04),$FF | |||
| C1BA | LD (IX+$05),$01 | Set y-delta to 1 for MINE | ||
| C1BE | LD A,($A0B7) | if y-position of Rex is less than y-position of MINE then set y-delta to -1 | ||
| C1C1 | CP (IX+$01) | |||
| C1C4 | RET NC | |||
| C1C5 | LD (IX+$05),$FF | |||
| C1C9 | RET | |||
| Prev: C149 | Up: Map | Next: C1CA |