diff options
author | YamaArashi <shadow962@live.com> | 2016-10-17 12:42:22 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-17 12:42:22 -0700 |
commit | ba2e0b47483108c9013e7d4ca5cc383a9a14d425 (patch) | |
tree | c40eda2c1ec3fd8632fcbf7430b483c15cfb0dd5 | |
parent | bf8fa9086cd0bc5135dfc7545b13d061d07c6b6b (diff) |
decompile unreferenced save functions
-rw-r--r-- | asm/rom_81258BC.s | 181 | ||||
-rw-r--r-- | src/save.c | 84 |
2 files changed, 84 insertions, 181 deletions
diff --git a/asm/rom_81258BC.s b/asm/rom_81258BC.s index 8b44e6ead..70a9abbd7 100644 --- a/asm/rom_81258BC.s +++ b/asm/rom_81258BC.s @@ -6,187 +6,6 @@ .text - thumb_func_start unref_sub_8125F4C -unref_sub_8125F4C: @ 8125F4C - push {r4-r6,lr} - adds r4, r0, 0 - adds r2, r4, 0 - movs r1, 0 - ldr r6, _08125F88 - movs r5, 0 - ldr r3, _08125F8C -_08125F5A: - adds r0, r2, r1 - strb r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r3 - bls _08125F5A - ldrb r0, [r6] - movs r3, 0x80 - lsls r3, 5 - movs r1, 0 - adds r2, r4, 0 - bl ReadFlash - ldr r1, _08125F90 - adds r0, r4, r1 - ldr r1, [r0] - ldr r0, _08125F94 - cmp r1, r0 - bne _08125F98 - movs r0, 0x1 - b _08125F9A - .align 2, 0 -_08125F88: .4byte gUnknown_08401E24 -_08125F8C: .4byte 0x00000fff -_08125F90: .4byte 0x00000ff4 -_08125F94: .4byte 0x08012025 @ TODO: figure out what this represents -_08125F98: - movs r0, 0 -_08125F9A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end unref_sub_8125F4C - - thumb_func_start unref_sub_8125FA0 -unref_sub_8125FA0: @ 8125FA0 - push {r4-r7,lr} - movs r0, 0 - bl sub_8125D44 - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r7, _08125FD0 - ldr r6, _08125FD4 -_08125FB2: - adds r0, r4, r6 - ldrb r0, [r0] - ldr r1, [r7] - bl _call_via_r1 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _08125FB2 - cmp r5, 0xFF - bne _08125FD8 - movs r0, 0x3 - b _08125FE8 - .align 2, 0 -_08125FD0: .4byte EraseFlashSector -_08125FD4: .4byte gUnknown_08401E24 -_08125FD8: - cmp r5, 0x3 - beq _08125FE6 - movs r0, 0 - bl sub_8125EC8 - movs r0, 0x1 - b _08125FE8 -_08125FE6: - movs r0, 0x2 -_08125FE8: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end unref_sub_8125FA0 - - thumb_func_start unref_sub_8125FF0 -unref_sub_8125FF0: @ 8125FF0 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - ldr r4, _08126048 - movs r2, 0 - ldr r7, _0812604C - movs r5, 0 - ldr r1, _08126050 -_08126002: - adds r0, r4, r2 - strb r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r1 - bls _08126002 - ldr r0, _08126054 - adds r1, r4, r0 - ldr r0, _08126058 - str r0, [r1] - movs r2, 0 - cmp r2, r3 - bcs _08126030 -_0812601E: - adds r1, r4, r2 - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r3 - bcc _0812601E -_08126030: - ldrb r0, [r7] - movs r2, 0x80 - lsls r2, 5 - adds r1, r4, 0 - bl ProgramFlashSectorAndVerifyNBytes - ldr r1, _0812605C - str r0, [r1] - cmp r0, 0 - bne _08126060 - movs r0, 0x1 - b _08126062 - .align 2, 0 -_08126048: .4byte 0x02000000 -_0812604C: .4byte gUnknown_08401E24 -_08126050: .4byte 0x00000fff -_08126054: .4byte 0x00000ff4 -_08126058: .4byte 0x08012025 @ TODO: figure out what this represents -_0812605C: .4byte gUnknown_02039284 -_08126060: - movs r0, 0xFF -_08126062: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end unref_sub_8125FF0 - - thumb_func_start unref_sub_8126068 -unref_sub_8126068: @ 8126068 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl ProgramFlashSectorAndVerify - cmp r0, 0 - bne _0812607A - movs r0, 0x1 - b _0812607C -_0812607A: - movs r0, 0xFF -_0812607C: - pop {r1} - bx r1 - thumb_func_end unref_sub_8126068 - - thumb_func_start unref_sub_8126080 -unref_sub_8126080: @ 8126080 - push {lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - movs r3, 0x80 - lsls r3, 5 - movs r1, 0 - bl ReadFlash - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end unref_sub_8126080 - thumb_func_start sub_8126098 sub_8126098: @ 8126098 push {r4,lr} diff --git a/src/save.c b/src/save.c index e448ab079..456bfdbe4 100644 --- a/src/save.c +++ b/src/save.c @@ -16,11 +16,20 @@ struct SaveSection u32 counter; }; +struct UnkSaveSection +{ + u8 data[0xFF4]; + u32 unknown; +}; + extern u32 sub_8053108(u8); extern void sav12_xor_increment(u8); +extern u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n); extern struct SaveSection unk_2000000; +extern u32 gUnknown_02039284; + extern u32 gUnknown_3004820; extern u16 gUnknown_03005E9C; @@ -35,6 +44,7 @@ extern u32 gUnknown_03005EBC; extern struct SaveSectionLocation gSaveSectionLocations[]; extern struct SaveSectionLocation gHallOfFameSaveSectionLocations[]; +extern u8 gUnknown_08401E24[]; u8 sub_81252D8(u16, struct SaveSectionLocation *); u8 sub_8125440(u8, u8 *); @@ -701,3 +711,77 @@ u8 sub_8125EC8(u8 a1) return result; } + +bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) +{ + u16 i; + char *raw = (char *)a1; + + for (i = 0; i < 0x1000; i++) + raw[i] = 0; + + ReadFlash(gUnknown_08401E24[0], 0, a1, 4096); + + if (a1->unknown != 0x8012025) + return FALSE; + + return TRUE; +} + +u8 unref_sub_8125FA0(void) +{ + u16 i; + u8 v0 = sub_8125D44(0); + + for (i = 0; i < 2; i++) + EraseFlashSector(gUnknown_08401E24[i]); + + if (v0 == 255) + { + return 3; + } + else if (v0 == 3) + { + return 2; + } + else + { + sub_8125EC8(0); + return 1; + } +} + +u8 unref_sub_8125FF0(u8 *data, u16 size) +{ + u16 i; + struct UnkSaveSection *section = (struct UnkSaveSection *)&unk_2000000; + + for (i = 0; i < 0x1000; i++) + ((char *)section)[i] = 0; + + section->unknown = 0x8012025; + + for (i = 0; i < size; i++) + section->data[i] = data[i]; + + gUnknown_02039284 = ProgramFlashSectorAndVerifyNBytes(gUnknown_08401E24[0], (u8 *)section, 0x1000); + + if (gUnknown_02039284) + return 255; + else + return 1; +} + +u8 unref_sub_8126068(u8 sector, u8 *data, u32 size) +{ + if (ProgramFlashSectorAndVerify(sector, data, size)) + return 255; + else + return 1; +} + +u8 unref_sub_8126080(u8 sector, u8 *data) +{ + ReadFlash(sector, 0, data, 0x1000); + return 1; +} |