match m407dll, some cleanup as well

This commit is contained in:
Rainchus 2024-04-06 14:00:15 -05:00
parent 34a7ca2006
commit 4e2c3b7631
12 changed files with 692 additions and 212 deletions

View file

@ -224,7 +224,7 @@ lbl_1_data_218 = .data:0x00000218; // type:object size:0xC
lbl_1_data_228 = .data:0x00000228; // type:object size:0x10 data:4byte lbl_1_data_228 = .data:0x00000228; // type:object size:0x10 data:4byte
lbl_1_data_238 = .data:0x00000238; // type:object size:0x20 data:4byte lbl_1_data_238 = .data:0x00000238; // type:object size:0x20 data:4byte
lbl_1_data_258 = .data:0x00000258; // type:object size:0x14 lbl_1_data_258 = .data:0x00000258; // type:object size:0x14
lbl_1_data_26C = .data:0x0000026C; // type:object size:0xB data:string lbl_1_data_26C = .data:0x0000026C; // type:object size:0xB scope:local data:string
lbl_1_data_278 = .data:0x00000278; // type:object size:0xC lbl_1_data_278 = .data:0x00000278; // type:object size:0xC
lbl_1_data_288 = .data:0x00000288; // type:object size:0x14 lbl_1_data_288 = .data:0x00000288; // type:object size:0x14
lbl_1_data_29C = .data:0x0000029C; // type:object size:0x8 lbl_1_data_29C = .data:0x0000029C; // type:object size:0x8

View file

@ -837,7 +837,7 @@ config.libs = [
Object(Matching, "REL/m407dll/player.c"), Object(Matching, "REL/m407dll/player.c"),
Object(Matching, "REL/m407dll/map.c"), Object(Matching, "REL/m407dll/map.c"),
Object(Matching, "REL/m407dll/camera.c"), Object(Matching, "REL/m407dll/camera.c"),
Object(NonMatching, "REL/m407dll/whomp.c"), Object(Matching, "REL/m407dll/whomp.c"),
Object(Matching, "REL/m407dll/whomp_score.c"), Object(Matching, "REL/m407dll/whomp_score.c"),
Object(Matching, "REL/m407dll/effect.c"), Object(Matching, "REL/m407dll/effect.c"),
Object(Matching, "REL/m407dll/main.c"), Object(Matching, "REL/m407dll/main.c"),

View file

@ -4,6 +4,21 @@
#define M_PI 3.141592653589793 #define M_PI 3.141592653589793
typedef struct unkDominationData2 {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ Point3d unk_08;
/* 0x14 */ Point3d unk_14;
/* 0x20 */ f32 unk_20;
/* 0x24 */ Point3d unk_24;
/* 0x30 */ Point3d unk_30;
/* 0x3C */ f32 unk_3C;
/* 0x40 */ s32 unk_40;
/* 0x44 */ f32 unk_44;
/* 0x48 */ f32 unk_48;
} unkDominationData2; //sizeof 0x4C
//function signatures
void fn_1_1CAC(f32, f32, f32); void fn_1_1CAC(f32, f32, f32);
void fn_1_1D08(f32, f32, f32); void fn_1_1D08(f32, f32, f32);
void fn_1_1D64(f32); void fn_1_1D64(f32);
@ -11,31 +26,18 @@ void fn_1_2024(omObjData*);
double cos(double x); double cos(double x);
double sin(double x); double sin(double x);
//bss
Process* lbl_1_bss_34; Process* lbl_1_bss_34;
omObjData* lbl_1_bss_30; omObjData* lbl_1_bss_30;
typedef struct unkDominationData2 {
s32 unk_00;
s32 unk_04;
Point3d unk_08;
Point3d unk_14;
f32 unk_20;
Point3d unk_24;
Point3d unk_30;
f32 unk_3C;
s32 unk_40;
f32 unk_44;
f32 unk_48;
} unkDominationData2;
void fn_1_1B1C(Process* arg0) { void fn_1_1B1C(Process* arg0) {
unkDominationData2* unkData; unkDominationData2* unkData;
lbl_1_bss_34 = arg0; lbl_1_bss_34 = arg0;
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 45.0f, 10.0f, 40000.0f, 1.2f); Hu3DCameraPerspectiveSet(1, 45.0f, 10.0f, 40000.0f, 1.2f);
lbl_1_bss_30 = omAddObjEx(lbl_1_bss_34, 0x80, 0U, 0U, -1, fn_1_2024); lbl_1_bss_30 = omAddObjEx(lbl_1_bss_34, 0x80, 0, 0, -1, fn_1_2024);
lbl_1_bss_30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData2), 0x10000000); lbl_1_bss_30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData2), MEMORY_DEFAULT_NUM);
unkData = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2); unkData = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
unkData->unk_04 = 0; unkData->unk_04 = 0;
fn_1_1CAC(0.0f, 0.0f, 0.0f); fn_1_1CAC(0.0f, 0.0f, 0.0f);
@ -151,10 +153,10 @@ void fn_1_2024(omObjData* arg0) {
} }
break; break;
case 2: case 2:
var_f31 = (f32) sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
break; break;
case 3: case 3:
var_f31 = (f32) sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
if (temp_r31->unk_48 > 0.5) { if (temp_r31->unk_48 > 0.5) {
temp_r31->unk_00 = 4; temp_r31->unk_00 = 4;
} }

View file

