]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_us.c
p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I...
[16.git] / src / lib / 16_us.c
index ec2b3b28cd5e8aaba2300d51acdd22c03e93dac5..ffd4d8ad8b0f2b4ba35138402e6c6bf94bd91ce4 100755 (executable)
@@ -1,57 +1,70 @@
-/*#include "src/lib/16_in.h"\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
-#define CtlPanelSX     1\r
-#define CtlPanelSY     1\r
-#define CtlPanelEX     1\r
-#define CtlPanelEY     1\r
-#define TickBase               1\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
+//      Control panel data\r
+\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
-       //++++PrintY = py = CtlPanelSY + 4;\r
-       //++++px = CtlPanelSX + 6;\r
-       //++++VWB_Bar(px,py,42,6,BackColor);\r
+       PrintY = py = CtlPanelSY + 4;\r
+       px = CtlPanelSX + 6;\r
+       VLB_Bar(px,py,42,6,3/*BackColor*/, &gvar->video.ofs);\r
        //++++USL_DrawString("YOU:");\r
-       //++++PrintX = px;\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
-       //++++px = CtlPanelSX + 108;\r
-       //++++VWB_Bar(px,py,50,6,BackColor);\r
+       px = CtlPanelSX + 108;\r
+       VLB_Bar(px,py,50,6,3/*BackColor*/, &gvar->video.ofs);\r
        //++++USL_DrawString("COMP:");\r
-       //++++PrintX = px;\r
+       modexprint(gvar->video.page, px, py, 1, 0, 4, 8, 1, "COMP:");\r
+       PrintX = px;\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
-       word        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
@@ -61,7 +74,7 @@ USL_PlayPong(void)
        {\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
@@ -87,20 +100,28 @@ USL_PlayPong(void)
                                cx -= 1;\r
                }\r
 \r
-               //++++VWB_Bar(BallMinX,BallMinY - 1,\r
-               //              BallMaxX - BallMinX + 5,BallMaxY - BallMinY + 7,\r
-               //              BackColor);\r
-               //++++VWB_DrawSprite(cx,CPaddleY,PADDLESPR);\r
-               //++++VWB_DrawSprite(kx,KPaddleY,PADDLESPR);\r
+//++++\r
+//#if 1\r
+               VLB_Bar(BallMinX,BallMinY - 1,\r
+                               BallMaxX - BallMinX + 5,BallMaxY - BallMinY + 7,\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
@@ -110,11 +131,11 @@ USL_PlayPong(void)
                                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
@@ -124,11 +145,11 @@ USL_PlayPong(void)
                                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
@@ -142,19 +163,19 @@ USL_PlayPong(void)
                                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
@@ -164,7 +185,7 @@ USL_PlayPong(void)
                                        }\r
                                        rx = kx;\r
                                        revdir = true;\r
-                                       //++++SD__PlaySound(KEENPADDLESND);\r
+//++++                                 SD__PlaySound(KEENPADDLESND);\r
                                }\r
                                if (revdir)\r
                                {\r
@@ -175,7 +196,7 @@ USL_PlayPong(void)
                                        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
@@ -187,13 +208,13 @@ USL_PlayPong(void)
                        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 ((inpu.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
@@ -210,3 +231,35 @@ USL_PongCustom(UserCall call,struct UserItem far *item)
        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
+       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