To smooth things out a bit, you might try something like the code below. This lets you set the wait time, do slow stuff like drawing, and not have it added to the time you want to wait. If it took longer to draw than you had told it to wait, it will not wait at all.
int wt_waituntiltime = 0; // global
void SetWaitUntillTime(int waittime)
{
wt_waituntiltime = systemtime + waittime;
}
void WaitUntillThen()
{
while(wt_waituntiltime > systemtime) UpdateControls();
}
// an example:
SetWaitUntillTime(30);
PrintStringS(fsdx, 130, screen, v3font, "%2F%8o%1n%bt %6S%3u%2b%8s%1e%bt %6D");
ShowPage();
WaitUntillThen();
Hope this helps,
El