Fix HsfanimStruct01 union shenanigans (#548)
This commit is contained in:
parent
6d3de7672c
commit
32fdc38925
29 changed files with 193 additions and 196 deletions
|
|
@ -1942,7 +1942,7 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat
|
|||
var_r31->unk2C = 25.0f;
|
||||
temp_f30 = 175.0f + frand8() * 0x50 * 0.003921569f;
|
||||
var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = temp_f30;
|
||||
var_r31->unk00_s16 = 0;
|
||||
var_r31->unk00 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1952,7 +1952,7 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat
|
|||
var_r31 = particle->unk_48;
|
||||
for (i = 0; i < particle->unk_30; i++, var_r31++) {
|
||||
if (var_r31->unk2C != 0.0f) {
|
||||
if (var_r31->unk00_s16 == 0) {
|
||||
if (var_r31->unk00 == 0) {
|
||||
VECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34);
|
||||
VECScale(&var_r31->unk08, &var_r31->unk08, 0.95f);
|
||||
var_r31->unk2C += 8.0f;
|
||||
|
|
@ -1963,7 +1963,7 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat
|
|||
var_r31->unk08.x = 6.0 * cosd(temp_f31);
|
||||
var_r31->unk08.y = -4.0f;
|
||||
var_r31->unk08.z = 6.0 * sind(temp_f31);
|
||||
var_r31->unk00_s16 = 1;
|
||||
var_r31->unk00 = 1;
|
||||
}
|
||||
var_r31->unk40.a = var_r31->unk14.y;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -911,7 +911,7 @@ static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix)
|
|||
var_r31->unk40.a = var_r28;
|
||||
if (var_r31->unk2C) {
|
||||
if (temp_r30[i].unk00 & 1) {
|
||||
var_r31->unk2C = var_r31->unk28 * (((var_r31->unk00_s16 + i) & 1) ? 1.0 : 0.5);
|
||||
var_r31->unk2C = var_r31->unk28 * (((var_r31->unk00 + i) & 1) ? 1.0 : 0.5);
|
||||
}
|
||||
else {
|
||||
var_r31->unk2C = var_r31->unk28;
|
||||
|
|
@ -921,7 +921,7 @@ static void UpdateEffect(ModelData *model, ParticleData *particle, Mtx matrix)
|
|||
var_r31->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
var_r31->unk00_s16++;
|
||||
var_r31->unk00++;
|
||||
}
|
||||
else {
|
||||
switch (var_r31->unk02) {
|
||||
|
|
@ -947,11 +947,11 @@ static void RotateEffect(HsfanimStruct01 *arg0)
|
|||
float var_f31;
|
||||
|
||||
temp_r30 = &Hu3DData[(s32)arg0->unk08.x];
|
||||
if (arg0->unk00_s16 < 8) {
|
||||
var_f31 = 0.3 + sind(40.0f + 10.0f * (arg0->unk00_s16 + 1));
|
||||
if (arg0->unk00 < 8) {
|
||||
var_f31 = 0.3 + sind(40.0f + 10.0f * (arg0->unk00 + 1));
|
||||
arg0->unk2C = 50.0f * var_f31 * temp_r30->scale.x;
|
||||
arg0->unk40.a = 0xFF;
|
||||
var_f31 = 0.3 + sind(15.0f * (arg0->unk00_s16 + 1));
|
||||
var_f31 = 0.3 + sind(15.0f * (arg0->unk00 + 1));
|
||||
}
|
||||
else {
|
||||
var_f31 = 0.3 + sind(135);
|
||||
|
|
@ -960,14 +960,14 @@ static void RotateEffect(HsfanimStruct01 *arg0)
|
|||
arg0->unk34.x = temp_r30->pos.x + arg0->unk14.x * var_f31;
|
||||
arg0->unk34.y = temp_r30->pos.y + arg0->unk08.y * temp_r30->scale.x + arg0->unk14.y * var_f31;
|
||||
arg0->unk34.z = temp_r30->pos.z + arg0->unk14.z * var_f31;
|
||||
if (arg0->unk00_s16 > 0x14) {
|
||||
if (arg0->unk00 > 0x14) {
|
||||
arg0->unk40.a -= 0x20;
|
||||
arg0->unk2C -= 8.0f * temp_r30->scale.x;
|
||||
if (arg0->unk2C < 0.0f) {
|
||||
arg0->unk2C = 0.0f;
|
||||
}
|
||||
}
|
||||
arg0->unk00_s16++;
|
||||
arg0->unk00++;
|
||||
}
|
||||
|
||||
static float voiceParam[16]
|
||||
|
|
@ -984,7 +984,7 @@ static void PlayEffectSound(HsfanimStruct01 *arg0)
|
|||
temp_r28 = arg0->unk08.x;
|
||||
temp_r29 = &charInstance[temp_r28];
|
||||
temp_r30 = &Hu3DData[temp_r29->unk00];
|
||||
if (arg0->unk00_s16 < 0x14 && arg0->unk2C < 40.0f * temp_r30->scale.x) {
|
||||
if (arg0->unk00 < 0x14 && arg0->unk2C < 40.0f * temp_r30->scale.x) {
|
||||
arg0->unk2C += 4.0f * temp_r30->scale.x;
|
||||
}
|
||||
arg0->unk40.a = 0xFF;
|
||||
|
|
@ -994,15 +994,15 @@ static void PlayEffectSound(HsfanimStruct01 *arg0)
|
|||
else {
|
||||
var_r25 = voiceParam[temp_r28 * 2 + 1];
|
||||
}
|
||||
temp_r26 = (arg0->unk00_s16 * 5) % 360;
|
||||
temp_r26 = (arg0->unk00 * 5) % 360;
|
||||
arg0->unk34.x = temp_r30->pos.x + 40.0 * sind(arg0->unk08.y + temp_r26) * temp_r30->scale.x;
|
||||
arg0->unk34.y = temp_r30->pos.y + var_r25 * temp_r30->scale.x;
|
||||
arg0->unk34.z = temp_r30->pos.z + 40.0 * cosd(arg0->unk08.y + temp_r26) * temp_r30->scale.x;
|
||||
arg0->unk00_s16++;
|
||||
if (arg0->unk00_s16 >= 0x8F) {
|
||||
arg0->unk00_s16 = 0x48;
|
||||
arg0->unk00++;
|
||||
if (arg0->unk00 >= 0x8F) {
|
||||
arg0->unk00 = 0x48;
|
||||
}
|
||||
if (temp_r29->unk04 != 0x15 && temp_r29->unk04 != 0x16 && temp_r29->unk04 != 0x79 && arg0->unk00_s16 > 0x1E) {
|
||||
if (temp_r29->unk04 != 0x15 && temp_r29->unk04 != 0x16 && temp_r29->unk04 != 0x79 && arg0->unk00 > 0x1E) {
|
||||
arg0->unk2C -= 4.0f * temp_r30->scale.x;
|
||||
if (arg0->unk2C < 0.0f) {
|
||||
arg0->unk2C = 0.0f;
|
||||
|
|
@ -1501,7 +1501,7 @@ static void OrbitEffect(HsfanimStruct01 *arg0)
|
|||
float var_f30;
|
||||
s16 temp_r30;
|
||||
|
||||
var_f30 = 20.0f + 3.75f * arg0->unk00_s16;
|
||||
var_f30 = 20.0f + 3.75f * arg0->unk00;
|
||||
if (var_f30 > 90.0f) {
|
||||
var_f30 = 90.0f;
|
||||
}
|
||||
|
|
@ -1514,7 +1514,7 @@ static void OrbitEffect(HsfanimStruct01 *arg0)
|
|||
if (arg0->unk20 < 1.0f) {
|
||||
arg0->unk20 = 1.0f;
|
||||
}
|
||||
if (arg0->unk00_s16 > 8) {
|
||||
if (arg0->unk00 > 8) {
|
||||
temp_r30 = arg0->unk40.a;
|
||||
temp_r30 -= 8;
|
||||
if (temp_r30 < 0) {
|
||||
|
|
@ -1525,7 +1525,7 @@ static void OrbitEffect(HsfanimStruct01 *arg0)
|
|||
arg0->unk40.a = temp_r30;
|
||||
}
|
||||
}
|
||||
arg0->unk00_s16++;
|
||||
arg0->unk00++;
|
||||
}
|
||||
|
||||
static EffectParamData coinParticleParam
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) {
|
|||
Hu3DTexAnimDataStruct *var_r31;
|
||||
HsfAttribute *var_r29;
|
||||
HsfData *temp_r27;
|
||||
HsfanimStruct01 *var_r30;
|
||||
HsfdrawStruct01 *var_r30;
|
||||
s16 i;
|
||||
s16 var_r25;
|
||||
s16 var_r28;
|
||||
|
|
@ -75,7 +75,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) {
|
|||
for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) {
|
||||
if (strcmp(arg2, var_r29->bitmap->name) == 0) {
|
||||
if (!var_r29->unk04) {
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg1].unk_48);
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), (u32) Hu3DData[arg1].unk_48);
|
||||
var_r29->unk04 = var_r30;
|
||||
var_r30->unk00 = 0;
|
||||
} else {
|
||||
|
|
@ -84,7 +84,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) {
|
|||
var_r30->unk00 |= 1;
|
||||
var_r30->unk02 = var_r28;
|
||||
var_r30->unk2C = var_r30->unk30 = 1.0f;
|
||||
var_r30->unk34.x = var_r30->unk34.y = 0.0f;
|
||||
var_r30->unk34 = var_r30->unk38 = 0.0f;
|
||||
var_r25++;
|
||||
}
|
||||
}
|
||||
|
|
@ -112,7 +112,7 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) {
|
|||
AnimData *temp_r4;
|
||||
HsfAttribute *var_r29;
|
||||
HsfData *temp_r27;
|
||||
HsfanimStruct01 *var_r30;
|
||||
HsfdrawStruct01 *var_r30;
|
||||
s16 var_r28;
|
||||
s16 i;
|
||||
s16 var_r25;
|
||||
|
|
@ -132,14 +132,14 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) {
|
|||
for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) {
|
||||
if (strcmp(arg2, var_r29->bitmap->name) == 0) {
|
||||
if (!var_r29->unk04) {
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg1].unk_48);
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), (u32) Hu3DData[arg1].unk_48);
|
||||
var_r29->unk04 = var_r30;
|
||||
} else {
|
||||
var_r30 = var_r29->unk04;
|
||||
}
|
||||
var_r30->unk02 = var_r28;
|
||||
var_r30->unk2C = var_r30->unk30 = 1.0f;
|
||||
var_r30->unk34.x = var_r30->unk34.y = 0.0f;
|
||||
var_r30->unk34 = var_r30->unk38 = 0.0f;
|
||||
var_r25++;
|
||||
}
|
||||
}
|
||||
|
|
@ -162,7 +162,7 @@ void Hu3DAnimKill(s16 arg0) {
|
|||
Hu3DTexAnimDataStruct *temp_r31 = &Hu3DTexAnimData[arg0];
|
||||
HsfData *temp_r28 = Hu3DData[temp_r31->unk06].hsfData;
|
||||
HsfAttribute *var_r30;
|
||||
HsfanimStruct01 *temp_r29;
|
||||
HsfdrawStruct01 *temp_r29;
|
||||
s16 i;
|
||||
|
||||
if (temp_r28) {
|
||||
|
|
@ -242,7 +242,7 @@ void Hu3DAnmNoSet(s16 arg0, u16 arg1) {
|
|||
}
|
||||
|
||||
s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2) {
|
||||
HsfanimStruct01 *temp_r30;
|
||||
HsfdrawStruct01 *temp_r30;
|
||||
Hu3DTexAnimDataStruct *temp_r29;
|
||||
AnimData *temp_r27;
|
||||
AnimBmpData *temp_r28;
|
||||
|
|
@ -268,8 +268,8 @@ s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2) {
|
|||
(arg0->attr & HU3D_ATTR_TEX_NEAR) ? GX_NEAR : GX_LINEAR);
|
||||
temp_r30->unk2C = (float) temp_r31->sizeX / temp_r28->sizeX;
|
||||
temp_r30->unk30 = (float) temp_r31->sizeY / temp_r28->sizeY;
|
||||
temp_r30->unk34.x = (float) temp_r31->startX / temp_r28->sizeX;
|
||||
temp_r30->unk34.y = (float) temp_r31->startY / temp_r28->sizeY;
|
||||
temp_r30->unk34 = (float) temp_r31->startX / temp_r28->sizeX;
|
||||
temp_r30->unk38 = (float) temp_r31->startY / temp_r28->sizeY;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -359,7 +359,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) {
|
|||
Hu3DTexScrDataStruct *var_r31;
|
||||
HsfData *temp_r27;
|
||||
HsfAttribute *var_r29;
|
||||
HsfanimStruct01 *var_r30;
|
||||
HsfdrawStruct01 *var_r30;
|
||||
s16 i;
|
||||
s16 var_r25;
|
||||
s16 var_r28;
|
||||
|
|
@ -379,7 +379,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) {
|
|||
for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) {
|
||||
if (strcmp(arg1, var_r29->bitmap->name) == 0) {
|
||||
if (!var_r29->unk04) {
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg0].unk_48);
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(*var_r30), (u32) Hu3DData[arg0].unk_48);
|
||||
var_r29->unk04 = var_r30;
|
||||
var_r30->unk00 = 0;
|
||||
} else {
|
||||
|
|
@ -388,7 +388,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) {
|
|||
var_r30->unk00 |= 2;
|
||||
var_r30->unk04 = var_r28;
|
||||
var_r30->unk2C = var_r30->unk30 = 1.0f;
|
||||
var_r30->unk34.x = var_r30->unk34.y = 0.0f;
|
||||
var_r30->unk34 = var_r30->unk38 = 0.0f;
|
||||
var_r25++;
|
||||
}
|
||||
}
|
||||
|
|
@ -408,7 +408,7 @@ void Hu3DTexScrollKill(s16 arg0) {
|
|||
Hu3DTexScrDataStruct *temp_r28 = &Hu3DTexScrData[arg0];
|
||||
HsfData *temp_r29 = Hu3DData[temp_r28->unk02].hsfData;
|
||||
HsfAttribute *var_r31;
|
||||
HsfanimStruct01 *temp_r30;
|
||||
HsfdrawStruct01 *temp_r30;
|
||||
s16 i;
|
||||
|
||||
if (temp_r29) {
|
||||
|
|
@ -1241,7 +1241,7 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) {
|
|||
var_r29->unk2C = var_r29->unk28;
|
||||
}
|
||||
if (!(temp_r28->unk02 & 0x80)) {
|
||||
sp8 = var_r29->unk00_s16;
|
||||
sp8 = var_r29->unk00;
|
||||
var_r29->unk34.x += var_r29->unk08.x + var_r29->unk14.x;
|
||||
var_r29->unk34.y += var_r29->unk08.y + var_r29->unk14.y;
|
||||
var_r29->unk34.z += var_r29->unk08.z + var_r29->unk14.z;
|
||||
|
|
@ -1261,7 +1261,7 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) {
|
|||
}
|
||||
}
|
||||
var_r29->unk28 *= temp_r26->unk28;
|
||||
var_f30 = (float) var_r29->unk00_s16 / temp_r26->unk00;
|
||||
var_f30 = (float) var_r29->unk00 / temp_r26->unk00;
|
||||
if (var_f30 > 1.0f) {
|
||||
var_f30 = 1.0f;
|
||||
}
|
||||
|
|
@ -1272,10 +1272,10 @@ static void ParManHook(ModelData *model, ParticleData *particle, Mtx matrix) {
|
|||
var_r29->unk40.g = temp_r27->g + var_f30 * (temp_r24->g - temp_r27->g);
|
||||
var_r29->unk40.b = temp_r27->b + var_f30 * (temp_r24->b - temp_r27->b);
|
||||
var_r29->unk40.a = temp_r27->a + var_f30 * (temp_r24->a - temp_r27->a);
|
||||
if (var_r29->unk2C < 0.01 || var_r29->unk00_s16 >= temp_r26->unk00) {
|
||||
if (var_r29->unk2C < 0.01 || var_r29->unk00 >= temp_r26->unk00) {
|
||||
var_r29->unk2C = 0.0f;
|
||||
}
|
||||
var_r29->unk00_s16++;
|
||||
var_r29->unk00++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue