![]() |
Routines |
| Prev: 6AF6 | Up: Map | Next: 6C0C |
|
Used by the routines at UpdateRedBirdMovement, Handle_Butterfly, Handler_Helicopter and Handler_UFO.
Shared 8-direction movement jump table. Used by the red bird (UpdateRedBirdMovement), helicopter (Handler_Helicopter) and UFO (Handler_UFO). The entry point is self-modified at 6BC9 to jump to one of 8 directional movement handlers. Each handler adjusts B (Y) and/or C (X) by the speed value at *HL, then falls through to Validate_Position to validate the position.
|
||||||||||||||||||||||||||||||||||||||||
| Direction_Jump_Table | 6BC8 | JR Direction_Up | Self-modified jump; offset written by caller routine. | |||||||||||||||||||||||||||||||||||||
| Direction_Up | 6BCA | JR Move_Up | Jump to Move_Up (up). | |||||||||||||||||||||||||||||||||||||
| Direction_UpRight | 6BCC | JR Move_UpRight | Jump to Move_UpRight (up-right). | |||||||||||||||||||||||||||||||||||||
| Direction_Right | 6BCE | JR Move_Right | Jump to Move_Right (right). | |||||||||||||||||||||||||||||||||||||
| Direction_DownRight | 6BD0 | JR Move_DownRight | Jump to Move_DownRight (down-right). | |||||||||||||||||||||||||||||||||||||
| Direction_Down | 6BD2 | JR Move_Down | Jump to Move_Down (down). | |||||||||||||||||||||||||||||||||||||
| Direction_DownLeft | 6BD4 | JR Move_DownLeft | Jump to Move_DownLeft (down-left). | |||||||||||||||||||||||||||||||||||||
| Direction_Left | 6BD6 | JR Move_Left | Jump to Move_Left (left). | |||||||||||||||||||||||||||||||||||||
| Direction_UpLeft | 6BD8 | JR Move_UpLeft | Jump to Move_UpLeft (up-left). | |||||||||||||||||||||||||||||||||||||
|
Movement handlers. Each adjusts B and/or C by the speed value at *HL, then falls through to Validate_Position.
|
||||||||||||||||||||||||||||||||||||||||
| Move_Up | 6BDA | LD A,B | B-=*HL (subtract speed from Y). | |||||||||||||||||||||||||||||||||||||
| 6BDB | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 6BDC | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 6BDD | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_UpRight | 6BDF | LD A,B | B-=*HL (Y − speed). | |||||||||||||||||||||||||||||||||||||
| 6BE0 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 6BE1 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 6BE2 | LD A,C | C+=*HL (X + speed). | ||||||||||||||||||||||||||||||||||||||
| 6BE3 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 6BE4 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 6BE5 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_Right | 6BE7 | LD A,C | C+=*HL (X + speed). | |||||||||||||||||||||||||||||||||||||
| 6BE8 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 6BE9 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 6BEA | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_DownRight | 6BEC | LD A,C | C+=*HL (X + speed). | |||||||||||||||||||||||||||||||||||||
| 6BED | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 6BEE | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 6BEF | LD A,B | B+=*HL (Y + speed). | ||||||||||||||||||||||||||||||||||||||
| 6BF0 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 6BF1 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 6BF2 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_Down | 6BF4 | LD A,B | B+=*HL (Y + speed). | |||||||||||||||||||||||||||||||||||||
| 6BF5 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 6BF6 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 6BF7 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_DownLeft | 6BF9 | LD A,B | B+=*HL (Y + speed). | |||||||||||||||||||||||||||||||||||||
| 6BFA | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 6BFB | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 6BFC | LD A,C | C-=*HL (X − speed). | ||||||||||||||||||||||||||||||||||||||
| 6BFD | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 6BFE | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 6BFF | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_Left | 6C01 | LD A,C | C-=*HL (X − speed). | |||||||||||||||||||||||||||||||||||||
| 6C02 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 6C03 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 6C04 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_UpLeft | 6C06 | LD A,B | B-=*HL (Y − speed). | |||||||||||||||||||||||||||||||||||||
| 6C07 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 6C08 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 6C09 | LD A,C | C-=*HL (X − speed). | ||||||||||||||||||||||||||||||||||||||
| 6C0A | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 6C0B | LD C,A | |||||||||||||||||||||||||||||||||||||||
|
Continue on to Validate_Position.
|
||||||||||||||||||||||||||||||||||||||||
| Prev: 6AF6 | Up: Map | Next: 6C0C |