Advertisement
Guest User

Untitled

a guest
Apr 10th, 2017
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 19.71 KB | None | 0 0
  1. library dx7wz; uses windows;//,log;
  2.  
  3. {$hints off}
  4. const thrash = 'dx7z.dll';
  5.  
  6. var
  7. fRenderHeight,fRenderWidth:single;
  8.  
  9. _fltused,
  10. mAdjustX,
  11. mAdjustY,
  12. mRenderHeight,
  13. mRenderWidth,
  14. mScreenHeight,
  15. mScreenWidth
  16. //Base_setstate
  17.  
  18. : integer;
  19.  
  20.  
  21.  
  22. pVertices :array [0..131000] of byte;
  23. newVertices : pointer = @pVertices;
  24.  
  25. var mClipped: integer = 0;
  26. var mIngame: integer = 0;
  27.  
  28.   (*
  29.  
  30.  
  31. function qq_UaYAPAXIaZ (len:integer): pointer; cdecl;
  32. var mem : pointer;
  33. begin
  34.        GetMem (mem, len); result := mem;
  35. end;
  36.  
  37.  
  38. procedure qq_VaYAXPAXaZ (mem:pointer); cdecl;
  39. begin
  40.        FreeMem (mem);
  41. end;
  42.  
  43.  
  44.  
  45. function qq2aYAPAXIaZ (len:integer): pointer; cdecl;
  46. var mem : pointer;
  47. begin
  48.        GetMem (mem, len); result := mem;
  49. end;
  50.  
  51. procedure qq3aYAXPAXaZ (mem:pointer); cdecl;
  52. begin
  53.        FreeMem (mem);
  54. end;
  55. *)
  56.  
  57.  
  58. { $L widescr}
  59.  
  60. procedure updateRender(mode,inf:integer); forward;//external;
  61.  
  62.  
  63.  
  64.  
  65. function THRASH_setvideomode(wParam,lParam, int : integer):integer; stdcall; external thrash name '_THRASH_setvideomode@12';
  66.  
  67. function _THRASH_about:integer;external thrash name '_THRASH_about@0';
  68.  
  69. procedure _THRASH_clearwindow;external thrash name '_THRASH_clearwindow@0';
  70. procedure _THRASH_clip;external thrash   name '_THRASH_clip@16';
  71. procedure _THRASH_drawline;external thrash name '_THRASH_drawline@8';
  72. procedure _THRASH_drawlinemesh;external thrash name '_THRASH_drawlinemesh@12';
  73. procedure _THRASH_drawlinestrip_12;external thrash name '_THRASH_drawlinestrip@12';
  74. procedure _THRASH_drawlinestrip_8;external thrash name '_THRASH_drawlinestrip@8';
  75. procedure _THRASH_drawpoint;external thrash name '_THRASH_drawpoint@4';
  76. procedure _THRASH_drawpointmesh;external thrash name '_THRASH_drawpointmesh@12';
  77. procedure _THRASH_drawpointstrip;external thrash name '_THRASH_drawpointstrip@8';
  78. procedure _THRASH_drawquad;external thrash name '_THRASH_drawquad@16';
  79. procedure _THRASH_drawquadmesh;external thrash name '_THRASH_drawquadmesh@12';
  80. procedure _THRASH_drawsprite;external thrash name '_THRASH_drawsprite@8';
  81. procedure _THRASH_drawspritemesh;external thrash name '_THRASH_drawspritemesh@12';
  82. procedure _THRASH_drawtri;external thrash name '_THRASH_drawtri@12';
  83. procedure _THRASH_drawtrifan_12;external thrash name '_THRASH_drawtrifan@12';
  84. procedure _THRASH_drawtrifan_8;external thrash name '_THRASH_drawtrifan@8';
  85. procedure _THRASH_drawtrimesh;external thrash name '_THRASH_drawtrimesh@12';
  86. procedure _THRASH_drawtristrip_12;external thrash name '_THRASH_drawtristrip@12';
  87. procedure _THRASH_drawtristrip_8;external thrash name '_THRASH_drawtristrip@8';
  88. procedure _THRASH_flushwindow;external thrash name '_THRASH_flushwindow@0';
  89. procedure _THRASH_getstate;external thrash name '_THRASH_getstate@4';
  90. procedure _THRASH_idle;external thrash name '_THRASH_idle@0';
  91. procedure _THRASH_init;external thrash name '_THRASH_init@0';
  92. procedure _THRASH_is;external thrash name '_THRASH_is@0';
  93. procedure _THRASH_lockwindow;external thrash name '_THRASH_lockwindow@0';
  94. procedure _THRASH_pageflip;external thrash name '_THRASH_pageflip@0';
  95. procedure _THRASH_readrect;external thrash name '_THRASH_readrect@20';
  96. procedure _THRASH_restore;external thrash name '_THRASH_restore@0';
  97. procedure _THRASH_selectdisplay;external thrash name '_THRASH_selectdisplay@4';
  98. procedure _THRASH_setstate;external thrash name '_THRASH_setstate@8';
  99. procedure _THRASH_settexture;external thrash name '_THRASH_settexture@4';
  100. //procedure _THRASH_setvideomode;external thrash name '_THRASH_setvideomode@12';
  101. procedure _THRASH_sync;external thrash name '_THRASH_sync@4';
  102. procedure _THRASH_talloc;external thrash name '_THRASH_talloc@20';
  103. procedure _THRASH_tfree;external thrash name '_THRASH_tfree@4';
  104. procedure _THRASH_treset;external thrash name '_THRASH_treset@0';
  105. procedure _THRASH_tupdate;external thrash name '_THRASH_tupdate@12';
  106. procedure _THRASH_unlockwindow;external thrash name '_THRASH_unlockwindow@4';
  107. procedure _THRASH_window;external thrash name '_THRASH_window@4';
  108. procedure _THRASH_writerect;external thrash name '_THRASH_writerect@20';
  109.  
  110.  
  111.  
  112.  
  113.  
  114. function about:integer; asm jmp _THRASH_about end;
  115.  
  116.  
  117.  
  118. //extern "C" void updateRender(uint32_t mode, Info* inf) {
  119. //        DisplayMode modeInfo = inf->displayModes[mode];
  120.   //      updateRenderSize(modeInfo.width, modeInfo.height);
  121.        // return Base::setvideomode(mode, b, c);
  122. //    }
  123.  
  124.  
  125.  
  126.  
  127. function setvideomode(a,b,c : integer):integer; stdcall; // external thrash name '_THRASH_setvideomode@12';
  128. begin
  129.  //   writeln ('setvideomode:  ', a, '  ', b, '  ',c  );
  130.  
  131.   updateRender(a,about);
  132.  
  133. result := THRASH_setvideomode(a,b,c);
  134. //   if ( a = 1) and ( b = 2) // and ( c = 1)
  135.   //        then
  136.     //          result := THRASH_setvideomode(  7,  2,  2) else
  137.  
  138. //    result := THRASH_setvideomode(wParam,lParam, int);
  139.                                         //1  2  1
  140. //        result := THRASH_setvideomode(  9,  2,  2);
  141.  
  142.  
  143. //writeln ('mAdjustX  ',mAdjustX, ' mAdjustY ',mAdjustY);
  144. //writeln ('mScreenHeight  ',mScreenHeight, ' mScreenWidth ',mScreenWidth);
  145. //writeln ('mRenderHeight  ',mRenderHeight, ' mRenderWidth ',mRenderWidth);
  146. //mRenderHeight,
  147. //mRenderWidth,
  148. //mScreenHeight,
  149. //mScreenWidth
  150.  
  151. //writeln (mRenderWidth, mRenderHeight);// = renderHeight;
  152.  
  153.  
  154. // mScreenHeight, '  ', mScreenWidth);
  155. //mAdjustX,
  156. //mAdjustY,
  157. //mRenderHeight,
  158. //mRenderWidth,
  159. //mScreenHeight,
  160. //mScreenWidth,
  161.  
  162.  
  163.  
  164.      //    result := THRASH_setvideomode(  9,  2,  2);
  165.  
  166. //procedure setvideomode; asm
  167.       //  xor eax, eax
  168.       //  ret 0Ch
  169. //        jmp  _THRASH_setvideomode
  170. end;
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. procedure clearwindow; asm jmp _THRASH_clearwindow end;
  178. procedure clip; asm jmp _THRASH_clip end;
  179. procedure drawline; asm jmp _THRASH_drawline end;
  180. procedure drawlinemesh; asm jmp _THRASH_drawlinemesh end;
  181. procedure drawlinestrip_12; asm jmp _THRASH_drawlinestrip_12 end;
  182. procedure drawlinestrip_8; asm jmp _THRASH_drawlinestrip_8 end;
  183. procedure drawpoint; asm jmp _THRASH_drawpoint end;
  184. procedure drawpointmesh; asm jmp _THRASH_drawpointmesh end;
  185. procedure drawpointstrip; asm jmp _THRASH_drawpointstrip end;
  186. procedure drawquad; asm jmp _THRASH_drawquad end;
  187. procedure drawquadmesh; asm jmp _THRASH_drawquadmesh end;
  188. procedure drawsprite; asm jmp _THRASH_drawsprite end;
  189. procedure drawspritemesh; asm jmp _THRASH_drawspritemesh end;
  190. procedure drawtri; asm jmp _THRASH_drawtri end;
  191. procedure drawtrifan_12; asm jmp _THRASH_drawtrifan_12 end;
  192. procedure drawtrifan_8; asm jmp  _THRASH_drawtrifan_8 end;
  193. procedure drawtrimesh; asm jmp  _THRASH_drawtrimesh end;
  194. procedure drawtristrip_12; asm jmp  _THRASH_drawtristrip_12 end;
  195. procedure drawtristrip_8; asm jmp  _THRASH_drawtristrip_8 end;
  196. procedure flushwindow; asm jmp  _THRASH_flushwindow end;
  197. procedure getstate; asm jmp  _THRASH_getstate end;
  198. procedure idle; asm jmp  _THRASH_idle end;
  199. procedure init; asm jmp  _THRASH_init end;
  200. procedure _is; asm jmp  _THRASH_is end;
  201. procedure lockwindow; asm jmp  _THRASH_lockwindow end;
  202. procedure pageflip; asm jmp  _THRASH_pageflip end;
  203. procedure readrect;
  204. asm
  205.         mov       eax, DWORD PTR [esp+4]
  206.         or        eax, DWORD PTR [esp+8]
  207.         test      eax, -2147483648
  208.         je        @@B2_3
  209.  
  210.         mov       eax, 1
  211.         ret       20
  212.  
  213. @@B2_3:
  214.         jmp  _THRASH_readrect
  215.         xor       eax, eax
  216.         ret       20
  217. end;
  218.  
  219. //    template <typename Base> bool BaseWidescreenThrashDriver<Base>::readrect(uint32_t x, uint32_t y, uint32_t width, uint32_t height, void* dest) {
  220. //        if (x & 0x80000000 || y & 0x80000000) {
  221.             // We filter potentially problematic values here. For a more complete
  222.             // explanation, see the readrect comment in 3rash.h, but in short:
  223.             // it's probably the NFSPU Normandie crash.
  224. //            return true;
  225. //            //_asm nop
  226. //        }
  227. //        return Base::readrect(x, y, width, height, dest);
  228. //    }
  229.  
  230.  
  231.  
  232. procedure restore; asm jmp  _THRASH_restore end;
  233. procedure selectdisplay; asm jmp  _THRASH_selectdisplay end;
  234.  
  235. procedure setstate; asm jmp  _THRASH_setstate end;
  236.  
  237. procedure Wsetstate; forward;//external;
  238. procedure setstate2; asm jmp  Wsetstate end;
  239.  
  240. procedure settexture; asm jmp  _THRASH_settexture end;
  241.  
  242. procedure sync; asm jmp _THRASH_sync end;
  243. procedure talloc; asm jmp _THRASH_talloc end;
  244. procedure tfree; asm jmp _THRASH_tfree end;
  245. procedure treset; asm jmp _THRASH_treset end;
  246. procedure tupdate; asm jmp _THRASH_tupdate end;
  247. procedure unlockwindow; asm jmp _THRASH_unlockwindow end;
  248. procedure window; asm jmp _THRASH_window end;
  249. procedure writerect; asm jmp _THRASH_writerect end;
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. exports
  269.   about name '_THRASH_about@0',
  270.   clearwindow name '_THRASH_clearwindow@0',
  271.   clip   name '_THRASH_clip@16',  
  272.   drawline name '_THRASH_drawline@8',
  273.   drawlinemesh name '_THRASH_drawlinemesh@12',
  274.   drawlinestrip_12 name '_THRASH_drawlinestrip@12',
  275.   drawlinestrip_8 name '_THRASH_drawlinestrip@8',
  276.   drawpoint name '_THRASH_drawpoint@4',
  277.   drawpointmesh name '_THRASH_drawpointmesh@12',
  278.   drawpointstrip name '_THRASH_drawpointstrip@8',
  279.   drawquad name '_THRASH_drawquad@16',
  280.   drawquadmesh name '_THRASH_drawquadmesh@12',
  281.   drawsprite name '_THRASH_drawsprite@8',
  282.   drawspritemesh name '_THRASH_drawspritemesh@12',
  283.   drawtri name '_THRASH_drawtri@12',
  284.   drawtrifan_12 name '_THRASH_drawtrifan@12',
  285.   drawtrifan_8 name '_THRASH_drawtrifan@8',
  286.   drawtrimesh name '_THRASH_drawtrimesh@12',
  287.   drawtristrip_12 name '_THRASH_drawtristrip@12',
  288.   drawtristrip_8 name '_THRASH_drawtristrip@8',
  289.   flushwindow name '_THRASH_flushwindow@0',
  290.   getstate name '_THRASH_getstate@4',
  291.   idle name '_THRASH_idle@0',
  292.   init name '_THRASH_init@0',
  293.   _is name '_THRASH_is@0',
  294.   lockwindow name '_THRASH_lockwindow@0',
  295.   pageflip name '_THRASH_pageflip@0',
  296.   readrect name '_THRASH_readrect@20',
  297.   restore name '_THRASH_restore@0',
  298.   selectdisplay name '_THRASH_selectdisplay@4',
  299.   setstate2 name '_THRASH_setstate@8',
  300.   settexture name '_THRASH_settexture@4',
  301.   setvideomode name '_THRASH_setvideomode@12',
  302.   sync name '_THRASH_sync@4',
  303.   talloc name '_THRASH_talloc@20',
  304.   tfree name '_THRASH_tfree@4',
  305.   treset name '_THRASH_treset@0',
  306.   tupdate name '_THRASH_tupdate@12',
  307.   unlockwindow name '_THRASH_unlockwindow@4',
  308.   window name '_THRASH_window@4',
  309.   writerect name '_THRASH_writerect@20'
  310. ;  
  311.  
  312.  
  313.  
  314. function maxv(val:integer):integer;//external;
  315. asm
  316.         xor       edx, edx
  317.         cmp       eax, edx //0
  318.         cmovl     eax, edx
  319. end;
  320.  
  321.  
  322. procedure updateRenderSize(renderWidth, renderHeight:integer);//cdecl;
  323. var
  324. //        fRenderHeight,fRenderWidth,
  325.         fScreenWidth, fScreenHeight, screenAspectRatio:single;
  326.        
  327. begin
  328.         mRenderWidth := renderWidth;
  329.         mRenderHeight := renderHeight;
  330.         fRenderHeight:= renderHeight;
  331.         fRenderWidth:= renderWidth;
  332.  
  333.       fScreenHeight:= mScreenHeight;
  334.       fScreenWidth:= mScreenWidth;
  335.  
  336.  
  337.       screenAspectRatio := mScreenWidth / mScreenHeight;
  338.  
  339. // madjustY :=round ((fScreenHeight * screenAspectRatio * 0.75 - fScreenHeight) / 2.0);
  340. // int adjustY = (int)(((float)mRenderHeight * screenAspectRatio * 0.75 - mRenderHeight) / 2.0);
  341.  
  342.         mAdjustY := maxv (round((fRenderHeight * screenAspectRatio * 0.75 - fRenderHeight) / 2.0));
  343.         mAdjustX := maxv (round((fRenderWidth / screenAspectRatio / 0.75 - fRenderWidth) / 2.0));
  344.  
  345. //        mAdjustY := maxv (round((fRenderHeight * screenAspectRatio * 0.85 - fRenderHeight) / 2.0));
  346.   //      mAdjustX := maxv (round((fRenderWidth / screenAspectRatio / 0.65 - fRenderWidth) / 2.0));
  347.  
  348. end;
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355. procedure processVertices;//    PROC NEAR
  356. const
  357. _2il0floatpacket_7:integer =$03e4ccccd;
  358. _2il0floatpacket_5:integer =$03f800000;
  359. _2il0floatpacket_3:integer =$040000000;
  360. _2il0floatpacket_1:integer =$0bf000000;
  361.  
  362.  
  363.  
  364. //; parameter 1: eax
  365. //; parameter 2: edx
  366. asm
  367. @B1@1:
  368.         push      edi
  369.         push      esi
  370.         push      ebp
  371.         sub       esp, 16
  372.         mov       esi, edx
  373.         mov       edi, eax
  374.         cmp       DWORD PTR mClipped, 0
  375.         jne       @B1@19
  376.  
  377. @B1@2:
  378.         xor       ebp, ebp
  379.         xor       ecx, ecx
  380.         test      edi, edi
  381.         jle       @B1@25
  382.  
  383. @B1@3:
  384.         mov       eax, DWORD PTR newVertices
  385.         movss     xmm3, DWORD PTR _2il0floatpacket_5
  386.         movss     xmm2, DWORD PTR _2il0floatpacket_1
  387.         movss     xmm1, DWORD PTR _2il0floatpacket_3
  388.         movss     xmm0, DWORD PTR _2il0floatpacket_7
  389.         lea       edx, DWORD PTR [ecx+ecx]
  390.         add       edx, edx
  391.         add       edx, edx
  392.         add       edx, edx
  393.         add       edx, edx
  394.         mov       DWORD PTR [esp+4], edi
  395.         mov       DWORD PTR [esp+12], ebx
  396.  
  397. @B1@4:
  398.         mov       ebx, DWORD PTR [esi+edx]
  399.         mov       DWORD PTR [edx+eax], ebx
  400.         mov       ebx, DWORD PTR [esi+edx+4]
  401.         mov       DWORD PTR [edx+eax+4], ebx
  402.         mov       ebx, DWORD PTR [esi+edx+8]
  403.         mov       DWORD PTR [edx+eax+8], ebx
  404.         mov       ebx, DWORD PTR [esi+edx+12]
  405.         mov       DWORD PTR [edx+eax+12], ebx
  406.         mov       ebx, DWORD PTR [esi+edx+16]
  407.         mov       DWORD PTR [edx+eax+16], ebx
  408.         mov       ebx, DWORD PTR [esi+edx+20]
  409.         mov       DWORD PTR [edx+eax+20], ebx
  410.         mov       ebx, DWORD PTR [esi+edx+24]
  411.         mov       DWORD PTR [edx+eax+24], ebx
  412.         mov       ebx, DWORD PTR [esi+edx+28]
  413.         mov       DWORD PTR [edx+eax+28], ebx
  414.         test      ebp, ebp
  415.         je        @B1@7
  416.  
  417. @B1@5:
  418.         mov       eax, DWORD PTR newVertices
  419.         lea       ebx, DWORD PTR [edx+eax]
  420.         mov       edi, DWORD PTR mAdjustY
  421.         test      edi, edi
  422.         jle       @B1@21
  423.      
  424. @B1@6:
  425.         movss     xmm7, DWORD PTR [ebx+4]
  426.         movss     xmm4, DWORD PTR fRenderHeight
  427.         movss     xmm6, xmm7
  428.         divss     xmm6, xmm4
  429.         addss     xmm6, xmm2
  430.         mulss     xmm6, xmm1
  431.         cvtsi2ss  xmm5, edi
  432.         mulss     xmm6, xmm5
  433.         addss     xmm7, xmm6
  434.         movss     DWORD PTR [ebx+4], xmm7
  435.         jmp       @B1@17
  436.  
  437. @B1@7:
  438.         mov       eax, DWORD PTR newVertices
  439.         lea       ebx, DWORD PTR [edx+eax]
  440.         cmp       DWORD PTR mIngame, 0
  441.         je        @B1@9
  442.  
  443. @B1@8:
  444.         movss     xmm4, DWORD PTR [ebx+8]
  445.         mov       ebx, 1
  446.         mov       edi, 0
  447.         comiss    xmm4, xmm0
  448.         cmovae    edi, ebx
  449.         and       edi, 255
  450.         jmp       @B1@10
  451.  
  452.  
  453. @B1@9:
  454.         movss     xmm4, DWORD PTR [ebx+12]
  455.         mov       ebx, 1
  456.         mov       edi, 0
  457.         comiss    xmm4, xmm3
  458.         cmovb     edi, ebx
  459.         and       edi, 255
  460.  
  461. @B1@10:
  462.         test      edi, edi
  463.         je        @B1@17
  464.  
  465. @B1@11:
  466.         mov       ebp, 1
  467.         xor       edi, edi
  468.         test      ecx, ecx
  469.         jl        @B1@17
  470.  
  471. @B1@12:
  472.         lea       ebx, DWORD PTR [edi+edi]
  473.         add       ebx, ebx
  474.         add       ebx, ebx
  475.         add       ebx, ebx
  476.         add       ebx, ebx
  477.         mov       DWORD PTR [esp+8], ebp
  478.         mov       DWORD PTR [esp], esi
  479.  
  480.  
  481. @B1@13:
  482.         lea       ebp, DWORD PTR [eax+ebx]
  483.         mov       esi, DWORD PTR mAdjustY
  484.         test      esi, esi
  485.         jle       @B1@23
  486.  
  487. @B1@14:
  488.         movss     xmm7, DWORD PTR [ebp+4]
  489.         movss     xmm4, DWORD PTR fRenderHeight
  490.         movss     xmm6, xmm7
  491.         divss     xmm6, xmm4
  492.         addss     xmm6, xmm2
  493.         mulss     xmm6, xmm1
  494.         cvtsi2ss  xmm5, esi
  495.         mulss     xmm6, xmm5
  496.         addss     xmm7, xmm6
  497.         movss     DWORD PTR [ebp+4], xmm7
  498.  
  499. @B1@15:
  500.         add       ebx, 32
  501.         inc       edi
  502.         cmp       edi, ecx
  503.         jle       @B1@13
  504.  
  505. @B1@16:
  506.         mov       ebp, DWORD PTR [esp+8]
  507.         mov       esi, DWORD PTR [esp]
  508.  
  509. @B1@17:
  510.  
  511.         add       edx, 32
  512.         inc       ecx
  513.         mov       ebx, DWORD PTR [esp+4]
  514.         cmp       ecx, ebx
  515.         jl        @B1@4
  516.  
  517. @B1@18:
  518.         mov       ebx, DWORD PTR [esp+12]
  519.         jmp       @B1@20
  520.  
  521. @B1@19:
  522.         mov       eax, DWORD PTR newVertices
  523.  
  524. @B1@20:
  525.         add       esp, 16
  526.         pop       ebp
  527.         pop       esi
  528.         pop       edi
  529.         ret
  530.  
  531. @B1@21:
  532.         mov       edi, DWORD PTR mAdjustX
  533.         test      edi, edi
  534.         jle       @B1@17
  535.  
  536. @B1@22:
  537.         movss     xmm7, DWORD PTR [ebx]
  538.         movss     xmm4, DWORD PTR fRenderWidth
  539.         movss     xmm6, xmm7
  540.         divss     xmm6, xmm4
  541.         addss     xmm6, xmm2
  542.         mulss     xmm6, xmm1
  543.         cvtsi2ss  xmm5, edi
  544.         mulss     xmm6, xmm5
  545.         addss     xmm7, xmm6
  546.         movss     DWORD PTR [ebx], xmm7
  547.         mov       eax, DWORD PTR newVertices
  548.         jmp       @B1@17
  549. @B1@23:
  550.         mov       esi, DWORD PTR mAdjustX
  551.         test      esi, esi
  552.         jle       @B1@15
  553. @B1@24:
  554.         movss     xmm7, DWORD PTR [ebp]
  555.         movss     xmm4, DWORD PTR fRenderWidth
  556.         movss     xmm6, xmm7
  557.         divss     xmm6, xmm4
  558.         addss     xmm6, xmm2
  559.         mulss     xmm6, xmm1
  560.         cvtsi2ss  xmm5, esi
  561.         mulss     xmm6, xmm5
  562.         addss     xmm7, xmm6
  563.         movss     DWORD PTR [ebp], xmm7
  564.         mov       eax, DWORD PTR newVertices
  565.         jmp       @B1@15
  566. @B1@25:
  567.         mov       eax, DWORD PTR newVertices
  568.         jmp       @B1@20
  569.    
  570. end;
  571.  
  572.  
  573. //; -- Begin  _Wsetstate@8
  574. //; mark_begin;
  575. //       ALIGN     4
  576. //  PUBLIC _Wsetstate@8
  577. procedure Wsetstate;
  578. //; parameter 1: 16 + esp
  579. //; parameter 2: 20 + esp
  580. //$B2$1:                          ; Preds $B2$0
  581. asm
  582.         push      esi
  583.         push      ebp
  584.         push      ebx
  585.         mov       esi, DWORD PTR [esp+16]
  586.         mov       ebp, DWORD PTR [esp+20]
  587.         cmp       esi, 435
  588.         jne       @@B2@3   //      ; Prob 60%
  589.                             //    ; LOE ebp esi edi
  590. @@B2@2:                        //  ; Preds $B2$1
  591.         mov       eax, DWORD PTR [ebp+4] //                       ;307.17
  592.         cmp       eax, 452                 //                     ;307.13
  593.         je        @@B2@5       //  ; Prob 16%                      ;307.13
  594.                               //  ; LOE ebp esi edi
  595. @@B2@3:                        //  ; Preds $B2$2 $B2$1
  596.         push      ebp
  597.         push      esi
  598.         call      setstate //  _setstate@8  
  599.                                // ; LOE eax edi
  600. @@B2@4:                        //  ; Preds $B2$3
  601.         pop       ebx
  602.         pop       ebp
  603.         pop       esi
  604.         ret       8  
  605.  
  606. @@B2@5:  //                        ; Preds $B2$2                   ; Infreq
  607.         mov       ebx, DWORD PTR [ebp+8]
  608.         mov       eax, DWORD PTR [ebp+12]
  609.         mov       edx, ebx  
  610.         call      processVertices  
  611.  
  612. @@B2@6:                         // ; Preds $B2$5                   ; Infreq
  613.         mov       DWORD PTR [ebp+8], eax
  614.         push      ebp
  615.         push      esi
  616.         call      setstate //_setstate@8
  617.                              //   ; LOE eax ebx ebp edi
  618. @@B2@7:                       //   ; Preds $B2$6                   ; Infreq
  619.         mov       DWORD PTR [ebp+8], ebx
  620.         pop       ebx
  621.         pop       ebp
  622.         pop       esi
  623.         ret       8  
  624. end;
  625.  
  626.  
  627.  
  628. //  PUBLIC updateRender
  629. procedure updateRender;
  630. asm
  631. //; parameter 1: eax
  632. //; parameter 2: edx
  633.         lea       ecx, DWORD PTR [eax+eax*4]//                    ;337.32
  634.         mov       edx, DWORD PTR [edx+64] //                      ;337.32
  635.         mov       eax, DWORD PTR [edx+ecx*8] //                   ;338.9
  636.         mov       edx, DWORD PTR [edx+ecx*8+4] //                 ;338.9
  637.         call      updateRenderSize //                             ;338.9
  638.                           //      ; LOE ebx ebp esi edi
  639.         ret
  640. end;
  641.  
  642.  
  643.  
  644. //asm
  645.   // mov eax, 1
  646.   // ret 0Ch
  647.  
  648. begin
  649. //  Allocconsole;
  650.  
  651.         mScreenWidth := GetSystemMetrics(SM_CXSCREEN);
  652.         mScreenHeight := GetSystemMetrics(SM_CYSCREEN);
  653.  
  654.  
  655. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement