# Rune Factory 4 (Special)
# Script to convert save files from RF4 to RF4S
# Version 1
#
# Written by HenryEx
#
# script for QuickBMS http://quickbms.aluigi.org
# See also: http://aluigi.altervista.org/bms/quickbms_crc_engine.txt
set PAD long 0xE0
set JANK long 0
get NAME filename
get FILESIZE asize
if FILESIZE != 0x22400 # RF4 file
print "Filesize incorrect! Is: %FILESIZE|h%! Should be: 0x22400. Exiting..."
CleanExit
endif
get FILECRC long
SavePos OFFSET
xmath SIZE "FILESIZE - OFFSET - PAD"
# check if the save is valid
encryption CRC 0xEDB88320 "32 -1 -1 0 0 1"
log MEMORY_FILE OFFSET SIZE
set NEWCRC long QUICKBMS_CRC
if FILECRC != NEWCRC
print "CRC check failed! Script will only work on a valid save file! Exiting..."
CleanExit
endif
encryption "" ""
log MEMORY_FILE 0 0
math SIZE + 0x80
################################
# Assemble save file
append # Append ON
log MEMORY_FILE 0 0x1E5D9
log MEMORY_FILE 0x1E55C 0x7D
log MEMORY_FILE 0x1E5D9 0x50 # we lose a byte here, i hope it wasn't important
log MEMORY_FILE 0x1E62A 0x20B6
goto 0x2075C MEMORY_FILE
put JANK long MEMORY_FILE # maybe this won't even horribly break eventually? let's just pray
log MEMORY_FILE 0x206E0 0x1D20
append # Append OFF
encryption CRC 0xEDB88320 "32 -1 -1 0 0 1"
log MEMORY_FILE2 OFFSET SIZE MEMORY_FILE
encryption "" ""
set NEWCRC long QUICKBMS_CRC
goto 0 MEMORY_FILE
put NEWCRC long MEMORY_FILE
log "rf4_sXX.sav" 0 0x22480 MEMORY_FILE
CleanExit
Comments