This commit is contained in:
Frater 2017-09-24 01:45:36 +02:00
commit 43352ff262
1291 changed files with 220976 additions and 0 deletions

BIN
DOTS/A Normal file

Binary file not shown.

250
DOTS/ASM.ASM Normal file
View file

@ -0,0 +1,250 @@
include clink.inc
code SEGMENT para public 'CODE'
ASSUME cs:code
.386
MAXDOTS equ 1024
BOTTOM equ 8000
public _gravitybottom
_gravitybottom dw BOTTOM
public _bpmin,_bpmax
_bpmin dw 30000
_bpmax dw -30000
public _gravity
_gravity dw 0
public _dotnum
_dotnum dw 0
public _gravityd
_gravityd dw 16
dw -1280
dw -960
dw -640
dw -320
public _rows
_rows dw 200 dup(0)
public _dot
_dot LABEL WORD
dot dw MAXDOTS dup(0,0,0,0,0,0,0,0) ;x,y,z,oldposshadow,oldpos,-,-,-
public _rotsin,_rotcos
_rotsin dw 0
_rotcos dw 0
public _bgpic
_bgpic dw 0,0
public _depthtable1,_depthtable2,_depthtable3,_depthtable4
_depthtable1 dd 128 dup(0)
_depthtable2 dd 128 dup(0)
_depthtable3 dd 128 dup(0)
_depthtable4 dd 128 dup(0)
public _drawdots
_drawdots PROC FAR
CBEG
mov ax,0a000h
mov es,ax
mov ax,cs
mov ds,ax
mov fs,cs:_bgpic[2]
mov cx,cs:_dotnum
mov si,OFFSET dot
@@1: push cx
mov ax,ds:[si+0] ;X
imul ds:_rotsin
mov ax,ax
mov cx,dx
mov ax,ds:[si+4] ;Z
imul ds:_rotcos
sub ax,bx
sub dx,cx
mov bp,dx
add bp,9000
mov ax,ds:[si+0] ;X
imul ds:_rotcos
mov bx,ax
mov cx,dx
mov ax,ds:[si+4] ;Z
imul ds:_rotsin
add ax,bx
adc dx,cx
shrd ax,dx,8
sar dx,8
mov bx,ax
mov cx,dx
shrd ax,dx,3
sar dx,3
add ax,bx
adc dx,cx
idiv bp
add ax,160
push ax
cmp ax,319
ja @@2
;shadow
xor ax,ax
mov dx,8
idiv bp
add ax,100
cmp ax,199
ja @@2
mov bx,ax
shl bx,1
mov bx,ds:_rows[bx]
pop ax
add bx,ax
push ax
mov di,ds:[si+6]
mov ax,fs:[di]
mov es:[di],ax
mov ax,87+87*256
mov word ptr es:[bx],ax
mov ds:[si+6],bx
;ball
mov ax,ds:_gravity
add ds:[si+14],ax
mov ax,ds:[si+2] ;Y
add ax,ds:[si+14]
cmp ax,ds:_gravitybottom
jl @@4
push ax
mov ax,ds:[si+14]
neg ax
imul cs:_gravityd
sar ax,4
mov ds:[si+14],ax
pop ax
add ax,ds:[si+14]
@@4: mov ds:[si+2],ax
cwd
shld dx,ax,6
shl ax,6
idiv bp
add ax,100
cmp ax,199
ja @@3
mov bx,ax
shl bx,1
mov bx,ds:_rows[bx]
pop ax
add bx,ax
mov di,ds:[si+8]
mov eax,fs:[di]
mov es:[di],eax
add di,320
mov eax,fs:[di]
mov es:[di],eax
add di,320
mov eax,fs:[di]
mov es:[di],eax
; add di,320
; mov eax,fs:[di]
; mov es:[di],eax
shr bp,6
and bp,not 3
cmp bp,cs:_bpmin
jge @@t1
mov cs:_bpmin,bp
@@t1: cmp bp,cs:_bpmax
jle @@t2
mov cs:_bpmax,bp
@@t2:
mov ax,word ptr ds:_depthtable1[bp]
mov word ptr es:[bx+1],ax
mov eax,ds:_depthtable2[bp]
mov dword ptr es:[bx+320],eax
mov ax,word ptr ds:_depthtable3[bp]
mov word ptr es:[bx+641],ax
mov ds:[si+8],bx
@@z: pop cx
add si,16
loop @@1
@@0: CEND
@@2: mov di,ds:[si+8]
mov eax,fs:[di]
mov es:[di],eax
add di,320
mov eax,fs:[di]
mov es:[di],eax
add di,320
mov eax,fs:[di]
mov es:[di],eax
mov di,ds:[si+6]
mov ds:[si+6],ax
mov ax,fs:[di]
mov es:[di],ax
pop bx
pop cx
add si,16
loop @@1
jmp @@0
@@3: mov di,ds:[si+8]
mov eax,fs:[di]
mov es:[di],eax
add di,320
mov eax,fs:[di]
mov es:[di],eax
add di,320
mov eax,fs:[di]
mov es:[di],eax
pop bx
pop cx
add si,16
loop @@1
jmp @@0
_drawdots ENDP
PUBLIC _setpalette
_setpalette PROC FAR
push bp
mov bp,sp
push si
push di
push ds
mov si,[bp+6]
mov ds,[bp+8]
mov dx,3c8h
mov al,0
out dx,al
inc dx
mov cx,768
rep outsb
pop ds
pop di
pop si
pop bp
ret
_setpalette ENDP
_face LABEL WORD
public _face
include face.inc
dw 30000,30000,30000
PUBLIC _sin1024
include sin1024.inc
code ENDS
END

