diff options
author | Vanilla I. Shu <vanilla@FreeBSD.org> | 1997-11-26 19:45:37 +0000 |
---|---|---|
committer | Vanilla I. Shu <vanilla@FreeBSD.org> | 1997-11-26 19:45:37 +0000 |
commit | 7211490698d9f7564d1fe7cc61e3e163a5d9281b (patch) | |
tree | f451b915cb0b3d64d03c525f5cdc4627ea2a5012 /games/xboing/files/patch-aa | |
parent | Update to 2.4 (diff) |
Update to 2.4
PR: 5514
Notes
Notes:
svn path=/head/; revision=8846
Diffstat (limited to 'games/xboing/files/patch-aa')
-rw-r--r-- | games/xboing/files/patch-aa | 534 |
1 files changed, 456 insertions, 78 deletions
diff --git a/games/xboing/files/patch-aa b/games/xboing/files/patch-aa index af49d035e1ae..671fe68d1275 100644 --- a/games/xboing/files/patch-aa +++ b/games/xboing/files/patch-aa @@ -1,78 +1,456 @@ -diff -rc /usr/ports/games/xboing/xboing/include/misc.h ./include/misc.h -*** /usr/ports/games/xboing/xboing/include/misc.h Wed Jan 4 17:14:48 1995 ---- ./include/misc.h Mon Apr 3 22:26:22 1995 -*************** -*** 87,93 **** - int ObtainWindowWidthHeight(Display *display, Window window, - int *width, int *height); - void sleepSync(Display *display, unsigned long ms); -! int usleep(unsigned long usec); - int ObtainMousePosition(Display *display, Window window, int *x, int *y); - int YesNoDialogue(Display *display, char *message); - Pixmap ScalePixmap(Display *display, Window window, Pixmap source, ---- 87,93 ---- - int ObtainWindowWidthHeight(Display *display, Window window, - int *width, int *height); - void sleepSync(Display *display, unsigned long ms); -! int Usleep(unsigned long usec); - int ObtainMousePosition(Display *display, Window window, int *x, int *y); - int YesNoDialogue(Display *display, char *message); - Pixmap ScalePixmap(Display *display, Window window, Pixmap source, -*************** -*** 100,106 **** - int YesNoDialogue(); - int ObtainMousePosition(); - void sleepSync(); -! int usleep(); - int ObtainWindowWidthHeight(); - int ResizeMainWindow(); - char *GetHomeDir(); ---- 100,106 ---- - int YesNoDialogue(); - int ObtainMousePosition(); - void sleepSync(); -! int Usleep(); - int ObtainWindowWidthHeight(); - int ResizeMainWindow(); - char *GetHomeDir(); -diff -rc /usr/ports/games/xboing/xboing/misc.c ./misc.c -*** /usr/ports/games/xboing/xboing/misc.c Wed Jan 4 17:13:33 1995 ---- ./misc.c Mon Apr 3 22:13:07 1995 -*************** -*** 79,87 **** - */ - - #if NeedFunctionPrototypes -! int usleep(unsigned long usec) - #else -! int usleep(usec) - unsigned long usec; - #endif - { ---- 79,87 ---- - */ - - #if NeedFunctionPrototypes -! int Usleep(unsigned long usec) - #else -! int Usleep(usec) - unsigned long usec; - #endif - { -*************** -*** 122,128 **** - ((et.tv_usec - st.tv_usec) / 1000) ); - - if ((ms) > ((1000 / 60) + SyncTime)) -! usleep(ms - SyncTime); - } - - #if NeedFunctionPrototypes ---- 122,128 ---- - ((et.tv_usec - st.tv_usec) / 1000) ); - - if ((ms) > ((1000 / 60) + SyncTime)) -! Usleep(ms - SyncTime); - } - - #if NeedFunctionPrototypes +--- bonus.c.orig Thu Nov 20 03:12:56 1997 ++++ bonus.c Thu Nov 20 03:15:32 1997 +@@ -311,7 +311,7 @@ + XFlush(display); + + SetBonusWait(BONUS_SCORE, frame + 5); +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + DEBUG("set bonus mode to BONUS_SCORE.") + } +@@ -326,7 +326,7 @@ + { + DEBUG("in function DoScore() in bonus.c") + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Nice message rewarding you for your efforts */ + strcpy(string, "Congratulations on finishing this level."); +@@ -336,7 +336,7 @@ + + ypos += (35 + GAP); + SetBonusWait(BONUS_BONUS, frame + LINE_DELAY); +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + DEBUG("set bonus mode to BONUS_BONUS.") + } + +@@ -387,7 +387,7 @@ + DrawShadowCentredText(display, window, textFont, + string, ypos, blue, TOTAL_WIDTH); + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Now skip to the next sequence */ + SetBonusWait(BONUS_LEVEL, frame + LINE_DELAY); +@@ -411,7 +411,7 @@ + bonusScore += ComputeScore(SUPER_BONUS_SCORE); + DisplayScore(display, scoreWindow, bonusScore); + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Now skip to the next sequence */ + SetBonusWait(BONUS_LEVEL, frame + LINE_DELAY); +@@ -454,7 +454,7 @@ + ypos += (int) (textFont->ascent + GAP * 1.5); + firstTime = True; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + } + } + +@@ -468,7 +468,7 @@ + { + int secs, theLevel; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Get the number of seconds left on the clock */ + secs = GetLevelTimeBonus(); +@@ -533,7 +533,7 @@ + /* Play the sound for the super bonus */ + if (noSound == False) playSoundFile("Doh3", 80); + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Get ready for the next sequence */ + SetBonusWait(BONUS_TIME, frame + LINE_DELAY); +@@ -569,7 +569,7 @@ + SetBonusWait(BONUS_TIME, frame + LINE_DELAY); + ypos += (textFont->ascent + GAP/2); + firstTime = True; +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + } + } + +@@ -583,7 +583,7 @@ + { + int secs = 0; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Get the number of seconds left on the clock */ + secs = GetLevelTimeBonus(); +@@ -627,7 +627,7 @@ + int myrank = 0; + char str[5]; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Obtain current ranking for this score */ + myrank = GetHighScoreRanking(score); +@@ -680,7 +680,7 @@ + { + DEBUG("DoEndText in bonus screen.") + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Finishing sentence - so you know what level to do */ + sprintf(string, "Prepare for level %ld", level+1); +--- main.c.orig Thu Nov 20 03:15:34 1997 ++++ main.c Thu Nov 20 03:15:54 1997 +@@ -156,7 +156,7 @@ + + /* Set an entire game speedup or slowdown speed */ + temp = (speed / (long) userDelay); +- userDelay = delay; ++ userDelay = delay/2 + 3; + speed = (long) (temp * userDelay); + speedLevel = 10 - delay; + } +--- misc.c.orig Fri Nov 22 09:28:46 1996 ++++ misc.c Thu Nov 20 03:18:15 1997 +@@ -89,8 +89,8 @@ + #ifdef SYSV + #ifdef __clipper__ + struct timeval tv; +- tv.tv_sec=((usec)/1000); +- tv.tv_usec=(((usec)%1000)*1000); ++ tv.tv_sec=((usec)/1000000); ++ tv.tv_usec=((usec)%1000000); + select(1,NULL,NULL,NULL,&tv); + #else + poll((struct poll *) 0, (size_t) 0, usec / 1000); /* ms resolution */ +@@ -105,6 +105,68 @@ + #endif + + #if NeedFunctionPrototypes ++static int kudelay(unsigned long count) ++#else ++static int kudelay(count) ++unsigned long count; ++#endif ++{ ++ unsigned int bluff = 1; ++ ++ while( count-- != 0 ) /* this can hardly be "optimised out" */ ++ bluff = (bluff ^ ((bluff & 1) * 0x6110)) >> 1; ++ ++ return( bluff ); ++} ++ ++#if NeedFunctionPrototypes ++static void kusleep(unsigned long usec) ++#else ++static void kusleep(usec) ++ unsigned long usec; ++#endif ++{ ++ static float kuliber_time = 0.0; ++ static float kuliber_count = 0.0; ++ static unsigned long kutimerswap = (1000000 / 15); ++ struct timeval st, et; ++ long gap; ++ unsigned long count; ++ ++ if( kuliber_time == 0.0 ) ++ { ++ count = 0x1000; /* calibrate delay loop */ ++ gettimeofday(&st, NULL); ++ ++ while( True ) ++ { ++ kudelay( count ); ++ count = (count << 1); ++ gettimeofday(&et, NULL); ++ gap = (((et.tv_sec - st.tv_sec) * 1000000) + ++ (et.tv_usec - st.tv_usec) ); ++ ++ if( gap > 400*1000 ) ++ break; ++ } ++ ++ kuliber_time = (float)(gap/4); ++ kuliber_count = (float)(((count-1)&~0xFFF)>>2); ++ } ++ ++ if( usec > kutimerswap ) ++ { ++ kutimerswap = (1000000 / 30); ++ usleep( usec ); /* using usleep() for low resolution only */ ++ } ++ else ++ { ++ kutimerswap = (1000000 / 15); ++ kudelay( (unsigned long)(kuliber_count*((float)usec/kuliber_time)) ); ++ } ++} ++ ++#if NeedFunctionPrototypes + void sleepSync(Display *display, unsigned long ms) + #else + void sleepSync(display, ms) +@@ -112,27 +174,85 @@ + unsigned long ms; + #endif + { +- struct timeval st, et; +- long SyncTime; +- static unsigned long accu; ++ static long Expected_time = 0; ++ static long Ref_sec = 0; ++ static long Ref_usec = 0; ++ static long Sleeping_time = 0; ++ static int PLL_filter = 0; ++ struct timeval st; ++ long elapsed; ++ long dodelay; ++ float x; + +- gettimeofday(&st, NULL); + XSync(display, False); +- gettimeofday(&et, NULL); + +- SyncTime = (((et.tv_sec - st.tv_sec) * 1000) + +- ((et.tv_usec - st.tv_usec) / 1000) ); ++ gettimeofday(&st, NULL); ++ ++ if( Ref_sec == 0 ) ++ { ++ Ref_sec = st.tv_sec; /* take the initial reference point */ ++ Ref_usec = st.tv_usec; ++ Sleeping_time = ms * 1000; ++ } ++ ++ elapsed = (st.tv_sec - Ref_sec) * 1000000 + (st.tv_usec - Ref_usec); ++ dodelay = Sleeping_time; ++ ++ if( PLL_filter > 0 && elapsed != 0 ) /* Phase lock loop */ ++ { ++ dodelay = Expected_time + Sleeping_time - elapsed; ++ ++ if( dodelay < 0 ) ++ { ++ dodelay = 0; PLL_filter--; ++ } ++ else ++ if( dodelay > 2*Sleeping_time ) ++ { ++ dodelay = 2*Sleeping_time; PLL_filter--; ++ } ++ else ++ PLL_filter = 3; ++ ++ if( elapsed > 40*Sleeping_time && Expected_time > 40*Sleeping_time ) ++ { ++ elapsed -= 20*Sleeping_time; /* Ref. point shouldn't be far away*/ ++ Expected_time -= 20*Sleeping_time; ++ Ref_usec += 20*Sleeping_time; ++ Ref_sec += Ref_usec/1000000; Ref_usec %= 1000000; ++ } ++ } + +-/* if ((ms) > ((1000 / 60) + SyncTime)) +- usleep(ms - SyncTime); +-*/ +- if ((ms + accu) > ((1000 / 30) + SyncTime)) ++ if( PLL_filter <= 0 && elapsed > 40000 ) /* Frequency lock loop */ + { +- usleep(ms +accu - SyncTime); +- accu = 0; ++ /* feedback filter */ ++ x = 0.5 + 0.5 * (float)Expected_time / (float)elapsed; ++ ++ if( x < 0.966 ) /* Acceleration must be strongly limited */ ++ x = 0.966; ++ ++ if( x > 2.0 ) ++ x = 2.0; ++ ++ Sleeping_time = (long)((float)Sleeping_time * x); ++ ++ if( Sleeping_time < 500 ) ++ Sleeping_time = 500; ++ ++ if( x > 0.99 && x < 1.01 && Sleeping_time > ms*500 ) ++ PLL_filter = -1 - 4*PLL_filter; /* locked - it's time to try PLL */ ++ else ++ PLL_filter = 0; ++ ++ Ref_sec = st.tv_sec; ++ Ref_usec = st.tv_usec; ++ Expected_time = 0; ++ dodelay = Sleeping_time; + } +- else if (ms > SyncTime) +- accu += (ms - SyncTime); ++ ++ kusleep( dodelay ); ++ ++ Expected_time += ms * 1000; + } + + #if NeedFunctionPrototypes +--- presents.c.orig Thu Nov 20 03:18:42 1997 ++++ presents.c Thu Nov 20 03:21:38 1997 +@@ -287,7 +287,7 @@ + } + #endif + +- SetPresentWait(PRESENT_TEXT1, frame + 800); ++ SetPresentWait(PRESENT_TEXT1, frame + 200); + } + + #if NeedFunctionPrototypes +@@ -309,7 +309,7 @@ + RenderShape(display, window, justin, justinM, + x, y, 285, 44, True); + +- SetPresentWait(PRESENT_TEXT2, frame + 300); ++ SetPresentWait(PRESENT_TEXT2, frame + 100); + } + + #if NeedFunctionPrototypes +@@ -331,7 +331,7 @@ + RenderShape(display, window, kibell, kibellM, + x, y, 260, 40, True); + +- SetPresentWait(PRESENT_TEXT3, frame + 500); ++ SetPresentWait(PRESENT_TEXT3, frame + 200); + } + + #if NeedFunctionPrototypes +@@ -355,7 +355,7 @@ + RenderShape(display, window, presents, presentsM, + x, y, 410, 44, True); + +- SetPresentWait(PRESENT_TEXT_CLEAR, frame + 750); ++ SetPresentWait(PRESENT_TEXT_CLEAR, frame + 250); + } + + #if NeedFunctionPrototypes +@@ -375,7 +375,7 @@ + + FadeAwayArea(display, window, x, y, 410, 44); + +- SetPresentWait(PRESENT_LETTERS, frame + 10); ++ SetPresentWait(PRESENT_LETTERS, frame + 5); + } + + /* The distances for the gap inbetwen blocks */ +@@ -404,7 +404,7 @@ + DrawLetter(display, window, i, x, y); + x += 10 + dists[i]; + +- SetPresentWait(PRESENT_LETTERS, frame + 300); ++ SetPresentWait(PRESENT_LETTERS, frame + 100); + } + else + { +@@ -416,7 +416,7 @@ + x += dists[3]; + DrawLetter(display, window, 3, x, y); + +- SetPresentWait(PRESENT_SHINE, frame + 200); ++ SetPresentWait(PRESENT_SHINE, frame + 100); + } + + i++; +@@ -463,7 +463,7 @@ + if (in == 11) + { + XCopyArea(display, store, window, gc, 0, 0, 20, 20, x, y); +- SetPresentWait(PRESENT_SPECIAL_TEXT1, frame + 500); ++ SetPresentWait(PRESENT_SPECIAL_TEXT1, frame + 100); + } + } + } +@@ -499,7 +499,7 @@ + len = strlen(wisdom); + x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) - + (XTextWidth(dataFont, wisdom, len) / 2); +- nextFrame = frame + 10; ++ nextFrame = frame + 5; + first = False; + } + +@@ -508,11 +508,11 @@ + if (noSound == False) playSoundFile("key", 60); + DrawText(display, window, x, y, dataFont, red, wisdom, i); + +- nextFrame = frame + 30; ++ nextFrame = frame + 15; + + i++; + if (i > len) +- SetPresentWait(PRESENT_SPECIAL_TEXT2, frame + 700); ++ SetPresentWait(PRESENT_SPECIAL_TEXT2, frame + 150); + } + } + +@@ -542,7 +542,7 @@ + len = strlen(wisdom2); + x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) - + (XTextWidth(dataFont, wisdom2, len) / 2); +- nextFrame = frame + 10; ++ nextFrame = frame + 5; + first = False; + } + +@@ -551,11 +551,11 @@ + if (noSound == False) playSoundFile("key", 60); + DrawText(display, window, x, y, dataFont, red, wisdom2, i); + +- nextFrame = frame + 30; ++ nextFrame = frame + 15; + + i++; + if (i > len) +- SetPresentWait(PRESENT_SPECIAL_TEXT3, frame + 700); ++ SetPresentWait(PRESENT_SPECIAL_TEXT3, frame + 150); + } + } + +@@ -584,7 +584,7 @@ + len = strlen(wisdom3); + x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) - + (XTextWidth(dataFont, wisdom3, len) / 2); +- nextFrame = frame + 10; ++ nextFrame = frame + 5; + first = False; + } + +@@ -593,11 +593,11 @@ + if (noSound == False) playSoundFile("key", 60); + DrawText(display, window, x, y, dataFont, red, wisdom3, i); + +- nextFrame = frame + 30; ++ nextFrame = frame + 15; + + i++; + if (i > len) +- SetPresentWait(PRESENT_CLEAR, frame + 800); ++ SetPresentWait(PRESENT_CLEAR, frame + 200); + } + } + +@@ -642,7 +642,7 @@ + yb -= 10; + + if (yt > ((PLAY_HEIGHT + MAIN_HEIGHT) / 2)) +- SetPresentWait(PRESENT_FINISH, frame + 20); ++ SetPresentWait(PRESENT_FINISH, frame + 10); + + nextFrame = frame + 20; + } |