Skip to content

Commit 8974c3d

Browse files
author
Niko
committed
RaceFlag_DrawSelf progress
1 parent b0c6629 commit 8974c3d

File tree

1 file changed

+41
-41
lines changed

1 file changed

+41
-41
lines changed

decompile/General/RaceFlag/RaceFlag_13_DrawSelf.c

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4641
void 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

Comments
 (0)