Match m446dll/stage.c

main.c is broken due to fn_1_CA0, otherwise, m446ddl is complete
This commit is contained in:
CreateSource 2024-05-24 14:56:11 -04:00
parent d430953293
commit 285ecc1bf2
7 changed files with 43 additions and 44 deletions

View file

@ -128,11 +128,11 @@ fn_1_852C = .text:0x0000852C; // type:function size:0xE0
fn_1_860C = .text:0x0000860C; // type:function size:0xC fn_1_860C = .text:0x0000860C; // type:function size:0xC
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 data:double lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x30 data:4byte lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x30 scope:local data:4byte
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:float lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x14 scope:local lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x14 scope:local
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x14 scope:local lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x14 scope:local
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double
@ -252,7 +252,7 @@ lbl_1_data_38 = .data:0x00000038; // type:object size:0x18
lbl_1_data_50 = .data:0x00000050; // type:object size:0x18 lbl_1_data_50 = .data:0x00000050; // type:object size:0x18
lbl_1_data_68 = .data:0x00000068; // type:object size:0x8 lbl_1_data_68 = .data:0x00000068; // type:object size:0x8
lbl_1_data_70 = .data:0x00000070; // type:object size:0x10 lbl_1_data_70 = .data:0x00000070; // type:object size:0x10
lbl_1_data_80 = .data:0x00000080; // type:object size:0x20 lbl_1_data_80 = .data:0x00000080; // type:object size:0x20 scope:local
lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x14 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x14
jumptable_1_data_B4 = .data:0x000000B4; // type:object size:0x30 scope:local jumptable_1_data_B4 = .data:0x000000B4; // type:object size:0x30 scope:local
jumptable_1_data_E4 = .data:0x000000E4; // type:object size:0x68 scope:local jumptable_1_data_E4 = .data:0x000000E4; // type:object size:0x68 scope:local

View file

