annotate OurMath.cpp @ 2400:ecd1dd95ec49

fixing 2 polishing bugs in GameUI_WritePointedObjectStatusString
author Grumpy7
date Thu, 10 Jul 2014 01:48:39 +0200
parents 48dbf99c0f7f
children f4af3b203f65
rev   line source
2331
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
1 #include "OurMath.h"
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
2 #include "MM7_data.h"
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
3
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
4 //----- (00452969) --------------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
5 stru193_math::stru193_math()
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
6 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
7 double v3; // ST18_8@2
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
8
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
9 this->pTanTable[0] = 0;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
10 this->pCosTable[0] = 65536;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
11 this->pInvCosTable[0] = 65536;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
12 for(int i = 1; i < (signed int)this->uIntegerHalfPi; i++)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
13 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
14 v3 = (double)i * 3.141592653589793 / (double)uIntegerPi;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
15 pTanTable[i] = (signed __int64)(tan(v3) * (double)this->pCosTable[0] + 0.5);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
16 pCosTable[i] = (signed __int64)(cos(v3) * (double)this->pCosTable[0] + 0.5);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
17 pInvCosTable[i] = (signed __int64)(1.0 / cos(v3) * (double)this->pCosTable[0] + 0.5);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
18 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
19 for(int i = this->uIntegerHalfPi; i < 520; i++)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
20 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
21 this->pTanTable[i] = 0xEFFFFFFFu;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
22 this->pCosTable[i] = 0;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
23 this->pInvCosTable[i] = 0xEFFFFFFFu;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
24 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
25 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
26
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
27
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
28 //----- (00402CAE) --------------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
29 int stru193_math::Cos(int angle)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
30 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
31 int v2; // eax@1
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
32
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
33 //a2: (angle - uIntegerHalfPi) for sin(angle)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
34 // (angle) for cos(angle)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
35
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
36 v2 = uDoublePiMask & angle;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
37
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
38 if ( v2 > uIntegerPi )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
39 v2 = uIntegerDoublePi - v2;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
40 if ( v2 >= uIntegerHalfPi )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
41 return -pCosTable[uIntegerPi - v2];
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
42 else
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
43 return pCosTable[v2];
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
44 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
45
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
46
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
47 //----- (0045281E) --------------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
48 // Calculates atan2(y/x)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
49 // return value: angle in integer format (multiplier of Pi/1024)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
50 unsigned int stru193_math::Atan2(int x, int y)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
51 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
52 signed int quadrant;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
53 __int64 dividend;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
54 int quotient;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
55 int lowIdx;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
56 int highIdx;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
57 int angle;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
58
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
59 int X = x;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
60 int Y = y;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
61
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
62 if ( abs(X) < 65536 )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
63 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
64 if ( (abs(Y) >> 15) >= abs(X) )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
65 X = 0;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
66 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
67
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
68 if ( !X )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
69 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
70 if ( Y > 0 )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
71 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
72 return uIntegerHalfPi; //Pi/2
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
73 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
74 else
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
75 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
76 return uIntegerHalfPi + uIntegerPi; //3*(Pi/2)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
77 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
78 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
79
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
80 if ( Y )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
81 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
82 if ( X < 0 )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
83 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
84 X = -X;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
85 if ( Y > 0 )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
86 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
87 quadrant = 4;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
88 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
89 else
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
90 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
91 quadrant = 3;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
92 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
93 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
94 else
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
95 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
96 if ( Y > 0 )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
97 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
98 quadrant = 1;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
99 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
100 else
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
101 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
102 quadrant = 2;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
103 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
104 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
105
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
106 if ( Y < 0 )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
107 Y = -Y;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
108
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
109 LODWORD(dividend) = Y << 16;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
110 HIDWORD(dividend) = Y >> 16;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
111 quotient = dividend / X;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
112
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
113 //looks like binary search
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
114 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
115 int i;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
116 highIdx = uIntegerHalfPi;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
117 lowIdx = 0;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
118
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
119 for (i = 0; i < 6; ++i)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
120 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
121 if (quotient <= pTanTable[(lowIdx + highIdx) / 2])
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
122 highIdx = (lowIdx + highIdx) / 2;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
123 else
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
124 lowIdx = (lowIdx + highIdx) / 2;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
125 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
126 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
127
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
128 angle = lowIdx + 1;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
129 while ( angle < (highIdx - 1) && quotient >= pTanTable[angle] )
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
130 ++angle;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
131
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
132 switch (quadrant)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
133 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
134 case 1: //X > 0, Y > 0
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
135 return angle;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
136
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
137 case 2: //X > 0, Y < 0
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
138 return uIntegerDoublePi - angle; //2*Pi - angle
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
139
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
140 case 3: //X > 0, Y < 0
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
141 return uIntegerPi + angle; //Pi + angle
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
142
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
143 case 4: //X < 0, Y > 0
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
144 return uIntegerPi - angle; //Pi - angle
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
145 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
146
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
147 //should newer get here
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
148 return 0;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
149 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
150
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
151 if ( X < 0 ) //Y == 0, X < 0
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
152 return uIntegerPi;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
153
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
154 return 0;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
155 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
156
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
157 //----- (0042EBDB) --------------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
158 int stru193_math::Sin(int angle)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
159 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
160 return Cos(angle - this->uIntegerHalfPi);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
161 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
162
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
163 //----- (0042EBBE) --------------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
164 //----- (004453C0) mm6-----------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
165 //----- (004A1760) mm6_chinese---------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
166 __int64 fixpoint_mul(int a1, int a2)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
167 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
168 return ((__int64)a1 * (__int64)a2) >> 16;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
169 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
170
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
171 __int64 fixpoint_dot(int x1, int x2, int y1, int y2, int z1, int z2)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
172 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
173 return fixpoint_mul(x1, x2) +
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
174 fixpoint_mul(y1, y2) +
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
175 fixpoint_mul(z1, z2);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
176 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
177
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
178 //----- (004A1780) mm6_chinese---------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
179 __int64 fixpoint_div(int a1, int a2)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
180 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
181 return ((__int64)a1 << 16) / a2;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
182 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
183
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
184 __int64 fixpoint_sub_unknown(int a1, int a2)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
185 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
186 return (((__int64)a1 << 16) * a2) >> 16;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
187 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
188
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
189 //----- (0048B561) --------------------------------------------------------
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
190 int fixpoint_from_float(float val)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
191 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
192 // float X.Yf -> int XXXX YYYY
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
193 int left = floorf((val - 0.5f) + 0.5f);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
194 int right = floorf((val - left) * 65536.0f);
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
195 return (left << 16) | right;
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
196 }
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
197
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
198 int fixpoint_from_int(int lhv, int rhv)
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
199 {
9551756f46c4 Moving functions out of mm7_6.cpp into appropriate classes as static methods or free functions
Grumpy7
parents:
diff changeset
200 return (lhv << 16) | rhv;
2340
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
201 }
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
202
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
203
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
204 //----- (00452A9E) --------------------------------------------------------
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
205 int integer_sqrt(int val)
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
206 {
2378
48dbf99c0f7f spawn_light_elemental cleaned
Ritor1
parents: 2340
diff changeset
207 ///////////////////////////////
48dbf99c0f7f spawn_light_elemental cleaned
Ritor1
parents: 2340
diff changeset
208 //Получение квадратного корня//
48dbf99c0f7f spawn_light_elemental cleaned
Ritor1
parents: 2340
diff changeset
209 ///////////////////////////////
48dbf99c0f7f spawn_light_elemental cleaned
Ritor1
parents: 2340
diff changeset
210
2340
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
211 signed int result; // eax@2
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
212 unsigned int v2; // edx@3
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
213 unsigned int v3; // edi@3
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
214 int v5; // esi@4
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
215
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
216 if (val < 1)
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
217 return val;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
218
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
219 v2 = 0;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
220 v3 = val;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
221 result = 0;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
222 for (uint i = 0; i < 16; ++i)
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
223 {
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
224 result *= 2;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
225 v2 = (v3 >> 30) | 4 * v2;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
226 v5 = 2 * result + 1;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
227 v3 *= 4;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
228 if ( v2 >= v5 )
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
229 {
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
230 ++result;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
231 v2 -= v5;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
232 }
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
233 }
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
234 if ( val - result * result >= (unsigned int)(result - 1) )
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
235 ++result;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
236 return result;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
237 }
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
238
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
239 //----- (00452B2E) --------------------------------------------------------
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
240 int __fastcall GetDiceResult(unsigned int uNumDice, unsigned int uDiceSides)
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
241 {
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
242 int v3; // esi@1
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
243
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
244 v3 = 0;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
245 if ( uDiceSides )
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
246 {
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
247 for ( uint i = 0; i < uNumDice; ++i)
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
248 v3 += rand() % uDiceSides + 1;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
249 return v3;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
250 }
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
251 return 0;
dc822157c98d Moving functions from unsorted_subs.h pt4
Grumpy7
parents: 2331
diff changeset
252 }