@ -4,6 +4,24 @@
#include "game/hsfmotion.h" #include "game/hsfmotion.h"
#include "game/hsfdraw.h" #include "game/hsfdraw.h"
typedef struct unkDominationData4 {
/* 0x00 */ u32 unk_00;
/* 0x04 */ u32 unk_04;
/* 0x08 */ s32 unk_08;
/* 0x0C */ s32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ s32 unk_1C;
} unkDominationData4; //size of 0x20
//function signatures
void fn_1_4858(omObjData* arg0);
void fn_1_485C(omObjData* arg0);
void fn_1_46EC(omObjData* arg0);
void fn_1_465C(omObjData* arg0, s32 arg1);
void fn_1_4808(omObjData* arg0);
//bss //bss
Process* lbl_1_bss_3970; Process* lbl_1_bss_3970;
omObjData* lbl_1_bss_37E0[100]; omObjData* lbl_1_bss_37E0[100];
@ -17,13 +35,6 @@ s32 lbl_1_data_288[] = {
0x00260019 0x00260019
}; };
//function signatures
void fn_1_4858(omObjData* arg0);
void fn_1_485C(omObjData* arg0);
void fn_1_46EC(omObjData* arg0);
void fn_1_465C(omObjData* arg0, s32 arg1);
void fn_1_4808(omObjData* arg0);
ObjFuncs lbl_1_data_29C[] = { ObjFuncs lbl_1_data_29C[] = {
fn_1_4858, fn_1_4858,
fn_1_485C, fn_1_485C,
@ -38,7 +49,7 @@ void fn_1_41CC(Process* arg0) {
temp_r30 = 0; temp_r30 = 0;
for (i = 0; i < 40; i++) { for (i = 0; i < 40; i++) {
lbl_1_bss_37E0[i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC); lbl_1_bss_37E0[i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC);
lbl_1_bss_37E0[i]->work[0] = i; lbl_1_bss_37E0[i]->work[0] = i;
lbl_1_bss_37E0[i]->work[1] = 0; lbl_1_bss_37E0[i]->work[1] = 0;
} }
@ -46,7 +57,7 @@ void fn_1_41CC(Process* arg0) {
temp_r30 += i; temp_r30 += i;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1; lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1;
} }
@ -54,7 +65,7 @@ void fn_1_41CC(Process* arg0) {
temp_r30 += i; temp_r30 += i;
for (i = 0; i < 30; i++) { for (i = 0; i < 30; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2; lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2;
} }
@ -62,7 +73,7 @@ void fn_1_41CC(Process* arg0) {
temp_r30 += i; temp_r30 += i;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3; lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3;
} }
@ -70,7 +81,7 @@ void fn_1_41CC(Process* arg0) {
temp_r30 += i; temp_r30 += i;
for (i = 0; i < 22; i++) { for (i = 0; i < 22; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC); lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1, 0, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i; lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4; lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4;
} }
@ -84,24 +95,8 @@ void fn_1_44F4(void) {
} }
} }
typedef struct unkDominationData4 {
u32 unk_00;
u32 unk_04;
s32 unk_08;
s32 unk_0C;
f32 unk_10;
f32 unk_14;
f32 unk_18;
s32 unk_1C;
} unkDominationData4;
void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) { void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
f32 sp14;
f32 sp10;
s32 spC;
s32 sp8;
omObjData* temp_r29; omObjData* temp_r29;
u32 var_r30;
unkDominationData4* temp_r31; unkDominationData4* temp_r31;
u32 i; u32 i;
@ -140,25 +135,22 @@ void fn_1_4680(omObjData* arg0) {
} }
void fn_1_46EC(omObjData* arg0) { void fn_1_46EC(omObjData* arg0) {
unkDominationData4* temp_r29;
unkDominationData4* temp_r30; unkDominationData4* temp_r30;
arg0->func = fn_1_4680; arg0->func = fn_1_4680;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData4), 0x10000000); arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData4), MEMORY_DEFAULT_NUM);
temp_r30 = arg0->data; temp_r30 = arg0->data;
temp_r30->unk_00 = arg0->work[0]; temp_r30->unk_00 = arg0->work[0];
temp_r30->unk_08 = arg0->work[1]; temp_r30->unk_08 = arg0->work[1];
temp_r30->unk_1C = 0; temp_r30->unk_1C = 0;
*arg0->model = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_288[temp_r30->unk_08], 0x10000000, HEAP_DATA)); arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_288[temp_r30->unk_08], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelAttrSet(*arg0->model, 0x4000U); Hu3DModelAttrSet(arg0->model[0], 0x4000);
Hu3DModelAttrSet(*arg0->model, 0x40000002U); Hu3DModelAttrSet(arg0->model[0], 0x40000002);
Hu3DModelAttrSet(*arg0->model, 1U); Hu3DModelAttrSet(arg0->model[0], 1);
temp_r30->unk_10 = (f32) 0.0f; temp_r30->unk_10 = 0.0f;
temp_r30->unk_14 = (f32) 0.0f; temp_r30->unk_14 = 0.0f;
temp_r30->unk_18 = (f32) 0.0f; temp_r30->unk_18 = 0.0f;
temp_r29 = arg0->data; fn_1_465C(arg0, 0);
temp_r29->unk_0C = 0;
temp_r29->unk_1C = 0;
} }
void fn_1_4808(omObjData* arg0) { void fn_1_4808(omObjData* arg0) {
@ -177,7 +169,6 @@ void fn_1_4858(omObjData* arg0) {
} }
void fn_1_485C(omObjData* arg0) { void fn_1_485C(omObjData* arg0) {
unkDominationData4* temp_r29;
unkDominationData4* temp_r30; unkDominationData4* temp_r30;
temp_r30 = arg0->data; temp_r30 = arg0->data;
@ -197,9 +188,7 @@ void fn_1_485C(omObjData* arg0) {
} }
if (Hu3DMotionEndCheck(*arg0->model) != 0) { if (Hu3DMotionEndCheck(*arg0->model) != 0) {
Hu3DModelAttrSet(*arg0->model, 1U); Hu3DModelAttrSet(*arg0->model, 1);
temp_r29 = arg0->data; fn_1_465C(arg0, 0);
temp_r29->unk_0C = 0;
temp_r29->unk_1C = 0;
} }
} }

View file