BIN
DOTS/ASM.OBJ Normal file

Binary file not shown.

41
DOTS/CLINK.INC Normal file
View file

@ -0,0 +1,41 @@
FIXWORD MACRO ;go to word boundary
if ($-start) mod 1
db 0
endif
ENDM
CDS MACRO
mov ax,cs
mov ds,ax
ENDM
CBEG MACRO ;C/Assembler procedure begin
push bp
mov bp,sp
push si
push di
push ds
ENDM
CEND MACRO ;C/Assembler procedure end
pop ds
pop di
pop si
pop bp
ret
ENDM
CBEG0 MACRO ;C/Assembler procedure begin, minimal
push bp
mov bp,sp
ENDM
CEND0 MACRO ;C/Assembler procedure end, minimal
pop bp
ret
ENDM
movpar MACRO reg,par ;loads parameter [par(0..)] to register [reg]
mov reg,[bp+par*2+6]
ENDM

86
DOTS/CUT Normal file
View file

@ -0,0 +1,86 @@
#if 0
switch(mode=c)
{
case 0:
for(a=0;a<dotnum;a++)
{
dot[a].x=(rand()-16384)/2;
dot[a].y=(rand()-16384)/2;
dot[a].z=(rand()-16384)/2;
}
break;
case 1 :
for(a=0;a<dotnum;a++)
{
dot[a].x=sin(f*2)*3500+cos(f*5)*3500;
dot[a].y=sin(f*3)*3500+cos(f*6)*3500;
dot[a].z=sin(f*4)*3500+cos(f*7)*3500;
f+=.05;
}
break;
case 2 :
for(a=0;a<dotnum;a++)
{
dot[a].x=sin(a*4)*3500+cos(a*7)*3500;
dot[a].y=cos(a*5)*3500+sin(a*8)*3500;
dot[a].z=sin(a*6)*3500+cos(a*9)*3500;
f+=.05;
}
break;
case 3 :
for(a=0;a<dotnum;a++)
{
dot[a].x=sin(a)*7500*sin(3.141592*a/dotnum);
dot[a].y=-4000+a*8;
dot[a].z=cos(a)*7500*sin(3.141592*a/dotnum);
f+=.05;
}
gravity=3;
break;
case 4 :
for(a=0;a<dotnum;a++)
{
dot[a].x=sin(a*4)*3500+cos(a*7)*3500;
dot[a].y=cos(a*5)*3500+sin(a*8)*3500;
dot[a].z=sin(a*6)*3500+cos(a*9)*3500;
f+=.05;
}
gravity=3;
break;
case 5 :
b=0;
for(a=0;a<dotnum && face[b]!=30000;a++)
{
dot[a].x=face[b++];
dot[a].y=face[b++];
dot[a].z=face[b++];
}
break;
case 6 :
gravity=0;
i=0;
break;
default :
timer=15000;
case 7 :
for(a=0;a<dotnum;a++)
{
dot[a].x=0;
dot[a].y=0;
dot[a].z=-19000;
}
mode=7;
gravity=3;
gravityd=13;
i=-1;
break;
case 8:
for(a=0;a<dotnum;a++)
{
dot[a].x=(rand()-16384)/2;
dot[a].y=8000;
dot[a].z=(rand()-16384)/2;
}
break;
}
#endif

