home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / basq / source / poweru / vector2.asm < prev    next >
Encoding:
Assembly Source File  |  1993-08-20  |  15.8 KB  |  632 lines

  1. PUBLIC        ROTATEPOINTS
  2. PUBLIC        SETROTATEANGLE
  3. PUBLIC        ADDROTATEANGLE
  4. PUBLIC        ROTATEOBJECT
  5. PUBLIC        PUTPOLY320
  6. PUBLIC        PUTOBJ320CONV
  7. PUBLIC        V1_X
  8. PUBLIC        V1_Y
  9. PUBLIC        V2_X
  10. PUBLIC        V2_Y
  11. PUBLIC        V3_X
  12. PUBLIC        V3_Y
  13. PUBLIC        POLYCOLOR
  14. PUBLIC        EYEDISTANCE
  15. PUBLIC        ORIGO_X
  16. PUBLIC        ORIGO_Y
  17. PUBLIC        ORIGO_Z
  18.  
  19. .386
  20. .MODEL USE16 SMALL
  21. .DATA
  22.  
  23. PRESENTANGLE_X    DW    0
  24. PRESENTANGLE_Y    DW    0
  25. PRESENTANGLE_Z    DW    0
  26. SINALFA        DW    0
  27. SINBETA        DW    0
  28. SINGAMMA    DW    0
  29. COSALFA        DW    0
  30. COSBETA        DW    0
  31. COSGAMMA    DW    0
  32. SINTABLE    DW    0,142,285,428,571,714,857,1000,1142,1285,1427,1570
  33.         DW    1712,1854,1996,2138,2280,2421,2563,2704,2845,2985,3126
  34.         DW    3266,3406,3546,3685,3824,3963,4102,4240,4378,4516,4653
  35.         DW    4790,4926,5062,5198,5334,5469,5603,5737,5871,6004,6137
  36.         DW    6269,6401,6533,6663,6794,6924,7053,7182,7310,7438,7565
  37.         DW    7691,7817,7943,8067,8191,8315,8438,8560,8682,8803,8923
  38.         DW    9042,9161,9279,9397,9514,9630,9745,9860,9973,10086
  39.         DW    10199,10310,10421,10531,10640,10748,10856,10963,11068
  40.         DW    11173,11278,11381,11483,11585,11685,11785,11884,11982
  41.         DW    12079,12175,12270,12365,12458,12550,12642,12732,12822
  42.         DW    12910,12998,13084,13170,13254,13338,13420,13502,13582
  43.         DW    13662,13740,13818,13894,13969,14043,14116,14188,14259
  44.         DW    14329,14398,14466,14532,14598,14662,14725,14787,14848
  45.         DW    14908,14967,15025,15081,15136,15190,15243,15295,15346
  46.         DW    15395,15444,15491,15537,15582,15625,15668,15709,15749
  47.         DW    15788,15825,15862,15897,15931,15964,15995,16025,16055
  48.         DW    16082,16109,16135,16159,16182,16204,16224,16243,16261
  49.         DW    16278,16294,16308,16321,16333,16344,16353,16361,16368
  50.         DW    16374,16378,16381,16383
  51. COSTABLE    DW    16384,16383,16381,16378,16374,16368,16361,16353,16344
  52.         DW    16333,16321,16308,16294,16278,16261,16243,16224,16204
  53.         DW    16182,16159,16135,16109,16082,16055,16025,15995,15964
  54.         DW    15931,15897,15862,15825,15788,15749,15709,15668,15625
  55.         DW    15582,15537,15491,15444,15395,15346,15295,15243,15190
  56.         DW    15136,15081,15025,14967,14908,14848,14787,14725,14662
  57.         DW    14598,14532,14466,14398,14329,14259,14188,14116,14043
  58.         DW    13969,13894,13818,13740,13662,13582,13502,13420,13338
  59.         DW    13254,13170,13084,12998,12910,12822,12732,12642,12550
  60.         DW    12458,12365,12270,12175,12079,11982,11884,11785,11685
  61.         DW    11585,11483,11381,11278,11173,11068,10963,10856,10748
  62.         DW    10640,10531,10421,10310,10199,10086,9973,9860,9745
  63.         DW    9630,9514,9397,9279,9161,9042,8923,8803,8682,8560,8438
  64.         DW    8315,8192,8067,7943,7817,7691,7565,7438,7310,7182,7053
  65.         DW    6924,6794,6663,6533,6401,6269,6137,6004,5871,5737,5603
  66.         DW    5469,5334,5198,5062,4926,4790,4653,4516,4378,4240,4102
  67.         DW    3963,3824,3685,3546,3406,3266,3126,2985,2845,2704,2563
  68.         DW    2421,2280,2138,1996,1854,1712,1570,1427,1285,1142,1000
  69.         DW    857,714,571,428,285,142,0,-142,-285,-428,-571,-714,-857
  70.         DW    -1000,-1142,-1285,-1427,-1570,-1712,-1854,-1996,-2138
  71.         DW    -2280,-2421,-2563,-2704,-2845,-2985,-3126,-3266,-3406
  72.         DW    -3546,-3685,-3824,-3963,-4102,-4240,-4378,-4516,-4653
  73.         DW    -4790,-4926,-5062,-5198,-5334,-5469,-5603,-5737,-5871
  74.         DW    -6004,-6137,-6269,-6401,-6533,-6663,-6794,-6924,-7053
  75.         DW    -7182,-7310,-7438,-7565,-7691,-7817,-7943,-8067,-8191
  76.         DW    -8315,-8438,-8560,-8682,-8803,-8923,-9042,-9161,-9279
  77.         DW    -9397,-9514,-9630,-9745,-9860,-9973,-10086,-10199
  78.         DW    -10310,-10421,-10531,-10640,-10748,-10856,-10963
  79.         DW    -11068,-11173,-11278,-11381,-11483,-11585,-11685
  80.         DW    -11785,-11884,-11982,-12079,-12175,-12270,-12365
  81.         DW    -12458,-12550,-12642,-12732,-12822,-12910,-12998
  82.         DW    -13084,-13170,-13254,-13338,-13420,-13502,-13582
  83.         DW    -13662,-13740,-13818,-13894,-13969,-14043,-14116
  84.         DW    -14188,-14259,-14329,-14398,-14466,-14532,-14598
  85.         DW    -14662,-14725,-14787,-14848,-14908,-14967,-15025
  86.         DW    -15081,-15136,-15190,-15243,-15295,-15346,-15395
  87.         DW    -15444,-15491,-15537,-15582,-15625,-15668,-15709
  88.         DW    -15749,-15788,-15825,-15862,-15897,-15931,-15964
  89.         DW    -15995,-16025,-16055,-16082,-16109,-16135,-16159
  90.         DW    -16182,-16204,-16224,-16243,-16261,-16278,-16294
  91.         DW    -16308,-16321,-16333,-16344,-16353,-16361,-16368
  92.         DW    -16374,-16378,-16381,-16383,-16384,-16383,-16381
  93.         DW    -16378,-16374,-16368,-16361,-16353,-16344,-16333
  94.         DW    -16321,-16308,-16294,-16278,-16261,-16243,-16224
  95.         DW    -16204,-16182,-16159,-16135,-16109,-16082,-16055
  96.         DW    -16025,-15995,-15964,-15931,-15897,-15862,-15825
  97.         DW    -15788,-15749,-15709,-15668,-15625,-15582,-15537
  98.         DW    -15491,-15444,-15395,-15346,-15295,-15243,-15190
  99.         DW    -15136,-15081,-15025,-14967,-14908,-14848,-14787
  100.         DW    -14725,-14662,-14598,-14532,-14466,-14398,-14329
  101.         DW    -14259,-14188,-14116,-14043,-13969,-13894,-13818
  102.         DW    -13740,-13662,-13582,-13502,-13420,-13338,-13254
  103.         DW    -13170,-13084,-12998,-12910,-12822,-12732,-12642
  104.         DW    -12550,-12458,-12365,-12270,-12175,-12079,-11982
  105.         DW    -11884,-11785,-11685,-11585,-11483,-11381,-11278
  106.         DW    -11173,-11068,-10963,-10856,-10748,-10640,-10531
  107.         DW    -10421,-10310,-10199,-10086,-9973,-9860,-9745,-9630
  108.         DW    -9514,-9397,-9279,-9161,-9042,-8923,-8803,-8682,-8560
  109.         DW    -8438,-8315,-8192,-8067,-7943,-7817,-7691,-7565,-7438
  110.         DW    -7310,-7182,-7053,-6924,-6794,-6663,-6533,-6401,-6269
  111.         DW    -6137,-6004,-5871,-5737,-5603,-5469,-5334,-5198,-5062
  112.         DW    -4926,-4790,-4653,-4516,-4378,-4240,-4102,-3963,-3824
  113.         DW    -3685,-3546,-3406,-3266,-3126,-2985,-2845,-2704,-2563
  114.         DW    -2421,-2280,-2138,-1996,-1854,-1712,-1570,-1427,-1285
  115.         DW    -1142,-1000,-857,-714,-571,-428,-285,-142,0,142,285
  116.         DW    428,571,714,857,1000,1142,1285,1427,1570,1712,1854
  117.         DW    1996,2138,2280,2421,2563,2704,2845,2985,3126,3266,3406
  118.         DW    3546,3685,3824,3963,4102,4240,4378,4516,4653,4790,4926
  119.         DW    5062,5198,5334,5469,5603,5737,5871,6004,6137,6269,6401
  120.         DW    6533,6663,6794,6924,7053,7182,7310,7438,7565,7691,7817
  121.         DW    7943,8067,8192,8315,8438,8560,8682,8803,8923,9042,9161
  122.         DW    9279,9397,9514,9630,9745,9860,9973,10086,10199,10310
  123.         DW    10421,10531,10640,10748,10856,10963,11068,11173,11278
  124.         DW    11381,11483,11585,11685,11785,11884,11982,12079,12175
  125.         DW    12270,12365,12458,12550,12642,12732,12822,12910,12998
  126.         DW    13084,13170,13254,13338,13420,13502,13582,13662,13740
  127.         DW    13818,13894,13969,14043,14116,14188,14259,14329,14398
  128.         DW    14466,14532,14598,14662,14725,14787,14848,14908,14967
  129.         DW    15025,15081,15136,15190,15243,15295,15346,15395,15444
  130.         DW    15491,15537,15582,15625,15668,15709,15749,15788,15825
  131.         DW    15862,15897,15931,15964,15995,16025,16055,16082,16109
  132.         DW    16135,16159,16182,16204,16224,16243,16261,16278,16294
  133.         DW    16308,16321,16333,16344,16353,16361,16368,16374,16378
  134.         DW    16381,16383
  135. V1_Y        DW    0
  136. V1_X        DW    0
  137. V2_Y        DW    0
  138. V2_X        DW    0
  139. V3_Y        DW    0
  140. V3_X        DW    0
  141. POLYCOLOR    DW    0
  142. EYEDISTANCE    DW    0
  143. ORIGO_X        DW    0
  144. ORIGO_Y        DW    0
  145. ORIGO_Z        DW    0
  146.  
  147. .CODE
  148.  
  149. SETROTATEANGLE:    PUSHA
  150.         MOV    SI,720
  151.         CMP    AX,SI
  152.         JB    SHORT NOOFSRAAX
  153.         CWD
  154.         IDIV    SI
  155.         TEST    DH,10000000B
  156.         JZ    SHORT NOOFSRAAX
  157.         ADD    DX,720
  158.         MOV    AX,DX
  159. NOOFSRAAX:    MOV    PRESENTANGLE_X,AX
  160.         MOV    AX,BX
  161.         CMP    AX,SI
  162.         JB    SHORT NOOFSRABX
  163.         CWD
  164.         IDIV    SI
  165.         TEST    DH,10000000B
  166.         JZ    SHORT NOOFSRABX
  167.         ADD    DX,720
  168.         MOV    AX,DX
  169. NOOFSRABX:    MOV    PRESENTANGLE_Y,AX
  170.         MOV    AX,CX
  171.         CMP    AX,SI
  172.         JB    SHORT NOOFSRACX
  173.         CWD
  174.         IDIV    SI
  175.         TEST    DH,10000000B
  176.         JZ    SHORT NOOFSRACX
  177.         ADD    DX,720
  178.         MOV    AX,DX
  179. NOOFSRACX:    MOV    PRESENTANGLE_Z,AX
  180.         POPA
  181.         RET
  182.  
  183. ADDROTATEANGLE:    PUSHA
  184.         ADD    AX,PRESENTANGLE_X
  185.         ADD    BX,PRESENTANGLE_Y
  186.         ADD    CX,PRESENTANGLE_Z
  187.         MOV    SI,720
  188.         CMP    AX,SI
  189.         JB    SHORT NOOFSRAAX2
  190.         CWD
  191.         IDIV    SI
  192.         TEST    DH,10000000B
  193.         JZ    SHORT NOOFSRAAX2
  194.         ADD    DX,720
  195.         MOV    AX,DX
  196. NOOFSRAAX2:    MOV    PRESENTANGLE_X,AX
  197.         MOV    AX,BX
  198.         CMP    AX,SI
  199.         JB    SHORT NOOFSRABX2
  200.         CWD
  201.         IDIV    SI
  202.         TEST    DH,10000000B
  203.         JZ    SHORT NOOFSRABX2
  204.         ADD    DX,720
  205.         MOV    AX,DX
  206. NOOFSRABX2:    MOV    PRESENTANGLE_Y,AX
  207.         MOV    AX,CX
  208.         CMP    AX,SI
  209.         JB    SHORT NOOFSRACX2
  210.         CWD
  211.         IDIV    SI
  212.         TEST    DH,10000000B
  213.         JZ    SHORT NOOFSRACX2
  214.         ADD    DX,720
  215.         MOV    AX,DX
  216. NOOFSRACX2:    MOV    PRESENTANGLE_Z,AX
  217.         POPA
  218.         RET
  219.  
  220. ROTATEPOINTS:    PUSHA
  221.         PUSH    DS
  222.         PUSH    FS
  223.         PUSH    GS
  224.         PUSH    SEG SINTABLE
  225.         POP    DS
  226.         PUSH    SI
  227.         PUSH    DI
  228.         MOV    FS,AX
  229.         MOV    GS,BX
  230.         MOV    BX,PRESENTANGLE_X
  231.         ADD    BX,BX
  232.         MOV    AX,SINTABLE[BX]
  233.         MOV    SINALFA,AX
  234.         MOV    AX,COSTABLE[BX]
  235.         MOV    COSALFA,AX
  236.         MOV    BX,PRESENTANGLE_Y
  237.         ADD    BX,BX
  238.         MOV    AX,SINTABLE[BX]
  239.         MOV    SINBETA,AX
  240.         MOV    AX,COSTABLE[BX]
  241.         MOV    COSBETA,AX
  242.         MOV    BX,PRESENTANGLE_Z
  243.         ADD    BX,BX
  244.         MOV    AX,SINTABLE[BX]
  245.         MOV    SINGAMMA,AX
  246.         MOV    AX,COSTABLE[BX]
  247.         MOV    COSGAMMA,AX
  248.         MOV    AX,COSBETA
  249.         MOV    BX,CX
  250.         MOV    CL,14
  251.         IMUL    COSGAMMA
  252.         SHRD    AX,DX,CL
  253.         MOV    WORD PTR CS:ROTATEPOINTS_C+1,AX
  254.         MOV    AX,COSBETA
  255.         IMUL    SINGAMMA
  256.         SHRD    AX,DX,CL
  257.         MOV    WORD PTR CS:CALC2+1,AX
  258.         MOV    AX,SINBETA
  259.         MOV    WORD PTR CS:CALC3+1,AX
  260.         MOV    AX,COSALFA
  261.         IMUL    SINGAMMA
  262.         SHRD    AX,DX,CL
  263.         MOV    DI,AX
  264.         MOV    AX,SINALFA
  265.         IMUL    SINBETA
  266.         SHRD    AX,DX,CL
  267.         IMUL    COSGAMMA
  268.         SHRD    AX,DX,CL
  269.         ADD    AX,DI
  270.         MOV    WORD PTR CS:CALC4+1,AX
  271.         MOV    AX,COSALFA
  272.         IMUL    COSGAMMA
  273.         SHRD    AX,DX,CL
  274.         MOV    DI,AX
  275.         MOV    AX,SINALFA
  276.         IMUL    SINBETA
  277.         SHRD    AX,DX,CL
  278.         IMUL    SINGAMMA
  279.         SHRD    AX,DX,CL
  280.         SUB    DI,AX
  281.         MOV    WORD PTR CS:CALC5+1,DI
  282.         MOV    AX,SINALFA
  283.         IMUL    COSBETA
  284.         SHRD    AX,DX,CL
  285.         MOV    WORD PTR CS:CALC6+1,AX
  286.         MOV    AX,SINALFA
  287.         IMUL    SINGAMMA
  288.         SHRD    AX,DX,CL
  289.         MOV    DI,AX
  290.         MOV    AX,COSALFA
  291.         IMUL    SINBETA
  292.         SHRD    AX,DX,CL
  293.         IMUL    COSGAMMA
  294.         SHRD    AX,DX,CL
  295.         SUB    DI,AX
  296.         MOV    WORD PTR CS:CALC7+1,DI
  297.         MOV    AX,SINALFA
  298.         IMUL    COSGAMMA
  299.         SHRD    AX,DX,CL
  300.         MOV    DI,AX
  301.         MOV    AX,COSALFA
  302.         IMUL    SINBETA
  303.         SHRD    AX,DX,CL
  304.         IMUL    SINGAMMA
  305.         SHRD    AX,DX,CL
  306.         ADD    AX,DI
  307.         MOV    WORD PTR CS:CALC8+1,AX
  308.         MOV    AX,COSALFA
  309.         IMUL    COSBETA
  310.         SHRD    AX,DX,CL
  311.         MOV    WORD PTR CS:CALC9+1,AX
  312.         POP    DI
  313.         POP    SI
  314. ROTATEPOINTS_C:    MOV    AX,0FFFFH        ;Self writing code. CALC1
  315.         IMUL    WORD PTR FS:[SI]
  316.         SHRD    AX,DX,CL
  317.         MOV    BP,AX
  318. CALC2:        MOV    AX,0FFFFH        ;-==- CALC2
  319.         IMUL    WORD PTR FS:[SI+2]
  320.         SHRD    AX,DX,CL
  321.         SUB    BP,AX
  322. CALC3:        MOV    AX,0FFFFH        ;-==- CALC3
  323.         IMUL    WORD PTR FS:[SI+4]
  324.         SHRD    AX,DX,CL
  325.         ADD    BP,AX
  326.         MOV    GS:[DI],BP
  327. CALC4:        MOV    AX,0FFFFH        ;-==- CALC4
  328.         IMUL    WORD PTR FS:[SI]
  329.         SHRD    AX,DX,CL
  330.         MOV    BP,AX
  331. CALC5:        MOV    AX,0FFFFH        ;-==- CALC5
  332.         IMUL    WORD PTR FS:[SI+2]
  333.         SHRD    AX,DX,CL
  334.         ADD    BP,AX
  335. CALC6:        MOV    AX,0FFFFH        ;-==- CALC6
  336.         IMUL    WORD PTR FS:[SI+4]
  337.         SHRD    AX,DX,CL
  338.         SUB    BP,AX
  339.         MOV    GS:[DI+2],BP
  340. CALC7:        MOV    AX,0FFFFH        ;-==- CALC7
  341.         IMUL    WORD PTR FS:[SI]
  342.         SHRD    AX,DX,CL
  343.         MOV    BP,AX
  344. CALC8:        MOV    AX,0FFFFH        ;-==- CALC8
  345.         IMUL    WORD PTR FS:[SI+2]
  346.         SHRD    AX,DX,CL
  347.         ADD    BP,AX
  348. CALC9:        MOV    AX,0FFFFH        ;-==- CALC9
  349.         IMUL    WORD PTR FS:[SI+4]
  350.         SHRD    AX,DX,CL
  351.         ADD    BP,AX
  352.         MOV    GS:[DI+4],BP
  353.         ADD    SI,6
  354.         ;JNC    SHORT NOADDFSROTCIK
  355.         ;MOV    AX,FS
  356.         ;ADD    AX,1000H
  357.         ;MOV    FS,AX
  358. NOADDFSROTCIK:    ADD    DI,6
  359.         ;JNC    SHORT NOADDGSROTCIK
  360.         ;MOV    AX,GS
  361.         ;ADD    AX,1000H
  362.         ;MOV    GS,AX
  363. NOADDGSROTCIK:    DEC    BX
  364.         JNZ    SHORT ROTATEPOINTS_C
  365.         POP    GS
  366.         POP    FS
  367.         POP    DS
  368.         POPA
  369.                 RET
  370.  
  371. MAKELINE320    MACRO
  372.         MOV    WORD PTR CS:ENDML320+1,CX
  373.         MOV    WORD PTR CS:ENDML3202+1,DI
  374.         CMP    CX,DI
  375.         JGE    SHORT NOXCHGCAML320
  376.         XCHG    CX,DI
  377. NOXCHGCAML320:    CMP    CX,319
  378.         JBE    SHORT CXNG320
  379.         JNG    SHORT ENDML320
  380.         MOV    CX,319
  381. CXNG320:    CMP    DI,319
  382.         JBE    SHORT AXNG320
  383.         JG    SHORT ENDML320
  384.         XOR    DI,DI
  385. AXNG320:    SUB    CX,DI
  386. PPLO:        ADD    DI,0FFFFH                    ;-==-
  387. POLYCOLORW:    MOV    EAX,0FFFFFFFFH
  388.         SHR    CX,1
  389.         JNC    SHORT NOEVENCXML3201
  390.         STOSB
  391. NOEVENCXML3201:    SHR    CX,1
  392.         JNC    SHORT NOEVENCXML3202
  393.         STOSW
  394. NOEVENCXML3202:    REP    STOSD
  395. ENDML320:    MOV    CX,0FFFFH                    ;-==-
  396. ENDML3202:    MOV    DI,0FFFFH                    ;-==-
  397. ENDM
  398.  
  399. PUTPOLY320:    MOV    DWORD PTR CS:PPEAX+2,EAX
  400.         MOV    DWORD PTR CS:PPEBX+2,EBX
  401.         MOV    DWORD PTR CS:PPECX+2,ECX
  402.         MOV    DWORD PTR CS:PPEDX+2,EDX
  403.         MOV    DWORD PTR CS:PPESI+2,ESI
  404.         MOV    DWORD PTR CS:PPEDI+2,EDI
  405.         MOV    DWORD PTR CS:PPEBP+2,EBP
  406.         MOV    ESI,DWORD PTR V1_Y
  407.         MOV    EDI,DWORD PTR V2_Y
  408.         MOV    EBP,DWORD PTR V3_Y
  409.         CMP    SI,DI
  410.         JLE    SHORT V1_TO_V2
  411.         XCHG    EDI,ESI
  412. V1_TO_V2:    CMP    SI,BP
  413.         JLE    SHORT V1_TO_V3
  414.         XCHG    ESI,EBP
  415. V1_TO_V3:    CMP    DI,BP
  416.         JLE    SHORT V2_TO_V3
  417.         XCHG    EDI,EBP
  418. V2_TO_V3:    MOV    DWORD PTR V1_Y,ESI
  419.         MOV    DWORD PTR V2_Y,EDI
  420.         MOV    DWORD PTR V3_Y,EBP
  421.         MOV    CX,DI
  422.         SUB    CX,SI
  423.         INC    CX
  424.         XCHG    CX,V1_X
  425.         MOV    AX,SI
  426.         MOV    DX,AX
  427.         SHL    AX,8
  428.         SHL    DX,6
  429.         ADD    AX,DX
  430.         MOV    WORD PTR CS:PPLO+2,AX
  431.         MOV    WORD PTR CS:TO_WV23_RA+5,1
  432.         XOR    AX,AX
  433.         MOV    DX,AX
  434.         MOV    WORD PTR CS:TO_WV23_MREM+1,1
  435.         MOV    BX,BP
  436.         SUB    BX,DI
  437.         JE    SHORT NO_OP_WV23
  438.         MOV    WORD PTR CS:TO_WV23_MREM+1,BX
  439.         MOV    AX,V3_X
  440.         SUB    AX,V2_X
  441.         CWD
  442.         IDIV    BX
  443.         JS    SHORT NO_OP_WV23
  444.         MOV    WORD PTR CS:TO_WV23_RA+5,-1
  445.         NEG    DX
  446. NO_OP_WV23:    MOV    WORD PTR CS:CHG_WV23+5,AX
  447.         MOV    WORD PTR CS:TO_WV23_REM+5,DX
  448.         MOV    WORD PTR CS:TO_WV2_RA+2,1
  449.         XOR    AX,AX
  450.         MOV    DX,AX
  451.         MOV    WORD PTR CS:TO_WV2_MREM+2,1
  452.         MOV    BX,DI
  453.         SUB    BX,SI
  454.         JE    SHORT NO_OP_WV2
  455.         MOV    WORD PTR CS:TO_WV2_MREM+2,BX
  456.         MOV    AX,V2_X
  457.         SUB    AX,CX
  458.         CWD
  459.         IDIV    BX
  460.         JS    SHORT NO_OP_WV2
  461.         MOV    WORD PTR CS:TO_WV2_RA+2,-1
  462.         NEG    DX
  463. NO_OP_WV2:    MOV    WORD PTR CS:NOOVWV3+2,AX
  464.         MOV    WORD PTR CS:TO_WV2_REM+2,DX
  465.         MOV    WORD PTR CS:TO_WV3_RA+2,1
  466.         XOR    AX,AX
  467.         MOV    DX,AX
  468.         MOV    WORD PTR CS:TO_WV3_MREM+2,1
  469.         MOV    BX,BP
  470.         SUB    BX,SI
  471.         JE    SHORT NO_OP_WV3
  472.         MOV    WORD PTR CS:TO_WV3_MREM+2,BX
  473.         MOV    AX,V3_X
  474.         SUB    AX,CX
  475.         CWD
  476.         IDIV    BX
  477.         JS    SHORT NO_OP_WV3
  478.         MOV    WORD PTR CS:TO_WV3_RA+2,-1
  479.         NEG    DX
  480. NO_OP_WV3:    MOV    WORD PTR CS:TO_WV3_INT+2,AX
  481.         MOV    WORD PTR CS:TO_WV3_REM+2,DX
  482.         MOV    DX,BX
  483.         MOV    BX,WORD PTR CS:TO_WV2_MREM+2
  484.         MOV    BP,WORD PTR CS:TO_WV3_MREM+2
  485.         MOV    AX,POLYCOLOR
  486.         MOV    WORD PTR CS:POLYCOLORW+2,AX
  487.         MOV    WORD PTR CS:POLYCOLORW+4,AX
  488.         MOV    DI,CX
  489.         MOV    WORD PTR CS:NO+2,OFFSET PUTPOLY_MCIK-(NO+4)
  490. PUTPOLY_MCIK:    DEC    V1_X
  491.         JE    CHG_WV23
  492. NO_CHG_WV23:    CMP    SI,199
  493.         JA    SHORT NOONSCREEN
  494.         MAKELINE320
  495. NOONSCREEN:    INC    SI
  496. TO_WV3_INT:    ADD    CX,0FFFFH                    ;-==-
  497. TO_WV3_REM:    SUB    BP,0FFFFH                    ;-==-
  498.         JNC    SHORT NOOVWV3
  499. TO_WV3_MREM:    ADD    BP,0FFFFH                    ;-==-
  500. TO_WV3_RA:    ADD    CX,0FFFFH                    ;-==-
  501. NOOVWV3:    ADD    DI,0FFFFH                    ;-==-
  502. TO_WV2_REM:    SUB    BX,0FFFFH                    ;-==-
  503.         JNC    SHORT NOOVWV2
  504. TO_WV2_MREM:    ADD    BX,0FFFFH                    ;-==-
  505. TO_WV2_RA:    ADD    DI,0FFFFH                    ;-==-
  506. NOOVWV2:    ADD    WORD PTR CS:PPLO+2,320
  507.         SUB    DX,1
  508. NO:        JNC    PUTPOLY_MCIK
  509. PPEAX:        MOV    EAX,0FFFFFFFFH                    ;-==-
  510. PPEBX:        MOV    EBX,0FFFFFFFFH                    ;-==-
  511. PPECX:        MOV    ECX,0FFFFFFFFH                    ;-==-
  512. PPEDX:        MOV    EDX,0FFFFFFFFH                    ;-==-
  513. PPESI:        MOV    ESI,0FFFFFFFFH                    ;-==-
  514. PPEDI:        MOV    EDI,0FFFFFFFFH                    ;-==-
  515. PPEBP:        MOV    EBP,0FFFFFFFFH                    ;-==-
  516.         RET
  517. CHG_WV23:    MOV    WORD PTR CS:NOOVWV3+2,0FFFFH            ;-==-
  518. TO_WV23_REM:    MOV    WORD PTR CS:TO_WV2_REM+2,0FFFFH            ;-==-
  519. TO_WV23_RA:    MOV    WORD PTR CS:TO_WV2_RA+2,0FFFFH            ;-==-
  520.         MOV    WORD PTR CS:NO+2,OFFSET NO_CHG_WV23-(NO+4)
  521. TO_WV23_MREM:    MOV    BX,0FFFFH                    ;-==-
  522.         MOV    WORD PTR CS:TO_WV2_MREM+2,BX
  523.         MOV    DI,V2_X
  524.         JMP    NO_CHG_WV23
  525.  
  526. PUTOBJ320CONV:    PUSHA
  527.         PUSH    FS
  528.         MOV    FS,AX
  529.         MOV    CX,FS:[SI]
  530.         ADD    SI,2
  531.         MOV    DI,CX
  532.         SHL    DI,3
  533.         ADD    DI,SI
  534.         ADD    DI,2
  535. PUTO320CIK:    MOV    AX,FS:[SI]
  536.         MOV    POLYCOLOR,AX
  537.         MOV    AX,FS:[SI+2]
  538.         MOV    BP,AX
  539.         ADD    BP,AX
  540.         ADD    BP,AX
  541.         SHL    BP,1
  542.         MOV    AX,FS:[DI][BP]
  543.         MOV    BX,EYEDISTANCE
  544.         IMUL    BX
  545.         ADD    BX,FS:[DI][BP][4]
  546.         ADD    BX,ORIGO_Z
  547.         IDIV    BX
  548.         ADD    AX,ORIGO_X
  549.         MOV    V1_X,AX
  550.         MOV    AX,FS:[DI][BP][2]
  551.         IMUL    EYEDISTANCE
  552.         IDIV    BX
  553.         NEG    AX
  554.         ADD    AX,ORIGO_Y
  555.         MOV    V1_Y,AX
  556.         MOV    AX,FS:[SI+4]
  557.         MOV    BP,AX
  558.         ADD    BP,AX
  559.         ADD    BP,AX
  560.         SHL    BP,1
  561.         MOV    AX,FS:[DI][BP]
  562.         MOV    BX,EYEDISTANCE
  563.         IMUL    BX
  564.         ADD    BX,FS:[DI][BP][4]
  565.         ADD    BX,ORIGO_Z
  566.         IDIV    BX
  567.         ADD    AX,ORIGO_X
  568.         MOV    V2_X,AX
  569.         MOV    AX,FS:[DI][BP][2]
  570.         IMUL    EYEDISTANCE
  571.         IDIV    BX
  572.         NEG    AX
  573.         ADD    AX,ORIGO_Y
  574.         MOV    V2_Y,AX
  575.         MOV    AX,FS:[SI+6]
  576.         MOV    BP,AX
  577.         ADD    BP,AX
  578.         ADD    BP,AX
  579.         SHL    BP,1
  580.         MOV    AX,FS:[DI][BP]
  581.         MOV    BX,EYEDISTANCE
  582.         IMUL    BX
  583.         ADD    BX,FS:[DI][BP][4]
  584.         ADD    BX,ORIGO_Z
  585.         IDIV    BX
  586.         ADD    AX,ORIGO_X
  587.         MOV    V3_X,AX
  588.         MOV    AX,FS:[DI][BP][2]
  589.         IMUL    EYEDISTANCE
  590.         IDIV    BX
  591.         NEG    AX
  592.         ADD    AX,ORIGO_Y
  593.         MOV    V3_Y,AX
  594.         CALL    PUTPOLY320
  595.         ADD    SI,8
  596.         DEC    CX
  597.         JNZ    PUTO320CIK
  598.         POP    FS
  599.         POPA
  600.         RET
  601.  
  602. ROTATEOBJECT:    PUSHAD
  603.         PUSH    FS
  604.         PUSH    GS
  605.         MOV    FS,AX
  606.         MOV    GS,BX
  607.         MOV    CX,FS:[SI]
  608.         MOV    GS:[DI],CX
  609.         ADD    SI,2
  610.         ADD    DI,2
  611. ROTCONVCOCIK:    MOV    EAX,FS:[SI]
  612.         MOV    GS:[DI],EAX
  613.         MOV    EAX,FS:[SI+4]
  614.         MOV    GS:[DI+4],EAX
  615.         ADD    SI,8
  616.         ADD    DI,8
  617.         DEC    CX
  618.         JNZ    SHORT ROTCONVCOCIK
  619.         MOV    CX,FS:[SI]
  620.         MOV    GS:[DI],CX
  621.         ADD    SI,2
  622.         ADD    DI,2
  623.         MOV    AX,FS
  624.         MOV    BX,GS
  625.         CALL    ROTATEPOINTS
  626.         POP    GS
  627.         POP    FS
  628.         POPAD
  629.         RET
  630.  
  631. END
  632.