@ -7,12 +7,26 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
//bss typedef void (*ObjFuncs)(void);
Process* lbl_1_bss_3980;
omObjData* lbl_1_bss_397C;
s16 lbl_1_bss_3978;
//func signatures typedef struct unkDominationData5 {
/* 0x00 */ u32 unk_00;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ char unk_0A[6];
/* 0x10 */ s16 unk_10;
/* 0x12 */ char unk_12[10];
/* 0x1C */ s16 unk_1C[4];
/* 0x24 */ s16 unk_24;
/* 0x26 */ char unk_26[2];
/* 0x28 */ Vec unk_28;
/* 0x34 */ Vec unk_34;
/* 0x40 */ f32 unk_40;
/* 0x44 */ s32 unk_44;
} unkDominationData5; //sizeof 0x48
//function signatures
void fn_1_388(u8, s32); void fn_1_388(u8, s32);
void fn_1_3C4(u8); void fn_1_3C4(u8);
s32 fn_1_4C0(s32); s32 fn_1_4C0(s32);
@ -36,7 +50,11 @@ s16 fn_1_5804(void);
void fn_1_5A80(void); void fn_1_5A80(void);
void fn_1_5BB0(void); void fn_1_5BB0(void);
typedef void (*ObjFuncs)(void); //bss
Process* lbl_1_bss_3980;
omObjData* lbl_1_bss_397C;
s16 lbl_1_bss_3978;
//data //data
ObjFuncs lbl_1_data_2A8[] = { ObjFuncs lbl_1_data_2A8[] = {
fn_1_4D0C, fn_1_4D0C,
@ -54,30 +72,27 @@ ObjFuncs lbl_1_data_2A8[] = {
fn_1_4B7C fn_1_4B7C
}; };
typedef struct unkDominationData5 { f32 lbl_1_data_2DC[4] = {850.0f, 900.0f, 1300.0f, 1500.0f};
u32 unk_00; Vec lbl_1_data_2EC = {540.0f, 0.0f, 10000.0f};
s16 unk_04; Vec lbl_1_data_2F8 = {-50.0f, -360.0f, 0.0f};
s16 unk_06; f32 lbl_1_data_304 = 2670.0f;
s16 unk_08; Vec lbl_1_data_308 = {437.0f, 0.0f, 5000.0f};
char unk_0A[6]; Vec lbl_1_data_314 = {-50.0f, -360.0f, 0.0f};
s16 unk_10; f32 lbl_1_data_320 = 2290.0f;
char unk_12[10]; Vec lbl_1_data_324 = {0.0f, 0.0f, 100.0f};
s16 unk_1C[4]; Vec lbl_1_data_330 = {-45.0f, -540.0f, 0.0f};
s16 unk_24; f32 lbl_1_data_33C = 1910.0f;
char unk_26[2]; Vec lbl_1_data_340 = {0.0f, 0.0f, 100.0f};
Vec unk_28; Vec lbl_1_data_34C = {-53.0f, -680.0f, 0.0f};
Vec unk_34; f32 lbl_1_data_358 = 1900.0f;
f32 unk_40;
s32 unk_44;
} unkDominationData5;
void fn_1_4980(Process* arg0) { void fn_1_4980(Process* arg0) {
s32 i; s32 i;
unkDominationData5* temp_r31; unkDominationData5* temp_r31;
lbl_1_bss_3980 = arg0; lbl_1_bss_3980 = arg0;
lbl_1_bss_397C = omAddObjEx(lbl_1_bss_3980, 0x40, 0U, 0U, 0, fn_1_4C6C); lbl_1_bss_397C = omAddObjEx(lbl_1_bss_3980, 0x40, 0, 0, 0, fn_1_4C6C);
lbl_1_bss_397C->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData5), 0x10000000); lbl_1_bss_397C->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData5), MEMORY_DEFAULT_NUM);
temp_r31 = lbl_1_bss_397C->data; temp_r31 = lbl_1_bss_397C->data;
Hu3DShadowCreate(45.0f, 10.0f, 10000.0f); Hu3DShadowCreate(45.0f, 10.0f, 10000.0f);
Hu3DShadowTPLvlSet(0.6f); Hu3DShadowTPLvlSet(0.6f);
@ -158,28 +173,12 @@ void fn_1_4C6C(omObjData* obj) {
void fn_1_4D0C(void) { void fn_1_4D0C(void) {
unkDominationData5* sp8; unkDominationData5* sp8;
unkDominationData5* temp_r31;
sp8 = lbl_1_bss_397C->data; sp8 = lbl_1_bss_397C->data;
fn_1_4C3C(1); fn_1_4C3C(1);
} }
f32 lbl_1_data_2DC[4] = {850.0f, 900.0f, 1300.0f, 1500.0f};
Vec lbl_1_data_2EC = {540.0f, 0.0f, 10000.0f};
Vec lbl_1_data_2F8 = {-50.0f, -360.0f, 0.0f};
f32 lbl_1_data_304 = 2670.0f;
Vec lbl_1_data_308 = {437.0f, 0.0f, 5000.0f};
Vec lbl_1_data_314 = {-50.0f, -360.0f, 0.0f};
f32 lbl_1_data_320 = 2290.0f;
Vec lbl_1_data_324 = {0.0f, 0.0f, 100.0f};
Vec lbl_1_data_330 = {-45.0f, -540.0f, 0.0f};
f32 lbl_1_data_33C = 1910.0f;
Vec lbl_1_data_340 = {0.0f, 0.0f, 100.0f};
Vec lbl_1_data_34C = {-53.0f, -680.0f, 0.0f};
f32 lbl_1_data_358 = 1900.0f;
void fn_1_4D54(void) { void fn_1_4D54(void) {
s16 temp_r0;
unkDominationData5* temp_r31; unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data; temp_r31 = lbl_1_bss_397C->data;
@ -208,7 +207,6 @@ void fn_1_4D54(void) {
void fn_1_4E8C(void) { void fn_1_4E8C(void) {
s32 i; s32 i;
unkDominationData5* temp_r29;
unkDominationData5* temp_r31; unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data; temp_r31 = lbl_1_bss_397C->data;
@ -231,7 +229,6 @@ void fn_1_4E8C(void) {
} }
void fn_1_4FAC(void) { void fn_1_4FAC(void) {
s16 temp_r0;
unkDominationData5* temp_r31; unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data; temp_r31 = lbl_1_bss_397C->data;

View file

@ -5,14 +5,17 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
//function signatures
void fn_1_162C(omObjData*); void fn_1_162C(omObjData*);
void fn_1_1A8C(omObjData*); void fn_1_1A8C(omObjData*);
//bss
Process* lbl_1_bss_2C; Process* lbl_1_bss_2C;
omObjData* lbl_1_bss_28; omObjData* lbl_1_bss_28;
s16 lbl_1_bss_24; s16 lbl_1_bss_24;
s32 lbl_1_bss_20; s32 lbl_1_bss_20;
//data
s32 lbl_1_data_198[] = { s32 lbl_1_data_198[] = {
0x00260000, 0x00260000,
0x00260002, 0x00260002,
@ -46,7 +49,7 @@ void fn_1_14F0(Process* arg0, s32 arg1) {
lbl_1_bss_2C = arg0; lbl_1_bss_2C = arg0;
lbl_1_bss_20 = arg1; lbl_1_bss_20 = arg1;
lbl_1_bss_28 = omAddObjEx(lbl_1_bss_2C, 0x100, 0xDU, 0U, 1, fn_1_162C); lbl_1_bss_28 = omAddObjEx(lbl_1_bss_2C, 0x100, 0xD, 0, 1, fn_1_162C);
omSetStatBit(lbl_1_bss_28, 0x100U); omSetStatBit(lbl_1_bss_28, 0x100U);
Hu3DLighInit(); Hu3DLighInit();
lbl_1_bss_24 = Hu3DGLightCreateV(&lbl_1_data_1FC, &lbl_1_data_208, &lbl_1_data_214); lbl_1_bss_24 = Hu3DGLightCreateV(&lbl_1_data_1FC, &lbl_1_data_208, &lbl_1_data_214);
@ -70,21 +73,21 @@ void fn_1_162C(omObjData* arg0) {
s32 i; s32 i;
arg0->func = fn_1_1A8C; arg0->func = fn_1_1A8C;
arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[2], 0x10000000, HEAP_DATA)); arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[2], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelShadowMapSet(arg0->model[0]); Hu3DModelShadowMapSet(arg0->model[0]);
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[3], 0x10000000, HEAP_DATA)); arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[3], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelAttrSet(arg0->model[1], 1U); Hu3DModelAttrSet(arg0->model[1], 1U);
for (i = 0; i < ARRAY_COUNT(GWPlayerCfg); i++) { for (i = 0; i < ARRAY_COUNT(GWPlayerCfg); i++) {
arg0->model[i+2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[GWPlayerCfg[i].character + 4], 0x10000000, HEAP_DATA)); arg0->model[i+2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[GWPlayerCfg[i].character + 4], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelAmbSet(arg0->model[i + 2], 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->model[i + 2], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowMapSet(arg0->model[i + 2]); Hu3DModelShadowMapSet(arg0->model[i + 2]);
} }
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
if (i == 0) { if (i == 0) {
arg0->model[i + 6] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[0], 0x10000000, HEAP_DATA)); arg0->model[i + 6] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[0], MEMORY_DEFAULT_NUM, HEAP_DATA));
} else { } else {
arg0->model[i + 6] = Hu3DModelLink(arg0->model[6]); arg0->model[i + 6] = Hu3DModelLink(arg0->model[6]);
} }
@ -92,8 +95,8 @@ void fn_1_162C(omObjData* arg0) {
Hu3DModelShadowMapSet(arg0->model[i + 6]); Hu3DModelShadowMapSet(arg0->model[i + 6]);
} }
arg0->model[11] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[12], 0x10000000, HEAP_DATA)); arg0->model[11] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[12], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->model[12] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[1], 0x10000000, HEAP_DATA)); arg0->model[12] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[1], MEMORY_DEFAULT_NUM, HEAP_DATA));
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
Hu3DModelPosSetV(arg0->model[i + 2], &lbl_1_data_1CC[i]); Hu3DModelPosSetV(arg0->model[i + 2], &lbl_1_data_1CC[i]);

View file

