rem: SetSemaphore (&GraphicsSem);
add: SetSemaphore (GraphicsSem);
context: DoSelectAction (INPUT_STATE InputState, PMENU_STATE pMS){	if (GLOBAL (CurrentActivity) & CHECK_ABORT)	{		pMS->CurState = ATTACK + 1;		return (FALSE);	}	if (!pMS->Initialized)	{		pMS->Initialized = TRUE;		pMS->InputFunc = DoSelectAction;	}	else if (InputState & DEVICE_BUTTON1)	{		switch (pMS->CurState)		{			case HAIL:			case ATTACK:				if (LOBYTE (GLOBAL (CurrentActivity)) == IN_LAST_BATTLE)					pMS->CurState = HAIL;				return (FALSE);			case ATTACK + 1:				pMS->Initialized = GameOptions ();				if (pMS->Initialized)				{					DrawMenuStateStrings (PM_CONVERSE, pMS->CurState);					SetSemaphore (&GraphicsSem);					SetFlashRect ((PRECT)~0L, (FRAME)0);					ClearSemaphore (&GraphicsSem);				}				return ((BOOLEAN)pMS->Initialized);		}	}	else	{		BYTE NewState;		NewState = pMS->CurState;		if (GetInputXComponent (InputState) < 0				|| GetInputYComponent (InputState) < 0)		{			if (NewState-- == HAIL)				NewState = ATTACK + 1;		}		else if (GetInputXComponent (InputState) > 0				|| GetInputYComponent (InputState) > 0)		{			if (NewState++ == ATTACK + 1)				NewState = HAIL;		}		if (NewState != pMS->CurState)		{			DrawMenuStateStrings (PM_CONVERSE, NewState);			pMS->CurState = NewState;		}	}	return (TRUE);}