rem: if (((volatile SOLARSYS_STATE *)pSS)->PauseRotate == 2)
add: if (*(volatile UBYTE *)&pSS->PauseRotate == 2)
context: rotate_planet_task (void *data){	SIZE i;	COORD init_x;	DWORD TimeIn;	PSOLARSYS_STATE pSS;	BOOLEAN zooming;	RECT r, *repair = &r;	UBYTE zoom_from;	COUNT zoom_arr[50];	COUNT zoom_amt, frame_num = 0, zoom_frames;	Task task = (Task) data;	r.extent.width = 0;	zooming = TRUE;	pSS = pSolarSysState;	while (((volatile SOLARSYS_STATE *)pSS)->MenuState.Initialized < 2 && !Task_ReadState (task, TASK_EXIT))		TaskSwitch ();//	SetPlanetTilt ((pSS->SysInfo.PlanetInfo.AxialTilt << 8) / 360);	SetPlanetTilt (pSS->SysInfo.PlanetInfo.AxialTilt);//	angle=pSS->SysInfo.PlanetInfo.AxialTilt;				i = 1 - ((pSS->SysInfo.PlanetInfo.AxialTilt & 1) << 1);	init_x = (i == 1) ? (0) : (MAP_WIDTH - 1);	// Render the first planet frame	RenderLevelMasks (init_x);	pSolarSysState->Orbit.isPFADefined[init_x] = 1;	zoom_from = (UBYTE)TFB_Random () & 0x03;	zoom_frames = init_zoom_array (zoom_arr);	zoom_amt = zoom_arr[frame_num];	TimeIn = GetTimeCounter ();	while (!Task_ReadState (task, TASK_EXIT))	{		BYTE view_index;		COORD x;		x = init_x;		view_index = MAP_WIDTH;		do		{			// This SetSemaphore was placed before the RotatePlanet call			// To prevent the thread from being interrupted by the flash			// task while computing the Planet Frame.  This should help			// to smooth out the planet rotation animation.			// The PauseRotate needs to be placed after the SetSemaphore,			// to gaurantee that PauseRotate doesn't change while waiting			// to aquire the GraphicsSem			SetSemaphore (GraphicsSem);			if (((volatile SOLARSYS_STATE *)pSS)->PauseRotate !=1//			if (((PSOLARSYS_STATE volatile)pSS)->MenuState.Initialized <= 3					&& !(GLOBAL (CurrentActivity) & CHECK_ABORT))			{				//PauseRotate == 2 is a single-step				if (((volatile SOLARSYS_STATE *)pSS)->PauseRotate == 2)					pSS->PauseRotate = 1;				repair = RotatePlanet (x, SIS_SCREEN_WIDTH >> 1,						(148 - SIS_ORG_Y) >> 1, zoom_amt, zoom_from, repair						);				if (!repair && zooming)				{					zooming = FALSE;					zoom_amt = 0;					++pSS->MenuState.Initialized;				}				x += i;			} else				view_index++;			ClearSemaphore (GraphicsSem);			// If this frame hasn't been generted, generate it			if (! pSolarSysState->Orbit.isPFADefined[x]) {				RenderLevelMasks (x);				pSolarSysState->Orbit.isPFADefined[x] = 1;			}			if (zooming)			{				frame_num++;				if (frame_num > zoom_frames)				{					fprintf (stderr, "rotate_planet_task() : zoom frame out of bounds!\n");					frame_num = zoom_frames;				}				zoom_amt = zoom_arr[frame_num];			}			SleepThreadUntil (TimeIn + (ONE_SECOND * ROTATION_TIME) / (MAP_WIDTH));//			SleepThreadUntil (TimeIn + (ONE_SECOND * 5 / (MAP_WIDTH-32)));			TimeIn = GetTimeCounter ();		} while (--view_index && !Task_ReadState (task, TASK_EXIT));	}	FinishTask (task);	return(0);}