![]() |
Routines |
Prev: 653E | Up: Map |
|
||||||||
6558 | LD DE,($E601) | Collect Sam's x- and y-coordinates in E and D | ||||||
655C | LD A,($7FFC) | Pick up Sam's status flags from 7FFC | ||||||
655F | BIT 3,A | Is Sam rolling or somersaulting? | ||||||
6561 | JR NZ,$656F | Jump if so | ||||||
6563 | AND $81 | Is Sam either being carried by a gangster or policeman, or falling from the roof of a building? | ||||||
6565 | LD A,($E604) | Return with A holding Sam's z-coordinate if not | ||||||
6568 | RET Z | |||||||
Sam is either being carried by a policeman, or falling from the roof of a building.
|
||||||||
6569 | LD A,$02 | 2=behind people on the sidewalk | ||||||
656B | LD DE,$26A8 | D=38, E=168 (out of reach) | ||||||
656E | RET | |||||||
Sam is rolling or somersaulting.
|
||||||||
656F | LD A,($E600) | A=Sam's animatory state | ||||||
6572 | AND $7F | Discard bit 7 (the direction bit) | ||||||
6574 | CP $0F | Is Sam horizontal at the moment (animatory state 0x0F or 0x1F)? | ||||||
6576 | JR C,$657A | Jump if not | ||||||
6578 | INC E | Add 2 to Sam's x-coordinate if he's horizontal | ||||||
6579 | INC E | |||||||
657A | LD A,E | A=x+2 if Sam's horizontal, or x otherwise (where x is Sam's x-coordinate) | ||||||
657B | CALL $EB05 | Reset the carry flag if Sam is on or above the sidewalk, or set it if he's on or above the road | ||||||
657E | ADC A,$22 | D=34 if Sam's on or above the sidewalk, 35 if he's on or above the road | ||||||
6580 | SUB E | |||||||
6581 | LD D,A | |||||||
6582 | LD A,$04 | 4=outside | ||||||
6584 | RET |
Prev: 653E | Up: Map |