1
Script Modding / Re: Decompiled scripts complete
« on: February 08, 2025, 12:12:04 PM »
preserve
News: Welcome back to Bullworth! If you haven't already, you will need to reset your password..
Messages |
Topics |
Attachments
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
// Bully Scholarship Edition PS2 ss2 extrctor
// Extract ss2 file or files from bin using this script
// use quickbms PS2bin2ss2.bms <<Dir>>.bin to extract ss2 files
open FDDE bin 0
open FDDE lst 1
get Dir BASENAME
idstring "Hash"
get FILES long
log MEMORY_FILE 0 0
log MEMORY_FILE2 0 0
for i = 0 < FILES
//file data
get FILEHASH long
get OFFSET long
get DataSIZE long
//read filename from lst file
get NAME line 1
string NAME - 4
string NAME P "%DIR%/%NAME%.ss2"
//rstm header
log MEMORY_FILE OFFSET 0x800
math OFFSET + 0x800
math DATASIZE - 0x800
//PS ADPCM data
log MEMORY_FILE2 OFFSET DataSIZE
//audio settings from header
set Format long 0x10 // 0x01 PCM 0x10 4bit PS ADPCM (OKI ADPCM?)
set BitsPerSample long 16
GetVarChr SampleRate MEMORY_FILE 0x08 long
GetVarChr nChannels MEMORY_FILE 0xC long
//create ss2 header instead of rstm for MFAudio
set MEMORY_FILE binary "\x53\x53\x68\x64\x18\x00\x00\x00\x10\x00\x00\x00\x22\x56\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x53\x53\x62\x64\xC0\xB9\x17\x00"
putvarchr MEMORY_FILE 0x08 Format long
putvarchr MEMORY_FILE 0x0C SampleRate long
putvarchr MEMORY_FILE 0x10 nChannels long
putvarchr MEMORY_FILE 0x14 BitsPerSample long
putvarchr MEMORY_FILE 0x24 DataSIZE long
append
log MEMORY_FILE 0 DATASIZE MEMORY_FILE2
append
get DATASIZE asize MEMORY_FILE
log NAME 0 DATASIZE MEMORY_FILE
next i
MFAudio.exe /II10 /OTWAVU "Speech\Algie_CHATTER_v2.ss2" "Speech\Algie_CHATTER_v2.wav"
MFAudio.exe /OTRAWC "Speech\Algie_CHATTER_v2.wav" "import\Algie_CHATTER_v2.dat
As a result we got our moded wavs PSADPCM encoded in import\ folder ready to be imported in .binquickbms -r -w PS2bin2dat.bms Speech.bin
// Bully Scholarship Edition PS2 sound dat extractor
// Extract dat file or files from bin using this script
// use quickbms PS2bin2dat.bms <<Dir>>.bin to extract dat files
// Mainly used for importing sound back to .bin
// Usage: quickbms -r -w PS2bin2dat.bms <<Dir>>.bin
open FDDE bin 0
open FDDE lst 1
get Dir BASENAME
idstring "Hash"
get FILES long
for i = 0 < FILES
//file data
get FILEHASH long
get OFFSET long
get DataSIZE long
math OFFSET + 0x800
math DataSIZE - 0x7E0 // 0x800 - 0x20 fix for MFAudio raw import (+0x20 footer)
//read filename from lst file
get NAME line 1
string NAME - 4
string NAME P "import/%NAME%.dat"
log NAME OFFSET DataSIZE
next i
to import back sound dat file(s) from import folder to .bin (Speech.bin in example above)// Bully Scholarship Edition PC wav extrctor
// Extract wav file or files from .bin/.sea using this script
// use quickbms 2wav.bms <<Dir>>.bin or quickbms 2wav.bms <<Dir>>.sea to extract wav files
// Edit wav. Keep same duration or shorter. Save as wav s16 pcm (Speech - mono, Cuts - stereo)
get DirName basename
for
findloc Offset binary "WBND"
set BankOFFSET long OFFSET
math Offset + 0x2c
goto Offset
get DataOFFSET long
get DataSIZE long
get Unk1 long //flags?
get WavesCount long
getDString BankName 64
getDString Dummy 24
for i = 0 < WavesCount
get Dummy long
get AudioFormat long // binary32: BitsPerSample(1) BlockAlign(8) SampleRate(18) Channels(3) FormatTag(2)
// 0001 1000 0000 1010 1100 0100 0110 1010
// ||>>>>>>>> |>>>>>>>>>>>>>>>>>>>>>|>>>|format
// B|Align |SampleRate |channels
// format: 0-PCM; 1-XMA; 2-ADPCM; 3-WMA
//xmath Format "AudioFormat & 3" // 11 mask (2)
xmath numChannels[i] "AudioFormat >> 2 & 7" // 111 mask (3)
xmath SampleRate[i] "AudioFormat >> 5 & 262143" // 11 1111 1111 1111 1111 mask (18)
//xmath blockAlign "AudioFormat >> 23 & 255" // 1111 1111 mask (8)
xmath BitsPerSample[i] "AudioFormat >> 31 & 1" // 1 mask (1)
xmath BitsPerSample[i] "8 * BitsPerSample[i] + 8" // BitsPerSample(PCM only): 0-8bit; 1-16bit
get WaveOffset[i] long
get WaveSize[i] long
get Dummy long
get Dummy long
next i
for i = 0 < WavesCount
getDString WaveName[i] 64
next i
for i = 0 < WavesCount
xmath Offset "BankOFFSET + DataOFFSET + WaveOffset[i]"
callfunction WavHeader
next i
next
startfunction WavHeader
log MEMORY_FILE1 0 0
log MEMORY_FILE2 0 0
//create wav header in memory
set MEMORY_FILE2 binary "\x52\x49\x46\x46\x72\x21\x1E\x00\x57\x41\x56\x45\x66\x6D\x74\x20\x32\x00\x00\x00\x02\x00\x02\x00\x22\x56\x00\x00\x10\x5E\x00\x00\x8C\x00\x04\x00\x20\x00\x80\x00\x07\x00\x00\x01\x00\x00\x00\x02\x00\xFF\x00\x00\x00\x00\xC0\x00\x40\x00\xF0\x00\x00\x00\xCC\x01\x30\xFF\x88\x01\x18\xFF\x64\x61\x74\x61\x20\x21\x1E\x00"
//audio settings
if numChannels[i] = 2
set blockAlign short 140 //blockAlign 70(mono) or 140(stereo)
else
set blockAlign short 70
endif
//write settings to header
xmath SIZE "WaveSize[i] + 0x46"
putvarchr MEMORY_FILE2 0x04 SIZE long
putvarchr MEMORY_FILE2 0x16 numChannels[i] short // mono-stereo
putvarchr MEMORY_FILE2 0x18 SampleRate[i] long
xmath BYTERATE "(SampleRate[i] * BitsPerSample[i] * numChannels[i]) / 8"
putvarchr MEMORY_FILE2 0x1c BYTERATE long // (Sample Rate * BitsPerSample * Channels)/8
putvarchr MEMORY_FILE2 0x20 blockAlign short
putvarchr MEMORY_FILE2 0x4a WaveSize[i] long
//append audio data
log MEMORY_FILE1 Offset WaveSize[i]
append
log MEMORY_FILE2 0 WaveSize[i] MEMORY_FILE1
append
//write to wav file
get MF2Size asize MEMORY_FILE2
if WavesCount > 1 //SEA
string Name p "%s/%s_%s.wav" BankName i WaveName[i]
else //bin
string Name p "%s/%s.wav" DirName WaveName[i]
endif
log Name 0 MF2Size MEMORY_FILE2
endfunction
AdpcmEncode.exe Speech\Algie_CHATTER_v2.wav import\Algie_CHATTER_v2.wav
Speech\Algie_CHATTER_v2.wav is s16 pcm wav// MSADPCM wav header cutter quickbms script
idstring "RIFF"
goto 0x14
get FORMAT short
if FORMAT != 2
print "not a Microsoft ADPCM"
print "REMOVE ALL UNMODIFIED WAVS BEFORE IMPORT. IMPORTED WAVS MUST BE S16 PCM"
exit
endif
get FNAME BASENAME
string FName P "import/%FName%.dat"
Findloc DataOFFSET string "data"
goto DataOFFSET
get data long
get DataSIZE long
SavePos DataOFFSET
math DataSIZE - 0x80 //cut tail just in case
log FNAME DataOFFSET DataSIZE
sound dat is ready to be imported in .bin/.seaquickbms -r -w 2dat.bms Cuts.bin
// Bully Scholarship Edition PC audio dat extrctor (wav without header)
// Extract dat file or files from .bin/.sea using this script
// use quickbms 2dat.bms <<Dir>>.bin or quickbms 2dat.bms <<Dir>>.sea to extract dat files
// use quickbms -r -w 2dat.bms <<Dir>>.bin or quickbms -r -w 2dat.bms <<Dir>>.sea
//to import dat files from "import" folder back to .bin/.sea
for
findloc Offset binary "WBND"
set BankOFFSET long OFFSET
math Offset + 0x2c
goto Offset
get DataOFFSET long
get DataSIZE long
get Unk1 long //flags?
get WavesCount long
getDString DirName 64
getDString Dummy 24
for i = 0 < WavesCount
get Dummy long
get AudioFormat long
get WaveOffset[i] long
get WaveSize[i] long
get Dummy long
get Dummy long
next i
for i = 0 < WavesCount
getDString WaveName[i] 64
next i
for i = 0 < WavesCount
xmath Offset "BankOFFSET + DataOFFSET + WaveOffset[i]"
if WavesCount > 1
string Name p "import/%s_%s.dat" i WaveName[i]
else
string Name p "import/%s.dat" WaveName[i]
endif
log Name Offset WaveSize[i]
next i
next