@@ -23,18 +23,13 @@ int MathSinInline(u_int param_1)
2323 // approximate trigonometry
2424 iVar1 = * (u_int * )& data .trigApprox [param_1 & 0x3ff ];
2525
26- // if (0 < angle < 90) or (180 < angle < 270)
2726 if ((param_1 & 0x400 ) == 0 )
2827 {
29- // shift bottom 2-byte to become top 2-byte
3028 iVar1 = iVar1 << 0x10 ;
3129 }
3230
33- // move top 2-byte to bottom 2-byte,
34- // and make top 2-byte zero
3531 iVar1 = iVar1 >> 0x10 ;
3632
37- // if (angle > 180)
3833 if ((param_1 & 0x800 ) != 0 )
3934 {
4035 // make negative
@@ -45,18 +40,21 @@ int MathSinInline(u_int param_1)
4540
4641void DECOMP_RaceFlag_DrawSelf ()
4742{
48- char i , j ;
49- char column , row ;
50- u_char toggle ;
43+ int i , j ;
44+ int column , row ;
45+ int toggle ;
46+
5147 short flagPos ;
5248 u_long * ot ;
5349 u_int * scratchpad ;
5450 u_int screenlimit ;
5551 u_int dimensions ;
56- int approx [2 ];
57- u_int angle [2 ];
52+
53+ int var2 ;
54+ int var3 ;
55+ u_int var1 ;
56+
5857 POLY_G4 * p ;
59- SVECTOR * vect ;
6058 struct GameTracker * gGT = sdata -> gGT ;
6159
6260 int time ;
@@ -137,14 +135,14 @@ void DECOMP_RaceFlag_DrawSelf()
137135 // === Step 1 ===
138136 int stepRate = gGT -> elapsedTimeMS ;
139137 local [4 ] += local [3 ] * stepRate ;
140- angle [ 0 ] = (int )local [4 ] >> 5 ;
138+ var1 = (int )local [4 ] >> 5 ;
141139
142140 // === Step 2 ===
143- if (0xfff < angle [ 0 ] )
141+ if (0xfff < var1 )
144142 {
145143 // reset counter
146144 local [4 ] &= 0x1ffff ;
147- angle [ 0 ] = (int )local [4 ] >> 5 ;
145+ var1 = (int )local [4 ] >> 5 ;
148146
149147 local [0 ] += 0x200 ;
150148 local [2 ] += 200 ;
@@ -158,13 +156,13 @@ void DECOMP_RaceFlag_DrawSelf()
158156 }
159157
160158 // === Step 3 ===
161- approx [ 0 ] = MathSinInline (angle [ 0 ] ) + 0xfff ;
162- approx [ 0 ] = approx [ 0 ] * local [1 ];
163- approx [ 0 ] = (approx [ 0 ] >> 0xd ) + 0x280 ;
159+ var2 = MathSinInline (var1 ) + 0xfff ;
160+ var2 = var2 * local [1 ];
161+ var2 = (var2 >> 0xd ) + 0x280 ;
164162
165163 // === Step 4 ===
166- angle [ 0 ] += 0xc80 ;
167- lightL = MathSinInline (angle [ 0 ] ) + 0xfff ;
164+ var1 += 0xc80 ;
165+ lightL = MathSinInline (var1 ) + 0xfff ;
168166
169167 // === Step 5 ===
170168 pos [0 ].vy = 0xfc72 ;
@@ -179,7 +177,7 @@ void DECOMP_RaceFlag_DrawSelf()
179177 data .checkerFlagVariables [4 ] = local [4 ];
180178
181179 time = sdata -> RaceFlag_ElapsedTime >> 5 ;
182- angle [ 0 ] = time ;
180+ var1 = time ;
183181
184182 flagPos = sdata -> RaceFlag_Position ;
185183 flagPos = -0xbbe - flagPos ;
@@ -191,17 +189,18 @@ void DECOMP_RaceFlag_DrawSelf()
191189 // === Step 7 ===
192190 for (row = 0 ; row < 10 ; row ++ )
193191 {
192+ SVECTOR * vect ;
194193 for (
195- j = 0 , vect = & pos [0 ];
196- j < 3 ;
197- j ++ , vect ++ )
194+ vect = & pos [0 ];
195+ vect < & pos [ 3 ] ;
196+ vect ++ )
198197 {
199198 // Range: [1.0, 2.0]
200- approx [ 1 ] = MathSinInline (angle [ 0 ] ) + 0xfff ;
201- angle [ 0 ] += 300 ;
199+ var3 = MathSinInline (var1 ) + 0xfff ;
200+ var1 += 300 ;
202201
203202 // change all vector posZ
204- vect -> vz = (short )approx [ 0 ] + (short )(approx [ 1 ] * 0x20 >> 0xd );
203+ vect -> vz = (short )var2 + (short )(var3 * 0x20 >> 0xd );
205204 }
206205
207206 gte_ldv3 (& pos [0 ], & pos [1 ], & pos [2 ]);
@@ -234,14 +233,14 @@ void DECOMP_RaceFlag_DrawSelf()
234233 // === Step 1 ===
235234 int stepRate = 0x40 ;
236235 local [4 ] += local [3 ] * stepRate ;
237- angle [ 0 ] = (int )local [4 ] >> 5 ;
236+ var1 = (int )local [4 ] >> 5 ;
238237
239238 // === Step 2 ===
240- if (0xfff < angle [ 0 ] )
239+ if (0xfff < var1 )
241240 {
242241 // reset counter
243242 local [4 ] &= 0x1ffff ;
244- angle [ 0 ] = (int )local [4 ] >> 5 ;
243+ var1 = (int )local [4 ] >> 5 ;
245244
246245 local [0 ] += 0x200 ;
247246 local [2 ] += 200 ;
@@ -255,13 +254,13 @@ void DECOMP_RaceFlag_DrawSelf()
255254 }
256255
257256 // === Step 3 ===
258- approx [ 0 ] = MathSinInline (angle [ 0 ] ) + 0xfff ;
259- approx [ 0 ] = approx [ 0 ] * local [1 ];
260- approx [ 0 ] = (approx [ 0 ] >> 0xd ) + 0x280 ;
257+ var2 = MathSinInline (var1 ) + 0xfff ;
258+ var2 = var2 * local [1 ];
259+ var2 = (var2 >> 0xd ) + 0x280 ;
261260
262261 // === Step 4 ===
263- angle [ 0 ] += 0xc80 ;
264- lightL = MathSinInline (angle [ 0 ] ) + 0xfff ;
262+ var1 += 0xc80 ;
263+ lightL = MathSinInline (var1 ) + 0xfff ;
265264
266265 // === Step 5 ===
267266 pos [0 ].vy = 0xfc72 ;
@@ -270,7 +269,7 @@ void DECOMP_RaceFlag_DrawSelf()
270269
271270 // === Step 6 ===
272271 time += 0x100 ;
273- angle [ 0 ] = time ;
272+ var1 = time ;
274273
275274 pos [0 ].vx += 100 ;
276275 pos [1 ].vx += 100 ;
@@ -280,17 +279,18 @@ void DECOMP_RaceFlag_DrawSelf()
280279 // === Step 7 ===
281280 for (row = 0 ; row < 10 ; row ++ )
282281 {
282+ SVECTOR * vect ;
283283 for (
284- j = 0 , vect = & pos [0 ];
285- j < 3 ;
286- j ++ , vect ++ )
284+ vect = & pos [0 ];
285+ vect < & pos [ 3 ] ;
286+ vect ++ )
287287 {
288288 // Range: [1.0, 2.0]
289- approx [ 1 ] = MathSinInline (angle [ 0 ] ) + 0xfff ;
290- angle [ 0 ] += 300 ;
289+ var3 = MathSinInline (var1 ) + 0xfff ;
290+ var1 += 300 ;
291291
292292 // change all vector posZ
293- vect -> vz = (short )approx [ 0 ] + (short )(approx [ 1 ] * 0x20 >> 0xd );
293+ vect -> vz = (short )var2 + (short )(var3 * 0x20 >> 0xd );
294294 }
295295
296296 gte_ldv3 (& pos [0 ], & pos [1 ], & pos [2 ]);
0 commit comments