mirror of https://github.com/zeldaret/tmc.git
matched sub_0807D008
This commit is contained in:
parent
a4d76a1c87
commit
8d22d46bc7
|
@ -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();
|
||||
|
|
70
src/save.c
70
src/save.c
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue