From ada5402dc07b2a65d647aa82aef5336c2b3c38ee Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Oct 2020 01:34:01 -0500 Subject: decomp some save stuff --- src/save_mid.c | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/save_mid.c (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c new file mode 100644 index 0000000..da96d09 --- /dev/null +++ b/src/save_mid.c @@ -0,0 +1,122 @@ +#include "global.h" + +// TODO unify with UnkStruct_203B184 in save.c +struct unkSaveStruct +{ + /* 0x0 */ u32 unk0; + /* 0x4 */ u32 unk4; + /* 0x8 */ u32 unk8; + /* 0xC */ u32 unkC; + /* 0x10 */ u32 unk10; + /* 0x14 */ u32 unk14; + /* 0x18 */ u32 unk18; + /* 0x1C */ u32 unk1C; + /* 0x20 */ u32 unk20; + /* 0x24 */ u32 unk24; + /* 0x28 */ u32 unk28; + /* 0x2C */ u32 unk2C; + /* 0x30 */ u32 unk30; +}; + +extern struct unkSaveStruct *gUnknown_203B184; + +extern u32 gUnknown_203B460; +extern u32 gUnknown_203B45C; +extern u32 gUnknown_203B480; +extern u32 gUnknown_203B484; +extern u32 gUnknown_203B488; +extern u32 gUnknown_203B48C; +extern u32 gUnknown_203B490; +extern u32 gUnknown_203B464; +extern u32 gUnknown_203B494; +extern u32 gUnknown_203B498; +extern u32 gUnknown_203B468; +extern u32 gUnknown_203B46C; +extern u32 gUnknown_203B47C; + +extern void sub_800135C(void); +extern u32 sub_808CE00(void); +extern void sub_808CE08(void); +extern u32 sub_80909D0(void); +extern void sub_80909D8(void); +extern u32 sub_809208C(void); +extern void sub_8092094(void); +extern u32 sub_80923B0(void); +extern void sub_80923B8(void); +extern u32 sub_8094990(void); +extern void sub_8094998(u8 r0); +extern u32 sub_8094FA0(void); +extern u32 sub_80950F8(void); +extern u32 sub_8095100(void); +extern u32 sub_8095108(void); +extern u32 sub_8095110(void); +extern void sub_8095118(void); +extern u32 sub_80958F8(void); +extern void sub_8095900(void); +extern u32 sub_8097680(void); +extern void sub_80972F4(void); +extern void sub_80974E8(void); +extern u32 sub_8097F6C(void); +extern void sub_8097F74(void); + +void sub_80122F4(void) +{ + sub_800135C(); +} + +void sub_8012300(void) +{ + sub_80923B8(); + sub_808CE08(); + sub_80909D8(); + sub_8092094(); + sub_80972F4(); + sub_8095118(); + sub_8095900(); + sub_80974E8(); + sub_8094998(1); + sub_8097F74(); +} + + +// Unused +void nullsub_200(u32 r0) +{ +} + +// Unused +void sub_8012334(struct unkSaveStruct *r0) +{ + gUnknown_203B184 = r0; + if(r0 != NULL) + { + gUnknown_203B460 = r0->unk0; + gUnknown_203B45C = r0->unk4; + gUnknown_203B480 = r0->unk8; + gUnknown_203B484 = r0->unkC; + gUnknown_203B488 = r0->unk10; + gUnknown_203B48C = r0->unk14; + gUnknown_203B490 = r0->unk18; + gUnknown_203B464 = r0->unk1C; + gUnknown_203B494 = r0->unk20; + gUnknown_203B498 = r0->unk24; + gUnknown_203B468 = r0->unk28; + gUnknown_203B46C = r0->unk2C; + gUnknown_203B47C = r0->unk30; + return; + } + gUnknown_203B460 = sub_80909D0(); + gUnknown_203B45C = sub_808CE00(); + gUnknown_203B480 = sub_80950F8(); + gUnknown_203B484 = sub_8095100(); + gUnknown_203B488 = sub_8095108(); + gUnknown_203B48C = sub_8095110(); + gUnknown_203B490 = sub_80958F8(); + gUnknown_203B464 = sub_809208C(); + gUnknown_203B494 = sub_8097680(); + gUnknown_203B498 = sub_8097F6C(); + gUnknown_203B468 = sub_80923B0(); + gUnknown_203B46C = sub_8094990(); + gUnknown_203B47C = sub_8094FA0(); + +} -- cgit v1.2.3 From a391aaa3f60cc0658f62c283e02cb8fbbbceb090 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 9 Oct 2020 15:16:49 -0500 Subject: unify save defines and decomp more save stuff --- src/save_mid.c | 80 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 22 deletions(-) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index da96d09..67ad932 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -1,24 +1,8 @@ #include "global.h" +#include "save.h" -// TODO unify with UnkStruct_203B184 in save.c -struct unkSaveStruct -{ - /* 0x0 */ u32 unk0; - /* 0x4 */ u32 unk4; - /* 0x8 */ u32 unk8; - /* 0xC */ u32 unkC; - /* 0x10 */ u32 unk10; - /* 0x14 */ u32 unk14; - /* 0x18 */ u32 unk18; - /* 0x1C */ u32 unk1C; - /* 0x20 */ u32 unk20; - /* 0x24 */ u32 unk24; - /* 0x28 */ u32 unk28; - /* 0x2C */ u32 unk2C; - /* 0x30 */ u32 unk30; -}; - -extern struct unkSaveStruct *gUnknown_203B184; +extern struct UnkStruct_203B184 *gUnknown_203B184; +extern struct unkTimeStruct *gUnknown_203B47C; extern u32 gUnknown_203B460; extern u32 gUnknown_203B45C; @@ -32,7 +16,6 @@ extern u32 gUnknown_203B494; extern u32 gUnknown_203B498; extern u32 gUnknown_203B468; extern u32 gUnknown_203B46C; -extern u32 gUnknown_203B47C; extern void sub_800135C(void); extern u32 sub_808CE00(void); @@ -45,7 +28,6 @@ extern u32 sub_80923B0(void); extern void sub_80923B8(void); extern u32 sub_8094990(void); extern void sub_8094998(u8 r0); -extern u32 sub_8094FA0(void); extern u32 sub_80950F8(void); extern u32 sub_8095100(void); extern u32 sub_8095108(void); @@ -59,6 +41,60 @@ extern void sub_80974E8(void); extern u32 sub_8097F6C(void); extern void sub_8097F74(void); +extern void sub_8011C28(u32 r0); +extern void sub_8011C40(s32 r0); +extern void sub_8097748(void); +extern void sub_8012240(); + + +extern void sub_8094FA8(struct unkTimeStruct *Time); // defined in src/code_8094F88.c +extern struct unkTimeStruct *sub_8094FA0(void); + +void sub_80122D0(); +void sub_80122F4(); +void sub_8012300(); +void sub_80976A8(); +void sub_80122A8(); + +void sub_8012284(void) +{ + sub_80122D0(); + sub_80122F4(); + sub_8012300(); +} + +void sub_8012298(void) +{ + sub_80976A8(); + sub_80122A8(); +} + +void sub_80122A8(void) +{ + sub_80122D0(); + sub_80122F4(); + sub_8012300(); + sub_8012240(); + +} + +void nullsub_33(void) +{ +} + +void sub_80122C4(void) +{ + sub_80122A8(); +} + +void sub_80122D0(void) +{ + sub_8011C28(0); + sub_8011C40(-1); + sub_8097748(); + sub_8094FA8(gUnknown_203B47C); +} + void sub_80122F4(void) { sub_800135C(); @@ -85,7 +121,7 @@ void nullsub_200(u32 r0) } // Unused -void sub_8012334(struct unkSaveStruct *r0) +void sub_8012334(struct UnkStruct_203B184 *r0) { gUnknown_203B184 = r0; if(r0 != NULL) -- cgit v1.2.3 From 184d3819ab381c54821b157770d015c0dce8d82a Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Tue, 20 Oct 2020 18:05:01 -0500 Subject: more decomping of funcs --- src/save_mid.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index 67ad932..d401ec3 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -4,6 +4,14 @@ extern struct UnkStruct_203B184 *gUnknown_203B184; extern struct unkTimeStruct *gUnknown_203B47C; +struct unk_203B188 +{ + u32 unk0; + u32 unk4; +}; + +extern struct unk_203B188 *gUnknown_203B188; + extern u32 gUnknown_203B460; extern u32 gUnknown_203B45C; extern u32 gUnknown_203B480; @@ -50,6 +58,8 @@ extern void sub_8012240(); extern void sub_8094FA8(struct unkTimeStruct *Time); // defined in src/code_8094F88.c extern struct unkTimeStruct *sub_8094FA0(void); +extern void* MemoryAlloc(u32 a, u32 b); + void sub_80122D0(); void sub_80122F4(); void sub_8012300(); @@ -156,3 +166,10 @@ void sub_8012334(struct UnkStruct_203B184 *r0) gUnknown_203B47C = sub_8094FA0(); } + +void sub_8012468(void) +{ + gUnknown_203B188 = MemoryAlloc(sizeof(struct unk_203B188), 5); + gUnknown_203B188->unk0 = 1; + +} -- cgit v1.2.3 From a0d2d8e9519a7cc9075950c5eec211008fbe0463 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 1 Nov 2020 11:12:39 -0600 Subject: some more work on decomping funcs --- src/save_mid.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index d401ec3..43f8aaf 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -10,6 +10,19 @@ struct unk_203B188 u32 unk4; }; +struct unk_struct +{ + u32 unk0; + u32 unk4; + u32 unk8; + u32 unkC; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1C; + u32 padding[504]; +}; + extern struct unk_203B188 *gUnknown_203B188; extern u32 gUnknown_203B460; @@ -52,13 +65,21 @@ extern void sub_8097F74(void); extern void sub_8011C28(u32 r0); extern void sub_8011C40(s32 r0); extern void sub_8097748(void); -extern void sub_8012240(); extern void sub_8094FA8(struct unkTimeStruct *Time); // defined in src/code_8094F88.c extern struct unkTimeStruct *sub_8094FA0(void); extern void* MemoryAlloc(u32 a, u32 b); +extern void MemoryFree(void* a); +extern void MemoryFill8(u8 *dest, u8 value, s32 size); +extern void sub_8011830(void); +extern s32 WriteFlashData(s32 sector, u8 *src, s32 size); +extern void sub_8011854(void); +extern u32 *sub_809769C(void); +u32 *sub_8011C4C(void); +extern void sub_80958E4(u8 *a, u32 b); +extern s32 WriteSaveSector(s32 *a, u8 *src, s32 size); void sub_80122D0(); void sub_80122F4(); @@ -66,6 +87,50 @@ void sub_8012300(); void sub_80976A8(); void sub_80122A8(); +s32 sub_80121D4(s32 *a, u8 *src, s32 size) +{ + return WriteSaveSector(a, src, size); +} + +u32 sub_80121E0(u32 r0) +{ + u32 temp; + u32 *temp2; + u32 temp3; + struct unk_struct *r4 = MemoryAlloc(sizeof(struct unk_struct), 5); + temp = 0x1F; + + r4->unk18 = r0; + r4->unk1C = *sub_809769C(); + r4->unk14 = 0x5071412; + + temp2 = sub_8011C4C(); + strncpy((u8 *)r4 + 4, (u8*)temp2, 16); + sub_80958E4((u8 *)r4 + 32, 0); + temp3 = WriteSaveSector(&temp, (u8 *)r4, sizeof(struct unk_struct)); + MemoryFree(r4); + return temp3; +} + +u32 sub_8012240(void) +{ + s32 temp; + struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5); + MemoryFill8((u8 *)r5, 0xFF, 0x4); + sub_8011830(); + temp = WriteFlashData(0x1F, (u8 *)r5, sizeof(struct unk_struct)); + sub_8011854(); + MemoryFree(r5); + if(temp != 0) + { + return 2; + } + else + { + return 0; + } +} + void sub_8012284(void) { sub_80122D0(); -- cgit v1.2.3 From 9d383609e21adfc35004cdf87f9231039c701b23 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 1 Nov 2020 23:23:32 -0600 Subject: some splitting and sync'ing declarations/vars --- src/save_mid.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index 43f8aaf..a124d66 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -25,41 +25,41 @@ struct unk_struct extern struct unk_203B188 *gUnknown_203B188; -extern u32 gUnknown_203B460; -extern u32 gUnknown_203B45C; -extern u32 gUnknown_203B480; -extern u32 gUnknown_203B484; -extern u32 gUnknown_203B488; -extern u32 gUnknown_203B48C; +extern u32 *gUnknown_203B460; +extern u32 *gUnknown_203B45C; +extern u32 *gUnknown_203B480; +extern u32 *gUnknown_203B484; +extern u32 *gUnknown_203B488; +extern u32 *gUnknown_203B48C; extern u32 gUnknown_203B490; extern u32 gUnknown_203B464; extern u32 gUnknown_203B494; -extern u32 gUnknown_203B498; -extern u32 gUnknown_203B468; +extern u8 *gUnknown_203B498; +extern u32 *gUnknown_203B468; extern u32 gUnknown_203B46C; extern void sub_800135C(void); -extern u32 sub_808CE00(void); +extern u32 *sub_808CE00(void); extern void sub_808CE08(void); -extern u32 sub_80909D0(void); +extern u32 *sub_80909D0(void); extern void sub_80909D8(void); extern u32 sub_809208C(void); extern void sub_8092094(void); -extern u32 sub_80923B0(void); +extern u32 *sub_80923B0(void); extern void sub_80923B8(void); extern u32 sub_8094990(void); extern void sub_8094998(u8 r0); -extern u32 sub_80950F8(void); -extern u32 sub_8095100(void); -extern u32 sub_8095108(void); -extern u32 sub_8095110(void); +extern u32 *sub_80950F8(void); +extern u32 *sub_8095100(void); +extern u32 *sub_8095108(void); +extern u32 *sub_8095110(void); extern void sub_8095118(void); extern u32 sub_80958F8(void); extern void sub_8095900(void); extern u32 sub_8097680(void); extern void sub_80972F4(void); extern void sub_80974E8(void); -extern u32 sub_8097F6C(void); +extern u8 *sub_8097F6C(void); extern void sub_8097F74(void); extern void sub_8011C28(u32 r0); -- cgit v1.2.3 From df9385ed9e221a5a59b03b14e32988d8bd31fe3b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 7 Nov 2020 17:29:46 -0600 Subject: continue my slow pace --- src/save_mid.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index a124d66..ce1b378 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -35,7 +35,7 @@ extern u32 gUnknown_203B490; extern u32 gUnknown_203B464; extern u32 gUnknown_203B494; extern u8 *gUnknown_203B498; -extern u32 *gUnknown_203B468; +extern u8 *gUnknown_203B468; extern u32 gUnknown_203B46C; extern void sub_800135C(void); @@ -45,7 +45,7 @@ extern u32 *sub_80909D0(void); extern void sub_80909D8(void); extern u32 sub_809208C(void); extern void sub_8092094(void); -extern u32 *sub_80923B0(void); +extern u8 *sub_80923B0(void); extern void sub_80923B8(void); extern u32 sub_8094990(void); extern void sub_8094998(u8 r0); -- cgit v1.2.3 From 5f8105180b15f04d48c72df2953d267c87d6148c Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Thu, 19 Nov 2020 11:27:18 -0600 Subject: combining and doc'ing of playtime things --- src/save_mid.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index ce1b378..13e9cbf 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -25,18 +25,18 @@ struct unk_struct extern struct unk_203B188 *gUnknown_203B188; -extern u32 *gUnknown_203B460; extern u32 *gUnknown_203B45C; -extern u32 *gUnknown_203B480; -extern u32 *gUnknown_203B484; +extern u32 *gUnknown_203B460; +extern u32 gUnknown_203B464; +extern u8 *gUnknown_203B468; +extern u32 gUnknown_203B46C; +extern u8 *gUnknown_203B480; +extern u8 *gUnknown_203B484; extern u32 *gUnknown_203B488; extern u32 *gUnknown_203B48C; extern u32 gUnknown_203B490; -extern u32 gUnknown_203B464; extern u32 gUnknown_203B494; extern u8 *gUnknown_203B498; -extern u8 *gUnknown_203B468; -extern u32 gUnknown_203B46C; extern void sub_800135C(void); extern u32 *sub_808CE00(void); @@ -49,8 +49,8 @@ extern u8 *sub_80923B0(void); extern void sub_80923B8(void); extern u32 sub_8094990(void); extern void sub_8094998(u8 r0); -extern u32 *sub_80950F8(void); -extern u32 *sub_8095100(void); +extern u8 *sub_80950F8(void); +extern u8 *sub_8095100(void); extern u32 *sub_8095108(void); extern u32 *sub_8095110(void); extern void sub_8095118(void); @@ -67,7 +67,7 @@ extern void sub_8011C40(s32 r0); extern void sub_8097748(void); -extern void sub_8094FA8(struct unkTimeStruct *Time); // defined in src/code_8094F88.c +extern void ResetPlayTime(struct unkTimeStruct *Time); // defined in src/code_8094F88.c extern struct unkTimeStruct *sub_8094FA0(void); extern void* MemoryAlloc(u32 a, u32 b); @@ -167,7 +167,7 @@ void sub_80122D0(void) sub_8011C28(0); sub_8011C40(-1); sub_8097748(); - sub_8094FA8(gUnknown_203B47C); + ResetPlayTime(gUnknown_203B47C); } void sub_80122F4(void) -- cgit v1.2.3 From fc7f14ab66ff8e23cd758a9435f8ac48e99ae75f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 22 Nov 2020 17:37:48 -0600 Subject: random assortment of decomp work and fix of nonmatchings --- src/save_mid.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) (limited to 'src/save_mid.c') diff --git a/src/save_mid.c b/src/save_mid.c index 13e9cbf..ddf6d4d 100644 --- a/src/save_mid.c +++ b/src/save_mid.c @@ -37,6 +37,7 @@ extern u32 *gUnknown_203B48C; extern u32 gUnknown_203B490; extern u32 gUnknown_203B494; extern u8 *gUnknown_203B498; +extern u32 gUnknown_80D4354; extern void sub_800135C(void); extern u32 *sub_808CE00(void); @@ -80,13 +81,19 @@ extern u32 *sub_809769C(void); u32 *sub_8011C4C(void); extern void sub_80958E4(u8 *a, u32 b); extern s32 WriteSaveSector(s32 *a, u8 *src, s32 size); +extern u32 sub_8011DAC(u32 *a); +extern u32 sub_80144A4(u32 *a); +extern bool8 sub_8011FF8(void); +extern void sub_80141B4(u32 *r0, u32 r1, u32 r2, u16 r3); +void sub_8012298(); void sub_80122D0(); void sub_80122F4(); void sub_8012300(); void sub_80976A8(); void sub_80122A8(); + s32 sub_80121D4(s32 *a, u8 *src, s32 size) { return WriteSaveSector(a, src, size); @@ -238,3 +245,67 @@ void sub_8012468(void) gUnknown_203B188->unk0 = 1; } + +u8 sub_8012484(void) +{ + u32 temp; + u32 temp2; + switch(gUnknown_203B188->unk0) + { + case 0: + gUnknown_203B188->unk0 = 1; + break; + case 1: + temp = 0; + gUnknown_203B188->unk4 = sub_8011DAC(&temp); + gUnknown_203B188->unk0 = 2; + break; + case 2: + if(gUnknown_203B188->unk4 != 0) + { + if(sub_8011FF8()) + { + sub_80141B4(&gUnknown_80D4354, 0, 0, 0x301); + gUnknown_203B188->unk0 = 3; + break; + } + else + { + gUnknown_203B188->unk0 = 4; + break; + } + } + else + { + gUnknown_203B188->unk0 = 6; + break; + } + case 3: + if(sub_80144A4(&temp2) == 0) + { + gUnknown_203B188->unk0 = 4; + break; + } + else + { + break; + } + case 4: + sub_8012298(); + gUnknown_203B188->unk0 = 6; + case 5: + break; + case 6: + return 0; + } + return 1; +} + +void sub_8012558(void) +{ + if(gUnknown_203B188 != NULL) + { + MemoryFree(gUnknown_203B188); + gUnknown_203B188 = NULL; + } +} -- cgit v1.2.3