-#if 0\r
+#include "src/lib/16_us.h"\r
+\r
+word px,py;\r
+word PrintX,PrintY;\r
+word WindowX,WindowY,WindowW,WindowH;\r
+\r
+static word far* clockw= (word far*) 0x046C; // 18.2hz clock\r
+\r
+// Control panel data\r
\r
-#define PaddleMinX (CtlPanelSX + 3)\r
-#define PaddleMaxX (CtlPanelEX - 15)\r
-#define BallMinX (CtlPanelSX + 2)\r
-#define BallMinY (CtlPanelSY + 12 + 2)\r
-#define BallMaxX (CtlPanelEX - 6)\r
-#define BallMaxY (CtlPanelEY - 13)\r
-#define CPaddleY (BallMinY + 4)\r
-#define KPaddleY (BallMaxY - 2)\r
+#define CtlPanelSX 74\r
+#define CtlPanelSY 48\r
+#define CtlPanelEX 234\r
+#define CtlPanelEY 150\r
+#define CtlPanelW (CtlPanelEX - CtlPanelSX)\r
+#define CtlPanelH (CtlPanelEY - CtlPanelSY)\r
+\r
+#define TickBase 70 // 70Hz per tick - used as a base for timer 0\r
+\r
+#define PaddleMinX (CtlPanelSX + 3)\r
+#define PaddleMaxX (CtlPanelEX - 15)\r
+#define BallMinX (CtlPanelSX + 2)\r
+#define BallMinY (CtlPanelSY + 12 + 2)\r
+#define BallMaxX (CtlPanelEX - 6)\r
+#define BallMaxY (CtlPanelEY - 13)\r
+#define CPaddleY (BallMinY + 4)\r
+#define KPaddleY (BallMaxY - 2)\r
void\r
-USL_DrawPongScore(word k,word c)\r
+USL_DrawPongScore(word k,word c, global_game_variables_t *gvar)\r
{\r
- fontcolor = HiliteColor;\r
+ //++++fontcolor = HiliteColor;\r
PrintY = py = CtlPanelSY + 4;\r
px = CtlPanelSX + 6;\r
- VWB_Bar(px,py,42,6,BackColor);\r
- USL_DrawString("YOU:");\r
+ VLB_Bar(px,py,42,6,3/*BackColor*/, &gvar->video.ofs);\r
+ //++++USL_DrawString("YOU:");\r
+// modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, boolean sw, const byte *str)\r
+ modexprint(gvar->video.page, px, py, 1, 0, 4, 8, 1, "YOU:");\r
PrintX = px;\r
- US_PrintUnsigned(k);\r
+ //++++US_PrintUnsigned(k);\r
px = CtlPanelSX + 108;\r
- VWB_Bar(px,py,50,6,BackColor);\r
- USL_DrawString("COMP:");\r
+ VLB_Bar(px,py,50,6,3/*BackColor*/, &gvar->video.ofs);\r
+ //++++USL_DrawString("COMP:");\r
+ modexprint(gvar->video.page, px, py, 1, 0, 4, 8, 1, "COMP:");\r
PrintX = px;\r
- US_PrintUnsigned(c);\r
+ //++++US_PrintUnsigned(c);\r
}\r
\r
void\r
-USL_PlayPong(void)\r
+USL_PlayPong(global_game_variables_t *gvar)\r
{\r
- boolean ball,killball,revdir,done,lastscore;\r
- word cycle,\r
+ boolean ball,killball,revdir,done,lastscore;\r
+ word cycle,\r
x,y,\r
kx,cx,\r
rx,\r
bx,by,\r
kscore,cscore,\r
speedup;\r
- int bdx,bdy;\r
- longword balltime,waittime;\r
- CursorInfo cursorinfo;\r
+ int bdx,bdy;\r
+ word balltime,waittime;\r
+ CursorInfo cursorinfo;\r
+ word TimeCount = *clockw;\r
\r
kx = cx = PaddleMinX + ((PaddleMaxX - PaddleMinX) / 2);\r
bx = by = bdx = bdy = 0;\r
kscore = cscore = 0;\r
- USL_DrawPongScore(0,0);\r
+ USL_DrawPongScore(0,0, gvar);\r
cycle = 0;\r
revdir = false;\r
killball = true;\r
{\r
waittime = TimeCount;\r
\r
- IN_ReadCursor(&cursorinfo);\r
+ IN_ReadCursor(&cursorinfo, gvar);\r
if (((cursorinfo.x < 0) || IN_KeyDown(sc_LeftArrow)) && (kx > PaddleMinX))\r
kx -= 2;\r
else if (((cursorinfo.x > 0) || IN_KeyDown(sc_RightArrow)) && (kx < PaddleMaxX))\r
cx -= 1;\r
}\r
\r
- VWB_Bar(BallMinX,BallMinY - 1,\r
+//++++\r
+//#if 1\r
+ VLB_Bar(BallMinX,BallMinY - 1,\r
BallMaxX - BallMinX + 5,BallMaxY - BallMinY + 7,\r
- BackColor);\r
+ 3/*BackColor*/, &gvar->video.ofs);\r
+#if 0\r
VWB_DrawSprite(cx,CPaddleY,PADDLESPR);\r
VWB_DrawSprite(kx,KPaddleY,PADDLESPR);\r
+\r
+ modexputPixel(gvar->video.page, BallMinX, BallMinY, 3);\r
+#endif\r
+ modexputPixel(gvar->video.page, cx, CPaddleY, 3);\r
+ modexputPixel(gvar->video.page, kx, KPaddleY, 3);\r
if (ball)\r
{\r
if\r
(\r
(((bx + bdx) >> 2) > BallMaxX)\r
- || (((bx + bdx) >> 2) < BallMinX)\r
+ || (((bx + bdx) >> 2) < BallMinX)\r
)\r
{\r
- SD_PlaySound(BALLBOUNCESND);\r
+//++++ SD__PlaySound(BALLBOUNCESND);\r
bdx = -bdx;\r
}\r
bx += bdx;\r
killball = true;\r
lastscore = false;\r
cscore++;\r
- SD_PlaySound(COMPSCOREDSND);\r
- USL_DrawPongScore(kscore,cscore);\r
+//++++ SD__PlaySound(COMPSCOREDSND);\r
+ USL_DrawPongScore(kscore,cscore, gvar);\r
if (cscore == 21)\r
{\r
- USL_CtlDialog("You lost!","Press any key",nil);\r
+//++++ USL_CtlDialog("You lost!","Press any key",nil);\r
done = true;\r
continue;\r
}\r
killball = true;\r
lastscore = true;\r
kscore++;\r
- SD_PlaySound(KEENSCOREDSND);\r
- USL_DrawPongScore(kscore,cscore);\r
+//++++ SD__PlaySound(KEENSCOREDSND);\r
+ USL_DrawPongScore(kscore,cscore, gvar);\r
if (kscore == 21)\r
{\r
- USL_CtlDialog("You won!","Press any key",nil);\r
+//++++ USL_CtlDialog("You won!","Press any key",nil);\r
done = true;\r
continue;\r
}\r
if\r
(\r
(bdy < 0)\r
- && ((y >= CPaddleY) && (y < CPaddleY + 3))\r
- && ((x >= (cx - 5)) && (x < (cx + 11)))\r
+ && ((y >= CPaddleY) && (y < CPaddleY + 3))\r
+ && ((x >= (cx - 5)) && (x < (cx + 11)))\r
)\r
{\r
rx = cx;\r
revdir = true;\r
- SD_PlaySound(COMPPADDLESND);\r
+//++++ SD__PlaySound(COMPPADDLESND);\r
}\r
else if\r
(\r
(bdy > 0)\r
- && ((y >= (KPaddleY - 3)) && (y < KPaddleY))\r
- && ((x >= (kx - 5)) && (x < (kx + 11)))\r
+ && ((y >= (KPaddleY - 3)) && (y < KPaddleY))\r
+ && ((x >= (kx - 5)) && (x < (kx + 11)))\r
)\r
{\r
if (((bdy >> 2) < 3) && !(--speedup))\r
}\r
rx = kx;\r
revdir = true;\r
- SD_PlaySound(KEENPADDLESND);\r
+//++++ SD__PlaySound(KEENPADDLESND);\r
}\r
if (revdir)\r
{\r
revdir = false;\r
}\r
}\r
- VWB_DrawSprite(x,y,(x & 1)? BALL1PIXELTOTHERIGHTSPR : BALLSPR);\r
+//++++ VWB_DrawSprite(x,y,(x & 1)? BALL1PIXELTOTHERIGHTSPR : BALLSPR);\r
}\r
else if (TimeCount >= balltime)\r
{\r
bx = (BallMinX + ((BallMaxX - BallMinX) / 2)) << 2;\r
by = (BallMinY + ((BallMaxY - BallMinY) / 2)) << 2;\r
}\r
- VW_UpdateScreen();\r
- while (waittime == TimeCount)\r
- ; // DEBUG - do adaptiveness\r
- } while ((LastScan != sc_Escape) && !done);\r
+//++++ VW_UpdateScreen();\r
+ while (waittime == TimeCount){}\r
+ //; // DEBUG - do adaptiveness\r
+ } while ((gvar->in.inst->LastScan != sc_Escape) && !done);\r
IN_ClearKeysDown();\r
}\r
-\r
+/*\r
#pragma argsused\r
static boolean\r
USL_PongCustom(UserCall call,struct UserItem far *item)\r
if (call != uic_SetupCard)\r
return(false);\r
\r
- VWB_DrawPic(0,0,CP_MENUSCREENPIC);\r
- VWB_DrawPic(CtlPanelSX + 56,CtlPanelSY,CP_PADDLEWARPIC);\r
- VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelSY + 12,HiliteColor ^ BackColor);\r
- VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelEY - 7,HiliteColor ^ BackColor);\r
+ //++++VWB_DrawPic(0,0,CP_MENUSCREENPIC);\r
+ //++++VWB_DrawPic(CtlPanelSX + 56,CtlPanelSY,CP_PADDLEWARPIC);\r
+ //++++VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelSY + 12,HiliteColor ^ BackColor);\r
+ //++++VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelEY - 7,HiliteColor ^ BackColor);\r
USL_PlayPong();\r
\r
return(true);\r
}\r
+*/\r
+///////////////////////////////////////////////////////////////////////////\r
+//\r
+// US_RndT - Returns the next 8-bit pseudo random number\r
+//\r
+///////////////////////////////////////////////////////////////////////////\r
+int US_RndT()\r
+{\r
+ int rndindex = 0;\r
\r
-#endif\r
+ byte rndtable[] = {\r
+ 0, 8, 109, 220, 222, 241, 149, 107, 75, 248, 254, 140, 16, 66,\r
+ 74, 21, 211, 47, 80, 242, 154, 27, 205, 128, 161, 89, 77, 36,\r
+ 95, 110, 85, 48, 212, 140, 211, 249, 22, 79, 200, 50, 28, 188,\r
+ 52, 140, 202, 120, 68, 145, 62, 70, 184, 190, 91, 197, 152, 224,\r
+ 149, 104, 25, 178, 252, 182, 202, 182, 141, 197, 4, 81, 181, 242,\r
+ 145, 42, 39, 227, 156, 198, 225, 193, 219, 93, 122, 175, 249, 0,\r
+ 175, 143, 70, 239, 46, 246, 163, 53, 163, 109, 168, 135, 2, 235,\r
+ 25, 92, 20, 145, 138, 77, 69, 166, 78, 176, 173, 212, 166, 113,\r
+ 94, 161, 41, 50, 239, 49, 111, 164, 70, 60, 2, 37, 171, 75,\r
+ 136, 156, 11, 56, 42, 146, 138, 229, 73, 146, 77, 61, 98, 196,\r
+ 135, 106, 63, 197, 195, 86, 96, 203, 113, 101, 170, 247, 181, 113,\r
+ 80, 250, 108, 7, 255, 237, 129, 226, 79, 107, 112, 166, 103, 241,\r
+ 24, 223, 239, 120, 198, 58, 60, 82, 128, 3, 184, 66, 143, 224,\r
+ 145, 224, 81, 206, 163, 45, 63, 90, 168, 114, 59, 33, 159, 95,\r
+ 28, 139, 123, 98, 125, 196, 15, 70, 194, 253, 54, 14, 109, 226,\r
+ 71, 17, 161, 93, 186, 87, 244, 138, 20, 52, 123, 251, 26, 36,\r
+ 17, 46, 52, 231, 232, 76, 31, 221, 84, 37, 216, 165, 212, 106,\r
+ 197, 242, 98, 43, 39, 175, 254, 145, 190, 84, 118, 222, 187, 136,\r
+ 120, 163, 236, 249 };\r
+ rndindex = (rndindex+1)&0xff;\r
+ return rndtable[rndindex];\r
+}\r