diff options
author | Treeki <treeki@gmail.com> | 2013-01-25 23:56:44 +0100 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2013-01-25 23:56:44 +0100 |
commit | eca119e9990e3f10e03212cfe6726c0b69d4d75f (patch) | |
tree | 8ec3de78c07172faefedf835c32d9a123c5f4af1 | |
parent | ed317da2d37c1f6b91068c02190d4eb75dfb1453 (diff) | |
download | kamek-eca119e9990e3f10e03212cfe6726c0b69d4d75f.tar.gz kamek-eca119e9990e3f10e03212cfe6726c0b69d4d75f.zip |
hopefully this sorts out the clean save issue once and for all
-rw-r--r-- | src/fileselect.S | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/fileselect.S b/src/fileselect.S index a853e76..20acc3e 100644 --- a/src/fileselect.S +++ b/src/fileselect.S @@ -266,12 +266,15 @@ DSFICopyLoop: .extern SaveFileInstance .extern SaveFileBuffer .extern GetBlock__8SaveFileFi +.extern UpdateSavefileChecksums .global FixUpExistingSavefile FixUpExistingSavefile: stwu r1, -0x10(r1) mflr r0 stw r0, 0x14(r1) stw r31, 0xC(r1) + stw r30, 8(r1) + mr r30, r3 li r31, 0 fixupNextBlock: @@ -287,6 +290,7 @@ fixupNextBlock: bl DefaultSavefileInfo dontFixThisOne: + # this is the one whose checksum is checked lis r3, SaveFileBuffer@h ori r3, r3, SaveFileBuffer@l addi r3, r3, 0x6A0 @@ -302,6 +306,18 @@ dontFixThisOne2: cmpwi r31, 6 blt fixupNextBlock + lis r3, SaveFileBuffer@h + ori r3, r3, SaveFileBuffer@l + subi r3, r3, 0x20 + bl UpdateSavefileChecksums + + lis r3, SaveFileInstance@h + ori r3, r3, SaveFileInstance@l + lwz r3, 0(r3) + bl UpdateSavefileChecksums + + mr r3, r30 + lwz r30, 8(r1) lwz r31, 0xC(r1) lwz r0, 0x14(r1) mtlr r0 @@ -309,8 +325,8 @@ dontFixThisOne2: blr -#.section .ctors,4 -#.long FixUpExistingSavefile +.section .ctors,4 +.long FixUpExistingSavefile .data FSStateDebugStr: .string "State: %s\n" |