home *** CD-ROM | disk | FTP | other *** search
- P386N
-
- ASSUME CS:_CODE,DS:_DATA;,SS:_STACK
-
- SEGMENT _DATA WORD PUBLiC 'DATA' USE32
- ENDS _DATA
- EXTRN LOADOVERLAYhivo:FAR
- public pattvect
- public palonly
- public points,wordsin,wp
- SEGMENT _CODE PARA PUBLiC 'CODE' USE16
-
- ;----------------------------------------------------------------------------
- EXTRN PLAYINGPATTERN:WORD
- EXTRN PATTERNROW:WORD
- pattvect: MOV DX,0
- MOV DS,CS:WORDSIN
- MOV AX,12
- CALL LOADOVERLAYHIVO
- MOV SI,0
- MOV DI,0
- MOV AX,0A000H
- MOV ES,AX
-
- MOV CX,200
- LOGOKIRAK: PUSH CX
- MOV CX,30
- REP MOVSW
- MOVSB
- ADD DI,320-61
- POP CX
- LOOP LOGOKIRAK
-
- CALL REGBEALLiT
- CALL SiNTABLATOLT
- CALL CLEAN
- CALL COUNT_VERTiCES
- MOV Si,ROTDEGX
- MOV AX,FS:[Si]
- MOV SiNX,AX
- MOV AX,FS:[360+Si]
- MOV COSX,AX
- MOV Si,ROTDEGY
- MOV AX,FS:[Si]
- MOV SiNY,AX
- MOV AX,FS:[360+Si]
- MOV COSY,AX
- CALL LEKEPZES
- JMP VEGE
- ;----------------------------------------------------------------------------
- REGBEALLiT: MOV AX,CS
- MOV DS,AX
- MOV ES,AX
- MOV AX,[WORDSiN]
- MOV FS,AX
- MOV AX,[POiNTS]
- MOV GS,AX
- RET
- SiNTABLATOLT: MOV DX,0
- PUSH DS WORDSiN
- POP DS
- MOV AX,2
- CALL LOADOVERLAYhivo
- POP DS
- RET
- ;----------------------------------------------------------------------------
- COUNT_VERTiCES: LEA Si,[OBJECT_VERTiCES]
- C_2: LODSW
- iNC [VERTiCESNUM]
- CMP AX,8000H
- JNE C_2
- DEC [VERTiCESNUM]
- MOV AX,[VERTiCESNUM]
- MOV BX,3
- DiV BX
- MOV [VERTiCESNUM],AX
- RET
- ;----------------------------------------------------------------------------
- LEKEPZES: MOV Si,ROTDEGX ;X
- MOV AX,FS:[Si]
- MOV SiNX,AX
- MOV AX,FS:[360+Si]
- MOV COSX,AX
- MOV Si,ROTDEGY ;Y
- MOV AX,FS:[Si]
- MOV SiNY,AX
- MOV AX,FS:[360+Si]
- MOV COSY,AX
- ;CALL RASTERWAiT
- CALL FORGAT
- CALL KiRAK
- CALL DiSP
- ADD ROTDEGX,8
- CMP ROTDEGX,1440
- JB OKDEGX
- MOV ROTDEGX,0
- OKDEGX: ADD ROTDEGY,8
- CMP ROTDEGY,1440
- JB OKDEGY
- MOV ROTDEGY,0
- OKDEGY: JMP LEKEPZES
- RET
- ;----------------------------------------------------------------------------
- ATRAK: MOV Si,0
- MOV Di,500
- PUSH ES DS GS GS
- POP ES DS
- MOV CX,[VERTiCESNUM]
- ADD CX,1
- REPNZ MOVSW
- POP DS ES
- RET
- ;----------------------------------------------------------------------------
- FORGAT: LEA Si,[OBJECT_VERTiCES]
- MOV Di,0 ;POiNTS=GS
-
- NEMUT: MOV AX,[Si] ;FORGATáS X KöRüL
- CMP AX,8000H
- JNE FOLYT
- JMP NOFOLYT
-
- FOLYT: MOV X1,AX ;X1 <- X0
- MOV AX,[Si+2]
- iMUL COSX
- MOV BX,AX
- MOV AX,[Si+4]
- iMUL SiNX
- SUB BX,AX ;Y1 <- (Y0*COSA)-(Z0*SiNA)
- SAR BX,7
- MOV Y1,BX
- MOV AX,[Si+2]
- iMUL SiNX
- MOV BX,AX
- MOV AX,[Si+4]
- iMUL COSX
- ADD AX,BX ;Z1 <- (Y0*SiNA)+(Z0*COSA)
- SAR AX,7
- MOV Z1,AX
-
- MOV AX,X1 ;FORGATáS Y KöRüL
- iMUL COSY
- MOV BX,AX
- MOV AX,Z1
- iMUL SiNY
- ADD BX,AX ;X2 <- (X1*COSB)+(Z1*SiNB)
- SAR BX,7
- MOV X3,BX
- MOV AX,Y1
- MOV Y3,AX ;Y2 <- Y1
- MOV AX,X1
- NEG AX
- iMUL SiNY
- MOV BX,AX
- MOV AX,Z1
- iMUL COSY
- ADD AX,BX ;Z2 <- (-X1*SiNB)+(Z1*COSB)
- SAR AX,7
- MOV Z3,AX
- ;CALL STOREZS ;LETAROLNi A Z-KET A RENDEZESHEZ
-
- MOV AX,X3 ;3D-2D LEKéPZéS
- iMUL SZEMTAV
- MOV CX,SZEMTAV
- SUB CX,Z3
- iDiV CX
- iMUL ZOOMMUL
- iDiV ZOOMDiV
- MOV X4,AX ;X = ((X3*TORZ)/(TORZ-Z3))+160
- MOV AX,Y3
- iMUL SZEMTAV
- iDiV CX
- iMUL ZOOMMUL
- iDiV ZOOMDiV
- SUB AX,100
- MOV Y4,AX ;Y = ((Y3*TORZ)/(TORZ-Z3))+100;
- MOV AX,320
- MUL Y4 ;CREATE SCREEN OFFSET
- ADD AX,X4
- SUB AX,100
- MOV GS:[Di],AX
- ADD Di,2
- ADD Si,6
- JMP NEMUT
- NOFOLYT: MOV AX,8000H
- MOV GS:[Di],AX
- RET
- ;-----------------------------------------------------KiiRAS------------------
- KiRAK: LEA Si,[OBJECT_LiNES]
- MOV Di,0
- UJFACE: LODSW
- CMP AX,8000H
- JE LASTFACE
- SHL AX,1
- MOV Di,AX
- MOV AX,GS:[Di]
- MOV BX,320
- MOV DX,0
- DiV BX
- MOV Y1,AX
- MOV X1,DX
- LODSW
- CMP AX,8000H
- JE LASTFACE
- SHL AX,1
- MOV Di,AX
- MOV AX,GS:[Di]
- MOV BX,320
- MOV DX,0
- DiV BX
- MOV Y2,AX
- MOV X2,DX
- LODSW
- MOV [SZiN],AL
- CALL LiNE
- JMP UJFACE
- LASTFACE: RET
- ;-----------------------------------------------------------------------------
- RASTERWAiT: PUSH DX AX
- MOV DX,03DAH
- RAST1: iN AL,DX
- TEST AL,8
- JZ RAST1
- POP AX DX
- RET
- ViDEOMOD: MOV AX,13H
- iNT 10H
- RET
- VEGE: retf
- ;-----------------------------------------------------------------------------
-
- KEZD DW 80+(200*320)+40
- MOVTBLPTR DW 0
- MOVTBLPTR2 DW 0
- HAROMHUSZ DW 320
- BENTSOR DW 1
-
- DiSP: PUSHA
- PUSH DS ES
- MOV ES,CS:[WP]
- CALL SMOOTH
- MOV AX,0A000H
- MOV ES,AX
- MOV DS,CS:[WP]
- MOV Di,CS:[KEZD]
-
- MOV Si,80+24*320
- MOV CX,CS:[BENTSOR]
- DiSP1: PUSH CX
- MOV CX,160/4
- REP MOVSD
- ADD Si,160
- ADD Di,160
- POP CX
- LOOP DiSP1
-
- MOV BX,CS:[MOVTBLPTR]
- MOV AX,WORD PTR CS:[MOVETABLE+BX]
- CMP AX,8000H
- JE DiSP2
- SUB CS:[BENTSOR],AX
- MOV BX,AX
- SHL AX,8
- SHL BX,6
- ADD AX,BX
- ADD CS:[KEZD],AX
- iNC CS:[MOVTBLPTR]
- iNC CS:[MOVTBLPTR]
- DiSP2: POP ES DS
- POPA
-
- CMP CS:[PLAYINGPATTERN],7
- JE DISPIKE
- CMP CS:[PLAYINGPATTERN],6
- JB DISP3
- CMP CS:[PATTERNROW],61
- JB DUDU1
- MOV CS:[ZOOMMUL],50
- JMP DISP3
- DUDU1: CMP CS:[PATTERNROW],57
- JB DUDU2
- MOV CS:[ZOOMMUL],110
- JMP DISP3
- DUDU2: CMP CS:[PATTERNROW],53
- JB DUDU3
- MOV CS:[ZOOMMUL],170
- JMP DISP3
- DUDU3: CMP CS:[PATTERNROW],49
- JB DUDU4
- MOV CS:[ZOOMMUL],230
- JMP DISP3
- DUDU4: MOV CS:[ZOOMMUL],300
- JMP DISP3
-
-
- DISPIKE:
- PUSHA
- MOV BX,CS:[MOVTBLPTR2]
- MOV AX,WORD PTR CS:[MOVETABLE2+BX]
- CMP AX,8000H
- JE DiSP4
- SUB CS:[BENTSOR],AX
- MOV BX,AX
- SHL AX,8
- SHL BX,6
- ADD AX,BX
- ADD CS:[KEZD],AX
- iNC CS:[MOVTBLPTR2]
- iNC CS:[MOVTBLPTR2]
- POPA
- JMP DISP3
- DISP4: POPA
- POP EAX ;SIMULATE 2*'ret'
- RETF
- DISP3: RET
-
- CLEAN: PUSHA
- PUSH ES
- MOV ES,CS:[WP]
- MOV CX,16000+320
- MOV Di,0
- MOV EAX,02020202H
- REP STOSD
- POP ES
- POPA
- RET
-
- FiLLSCREEN: PUSHA
- PUSH ES
- MOV AX,0A000H
- MOV ES,AX
- MOV CX,200
- MOV EAX,01010101H
- MOV Di,80
- FiLLS1: PUSH CX
- MOV CX,60
- REP STOSD
- ADD Di,80
- POP CX
- LOOP FiLLS1
- POP ES
- POPA
- RET
- PALONLY: CALL PALETTA
- RETF
-
- WP DW 0
- SZEMTAV DW 300
- X1 DW 0
- Y1 DW 0
- Z1 DW 0
- X2 DW 0
- Y2 DW 0
- Z2 DW 0
- X3 DW 0
- Y3 DW 0
- Z3 DW 0
- X4 DW 0
- Y4 DW 0
- ROTDEGX DW 0
- ROTDEGY DW 0
- ROTDEGZ DW 0
- SiNX DW 0
- COSX DW 0
- SiNY DW 0
- COSY DW 0
- SiNZ DW 0
- COSZ DW 0
- ZOOMMUL DW 300
- ZOOMDiV DW 800
- TEMPTAV DW 0
- POiNTS DW 0
- POiNTS2 DW 0
- WORDSiN DW 0
- KOCZKA_VERTiCES DW 0
- KOCZKA_FACES DW 0
- VERTiCESNUM DW 0
-
- iNCLUDE OBJECT.iNC
- iNCLUDE LiNE_Y.iNC
- iNCLUDE SMOOTH.ASM
- iNCLUDE MOVETBL.iNC
-
- ENDS _CODE
- END
-