Dynamite Dan | Routines |
Prev: D895 | Up: Map | Next: D9A7 |
|
||||||||||
D951 | LD A,($C872) | Put Dan's Y co-ordinate (C872) in E. | ||||||||
D954 | LD E,A | |||||||||
D955 | INC E | Move forward two rows to get a valid screen address. | ||||||||
D956 | INC E | |||||||||
D957 | CALL $E909 | Convert to get an attribute address. | ||||||||
D95A | EX DE,HL | Put this in HL. | ||||||||
D95B | LD DE,$0020 | Set DE to the offset for the next row. | ||||||||
D95E | LD A,($C876) | Get the height fallen. (C876) | ||||||||
D961 | CP $05 | Is it less than 5? | ||||||||
D963 | JR C,$D96F | Jump if so. | ||||||||
D965 | LD A,($C872) | Get bits 0-3 of the Y co-ordinate. | ||||||||
D968 | AND $07 | |||||||||
D96A | CP $06 | Are bits 1-2 set, but not bit 0? | ||||||||
D96C | JR Z,$D96F | Jump forward if so. | ||||||||
D96E | ADD HL,DE | Move to the next row. | ||||||||
D96F | LD B,(HL) | Put the attribute address in B. | ||||||||
D970 | ADD HL,DE | Move to the next row. | ||||||||
D971 | LD C,(HL) | Put the attribute address in C. | ||||||||
D972 | ADD HL,DE | Move to the next row. | ||||||||
D973 | LD D,(HL) | Put the attribute address in D. | ||||||||
D974 | LD HL,$CFD3 | Point HL at the wall attributes. | ||||||||
D977 | LD A,$06 | 6 entries to check. | ||||||||
D979 | EX AF,AF' | Swap AF for the shadow set, to stop A getting overwritten. | ||||||||
D97A | LD E,(HL) | Does the attribute match the current one? | ||||||||
D97B | CALL $D9A7 | |||||||||
D97E | RET Z | Return if it does, Dan can't move as there's a wall in the way. | ||||||||
D97F | INC HL | Otherwise move to the next entry. | ||||||||
D980 | EX AF,AF' | Swap AF back. | ||||||||
D981 | DEC A | Loop while there are more entries to check. | ||||||||
D982 | JR NZ,$D979 | |||||||||
D984 | LD E,$38 | Is there an oxygen tank here? | ||||||||
D986 | CALL $D9A7 | |||||||||
D989 | JP Z,$DE0B | Jump if so. | ||||||||
D98C | LD E,$68 | Is there a bank card here? | ||||||||
D98E | CALL $D9A7 | |||||||||
D991 | JP Z,$DE1B | Jump if so. | ||||||||
D994 | LD E,$60 | Is there an aerosol here? | ||||||||
D996 | CALL $D9A7 | |||||||||
D999 | JP Z,$DE28 | Jump if so. | ||||||||
D99C | LD A,($CFC9) | Is there food here? | ||||||||
D99F | LD E,A | |||||||||
D9A0 | CALL $D9A7 | |||||||||
D9A3 | JP Z,$DBB8 | Jump if so. | ||||||||
D9A6 | RET | Otherwise return. |
Prev: D895 | Up: Map | Next: D9A7 |