home *** CD-ROM | disk | FTP | other *** search
/ CD-X 3 / cdx_03.iso / democomp / demo / _2complx.arj / 2CLX-SRC.ZIP / VALAMI / VECTOR.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-11-10  |  8.3 KB  |  256 lines

  1. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  2. ;
  3. ; AJJJAJJJ... EZ A LEGRONDABB FORRAS AZ OSSZES KOZT, NA HIABA, HAMAR MUNKA
  4. ; RITKAN JO... ;)
  5. ;
  6. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  7.  
  8.  
  9. VECTORVALAMI:   CALL    POiNTERSET
  10.                 MOV     AX,13H
  11.                 iNT     10H
  12.  
  13.                 CALL    FiLLSCREEN
  14.                 CALL    PALETTA
  15.                 MOV     AX,CS:ORDERPOINTER
  16.                 MOV     CS:ORDERVAR,AX
  17.                 CALL    LEKEPZES
  18.  
  19.                 LEA     DX,OBJECT_VERTICES
  20.                 MOV     AX,CS
  21.                 MOV     DS,AX
  22.                 MOV     AX,18
  23.                 CALL    LOADOVERLAY
  24.                 CALL    FiLLSCREEN
  25.                 CALL    PALETTA2
  26.                 MOV     AX,CS:ORDERPOINTER
  27.                 MOV     CS:ORDERVAR,AX
  28.                 CALL    LEKEPZES
  29.                 RET
  30.  
  31. VECTORVALAMI2:  MOV     AX,13H
  32.                 INT     10H
  33.                 CALL    FiLLSCREEN
  34.                 CALL    PALETTA3
  35.                 MOV     AX,CS:ORDERPOINTER
  36.                 MOV     CS:ORDERVAR,AX
  37.                 MOV     CS:ZOOMMUL,400
  38.                 MOV     CS:SZEMTAV,150
  39.                 CALL    LEKEPZES
  40.  
  41.                 LEA     DX,OBJECT_VERTICES
  42.                 MOV     AX,CS
  43.                 MOV     DS,AX
  44.                 MOV     AX,21
  45.                 CALL    LOADOVERLAY
  46.                 CALL    FiLLSCREEN
  47.                 CALL    PALETTA4
  48.                 MOV     AX,CS:ORDERPOINTER
  49.                 MOV     CS:ORDERVAR,AX
  50.                 MOV     CS:SZEMTAV,500
  51.                 MOV     CS:ZOOMMUL,300
  52.                 MOV     CS:ZOOMDIV,600
  53.                 MOV     BYTE PTR CS:IDENOP,90H
  54.                 MOV     BYTE PTR CS:IDENOP+1,90H
  55.                 CALL    LEKEPZES
  56.  
  57.                 RET
  58.  
  59. POiNTERSET:     MOV     AX,CS
  60.                 MOV     DS,AX
  61.                 MOV     ES,AX
  62.                 MOV     AX,[POiNTS]
  63.                 MOV     GS,AX
  64.                 RET
  65. ;----------------------------------------------------------------------------
  66. LEKEPZES:       LEA     SI,CS:WORDSIN
  67.                 ADD     Si,CS:ROTDEGX                ;X
  68.                 MOV     AX,CS:[Si]
  69.                 MOV     SiNX,AX
  70.                 MOV     AX,CS:[360+Si]
  71.                 MOV     COSX,AX
  72.                 LEA     SI,CS:WORDSIN
  73.                 ADD     Si,CS:ROTDEGY                ;Y
  74.                 MOV     AX,CS:[Si]
  75.                 MOV     SiNY,AX
  76.                 MOV     AX,CS:[360+Si]
  77.                 MOV     COSY,AX
  78.                 CALL    RASTERWAiT
  79.                 CALL    FORGAT
  80.                 CALL    KiRAK
  81.                 CALL    DiSPVECTOR
  82.                 ADD     ROTDEGX,16
  83.                 CMP     ROTDEGX,1440
  84.                 JB      OKDEGX
  85.                 MOV     ROTDEGX,0
  86. OKDEGX:         ADD     ROTDEGY,16
  87.                 CMP     ROTDEGY,1440
  88.                 JB      OKDEGY
  89.                 MOV     ROTDEGY,0
  90. OKDEGY:         MOV     AX,CS:ORDERPOINTER
  91.                 CMP     AX,CS:ORDERVAR
  92.                 JE      LEKEPZES
  93.                 RET
  94. ;----------------------------------------------------------------------------
  95. FORGAT:         LEA     Si,[OBJECT_VERTiCES]
  96.                 MOV     Di,0                 ;POiNTS=GS
  97.  
  98. NEMUT:          MOV     AX,[Si]              ;FORGATáS X KöRüL
  99.                 CMP     AX,8000H
  100.                 JNE     FOLYT
  101.                 JMP     NOFOLYT
  102.  
  103. FOLYT:          MOV     X1_,AX                ;X1 <- X0
  104.                 MOV     AX,[Si+2]
  105.                 iMUL    COSX
  106.                 MOV     BX,AX
  107.                 MOV     AX,[Si+4]
  108.                 iMUL    SiNX
  109.                 SUB     BX,AX                ;Y1 <- (Y0*COSA)-(Z0*SiNA)
  110.                 SAR     BX,7
  111.                 MOV     Y1_,BX
  112.                 MOV     AX,[Si+2]
  113.                 iMUL    SiNX
  114.                 MOV     BX,AX
  115.                 MOV     AX,[Si+4]
  116.                 iMUL    COSX
  117.                 ADD     AX,BX                ;Z1 <- (Y0*SiNA)+(Z0*COSA)
  118.                 SAR     AX,7
  119.                 MOV     Z1,AX
  120.  
  121.                 MOV     AX,X1_               ;FORGATáS Y KöRüL
  122.                 iMUL    COSY
  123.                 MOV     BX,AX
  124.                 MOV     AX,Z1
  125.                 iMUL    SiNY
  126.                 ADD     BX,AX                ;X2 <- (X1*COSB)+(Z1*SiNB)
  127.                 SAR     BX,7
  128.                 MOV     X3,BX
  129.                 MOV     AX,Y1_
  130.                 MOV     Y3,AX                ;Y2 <- Y1
  131.                 MOV     AX,X1_
  132.                 NEG     AX
  133.                 iMUL    SiNY
  134.                 MOV     BX,AX
  135.                 MOV     AX,Z1
  136.                 iMUL    COSY
  137.                 ADD     AX,BX                ;Z2 <- (-X1*SiNB)+(Z1*COSB)
  138.                 SAR     AX,7
  139.                 MOV     Z3,AX
  140.  
  141.                 MOV     AX,X3                ;3D-2D LEKéPZéS
  142.                 iMUL    SZEMTAV
  143.                 MOV     CX,SZEMTAV
  144.                 SUB     CX,Z3
  145.                 iDiV    CX
  146.                 iMUL    ZOOMMUL
  147.                 iDiV    ZOOMDiV
  148.                 MOV     X4,AX                ;X = ((X3*TORZ)/(TORZ-Z3))+160
  149.                 MOV     AX,Y3
  150.                 iMUL    SZEMTAV
  151.                 iDiV    CX
  152.                 iMUL    ZOOMMUL
  153.                 iDiV    ZOOMDiV
  154.                 SUB     AX,105
  155.                 MOV     Y4,AX                ;Y = ((Y3*TORZ)/(TORZ-Z3))+100;
  156.                 MOV     AX,320
  157.                 MUL     Y4                   ;CREATE SCREEN OFFSET
  158.                 ADD     AX,X4
  159.                 SUB     AX,97
  160.                 MOV     GS:[Di],AX
  161.                 ADD     Di,2
  162.                 ADD     Si,6
  163.                 JMP     NEMUT
  164. NOFOLYT:        MOV     AX,8000H
  165.                 MOV     GS:[Di],AX
  166.                 RET
  167. ;-----------------------------------------------------KiiRAS------------------
  168. KiRAK:          LEA     Si,[OBJECT_LiNES]
  169.                 MOV     Di,0
  170. UJFACE:         LODSW
  171.                 CMP     AX,8000H
  172.                 JE      LASTFACE
  173.                 SHL     AX,1
  174.                 MOV     Di,AX
  175.                 MOV     AX,GS:[Di]
  176.                 MOV     BX,320
  177.                 MOV     DX,0
  178.                 DiV     BX
  179.                 MOV     Y1_,AX
  180.                 MOV     X1_,DX
  181.                 LODSW
  182.                 CMP     AX,8000H
  183.                 JE      LASTFACE
  184.                 SHL     AX,1
  185.                 MOV     Di,AX
  186.                 MOV     AX,GS:[Di]
  187.                 MOV     BX,320
  188.                 MOV     DX,0
  189.                 DiV     BX
  190.                 MOV     Y2,AX
  191.                 MOV     X2,DX
  192.                 LODSW
  193.                 MOV     [SZiN],AL
  194.                 CALL    LiNE
  195.                 JMP     UJFACE
  196. LASTFACE:       RET
  197. ;-----------------------------------------------------------------------------
  198.  
  199. DiSPVECTOR:     PUSHA
  200.                 PUSH    DS ES
  201.                 MOV     ES,CS:[WP]
  202.                 MOV     FS,CS:[WP]
  203.                 CALL    SMOOTH
  204.                 MOV     AX,CS:[WP]
  205.                 MOV     CS:VIRTSCREENSEGMENT,AX
  206.                 CALL    VIRTSCREEN2
  207. DiSP2:          POP     ES DS
  208.                 POPA
  209.                 RET
  210.  
  211. FiLLSCREEN:     PUSHA
  212.                 PUSH    ES
  213.                 MOV     AX,CS:WP
  214.                 MOV     ES,AX
  215.                 MOV     DI,0
  216.                 MOV     CX,16000+320
  217.                 MOV     EAX,0
  218.                 REP     STOSD
  219.                 POP     ES
  220.                 POPA
  221.                 RET
  222.  
  223. WP              DW      0
  224. SZEMTAV         DW      300
  225. X1_             DW      0
  226. Y1_             DW      0
  227. Z1              DW      0
  228. X2              DW      0
  229. Y2              DW      0
  230. Z2              DW      0
  231. X3              DW      0
  232. Y3              DW      0
  233. Z3              DW      0
  234. X4              DW      0
  235. Y4              DW      0
  236. ROTDEGX         DW      0
  237. ROTDEGY         DW      0
  238. ROTDEGZ         DW      0
  239. SiNX            DW      0
  240. COSX            DW      0
  241. SiNY            DW      0
  242. COSY            DW      0
  243. SiNZ            DW      0
  244. COSZ            DW      0
  245. ZOOMMUL         DW      350
  246. ZOOMDiV         DW      800
  247. POiNTS          DW      0
  248. ORDERVAR        DW      0
  249.  
  250. iNCLUDE         VALAMI\LiNE_Y.iNC
  251. iNCLUDE         VALAMI\SMOOTH.ASM
  252. iNCLUDE         VALAMI\MOVETBL.iNC
  253. iNCLUDE         VALAMI\OBJECT.iNC
  254. INCLUDE         VALAMI\WORDSIN.INC
  255. INCLUDE         VALAMI\VIRTUA.ASM
  256.