@ -1195,7 +1195,7 @@ config.libs = [
Object(Matching, "REL/m446Dll/player.c"), Object(Matching, "REL/m446Dll/player.c"),
Object(Matching, "REL/m446Dll/camera.c"), Object(Matching, "REL/m446Dll/camera.c"),
Object(Matching, "REL/m446Dll/cursor.c"), Object(Matching, "REL/m446Dll/cursor.c"),
Object(NonMatching, "REL/m446Dll/stage.c"), Object(Matching, "REL/m446Dll/stage.c"),
}, },
), ),
Rel( Rel(

View file

@ -18,7 +18,7 @@ typedef struct _unkStruct {
struct _unkStruct9* unk24; struct _unkStruct9* unk24;
struct _unkStruct5* unk28; struct _unkStruct5* unk28;
struct _unkStruct8* unk2C[2]; struct _unkStruct8* unk2C[2];
struct _unkStruct9* unk34; struct _unkStruct4* unk34;
struct _unkStruct4* unk38[23]; struct _unkStruct4* unk38[23];
s32 unk94; s32 unk94;
Process* unk98; Process* unk98;
@ -41,8 +41,7 @@ typedef struct _unkStruct4 {
s32 unk4; s32 unk4;
u8 unk8; u8 unk8;
u8 unk9; u8 unk9;
s16 unkA; s16 unkA[2];
s16 unkC;
s16 unkE; s16 unkE;
Vec unk10; Vec unk10;
Vec unk1C; Vec unk1C;
@ -253,7 +252,7 @@ extern void fn_1_19D4(void);
extern unkStruct2* fn_1_1C64(s32); extern unkStruct2* fn_1_1C64(s32);
extern void fn_1_1CF8(unkStruct2*); extern void fn_1_1CF8(unkStruct2*);
extern s32 fn_1_1D30(unkStruct2*, void*); extern s32 fn_1_1D30(unkStruct2*, void*);
extern s32 fn_1_1D6C(unkStruct2*, void**); extern s32 fn_1_1D6C(unkStruct2*, unkStruct4**);
extern s32 fn_1_1DA8(unkStruct2*, void**); extern s32 fn_1_1DA8(unkStruct2*, void**);
extern BOOL fn_1_1DDC(unkStruct2*); extern BOOL fn_1_1DDC(unkStruct2*);
extern s32 fn_1_1DEC(unkStruct2*); extern s32 fn_1_1DEC(unkStruct2*);
@ -270,7 +269,7 @@ extern s32 fn_1_2064(void);
extern void fn_1_207C(void); extern void fn_1_207C(void);
extern void fn_1_20D4(void); extern void fn_1_20D4(void);
extern unkStruct4* m446CardCreate(s32); extern unkStruct4* m446CardCreate(s32);
extern void fn_1_2688(unkStruct9*); extern void fn_1_2688(unkStruct4*);
extern void fn_1_272C(unkStruct4*); extern void fn_1_272C(unkStruct4*);
extern void fn_1_2794(unkStruct4*); extern void fn_1_2794(unkStruct4*);
extern void fn_1_27FC(unkStruct4*, Vec*, s32); extern void fn_1_27FC(unkStruct4*, Vec*, s32);

View file

@ -43,7 +43,7 @@ s32 fn_1_1D30(unkStruct2* arg0, void* arg1) {
} }
} }
s32 fn_1_1D6C(unkStruct2* arg0, void** arg1) { s32 fn_1_1D6C(unkStruct2* arg0, unkStruct4** arg1) {
if (arg0->unk8 <= 0) { if (arg0->unk8 <= 0) {
return 0; return 0;
} else { } else {
@ -174,7 +174,7 @@ s32 fn_1_2064(void) {
} }
void fn_1_207C(void) { void fn_1_207C(void) {
unkStruct9* var_r30; unkStruct4* var_r30;
unkStruct3* var_r31; unkStruct3* var_r31;
var_r31 = lbl_1_bss_18; var_r31 = lbl_1_bss_18;
@ -271,14 +271,14 @@ unkStruct4* m446CardCreate(s32 arg0) {
temp_r31->unk74 = 0; temp_r31->unk74 = 0;
temp_r31->unk78 = 0; temp_r31->unk78 = 0;
temp_r31->unk7C = 0; temp_r31->unk7C = 0;
temp_r31->unkA = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_rodata_58[arg0], 0x10000000, HEAP_DATA)); temp_r31->unkA[0] = Hu3DModelCreateFile(lbl_1_rodata_58[arg0]);
Hu3DModelAmbSet(temp_r31->unkA, 0.0f, 0.0f, 0.0f); Hu3DModelAmbSet(temp_r31->unkA[0], 0.0f, 0.0f, 0.0f);
Hu3DModelShadowSet(temp_r31->unkA); Hu3DModelShadowSet(temp_r31->unkA[0]);
Hu3DModelLayerSet(temp_r31->unkA, 0); Hu3DModelLayerSet(temp_r31->unkA[0], 0);
temp_r31->unkC = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_rodata_6C[arg0], 0x10000000, HEAP_DATA)); temp_r31->unkA[1] = Hu3DModelCreateFile(lbl_1_rodata_6C[arg0]);
Hu3DModelAmbSet(temp_r31->unkC, 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(temp_r31->unkA[1], 1.0f, 1.0f, 1.0f);
Hu3DModelAttrSet(temp_r31->unkC, 0x40000001U); Hu3DModelAttrSet(temp_r31->unkA[1], 0x40000001U);
Hu3DModelLayerSet(temp_r31->unkA, 0); Hu3DModelLayerSet(temp_r31->unkA[0], 0);
fn_1_2A58(temp_r31); fn_1_2A58(temp_r31);
fn_1_2EC0(temp_r31, 1); fn_1_2EC0(temp_r31, 1);
temp_r30 = fn_1_1DF4(temp_r31); temp_r30 = fn_1_1DF4(temp_r31);
@ -295,7 +295,7 @@ unkStruct4* m446CardCreate(s32 arg0) {
return temp_r31; return temp_r31;
} }
void fn_1_2688(unkStruct9* arg0) { void fn_1_2688(unkStruct4* arg0) {
unkStruct3* var_r31 = lbl_1_bss_18; unkStruct3* var_r31 = lbl_1_bss_18;
do { do {
if (arg0 == var_r31->unk0) { if (arg0 == var_r31->unk0) {
@ -367,12 +367,12 @@ void fn_1_29B4(unkStruct4* arg0, f32 arg8, s32 arg1) {
} }
void fn_1_2A1C(unkStruct4* arg0) { void fn_1_2A1C(unkStruct4* arg0) {
Hu3DModelAttrReset(arg0->unkC, 1); Hu3DModelAttrReset(arg0->unkA[1], 1);
arg0->unk6C = 1; arg0->unk6C = 1;
} }
void fn_1_2A58(unkStruct4* arg0) { void fn_1_2A58(unkStruct4* arg0) {
Hu3DModelAttrSet(arg0->unkC, 1); Hu3DModelAttrSet(arg0->unkA[1], 1);
arg0->unk6C = 0; arg0->unk6C = 0;
} }
@ -387,7 +387,7 @@ void fn_1_2AA8(unkStruct4* arg0) {
switch (arg0->unk8) { switch (arg0->unk8) {
case 0: case 0:
arg0->unk8 = 1; arg0->unk8 = 1;
Hu3DModelAttrReset(arg0->unkC, 1); Hu3DModelAttrReset(arg0->unkA[1], 1);
arg0->unk6C = 1; arg0->unk6C = 1;
arg0->unk8 = 1; // ? arg0->unk8 = 1; // ?
case 1: case 1:
@ -455,7 +455,7 @@ void fn_1_2AA8(unkStruct4* arg0) {
if (arg0->unk78 != 0) break; if (arg0->unk78 != 0) break;
arg0->unk4 = 0; arg0->unk4 = 0;
arg0->unk8 = 0; arg0->unk8 = 0;
Hu3DModelAttrSet(arg0->unkC, 1); Hu3DModelAttrSet(arg0->unkA[1], 1);
arg0->unk6C = 0; arg0->unk6C = 0;
return; return;
} }
@ -500,25 +500,25 @@ void fn_1_2DA8(unkStruct4* arg0) {
void fn_1_2EC0(unkStruct4* arg0, s32 arg1) { void fn_1_2EC0(unkStruct4* arg0, s32 arg1) {
if (arg1 != 0) { if (arg1 != 0) {
Hu3DModelShadowDispOn(arg0->unkA); Hu3DModelShadowDispOn(arg0->unkA[0]);
Hu3DModelAmbSet(arg0->unkA, 0.0f, 0.0f, 0.0f); Hu3DModelAmbSet(arg0->unkA[0], 0.0f, 0.0f, 0.0f);
return; return;
} }
Hu3DModelShadowDispOff(arg0->unkA); Hu3DModelShadowDispOff(arg0->unkA[0]);
Hu3DModelAmbSet(arg0->unkA, 1.0f, 1.0f, 1.0f); Hu3DModelAmbSet(arg0->unkA[0], 1.0f, 1.0f, 1.0f);
} }
void fn_1_2F64(unkStruct4* arg0) { void fn_1_2F64(unkStruct4* arg0) {
if ((arg0->unk58 > 1.0f) || (arg0->unk58 < 1.0f)) { if ((arg0->unk58 > 1.0f) || (arg0->unk58 < 1.0f)) {
Hu3DModelLayerSet(arg0->unkA, 1); Hu3DModelLayerSet(arg0->unkA[0], 1);
Hu3DModelLayerSet(arg0->unkC, 1); Hu3DModelLayerSet(arg0->unkA[1], 1);
} else { } else {
Hu3DModelLayerSet(arg0->unkA, 0); Hu3DModelLayerSet(arg0->unkA[0], 0);
Hu3DModelLayerSet(arg0->unkC, 0); Hu3DModelLayerSet(arg0->unkA[1], 0);
} }
Hu3DModelPosSet(arg0->unkA, arg0->unk10.x, arg0->unk10.y, arg0->unk10.z); Hu3DModelPosSet(arg0->unkA[0], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z);
Hu3DModelPosSet(arg0->unkC, arg0->unk10.x, 0.1f + arg0->unk10.y, arg0->unk10.z); Hu3DModelPosSet(arg0->unkA[1], arg0->unk10.x, 0.1f + arg0->unk10.y, arg0->unk10.z);
Hu3DModelScaleSet(arg0->unkA, arg0->unk58, arg0->unk58, arg0->unk58); Hu3DModelScaleSet(arg0->unkA[0], arg0->unk58, arg0->unk58, arg0->unk58);
Hu3DModelScaleSet(arg0->unkC, arg0->unk58, arg0->unk58, arg0->unk58); Hu3DModelScaleSet(arg0->unkA[1], arg0->unk58, arg0->unk58, arg0->unk58);
Hu3DModelRotSet(arg0->unkA, arg0->unk34.x, arg0->unk34.y, arg0->unk34.z); Hu3DModelRotSet(arg0->unkA[0], arg0->unk34.x, arg0->unk34.y, arg0->unk34.z);
} }

View file

@ -39,8 +39,8 @@ unkStruct5* fn_1_3064(void) {
return temp_r3; return temp_r3;
} }
void fn_1_3180(unkStruct2** arg0) { // typing nightmare void fn_1_3180(unkStruct2** arg0) {
unkStruct9* sp8; unkStruct4* sp8;
while (fn_1_1D6C(*arg0, &sp8) != 0) { while (fn_1_1D6C(*arg0, &sp8) != 0) {
fn_1_2688(sp8); fn_1_2688(sp8);

View file

@ -98,7 +98,7 @@ unkStruct* m446FlowCreate(void) {
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x9C, 0x10000000); temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x9C, 0x10000000);
if (temp_r3 == 0) { if (temp_r3 == 0) {
OSReport("[!] m446FlowCreate() ERROR"); OSReport("[!] m446FlowCreate() ERROR...\n");
return NULL; return NULL;
} }
temp_r3->unk4 = -1; temp_r3->unk4 = -1;

View file

@ -51,7 +51,7 @@ void fn_1_7C08(void) {
if (var_r31) { if (var_r31) {
do { do {
var_r30 = var_r31->unk0; var_r30 = var_r31->unk0;
fn_1_2688(var_r30); fn_1_2688((unkStruct4*)var_r30); // ???
var_r31 = var_r31->unk8; var_r31 = var_r31->unk8;
} while (var_r31); } while (var_r31);
} }