summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/save.s78
-rw-r--r--src/save.c57
2 files changed, 57 insertions, 78 deletions
diff --git a/asm/save.s b/asm/save.s
index 88ebdab..ddb9fdb 100644
--- a/asm/save.s
+++ b/asm/save.s
@@ -5,84 +5,6 @@
.text
- thumb_func_start sub_8011FA8
-sub_8011FA8:
- push {r4,r5,lr}
- sub sp, 0x4
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- movs r1, 0x5
- bl MemoryAlloc
- adds r5, r0, 0
- movs r0, 0x1F
- str r0, [sp]
- mov r0, sp
- adds r1, r5, 0
- adds r2, r4, 0
- bl ReadSaveSector
- adds r2, r0, 0
- cmp r2, 0
- bne _08011FD8
- ldr r1, [r5, 0x14]
- ldr r0, _08011FF0
- cmp r1, r0
- beq _08011FD8
- movs r2, 0x4
-_08011FD8:
- ldr r4, _08011FF4
- cmp r2, 0
- bne _08011FE0
- ldr r4, [r5, 0x18]
-_08011FE0:
- adds r0, r5, 0
- bl MemoryFree
- adds r0, r4, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08011FF0: .4byte 0x05071412
-_08011FF4: .4byte 0x000f1209
- thumb_func_end sub_8011FA8
-
- thumb_func_start sub_8011FF8
-sub_8011FF8:
- push {r4-r6,lr}
- sub sp, 0x4
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- movs r1, 0x5
- bl MemoryAlloc
- adds r5, r0, 0
- movs r0, 0x1F
- str r0, [sp]
- movs r6, 0
- mov r0, sp
- adds r1, r5, 0
- adds r2, r4, 0
- bl ReadSaveSector
- cmp r0, 0
- bne _08012028
- ldr r1, [r5, 0x14]
- ldr r0, _08012038
- cmp r1, r0
- bne _08012028
- movs r6, 0x1
-_08012028:
- adds r0, r5, 0
- bl MemoryFree
- adds r0, r6, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08012038: .4byte 0x05071412
- thumb_func_end sub_8011FF8
-
thumb_func_start sub_801203C
sub_801203C:
push {r4-r7,lr}
diff --git a/src/save.c b/src/save.c
index 67e52d0..50a682f 100644
--- a/src/save.c
+++ b/src/save.c
@@ -23,6 +23,19 @@ struct UnkStruct_sub_8011DAC {
u8 fill448[0x538C];
};
+
+struct unk_struct
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 padding[505];
+};
+
extern s32 gUnknown_202DE28;
extern u32 gUnknown_203B17C;
extern u32 gUnknown_203B180;
@@ -267,3 +280,47 @@ u32 sub_8011F9C(s32 *r0, u8 *r1, s32 r2)
{
return ReadSaveSector(r0, r1, r2);
}
+
+u32 sub_8011FA8(void)
+{
+ u32 temp2;
+ u32 temp3;
+ u32 temp;
+ struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
+ temp = 0x1F;
+ temp2 = ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct));
+ if( temp2 == 0)
+ {
+ if(r5->unk14 != 0x5071412)
+ {
+ temp2 = 4;
+ }
+ }
+ temp3 = 0xf1209;
+ if(temp2 == 0)
+ {
+ temp3 = r5->unk18;
+ }
+ MemoryFree(r5);
+ return temp3;
+}
+
+bool8 sub_8011FF8(void)
+{
+ u32 temp2;
+ u32 temp;
+ bool8 r6;
+ struct unk_struct *r5 = MemoryAlloc(sizeof(struct unk_struct), 5);
+ temp = 0x1F;
+ r6 = FALSE;
+ temp2 = ReadSaveSector(&temp, (u8 *)r5, sizeof(struct unk_struct));
+ if(temp2 == 0)
+ {
+ if(r5->unk14 == 0x5071412)
+ {
+ r6 = TRUE;
+ }
+ }
+ MemoryFree(r5);
+ return r6;
+}