mirror of https://git.ia64.cc/perso/cos2000v1.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
5.3 KiB
245 lines
5.3 KiB
model tiny,stdcall |
|
p586N |
|
locals |
|
jumps |
|
codeseg |
|
option procalign:byte |
|
|
|
include "..\include\mem.h" |
|
include "..\include\fat.h" |
|
include "..\include\divers.h" |
|
include "..\include\3d.h" |
|
|
|
org 0h |
|
|
|
start: |
|
header exe <"CE",1,0,0,,offset imports,,offset realstart> |
|
|
|
data: |
|
|
|
camera vertex3d <320.0,240.0,70.0> |
|
|
|
zoom dd 5.0 |
|
rot1 dd 0.1 |
|
rot2 dd -0.1 |
|
|
|
vertexnbp dw 15 |
|
dd 0.0,0.0,0.0 |
|
dd 20.0,0.0,0.0 |
|
dd 24.0,0.0,0.0 |
|
dd 20.0,-2.0,0.0 |
|
dd 20.0,2.0,0.0 |
|
dd 0.0,0.0,0.0 |
|
dd 0.0,20.0,0.0 |
|
dd 0.0,24.0,0.0 |
|
dd -2.0,20.0,0.0 |
|
dd 2.0,20.0,0.0 |
|
dd 0.0,0.0,0.0 |
|
dd 0.0,0.0,20.0 |
|
dd 0.0,0.0,24.0 |
|
dd -2.0,-2.0,20.0 |
|
dd 2.0,2.0,20.0 |
|
|
|
facenbp dw 6 |
|
dw 0,1,1 |
|
dw 2,4,3 |
|
dw 5,6,6 |
|
dw 7,9,8 |
|
dw 10,11,11 |
|
dw 12,14,13 |
|
|
|
vertexnbp2 dw 15 |
|
dd 0.0,0.0,0.0 |
|
dd 20.0,0.0,0.0 |
|
dd 24.0,0.0,0.0 |
|
dd 20.0,-2.0,0.0 |
|
dd 20.0,2.0,0.0 |
|
dd 0.0,0.0,0.0 |
|
dd 0.0,20.0,0.0 |
|
dd 0.0,24.0,0.0 |
|
dd -2.0,20.0,0.0 |
|
dd 2.0,20.0,0.0 |
|
dd 0.0,0.0,0.0 |
|
dd 0.0,0.0,20.0 |
|
dd 0.0,0.0,24.0 |
|
dd -2.0,-2.0,20.0 |
|
dd 2.0,2.0,20.0 |
|
|
|
|
|
mat1 mat <?> |
|
mat2 mat <?> |
|
mat3 mat <?> |
|
matrixp mat <?> |
|
|
|
mode db 0 |
|
|
|
objectp: |
|
vertexp equ objectp+15 |
|
facep equ vertexp+20000 |
|
screen equ facep+20000 |
|
|
|
;typep db ? |
|
;objectp db 15 dup (?) |
|
;vertexp db 1000*4*3+2 dup (?) |
|
;facep db 2000*3+2 dup (?) |
|
;screen db 1000*2*2 dup (?) |
|
|
|
|
|
realstart: |
|
call [cs:savestate] |
|
call [cs:setvideomode],10 |
|
call [cs:clearscreen] |
|
call [cs:mballoc],65535 |
|
mov es,ax |
|
mov si,offset data |
|
mov di,si |
|
mov ecx,(offset realstart-offset data) |
|
shr ecx,2 |
|
inc ecx |
|
cld |
|
rep movsd |
|
call [cs:projfile],offset filename |
|
jc errorloading |
|
call [cs:mbfind],offset filename |
|
jc errorloading |
|
push es |
|
pop ds |
|
mov es,ax |
|
call [cs:load3ds],es,0,offset objectp,offset vertexp,offset matrixp,offset facep |
|
call [cs:transform],offset vertexnbp,offset matrixp |
|
call [cs:identity],offset mat1 |
|
jmp show |
|
rool: |
|
mov ah,1 |
|
int 16h |
|
jz rool |
|
xor ax,ax |
|
int 16h |
|
cmp ax,011Bh |
|
je endee |
|
cmp ax,3B00h |
|
jne notmode |
|
inc [mode] |
|
cmp [mode],3 |
|
jb notmodify |
|
mov [mode],0 |
|
jmp notmodify |
|
notmode: |
|
cmp ax,4800h |
|
jne notup |
|
call [cs:rotationx],offset mat1,[rot2] |
|
jmp show |
|
notup: |
|
cmp ax,5000h |
|
jne notdown |
|
call [cs:rotationx],offset mat1,[rot1] |
|
jmp show |
|
notdown: |
|
cmp ax,4B00h |
|
jne notleft |
|
call [cs:rotationy],offset mat1,[rot1] |
|
jmp show |
|
notleft: |
|
cmp ax,4D00h |
|
jne notright |
|
call [cs:rotationy],offset mat1,[rot2] |
|
jmp show |
|
notright: |
|
cmp ax,4900h |
|
jne notupup |
|
call [cs:rotationz],offset mat1,[rot1] |
|
jmp show |
|
notupup: |
|
cmp ax,5100h |
|
jne notdowndown |
|
call [cs:rotationz],offset mat1,[rot2] |
|
jmp show |
|
notdowndown: |
|
cmp ax,4A2Dh |
|
jne notminus |
|
fld [camera.tz] |
|
fsub [zoom] |
|
fstp [camera.tz] |
|
jmp show |
|
notminus: |
|
cmp ax,4E2Bh |
|
jne notmaxus |
|
fld [camera.tz] |
|
fadd [zoom] |
|
fstp [camera.tz] |
|
jmp show |
|
notmaxus: |
|
call [cs:identity],offset mat1 |
|
jmp rool |
|
show: |
|
call [cs:transform],offset vertexp,offset mat1 |
|
call [cs:transform],offset vertexnbp,offset mat1 |
|
notmodify: |
|
call [cs:clearscreen] |
|
call [cs:print],offset objectp |
|
call [cs:draw3d_line],3,offset facenbp,offset vertexnbp,offset screen,offset camera,3 |
|
call [cs:draw3d_line],3,offset facenbp,offset vertexnbp2,offset screen,offset camera,3 |
|
cmp [mode],0 |
|
jne line |
|
call [cs:draw3d_point],offset vertexp,offset screen,offset camera,4 |
|
jmp retrace |
|
line: |
|
cmp [mode],1 |
|
jne hidden |
|
call [cs:draw3d_line],3,offset facep,offset vertexp,offset screen,offset camera,4 |
|
jmp retrace |
|
hidden: |
|
call [cs:draw3d_hidden],3,offset facep,offset vertexp,offset screen,offset camera,4 |
|
retrace: |
|
call [cs:waitretrace] |
|
call [cs:waitretrace] |
|
jmp rool |
|
endee: |
|
call [cs:restorestate] |
|
retf |
|
|
|
errorloading: |
|
push cs |
|
pop ds |
|
call [cs:print],offset errorload |
|
call [cs:bioswaitkey] |
|
jmp endee |
|
|
|
errorload db '\c02Erreur au chargement du fichier 3D\l<Appuyez sur une touche>\c07',0 |
|
|
|
filename find <"SPHERE.3DS",0,0,0,1,> |
|
|
|
|
|
importing |
|
use 3D.LIB,draw3d_point |
|
use 3D.LIB,draw3d_line |
|
use 3D.LIB,draw3d_hidden |
|
use 3D.LIB,draw3d_hidden_fill |
|
use 3D.LIB,load3ds |
|
use 3D.LIB,translate |
|
use 3D.LIB,translatex |
|
use 3D.LIB,translatey |
|
use 3D.LIB,translatez |
|
use 3D.LIB,scale |
|
use 3D.LIB,rescale |
|
use 3D.LIB,copy |
|
use 3D.LIB,fill |
|
use 3D.LIB,identity |
|
use 3D.LIB,rotationx |
|
use 3D.LIB,rotationy |
|
use 3D.LIB,rotationz |
|
use 3D.LIB,rotation |
|
use 3D.LIB,project |
|
use 3D.LIB,transform |
|
use 3D.LIB,multiply |
|
use VIDEO,savestate |
|
use VIDEO,clearscreen |
|
use VIDEO,setvideomode |
|
use VIDEO,restorestate |
|
use VIDEO,waitretrace |
|
use SYSTEME,bioswaitkey |
|
use SYSTEME,mbfind |
|
use SYSTEME,mballoc |
|
use VIDEO.LIB,print |
|
use DISQUE,projfile |
|
endi
|
|
|