@ -8,8 +8,8 @@
#include "rel_sqrt_consts.h" #include "rel_sqrt_consts.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef void (*ObjFuncs)(omObjData*);
//structs
typedef struct unkDominationData { typedef struct unkDominationData {
u8 unk_00; u8 unk_00;
u8 unk_01; u8 unk_01;
@ -32,13 +32,15 @@ typedef struct unkDominationData {
s32 unk_38; s32 unk_38;
} unkDominationData; } unkDominationData;
Process* lbl_1_bss_18; //function signatures
omObjData* lbl_1_bss_8[4]; void fn_1_628(omObjData*, s32);
Process* lbl_1_bss_0[2]; void fn_1_64C(omObjData*);
void fn_1_99C(omObjData*);
//data void fn_1_A1C(omObjData* arg0);
typedef void (*ObjFuncs)(omObjData*); void fn_1_26CC(u8);
void fn_1_4544(s32, s32, f32, f32, f32);
s16 fn_1_28B8(u8);
s16 fn_1_28E4(u8);
void fn_1_A88(omObjData* arg0); void fn_1_A88(omObjData* arg0);
void fn_1_A8C(omObjData* arg0); void fn_1_A8C(omObjData* arg0);
void fn_1_C58(omObjData* arg0); void fn_1_C58(omObjData* arg0);
@ -49,19 +51,60 @@ void fn_1_1074(omObjData* arg0);
void fn_1_11CC(omObjData* arg0); void fn_1_11CC(omObjData* arg0);
void fn_1_13E4(omObjData* arg0); void fn_1_13E4(omObjData* arg0);
void fn_1_1460(omObjData* arg0); void fn_1_1460(omObjData* arg0);
//function signatures
void fn_1_628(omObjData*, s32);
void fn_1_64C(omObjData*);
void fn_1_99C(omObjData*);
void fn_1_A1C(omObjData* arg0);
void fn_1_26CC(u8);
void fn_1_4544(s32, s32, f32, f32, f32);
s16 fn_1_28B8(u8); //s32 fn_1_28B8(s32);
s16 fn_1_28E4(u8);
double cos(double x); double cos(double x);
double sin(double x); double sin(double x);
//bss
Process* lbl_1_bss_18;
omObjData* lbl_1_bss_8[4];
Process* lbl_1_bss_0[2];
//data
u32 lbl_1_data_0[8][8] = {
{0x005F0000, 0x005F0024, 0x005F0029, 0x005F0005, 0x005F0006, 0x005F004A, 0x005F004B, 0x005F0018},
{0x001A0000, 0x001A0024, 0x001A0029, 0x001A0005, 0x001A0006, 0x001A004A, 0x001A004B, 0x001A0018},
{0x006D0000, 0x006D0024, 0x006D0029, 0x006D0005, 0x006D0006, 0x006D004A, 0x006D004B, 0x006D0018},
{0x008A0000, 0x008A0024, 0x008A0029, 0x008A0005, 0x008A0006, 0x008A004A, 0x008A004B, 0x008A0018},
{0x00850000, 0x00850024, 0x00850029, 0x00850005, 0x00850006, 0x0085004A, 0x0085004B, 0x00850018},
{0x00110000, 0x00110024, 0x00110029, 0x00110005, 0x00110006, 0x0011004A, 0x0011004B, 0x00110018},
{0x000D0000, 0x000D0024, 0x000D0029, 0x000D0005, 0x000D0006, 0x000D004A, 0x000D004B, 0x000D0018},
{0x00810000, 0x00810024, 0x00810029, 0x00810005, 0x00810006, 0x0081004A, 0x0081004B, 0x00810018}
};
s32 lbl_1_data_100[] = {0x0026000D, 0x0026000E, 0x0026000F, 0x00260010, 0x00260011, 0x00260012, 0x00260013, 0x00260014};
char lbl_1_data_120[] = "test11_tex_we-itemhook-r";
char* lbl_1_data_13C[] = {
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120
};
ObjFuncs lbl_1_data_15C[] = {
fn_1_A88,
fn_1_A8C,
fn_1_C58,
fn_1_CF4,
fn_1_DB4,
fn_1_F8C,
fn_1_1074,
fn_1_11CC,
fn_1_13E4,
fn_1_1460
};
u8 lbl_1_data_184[4][2] = {
{0x3C, 0x0F},
{0x50, 0x0F},
{0x64, 0x14},
{0x78, 0x14}
};
inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) { inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) {
unkDominationData* temp_r29 = arg0->data; unkDominationData* temp_r29 = arg0->data;
temp_r29->unk_1C = val0; temp_r29->unk_1C = val0;
@ -79,7 +122,7 @@ void fn_1_F4(Process* arg0) {
lbl_1_bss_18 = arg0; lbl_1_bss_18 = arg0;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
lbl_1_bss_8[i] = omAddObjEx(lbl_1_bss_18, 0x100, 2U, 8U, 0, fn_1_64C); lbl_1_bss_8[i] = omAddObjEx(lbl_1_bss_18, 0x100, 2, 8, 0, fn_1_64C);
lbl_1_bss_8[i]->work[0] = i; lbl_1_bss_8[i]->work[0] = i;
} }
} }
@ -210,55 +253,6 @@ void fn_1_628(omObjData* arg0, s32 arg1) {
temp_r31->unk_20 = 0; temp_r31->unk_20 = 0;
} }
typedef struct m407UnkDataStruct0 {
u32 unk_00[8];
} m407UnkDataStruct0;
m407UnkDataStruct0 lbl_1_data_0[] = {
{0x005F0000, 0x005F0024, 0x005F0029, 0x005F0005, 0x005F0006, 0x005F004A, 0x005F004B, 0x005F0018},
{0x001A0000, 0x001A0024, 0x001A0029, 0x001A0005, 0x001A0006, 0x001A004A, 0x001A004B, 0x001A0018},
{0x006D0000, 0x006D0024, 0x006D0029, 0x006D0005, 0x006D0006, 0x006D004A, 0x006D004B, 0x006D0018},
{0x008A0000, 0x008A0024, 0x008A0029, 0x008A0005, 0x008A0006, 0x008A004A, 0x008A004B, 0x008A0018},
{0x00850000, 0x00850024, 0x00850029, 0x00850005, 0x00850006, 0x0085004A, 0x0085004B, 0x00850018},
{0x00110000, 0x00110024, 0x00110029, 0x00110005, 0x00110006, 0x0011004A, 0x0011004B, 0x00110018},
{0x000D0000, 0x000D0024, 0x000D0029, 0x000D0005, 0x000D0006, 0x000D004A, 0x000D004B, 0x000D0018},
{0x00810000, 0x00810024, 0x00810029, 0x00810005, 0x00810006, 0x0081004A, 0x0081004B, 0x00810018}
};
s32 lbl_1_data_100[] = {0x0026000D, 0x0026000E, 0x0026000F, 0x00260010, 0x00260011, 0x00260012, 0x00260013, 0x00260014};
char lbl_1_data_120[] = "test11_tex_we-itemhook-r";
char* lbl_1_data_13C[] = {
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120
};
ObjFuncs lbl_1_data_15C[] = {
fn_1_A88,
fn_1_A8C,
fn_1_C58,
fn_1_CF4,
fn_1_DB4,
fn_1_F8C,
fn_1_1074,
fn_1_11CC,
fn_1_13E4,
fn_1_1460
};
typedef struct m407UnkDataStruct1 {
u8 unk_00;
u8 unk_01;
} m407UnkDataStruct1;
m407UnkDataStruct1 lbl_1_data_184[] = {{0x3C, 0x0F}, {0x50, 0x0F}, {0x64, 0x14}, {0x78, 0x14}}; //???
void fn_1_64C(omObjData* arg0) { void fn_1_64C(omObjData* arg0) {
u32 temp_r29; u32 temp_r29;
unkDominationData* temp_r27; unkDominationData* temp_r27;
@ -266,7 +260,7 @@ void fn_1_64C(omObjData* arg0) {
u32 i; u32 i;
arg0->func = fn_1_A1C; arg0->func = fn_1_A1C;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData), 0x10000000); arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData), MEMORY_DEFAULT_NUM);
temp_r31 = arg0->data; temp_r31 = arg0->data;
temp_r29 = arg0->work[0]; temp_r29 = arg0->work[0];
temp_r31->unk_00 = temp_r29; temp_r31->unk_00 = temp_r29;
@ -279,15 +273,15 @@ void fn_1_64C(omObjData* arg0) {
temp_r31->unk_38 = 0; temp_r31->unk_38 = 0;
temp_r31->unk_28 = 0.0f; temp_r31->unk_28 = 0.0f;
//frand implicit declaration? (probably frandf inline?) //frand implicit declaration? (probably frandf inline?)
temp_r31->unk_30 = (600.0f / (lbl_1_data_184[temp_r31->unk_02].unk_00 - ((frand() & 0x7FFFFFFF) % lbl_1_data_184[temp_r31->unk_02].unk_01))); temp_r31->unk_30 = (600.0f / (lbl_1_data_184[temp_r31->unk_02][0] - ((frand() & 0x7FFFFFFF) % lbl_1_data_184[temp_r31->unk_02][1])));
temp_r31->unk_2C = temp_r31->unk_30; temp_r31->unk_2C = temp_r31->unk_30;
arg0->model[0] = CharModelCreate(temp_r31->unk_01, 8); arg0->model[0] = CharModelCreate(temp_r31->unk_01, 8);
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_100[temp_r31->unk_01], 0x10000000, HEAP_DATA)); arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_100[temp_r31->unk_01], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) { for (i = 0; i < 8; i++) {
arg0->motion[i] = CharModelMotionCreate(temp_r31->unk_01, lbl_1_data_0[temp_r31->unk_01].unk_00[i]); arg0->motion[i] = CharModelMotionCreate(temp_r31->unk_01, lbl_1_data_0[temp_r31->unk_01][i]);
} }
Hu3DModelShadowSet(arg0->model[0]); Hu3DModelShadowSet(arg0->model[0]);
@ -410,6 +404,7 @@ void fn_1_DB4(omObjData* arg0) {
SetDominationDataStuff(arg0, 0, 0); SetDominationDataStuff(arg0, 0, 0);
} }
//can also be placed into fn_1_F8C as static const
const s32 lbl_1_rodata_70[] = {0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2}; const s32 lbl_1_rodata_70[] = {0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2};
void fn_1_F8C(omObjData* arg0) { void fn_1_F8C(omObjData* arg0) {
@ -470,7 +465,6 @@ void fn_1_11CC(omObjData* arg0) {
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[4], 0); CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[4], 0);
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0); CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0);
temp = fn_1_28E4(temp_r31->unk_00); temp = fn_1_28E4(temp_r31->unk_00);
//can remove \0 after matching whole rel likely
Hu3DModelHookSet(temp, "itemhook_c", arg0->model[0]); Hu3DModelHookSet(temp, "itemhook_c", arg0->model[0]);
temp_r31->unk_10 = 0.0f; temp_r31->unk_10 = 0.0f;
temp_r31->unk_14 = 0.0f; temp_r31->unk_14 = 0.0f;

