rem: INPUT_STATE InputState, LastInputState;
add: INPUT_STATE InputState, LastInputState = (INPUT_STATE)~0;
context: SpewPhrases (COUNT wait_track){	BOOLEAN ContinuityBreak;	DWORD TimeIn;	COUNT which_track;	INPUT_STATE InputState, LastInputState;	FRAME F;	TimeIn = GetTimeCounter ();	ContinuityBreak = FALSE;	F = CommData.AlienFrame;	if (wait_track == 0)	{		wait_track = which_track = (COUNT)~0;		InputState = 0;		goto Rewind;	}	if (!(which_track = PlayingTrack ()))	{		// initial start of player		if (wait_track == 1 || wait_track == (COUNT)~0)		{			ResumeTrack ();			ClearSemaphore (GraphicsSem);			do			{				TaskSwitch ();				SetSemaphore (GraphicsSem);				which_track = PlayingTrack ();				ClearSemaphore (GraphicsSem);			} while (!which_track);			SetSemaphore (GraphicsSem);		}	}	else if (which_track <= wait_track)		ResumeTrack ();	LastInputState = 0;	do	{		ClearSemaphore (GraphicsSem);		SleepThreadUntil (TimeIn + (ONE_SECOND / 64));		TimeIn = GetTimeCounter ();#if DEMO_MODE || CREATE_JOURNAL		InputState = 0;#else /* !(DEMO_MODE || CREATE_JOURNAL) */		InputState = GetInputState (NormalInput);#endif		if (InputState & DEVICE_EXIT)			InputState = ConfirmExit ();		SetSemaphore (GraphicsSem);		if (InputState & (DEVICE_BUTTON2 | DEVICE_EXIT))		{			SetSliderImage (SetAbsFrameIndex (ActivityFrame, 8));			JumpTrack (TRUE);			CommData.AlienFrame = F;			return (FALSE);		}		if (which_track)		{			if (GetInputXComponent (InputState) > 0)			{				SetSliderImage (SetAbsFrameIndex (ActivityFrame, 3));				if (optSmoothScroll == OPT_PC && InputState != LastInputState)					FastForward_Page ();				else if (optSmoothScroll == OPT_3DO)					FastForward_Smooth ();				ContinuityBreak = TRUE;				CommData.AlienFrame = 0;			}			else if (GetInputXComponent (InputState) < 0)			{Rewind:				SetSliderImage (SetAbsFrameIndex (ActivityFrame, 4));				if (optSmoothScroll == OPT_PC && InputState != LastInputState)					FastReverse_Page ();				else if (optSmoothScroll == OPT_3DO)					FastReverse_Smooth ();				ContinuityBreak = TRUE;				CommData.AlienFrame = 0;			}			else if (ContinuityBreak)			{				SetSliderImage (SetAbsFrameIndex (ActivityFrame, 2));				if ((which_track = PlayingTrack ())						&& which_track <= wait_track)				{					if (optSmoothScroll == OPT_3DO)						ResumeTrack ();				} 				else				{					CommData.AlienFrame = F;					return (FALSE);				}				ContinuityBreak = FALSE;			}			else if (which_track == wait_track					|| wait_track == (COUNT)~0)				CommData.AlienFrame = F;		}		LastInputState = InputState;	} while (ContinuityBreak			|| ((which_track = PlayingTrack ()) && which_track <= wait_track));	CommData.AlienFrame = F;	if (wait_track == (COUNT)~0)		SetSliderImage (SetAbsFrameIndex (ActivityFrame, 8));	return (TRUE);}