rem: SetSemaphore (&GraphicsSem);
add: SetSemaphore (GraphicsSem);
context: DrawFadeText (UNICODE *str1, UNICODE *str2, BOOLEAN fade_in, PRECT		pRect){	SIZE i;	DWORD TimeIn;	TEXT t1, t2;	COLOR fade_cycle[] =	{		BUILD_COLOR (MAKE_RGB15 (0xA, 0xA, 0xA), 0x1D),		BUILD_COLOR (MAKE_RGB15 (0x9, 0x9, 0x9), 0x1E),		BUILD_COLOR (MAKE_RGB15 (0x8, 0x8, 0x8), 0x1F),		BUILD_COLOR (MAKE_RGB15 (0x6, 0x6, 0x6), 0x20),		BUILD_COLOR (MAKE_RGB15 (0x5, 0x5, 0x5), 0x21),		BUILD_COLOR (MAKE_RGB15 (0x4, 0x4, 0x4), 0x22),		BUILD_COLOR (MAKE_RGB15 (0x3, 0x3, 0x3), 0x23),	};#define NUM_FADES (sizeof (fade_cycle) / sizeof (fade_cycle[0]))	t1.baseline.x = pRect->corner.x + 100;	t1.baseline.y = pRect->corner.y + 45;	t1.align = ALIGN_CENTER;	t1.pStr = str1;	t1.CharCount = (COUNT)~0;	t2 = t1;	t2.baseline.y += 11;	t2.pStr = str2;	FlushInput ();	TimeIn = GetTimeCounter ();	if (fade_in)	{		for (i = 0; i < (SIZE) NUM_FADES; ++i)		{			ClearSemaphore (&GraphicsSem);			if (AnyButtonPress (TRUE))				i = NUM_FADES - 1;			SetSemaphore (&GraphicsSem);			SetContextForeGroundColor (fade_cycle[i]);			DrawText (&t1);			DrawText (&t2);			TimeIn = SleepTask (TimeIn + (ONE_SECOND / 20));		}	}	else	{		for (i = NUM_FADES - 1; i >= 0; --i)		{			ClearSemaphore (&GraphicsSem);			if (AnyButtonPress (TRUE))				i = 0;			SetSemaphore (&GraphicsSem);			SetContextForeGroundColor (fade_cycle[i]);			DrawText (&t1);			DrawText (&t2);			TimeIn = SleepTask (TimeIn + (ONE_SECOND / 20));		}		SetContextForeGroundColor (BUILD_COLOR (MAKE_RGB15 (0xA, 0xA, 0xA), 0x08));		DrawText (&t1);		DrawText (&t2);	}}