View file

@ -4,6 +4,8 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef void (*ObjFuncs)(void);
typedef struct unkDominationData6 { typedef struct unkDominationData6 {
/* 0x00 */ s32 unk_00; /* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04; /* 0x04 */ s32 unk_04;
@ -27,8 +29,6 @@ Process* lbl_1_bss_398C;
omObjData* lbl_1_bss_3988; omObjData* lbl_1_bss_3988;
//data //data
typedef void (*ObjFuncs)(void);
ObjFuncs lbl_1_data_360[] = { ObjFuncs lbl_1_data_360[] = {
fn_1_61A0, fn_1_61A0,
fn_1_6218, fn_1_6218,
@ -40,8 +40,8 @@ void fn_1_5C5C(Process* arg0, s16 arg1) {
u32 i; u32 i;
lbl_1_bss_398C = arg0; lbl_1_bss_398C = arg0;
lbl_1_bss_3988 = omAddObjEx(lbl_1_bss_398C, 0x800, 0U, 0U, 7, fn_1_5FE4); lbl_1_bss_3988 = omAddObjEx(lbl_1_bss_398C, 0x800, 0, 0, 7, fn_1_5FE4);
lbl_1_bss_3988->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData6), 0x10000000); lbl_1_bss_3988->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData6), MEMORY_DEFAULT_NUM);
temp_r31 = lbl_1_bss_3988->data; temp_r31 = lbl_1_bss_3988->data;
temp_r31->unk_08 = arg1; temp_r31->unk_08 = arg1;
temp_r31->unk_0A = 0; temp_r31->unk_0A = 0;
@ -96,7 +96,6 @@ void fn_1_5F90(void) {
fn_1_5FB4(0); fn_1_5FB4(0);
} }
//this function is an inline for other TUs, but not this one
void fn_1_5FB4(s32 arg0) { void fn_1_5FB4(s32 arg0) {
unkDominationData6* temp_r31; unkDominationData6* temp_r31;

496
src/REL/m407dll/whomp.c Normal file
View file

@ -0,0 +1,496 @@
#include "game/process.h"
#include "game/object.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/gamework_data.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define MAX_WHOMPS_PLAYER 160
#define MAX_WHOMPS_ALL_PLAYERS MAX_WHOMPS_PLAYER * ARRAY_COUNT(GWPlayer)
#define MAX_WHOMPS (MAX_WHOMPS_PLAYER + 1) * ARRAY_COUNT(GWPlayer)
typedef void (*ObjFuncs)(omObjData*);
typedef struct unkDominationData7 {
/* 0x00 */ u32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ Vec unk_08;
/* 0x14 */ Vec unk_14;
/* 0x20 */ char unk_20[4];
/* 0x24 */ s32 unk_24;
/* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C;
} unkDominationData7; //sizeof 0x30
//function signatures
void fn_1_3360(omObjData*);
void fn_1_3364(omObjData*);
void fn_1_34A4(omObjData*);
void fn_1_37B0(omObjData*);
void fn_1_36D0(omObjData*);
void fn_1_2B7C(omObjData*);
void fn_1_290C(omObjData*, s32);
void fn_1_31F8(omObjData*);
void fn_1_4544(s32, s32, f32, f32, f32);
void fn_1_3BB8(s16, f32, f32);
void fn_1_568(s16, s16, s16);
//bss
Process* lbl_1_bss_37C0;
omObjData* lbl_1_bss_2DB0[MAX_WHOMPS];
s16 lbl_1_bss_1E98[MAX_WHOMPS][3];
s16 lbl_1_bss_68[MAX_WHOMPS][6];
s16 lbl_1_bss_66;
s16 lbl_1_bss_64;
s16 lbl_1_bss_3A[21];
s16 lbl_1_bss_38;
//data
s32 lbl_1_data_228[] = {
0x0026001C,
0x0026001D,
0x0026001E,
0x0026001B
};
s32 lbl_1_data_238[] = {
0x0026002E,
0x0026002F,
0x0026002D,
0x0026002A,
0x0026002C,
0x00260027,
0x00260028,
0x00260029
};
ObjFuncs lbl_1_data_258[] = {
fn_1_3360,
fn_1_3364,
fn_1_34A4,
fn_1_37B0,
fn_1_36D0,
};
void fn_1_2354(Process* arg0) {
Process* sp8;
u32 i;
u32 j;
lbl_1_bss_37C0 = arg0;
for (j = 0, i = 0; i < MAX_WHOMPS_ALL_PLAYERS; i++) {
lbl_1_bss_2DB0[i] = omAddObjEx(lbl_1_bss_37C0, 0x200, 3, 6, 2, fn_1_2B7C);
lbl_1_bss_2DB0[i]->work[0] = i;
lbl_1_bss_2DB0[i]->work[1] = 0;
}
j = j + i;
for (i = 0; i < 4; i++) {
lbl_1_bss_2DB0[j + i] = omAddObjEx(lbl_1_bss_37C0, 0x200, 3, 6, 2, fn_1_2B7C);
lbl_1_bss_2DB0[j + i]->work[0] = j + i;
lbl_1_bss_2DB0[j + i]->work[1] = 1;
}
for (i = 0; i < 4; i++) {
lbl_1_bss_3A[i] = 0;
}
lbl_1_bss_64 = 0;
}
void fn_1_24F0(void) {
u32 i;
for (i = 0; i < MAX_WHOMPS; i++) {
fn_1_31F8(lbl_1_bss_2DB0[i]);
omDelObjEx(lbl_1_bss_37C0, lbl_1_bss_2DB0[i]);
}
}
void fn_1_2564(void) {
u32 i;
HuAudFXPlay(0x542);
for (i = 0; i < MAX_WHOMPS; i++) {
fn_1_290C(lbl_1_bss_2DB0[i], 1);
}
}
void fn_1_25C0(void) {
u32 i, j;
lbl_1_bss_38 = 0;
for (i = 0; i < 4; i++) {
if (lbl_1_bss_38 < lbl_1_bss_3A[i]) {
lbl_1_bss_38 = lbl_1_bss_3A[i];
}
}
lbl_1_bss_66 = 0;
for (i = 0; i < 4; i++) {
if (lbl_1_bss_3A[i] > 0) {
fn_1_290C(lbl_1_bss_2DB0[i], 3);
lbl_1_bss_66 += 1;
}
}
}
void fn_1_26CC(u8 arg0) {
u32 i;
omObjData* temp;
i = lbl_1_bss_3A[arg0];
if (i < MAX_WHOMPS_PLAYER) {
lbl_1_bss_3A[arg0] = i + 1;
temp = lbl_1_bss_2DB0[arg0 + i * ARRAY_COUNT(GWPlayer)];
fn_1_290C(temp, 2);
}
}
void fn_1_2770(u8 arg0, s16 arg2) {
omObjData* temp_r30;
unkDominationData7* temp_r31;
temp_r30 = lbl_1_bss_2DB0[arg0 + MAX_WHOMPS_ALL_PLAYERS];
temp_r31 = temp_r30->data;
temp_r31->unk_08.x = 600.0f - (400.0f * arg0);
temp_r31->unk_08.y = -300.0f;
temp_r31->unk_08.z = 200.0f * (lbl_1_bss_3A[arg0] + 2);
fn_1_290C(temp_r30, 2);
}
s32 fn_1_2880(void) {
return (lbl_1_bss_66 == 0) ? 1 : 0;
}
s16 fn_1_28B8(u8 arg0) {
return lbl_1_bss_3A[arg0];
}
s16 fn_1_28D4(void) {
return lbl_1_bss_64;
}
s16 fn_1_28E4(u8 arg0) {
return lbl_1_bss_2DB0[arg0 + MAX_WHOMPS_ALL_PLAYERS]->model[0];
}
void fn_1_290C(omObjData* arg0, s32 arg1) {
unkDominationData7* temp_r31;
temp_r31 = arg0->data;
temp_r31->unk_24 = arg1;
temp_r31->unk_2C = 0;
}
void fn_1_2930(omObjData* arg0) {
unkDominationData7* temp_r28;
omObjData* temp_r29;
u32 i;
unkDominationData7* temp_r31;
temp_r31 = arg0->data;
lbl_1_data_258[temp_r31->unk_24](arg0);
if ((temp_r31->unk_08.z > (Center.z - 2000.0f)) && (temp_r31->unk_08.z < (2000.0f + Center.z)) && (temp_r31->unk_04 == 0)) {
for (i = 0; i < 8; i++) {
temp_r29 = lbl_1_bss_2DB0[(temp_r31->unk_00 % 80) + (i * 80)];
temp_r29->model[0] = -1;
temp_r28 = temp_r29->data;
temp_r28->unk_04 = 0;
}
arg0->model[0] = lbl_1_bss_1E98[((temp_r31->unk_00 % 80))][0];
if (temp_r31->unk_08.y < 0.0f) {
Hu3DModelShadowDispOff(arg0->model[0]);
} else {
Hu3DModelShadowDispOn(arg0->model[0]);
}
temp_r31->unk_04 = 1;
}
if ((temp_r31->unk_08.y < 0.0f) || (temp_r31->unk_08.z < (Center.z - 2000.0f))) {
Hu3DModelAttrSet(arg0->model[0], 1);
} else {
Hu3DModelAttrReset(arg0->model[0], 1);
}
omSetTra(arg0, temp_r31->unk_08.x, temp_r31->unk_08.y, temp_r31->unk_08.z);
omSetRot(arg0, temp_r31->unk_14.x, temp_r31->unk_14.y, temp_r31->unk_14.z);
if (temp_r31->unk_28 == 1) {
Hu3DModelPosSet(arg0->model[2], temp_r31->unk_08.x, 1.0f + temp_r31->unk_08.y, temp_r31->unk_08.z);
}
}
void fn_1_2B7C(omObjData* arg0) {
u32 i;
unkDominationData7* temp_r30;
arg0->func = fn_1_2930;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData7), MEMORY_DEFAULT_NUM);
temp_r30 = arg0->data;
for (i = 0; i < 3; i++) {
arg0->model[i] = -1;
}
for (i = 0; i < 6; i++) {
arg0->motion[i] = -1;
}
temp_r30->unk_00 = (u32) arg0->work[0];
temp_r30->unk_28 = (u32) arg0->work[1];
temp_r30->unk_04 = 0;
temp_r30->unk_2C = 0;
switch (temp_r30->unk_28) {
case 0:
temp_r30->unk_14.x = 0.0f;
temp_r30->unk_14.y = 180.0f;
temp_r30->unk_14.z = 0.0f;
if (temp_r30->unk_00 < 80) {
arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[1], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelAttrSet(arg0->model[0], 0x4000);
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
if (temp_r30->unk_00 == 0) {
arg0->motion[5] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[5], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->motion[3] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[7], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->motion[4] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[6], MEMORY_DEFAULT_NUM, HEAP_DATA));
} else {
arg0->motion[5] = lbl_1_bss_68[0][5];
arg0->motion[3] = lbl_1_bss_68[0][3];
arg0->motion[4] = lbl_1_bss_68[0][4];
}
Hu3DModelShadowSet(arg0->model[0]);
for (i = 0; i < 3; i++) {
lbl_1_bss_1E98[temp_r30->unk_00][i] = arg0->model[i];
}
for (i = 0; i < 6; i++) {
lbl_1_bss_68[temp_r30->unk_00][i] = arg0->motion[i];
}
Hu3DMotionSet(arg0->model[0], arg0->motion[5]);
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
temp_r30->unk_04 = 1;
} else {
temp_r30->unk_04 = 0;
}
break;
case 1:
temp_r30->unk_14.x = 0.0f;
temp_r30->unk_14.y = 0.0f;
temp_r30->unk_14.z = 0.0f;
arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[0], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[2], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->model[2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_228[3], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelAttrSet(arg0->model[0], 0x4000);
Hu3DModelAttrSet(arg0->model[1], 0x4000);
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
arg0->motion[2] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[2], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->motion[3] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[4], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->motion[5] = Hu3DJointMotion(arg0->model[0], HuDataSelHeapReadNum(lbl_1_data_238[3], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->motion[0] = Hu3DJointMotion(arg0->model[1], HuDataSelHeapReadNum(lbl_1_data_238[0], MEMORY_DEFAULT_NUM, HEAP_DATA));
arg0->motion[1] = Hu3DJointMotion(arg0->model[1], HuDataSelHeapReadNum(lbl_1_data_238[1], MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DModelHookSet(arg0->model[0], "itemhook_r", arg0->model[1]);
Hu3DModelShadowSet(arg0->model[0]);
Hu3DModelShadowSet(arg0->model[1]);
Hu3DModelAttrSet(arg0->model[0], 1);
Hu3DModelAttrSet(arg0->model[1], 1);
Hu3DModelAttrSet(arg0->model[2], 1);
Hu3DModelAttrSet(arg0->model[2], 0x40000002);
Hu3DModelAttrSet(arg0->model[2], 0x40000001);
temp_r30->unk_04 = 1;
break;
}
temp_r30->unk_08.x = (600.0f - (400.0f * (temp_r30->unk_00 & 3)));
temp_r30->unk_08.y = 0.0f;
temp_r30->unk_08.z = (200.0f * (temp_r30->unk_00 >> 2));
fn_1_290C(arg0, 0);
}
void fn_1_31F8(omObjData* arg0) {
s32 i;
unkDominationData7* temp_r29;
temp_r29 = arg0->data;
switch (temp_r29->unk_28) { /* irregular */
case 0:
if (temp_r29->unk_00 == 0) {
for (i = 0; i < 6; i++) {
if (arg0->motion[i] != -1) {
Hu3DMotionKill(arg0->motion[i]);
}
}
}
if (temp_r29->unk_04 != 0) {
for (i = 0; i < 3; i++) {
if (arg0->model[i] != -1) {
Hu3DModelKill(arg0->model[i]);
}
}
}
break;
case 1:
for (i = 0; i < 6; i++) {
if (arg0->motion[i] != -1) {
Hu3DMotionKill(arg0->motion[i]);
}
}
for (i = 0; i < 3; i++) {
if (arg0->model[i] != -1) {
Hu3DModelKill(arg0->model[i]);
}
}
break;
}
if (arg0->data) {
HuMemDirectFree(arg0->data);
}
}
void fn_1_3360(omObjData*) {
}
void fn_1_3364(omObjData* arg0) {
unkDominationData7* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_2C == 0) {
Hu3DMotionSet(arg0->model[0], arg0->motion[4]);
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
switch (temp_r31->unk_28) {
case 0:
fn_1_4544(0, 0, temp_r31->unk_08.x, 0.0f, temp_r31->unk_08.z);
break;
case 1:
fn_1_4544(1, 0, temp_r31->unk_08.x, 0.0f, temp_r31->unk_08.z);
break;
}
}
if (temp_r31->unk_2C == 0x2A) {
Hu3DModelShadowDispOff(arg0->model[0]);
}
if (Hu3DMotionEndCheck(*arg0->model) == 0) {
temp_r31->unk_2C++;
return;
}
temp_r31->unk_08.y = -300.0f;
Hu3DModelAttrSet(arg0->model[0], 1);
fn_1_290C(arg0, 0);
}
void fn_1_34A4(omObjData* arg0) {
unkDominationData7* temp_r30;
temp_r30 = arg0->data;
if (temp_r30->unk_2C == 0) {
if (temp_r30->unk_28 == 1) {
Hu3DModelAttrReset(arg0->model[0], 1);
Hu3DModelAttrReset(arg0->model[1], 1);
} else {
Hu3DModelAttrReset(arg0->model[0], 1);
}
Hu3DMotionSet(arg0->model[0], arg0->motion[3]);
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
switch (temp_r30->unk_28) { /* irregular */
case 0:
fn_1_4544(0, 0, temp_r30->unk_08.x, 0.0f, temp_r30->unk_08.z);
HuAudFXPlay(0x543);
break;
case 1:
HuAudFXPlay(0x544);
fn_1_4544(1, 0, temp_r30->unk_08.x, 0.0f, temp_r30->unk_08.z);
break;
}
temp_r30->unk_08.y = 0.0f;
}
if (temp_r30->unk_2C == 0xA) {
Hu3DModelShadowDispOn(arg0->model[0]);
}
if ((temp_r30->unk_2C == 0xA) && (temp_r30->unk_28 == 1)) {
Hu3DMotionSet(arg0->model[1], arg0->motion[1]);
Hu3DModelAttrReset(arg0->model[1], 0x40000001);
}
temp_r30->unk_2C++;
if (Hu3DMotionEndCheck(arg0->model[0]) != 0) {
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, 0x40000001);
switch (temp_r30->unk_28) {
case 0:
fn_1_290C(arg0, 0);
return;
case 1:
fn_1_290C(arg0, 4);
break;
}
}
}
void fn_1_36D0(omObjData* arg0) {
unkDominationData7* sp8;
sp8 = arg0->data;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, 0x40000001);
Hu3DMotionSet(arg0->model[1], arg0->motion[0]);
Hu3DModelAttrSet(arg0->model[1], 0x40000001);
Hu3DModelAttrReset(arg0->model[2], 1);
Hu3DModelAttrReset(arg0->model[2], 0x40000002);
Hu3DModelAttrSet(arg0->model[2], 0x40000001);
fn_1_290C(arg0, 0);
}
void fn_1_37B0(omObjData* arg0) {
unkDominationData7* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_2C == 0) {
temp_r31->unk_14.x = 0.0f;
temp_r31->unk_08.y = 0.0f;
Hu3DModelAttrSet(arg0->model[0], 0x40000002);
temp_r31->unk_2C++;
}
temp_r31->unk_14.x -= 4.0f;
temp_r31->unk_08.y += 0.9f;
if ((temp_r31->unk_14.x <= -25.0f) && (temp_r31->unk_2C == 1)) {
if ((temp_r31->unk_00 < 640) && ((temp_r31->unk_00 >> 2) < (lbl_1_bss_3A[temp_r31->unk_00 & 3] - 1))) {
fn_1_290C(lbl_1_bss_2DB0[temp_r31->unk_00 + 4], 3);
temp_r31->unk_2C++;
}
if (lbl_1_bss_64 < (temp_r31->unk_00 >> 2) + 1) {
lbl_1_bss_64 = (temp_r31->unk_00 >> 2) + 1;
}
}
if ((temp_r31->unk_2C == 1) && (temp_r31->unk_14.x > -90.0f) || (temp_r31->unk_2C == 2) && (temp_r31->unk_14.x > -68.0f)) {
return;
}
temp_r31->unk_14.x = (temp_r31->unk_2C == 1) ? -90.0f : -68.0f;
if (temp_r31->unk_2C == 1) {
fn_1_4544(3, 0, temp_r31->unk_08.x, 0.0f, 200.0f + temp_r31->unk_08.z);
HuAudFXPlay(0x544);
if (lbl_1_bss_38 > (temp_r31->unk_00 >> 2) + 1) {
fn_1_3BB8((temp_r31->unk_00 >> 2) + 1, temp_r31->unk_08.x, temp_r31->unk_08.z);
}
lbl_1_bss_66 -= 1;
} else {
fn_1_4544(2, 0, temp_r31->unk_08.x, 0.0f, 200.0f + temp_r31->unk_08.z);
HuAudFXPlay(0x543);
}
fn_1_568(temp_r31->unk_00 & 3, 2, 4);
fn_1_290C(arg0, 0);
}

