7 #include "..\dis\dis.h"
\r
11 extern int bpmin,bpmax;
\r
14 extern int rotsin,rotcos;
\r
16 extern long depthtable1[];
\r
17 extern long depthtable2[];
\r
18 extern long depthtable3[];
\r
19 extern long depthtable4[];
\r
23 extern void drawdots(void);
\r
25 char far *vram=(char far *)0xa0000000L;
\r
34 return(sin1024[deg&1023]);
\r
39 return(sin1024[(deg+256)&1023]);
\r
55 extern int gravitybottom;
\r
56 extern int gravityd;
\r
58 void setborder(int color)
\r
79 main(int argc,char *argv[])
\r
87 int a,b,c,d,i,j,mode;
\r
92 for(a=0;a<dotnum;a++) dottaul[a]=a;
\r
98 dottaul[b]=dottaul[c];
\r
103 for(a=0;a<dotnum;a++)
\r
106 dot[a].y=2560-dropper;
\r
113 gravitybottom=8105;
\r
120 d=dot[b].x; dot[b].x=dot[c].x; dot[c].x=d;
\r
121 d=dot[b].y; dot[b].y=dot[c].y; dot[c].y=d;
\r
122 d=dot[b].z; dot[b].z=dot[c].z; dot[c].z=d;
\r
124 for(a=0;a<200;a++) rows[a]=a*320;
\r
128 for(a=0;a<16;a++) for(b=0;b<4;b++)
\r
131 outp(0x3c9,cols[b*3+0]);
\r
132 outp(0x3c9,cols[b*3+1]*c/256);
\r
133 outp(0x3c9,cols[b*3+2]*c/256);
\r
149 for(a=0;a<768;a++) pal[a]=inp(0x3c9);
\r
151 for(a=0;a<768;a++) outp(0x3c9,0);
\r
154 memset(vram+(100+a)*320,a+64,320);
\r
161 if(c<0) c=0; else if(c>15) c=15;
\r
163 depthtable1[a]=0x202+0x04040404*c;
\r
164 depthtable2[a]=0x02030302+0x04040404*c;
\r
165 depthtable3[a]=0x202+0x04040404*c;
\r
166 //depthtable4[a]=0x02020302+0x04040404*c;
\r
168 bgpic=halloc(64000L,1L);
\r
169 memcpy(bgpic,vram,64000);
\r
182 for(c=0;c<768;c++) outp(0x3c9,pal2[c]);
\r
185 while(!dis_exit() && frame<2450)
\r
188 repeat=dis_waitb();
\r
189 if(frame>2300) setpalette(pal2);
\r
194 if(a>-4 && a<0) break;
\r
199 if(frame==500) f=0;
\r
204 dot[i].x=isin(f*11)*40;
\r
205 dot[i].y=icos(f*13)*10-dropper;
\r
206 dot[i].z=isin(f*17)*40;
\r
211 dot[i].x=icos(f*15)*55;
\r
213 dot[i].z=isin(f*15)*55;
\r
216 else if(frame<1700)
\r
218 a=sin1024[frame&1023]/8;
\r
219 dot[i].x=icos(f*66)*a;
\r
221 dot[i].z=isin(f*66)*a;
\r
224 else if(frame<2360)
\r
228 dot[i].y=8000-a*80;
\r
231 dot[i].x=sin1024[b]*a/3+(a-50)*7;
\r
232 dot[i].z=sin1024[(b+256)&1023]*a/3+(a-40)*7;
\r
234 if(frame>1640 && !(frame&31) && grav>-2) grav--;
\r
236 dot[i].x=rand()-16384;
\r
237 dot[i].y=8000-rand()/2;
\r
238 dot[i].z=rand()-16384;
\r
240 if(frame>1900 && !(frame&31) && grav>0) grav--;
\r
242 else if(frame<2400)
\r
245 for(b=0;b<768;b+=3)
\r
258 else if(frame<2440)
\r
261 for(b=0;b<768;b+=3)
\r
270 if(dropper>4000) dropper-=100;
\r
271 rotcos=icos(rot)*64; rotsin=isin(rot)*64;
\r
278 else rot=isin(rots);
\r