Updated the script to version 1.2.

Attachment:

**Code:**

# SoulCalibur 6 Save Encryptor/Decryptor v1.2

# Keys: 61, 29, 126

get SIZE asize

get HDR long

log MEMORY_FILE 0 SIZE

if HDR == 0x1B || HDR == 0x9E2A83C1

print "Encryption key:"

set KEY ? ?

if KEY == ""

set KEY short 0x3D

# set KEY short 0x7E

# set KEY short 0x21D

endif

print "KEY: %KEY%"

callfunction Encrypt 1

else

goto 6

get NUM short

ReverseShort NUM

set NUMX short 0

for k = 0 < 0x201

for j = 6 < 8

math NUMX u< 8

math KEY1 = k

callfunction Calculate 1

math KEY3 ^ 0x64

math KEY3 & 0xFF

math NUMX + KEY3

next j

math NUMX & 0xFFFF

if NUMX == NUM

math KEY = k

math k = 0x201

elif k == 0x200

print "Encryption key not found."

cleanexit

endif

next k

print "Encryption key = %KEY%"

callfunction Encrypt 1

endif

get NAME basename

string NAME += _out.sav

log NAME 0 SIZE MEMORY_FILE

startfunction Encrypt

for j = 0 < SIZE

math KEY1 = KEY

callfunction Calculate 1

getvarchr NUM MEMORY_FILE j byte

math KEY3 ^ NUM

math KEY3 ^ 0x64

putvarchr MEMORY_FILE j KEY3 byte

next j

endfunction

startfunction Calculate

math FLAG = 0

math KEY5 = j

math KEY5 * j

math KEY2 = KEY5

math KEY2 * j

math KEY1 * j

callfunction CDQ 1

math FLAG = 1

math KEY3 = KEY1

math KEY1 = KEY2

math KEY1 * j

math KEY3 ^ KEY4

math KEY3 - KEY4

math KEY1 < 3

callfunction CDQ 1

math TMP = KEY2

math TMP * 0xB

math KEY1 = TMP

callfunction CDQ 1

math TMP = KEY5

math TMP * 0x11

math KEY1 = TMP

callfunction CDQ 1

endfunction

startfunction CDQ

math KEY1 & 0x1FF

math KEY1 - 0xFF

if KEY1 >= 0

math KEY4 = 0

else

math KEY4 = -1

endif

if FLAG != 0

math KEY1 ^ KEY4

math KEY1 - KEY4

math TMP = KEY1

math TMP & 0xFF

math KEY3 ^ TMP

endif

endfunction