Prev: 35151 Up: Map Next: 35228
35180: Calculate FlightPath
Used by the routine at Handler_LocationChoice.
CalculateFlightPath 35180 LD HL,(30725) HL=*CurrentLocationCoordinates.
35183 LD DE,(30727) DE=*DestinationLocationCoordinates.
Calculate X movement vector.
35187 LD A,L A=current X - destination X.
35188 SUB E
35189 LD E,255 Assume moving left (negative X direction).
35191 JP P,StoreAbsolute_X_Difference If the result is positive, skip negation and jump to StoreAbsolute_X_Difference.
35194 NEG Negate A if it's negative.
35196 LD E,1 Moving right (positive X direction).
StoreAbsolute_X_Difference 35198 LD C,A Store absolute X difference in C.
Calculate Y movement vector.
35199 LD A,H A=current Y - destination Y.
35200 SUB D
35201 LD D,255 Assume moving up (negative Y direction).
35203 JR NC,StoreAbsolute_Y_Difference If result is non-negative, skip negation and jump to StoreAbsolute_Y_Difference.
35205 NEG Negate A if it's negative.
35207 LD D,1 Moving down (positive Y direction).
StoreAbsolute_Y_Difference 35209 LD B,A Store absolute Y difference in B.
Store calculated vectors and flags.
35210 LD (30721),BC Write BC to *Flightpath_X_MovementVector.
35214 LD (30729),BC Write BC to *Flightpath_Minimum_Y_Coordinate.
35218 LD (30723),DE Write DE to *Flightpath_Y_MovementVector.
35222 LD HL,61435 Set bit 1 ("Flightpath In-Progress") of *GameState_2.
35225 SET 1,(HL)
35227 RET Return.
Prev: 35151 Up: Map Next: 35228