From cd4a04c5ab0db8769535a4d3690bc2f0a582175b Mon Sep 17 00:00:00 2001 From: Henny022p Date: Tue, 2 Mar 2021 22:41:26 +0100 Subject: [PATCH] matched VerifyChecksum --- asm/non_matching/save/sub_0807D0A0.inc | 45 -------------------------- src/save.c | 9 +++--- 2 files changed, 4 insertions(+), 50 deletions(-) delete mode 100644 asm/non_matching/save/sub_0807D0A0.inc diff --git a/asm/non_matching/save/sub_0807D0A0.inc b/asm/non_matching/save/sub_0807D0A0.inc deleted file mode 100644 index 3efab014..00000000 --- a/asm/non_matching/save/sub_0807D0A0.inc +++ /dev/null @@ -1,45 +0,0 @@ - - .syntax unified - - .text - - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r5, r1, #0 - adds r6, r2, #0 - adds r0, r7, #4 - movs r1, #4 - bl CalculateChecksum - adds r4, r0, #0 - lsls r4, r4, #0x10 - lsrs r4, r4, #0x10 - adds r0, r5, #0 - adds r1, r6, #0 - bl CalculateChecksum - adds r4, r4, r0 - lsls r4, r4, #0x10 - lsrs r4, r4, #0x10 - ldrh r0, [r7] - cmp r0, r4 - bne _0807D0DE - lsls r0, r0, #0x10 - ldrh r1, [r7, #2] - rsbs r0, r0, #0 - lsrs r0, r0, #0x10 - cmp r1, r0 - bne _0807D0DE - ldr r1, [r7, #4] - ldr r0, _0807D0E4 @ =0x4D435A33 - cmp r1, r0 - beq _0807D0E8 -_0807D0DE: - movs r0, #0 - b _0807D0EA - .align 2, 0 -_0807D0E4: .4byte 0x4D435A33 -_0807D0E8: - movs r0, #1 -_0807D0EA: - pop {r4, r5, r6, r7, pc} - - .syntax divided diff --git a/src/save.c b/src/save.c index 84901f91..2077da73 100644 --- a/src/save.c +++ b/src/save.c @@ -261,21 +261,20 @@ u32 DataDoubleReadWithStatus(u32 param_1, void* data) { return ret; } -NONMATCH("asm/non_matching/save/sub_0807D0A0.inc", u32 VerifyChecksum(SaveFileStatus* fileStatus, u16* data, u32 size)) { - u32 ret; - +u32 VerifyChecksum(SaveFileStatus* fileStatus, u16* data, u32 size) { + u32 temp; u16 checksum; checksum = CalculateChecksum((u16*)&fileStatus->status, 4); checksum += CalculateChecksum(data, size); - if ((fileStatus->checksum1 != checksum) || (fileStatus->checksum2 != -(u32)fileStatus->checksum1) || + if ((fileStatus->checksum1 != checksum) || + (temp = fileStatus->checksum1 << 0x10, fileStatus->checksum2 != (-temp >> 0x10)) || (fileStatus->status != 'MCZ3')) { return 0; } else return 1; } -END_NONMATCH u32 ReadSaveFileStatus(u32 address, SaveFileStatus* fileStatus) { u32 ret;