View file

@ -4,6 +4,16 @@
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "game/esprite.h" #include "game/esprite.h"
typedef struct unkDominationData3 {
/* 0x00 */ u32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ Vec unk_08;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s16 unk_18[4];
/* 0x20 */ f32 unk_20;
} unkDominationData3; //sizeof 0x24
//function signatures
void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2); void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2);
void fn_1_3D28(omObjData* arg0, s32 arg1); void fn_1_3D28(omObjData* arg0, s32 arg1);
void fn_1_3E34(omObjData*); void fn_1_3E34(omObjData*);
@ -16,34 +26,25 @@ void fn_1_40F4(omObjData* arg0);
Process* lbl_1_bss_37D8; Process* lbl_1_bss_37D8;
omObjData* lbl_1_bss_37C8[4]; omObjData* lbl_1_bss_37C8[4];
//data
ObjFuncs lbl_1_data_278[] = { ObjFuncs lbl_1_data_278[] = {
fn_1_3FF0, fn_1_3FF0,
fn_1_3FF4, fn_1_3FF4,
fn_1_40F4, fn_1_40F4,
}; };
typedef struct unkDominationData3 {
u32 unk_00;
s32 unk_04;
Vec unk_08;
s32 unk_14;
s16 unk_18[4];
f32 unk_20;
} unkDominationData3;
void fn_1_3AC8(Process* arg0) { void fn_1_3AC8(Process* arg0) {
u32 i; u32 i;
lbl_1_bss_37D8 = arg0; lbl_1_bss_37D8 = arg0;
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) { for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
lbl_1_bss_37C8[i] = omAddObjEx(lbl_1_bss_37D8, 0x500, 0U, 0U, 4, fn_1_3E34); lbl_1_bss_37C8[i] = omAddObjEx(lbl_1_bss_37D8, 0x500, 0, 0, 4, fn_1_3E34);
lbl_1_bss_37C8[i]->work[0] = i; lbl_1_bss_37C8[i]->work[0] = i;
} }
} }
void fn_1_3B68(void) { void fn_1_3B68(void) {
s32 temp_r4;
u32 i; u32 i;
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) { for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
@ -103,7 +104,7 @@ void fn_1_3E34(omObjData* arg0) {
unkDominationData3* temp_r31; unkDominationData3* temp_r31;
arg0->func = fn_1_3D4C; arg0->func = fn_1_3D4C;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData3), 0x10000000); arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkDominationData3), MEMORY_DEFAULT_NUM);
temp_r31 = arg0->data; temp_r31 = arg0->data;
temp_r31->unk_00 = arg0->work[0]; temp_r31->unk_00 = arg0->work[0];
temp_r31->unk_14 = 0; temp_r31->unk_14 = 0;

