Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
299
HARD/BP.C
Normal file
299
HARD/BP.C
Normal file
|
|
@ -0,0 +1,299 @@
|
|||
/* parts */
|
||||
|
||||
char pal1[768];
|
||||
int pal1colp=0;
|
||||
|
||||
void part1init(void)
|
||||
{
|
||||
int a,b,c;
|
||||
if(!pal1colp) memcpy(pal,defpal,768);
|
||||
for(c=(16)*3,a=0;a<64;a++)
|
||||
{
|
||||
b=64-a; b=b*b/64;
|
||||
if(b<0) b=0; else if(b>63) b=63;
|
||||
pal1[a*3+c+0]=b;
|
||||
pal1[a*3+c+64*3+0]=b*2/3;
|
||||
pal1[a*3+c+128*3+0]=b*1/3;
|
||||
b=64-a; b=b*b/64;
|
||||
if(b<0) b=0; else if(b>63) b=63;
|
||||
pal1[a*3+c+1]=b;
|
||||
pal1[a*3+c+64*3+1]=b*2/3;
|
||||
pal1[a*3+c+128*3+1]=b*1/3;
|
||||
b=64-a;
|
||||
b=b*4/6;
|
||||
if(b<0) b=0; else if(b>63) b=63;
|
||||
pal1[a*3+c+2]=b+20;
|
||||
pal1[a*3+c+64*3+2]=b*2/3+20;
|
||||
pal1[a*3+c+128*3+2]=b*1/3+20;
|
||||
}
|
||||
waitb();
|
||||
inp(0x3da);
|
||||
dotsp=0;
|
||||
pal1colp+=4;
|
||||
}
|
||||
|
||||
void part1(void)
|
||||
{
|
||||
int a,b;
|
||||
b=count-6; if(b<0) b=0; else if(b>63) b=63;
|
||||
b=b*3+16*3;
|
||||
pal[-3*4+pal1colp*3+1*3+0]=pal1[0*3+b+0];
|
||||
pal[-3*4+pal1colp*3+1*3+1]=pal1[0*3+b+1];
|
||||
pal[-3*4+pal1colp*3+1*3+2]=pal1[0*3+b+2];
|
||||
pal[-3*4+pal1colp*3+2*3+0]=pal1[64*3+b+0];
|
||||
pal[-3*4+pal1colp*3+2*3+1]=pal1[64*3+b+1];
|
||||
pal[-3*4+pal1colp*3+2*3+2]=pal1[64*3+b+2];
|
||||
pal[-3*4+pal1colp*3+3*3+0]=pal1[128*3+b+0];
|
||||
pal[-3*4+pal1colp*3+3*3+1]=pal1[128*3+b+1];
|
||||
pal[-3*4+pal1colp*3+3*3+2]=pal1[128*3+b+2];
|
||||
b=(64-(count>64?64:count))*3+16*3;
|
||||
pal[pal1colp*3+1*3+0]=pal1[0*3+b+0];
|
||||
pal[pal1colp*3+1*3+1]=pal1[0*3+b+1];
|
||||
pal[pal1colp*3+1*3+2]=pal1[0*3+b+2];
|
||||
pal[pal1colp*3+2*3+0]=pal1[64*3+b+0];
|
||||
pal[pal1colp*3+2*3+1]=pal1[64*3+b+1];
|
||||
pal[pal1colp*3+2*3+2]=pal1[64*3+b+2];
|
||||
pal[pal1colp*3+3*3+0]=pal1[128*3+b+0];
|
||||
pal[pal1colp*3+3*3+1]=pal1[128*3+b+1];
|
||||
pal[pal1colp*3+3*3+2]=pal1[128*3+b+2];
|
||||
loadpal(pal,32*3);
|
||||
if(count<8) for(a=0;a<2048/8;a++)
|
||||
{
|
||||
dotsp+=4;
|
||||
switch(dotspnt[dotsp])
|
||||
{
|
||||
case 1 : doit1(dotspnt[dotsp+2],dotspnt[dotsp+3],3+pal1colp); break;
|
||||
case 2 : doit1(dotspnt[dotsp+2],dotspnt[dotsp+3],2+pal1colp); break;
|
||||
case 3 : doit1(dotspnt[dotsp+2],dotspnt[dotsp+3],1+pal1colp); break;
|
||||
default : dotsp=0; break;
|
||||
}
|
||||
}
|
||||
else if(count>=72) NEXTMODE;
|
||||
}
|
||||
|
||||
/*################################################################*/
|
||||
|
||||
extern int csetmatrix(int *,long,long,long);
|
||||
extern int crotlist(long *,long *);
|
||||
extern int cclipedges(int *,int *,long *); // modifies given point list
|
||||
extern int cprojlist(long *,long *);
|
||||
extern int cdrawpolylist(int *);
|
||||
extern int cmatrix_yxz(int,int,int,int *);
|
||||
extern int cpolylist(int *polylist,int *polys,int *edges,long *points3);
|
||||
extern int ceasypolylist(int *polylist,int *polys,long *points3);
|
||||
|
||||
long cubepoints[]={8,
|
||||
-510,-510,-510,
|
||||
410,-510,-510,
|
||||
410,410,-510,
|
||||
-510,410,-510,
|
||||
-510,-510,410,
|
||||
410,-510,410,
|
||||
410,410,410,
|
||||
-510,410,410
|
||||
};
|
||||
int cubepolys[]={
|
||||
4,0x4001,3,2,1,0,
|
||||
4,0x4002,4,5,6,7,
|
||||
4,0x4004,0,1,5,4,
|
||||
4,0x4008,1,2,6,5,
|
||||
4,0x4010,2,3,7,6,
|
||||
4,0x4020,3,0,4,7,
|
||||
0};
|
||||
int cubepolyss[]={
|
||||
4,0x4040,3+8,2+8,1+8,0+8,
|
||||
4,0x4040,4+8,5+8,6+8,7+8,
|
||||
4,0x4040,0+8,1+8,5+8,4+8,
|
||||
4,0x4040,1+8,2+8,6+8,5+8,
|
||||
4,0x4040,2+8,3+8,7+8,6+8,
|
||||
4,0x4040,3+8,0+8,4+8,7+8,
|
||||
0};
|
||||
|
||||
long gridpoints[1010*3];
|
||||
|
||||
int polylist[256];
|
||||
long points2[1010*3];
|
||||
int points3[1010*8];
|
||||
|
||||
int rx=0,ry=0,rz=0,zp=5600;
|
||||
|
||||
int matrix[9];
|
||||
|
||||
extern char depthcol[];
|
||||
|
||||
void part2init(void)
|
||||
{
|
||||
int a,r,g,b,x,y,z,d;
|
||||
|
||||
for(a=0;a<3100;a++)
|
||||
{
|
||||
if(a<1000 || b>=3000) b=127;
|
||||
else b=127-(a-1000)/32;
|
||||
depthcol[a]=b;
|
||||
}
|
||||
|
||||
memcpy(pal,defpal,768);
|
||||
pal[1*3+0]=63;
|
||||
pal[1*3+1]=63;
|
||||
pal[1*3+2]=63;
|
||||
pal[250*3+0]=0;
|
||||
pal[250*3+1]=0;
|
||||
pal[250*3+2]=40;
|
||||
d=64;
|
||||
for(a=0;a<64;a++)
|
||||
{
|
||||
b=a+d; if(b>63) b=63;
|
||||
pal[64*3+a*3+0]=a;
|
||||
b=a+20+d; if(b>63) b=63;
|
||||
pal[64*3+a*3+1]=b;
|
||||
b=a+40+d; if(b>63) b=63;
|
||||
pal[64*3+a*3+2]=b;
|
||||
if(d>0) d-=8;
|
||||
}
|
||||
loadpal(pal,768);
|
||||
memcpy(pal2,pal,768);
|
||||
|
||||
a=1;
|
||||
for(x=0;x<10;x++) for(y=0;y<10;y++) for(z=0;z<10;z++)
|
||||
if(!x || !y || !z || x==9 || y==9 || z==9)
|
||||
{
|
||||
gridpoints[a++]=(x-5)*100;
|
||||
gridpoints[a++]=(y-5)*100;
|
||||
gridpoints[a++]=(z-5)*100;
|
||||
}
|
||||
gridpoints[0]=(a-1)/3;
|
||||
|
||||
zp=3500;
|
||||
}
|
||||
|
||||
void part2(void)
|
||||
{
|
||||
int a,x,y;
|
||||
if(count>=500) NEXTMODE;
|
||||
if(count>500-16)
|
||||
{
|
||||
a=(500-16)-count;
|
||||
fadepal(pal,pal2,a*16);
|
||||
}
|
||||
|
||||
setborder(0);
|
||||
cmatrix_yxz(rx,ry,rz,matrix);
|
||||
csetmatrix(matrix,0,0,zp);
|
||||
setborder(1);
|
||||
points3[0]=0; crotprojlist(points3,gridpoints);
|
||||
setborder(250);
|
||||
do3dots(points3,vram);
|
||||
#if 0
|
||||
if(count==2)
|
||||
{
|
||||
FILE *f1;
|
||||
f1=fopen("_grid1.tmp","wb");
|
||||
for(a=0;a<points3[0];a++) if(points3[2+a*8+4]<=3000)
|
||||
{
|
||||
x=points3[2+a*8+0];
|
||||
y=points3[2+a*8+1];
|
||||
putw(x,f1);
|
||||
putw(y,f1);
|
||||
}
|
||||
fclose(f1);
|
||||
}
|
||||
#endif
|
||||
#if 0
|
||||
for(a=0;a<1000;a++)
|
||||
{
|
||||
x=points3[2+a*8+0];
|
||||
y=points3[2+a*8+1];
|
||||
vram[x+y*320]++;
|
||||
}
|
||||
#endif
|
||||
if(count>1)
|
||||
{
|
||||
rx+=9; ry+=10; rz+=11;
|
||||
if(zp>2000) zp-=10;
|
||||
}
|
||||
setborder(255);
|
||||
}
|
||||
|
||||
/*################################################################*/
|
||||
|
||||
|
||||
void part3init(void)
|
||||
{
|
||||
int a,r,g,b;
|
||||
memcpy(pal,defpal,768);
|
||||
for(a=1;a<128;a++)
|
||||
{
|
||||
r=g=0; b=20;
|
||||
if(a&0x1) { g+=20; r+=20; }
|
||||
if(a&0x2) { g+=22; r+=22; }
|
||||
if(a&0x4) { g+=24; r+=24; }
|
||||
if(a&0x8) { g+=26; r+=26; }
|
||||
if(a&0x10) { g+=28; r+=28; }
|
||||
if(a&0x20) { g+=30; r+=30; }
|
||||
if(a&0x40) { b=15; }
|
||||
if(r>63) r=63;
|
||||
if(g>63) g=63;
|
||||
if(b>63) b=63;
|
||||
pal2[a*3+0]=r;
|
||||
pal2[a*3+1]=g;
|
||||
pal2[a*3+2]=b;
|
||||
}
|
||||
for(a=2;a<254;a++)
|
||||
{
|
||||
pal[a*3+0]=0;
|
||||
pal[a*3+1]=0;
|
||||
pal[a*3+2]=20;
|
||||
}
|
||||
loadpal(pal,768);
|
||||
/*
|
||||
rx=0;
|
||||
ry=0;
|
||||
rz=0;
|
||||
zp=5600;
|
||||
*/
|
||||
}
|
||||
|
||||
void part3(void)
|
||||
{
|
||||
int a,b,c,x,y;
|
||||
int liy=80,lix=190;
|
||||
static int ct2=0;
|
||||
long lz,z;
|
||||
if(count>=800) NEXTMODE;
|
||||
if(dis_muscode(0xff)==0xff) NEXTMODE;
|
||||
|
||||
ct2+=4;
|
||||
lix=sin1024[ct2&1023]/2+160;
|
||||
liy=sin1024[(ct2+256)&1023]/2+64;
|
||||
|
||||
setborder(0);
|
||||
cglenzinit();
|
||||
cmatrix_yxz(rx,ry,rz,matrix);
|
||||
csetmatrix(matrix,0,0,zp);
|
||||
points2[0]=0; crotlist(points2,cubepoints);
|
||||
points3[0]=0; cprojlist((long *)points3,points2);
|
||||
points3[0]+=8;
|
||||
for(a=0;a<8*8;a+=8)
|
||||
{
|
||||
x=points3[2+a+0];
|
||||
y=points3[2+a+1];
|
||||
z=points3[2+a+4];
|
||||
z+=2000;
|
||||
lz=3000+2000;
|
||||
x=(long)(x-lix)*lz/(long)z+lix;
|
||||
y=(long)(y-liy)*lz/(long)z+liy;
|
||||
points3[8*8+2+a+0]=x;
|
||||
points3[8*8+2+a+1]=y;
|
||||
points3[8*8+2+a+4]=3000;
|
||||
}
|
||||
ceasymode(0);
|
||||
cclipeasypolylist(polylist,cubepolyss,(long *)points3);
|
||||
cglenzpolylist(polylist);
|
||||
ceasymode(1);
|
||||
cclipeasypolylist(polylist,cubepolys,(long *)points3);
|
||||
cglenzpolylist(polylist);
|
||||
cglenzdone();
|
||||
setborder(255);
|
||||
rx+=9; ry+=10; rz+=11;
|
||||
if(count<20) fadepal(pal,pal2,count*16);
|
||||
}
|
||||
Loading…
Reference in a new issue