]> 4ch.mooo.com Git - plz.git/blob - plz.c
wwww
[plz.git] / plz.c
1 #include <stdio.h>\r
2 #include <math.h>\r
3 #include <conio.h>\r
4 #include <dos.h>\r
5 #include "plz.h"\r
6 //#include "tweak.h"\r
7 \r
8 //#define DO_TABLES\r
9 #define DPII (3.1415926535*2.0)\r
10 \r
11 #define LINELEN 41\r
12 #define MAXY 280\r
13 #define YADD 0\r
14 #define XADD 0\r
15 #define SINMASK 4095\r
16 #define PLZSINI(p1,p2,p3,p4)  *ptr++ = (psini[x*32+lsini[y*2+p2]*16+p1] + psini[y*4+lsini[x*64+p4]*4+p3]) + (psini[x*32+16+lsini[y*2+p2]*16+p1] + psini[y*4+lsini[x*64+32+p4]*4+p3])*256;\r
17 \r
18 // extern int init_copper();\r
19 // extern int close_copper();\r
20 //extern int far frame_count;\r
21 int frame_count;\r
22 extern int far cop_drop;\r
23 extern int far cop_plz;\r
24 extern int far cop_start;\r
25 extern char far * cop_fadepal;\r
26 extern char fadepal[768];\r
27 extern char far *cop_pal;\r
28 extern int  do_pal;\r
29 \r
30 //extern int plzline(int y, int vseg);\r
31 //extern int setplzparas(int c1, int c2, int c3, int c4);\r
32 //extern int set_plzstart(int y);\r
33 extern char far psini[16384];\r
34 extern int far lsini4[8192];\r
35 extern int far lsini16[8192];\r
36 \r
37 int (* vmem)[LINELEN]=MK_FP(0x0a000,0);\r
38 //char  psini[16384]=\r
39 //#include "psini.inc"\r
40 //char  lsini[16384]=\r
41 //#include "lsini.inc"\r
42 \r
43 char    ptau[256]=\r
44 #include "ptau.inc"\r
45 \r
46 int     pals[6][768];\r
47 int     curpal=0;\r
48 int     timetable[10]={64*6*2-45,64*6*4-45,64*6*5-45,64*6*6-45,64*6*7+90,0};\r
49 int     ttptr=0;\r
50 \r
51 int     l1=1000, l2=2000, l3=3000, l4=4000;\r
52 int     k1=3500, k2=2300, k3=3900, k4=3670;\r
53 \r
54 int     il1=1000, il2=2000, il3=3000, il4=4000;\r
55 int     ik1=3500, ik2=2300, ik3=3900, ik4=3670;\r
56 \r
57 int     inittable[10][8]={{1000,2000,3000,4000,3500,2300,3900,3670},\r
58                           {1000,2000,4000,4000,1500,2300,3900,1670},\r
59                           {3500,1000,3000,1000,3500,3300,2900,2670},\r
60                           {1000,2000,3000,4000,3500,2300,3900,3670},\r
61                           {1000,2000,3000,4000,3500,2300,3900,3670},\r
62                           {1000,2000,3000,4000,3500,2300,3900,3670}};\r
63 \r
64 void plz(){\r
65         register int x,y;\r
66         int     *ptr;\r
67         long    tim=0,count=0;\r
68         int     ch=0,sync=2;\r
69 \r
70         //while(dis_musplus()<0 && !dis_exit());\r
71         //dis_setmframe(0);\r
72 \r
73         init_plz();\r
74         cop_drop=128;\r
75         cop_fadepal=(char far *)pals[curpal++];\r
76 \r
77         frame_count=0;\r
78         while(!kbhit())\r
79                 {\r
80                 tim+=frame_count; frame_count=0; count++;\r
81                 //if(dis_getmframe()>timetable[ttptr])\r
82                 //      {\r
83                         memset(fadepal,0,768);\r
84                         cop_drop=1;\r
85                         cop_fadepal=(char far *)pals[curpal++];\r
86                         ttptr++;\r
87                         il1=inittable[ttptr][0];\r
88                         il2=inittable[ttptr][1];\r
89                         il3=inittable[ttptr][2];\r
90                         il4=inittable[ttptr][3];\r
91                         ik1=inittable[ttptr][4];\r
92                         ik2=inittable[ttptr][5];\r
93                         ik3=inittable[ttptr][6];\r
94                         ik4=inittable[ttptr][7];\r
95                 //      }\r
96                 if(curpal==5 && cop_drop>64) break;\r
97 \r
98                 __asm\r
99                 {\r
100                         mov dx, 3c4h\r
101                         mov ax, 0a02h\r
102                         out dx, ax\r
103                 }\r
104 \r
105                 setplzparas(k1,k2,k3,k4);\r
106                 for(y=0;y<MAXY;y+=2)\r
107                         plzline(y,0x0a000+y*6+YADD*6);\r
108                 setplzparas(l1,l2,l3,l4);\r
109                 for(y=1;y<MAXY;y+=2)\r
110                         plzline(y,0x0a000+y*6+YADD*6);\r
111 \r
112 \r
113                 __asm\r
114                 {\r
115                         mov dx, 3c4h\r
116                         mov ax, 0502h\r
117                         out dx, ax\r
118                 }\r
119 \r
120                 setplzparas(k1,k2,k3,k4);\r
121                 for(y=1;y<MAXY;y+=2)\r
122                         plzline(y,0x0a000+y*6+YADD*6);\r
123                 setplzparas(l1,l2,l3,l4);\r
124                 for(y=0;y<MAXY;y+=2)\r
125                         plzline(y,0x0a000+y*6+YADD*6);\r
126                 }\r
127         cop_drop=0; frame_count=0; //while(frame_count==0);\r
128         set_plzstart(500);\r
129         cop_plz=0;\r
130         }\r
131 \r
132 void init_plz()\r
133         {\r
134         int     a,b,c,z;\r
135         int     *pptr=pals;\r
136 \r
137 #ifdef  DO_TABLES\r
138         {\r
139         FILE    *f1,*f2,*f3,*f4;\r
140         f1=fopen("lsini4.inc","wb");\r
141         f2=fopen("lsini16.inc","wb");\r
142         f3=fopen("psini.inc","wb");\r
143         f4=fopen("ptau.inc","wb");\r
144 \r
145         for(a=0;a<1024*16;a++)\r
146                 {\r
147                 if(a<1024*8)\r
148                         {\r
149                         lsini4[a]=(sin(a*DPII/4096)*55+sin(a*DPII/4096*5)*8+sin(a*DPII/4096*15)*2+64)*8;\r
150                         lsini16[a]=(sin(a*DPII/4096)*55+sin(a*DPII/4096*4)*5+sin(a*DPII/4096*17)*3+64)*16;\r
151                         }\r
152                 psini[a]=sin(a*DPII/4096)*55+sin(a*DPII/4096*6)*5+sin(a*DPII/4096*21)*4+64;\r
153                 if((a&15)==0)\r
154                         {\r
155                         if(a<1024*8)\r
156                                 {\r
157                                 fprintf(f1,"\ndw        %4d",lsini4[a]);\r
158                                 fprintf(f2,"\ndw        %4d",lsini16[a]);\r
159                                 }\r
160                         fprintf(f3,"\ndb        %4d",psini[a]);\r
161                         }\r
162                 else    {\r
163                         if(a<1024*8)\r
164                                 {\r
165                                 fprintf(f1,",%4d",lsini4[a]);\r
166                                 fprintf(f2,",%4d",lsini16[a]);\r
167                                 }\r
168                         fprintf(f3,",%4d",psini[a]);\r
169                         }\r
170                 }\r
171 \r
172         fprintf(f4,"{\n%d",ptau[0]=0);\r
173         for(a=1;a<=128;a++)\r
174                 {\r
175                 fprintf(f4,",%3d",ptau[a]=cos(a*DPII/128+3.1415926535)*31+32);\r
176                 if(!(a&15)) fputc('\n',f4);\r
177                 }\r
178         fputc('}',f4); fputc(';',f4);\r
179 \r
180         fclose(f1); fclose(f2); fclose(f3); fclose(f4);\r
181         }\r
182 #endif\r
183         tw_opengraph2();\r
184         cop_start=96*(682-400);\r
185         set_plzstart(60);\r
186 //++++  init_copper();\r
187         for(a=0;a<256;a++) tw_setrgbpalette(a,63,63,63);\r
188 \r
189 //      RGB\r
190         pptr=&pals[0][3];\r
191         for(a=1;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
192         for(a=0;a<64;a++) *pptr++=ptau[63-a],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
193         for(a=0;a<64;a++) *pptr++=ptau[0   ],*pptr++=ptau[0   ],*pptr++=ptau[a];\r
194         for(a=0;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[63-a];\r
195 \r
196 //      RB-black\r
197         pptr=&pals[1][3];\r
198         for(a=1;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
199         for(a=0;a<64;a++) *pptr++=ptau[63-a],*pptr++=ptau[0   ],*pptr++=ptau[a   ];\r
200         for(a=0;a<64;a++) *pptr++=ptau[0   ],*pptr++=ptau[a   ],*pptr++=ptau[63-a];\r
201         for(a=0;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[63  ],*pptr++=ptau[a   ];\r
202 \r
203 //      RB-white\r
204         pptr=&pals[3][3];\r
205         for(a=1;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
206         for(a=0;a<64;a++) *pptr++=ptau[63  ],*pptr++=ptau[a   ],*pptr++=ptau[a   ];\r
207         for(a=0;a<64;a++) *pptr++=ptau[63-a],*pptr++=ptau[63-a],*pptr++=ptau[63  ];\r
208         for(a=0;a<64;a++) *pptr++=ptau[0   ],*pptr++=ptau[0   ],*pptr++=ptau[63  ];\r
209 \r
210 //      white\r
211         pptr=&pals[2][3];\r
212         for(a=1;a<64;a++) *pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2;\r
213         for(a=0;a<64;a++) *pptr++=ptau[a   ]/2,*pptr++=ptau[a   ]/2,*pptr++=ptau[a   ]/2;\r
214         for(a=0;a<64;a++) *pptr++=ptau[63-a]/2,*pptr++=ptau[63-a]/2,*pptr++=ptau[63-a]/2;\r
215         for(a=0;a<64;a++) *pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2;\r
216 \r
217 //      white II\r
218         pptr=&pals[4][3];\r
219         for(a=1;a<75;a++) *pptr++=ptau[63-a*64/75],*pptr++=ptau[63-a*64/75],*pptr++=ptau[63-a*64/75];\r
220         for(a=0;a<106;a++)*pptr++=0,*pptr++=0,*pptr++=0;\r
221         for(a=0;a<75;a++) *pptr++=ptau[a*64/75]*8/10,*pptr++=ptau[a*64/75]*9/10,*pptr++=ptau[a*64/75];\r
222 \r
223         pptr=pals;\r
224         for(a=0;a<768;a++,pptr++) *pptr=(*pptr-63)*2;\r
225         for(a=768;a<768*5;a++,pptr++) *pptr*=8;\r
226         }\r
227 \r