continued work on fire.c
This commit is contained in:
parent
d0b4bbe122
commit
d502bc0a4d
3 changed files with 423 additions and 52 deletions
|
|
@ -2,6 +2,7 @@
|
|||
#define M438DLL_H
|
||||
|
||||
#include "game/animdata.h"
|
||||
#include "game/hsfformat.h"
|
||||
#include "game/object.h"
|
||||
|
||||
typedef struct M438MainWork4 {
|
||||
|
|
@ -18,8 +19,17 @@ typedef struct M438MainWork4 {
|
|||
} M438MainWork4; /* size = 0x4C */
|
||||
|
||||
typedef struct M438UnkSubStruct {
|
||||
s32 unk_00;
|
||||
char unk01[0x20];
|
||||
s8 unk_00;
|
||||
s8 unk_01;
|
||||
char unk02[0x2];
|
||||
void* unk_04; // temp
|
||||
f32 unk_08;
|
||||
char unk0C[0x4];
|
||||
f32 unk_10;
|
||||
char unk14[0x4];
|
||||
f32 unk_18;
|
||||
char unk1C[0x4];
|
||||
f32 unk_20;
|
||||
u8 unk_24;
|
||||
float unk_28;
|
||||
float unk_2C;
|
||||
|
|
@ -48,11 +58,30 @@ typedef struct M438UnkStruct {
|
|||
char unk5D[0x3];
|
||||
Vec unk_60;
|
||||
Vec unk_6C;
|
||||
s16 unk_78;
|
||||
s16 unk_7A;
|
||||
char unk7C[0x1C];
|
||||
s16 unk_78[0x10];
|
||||
} M438UnkStruct; /* size = 0x98 */
|
||||
|
||||
typedef struct M438FireStruct {
|
||||
Vec unk0;
|
||||
Vec unkC;
|
||||
Vec unk18;
|
||||
Vec unk24;
|
||||
} M438FireStruct; // sizeof 0x30
|
||||
|
||||
typedef struct M438FireStruct2 {
|
||||
GXColor unk0;
|
||||
GXColor unk4;
|
||||
GXColor unk8;
|
||||
GXColor unkC;
|
||||
} M438FireStruct2; // sizeof 0x10
|
||||
|
||||
typedef struct M438FireStruct3 {
|
||||
HsfVector2f unk0;
|
||||
HsfVector2f unk8;
|
||||
HsfVector2f unk10;
|
||||
HsfVector2f unk18;
|
||||
} M438FireStruct3; // sizeof 0x20
|
||||
|
||||
typedef struct M438UnkStruct2 {
|
||||
s16 unk_00;
|
||||
s16 unk_02;
|
||||
|
|
@ -62,30 +91,52 @@ typedef struct M438UnkStruct2 {
|
|||
Vec unk_18;
|
||||
Vec unk_24;
|
||||
void (*unk_30)(struct M438UnkStruct2*);
|
||||
s16 unk_34[4];
|
||||
s16* unk_34;
|
||||
char unk_38[0x4];
|
||||
M438UnkStruct *unk_3C;
|
||||
char unk40[0x20];
|
||||
char unk40[0x8];
|
||||
s16 unk_48;
|
||||
void* unk_4C;
|
||||
Vec* unk_50;
|
||||
GXColor* unk_54;
|
||||
Vec* unk_58;
|
||||
M438UnkSubStruct* unk_5C;
|
||||
u8 unk_60;
|
||||
char unk61[0x3];
|
||||
char unk64[0x18];
|
||||
s16 unk_7C;
|
||||
s16 unk_7E;
|
||||
float unk_80;
|
||||
float unk_84;
|
||||
float unk_88;
|
||||
float unk_8C;
|
||||
float unk_90;
|
||||
char unk94[0x28];
|
||||
Vec unk_64;
|
||||
Vec unk_70;
|
||||
union {
|
||||
s16 unk_7Ca[0x20];
|
||||
struct {
|
||||
s16 unk_7C;
|
||||
s16 unk_7E;
|
||||
float unk_80;
|
||||
float unk_84;
|
||||
float unk_88;
|
||||
float unk_8C;
|
||||
float unk_90;
|
||||
char unk94[0x28];
|
||||
};
|
||||
};
|
||||
} M438UnkStruct2; /* size = 0xBC */
|
||||
|
||||
typedef struct M438UnkStruct3 {
|
||||
AnimData* unk_00;
|
||||
s16 unk_04;
|
||||
s16 unk_06;
|
||||
s32 unk_08;
|
||||
u32 unk_08;
|
||||
Vec unk_0C;
|
||||
Mtx unk_18;
|
||||
char unk48[0x1C];
|
||||
GXColor unk_48;
|
||||
u8 unk_4C;
|
||||
u8 unk_4D;
|
||||
s16 unk_4E;
|
||||
s16 unk_50;
|
||||
char unk52[0x2];
|
||||
f32 unk_54;
|
||||
f32 unk_58;
|
||||
f32 unk_5C;
|
||||
f32 unk_60;
|
||||
} M438UnkStruct3; /* size = 0x64 */
|
||||
|
||||
typedef struct M438StructBssDE4 {
|
||||
|
|
@ -110,9 +161,9 @@ float fn_1_E488(float arg8, float arg9, float argA);
|
|||
float fn_1_E5A4(float arg8, float arg9);
|
||||
|
||||
void fn_1_E658(s16 arg0, s16 arg1);
|
||||
s16 fn_1_10258(s32 arg0, s32 arg1);
|
||||
s16 fn_1_10258(u8 arg0, u8 arg1);
|
||||
void fn_1_107BC(s16 arg0);
|
||||
void fn_1_108E4(s16 arg0, s32 arg1, s32 arg2);
|
||||
void fn_1_108E4(s16 arg0, s16 arg1, u8 arg2);
|
||||
s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2);
|
||||
s8 fn_1_11018(s16 arg0, u8 arg1, u32 arg2);
|
||||
void fn_1_11658(void);
|
||||
|
|
|
|||
|
|
@ -4,31 +4,12 @@
|
|||
|
||||
extern u8 texMtxTbl;
|
||||
|
||||
typedef struct M438FireStruct {
|
||||
Vec unk0;
|
||||
Vec unkC;
|
||||
Vec unk18;
|
||||
Vec unk24;
|
||||
} M438FireStruct;
|
||||
|
||||
typedef struct M438FireStruct2 {
|
||||
GXColor unk0;
|
||||
GXColor unk4;
|
||||
GXColor unk8;
|
||||
GXColor unkC;
|
||||
} M438FireStruct2;
|
||||
|
||||
typedef struct M438FireStruct3 {
|
||||
HsfVector2f unk0;
|
||||
HsfVector2f unk8;
|
||||
HsfVector2f unk10;
|
||||
HsfVector2f unk18;
|
||||
} M438FireStruct3;
|
||||
|
||||
// PROTO
|
||||
void fn_1_E790(M438UnkStruct2*);
|
||||
void fn_1_F538(ModelData*, Mtx);
|
||||
void fn_1_FAB8(M438UnkStruct*);
|
||||
void fn_1_FD40(M438UnkStruct2*);
|
||||
void fn_1_10F0C(s16);
|
||||
|
||||
void fn_1_E658(s16 arg0, s16 arg1) {
|
||||
M438UnkStruct2* var_r29;
|
||||
|
|
@ -223,3 +204,342 @@ void fn_1_FAB8(M438UnkStruct* arg0) {
|
|||
}
|
||||
arg0->unk_3C = GXEndDisplayList();
|
||||
}
|
||||
|
||||
void fn_1_FD40(M438UnkStruct2* arg0) {
|
||||
M438UnkStruct* var_r28;
|
||||
M438UnkStruct3* temp_r30;
|
||||
M438UnkSubStruct* var_r31;
|
||||
s32 temp_r0;
|
||||
s32 var_r25;
|
||||
s32 var_r26;
|
||||
s32 var_r27;
|
||||
|
||||
var_r27 = 0;
|
||||
|
||||
var_r28 = arg0->unk_3C;
|
||||
for (var_r25 = 0; var_r25 < arg0->unk_02; var_r25++, var_r28++) {
|
||||
if ((var_r28->unk_38 & 4) != 0) {
|
||||
var_r27++;
|
||||
} else {
|
||||
var_r31 = var_r28->unk_58;
|
||||
for (var_r26 = 0; var_r26 < var_r28->unk_34; var_r26++, var_r31++) {
|
||||
temp_r30 = &lbl_1_bss_DE4.unk_3C[arg0->unk_34[var_r26]];
|
||||
var_r31->unk_24 &= ~4;
|
||||
switch (var_r31->unk_24 & 0xF) {
|
||||
case 1:
|
||||
var_r31->unk_2C += var_r31->unk_28;
|
||||
if (var_r31->unk_2C >= 1.0f) {
|
||||
var_r31->unk_00++;
|
||||
var_r31->unk_2C -= 1.0f;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
var_r31->unk_2C += var_r31->unk_28;
|
||||
if (var_r31->unk_2C >= 1.0f) {
|
||||
var_r31->unk_00 -= 1;
|
||||
var_r31->unk_2C -= 1.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (var_r31->unk_00 >= temp_r30->unk_4C) {
|
||||
if ((var_r31->unk_24 & 0x10) != 0) {
|
||||
var_r31->unk_24 |= 8;
|
||||
var_r31->unk_00 -= 1;
|
||||
} else if ((var_r31->unk_24 & 0x40) != 0) {
|
||||
var_r31->unk_24 = (var_r31->unk_24 & 0xF0) | 2;
|
||||
var_r31->unk_00 -= 2;
|
||||
} else if ((var_r31->unk_24 & 0x20) != 0) {
|
||||
var_r31->unk_00 = 0;
|
||||
}
|
||||
var_r31->unk_24 |= 4;
|
||||
} else if (var_r31->unk_00 < 0) {
|
||||
if ((var_r31->unk_24 & 0x10) != 0) {
|
||||
var_r31->unk_24 |= 8;
|
||||
var_r31->unk_00 = 0;
|
||||
} else if ((var_r31->unk_24 & 0x20) != 0) {
|
||||
if ((var_r31->unk_24 & 0x40) != 0) {
|
||||
var_r31->unk_24 = (var_r31->unk_24 & 0xF0) | 1;
|
||||
var_r31->unk_00 = 1;
|
||||
} else {
|
||||
var_r31->unk_00 = temp_r30->unk_4C - 1;
|
||||
}
|
||||
} else if ((var_r31->unk_24 & 0x40) != 0) {
|
||||
var_r31->unk_24 |= 8;
|
||||
var_r31->unk_00 = 0;
|
||||
}
|
||||
var_r31->unk_24 |= 4;
|
||||
} else {
|
||||
var_r31->unk_24 &= ~8;
|
||||
}
|
||||
if (var_r31->unk_00 != var_r31->unk_01) {
|
||||
var_r31->unk_08 = (var_r31->unk_00 * temp_r30->unk_58);
|
||||
var_r31->unk_10 = (var_r31->unk_00 * temp_r30->unk_58);
|
||||
var_r31->unk_18 = ((var_r31->unk_00 + 1) * temp_r30->unk_58);
|
||||
var_r31->unk_20 = ((var_r31->unk_00 + 1) * temp_r30->unk_58);
|
||||
if ((var_r31->unk_00 + 1) < temp_r30->unk_4C) {
|
||||
var_r31->unk_18 -= temp_r30->unk_60;
|
||||
var_r31->unk_20 -= temp_r30->unk_60;
|
||||
}
|
||||
var_r31->unk_01 = var_r31->unk_00;
|
||||
DCFlushRangeNoSync(&var_r31->unk_04, 0x20);
|
||||
}
|
||||
if ((var_r31->unk_24 & 8) != 0) {
|
||||
if ((var_r28->unk_38 & 0x40000000) != 0) {
|
||||
var_r28->unk_38 |= 4;
|
||||
if ((var_r31->unk_24 & 0x40) == 0) {
|
||||
if (var_r31->unk_00 <= 0) {
|
||||
var_r31->unk_00 = temp_r30->unk_4C;
|
||||
} else {
|
||||
var_r31->unk_00 = 0;
|
||||
}
|
||||
}
|
||||
} else if ((var_r28->unk_38 & 0x80000000) != 0) {
|
||||
fn_1_107BC(arg0->unk_00);
|
||||
}
|
||||
var_r27++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (var_r27 >= arg0->unk_02) {
|
||||
if ((arg0->unk_08 & 0x40000000) != 0) {
|
||||
arg0->unk_08 |= 4;
|
||||
} else if ((arg0->unk_08 & 0x80000000) != 0) {
|
||||
fn_1_107BC(arg0->unk_00);
|
||||
}
|
||||
}
|
||||
PPCSync();
|
||||
}
|
||||
|
||||
s16 fn_1_10258(u8 arg0, u8 arg1) {
|
||||
M438UnkStruct* var_r30;
|
||||
M438UnkStruct2* var_r31;
|
||||
s32 var_r29;
|
||||
s32 var_r28;
|
||||
void* temp_r25;
|
||||
|
||||
var_r31 = &lbl_1_bss_DE4.unk_40[1];
|
||||
|
||||
for (var_r29 = 1; var_r29 < lbl_1_bss_DE4.unk_30; var_r29++, var_r31++) {
|
||||
if (var_r31->unk_08 == 0) break;
|
||||
}
|
||||
if (var_r29 == lbl_1_bss_DE4.unk_30) {
|
||||
OSReport("OVER BILL\n");
|
||||
return 0;
|
||||
}
|
||||
var_r31->unk_00 = var_r29;
|
||||
var_r31->unk_08 = 1;
|
||||
var_r31->unk_30 = NULL;
|
||||
var_r31->unk_02 = arg0;
|
||||
var_r31->unk_04 = arg1;
|
||||
var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x98, 0x10000000);
|
||||
var_r31->unk_3C = var_r30;
|
||||
var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, 0x10000000);
|
||||
var_r31->unk_48 = 0;
|
||||
var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 << 8, 0x10000000);
|
||||
var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x30, 0x10000000);
|
||||
var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x10, 0x10000000);
|
||||
var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0xC, 0x10000000);
|
||||
var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * 0x30), 0x10000000);
|
||||
DCFlushRangeNoSync(var_r31->unk_4C, arg0 << 8);
|
||||
var_r31->unk_0C.x = var_r31->unk_0C.y = var_r31->unk_0C.z = 0.0f;
|
||||
var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f;
|
||||
var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 1.0f;
|
||||
var_r31->unk_70.x = var_r31->unk_70.y = var_r31->unk_70.z = 0.0f;
|
||||
var_r31->unk_64.x = var_r31->unk_64.y = var_r31->unk_64.z = 0.0f;
|
||||
var_r31->unk_60 = 0;
|
||||
|
||||
for (var_r29 = 0; var_r29 < 0x20; var_r29++) {
|
||||
var_r31->unk_7Ca[var_r29] = 0;
|
||||
}
|
||||
|
||||
for (var_r29 = 0; var_r29 < arg1; var_r29++) {
|
||||
var_r31->unk_34[var_r29] = 0;
|
||||
}
|
||||
|
||||
for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r30++) {
|
||||
var_r30->unk_38 = 1;
|
||||
var_r30->unk_34 = arg1;
|
||||
var_r30->unk_30 = 0;
|
||||
var_r30->unk_31 = 2;
|
||||
var_r30->unk_32 = 0;
|
||||
var_r30->unk_33 = 0;
|
||||
var_r30->unk_50.r = var_r30->unk_50.g = var_r30->unk_50.b = 0;
|
||||
var_r30->unk_50.a = 0xFF;
|
||||
var_r30->unk_54.r = var_r30->unk_54.g = var_r30->unk_54.b = 0xFF;
|
||||
var_r30->unk_54.a = 0xFF;
|
||||
var_r30->unk_58 = &var_r31->unk_5C[var_r29 * arg1];
|
||||
|
||||
for (var_r28 = 0; var_r28 < arg1; var_r28++) {
|
||||
var_r30->unk_58[var_r28].unk_00 = var_r30->unk_58[var_r28].unk_01 = 0;
|
||||
var_r30->unk_58[var_r28].unk_28 = 1.0f;
|
||||
var_r30->unk_58[var_r28].unk_2C = 0.0f;
|
||||
}
|
||||
var_r30->unk_00.x = var_r30->unk_00.y = var_r30->unk_00.z = 0.0f;
|
||||
var_r30->unk_0C.x = var_r30->unk_0C.y = var_r30->unk_0C.z = 0.0f;
|
||||
var_r30->unk_18.x = var_r30->unk_18.y = var_r30->unk_18.z = 1.0f;
|
||||
var_r30->unk_6C.x = var_r30->unk_6C.y = var_r30->unk_6C.z = 0.0f;
|
||||
var_r30->unk_24.x = var_r30->unk_24.y = var_r30->unk_24.z = 0.0f;
|
||||
var_r30->unk_60.x = var_r30->unk_60.y = var_r30->unk_60.z = 0.0f;
|
||||
var_r30->unk_5C = 0;
|
||||
|
||||
for (var_r28 = 0; var_r28 < 0x10; var_r28++) {
|
||||
var_r30->unk_78[var_r28] = 0;
|
||||
}
|
||||
var_r30->unk_44 = &var_r31->unk_50[var_r29 * 4];
|
||||
var_r30->unk_48 = &var_r31->unk_54[var_r29 * 4];
|
||||
var_r30->unk_4C = &var_r31->unk_58[var_r29];
|
||||
var_r30->unk_40 = ((char*)var_r31->unk_4C) + var_r31->unk_48;
|
||||
fn_1_FAB8(var_r30);
|
||||
var_r31->unk_48 += var_r30->unk_3C;
|
||||
}
|
||||
temp_r25 = var_r31->unk_4C;
|
||||
var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, 0x10000000);
|
||||
memcpy(var_r31->unk_4C, temp_r25, var_r31->unk_48);
|
||||
HuMemDirectFree(temp_r25);
|
||||
DCFlushRangeNoSync(var_r31->unk_50, arg0 * 0x30);
|
||||
DCFlushRangeNoSync(var_r31->unk_54, arg0 * 0x10);
|
||||
DCFlushRangeNoSync(var_r31->unk_58, arg0 * 0xC);
|
||||
DCFlushRangeNoSync(var_r31->unk_4C, var_r31->unk_48);
|
||||
var_r30 = var_r31->unk_3C;
|
||||
var_r31->unk_48 = 0;
|
||||
|
||||
for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r30++) {
|
||||
var_r30->unk_40 = ((char*)var_r31->unk_4C) + var_r31->unk_48;
|
||||
var_r31->unk_48 += var_r30->unk_3C;
|
||||
}
|
||||
lbl_1_bss_DE4.unk_36 = var_r31->unk_00;
|
||||
lbl_1_bss_DE4.unk_38 = 0;
|
||||
lbl_1_bss_DE4.unk_3A = 0;
|
||||
PPCSync();
|
||||
return var_r31->unk_00;
|
||||
}
|
||||
|
||||
void fn_1_107BC(s16 arg0) {
|
||||
M438UnkStruct2* temp_r31;
|
||||
s32 var_r30;
|
||||
|
||||
if (arg0 != 0) {
|
||||
temp_r31 = &lbl_1_bss_DE4.unk_40[arg0];
|
||||
if ((u32) temp_r31->unk_08 != 0) {
|
||||
if (temp_r31->unk_50 != NULL) {
|
||||
HuMemDirectFree(temp_r31->unk_50);
|
||||
}
|
||||
if (temp_r31->unk_54 != NULL) {
|
||||
HuMemDirectFree(temp_r31->unk_54);
|
||||
}
|
||||
if (temp_r31->unk_58 != NULL) {
|
||||
HuMemDirectFree(temp_r31->unk_58);
|
||||
}
|
||||
if (temp_r31->unk_4C != NULL) {
|
||||
HuMemDirectFree(temp_r31->unk_4C);
|
||||
}
|
||||
if (temp_r31->unk_5C != NULL) {
|
||||
HuMemDirectFree(temp_r31->unk_5C);
|
||||
}
|
||||
|
||||
for (var_r30 = 0; var_r30 < temp_r31->unk_04; var_r30++) {
|
||||
fn_1_10F0C(temp_r31->unk_34[var_r30]);
|
||||
}
|
||||
HuMemDirectFree(temp_r31->unk_3C);
|
||||
HuMemDirectFree(temp_r31->unk_34);
|
||||
temp_r31->unk_08 = 0;
|
||||
temp_r31->unk_00 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_108E4(s16 arg0, s16 arg1, u8 arg2) {
|
||||
lbl_1_bss_DE4.unk_36 = arg0;
|
||||
lbl_1_bss_DE4.unk_38 = arg1;
|
||||
lbl_1_bss_DE4.unk_3A = arg2;
|
||||
}
|
||||
|
||||
#include "game/sprite.h"
|
||||
|
||||
s16 fn_1_10910(u32 arg0, s16 arg1, s16 arg2) {
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
AnimData* var_r30;
|
||||
M438UnkStruct3* var_r31;
|
||||
s32 var_r29;
|
||||
|
||||
var_r31 = &lbl_1_bss_DE4.unk_3C[1];
|
||||
for (var_r29 = 1; var_r29 < lbl_1_bss_DE4.unk_32; var_r29++, var_r31++) {
|
||||
if ((var_r31->unk_06 != 0) && (var_r31->unk_08 == arg0)) break;
|
||||
}
|
||||
if (var_r29 < lbl_1_bss_DE4.unk_32) {
|
||||
var_r31->unk_06++;
|
||||
return var_r29;
|
||||
}
|
||||
|
||||
var_r31 = &lbl_1_bss_DE4.unk_3C[1];
|
||||
for (var_r29 = 1; var_r29 < lbl_1_bss_DE4.unk_32; var_r29++, var_r31++) {
|
||||
if (var_r31->unk_06 == 0) break;
|
||||
}
|
||||
var_r31->unk_08 = arg0;
|
||||
var_r31->unk_06 = 1;
|
||||
if (((arg0 & 0xFFFF0000) + 0x10000) == 0) {
|
||||
var_r30 = HuSprAnimMake(arg1, arg2, 2);
|
||||
var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), 0x10000000);
|
||||
arg1 = arg2 = 0;
|
||||
} else {
|
||||
var_r30 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000));
|
||||
}
|
||||
if ((arg1 == 0) || (arg2 == 0)) {
|
||||
arg1 = var_r30->bmp->sizeX;
|
||||
arg2 = var_r30->bmp->sizeY;
|
||||
var_f31 = var_f30 = 1.0f;
|
||||
} else {
|
||||
var_f31 = arg1 / (f32)var_r30->bmp->sizeX;
|
||||
var_f30 = arg2 / (f32)var_r30->bmp->sizeY;
|
||||
}
|
||||
var_r31->unk_00 = var_r30;
|
||||
var_r31->unk_4E = arg1;
|
||||
var_r31->unk_50 = arg2;
|
||||
var_r31->unk_54 = var_f31;
|
||||
var_r31->unk_58 = var_f30;
|
||||
var_r31->unk_5C = 1.0f / var_r30->bmp->sizeX;
|
||||
var_r31->unk_60 = 1.0f / var_r30->bmp->sizeY;
|
||||
var_r31->unk_04 = 0;
|
||||
var_r31->unk_4C = var_r30->bmp->sizeY / arg2;
|
||||
if (var_r31->unk_4C < 1) {
|
||||
var_r31->unk_4C = 1;
|
||||
}
|
||||
var_r31->unk_4D = 0;
|
||||
if ((arg1 > var_r30->bmp->sizeX) || (arg2 > var_r30->bmp->sizeY)) {
|
||||
var_r31->unk_4D = 1;
|
||||
}
|
||||
var_r31->unk_48.r = var_r31->unk_48.g = var_r31->unk_48.b = 0xFF;
|
||||
var_r31->unk_48.a = 0xFF;
|
||||
PSMTXIdentity(var_r31->unk_18);
|
||||
var_r31->unk_0C.x = var_r31->unk_0C.y = var_r31->unk_0C.z = 0.0f;
|
||||
return var_r29;
|
||||
}
|
||||
|
||||
void fn_1_10CB8(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) {
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
M438UnkStruct3* temp_r31;
|
||||
AnimData* temp_r30;
|
||||
|
||||
temp_r31 = &lbl_1_bss_DE4.unk_3C[arg0];
|
||||
HuSprAnimKill(temp_r31->unk_00);
|
||||
temp_r31->unk_08 |= 0xFFFF0000;
|
||||
temp_r30 = HuSprAnimMake(arg2, arg3, arg1);
|
||||
temp_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 * (temp_r30->bmp->pixSize * arg2), 0x10000000U);
|
||||
var_f31 = arg4 / (f32) temp_r30->bmp->sizeX;
|
||||
var_f30 = arg5 / (f32) temp_r30->bmp->sizeY;
|
||||
temp_r31->unk_00 = temp_r30;
|
||||
temp_r31->unk_4E = arg2;
|
||||
temp_r31->unk_50 = arg3;
|
||||
temp_r31->unk_54 = var_f31;
|
||||
temp_r31->unk_58 = var_f30;
|
||||
temp_r31->unk_5C = 1.0f / (f32) temp_r30->bmp->sizeX;
|
||||
temp_r31->unk_60 = 1.0f / (f32) temp_r30->bmp->sizeY;
|
||||
temp_r31->unk_04 = 0;
|
||||
temp_r31->unk_4C = temp_r30->bmp->sizeY / arg5;
|
||||
temp_r31->unk_4D = 0;
|
||||
temp_r31->unk_48.r = temp_r31->unk_48.g = temp_r31->unk_48.b = 0xFF;
|
||||
temp_r31->unk_48.a = 0xFF;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1920,10 +1920,10 @@ void fn_1_63B0(M438UnkStruct2 *arg0)
|
|||
var_r31->unk_60.x = var_r31->unk_60.z = temp_f30;
|
||||
}
|
||||
var_r31->unk_58->unk_24 = 0;
|
||||
var_r31->unk_78 = (s32)((60.0f * ((1.0f / 65536.0f) * fn_1_7DB4()))) + 1;
|
||||
var_r31->unk_78[0] = (s32)((60.0f * ((1.0f / 65536.0f) * fn_1_7DB4()))) + 1;
|
||||
var_r31->unk_5C++;
|
||||
case 1:
|
||||
if (--var_r31->unk_78 == 0) {
|
||||
if (--var_r31->unk_78[0] == 0) {
|
||||
var_r31->unk_58->unk_24 = 0x11U;
|
||||
var_r31->unk_58->unk_28 = 0.5f;
|
||||
var_r31->unk_58->unk_2C = 0.0f;
|
||||
|
|
@ -1968,7 +1968,7 @@ void fn_1_6A3C(M438UnkStruct2 *arg0)
|
|||
var_r28 = 0;
|
||||
|
||||
for (var_r27 = 0; var_r27 < arg0->unk_02; var_r27++, var_r31++) {
|
||||
if ((arg0->unk_7C != 0) && (var_r31->unk_7A == 0)) {
|
||||
if ((arg0->unk_7C != 0) && (var_r31->unk_78[1] == 0)) {
|
||||
var_r31->unk_5C = 0;
|
||||
}
|
||||
switch (var_r31->unk_5C) {
|
||||
|
|
@ -1985,8 +1985,8 @@ void fn_1_6A3C(M438UnkStruct2 *arg0)
|
|||
var_r31->unk_6C.x = 100.0f * (0.1f * sp8.x);
|
||||
var_r31->unk_6C.y = sp8.y + (2.5f * ((1.0f / 65536.0f) * fn_1_7DB4()));
|
||||
var_r31->unk_6C.z = 100.0f * (0.1f * sp8.z);
|
||||
var_r31->unk_78 = (s32)(24.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 1;
|
||||
var_r31->unk_7A = 1;
|
||||
var_r31->unk_78[0] = (s32)(24.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 1;
|
||||
var_r31->unk_78[1] = 1;
|
||||
}
|
||||
else {
|
||||
temp_f30 = (180.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) - 90.0f;
|
||||
|
|
@ -2000,8 +2000,8 @@ void fn_1_6A3C(M438UnkStruct2 *arg0)
|
|||
var_r31->unk_6C.x = (100.0 * (0.015 * sp8.x));
|
||||
var_r31->unk_6C.y = sp8.y + ((1.0f / 65536.0f) * fn_1_7DB4());
|
||||
var_r31->unk_6C.z = 100.0f * (0.015f * sp8.z);
|
||||
var_r31->unk_78 = (s32)(60.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 1;
|
||||
var_r31->unk_7A = 0;
|
||||
var_r31->unk_78[0] = (s32)(60.0f * ((1.0f / 65536.0f) * fn_1_7DB4())) + 1;
|
||||
var_r31->unk_78[1] = 0;
|
||||
}
|
||||
var_r31->unk_38 &= ~4;
|
||||
if ((fn_1_7DB4() & 0xF) != 0) {
|
||||
|
|
@ -2040,12 +2040,12 @@ void fn_1_6A3C(M438UnkStruct2 *arg0)
|
|||
var_r31->unk_5C++;
|
||||
break;
|
||||
case 1:
|
||||
if (var_r31->unk_7A != 0) {
|
||||
if (var_r31->unk_78[1] != 0) {
|
||||
var_r31->unk_6C.y -= 0.5f;
|
||||
}
|
||||
if (--var_r31->unk_78 == 0) {
|
||||
if (--var_r31->unk_78[0] == 0) {
|
||||
var_r31->unk_58->unk_24 = 0x11;
|
||||
if (var_r31->unk_7A != 0) {
|
||||
if (var_r31->unk_78[1] != 0) {
|
||||
var_r31->unk_58->unk_28 = 0.5f;
|
||||
}
|
||||
else {
|
||||
|
|
@ -2068,7 +2068,7 @@ void fn_1_6A3C(M438UnkStruct2 *arg0)
|
|||
var_r31->unk_18.z *= 0.95f;
|
||||
var_r31->unk_6C.y -= 1.5f;
|
||||
if ((var_r31->unk_58->unk_24 & 8) != 0) {
|
||||
if (var_r31->unk_7A != 0) {
|
||||
if (var_r31->unk_78[1] != 0) {
|
||||
var_r31->unk_5C = 3;
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue