add: if (CommData.AlienTransitionDesc.AnimFlags & TALK_DONE) do_subtitles ((void *)~0); }
context: DoConfirmExit (void){	BOOLEAN result;	fprintf (stderr, "Confirming Exit!\n");	if (LOBYTE (GLOBAL (CurrentActivity)) != SUPER_MELEE)		SuspendGameClock ();	else if (CommData.ConversationPhrases && PlayingTrack ())		PauseTrack ();	SetSemaphore (GraphicsSem);	if (GLOBAL (CurrentActivity) & CHECK_ABORT)	{		result = FALSE;		ExitRequested = FALSE;	}	else	{		RECT r;		STAMP s;		FRAME F;		CONTEXT oldContext;		BOOLEAN response = TRUE, done;		oldContext = SetContext (ScreenContext);		r.extent.width = CONFIRM_WIN_WIDTH;		r.extent.height = CONFIRM_WIN_HEIGHT;		r.corner.x = (SCREEN_WIDTH - r.extent.width) >> 1;		r.corner.y = (SCREEN_HEIGHT - r.extent.height) >> 1;		s.origin = r.corner;		F = CaptureDrawable (LoadDisplayPixmap (&r, (FRAME)0));		DrawConfirmationWindow (response);		// Releasing the Semaphore lets the rotate_planet_task		// draw a frame.  PauseRotate can still allow one more frame		// to be drawn, so it is safer to just not release the Semaphore		//ClearSemaphore (GraphicsSem);		FlushGraphics ();		//SetSemaphore (GraphicsSem);		GLOBAL (CurrentActivity) |= CHECK_ABORT;		FlushInput ();		done = FALSE;		do {			// Forbid recursive calls or pausing here!			ExitRequested = FALSE;			GamePaused = FALSE;			UpdateInputState ();			if (CurrentMenuState.select)			{				done = TRUE;			}			else if (CurrentMenuState.cancel)			{				done = TRUE;				response = FALSE;			}			else if (CurrentMenuState.left || CurrentMenuState.right)			{				response = !response;				DrawConfirmationWindow (response);			}			TaskSwitch ();		} while (!done);		s.frame = F;		DrawStamp (&s);		DestroyDrawable (ReleaseDrawable (s.frame));		if (response)		{			GameExiting = TRUE;			result = TRUE;		}				else		{			result = FALSE;			GameExiting = FALSE;			GLOBAL (CurrentActivity) &= ~CHECK_ABORT;		}		ExitRequested = FALSE;		GamePaused = FALSE;		FlushInput ();		SetContext (oldContext);	}	ClearSemaphore (GraphicsSem);	if (LOBYTE (GLOBAL (CurrentActivity)) != SUPER_MELEE)		ResumeGameClock ();	else if (CommData.ConversationPhrases && PlayingTrack ())		ResumeTrack ();	fprintf (stderr, "Exit was %sconfirmed.\n", result ? "" : "NOT ");	return (result);}