]> 4ch.mooo.com Git - plz.git/blob - plzpart/plz.c
unable to compile because LINK.EXE is unknown. thus i cannot test original codes...
[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 "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 extern 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                         mov dx, 3c4h\r
100                         mov ax, 0a02h\r
101                         out dx, ax\r
102                 }\r
103 \r
104                 setplzparas(k1,k2,k3,k4);\r
105                 for(y=0;y<MAXY;y+=2)\r
106                         plzline(y,0x0a000+y*6+YADD*6);\r
107                 setplzparas(l1,l2,l3,l4);\r
108                 for(y=1;y<MAXY;y+=2)\r
109                         plzline(y,0x0a000+y*6+YADD*6);\r
110 \r
111 \r
112                 __asm {\r
113                         mov dx, 3c4h\r
114                         mov ax, 0502h\r
115                         out dx, ax\r
116                 }\r
117 \r
118                 setplzparas(k1,k2,k3,k4);\r
119                 for(y=1;y<MAXY;y+=2)\r
120                         plzline(y,0x0a000+y*6+YADD*6);\r
121                 setplzparas(l1,l2,l3,l4);\r
122                 for(y=0;y<MAXY;y+=2)\r
123                         plzline(y,0x0a000+y*6+YADD*6);\r
124                 }\r
125         cop_drop=0; frame_count=0; //while(frame_count==0);\r
126         set_plzstart(500);\r
127         cop_plz=0;\r
128         }\r
129 \r
130 void init_plz()\r
131         {\r
132         int     a,b,c,z;\r
133         int     *pptr=pals;\r
134 \r
135 #ifdef  DO_TABLES\r
136         {\r
137         FILE    *f1,*f2,*f3,*f4;\r
138         f1=fopen("lsini4.inc","wb");\r
139         f2=fopen("lsini16.inc","wb");\r
140         f3=fopen("psini.inc","wb");\r
141         f4=fopen("ptau.inc","wb");\r
142 \r
143         for(a=0;a<1024*16;a++)\r
144                 {\r
145                 if(a<1024*8)\r
146                         {\r
147                         lsini4[a]=(sin(a*DPII/4096)*55+sin(a*DPII/4096*5)*8+sin(a*DPII/4096*15)*2+64)*8;\r
148                         lsini16[a]=(sin(a*DPII/4096)*55+sin(a*DPII/4096*4)*5+sin(a*DPII/4096*17)*3+64)*16;\r
149                         }\r
150                 psini[a]=sin(a*DPII/4096)*55+sin(a*DPII/4096*6)*5+sin(a*DPII/4096*21)*4+64;\r
151                 if((a&15)==0)\r
152                         {\r
153                         if(a<1024*8)\r
154                                 {\r
155                                 fprintf(f1,"\ndw        %4d",lsini4[a]);\r
156                                 fprintf(f2,"\ndw        %4d",lsini16[a]);\r
157                                 }\r
158                         fprintf(f3,"\ndb        %4d",psini[a]);\r
159                         }\r
160                 else    {\r
161                         if(a<1024*8)\r
162                                 {\r
163                                 fprintf(f1,",%4d",lsini4[a]);\r
164                                 fprintf(f2,",%4d",lsini16[a]);\r
165                                 }\r
166                         fprintf(f3,",%4d",psini[a]);\r
167                         }\r
168                 }\r
169 \r
170         fprintf(f4,"{\n%d",ptau[0]=0);\r
171         for(a=1;a<=128;a++)\r
172                 {\r
173                 fprintf(f4,",%3d",ptau[a]=cos(a*DPII/128+3.1415926535)*31+32);\r
174                 if(!(a&15)) fputc('\n',f4);\r
175                 }\r
176         fputc('}',f4); fputc(';',f4);\r
177 \r
178         fclose(f1); fclose(f2); fclose(f3); fclose(f4);\r
179         }\r
180 #endif\r
181         tw_opengraph2();\r
182         cop_start=96*(682-400);\r
183         set_plzstart(60);\r
184 //++++  init_copper();\r
185         for(a=0;a<256;a++) tw_setrgbpalette(a,63,63,63);\r
186 \r
187 //      RGB\r
188         pptr=&pals[0][3];\r
189         for(a=1;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
190         for(a=0;a<64;a++) *pptr++=ptau[63-a],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
191         for(a=0;a<64;a++) *pptr++=ptau[0   ],*pptr++=ptau[0   ],*pptr++=ptau[a];\r
192         for(a=0;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[63-a];\r
193 \r
194 //      RB-black\r
195         pptr=&pals[1][3];\r
196         for(a=1;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
197         for(a=0;a<64;a++) *pptr++=ptau[63-a],*pptr++=ptau[0   ],*pptr++=ptau[a   ];\r
198         for(a=0;a<64;a++) *pptr++=ptau[0   ],*pptr++=ptau[a   ],*pptr++=ptau[63-a];\r
199         for(a=0;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[63  ],*pptr++=ptau[a   ];\r
200 \r
201 //      RB-white\r
202         pptr=&pals[3][3];\r
203         for(a=1;a<64;a++) *pptr++=ptau[a   ],*pptr++=ptau[0   ],*pptr++=ptau[0   ];\r
204         for(a=0;a<64;a++) *pptr++=ptau[63  ],*pptr++=ptau[a   ],*pptr++=ptau[a   ];\r
205         for(a=0;a<64;a++) *pptr++=ptau[63-a],*pptr++=ptau[63-a],*pptr++=ptau[63  ];\r
206         for(a=0;a<64;a++) *pptr++=ptau[0   ],*pptr++=ptau[0   ],*pptr++=ptau[63  ];\r
207 \r
208 //      white\r
209         pptr=&pals[2][3];\r
210         for(a=1;a<64;a++) *pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2;\r
211         for(a=0;a<64;a++) *pptr++=ptau[a   ]/2,*pptr++=ptau[a   ]/2,*pptr++=ptau[a   ]/2;\r
212         for(a=0;a<64;a++) *pptr++=ptau[63-a]/2,*pptr++=ptau[63-a]/2,*pptr++=ptau[63-a]/2;\r
213         for(a=0;a<64;a++) *pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2,*pptr++=ptau[0   ]/2;\r
214 \r
215 //      white II\r
216         pptr=&pals[4][3];\r
217         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
218         for(a=0;a<106;a++)*pptr++=0,*pptr++=0,*pptr++=0;\r
219         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
220 \r
221         pptr=pals;\r
222         for(a=0;a<768;a++,pptr++) *pptr=(*pptr-63)*2;\r
223         for(a=768;a<768*5;a++,pptr++) *pptr*=8;\r
224         }\r
225 \r