summaryrefslogtreecommitdiff
path: root/src/save_mid.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-11-01 11:12:39 -0600
committerSeth Barberee <seth.barberee@gmail.com>2020-11-01 11:12:39 -0600
commita0d2d8e9519a7cc9075950c5eec211008fbe0463 (patch)
treea857d250b33265a3c9f07d67b86b98ce36c559ae /src/save_mid.c
parent90655520b3593915179c02e91f1d69cf3c26c252 (diff)
some more work on decomping funcs
Diffstat (limited to 'src/save_mid.c')
-rw-r--r--src/save_mid.c67
1 files changed, 66 insertions, 1 deletions
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();