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

  1. TEXTURE:
  2.         PUSH        DS CS
  3.         POP         DS
  4.         MOV         DS:POLYNUM1_TEXTi,CX
  5.         MOV         DS:POLYNUM2_TEXTi,CX
  6.         MOV         DS:POLYNUM3_TEXTi,CX
  7.         MOV         DS:POLYNUM4_TEXTi,CX
  8.         XOR         ESi,ESi
  9.         MOV         EBX,ESi
  10.         MOV         EBP,ESi
  11.         DEC         CX
  12. MiNKERESCiK_TEXTi:
  13.         iNC         Si
  14.         MOV         AX,DS:POiNTBUF[ESi*4+2]
  15.         CMP         AX,DS:POiNTBUF[EBX*4+2]
  16.         JNL         NOSWAP_TEXTi
  17.         MOV         BX,Si
  18. NOSWAP_TEXTi:
  19.         CMP         AX,DS:POiNTBUF[EBP*4+2]
  20.         JLE         NOSWAP2_TEXTi
  21.         MOV         BP,Si
  22. NOSWAP2_TEXTi:
  23.         LOOP        MiNKERESCiK_TEXTi
  24.         MOV         ESi,EBX
  25.         MOV         EDi,EBX
  26.         MOV         BP,DS:POiNTBUF[EBP*4+2]
  27.         MOV         AX,DS:POiNTBUF[4*ESi+2]
  28.         CMP         BP,AX
  29.         JE          POLYSUX_TEXTi
  30.         CMP         BP,0
  31.         JLE         POLYSUX_TEXTi
  32.         CMP         AX,200
  33.         JGE         POLYSUX_TEXTi
  34.         CMP         BP,200
  35.         JB          NODOWNCLiP_TEXTi
  36.         MOV         BP,200
  37. NODOWNCLiP_TEXTi:
  38.         MOV         DS:KiLEPY_TEXTi,BP
  39.         MOV         BP,DS:POiNTBUF[4*ESi+2]
  40.         CMP         BP,0
  41.         JG          NOPROBB_TEXTi
  42.         XOR         BP,BP
  43. NOPROBB_TEXTi:
  44.         MOV         DS:STARTLiNE_TEXTi,BP
  45.         MOV         AX,BP
  46.         SHL         AX,2
  47.         ADD         AX,BP
  48.         SHL         AX,6
  49.         MOV         DS:LiNENUM320_TEXTi,AX
  50. LEFTKERES_TEXTi:
  51.         MOV         DX,DS:POiNTBUF[4*ESi]
  52.         MOV         BX,DS:POiNTBUF[4*ESi+2]
  53.         MOV         EBP,DWORD PTR DS:TEXTiBUF[4*ESi]
  54.         SUB         Si,1
  55.         JNC         NOADDD_TEXTi
  56.         ADD         Si,3333H
  57.         ORG         $-2
  58.         POLYNUM1_TEXTi DW ?
  59. NOADDD_TEXTi:
  60.         MOV         AX,DS:POiNTBUF[4*ESi]
  61.         MOV         CX,DS:POiNTBUF[4*ESi+2]
  62.         CMP         CX,0
  63.         JLE         LEFTKERES_TEXTi
  64.         CMP         CX,BX
  65.         JE          LEFTKERES_TEXTi
  66.         CMP         BX,0
  67.         JNL         NOLEFTUP_TEXTi
  68.         PUSH        AX DX
  69.         SUB         AX,DX
  70.         iMUL        BX
  71.         SUB         BX,CX
  72.         iDiV        BX
  73.         PUSH        AX
  74.         ADD         BX,CX
  75.         MOV         AX,DS:TEXTiBUF[ESi*4]
  76.         SUB         AX,BP
  77.         iMUL        BX
  78.         SUB         BX,CX
  79.         iDiV        BX
  80.         ADD         BP,AX
  81.         ROR         EBP,16
  82.         ADD         BX,CX
  83.         MOV         AX,DS:TEXTiBUF[ESi*4+2]
  84.         SUB         AX,BP
  85.         iMUL        BX
  86.         SUB         BX,CX
  87.         iDiV        BX
  88.         ADD         BP,AX
  89.         ROR         EBP,16
  90.         POP         AX
  91.         POP         DX
  92.         ADD         DX,AX
  93.         POP         AX
  94.         XOR         BX,BX
  95. NOLEFTUP_TEXTi:
  96.         MOV         DS:LEFTiNiTiAL_TEXTi,DX
  97.         MOV         DS:LEFTLAST_TEXTi,CX
  98.         SUB         CX,BX
  99.         SUB         AX,DX
  100.         SHL         EAX,16
  101.         CDQ
  102.         MOVSX       ECX,CX
  103.         JCXZ        SUXX1
  104.         iDiV        ECX
  105. SUXX1:
  106.         MOV         DS:LEFTADDLO_TEXTi,AX
  107.         SHR         EAX,16
  108.         MOV         DS:LEFTADDHi_TEXTi,AX
  109.         MOV         AX,DS:TEXTiBUF[4*ESi]
  110.         SUB         AX,BP
  111.         SHL         EAX,16
  112.         CDQ
  113.         JCXZ        SUXX2
  114.         iDiV        ECX
  115. SUXX2:
  116.         MOV         DS:LEFTGOURADDLO_TEXTi,AX
  117.         SHR         EAX,16
  118.         MOV         DS:LEFTGOURADDHi_TEXTi,AX
  119.         MOV         DS:LEFTGOURVALHi_TEXTi,BP
  120.         MOV         DS:TEMPL1,0
  121.         ROR         EBP,16
  122.         MOV         AX,DS:TEXTiBUF[4*ESi+2]
  123.         SUB         AX,BP
  124.         SHL         EAX,16
  125.         CDQ
  126.         JCXZ        SUXX3
  127.         iDiV        ECX
  128. SUXX3:
  129.         MOV         DS:LEFTGOURADDLO2_TEXTi,AX
  130.         SHR         EAX,16
  131.         MOV         DS:LEFTGOURADDHi2_TEXTi,AX
  132.         MOV         DS:LEFTGOURVALHi2_TEXTi,BP
  133.         MOV         DS:TEMPL2,0
  134. RiGHTKERES_TEXTi:
  135.         MOV         DX,DS:POiNTBUF[4*EDi]
  136.         MOV         BX,DS:POiNTBUF[4*EDi+2]
  137.         MOV         EBP,DWORD PTR DS:TEXTiBUF[4*EDi]
  138.         iNC         Di
  139.         CMP         Di,3333H
  140.         ORG         $-2
  141.         POLYNUM2_TEXTi DW ?
  142.         JNE         NOSUBB_TEXTi
  143.         SUB         Di,Di
  144. NOSUBB_TEXTi:
  145.         MOV         AX,DS:POiNTBUF[4*EDi]
  146.         MOV         CX,DS:POiNTBUF[4*EDi+2]
  147.         CMP         CX,0
  148.         JLE         RiGHTKERES_TEXTi
  149.         CMP         BX,CX
  150.         JE          RiGHTKERES_TEXTi
  151.         CMP         BX,0
  152.         JNL         NORiGHTUP_TEXTi
  153.         PUSH AX DX
  154.         SUB AX,DX
  155.         iMUL BX
  156.         SUB BX,CX
  157.         iDiV BX
  158.         PUSH AX
  159.         ADD BX,CX
  160.         MOV AX,DS:TEXTiBUF[EDi*4]
  161.         SUB AX,BP
  162.         iMUL BX
  163.         SUB BX,CX
  164.         iDiV BX
  165.         ADD BP,AX
  166.         ROR EBP,16
  167.         ADD BX,CX
  168.         MOV AX,DS:TEXTiBUF[EDi*4+2]
  169.         SUB AX,BP
  170.         iMUL BX
  171.         SUB BX,CX
  172.         iDiV BX
  173.         ADD BP,AX
  174.         ROR EBP,16
  175.         POP AX
  176.         POP DX
  177.         ADD DX,AX
  178.         POP AX
  179.         XOR BX,BX
  180. NORiGHTUP_TEXTi:
  181.         MOV DS:RiGHTiNiTiAL_TEXTi,DX
  182.         MOV DS:RiGHTLAST_TEXTi,CX
  183.         SUB CX,BX
  184.         SUB AX,DX
  185.         SHL EAX,16
  186.         CDQ
  187.         MOVSX ECX,CX
  188.         JCXZ    SUXX4
  189.         iDiV    ECX
  190. SUXX4:
  191.         MOV DS:RiGHTADDLO_TEXTi,AX
  192.         SHR EAX,16
  193.         MOV DS:RiGHTADDHi_TEXTi,AX
  194.         MOV AX,DS:TEXTiBUF[4*EDi]
  195.         SUB AX,BP
  196.         SHL EAX,16
  197.         CDQ
  198.         JCXZ    SUXX5
  199.         iDiV    ECX
  200.         SUXX5:
  201.         MOV DS:RiGHTGOURADDLO_TEXTi,AX
  202.         SHR EAX,16
  203.         MOV DS:RiGHTGOURADDHi_TEXTi,AX
  204.         MOV DS:RiGHTGOURVALHi_TEXTi,BP
  205.         MOV DS:TEMPR1,0
  206.         ROR EBP,16
  207.         MOV AX,DS:TEXTiBUF[4*EDi+2]
  208.         SUB AX,BP
  209.         SHL EAX,16
  210.         CDQ
  211.         JCXZ    SUXX6
  212.         iDiV    ECX
  213. SUXX6:
  214.         MOV DS:RiGHTGOURADDLO2_TEXTi,AX
  215.         SHR EAX,16
  216.         MOV DS:RiGHTGOURADDHi2_TEXTi,AX
  217.         MOV DS:RiGHTGOURVALHi2_TEXTi,BP
  218.         MOV DS:TEMPR2,0
  219.         MOV BP,3333H
  220.         ORG $-2
  221.         STARTLiNE_TEXTi DW ?
  222.         MOV AX,3333H
  223.         ORG $-2
  224.         LEFTiNiTiAL_TEXTi DW ?
  225.         XOR BX,BX
  226.         MOV CX,3333H
  227.         ORG $-2
  228.         RiGHTiNiTiAL_TEXTi DW ?
  229.         XOR DX,DX
  230. MAiNPOLYFiLL_TEXTi:
  231.         MOV DS:_Di_TEXTi,Di
  232.         MOV DS:_AX_TEXTi,AX
  233.         MOV DS:_CX_TEXTi,CX
  234.         MOV DS:_BX_TEXTi,BX
  235.         MOV DS:_DX_TEXTi,DX
  236.         MOV DS:_Si_TEXTi,Si
  237.         MOV DS:_BP_TEXTi,BP
  238.         MOV BX,3333H
  239.         ORG $-2
  240.         LEFTGOURVALHi_TEXTi DW ?
  241.         MOV DX,3333H
  242.         ORG $-2
  243.         RiGHTGOURVALHi_TEXTi DW ?
  244.         MOV Si,3333H
  245.         ORG $-2
  246.         LEFTGOURVALHi2_TEXTi DW ?
  247.         MOV Di,3333H
  248.         ORG $-2
  249.         RiGHTGOURVALHi2_TEXTi DW ?
  250.         MOV BP,OFFSET TEMPL1
  251.         CMP AX,CX
  252.         JL NOSWAPHOR_TEXTi
  253.         XCHG AX,CX
  254.         XCHG BX,DX
  255.         XCHG Si,Di
  256.         XOR BP,4
  257.         NOSWAPHOR_TEXTi:
  258.         PUSH CX AX
  259.         SUB CX,AX
  260.         AND ECX,0FFFFH
  261.         PUSH BX
  262.         MOV AX,DX
  263.         SHL EAX,16
  264.         XOR BP,4
  265.         MOV AX,DS:[BP]
  266.         XOR BP,4
  267.         SHL EBX,16
  268.         MOV BX,DS:[BP]
  269.         SUB EAX,EBX
  270.         POP BX
  271.         JCXZ NODiV1_TEXTi
  272.         CDQ
  273.         iDiV ECX
  274.         NODiV1_TEXTi:
  275.         MOV DX,AX
  276.         SHR EAX,16
  277.         MOV BH,AL
  278.         SLOPECALCEND_TEXTi:
  279.         MOV AX,Di
  280.         SHL EAX,16
  281.         XOR BP,4
  282.         MOV AX,DS:[BP+2]
  283.         XOR BP,4
  284.         PUSH Si
  285.         SHL ESi,16
  286.         MOV Si,DS:[BP+2]
  287.         SUB EAX,ESi
  288.         POP Si
  289.         JCXZ NODiV2_TEXTi
  290.         PUSH DX
  291.         CDQ
  292.         iDiV ECX
  293.         POP DX
  294.         NODiV2_TEXTi:
  295.         MOV Di,AX
  296.         SHR EAX,8
  297.         XOR AL,AL
  298.         OR Si,AX
  299.         POP AX CX
  300.         XCHG Si,AX
  301.         MOV DS:TiZEDESADDX,DX
  302.         MOV DS:TiZEDESADDY,Di
  303.         MOV DX,DS:[BP]
  304.         MOV Di,DS:[BP+2]
  305.         CMP CX,0
  306.         JL NOHORiZ_TEXTi
  307.         CMP Si,319
  308.         JG NOHORiZ_TEXTi
  309.         CMP Si,0
  310.         JNL NOLEFTC_TEXTi
  311.         LEFTCLiPCiK_TEXTi:
  312.         ADD DX,DS:TiZEDESADDX
  313.         ADC BL,BH
  314.         ADD Di,DS:TiZEDESADDY
  315.         ADC AL,AH
  316.         iNC Si
  317.         JNZ LEFTCLiPCiK_TEXTi
  318.         NOLEFTC_TEXTi:
  319.         CMP CX,319
  320.         JNG NORiGHTC_TEXTi
  321.         MOV CX,319
  322.         NORiGHTC_TEXTi:
  323.         iNC CX
  324.         SUB CX,Si
  325.         XCHG Si,Di
  326.         ADD Di,3333H
  327.         ORG $-2
  328.         LiNENUM320_TEXTi DW ?
  329.         XCHG BH,AL
  330.         MOV BP,CX
  331.         MOV CX,AX
  332. HORiZCiK_TEXTi:
  333.         MOV AL,GS:[BX]
  334.         STOSB
  335.         ADD Si,3333H
  336.         ORG $-2
  337.         TiZEDESADDY DW ?
  338.         ADC BH,CH
  339.         ADD DX,3333H
  340.         ORG $-2
  341.         TiZEDESADDX DW ?
  342.         ADC BL,CL
  343.         DEC BP
  344.         JNZ HORiZCiK_TEXTi
  345.         NOHORiZ_TEXTi:
  346.         XOR ESi,ESi
  347.         XOR EDi,EDi
  348.         MOV AX,3333H
  349.         ORG $-2
  350.         _AX_TEXTi DW ?
  351.         MOV CX,3333H
  352.         ORG $-2
  353.         _CX_TEXTi DW ?
  354.         MOV Di,3333H
  355.         ORG $-2
  356.         _Di_TEXTi DW ?
  357.         MOV BX,3333H
  358.         ORG $-2
  359.         _BX_TEXTi DW ?
  360.         MOV DX,3333H
  361.         ORG $-2
  362.         _DX_TEXTi DW ?
  363.         MOV Si,3333H
  364.         ORG $-2
  365.         _Si_TEXTi DW ?
  366.         MOV BP,3333H
  367.         ORG $-2
  368.         _BP_TEXTi DW ?
  369.         ADD BX,3333H
  370.         ORG $-2
  371.         LEFTADDLO_TEXTi DW ?
  372.         ADC AX,3333H
  373.         ORG $-2
  374.         LEFTADDHi_TEXTi DW ?
  375.         ADD DX,3333H
  376.         ORG $-2
  377.         RiGHTADDLO_TEXTi DW ?
  378.         ADC CX,3333H
  379.         ORG $-2
  380.         RiGHTADDHi_TEXTi DW ?
  381.         ADD DS:TEMPL1,3333H
  382.         ORG $-2
  383.         LEFTGOURADDLO_TEXTi DW ?
  384.         ADC DS:LEFTGOURVALHi_TEXTi,3333H
  385.         ORG $-2
  386.         LEFTGOURADDHi_TEXTi DW ?
  387.         ADD DS:TEMPR1,3333H
  388.         ORG $-2
  389.         RiGHTGOURADDLO_TEXTi DW ?
  390.         ADC DS:RiGHTGOURVALHi_TEXTi,3333H
  391.         ORG $-2
  392.         RiGHTGOURADDHi_TEXTi DW ?
  393.         ADD DS:TEMPL2,3333H
  394.         ORG $-2
  395.         LEFTGOURADDLO2_TEXTi DW ?
  396.         ADC DS:LEFTGOURVALHi2_TEXTi,3333H
  397.         ORG $-2
  398.         LEFTGOURADDHi2_TEXTi DW ?
  399.         ADD DS:TEMPR2,3333H
  400.         ORG $-2
  401.         RiGHTGOURADDLO2_TEXTi DW ?
  402.         ADC DS:RiGHTGOURVALHi2_TEXTi,3333H
  403.         ORG $-2
  404.         RiGHTGOURADDHi2_TEXTi DW ?
  405.         iNC BP
  406.         CMP BP,3333H
  407.         ORG $-2
  408.         LEFTLAST_TEXTi DW ?
  409.         JNE NOLEFTNEXT_TEXTi
  410.         MOV DS:LEFT_CX_TEXTi,CX
  411.         MOV DS:LEFT_DX_TEXTi,DX
  412.         MOV DS:TEMPBP1_TEXTi,BP
  413.         LEFTKERES2_TEXTi:
  414.         MOV  DX,DS:POiNTBUF[4*ESi]
  415.         MOV  BX,DS:POiNTBUF[4*ESi+2]
  416.         MOV EBP,DWORD PTR DS:TEXTiBUF[4*ESi]
  417.         SUB Si,1
  418.         JNC NOADDD2_TEXTi
  419.         ADD Si,3333H
  420.         ORG $-2
  421.         POLYNUM3_TEXTi DW ?
  422.         NOADDD2_TEXTi:
  423.         MOV AX,DS:POiNTBUF[4*ESi]
  424.         MOV CX,DS:POiNTBUF[4*ESi+2]
  425.         CMP CX,BX
  426.         JE LEFTKERES2_TEXTi
  427.         MOV DS:iNiTLE1_2_TEXTi,DX
  428.         MOV DS:LEFTLAST_TEXTi,CX
  429.         SUB CX,BX
  430.         SUB AX,DX
  431.         SHL EAX,16
  432.         CDQ
  433.         MOVSX ECX,CX
  434.         JCXZ    SUXX7
  435.         iDiV    ECX
  436.         SUXX7:
  437.         MOV DS:LEFTADDLO_TEXTi,AX
  438.         SHR EAX,16
  439.         MOV DS:LEFTADDHi_TEXTi,AX
  440.         MOV AX,DS:TEXTiBUF[4*ESi]
  441.         SUB AX,BP
  442.         SHL EAX,16
  443.         CDQ
  444.         JCXZ    SUXX8
  445.         iDiV    ECX
  446.         SUXX8:
  447.         MOV DS:LEFTGOURADDLO_TEXTi,AX
  448.         SHR EAX,16
  449.         MOV DS:LEFTGOURADDHi_TEXTi,AX
  450.         MOV DS:LEFTGOURVALHi_TEXTi,BP
  451.         MOV DS:TEMPL1,0
  452.         ROR EBP,16
  453.         MOV AX,DS:TEXTiBUF[4*ESi+2]
  454.         SUB AX,BP
  455.         SHL EAX,16
  456.         CDQ
  457.         JCXZ    SUXX9
  458.         iDiV    ECX
  459.         SUXX9:
  460.         MOV DS:LEFTGOURADDLO2_TEXTi,AX
  461.         SHR EAX,16
  462.         MOV DS:LEFTGOURADDHi2_TEXTi,AX
  463.         MOV DS:LEFTGOURVALHi2_TEXTi,BP
  464.         MOV DS:TEMPL2,0
  465.         XOR BX,BX
  466.         MOV AX,3333H
  467.         ORG $-2
  468.         iNiTLE1_2_TEXTi DW ?
  469.         MOV DX,3333H
  470.         ORG $-2
  471.         LEFT_DX_TEXTi DW ?
  472.         MOV CX,3333H
  473.         ORG $-2
  474.         LEFT_CX_TEXTi DW ?
  475.         MOV BP,3333H
  476.         ORG $-2
  477.         TEMPBP1_TEXTi DW ?
  478.         NOLEFTNEXT_TEXTi:
  479.         CMP BP,3333H
  480.         ORG $-2
  481.         RiGHTLAST_TEXTi DW ?
  482.         JNE NORiGHTNEXT_TEXTi
  483.         MOV DS:RiGHT_AX_TEXTi,AX
  484.         MOV DS:RiGHT_BX_TEXTi,BX
  485.         MOV DS:TEMPBP2_TEXTi,BP
  486.         RiGHTKERES2_TEXTi:
  487.         MOV  DX,DS:POiNTBUF[4*EDi]
  488.         MOV  BX,DS:POiNTBUF[4*EDi+2]
  489.         MOV EBP,DWORD PTR DS:TEXTiBUF[4*EDi]
  490.         iNC Di
  491.         CMP Di,3333H
  492.         ORG $-2
  493.         POLYNUM4_TEXTi DW ?
  494.         JNE NOSUBBB2_TEXTi
  495.         XOR Di,Di
  496.         NOSUBBB2_TEXTi:
  497.         MOV AX,DS:POiNTBUF[4*EDi]
  498.         MOV CX,DS:POiNTBUF[4*EDi+2]
  499.         CMP CX,BX
  500.         JE RiGHTKERES2_TEXTi
  501.         MOV DS:iNiTRi1_2_TEXTi,DX
  502.         MOV DS:RiGHTLAST_TEXTi,CX
  503.         SUB CX,BX
  504.         SUB AX,DX
  505.         SHL EAX,16
  506.         CDQ
  507.         MOVSX ECX,CX
  508.         JCXZ    SUXX10
  509.         iDiV    ECX
  510.         SUXX10:
  511.         MOV DS:RiGHTADDLO_TEXTi,AX
  512.         SHR EAX,16
  513.         MOV DS:RiGHTADDHi_TEXTi,AX
  514.         MOV AX,DS:TEXTiBUF[4*EDi]
  515.         SUB AX,BP
  516.         SHL EAX,16
  517.         CDQ
  518.         JCXZ    SUXX11
  519.         iDiV    ECX
  520.         SUXX11:
  521.         MOV DS:RiGHTGOURADDLO_TEXTi,AX
  522.         SHR EAX,16
  523.         MOV DS:RiGHTGOURADDHi_TEXTi,AX
  524.         MOV DS:RiGHTGOURVALHi_TEXTi,BP
  525.         MOV DS:TEMPR1,0
  526.         ROR EBP,16
  527.         MOV AX,DS:TEXTiBUF[4*EDi+2]
  528.         SUB AX,BP
  529.         SHL EAX,16
  530.         CDQ
  531.         JCXZ    SUXX12
  532.         iDiV    ECX
  533.         SUXX12:
  534.         MOV DS:RiGHTGOURADDLO2_TEXTi,AX
  535.         SHR EAX,16
  536.         MOV DS:RiGHTGOURADDHi2_TEXTi,AX
  537.         MOV DS:RiGHTGOURVALHi2_TEXTi,BP
  538.         MOV DS:TEMPR2,0
  539.         XOR DX,DX
  540.         MOV CX,3333H
  541.         ORG $-2
  542.         iNiTRi1_2_TEXTi DW ?
  543.         MOV AX,3333H
  544.         ORG $-2
  545.         RiGHT_AX_TEXTi DW ?
  546.         MOV BX,3333H
  547.         ORG $-2
  548.         RiGHT_BX_TEXTi DW ?
  549.         MOV BP,3333H
  550.         ORG $-2
  551.         TEMPBP2_TEXTi DW ?
  552.         NORiGHTNEXT_TEXTi:
  553.         ADD DS:LiNENUM320_TEXTi,320
  554.         CMP BP,3333H
  555.         ORG $-2
  556.         KiLEPY_TEXTi DW ?
  557.         JBE MAiNPOLYFiLL_TEXTi
  558.         POLYSUX_TEXTi:
  559.         POP DS
  560.         RETN
  561.