Upload
This commit is contained in:
commit
43352ff262
1291 changed files with 220976 additions and 0 deletions
394
GLENZ/VECCMD.ASM
Normal file
394
GLENZ/VECCMD.ASM
Normal file
|
|
@ -0,0 +1,394 @@
|
|||
|
||||
cmdo1max equ 15 ;##??
|
||||
cmdo2 LABEL WORD ;commads 77##
|
||||
dw OFFSET cmd700
|
||||
dw OFFSET cmd701
|
||||
dw OFFSET cmd702
|
||||
dw OFFSET nrserr;cmd703
|
||||
dw OFFSET nrserr;cmd704
|
||||
dw OFFSET cmd705
|
||||
dw OFFSET cmd706
|
||||
dw OFFSET cmd707
|
||||
dw OFFSET cmd708
|
||||
dw OFFSET cmd709
|
||||
dw OFFSET cmd70a
|
||||
dw OFFSET cmd70b
|
||||
dw OFFSET nrserr;cmd70c
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET cmd710
|
||||
dw OFFSET cmd711
|
||||
dw OFFSET cmd712
|
||||
dw OFFSET cmd713
|
||||
dw OFFSET cmd714
|
||||
dw OFFSET cmd715
|
||||
dw OFFSET cmd716
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET cmd719
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET nrserr
|
||||
dw OFFSET cmd71F
|
||||
dw OFFSET cmd720
|
||||
dw OFFSET cmd721
|
||||
dw OFFSET cmd722
|
||||
cmdo2max equ 22h
|
||||
|
||||
ALIGN 2
|
||||
nrscount dw 0
|
||||
nrsbase dw 0
|
||||
docmd_dssi PROC NEAR
|
||||
push cs:[nrscount]
|
||||
inc ax
|
||||
mov cs:nrscount,ax
|
||||
nrsl: ;nodeloop, entered also by goto
|
||||
dec cs:nrscount
|
||||
jz nrsret
|
||||
lodsw
|
||||
cmp ah,77h
|
||||
je nrs77
|
||||
cmp ah,cmdo1max
|
||||
ja nrserr
|
||||
cmp ah,0
|
||||
je cmd00
|
||||
call nrs_poly
|
||||
jmp nrsl
|
||||
nrs77: cmp al,cmdo2max
|
||||
ja nrserr
|
||||
mov bl,al
|
||||
xor bh,bh
|
||||
shl bx,1
|
||||
jmp cs:cmdo2[bx]
|
||||
nrsret: pop cs:[nrscount]
|
||||
ret
|
||||
|
||||
nrserr: ;error, unknown block etc!
|
||||
sub si,2
|
||||
mov ax,ds:[si]
|
||||
int 3
|
||||
mov cx,16
|
||||
nrserr1: push cx
|
||||
forcesetborder 1
|
||||
forcesetborder 15
|
||||
pop cx
|
||||
loop nrserr1
|
||||
|
||||
cmd00: mov ax,1 ;add this object to OBJD list
|
||||
jmp nrsret
|
||||
|
||||
cmd700: ;goto
|
||||
mov si,ds:[si]
|
||||
jmp nrsl
|
||||
|
||||
cmd701: ;call
|
||||
push si
|
||||
push ds
|
||||
mov si,ds:[si]
|
||||
call donrsnode
|
||||
pop ds
|
||||
pop si
|
||||
add si,2
|
||||
jmp nrsl
|
||||
|
||||
cmd702: ;call multiple
|
||||
lodsw
|
||||
cmp ax,-1
|
||||
je nr7c1
|
||||
push si
|
||||
push ds
|
||||
mov si,ax
|
||||
call donrsnode
|
||||
pop ds
|
||||
pop si
|
||||
jmp cmd702
|
||||
nr7c1: jmp nrsl
|
||||
|
||||
cmd705: ;call just one command (no node push/pop/etc)
|
||||
lodsw
|
||||
push si
|
||||
push ds
|
||||
add ax,cs:nrsbase
|
||||
mov si,ax
|
||||
mov ax,1 ;do just one command
|
||||
call docmd_dssi
|
||||
pop ds
|
||||
pop si
|
||||
jmp nrsl
|
||||
|
||||
cmd70a: ;call multiple one command (no node push/pop/etc)
|
||||
mov cx,ds:[si]
|
||||
add si,2
|
||||
cm70a2: push cx
|
||||
lodsw
|
||||
push si
|
||||
push ds
|
||||
add ax,cs:nrsbase
|
||||
mov si,ax
|
||||
mov ax,1 ;do just one command
|
||||
call docmd_dssi
|
||||
pop ds
|
||||
pop si
|
||||
pop cx
|
||||
loop cm70a2
|
||||
jmp nrsl
|
||||
|
||||
cmd706: ;set base offset
|
||||
mov ax,si
|
||||
sub ax,2
|
||||
mov cs:nrsbase,ax
|
||||
jmp nrsl
|
||||
|
||||
cmd707: ;goto/relative
|
||||
mov si,ds:[si]
|
||||
add si,cs:nrsbase
|
||||
jmp nrsl
|
||||
|
||||
cmd708: lodsw
|
||||
or cs:noflags,ax
|
||||
jmp nrsl
|
||||
|
||||
cmd709: ;call NRS header equipped node
|
||||
push si
|
||||
push ds
|
||||
mov si,ds:[si]
|
||||
call donrswheader
|
||||
pop ds
|
||||
pop si
|
||||
add si,2
|
||||
jmp nrsl
|
||||
|
||||
cmd712: ;translate and move
|
||||
cmd710: ;translate
|
||||
push ax
|
||||
mov di,OFFSET nmatrix
|
||||
call rotateposition ;si=>rotatedx,y,z
|
||||
mov eax,cs:rotatedx
|
||||
add cs:nxpos,eax
|
||||
mov eax,cs:rotatedy
|
||||
add cs:nypos,eax
|
||||
mov eax,cs:rotatedz
|
||||
add cs:nzpos,eax
|
||||
|
||||
mov ebp,ds:[si+4]
|
||||
mov dword ptr ds:[si+4],0
|
||||
mov di,OFFSET nmatrix
|
||||
call rotateposition ;si=>rotatedx,y,z
|
||||
mov eax,cs:rotatedx
|
||||
add cs:nxspos,eax
|
||||
mov eax,cs:rotatedy
|
||||
add cs:nyspos,eax
|
||||
mov eax,cs:rotatedz
|
||||
add cs:nzspos,eax
|
||||
mov ds:[si+4],ebp
|
||||
|
||||
add si,12
|
||||
pop ax
|
||||
cmp al,12h
|
||||
jne nr7d2
|
||||
mov cx,cs:_framestaken
|
||||
cm710b: mov eax,ds:[si]
|
||||
add ds:[si-3*4],eax
|
||||
mov eax,ds:[si+4]
|
||||
add ds:[si-2*4],eax
|
||||
mov eax,ds:[si+8]
|
||||
add ds:[si-1*4],eax
|
||||
loop cm710b
|
||||
add si,12
|
||||
nr7d2: jmp nrsl
|
||||
|
||||
cmd711: ;rotate ZR*YR*XR
|
||||
push si
|
||||
push ds
|
||||
mov ax,ds:[si+0]
|
||||
mov bx,ds:[si+2]
|
||||
mov cx,ds:[si+4]
|
||||
cmp ax,0
|
||||
jne nr7e1
|
||||
cmp bx,0
|
||||
jne nr7e1
|
||||
cmp cx,0
|
||||
jne nr7e1
|
||||
jmp nr7e2
|
||||
nr7e1: cmp ax,ds:[si+6]
|
||||
jne nr7e3
|
||||
cmp bx,ds:[si+8]
|
||||
jne nr7e3
|
||||
cmp cx,ds:[si+10]
|
||||
jne nr7e3
|
||||
mov ax,ds
|
||||
mov es,ax
|
||||
mov di,si
|
||||
add di,12
|
||||
jmp nr7e4
|
||||
nr7e3: mov ds:[si+6],ax
|
||||
mov ds:[si+8],bx
|
||||
mov ds:[si+10],cx
|
||||
mov di,si
|
||||
add di,12
|
||||
call calcmatrix ;ds:si=src(rx,ry,rz) => ds:di=dest
|
||||
mov ax,ds
|
||||
mov es,ax
|
||||
nr7e4: mov si,OFFSET nmatrix
|
||||
mov ax,cs
|
||||
mov ds,ax
|
||||
call mulmatrices
|
||||
nr7e2: pop ds
|
||||
pop si
|
||||
add si,6+6+9*2
|
||||
jmp nrsl
|
||||
|
||||
cmd719: ;simplex precalced zsort jmp
|
||||
mov cx,ds:[si]
|
||||
add si,2
|
||||
mov edx,32767
|
||||
cm719b: mov ebx,ds:[si]
|
||||
shl bx,pointshl
|
||||
push edx
|
||||
mov eax,dword ptr cs:point[PX+bx] ;X
|
||||
imul eax
|
||||
mov edi,eax
|
||||
mov eax,dword ptr cs:point[PY+bx] ;Y
|
||||
imul eax
|
||||
add edi,eax
|
||||
mov eax,dword ptr cs:point[PZ+bx] ;Z
|
||||
imul eax
|
||||
add edi,eax
|
||||
sar edi,16
|
||||
mov bx,di
|
||||
pop edx
|
||||
cmp bx,dx
|
||||
jg cm719c
|
||||
mov edx,ebx
|
||||
cm719c: add si,4
|
||||
loop cm719b
|
||||
shr edx,16
|
||||
add dx,cs:nrsbase
|
||||
mov si,dx
|
||||
jmp nrsl
|
||||
|
||||
cmd720: ;bounding box
|
||||
add si,6
|
||||
call initnrsobj
|
||||
jmp nrsl
|
||||
|
||||
cmd721: ;points
|
||||
push si
|
||||
push ds
|
||||
mov ax,cs
|
||||
mov ds,ax
|
||||
mov si,OFFSET nmatrix
|
||||
call nwritematrix
|
||||
pop ds
|
||||
pop si
|
||||
mov cx,ds:[si]
|
||||
add si,2
|
||||
;calc
|
||||
push cx
|
||||
push ds
|
||||
push si
|
||||
call ncalcpoints ;cx,ds:si
|
||||
pop si
|
||||
pop ds
|
||||
pop cx
|
||||
;add si
|
||||
shl cx,1
|
||||
mov dx,cx
|
||||
shl cx,1
|
||||
add cx,dx
|
||||
add si,cx
|
||||
jmp nrsl
|
||||
|
||||
cmd722: ;normals
|
||||
push si
|
||||
push ds
|
||||
mov ax,cs
|
||||
mov ds,ax
|
||||
mov si,OFFSET nmatrix
|
||||
call nwritematrix2
|
||||
pop ds
|
||||
pop si
|
||||
mov cx,ds:[si]
|
||||
add si,2
|
||||
;calc
|
||||
push cx
|
||||
push ds
|
||||
push si
|
||||
call ncalcpoints2 ;cx,ds:si
|
||||
pop si
|
||||
pop ds
|
||||
pop cx
|
||||
;add si
|
||||
shl cx,1
|
||||
mov dx,cx
|
||||
shl cx,1
|
||||
add cx,dx
|
||||
add si,cx
|
||||
jmp nrsl
|
||||
|
||||
cmd70b: ;breakpoint
|
||||
int 3
|
||||
jmp nrsl
|
||||
|
||||
cmd713: ;killer counter
|
||||
cmp word ptr ds:[si],0
|
||||
jg nr7k1
|
||||
mov ax,0 ;do NOT add this object to OBJD list
|
||||
jmp nrsret
|
||||
nr7k1: dec word ptr ds:[si]
|
||||
add si,2
|
||||
jmp nrsl
|
||||
|
||||
cmd714: ;rotate ZR*YR*XR
|
||||
push si
|
||||
push ds
|
||||
mov ax,ds
|
||||
mov es,ax
|
||||
mov di,si
|
||||
mov si,OFFSET nmatrix
|
||||
mov ax,cs
|
||||
mov ds,ax
|
||||
call mulmatrices
|
||||
pop ds
|
||||
pop si
|
||||
add si,9*2
|
||||
jmp nrsl
|
||||
|
||||
cmd715: ;far goto
|
||||
mov bx,ds:[si]
|
||||
mov ax,ds:[si+2]
|
||||
cmp bx,0
|
||||
jne cm715a
|
||||
cmp ax,0
|
||||
jne cm715a
|
||||
jmp cmd00
|
||||
cm715a: mov ds,ax
|
||||
mov si,bx
|
||||
jmp nrsl
|
||||
|
||||
cmd716: ;lightsource position
|
||||
push ds
|
||||
push si
|
||||
mov di,OFFSET nmatrix
|
||||
call rotateposition
|
||||
mov eax,cs:rotatedx
|
||||
mov ebx,cs:rotatedy
|
||||
mov ecx,cs:rotatedz
|
||||
call unify32
|
||||
shl ax,6
|
||||
shl bx,6
|
||||
shl cx,6
|
||||
mov cs:newlight[0],ax
|
||||
mov cs:newlight[2],bx
|
||||
mov cs:newlight[4],cx
|
||||
pop si
|
||||
pop ds
|
||||
add si,12
|
||||
jmp nrsl
|
||||
|
||||
cmd71F: ;set shadow level
|
||||
jmp nrsl
|
||||
docmd_dssi ENDP
|
||||
Loading…
Reference in a new issue