matched sub_0807D008

This commit is contained in:
Henny022p 2021-03-02 17:18:59 +01:00
parent a4d76a1c87
commit 8d22d46bc7
2 changed files with 33 additions and 38 deletions

View File

@ -213,7 +213,6 @@ extern void sub_0807CF48(u32);
extern u32 sub_0807CF10(u8*);
extern void sub_08056208(void);
extern void sub_08050384();
extern struct_0807D1C4* sub_0807D1C4(u32);
extern void sub_0807CF68(u32);
extern u32 sub_0807CF88(u32, u8*);
extern u32 sub_0806F520();

View File

@ -17,12 +17,13 @@ static SaveResult HandleSaveInProgress(u32);
static SaveResult HandleSaveDone(u32);
static SaveResult (*const sSaveHandlers[])(u32) = { HandleSaveInit, HandleSaveInProgress, HandleSaveDone };
struct_0807D1C4* sub_0807D1C4(u32);
u32 sub_0807D008(u32, SaveFile*);
u32 sub_0807D0A0(u16*, u16*, u32);
u32 sub_0807D0EC(u32, const char*);
u32 sub_0807D0A0(Thing*, u16*, u32);
u32 sub_0807D128(const Thing*);
u16 sub_0807D1A4(u16*, u32);
u32 sub_0807D0EC(u32 address, char* data);
u32 sub_0807D184(u32 address, const u8* data);
u32 DataRead(u32 address, void* data, u32 size);
@ -205,9 +206,9 @@ u32 sub_0807CF88(u32 arg0, u8* arg1) {
return retval;
}
NONMATCH("asm/non_matching/save/sub_0807D008.inc", u32 sub_0807D008(u32 param_1, SaveFile* saveFile)) {
u32 set_0;
char auStack32[8];
u32 sub_0807D008(u32 param_1, SaveFile* saveFile) {
vu32 set_0;
Thing auStack32;
struct_0807D1C4* unk_s;
u32 t1;
@ -216,25 +217,25 @@ NONMATCH("asm/non_matching/save/sub_0807D008.inc", u32 sub_0807D008(u32 param_1,
u32 temp;
unk_s = sub_0807D1C4(param_1);
t1 = sub_0807D0EC(unk_s->field_0x2, auStack32);
t1 = sub_0807D0EC(unk_s->field_0x2, (char*)&auStack32);
if (t1 == 2) {
if ((DataRead(unk_s->field_0x6, (char*)saveFile, unk_s->field_0x0) == 0) ||
(sub_0807D0A0((u16*)auStack32, (u16*)saveFile, (u32)unk_s->field_0x0) == 0)) {
(sub_0807D0A0(&auStack32, (u16*)saveFile, (u32)unk_s->field_0x0) == 0)) {
t1 = 0;
} else {
return 1;
}
}
t2 = sub_0807D0EC(unk_s->field_0x4, auStack32);
t2 = sub_0807D0EC(unk_s->field_0x4, (char*)&auStack32);
if (t2 == 2) {
if ((DataRead(unk_s->field_0x8, (char*)saveFile, unk_s->field_0x0) != 0) &&
(sub_0807D0A0((u16*)auStack32, (u16*)saveFile, (u32)unk_s->field_0x0) != 0)) {
(sub_0807D0A0(&auStack32, (u16*)saveFile, (u32)unk_s->field_0x0) != 0)) {
return 1;
}
t2 = 0;
}
set_0 = 0;
CpuSet(&set_0, saveFile, unk_s->field_0x0 >> 2 | CPU_SET_SRC_FIXED | CPU_SET_32BIT);
CpuSet((u16*)&set_0, saveFile, unk_s->field_0x0 >> 2 | CPU_SET_SRC_FIXED | CPU_SET_32BIT);
temp = t1 | t2;
ret = 0;
if (temp == 0) {
@ -242,47 +243,42 @@ NONMATCH("asm/non_matching/save/sub_0807D008.inc", u32 sub_0807D008(u32 param_1,
}
return ret;
}
END_NONMATCH
NONMATCH("asm/non_matching/save/sub_0807D0A0.inc", u32 sub_0807D0A0(u16* unk_1, u16* unk_2, u32 unk_3)) {
u32 r0;
NONMATCH("asm/non_matching/save/sub_0807D0A0.inc", u32 sub_0807D0A0(Thing* unk_1, u16* unk_2, u32 unk_3)) {
u32 r0;
u32* u32_1 = (u32*)unk_1;
u16 u0;
u16 u0;
u32 u1;
u0 = sub_0807D1A4((u16*)&unk_1->unk_3, 4);
u0 = u0 + sub_0807D1A4(unk_2, unk_3);
u0 = sub_0807D1A4(unk_1 + 2, 4);
u0 = u0 + sub_0807D1A4(unk_2, unk_3);
u1 = unk_1[0];
if (u1 != u0) {
r0 = 0;
} else {
if (unk_1[1] == (-(u1 << 0x10) >> 0x10)) {
if (*(u32_1 + 1) != 'MCZ3') {
r0 = 0;
} else {
r0 = 1;
}
} else {
if (unk_1->unk_1 != u0) {
r0 = 0;
} else {
if (unk_1->unk_2 == -unk_1->unk_1) {
if (unk_1->unk_3 != 'MCZ3') {
r0 = 0;
} else {
r0 = 1;
}
} else {
r0 = 0;
}
}
}
return r0;
return r0;
}
END_NONMATCH
u32 sub_0807D0EC(u32 unk_1, const char* unk_2) {
u32 sub_0807D0EC(u32 address, char* data) {
u32 ret;
if (!DataRead(unk_1, unk_2, 8)) {
if (!DataRead(address, data, 8)) {
ret = 0;
} else {
ret = sub_0807D128((Thing*)unk_2);
ret = sub_0807D128((Thing*)data);
}
if (!ret && DataRead(unk_1 + 8, unk_2, 8)) {
ret = sub_0807D128((Thing*)unk_2);
if (!ret && DataRead(address + 8, data, 8)) {
ret = sub_0807D128((Thing*)data);
}
return ret;
}