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