]> 4ch.mooo.com Git - plz.git/blob - u2orig/PLZFILL.C
unable to compile because LINK.EXE is unknown. thus i cannot test original codes...
[plz.git] / u2orig / PLZFILL.C
1 #include <stdio.h>\r
2 #include <conio.h>\r
3 #include <dos.h>\r
4 #include <math.h>\r
5 #include "tweak.h"\r
6 \r
7 extern far do_line(char far *to, int dx, int dy, int cnt, char far *from, long txx1, long txy1, long txx2, long txy2, int dseg);\r
8 extern far do_block(int ycnt);\r
9 extern far do_clear(char far *vmem, int far *otau, int far *ntau);\r
10 \r
11 extern int acstau[256];\r
12 int     sini[2000];\r
13 char    (* far vmem)[160]=MK_FP(0x0a000,0);\r
14 extern char far kuva1[128][256];\r
15 extern char far kuva2[128][256];\r
16 extern char far kuva3[128][256];\r
17 extern char far dist1[128][256];\r
18 char    far buu[1000];\r
19 char    sinx[128], siny[128];\r
20 char    pal[768];\r
21 \r
22 int     clrtau[8][256][2];\r
23 int     clrptr=0;\r
24 \r
25 initvect() {\r
26         int     a,b,x,y,s,d=0,p=0,ch;\r
27 \r
28         for(a=0;a<1524;a++)\r
29                 {\r
30                 sini[a]=s=sin(a/1024.0*M_PI*4)*127;\r
31                 s-=sini[a];\r
32                 }\r
33 \r
34 /*      for(a=0;a<65;a++) for(b=0;b<256;b++) // chessboard\r
35                 { x=1; if((a>>4)&1) x^=3; if((b>>5)&1) x^=3; kuva[a][b]=x; }\r
36 \r
37         pal[0*192+3*1]=pal[0*192+3*1+1]=pal[0*192+3*1+2]=40;\r
38         pal[0*192+3*2]=pal[0*192+3*2+1]=pal[0*192+3*2+2]=60;\r
39 */\r
40         for(a=1;a<32;a++)               // must-sini-valk\r
41                 { pal[0*192+a*3]=0; pal[0*192+a*3+1]=0; pal[0*192+a*3+2]=a*2; }\r
42         for(a=0;a<32;a++)\r
43                 { pal[0*192+a*3+32*3]=a*2; pal[0*192+a*3+1+32*3]=a*2; pal[0*192+a*3+2+32*3]=63; }\r
44 \r
45         for(a=0;a<32;a++)               // must-pun-kelt\r
46                 { pal[1*192+a*3]=a*2; pal[1*192+a*3+1]=0; pal[1*192+a*3+2]=0; }\r
47         for(a=0;a<32;a++)\r
48                 { pal[1*192+a*3+32*3]=63; pal[1*192+a*3+1+32*3]=a*2; pal[1*192+a*3+2+32*3]=0; }\r
49 \r
50 \r
51         for(a=0;a<32;a++)               // must-orans-viol\r
52                 { pal[2*192+a*3]=a; pal[2*192+a*3+1]=0; pal[2*192+a*3+2]=a*2/3; }\r
53         for(a=0;a<32;a++)\r
54                 { pal[2*192+a*3+32*3]=31-a; pal[2*192+a*3+1+32*3]=a*2; pal[2*192+a*3+2+32*3]=21; }\r
55 \r
56 \r
57         for(y=0;y<64;y++) for(x=0;x<256;x++)\r
58                 {\r
59                 kuva1[y][x]=sini[(y*4+sini[x*2])&511]/4+32;\r
60                 kuva2[y][x]=sini[(y*4+sini[x*2])&511]/4+32+64;\r
61                 kuva3[y][x]=sini[(y*4+sini[x*2])&511]/4+32+128;\r
62                 }\r
63 \r
64         for(y=0;y<128;y++) for(x=0;x<256;x++)\r
65                 dist1[y][x]=sini[y*8]/3;\r
66 \r
67         for(a=0;a<8*256;a++) { clrtau[0][a][0]=640; clrtau[0][a][1]=0; }\r
68         }\r
69 \r
70 extern far char * to;\r
71 extern far char * from;\r
72 extern far int * ctau;\r
73 extern far int dseg;\r
74 extern far int  xx, yy;\r
75 extern far long ay1,ay2,ax1,ax2,xx1,yy1,xx2,yy2;\r
76 extern far long txx1,txy1,tay1,tax1;\r
77 extern far long txx2,txy2,tay2,tax2;\r
78 \r
79 int     kuvataus[]={FP_SEG(kuva1),FP_SEG(kuva2),FP_SEG(kuva3),FP_SEG(kuva1)};\r
80 int     disttaus[]={FP_SEG(dist1),FP_SEG(dist1),FP_SEG(dist1),FP_SEG(dist1)};\r
81 \r
82 do_poly(x1,y1,x2,y2,x3,y3,x4,y4,color, dd)\r
83 int     x1,y1,x2,y2,x3,y3,x4,y4,color, dd;\r
84         {\r
85         int     a,b,c,d,n=0,m,s1,s2,d1,d2,dx1,dy1,dx2,dy2;\r
86 \r
87         struct  points {\r
88                 int     x,y; } pnts[4],txt[4]={{64,4},{190,4},{190,60},{64,60}};\r
89 //              int     x,y; } pnts[4],txt[4]={{1,1},{63,1},{63,63},{1,63}};\r
90 \r
91         dd=(dd+1)&63;\r
92 \r
93         pnts[0].x=x1; pnts[0].y=y1;\r
94         pnts[1].x=x2; pnts[1].y=y2;\r
95         pnts[2].x=x3; pnts[2].y=y3;\r
96         pnts[3].x=x4; pnts[3].y=y4;\r
97 \r
98         for(n=0,a=1;a<4;a++) if(pnts[a].y<pnts[n].y) n=a;\r
99 \r
100         s1=n; s2=n; d1=(s1+1)&3; d2=(s2-1)&3;\r
101         dx1=pnts[d1].x-pnts[s1].x;\r
102         dy1=pnts[d1].y-pnts[s1].y; if(dy1==0) dy1++;\r
103         ax1=65536L*dx1/dy1;\r
104         xx1=((long)pnts[s1].x<<16)+0x8000L;\r
105         txx1=((long)txt[s1].x<<16)+0x8000L;\r
106         txy1=((long)txt[s1].y<<16)+0x8000L;\r
107         tax1=65536L*(txt[d1].x-txt[s1].x)/dy1;\r
108         tay1=65536L*(txt[d1].y-txt[s1].y)/dy1;\r
109 \r
110         dx2=pnts[d2].x-pnts[s2].x;\r
111         dy2=pnts[d2].y-pnts[s2].y; if(dy2==0) dy2++;\r
112         ax2=65536L*dx2/dy2;\r
113         xx2=((long)pnts[s2].x<<16)+0x8000L;\r
114         txx2=((long)txt[s2].x<<16)+0x8000L;\r
115         txy2=((long)txt[s2].y<<16)+0x8000L;\r
116         tax2=65536L*(txt[d2].x-txt[s2].x)/dy2;\r
117         tay2=65536L*(txt[d2].y-txt[s2].y)/dy2;\r
118 \r
119         yy=(long)pnts[s1].y;\r
120         from=MK_FP(kuvataus[color],0);\r
121         to=vmem[yy];            // initialize gfx pointers\r
122         dseg=disttaus[color]+dd*16;\r
123         ctau=&clrtau[clrptr][yy];\r
124         for(n=0;n<4;)\r
125                 {\r
126                 if(pnts[d1].y<pnts[d2].y) m=pnts[d1].y; else m=pnts[d2].y;\r
127                 do_block(m-yy); yy=m;\r
128 \r
129                 if(pnts[d1].y==pnts[d2].y)\r
130                         {\r
131                         s1=d1; d1=(s1+1)&3;\r
132                         s2=d2; d2=(s2-1)&3; n+=2;\r
133 \r
134                         dx1=pnts[d1].x-pnts[s1].x;\r
135                         dy1=pnts[d1].y-pnts[s1].y; if(dy1==0) dy1++;\r
136                         ax1=65536L*dx1/dy1;\r
137                         xx1=((long)pnts[s1].x<<16)+0x8000L;\r
138                         txx1=((long)txt[s1].x<<16)+0x8000L;\r
139                         txy1=((long)txt[s1].y<<16)+0x8000L;\r
140                         tax1=65536L*(txt[d1].x-txt[s1].x)/dy1;\r
141                         tay1=65536L*(txt[d1].y-txt[s1].y)/dy1;\r
142 \r
143                         dx2=pnts[d2].x-pnts[s2].x;\r
144                         dy2=pnts[d2].y-pnts[s2].y; if(dy2==0) dy2++;\r
145                         ax2=65536L*dx2/dy2;\r
146                         xx2=((long)pnts[s2].x<<16)+0x8000L;\r
147                         txx2=((long)txt[s2].x<<16)+0x8000L;\r
148                         txy2=((long)txt[s2].y<<16)+0x8000L;\r
149                         tax2=65536L*(txt[d2].x-txt[s2].x)/dy2;\r
150                         tay2=65536L*(txt[d2].y-txt[s2].y)/dy2;\r
151                         }\r
152                 else if(pnts[d1].y<pnts[d2].y)\r
153                         {\r
154                         s1=d1; d1=(s1+1)&3; n++;\r
155                         dx1=pnts[d1].x-pnts[s1].x;\r
156                         dy1=pnts[d1].y-pnts[s1].y; if(dy1==0) dy1++;\r
157                         ax1=65536L*dx1/dy1;\r
158                         xx1=((long)pnts[s1].x<<16)+0x8000L;\r
159                         txx1=((long)txt[s1].x<<16)+0x8000L;\r
160                         txy1=((long)txt[s1].y<<16)+0x8000L;\r
161                         tax1=65536L*(txt[d1].x-txt[s1].x)/dy1;\r
162                         tay1=65536L*(txt[d1].y-txt[s1].y)/dy1;\r
163                         }\r
164                 else    {\r
165                         s2=d2; d2=(s2-1)&3; n++;\r
166                         dx2=pnts[d2].x-pnts[s2].x;\r
167                         dy2=pnts[d2].y-pnts[s2].y; if(dy2==0) dy2++;\r
168                         ax2=65536L*dx2/dy2;\r
169                         xx2=((long)pnts[s2].x<<16)+0x8000L;\r
170                         txx2=((long)txt[s2].x<<16)+0x8000L;\r
171                         txy2=((long)txt[s2].y<<16)+0x8000L;\r
172                         tax2=65536L*(txt[d2].x-txt[s2].x)/dy2;\r
173                         tay2=65536L*(txt[d2].y-txt[s2].y)/dy2;\r
174                         }\r
175                 }\r
176         }\r
177 \r
178 clear()\r
179         {\r
180         int     *otau=clrtau[(clrptr-3)&7], *ntau=clrtau[clrptr];\r
181 \r
182         clrptr=(clrptr+1)&7;\r
183 \r
184         do_clear(vmem[0],otau,ntau);\r
185         }\r
186 \r