Prev: 894F Up: Map Next: 899C
896C: Calculate FlightPath
Used by the routine at Handler_LocationChoice.
CalculateFlightPath 896C LD HL,($7805) HL=*CurrentLocationCoordinates.
896F LD DE,($7807) DE=*DestinationLocationCoordinates.
Calculate X movement vector.
8973 LD A,L A=current X - destination X.
8974 SUB E
8975 LD E,$FF Assume moving left (negative X direction).
8977 JP P,StoreAbsolute_X_Difference If the result is positive, skip negation and jump to StoreAbsolute_X_Difference.
897A NEG Negate A if it's negative.
897C LD E,$01 Moving right (positive X direction).
StoreAbsolute_X_Difference 897E LD C,A Store absolute X difference in C.
Calculate Y movement vector.
897F LD A,H A=current Y - destination Y.
8980 SUB D
8981 LD D,$FF Assume moving up (negative Y direction).
8983 JR NC,StoreAbsolute_Y_Difference If result is non-negative, skip negation and jump to StoreAbsolute_Y_Difference.
8985 NEG Negate A if it's negative.
8987 LD D,$01 Moving down (positive Y direction).
StoreAbsolute_Y_Difference 8989 LD B,A Store absolute Y difference in B.
Store calculated vectors and flags.
898A LD ($7801),BC Write BC to *Flightpath_X_MovementVector.
898E LD ($7809),BC Write BC to *Flightpath_Minimum_Y_Coordinate.
8992 LD ($7803),DE Write DE to *Flightpath_Y_MovementVector.
8996 LD HL,$EFFB Set bit 1 ("Flightpath In-Progress") of *GameState_2.
8999 SET 1,(HL)
899B RET Return.
Prev: 894F Up: Map Next: 899C