Batman: Arkham Origins
BLUS31147.savepatch
1. Decompress SPBATMAN (Required)
Target File: SPBATMAN
import uzlib
zip_offset = uzlib.offzip(savedata, 15)
unzip_data = uzlib.decompress(savedata[zip_offset[1][0]:], 15)
print("Zip offset: 0x{:08X}".format(zip_offset[1][0]))
print("Compressed size:", zip_offset[1][1])
print("Decompressed size:", zip_offset[1][2])
2. 9000000 XP
Target File: SPBATMAN
#search "VoiceOfThePeople"
#write next (73):0x00895440
import apollo
swcode = """
80010010 566F6963
654F6654 68655065
6F706C65 00000000
28000049 00895440
"""
apollo.apply_savewizard(unzip_data, swcode)
3. 99 Upgrade points
Target File: SPBATMAN
#search "VoiceOfThePeople"
#write next (32):0x63
import apollo
swcode = """
80010010 566F6963
654F6654 68655065
6F706C65 00000000
08000020 00000063
"""
apollo.apply_savewizard(unzip_data, swcode)
4. Compress SPBATMAN (Required)
Target File: SPBATMAN
import uzlib
print("Compressing bytes:", len(unzip_data))
print("Compress offset: 0x{:08X}".format(zip_offset[1][0]))
savedata = uzlib.packzip(savedata, zip_offset[1], unzip_data)
print("Updated save size:", len(savedata))
5. Update CRC32Big for SPBATMAN (Required)
Target File: SPBATMAN
set pointer:eof-3
set range:0x000000,pointer
set [hash]:CRC32Big
set pointer:eof-3
write next (0):[hash]
6. Update SHA1 for MPSAVE (Required)
Target File: MPSAVE
set pointer:eof+1
set range:0x000014,pointer
set [hash]:SHA1
write at 0x000000:[hash]