]> 4ch.mooo.com Git - 16.git/blob - src/lib/16_us.c
__seguse.txt added to show _seg usage also OpenVGMFile needs to be ported to 16_snd...
[16.git] / src / lib / 16_us.c
1 /*#include "src/lib/16_in.h"\r
2 static word far* clockw= (word far*) 0x046C; // 18.2hz clock\r
3 \r
4 #define CtlPanelSX      1\r
5 #define CtlPanelSY      1\r
6 #define CtlPanelEX      1\r
7 #define CtlPanelEY      1\r
8 #define TickBase                1\r
9 \r
10 #define PaddleMinX      (CtlPanelSX + 3)\r
11 #define PaddleMaxX      (CtlPanelEX - 15)\r
12 #define BallMinX        (CtlPanelSX + 2)\r
13 #define BallMinY        (CtlPanelSY + 12 + 2)\r
14 #define BallMaxX        (CtlPanelEX - 6)\r
15 #define BallMaxY        (CtlPanelEY - 13)\r
16 #define CPaddleY        (BallMinY + 4)\r
17 #define KPaddleY        (BallMaxY - 2)\r
18 void\r
19 USL_DrawPongScore(word k,word c)\r
20 {\r
21         //++++fontcolor = HiliteColor;\r
22         //++++PrintY = py = CtlPanelSY + 4;\r
23         //++++px = CtlPanelSX + 6;\r
24         //++++VWB_Bar(px,py,42,6,BackColor);\r
25         //++++USL_DrawString("YOU:");\r
26         //++++PrintX = px;\r
27         //++++US_PrintUnsigned(k);\r
28         //++++px = CtlPanelSX + 108;\r
29         //++++VWB_Bar(px,py,50,6,BackColor);\r
30         //++++USL_DrawString("COMP:");\r
31         //++++PrintX = px;\r
32         //++++US_PrintUnsigned(c);\r
33 }\r
34 \r
35 void\r
36 USL_PlayPong(void)\r
37 {\r
38         boolean         ball,killball,revdir,done,lastscore;\r
39         word            cycle,\r
40                                 x,y,\r
41                                 kx,cx,\r
42                                 rx,\r
43                                 bx,by,\r
44                                 kscore,cscore,\r
45                                 speedup;\r
46         int                     bdx,bdy;\r
47         word        balltime,waittime;\r
48         CursorInfo      cursorinfo;\r
49         word TimeCount = *clockw;\r
50 \r
51         kx = cx = PaddleMinX + ((PaddleMaxX - PaddleMinX) / 2);\r
52         bx = by = bdx = bdy = 0;\r
53         kscore = cscore = 0;\r
54         USL_DrawPongScore(0,0);\r
55         cycle = 0;\r
56         revdir = false;\r
57         killball = true;\r
58         done = false;\r
59         lastscore = false;\r
60         do\r
61         {\r
62                 waittime = TimeCount;\r
63 \r
64                 IN_ReadCursor(&cursorinfo);\r
65                 if (((cursorinfo.x < 0) || IN_KeyDown(sc_LeftArrow)) && (kx > PaddleMinX))\r
66                         kx -= 2;\r
67                 else if (((cursorinfo.x > 0) || IN_KeyDown(sc_RightArrow)) && (kx < PaddleMaxX))\r
68                         kx += 2;\r
69 \r
70                 if (killball)\r
71                 {\r
72                         ball = false;\r
73                         balltime = TimeCount + TickBase;\r
74                         speedup = 10;\r
75                         killball = false;\r
76                 }\r
77 \r
78                 if (ball && (cycle++ % 3))\r
79                 {\r
80                         x = (bx >> 2);\r
81                         if (!(x & 1))\r
82                                 x += (US_RndT() & 1);\r
83 \r
84                         if ((cx + 6 < x) && (cx < PaddleMaxX))\r
85                                 cx += 1;\r
86                         else if ((cx + 6 > x) && (cx > PaddleMinX))\r
87                                 cx -= 1;\r
88                 }\r
89 \r
90                 //++++VWB_Bar(BallMinX,BallMinY - 1,\r
91                 //              BallMaxX - BallMinX + 5,BallMaxY - BallMinY + 7,\r
92                 //              BackColor);\r
93                 //++++VWB_DrawSprite(cx,CPaddleY,PADDLESPR);\r
94                 //++++VWB_DrawSprite(kx,KPaddleY,PADDLESPR);\r
95                 if (ball)\r
96                 {\r
97                         if\r
98                         (\r
99                                 (((bx + bdx) >> 2) > BallMaxX)\r
100                         ||      (((bx + bdx) >> 2) < BallMinX)\r
101                         )\r
102                         {\r
103                                 //++++SD__PlaySound(BALLBOUNCESND);\r
104                                 bdx = -bdx;\r
105                         }\r
106                         bx += bdx;\r
107 \r
108                         if (((by + bdy) >> 2) > BallMaxY)\r
109                         {\r
110                                 killball = true;\r
111                                 lastscore = false;\r
112                                 cscore++;\r
113                                 //++++SD__PlaySound(COMPSCOREDSND);\r
114                                 USL_DrawPongScore(kscore,cscore);\r
115                                 if (cscore == 21)\r
116                                 {\r
117                                         USL_CtlDialog("You lost!","Press any key",nil);\r
118                                         done = true;\r
119                                         continue;\r
120                                 }\r
121                         }\r
122                         else if (((by + bdy) >> 2) < BallMinY)\r
123                         {\r
124                                 killball = true;\r
125                                 lastscore = true;\r
126                                 kscore++;\r
127                                 //++++SD__PlaySound(KEENSCOREDSND);\r
128                                 USL_DrawPongScore(kscore,cscore);\r
129                                 if (kscore == 21)\r
130                                 {\r
131                                         USL_CtlDialog("You won!","Press any key",nil);\r
132                                         done = true;\r
133                                         continue;\r
134                                 }\r
135                         }\r
136                         by += bdy;\r
137 \r
138                         x = bx >> 2;\r
139                         y = by >> 2;\r
140                         if (!killball)\r
141                         {\r
142                                 if\r
143                                 (\r
144                                         (bdy < 0)\r
145                                 &&      ((y >= CPaddleY) && (y < CPaddleY + 3))\r
146                                 &&      ((x >= (cx - 5)) && (x < (cx + 11)))\r
147                                 )\r
148                                 {\r
149                                         rx = cx;\r
150                                         revdir = true;\r
151                                         //++++SD__PlaySound(COMPPADDLESND);\r
152                                 }\r
153                                 else if\r
154                                 (\r
155                                         (bdy > 0)\r
156                                 &&      ((y >= (KPaddleY - 3)) && (y < KPaddleY))\r
157                                 &&      ((x >= (kx - 5)) && (x < (kx + 11)))\r
158                                 )\r
159                                 {\r
160                                         if (((bdy >> 2) < 3) && !(--speedup))\r
161                                         {\r
162                                                 bdy++;\r
163                                                 speedup = 10;\r
164                                         }\r
165                                         rx = kx;\r
166                                         revdir = true;\r
167                                         //++++SD__PlaySound(KEENPADDLESND);\r
168                                 }\r
169                                 if (revdir)\r
170                                 {\r
171                                         bdy = -bdy;\r
172                                         bdx = ((x + 5 - rx) >> 1) - (1 << 2);\r
173                                         if (!bdx)\r
174                                                 bdx--;\r
175                                         revdir = false;\r
176                                 }\r
177                         }\r
178                         //++++VWB_DrawSprite(x,y,(x & 1)? BALL1PIXELTOTHERIGHTSPR : BALLSPR);\r
179                 }\r
180                 else if (TimeCount >= balltime)\r
181                 {\r
182                         ball = true;\r
183                         bdx = 1 - (US_RndT() % 3);\r
184                         bdy = 2;\r
185                         if (lastscore)\r
186                                 bdy = -bdy;\r
187                         bx = (BallMinX + ((BallMaxX - BallMinX) / 2)) << 2;\r
188                         by = (BallMinY + ((BallMaxY - BallMinY) / 2)) << 2;\r
189                 }\r
190                 //++++VW_UpdateScreen();\r
191                 while (waittime == TimeCount)\r
192                         ;       // DEBUG - do adaptiveness\r
193         } while ((inpu.LastScan != sc_Escape) && !done);\r
194         IN_ClearKeysDown();\r
195 }\r
196 \r
197 #pragma argsused\r
198 static boolean\r
199 USL_PongCustom(UserCall call,struct UserItem far *item)\r
200 {\r
201         if (call != uic_SetupCard)\r
202                 return(false);\r
203 \r
204         //++++VWB_DrawPic(0,0,CP_MENUSCREENPIC);\r
205         //++++VWB_DrawPic(CtlPanelSX + 56,CtlPanelSY,CP_PADDLEWARPIC);\r
206         //++++VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelSY + 12,HiliteColor ^ BackColor);\r
207         //++++VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelEY - 7,HiliteColor ^ BackColor);\r
208         USL_PlayPong();\r
209 \r
210         return(true);\r
211 }\r
212 */\r