Nov 13 2011, 08:27 AM Post #1 | |
Member Posts: 197 From: Liberty City, Shoreside Joined: 15-July 10 | I saw that "fst" and "fstp" instructions in .exe used in this way (example): CODE fstp [esp+0C8h+var_B8] Would this right? CODE float fCoordX; float flt_0125 = 0.125; ... __asm { mov ax, wordCoordX movzx eax, ax mov fCoordX, eax fild fCoordX fmul ds:flt_0125 fstp fCoordX } In other words, I have 2-bytes coord, stored in wordCoordX. I need to transform it to 4-bytes float. This post has been edited by DK22: Nov 13 2011, 09:08 AM |
Nov 13 2011, 11:56 AM Post #2 | |
The master of cut retort Posts: 239 From: Warsaw, PL Joined: 21-July 10 | Yeah, that looks proper, but why not just typecast it in C++? Typecasting should produce similar results. CODE float fCoordX = (float)wordCoordX; This post has been edited by Silent: Nov 13 2011, 11:57 AM |
Nov 13 2011, 12:14 PM Post #3 | |
Member Posts: 197 From: Liberty City, Shoreside Joined: 15-July 10 | I tried this. But then I had lags... I insert my code to CAutomobile__preRender, when I used this CODE float fCoordX = (float)wordCoordX; then, all automobiles was without wheels (o_O) Idk why... Also I wanted to ask about CGeneral__GetAtanOfXY... What is the 1st param and second? X Y or Y X ? Cause on Cpp it is CODE Angle = atan2(coordY, coordX) And dont ask why I dont use cpp's function... I have problems with compiling... This post has been edited by DK22: Nov 13 2011, 12:45 PM |
Nov 13 2011, 02:23 PM Post #4 | |
Coding like a Rockstar! Posts: 1,468 From: ??? Joined: 28-May 09 | Well, the easiest way to test atan is to do "atan2(0.0, 1.0)" and see what angle it produces, if the result is 90 degrees then the it is atan2(coordy, coordx)... -------------------- | CLEO 4.3.22 | A?i?a?o?3D | UI SDK | Black Market Mod 1.0.1 | GInput 0.3 | Cheat Keyboard | Tactile Cheat Activation | Stream Ini Extender 0.7 | SuperVars | ScrDebug | Vigilante Justice: San Andreas | |
Nov 13 2011, 10:25 PM Post #5 | |
The Assistant Posts: 84 From: Matera, IT Joined: 16-June 11 | You can avoid the first line by overwriting the second one with this: CODE movzx eax, wordCoordX FPU atan computes st(1) / st(0), so I guess it is atan2(x, y), unlike ANSI built-in function. |