View file

@ -1026,8 +1026,7 @@ static GXColor hiliteColTbl[3] = {
}; };
static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { static void UpdateMGList(bitcopy* arg0, omObjData* arg1) {
f32 sp1C; f32 sp18[2];
f32 sp18;
s32 sp14; s32 sp14;
f32 var_f26; f32 var_f26;
f32 var_f25; f32 var_f25;
@ -1056,14 +1055,14 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) {
for (var_r23 = 0; var_r23 < arg0->field01_bit0; var_r23++) { for (var_r23 = 0; var_r23 < arg0->field01_bit0; var_r23++) {
HuWinMesSizeCancelCRSet(1); HuWinMesSizeCancelCRSet(1);
HuWinMesMaxSizeGet(1, &sp18, activeMG[var_r23].unk_04); HuWinMesMaxSizeGet(1, &sp18[0], activeMG[var_r23].unk_04);
var_f25 = 152.0f; var_f25 = 152.0f;
var_f24 = 280.0f + (var_r23 * 0x18); var_f24 = 280.0f + (var_r23 * 0x18);
temp_r3 = HuWinCreate(var_f25, var_f24, sp18, sp1C, 0); temp_r3 = HuWinCreate(var_f25, var_f24, sp18[0], sp18[1], 0);
HuWinBGTPLvlSet(temp_r3, 0.0f); HuWinBGTPLvlSet(temp_r3, 0.0f);
HuWinMesSpeedSet(temp_r3, 0); HuWinMesSpeedSet(temp_r3, 0);
HuWinDispOff(temp_r3); HuWinDispOff(temp_r3);
HuWinAttrSet(temp_r3, 0x100U); HuWinAttrSet(temp_r3, 0x100);
if (activeMG[var_r23].unk_03 != 0) { if (activeMG[var_r23].unk_03 != 0) {
sp14 = activeMG[var_r23].unk_04; sp14 = activeMG[var_r23].unk_04;
} else { } else {

View file

@ -81,7 +81,7 @@ void fn_8003FF68(unkArg0* arg0) {
for (j = 0; var_r31->unk_00 != -1U; var_r31++, j++) { for (j = 0; var_r31->unk_00 != -1U; var_r31++, j++) {
if (var_r31->unk_06 == 0) { if (var_r31->unk_06 == 0) {
temp = HuDataSelHeapReadNum(var_r31->unk_00, 0x10000000, HEAP_DATA); temp = HuDataSelHeapReadNum(var_r31->unk_00, MEMORY_DEFAULT_NUM, HEAP_DATA);
model = Hu3DModelCreate(temp); model = Hu3DModelCreate(temp);
lbl_80192060[j] = model; lbl_80192060[j] = model;
Hu3DModelAttrSet(model, var_r31->unk_04); Hu3DModelAttrSet(model, var_r31->unk_04);
@ -93,7 +93,7 @@ void fn_8003FF68(unkArg0* arg0) {
lbl_80192160[j] = temp_r27->unk_08; lbl_80192160[j] = temp_r27->unk_08;
} }
} else if (var_r31->unk_06 == 1) { } else if (var_r31->unk_06 == 1) {
temp = HuDataSelHeapReadNum(var_r31->unk_00, 0x10000000, HEAP_DATA); temp = HuDataSelHeapReadNum(var_r31->unk_00, MEMORY_DEFAULT_NUM, HEAP_DATA);
lbl_80192160[j] = Hu3DMotionCreate(temp); lbl_80192160[j] = Hu3DMotionCreate(temp);
} }
} }