BIN
DOTS/DOTS.EXE Normal file

Binary file not shown.

BIN
DOTS/DP_PREFS Normal file

Binary file not shown.

26
DOTS/FACE.C Normal file
View file

@ -0,0 +1,26 @@
#include <stdio.h>
char buf[1024];
main()
{
FILE *f1;
int a,b,c=0;
float x,y,z;
f1=fopen("face.asc","rt");
while(!feof(f1))
{
fgets(buf,1024,f1);
fgets(buf,1024,f1);
if(!memcmp(buf,"Vertex ",7))
{
if(c)
{
sscanf(buf,"Vertex %i: X: %f Y: %f Z: %f",&a,&x,&y,&z);
printf("dw %i,%i,%i\n",(int)(x*1000),-(int)(z*1000),(int)(y*1000));
}
else c=1;
}
}
fclose(f1);
}

BIN
DOTS/FACE.EXE Normal file

Binary file not shown.

1
DOTS/FACE.INC Normal file
View file

@ -0,0 +1 @@
dw 2248,-2306,0

291
DOTS/MAIN.C Normal file
View file

@ -0,0 +1,291 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <malloc.h>
#include <math.h>
#include "..\dis\dis.h"
extern int face[];
extern int bpmin,bpmax;
extern char *bgpic;
extern int rotsin,rotcos;
extern int rows[];
extern long depthtable1[];
extern long depthtable2[];
extern long depthtable3[];
extern long depthtable4[];
extern int dotnum;
extern void drawdots(void);
char far *vram=(char far *)0xa0000000L;
char pal[768];
char pal2[768];
extern sin1024[];
int isin(int deg)
{
return(sin1024[deg&1023]);
}
int icos(int deg)
{
return(sin1024[(deg+256)&1023]);
}
extern struct
{
int x;
int y;
int z;
int old1;
int old2;
int old3;
int old4;
int yadd;
} dot[];
extern int gravity;
extern int gravitybottom;
extern int gravityd;
void setborder(int color)
{
_asm
{
mov dx,3dah
in al,dx
mov dx,3c0h
mov al,11h+32
out dx,al
mov al,color
out dx,al
}
}
int cols[]={
0,0,0,
4,25,30,
8,40,45,
16,55,60};
int dottaul[1024];
main(int argc,char *argv[])
{
int timer=30000;
int dropper,repeat;
int frame=0;
int rota=-1*64;
int fb=0;
int rot=0,rots=0;
int a,b,c,d,i,j,mode;
int grav,gravd;
int f=0;
dis_partstart();
dotnum=512;
for(a=0;a<dotnum;a++) dottaul[a]=a;
for(a=0;a<500;a++)
{
b=rand()%dotnum;
c=rand()%dotnum;
d=dottaul[b];
dottaul[b]=dottaul[c];
dottaul[c]=d;
}
{
dropper=22000;
for(a=0;a<dotnum;a++)
{
dot[a].x=0;
dot[a].y=2560-dropper;
dot[a].z=0;
dot[a].yadd=0;
}
mode=7;
grav=3;
gravd=13;
gravitybottom=8105;
i=-1;
}
for(a=0;a<500;a++)
{ // scramble
b=rand()%dotnum;
c=rand()%dotnum;
d=dot[b].x; dot[b].x=dot[c].x; dot[c].x=d;
d=dot[b].y; dot[b].y=dot[c].y; dot[c].y=d;
d=dot[b].z; dot[b].z=dot[c].z; dot[c].z=d;
}
for(a=0;a<200;a++) rows[a]=a*320;
_asm mov ax,13h
_asm int 10h
outp(0x3c8,0);
for(a=0;a<16;a++) for(b=0;b<4;b++)
{
c=100+a*9;
outp(0x3c9,cols[b*3+0]);
outp(0x3c9,cols[b*3+1]*c/256);
outp(0x3c9,cols[b*3+2]*c/256);
}
outp(0x3c8,255);
outp(0x3c9,31);
outp(0x3c9,0);
outp(0x3c9,15);
outp(0x3c8,64);
for(a=0;a<100;a++)
{
c=64-256/(a+4);
c=c*c/64;
outp(0x3c9,c/4);
outp(0x3c9,c/4);
outp(0x3c9,c/4);
}
outp(0x3c7,0);
for(a=0;a<768;a++) pal[a]=inp(0x3c9);
outp(0x3c8,0);
for(a=0;a<768;a++) outp(0x3c9,0);
for(a=0;a<100;a++)
{
memset(vram+(100+a)*320,a+64,320);
}
for(a=0;a<128;a++)
{
c=a-(43+20)/2;
c=c*3/4;
c+=8;
if(c<0) c=0; else if(c>15) c=15;
c=15-c;
depthtable1[a]=0x202+0x04040404*c;
depthtable2[a]=0x02030302+0x04040404*c;
depthtable3[a]=0x202+0x04040404*c;
//depthtable4[a]=0x02020302+0x04040404*c;
}
bgpic=halloc(64000L,1L);
memcpy(bgpic,vram,64000);
a=0;
for(b=64;b>=0;b--)
{
for(c=0;c<768;c++)
{
a=pal[c]-b;
if(a<0) a=0;
pal2[c]=a;
}
dis_waitb();
dis_waitb();
outp(0x3c8,0);
for(c=0;c<768;c++) outp(0x3c9,pal2[c]);
}
while(!dis_exit() && frame<2450)
{
//setborder(0);
repeat=dis_waitb();
if(frame>2300) setpalette(pal2);
//setborder(1);
if(dis_indemo())
{
a=dis_musplus();
if(a>-4 && a<0) break;
}
while(repeat--)
{
frame++;
if(frame==500) f=0;
i=dottaul[j];
j++; j%=dotnum;
if(frame<500)
{
dot[i].x=isin(f*11)*40;
dot[i].y=icos(f*13)*10-dropper;
dot[i].z=isin(f*17)*40;
dot[i].yadd=0;
}
else if(frame<900)
{
dot[i].x=icos(f*15)*55;
dot[i].y=dropper;
dot[i].z=isin(f*15)*55;
dot[i].yadd=-260;
}
else if(frame<1700)
{
a=sin1024[frame&1023]/8;
dot[i].x=icos(f*66)*a;
dot[i].y=8000;
dot[i].z=isin(f*66)*a;
dot[i].yadd=-300;
}
else if(frame<2360)
{
/*
a=rand()/128+32;
dot[i].y=8000-a*80;
b=rand()&1023;
a+=rand()&31;
dot[i].x=sin1024[b]*a/3+(a-50)*7;
dot[i].z=sin1024[(b+256)&1023]*a/3+(a-40)*7;
dot[i].yadd=300;
if(frame>1640 && !(frame&31) && grav>-2) grav--;
*/
dot[i].x=rand()-16384;
dot[i].y=8000-rand()/2;
dot[i].z=rand()-16384;
dot[i].yadd=0;
if(frame>1900 && !(frame&31) && grav>0) grav--;
}
else if(frame<2400)
{
a=frame-2360;
for(b=0;b<768;b+=3)
{
c=pal[b+0]+a*3;
if(c>63) c=63;
pal2[b+0]=c;
c=pal[b+1]+a*3;
if(c>63) c=63;
pal2[b+1]=c;
c=pal[b+2]+a*4;
if(c>63) c=63;
pal2[b+2]=c;
}
}
else if(frame<2440)
{
a=frame-2400;
for(b=0;b<768;b+=3)
{
c=63-a*2;
if(c<0) c=0;
pal2[b+0]=c;
pal2[b+1]=c;
pal2[b+2]=c;
}
}
if(dropper>4000) dropper-=100;
rotcos=icos(rot)*64; rotsin=isin(rot)*64;
rots+=2;
if(frame>1900)
{
rot+=rota/64;
rota--;
}
else rot=isin(rots);
f++;
gravity=grav;
gravityd=gravd;
}
drawdots();
}
if(!dis_indemo())
{
_asm mov ax,3h
_asm int 10h
}
return(0);
}

