Sacred 2: Fallen Angel
BLES00410.savepatch
1. Decompress SAVE.DAT (Required)
Target File: SAVE.DAT
import uzlib
import apollo
zip_offset = uzlib.offzip(savedata, 15)
zip_id = {USERID}
unzip_data = uzlib.decompress(savedata[zip_offset[zip_id][0]:], 15)
print("Zip offset: 0x{:08X}".format(zip_offset[zip_id][0]))
print("Compressed size:", zip_offset[zip_id][1])
print("Decompressed size:", zip_offset[zip_id][2])
pos = apollo.search(unzip_data, b"\xFF\xFF\xAA\x07")
pos += apollo.search(unzip_data[pos:], b"\x00\x00\x00\x00\x40\x00") + 4
print("User Profile:", unzip_data[pos:pos+32].decode('utf-16'))
2. 32767 Skill Points
Target File: SAVE.DAT
import apollo
sw_code = """
80010004 FFFFAA07
18000008 00007FFF
"""
apollo.apply_savewizard(unzip_data, sw_code)
3. 32767 Attribute Points
Target File: SAVE.DAT
import apollo
sw_code = """
80010004 FFFFAA07
1800000A 00007FFF
"""
apollo.apply_savewizard(unzip_data, sw_code)
4. Lots of Gold
Target File: SAVE.DAT
import apollo
sw_code = """
80010004 FFFFAA07
2800019A 7FFFFFFF
"""
apollo.apply_savewizard(unzip_data, sw_code)
5. Lots of Kills Counts
Target File: SAVE.DAT
import apollo
sw_code = """
80010004 FFFFAA07
280001CC 7FFFFFFF
"""
apollo.apply_savewizard(unzip_data, sw_code)
6. Kill 1 to max out level
Target File: SAVE.DAT
import apollo
sw_code = """
80010004 FFFFAA07
2800000C 03B86412
"""
apollo.apply_savewizard(unzip_data, sw_code)
7. Easy Leveling
Target File: SAVE.DAT
import apollo
sw_code = """
80010004 FFFFAA07
08000005 00000001
2800000C 709E9CB7
"""
apollo.apply_savewizard(unzip_data, sw_code)
8. Compress SAVE.DAT (Required)
Target File: SAVE.DAT
import uzlib
print("Compressing bytes:", len(unzip_data))
print("Compress offset: 0x{:08X}".format(zip_offset[zip_id][0]))
print("Old compressed size:", zip_offset[zip_id][1])
savedata = uzlib.packzip(savedata, zip_offset[zip_id], unzip_data)
print("New compressed size:", zip_offset[zip_id][1])