add: if (optMeleeScale == TFB_SCALE_STEP) reduction = MAX_VIS_REDUCTION + ONE_SHIFT; else reduction = MAX_ZOOM_OUT << ONE_SHIFT;
context: MoveGalaxy (VIEW_STATE view_state, SIZE dx, SIZE dy){	PPRIMITIVE pprim;	if (view_state != VIEW_STABLE)	{#ifdef OLD_ZOOM		BYTE reduction;#else		COUNT reduction;#endif		COUNT i;		PPOINT ppt;#ifdef OLD_ZOOM		reduction = GLOBAL (cur_state);#else		{			extern COUNT zoom_out;						reduction = zoom_out;		}#endif		if (view_state == VIEW_CHANGE)		{			pprim = DisplayArray;			i = BIG_STAR_COUNT;			if (LOBYTE (GLOBAL (CurrentActivity)) == IN_HYPERSPACE)			{				do				{					pprim->Object.Stamp.frame =							SetAbsFrameIndex (stars_in_space,							((COUNT)TFB_Random () & 31) + (32 + 26));					++pprim;				} while (--i);				i = MED_STAR_COUNT;				do				{					pprim->Object.Stamp.frame =							SetAbsFrameIndex (stars_in_space,							((COUNT)TFB_Random () & 31) + 26);					++pprim;				} while (--i);			}			else			{				GRAPHICS_PRIM star_object, big_star_obj;				FRAME star_frame;				star_frame = stars_in_space;#ifdef OLD_ZOOM				big_star_obj = STAMP_PRIM;				if (reduction > 0)					star_object = POINT_PRIM;				else				{					star_frame = IncFrameIndex (star_frame);					star_object = STAMP_PRIM;				}#else				if (reduction > (1 << ZOOM_SHIFT))					big_star_obj = star_object = POINT_PRIM;				else				{					big_star_obj = star_object = STAMP_PRIM;					star_frame = IncFrameIndex (star_frame);					star_object = POINT_PRIM;				}#endif				do				{					SetPrimType (pprim, big_star_obj);					pprim->Object.Stamp.frame = star_frame;					++pprim;				} while (--i);				pprim = &DisplayArray[BIG_STAR_COUNT];				i = MED_STAR_COUNT;				do				{					SetPrimType (pprim, star_object);					++pprim;				} while (--i);			}		}		if (LOBYTE (GLOBAL (CurrentActivity)) == IN_HYPERSPACE)		{			pprim = DisplayArray;			i = BIG_STAR_COUNT + MED_STAR_COUNT;			do			{				COUNT base_index;				base_index = GetFrameIndex (pprim->Object.Stamp.frame) - 26;				pprim->Object.Stamp.frame =						SetAbsFrameIndex (pprim->Object.Stamp.frame,						((base_index & ~31) + ((base_index + 1) & 31)) + 26);				++pprim;			} while (--i);			dx <<= 3;			dy <<= 3;		}		WrapStarBlock (2, dx, dy);		WrapStarBlock (1, dx, dy);		WrapStarBlock (0, dx, dy);		if (LOBYTE (GLOBAL (CurrentActivity)) != IN_HYPERSPACE)		{			dx = SpaceOrg.x;			dy = SpaceOrg.y;#ifdef OLD_ZOOM			reduction += ONE_SHIFT;#else			reduction <<= ONE_SHIFT;#endif		}		else		{			dx = (COORD)(LOG_SPACE_WIDTH >> 1)					- (LOG_SPACE_WIDTH >> ((MAX_REDUCTION + 1)					- MAX_VIS_REDUCTION));			dy = (COORD)(LOG_SPACE_HEIGHT >> 1)					- (LOG_SPACE_HEIGHT >> ((MAX_REDUCTION + 1)					- MAX_VIS_REDUCTION));#ifdef OLD_ZOOM			reduction = (COUNT)(MAX_VIS_REDUCTION + ONE_SHIFT);#else			reduction = MAX_ZOOM_OUT << ONE_SHIFT;#endif		}		ppt = log_star_array;		pprim = DisplayArray;		if (view_state == VIEW_CHANGE#ifdef OLD_ZOOM				|| (int)pprim->Object.Point.x != (int)((ppt->x - dx) >> reduction)				|| (int)pprim->Object.Point.y != (int)((ppt->y - dy) >> reduction))#else				|| (int)pprim->Object.Point.x != (int)(((ppt->x - dx) << ZOOM_SHIFT) / reduction)				|| (int)pprim->Object.Point.y != (int)(((ppt->y - dy) << ZOOM_SHIFT) / reduction))#endif		{			i = BIG_STAR_COUNT;			do			{// ppt->x &= (LOG_SPACE_WIDTH - 1);ppt->x = WRAP_VAL (ppt->x, LOG_SPACE_WIDTH);#ifdef OLD_ZOOM				pprim->Object.Point.x = (ppt->x - dx) >> reduction;				pprim->Object.Point.y = (ppt->y - dy) >> reduction;#else				pprim->Object.Point.x = ((ppt->x - dx) << ZOOM_SHIFT) / reduction;				pprim->Object.Point.y = ((ppt->y - dy) << ZOOM_SHIFT) / reduction;#endif				++pprim, ++ppt;			} while (--i);			dx <<= 1;			dy <<= 1;#ifdef OLD_ZOOM			++reduction;#else			reduction <<= 1;#endif			if (view_state == VIEW_CHANGE#ifdef OLD_ZOOM					|| pprim->Object.Point.x != (ppt->x - dx) >> reduction					|| pprim->Object.Point.y != (ppt->y - dy) >> reduction)#else					|| (int)(pprim->Object.Point.x) != (int)(((ppt->x - dx) << ZOOM_SHIFT) / reduction)					|| (int)(pprim->Object.Point.y) != (int)(((ppt->y - dy) << ZOOM_SHIFT) / reduction))#endif			{				i = MED_STAR_COUNT;				do				{// ppt->x &= ((LOG_SPACE_WIDTH << 1) - 1);ppt->x = WRAP_VAL (ppt->x, LOG_SPACE_WIDTH << 1);#ifdef OLD_ZOOM					pprim->Object.Point.x = (ppt->x - dx) >> reduction;					pprim->Object.Point.y = (ppt->y - dy) >> reduction;#else					pprim->Object.Point.x = ((ppt->x - dx) << ZOOM_SHIFT) / reduction;					pprim->Object.Point.y = ((ppt->y - dy) << ZOOM_SHIFT) / reduction;#endif					++pprim, ++ppt;				} while (--i);				dx <<= 1;				dy <<= 1;#ifdef OLD_ZOOM				++reduction;#else				reduction <<= 1;#endif				if (view_state == VIEW_CHANGE#ifdef OLD_ZOOM						|| pprim->Object.Point.x != (ppt->x - dx) >> reduction						|| pprim->Object.Point.y != (ppt->y - dy) >> reduction)#else						|| (int)(pprim->Object.Point.x) != (int)(((ppt->x - dx) << ZOOM_SHIFT) / reduction)						|| (int)(pprim->Object.Point.y) != (int)(((ppt->y - dy) << ZOOM_SHIFT) / reduction))#endif				{					i = SML_STAR_COUNT;					do					{// ppt->x &= ((LOG_SPACE_WIDTH << 2) - 1);ppt->x = WRAP_VAL (ppt->x, LOG_SPACE_WIDTH << 2);#ifdef OLD_ZOOM						pprim->Object.Point.x = (ppt->x - dx) >> reduction;						pprim->Object.Point.y = (ppt->y - dy) >> reduction;#else						pprim->Object.Point.x = ((ppt->x - dx) << ZOOM_SHIFT) / reduction;						pprim->Object.Point.y = ((ppt->y - dy) << ZOOM_SHIFT) / reduction;#endif						++pprim, ++ppt;					} while (--i);				}			}		}	}	{		extern PRIM_LINKS DisplayLinks;		DisplayLinks = MakeLinks (NUM_STARS - 1, 0);	}}