rem: hyper_dist = square_root ( (DWORD)hyper_dx * hyper_dx + (DWORD)hyper_dy * hyper_dy );
add: adj_dx = LOGX_TO_UNIVERSE(16 * hyper_dx); adj_dy = MAX_Y_UNIVERSE - LOGY_TO_UNIVERSE(16 * hyper_dy);  hyper_dist = square_root (adj_dx * adj_dx + adj_dy * adj_dy) + hyper_extra;
context: MoveSIS (PSIZE pdx, PSIZE pdy){	SIZE new_dx, new_dy;	new_dx = *pdx;	if ((GLOBAL_SIS (log_x) -= new_dx) < 0)	{		new_dx += (SIZE)GLOBAL_SIS (log_x);		GLOBAL_SIS (log_x) = 0;	}	else if (GLOBAL_SIS (log_x) > MAX_X_LOGICAL)	{		new_dx += (SIZE)(GLOBAL_SIS (log_x) - MAX_X_LOGICAL);		GLOBAL_SIS (log_x) = MAX_X_LOGICAL;	}	new_dy = *pdy;	if ((GLOBAL_SIS (log_y) -= new_dy) < 0)	{		new_dy += (SIZE)GLOBAL_SIS (log_y);		GLOBAL_SIS (log_y) = 0;	}	else if (GLOBAL_SIS (log_y) > MAX_Y_LOGICAL)	{		new_dy += (SIZE)(GLOBAL_SIS (log_y) - MAX_Y_LOGICAL);		GLOBAL_SIS (log_y) = MAX_Y_LOGICAL;	}	if (new_dx != *pdx || new_dy != *pdy)	{		HELEMENT hElement, hNextElement;		*pdx = new_dx;		*pdy = new_dy;		for (hElement = GetTailElement ();				hElement != 0; hElement = hNextElement)		{			ELEMENTPTR ElementPtr;			LockElement (hElement, &ElementPtr);			if (!(ElementPtr->state_flags & PLAYER_SHIP))				hNextElement = GetPredElement (ElementPtr);			else			{				ElementPtr->next.location.x = (LOG_SPACE_WIDTH >> 1) - new_dx;				ElementPtr->next.location.y = (LOG_SPACE_HEIGHT >> 1) - new_dy;				hNextElement = 0;			}			UnlockElement (hElement);		}	}	if (GLOBAL_SIS (FuelOnBoard)			&& GET_GAME_STATE (ARILOU_SPACE_SIDE) <= 1)	{		COUNT cur_fuel_ticks;		COUNT hyper_dist;		if (new_dx < 0)			new_dx = -new_dx;		hyper_dx += new_dx;		if (new_dy < 0)			new_dy = -new_dy;		hyper_dy += new_dy;		hyper_dist = square_root (				(DWORD)hyper_dx * hyper_dx				+ (DWORD)hyper_dy * hyper_dy				);		cur_fuel_ticks = hyper_dist >> 4;		if (cur_fuel_ticks > (COUNT)fuel_ticks)		{#ifndef TESTING			DeltaSISGauges (0, fuel_ticks - cur_fuel_ticks, 0);#endif /* TESTING */			if (cur_fuel_ticks > 0x00FF)			{				hyper_dx = hyper_dist & ((1 << 4) - 1);				hyper_dy = 0;				cur_fuel_ticks = 0;			}			fuel_ticks = (BYTE)cur_fuel_ticks;		}	}}