BIN
DOTS/MAIN.OBJ Normal file

Binary file not shown.

24
DOTS/MAKEFILE Normal file
View file

@ -0,0 +1,24 @@
all : dots.exe face.exe
face.exe : face.c
cl /qc /AL face.c
face > face.inc
objs=main.obj asm.obj ..\dis\disc.obj
asm_f = /ML /m2 /s /JJUMPS
c_f = /AL /c /W3
.asm.obj :
tasm $(asm_f) $<
.c.obj :
cl /qc $(c_f) $<
dots.exe : $(objs)
link /E $(objs),dots.exe,nul;
copy dots.exe ..\main\data\minvball.exe
asm.asm : face.inc

33
DOTS/SIN1024.INC Normal file
View file

@ -0,0 +1,33 @@
_sin1024 LABEL WORD
dw 0,1,3,4,6,7,9,10,12,14,15,17,18,20,21,23,25,26,28,29,31,32,34,36,37,39,40,42,43,45,46,48
dw 49,51,53,54,56,57,59,60,62,63,65,66,68,69,71,72,74,75,77,78,80,81,83,84,86,87,89,90,92,93,95,96
dw 97,99,100,102,103,105,106,108,109,110,112,113,115,116,117,119,120,122,123,124,126,127,128,130,131,132,134,135,136,138,139,140
dw 142,143,144,146,147,148,149,151,152,153,155,156,157,158,159,161,162,163,164,166,167,168,169,170,171,173,174,175,176,177,178,179
dw 181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,211
dw 212,213,214,215,216,217,217,218,219,220,221,221,222,223,224,225,225,226,227,227,228,229,230,230,231,232,232,233,234,234,235,235
dw 236,237,237,238,238,239,239,240,241,241,242,242,243,243,244,244,244,245,245,246,246,247,247,247,248,248,249,249,249,250,250,250
dw 251,251,251,251,252,252,252,252,253,253,253,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255
dw 256,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,253,253,253,252,252,252,252,251,251,251
dw 251,250,250,250,249,249,249,248,248,247,247,247,246,246,245,245,244,244,244,243,243,242,242,241,241,240,239,239,238,238,237,237
dw 236,235,235,234,234,233,232,232,231,230,230,229,228,227,227,226,225,225,224,223,222,221,221,220,219,218,217,217,216,215,214,213
dw 212,211,211,210,209,208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191,190,189,188,187,186,185,184,183,182
dw 181,179,178,177,176,175,174,173,171,170,169,168,167,166,164,163,162,161,159,158,157,156,155,153,152,151,149,148,147,146,144,143
dw 142,140,139,138,136,135,134,132,131,130,128,127,126,124,123,122,120,119,117,116,115,113,112,110,109,108,106,105,103,102,100,99
dw 97,96,95,93,92,90,89,87,86,84,83,81,80,78,77,75,74,72,71,69,68,66,65,63,62,60,59,57,56,54,53,51
dw 49,48,46,45,43,42,40,39,37,36,34,32,31,29,28,26,25,23,21,20,18,17,15,14,12,10,9,7,6,4,3,1
dw 0,-1,-3,-4,-6,-7,-9,-10,-12,-14,-15,-17,-18,-20,-21,-23,-25,-26,-28,-29,-31,-32,-34,-36,-37,-39,-40,-42,-43,-45,-46,-48
dw -49,-51,-53,-54,-56,-57,-59,-60,-62,-63,-65,-66,-68,-69,-71,-72,-74,-75,-77,-78,-80,-81,-83,-84,-86,-87,-89,-90,-92,-93,-95,-96
dw -97,-99,-100,-102,-103,-105,-106,-108,-109,-110,-112,-113,-115,-116,-117,-119,-120,-122,-123,-124,-126,-127,-128,-130,-131,-132,-134,-135,-136,-138,-139,-140
dw -142,-143,-144,-146,-147,-148,-149,-151,-152,-153,-155,-156,-157,-158,-159,-161,-162,-163,-164,-166,-167,-168,-169,-170,-171,-173,-174,-175,-176,-177,-178,-179
dw -181,-182,-183,-184,-185,-186,-187,-188,-189,-190,-191,-192,-193,-194,-195,-196,-197,-198,-199,-200,-201,-202,-203,-204,-205,-206,-207,-208,-209,-210,-211,-211
dw -212,-213,-214,-215,-216,-217,-217,-218,-219,-220,-221,-221,-222,-223,-224,-225,-225,-226,-227,-227,-228,-229,-230,-230,-231,-232,-232,-233,-234,-234,-235,-235
dw -236,-237,-237,-238,-238,-239,-239,-240,-241,-241,-242,-242,-243,-243,-244,-244,-244,-245,-245,-246,-246,-247,-247,-247,-248,-248,-249,-249,-249,-250,-250,-250
dw -251,-251,-251,-251,-252,-252,-252,-252,-253,-253,-253,-253,-254,-254,-254,-254,-254,-254,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255
dw -256,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-255,-254,-254,-254,-254,-254,-254,-253,-253,-253,-253,-252,-252,-252,-252,-251,-251,-251
dw -251,-250,-250,-250,-249,-249,-249,-248,-248,-247,-247,-247,-246,-246,-245,-245,-244,-244,-244,-243,-243,-242,-242,-241,-241,-240,-239,-239,-238,-238,-237,-237
dw -236,-235,-235,-234,-234,-233,-232,-232,-231,-230,-230,-229,-228,-227,-227,-226,-225,-225,-224,-223,-222,-221,-221,-220,-219,-218,-217,-217,-216,-215,-214,-213
dw -212,-211,-211,-210,-209,-208,-207,-206,-205,-204,-203,-202,-201,-200,-199,-198,-197,-196,-195,-194,-193,-192,-191,-190,-189,-188,-187,-186,-185,-184,-183,-182
dw -181,-179,-178,-177,-176,-175,-174,-173,-171,-170,-169,-168,-167,-166,-164,-163,-162,-161,-159,-158,-157,-156,-155,-153,-152,-151,-149,-148,-147,-146,-144,-143
dw -142,-140,-139,-138,-136,-135,-134,-132,-131,-130,-128,-127,-126,-124,-123,-122,-120,-119,-117,-116,-115,-113,-112,-110,-109,-108,-106,-105,-103,-102,-100,-99
dw -97,-96,-95,-93,-92,-90,-89,-87,-86,-84,-83,-81,-80,-78,-77,-75,-74,-72,-71,-69,-68,-66,-65,-63,-62,-60,-59,-57,-56,-54,-53,-51
dw -49,-48,-46,-45,-43,-42,-40,-39,-37,-36,-34,-32,-31,-29,-28,-26,-25,-23,-21,-20,-18,-17,-15,-14,-12,-10,-9,-7,-6,-4,-3,-1