![]() |
Routines |
| Prev: 27382 | Up: Map | Next: 27660 |
|
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 27593 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 | 27592 | JR Direction_Up | Self-modified jump; offset written by caller routine. | |||||||||||||||||||||||||||||||||||||
| Direction_Up | 27594 | JR Move_Up | Jump to Move_Up (up). | |||||||||||||||||||||||||||||||||||||
| Direction_UpRight | 27596 | JR Move_UpRight | Jump to Move_UpRight (up-right). | |||||||||||||||||||||||||||||||||||||
| Direction_Right | 27598 | JR Move_Right | Jump to Move_Right (right). | |||||||||||||||||||||||||||||||||||||
| Direction_DownRight | 27600 | JR Move_DownRight | Jump to Move_DownRight (down-right). | |||||||||||||||||||||||||||||||||||||
| Direction_Down | 27602 | JR Move_Down | Jump to Move_Down (down). | |||||||||||||||||||||||||||||||||||||
| Direction_DownLeft | 27604 | JR Move_DownLeft | Jump to Move_DownLeft (down-left). | |||||||||||||||||||||||||||||||||||||
| Direction_Left | 27606 | JR Move_Left | Jump to Move_Left (left). | |||||||||||||||||||||||||||||||||||||
| Direction_UpLeft | 27608 | 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 | 27610 | LD A,B | B-=*HL (subtract speed from Y). | |||||||||||||||||||||||||||||||||||||
| 27611 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 27612 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 27613 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_UpRight | 27615 | LD A,B | B-=*HL (Y − speed). | |||||||||||||||||||||||||||||||||||||
| 27616 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 27617 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 27618 | LD A,C | C+=*HL (X + speed). | ||||||||||||||||||||||||||||||||||||||
| 27619 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 27620 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 27621 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_Right | 27623 | LD A,C | C+=*HL (X + speed). | |||||||||||||||||||||||||||||||||||||
| 27624 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 27625 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 27626 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_DownRight | 27628 | LD A,C | C+=*HL (X + speed). | |||||||||||||||||||||||||||||||||||||
| 27629 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 27630 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 27631 | LD A,B | B+=*HL (Y + speed). | ||||||||||||||||||||||||||||||||||||||
| 27632 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 27633 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 27634 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_Down | 27636 | LD A,B | B+=*HL (Y + speed). | |||||||||||||||||||||||||||||||||||||
| 27637 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 27638 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 27639 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_DownLeft | 27641 | LD A,B | B+=*HL (Y + speed). | |||||||||||||||||||||||||||||||||||||
| 27642 | ADD A,(HL) | |||||||||||||||||||||||||||||||||||||||
| 27643 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 27644 | LD A,C | C-=*HL (X − speed). | ||||||||||||||||||||||||||||||||||||||
| 27645 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 27646 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 27647 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_Left | 27649 | LD A,C | C-=*HL (X − speed). | |||||||||||||||||||||||||||||||||||||
| 27650 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 27651 | LD C,A | |||||||||||||||||||||||||||||||||||||||
| 27652 | JR Validate_Position | Jump to Validate_Position. | ||||||||||||||||||||||||||||||||||||||
| Move_UpLeft | 27654 | LD A,B | B-=*HL (Y − speed). | |||||||||||||||||||||||||||||||||||||
| 27655 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 27656 | LD B,A | |||||||||||||||||||||||||||||||||||||||
| 27657 | LD A,C | C-=*HL (X − speed). | ||||||||||||||||||||||||||||||||||||||
| 27658 | SUB (HL) | |||||||||||||||||||||||||||||||||||||||
| 27659 | LD C,A | |||||||||||||||||||||||||||||||||||||||
|
Continue on to Validate_Position.
|
||||||||||||||||||||||||||||||||||||||||
| Prev: 27382 | Up: Map | Next: 27660 |