Disney's Up .sps .sdx
-
- Posts: 35
- Joined: Sat May 08, 2021 2:07 am
Disney's Up .sps .sdx
I would like to replace the english audio files of the pc version, with the italian ones of the ps2 version, the problem is that the ps2 ones have a .sps extension, the pc ones are .sdx.
https://mega.nz/file/X4QUhJST#sWAs6Xh4W ... zmrKOJUS44
Ps:Can someone delete the thread created in the game localization section? I accidentally posted there, I wanted to delete it but I don't know how to do it.
https://mega.nz/file/X4QUhJST#sWAs6Xh4W ... zmrKOJUS44
Ps:Can someone delete the thread created in the game localization section? I accidentally posted there, I wanted to delete it but I don't know how to do it.
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: Disney's Up .sps .sdx
Audio is not my field but I want to help at least with the format and some basic information.
This script dumps all the files from the SDX and SDS archives, the format is the same for both:
Each dumped file has a sort of "header" of 2048 bytes, I'm not sure what those few bytes in that section should represent because it's not a structure.
The data after such 2048 bytes is the raw audio data itself which is PS adpcm for the ps2 version and Xbox ADPCM (or IMA ADPCM which is almost identical afaik) for PC.
I tested one sample and it was mono.
I guess that your project may be done relatively easily, convert psadpcm into ima/xbox adpcm and reimport these files with quickbms.
The only doubt is that 2048 bytes header because I have no idea if it will affect in some way the new converted data.
This script dumps all the files from the SDX and SDS archives, the format is the same for both:
Code: Select all
get DUMMY long # 0x3ea/3eb
get FILES long
get ZERO long
get ZERO long
for i = 0 < FILES
get NAME_CRC long
get FREQUENCY short
get DATA_OFF short # ever 0x800
get OFFSET long
get SIZE long
string NAME p "%08x" NAME_CRC
log NAME OFFSET SIZE
next i
Each dumped file has a sort of "header" of 2048 bytes, I'm not sure what those few bytes in that section should represent because it's not a structure.
The data after such 2048 bytes is the raw audio data itself which is PS adpcm for the ps2 version and Xbox ADPCM (or IMA ADPCM which is almost identical afaik) for PC.
I tested one sample and it was mono.
I guess that your project may be done relatively easily, convert psadpcm into ima/xbox adpcm and reimport these files with quickbms.
The only doubt is that 2048 bytes header because I have no idea if it will affect in some way the new converted data.
-
- Posts: 35
- Joined: Sat May 08, 2021 2:07 am
Re: Disney's Up .sps .sdx
How can I convert the extracted files? I have searched the internet, but have found nothing.
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: Disney's Up .sps .sdx
For ps adpcm sometimes people use MFAudio but in your case I guess you want something more automatic and working on many files.
ffmpeg (and maybe mencoder) should support "ADPCM Playstation" (adpcm_psx) in input and "ADPCM IMA WAV" (adpcm_ima_wav) in output, so with just one command on all the files (with the for batch command or via cygwin find) you would get the job done easily.
For setting up everything it's better if you wait the suggestions of the other users or start experimenting by yourself.
All the samples should be mono, the following script is a modification of the previous one that directly dumps the raw data without that 2048 bytes header and also puts the files in folders based on their samplerate.
The samplerate is mandatory to be known since it's necessary for the correct conversion:
Good luck
ffmpeg (and maybe mencoder) should support "ADPCM Playstation" (adpcm_psx) in input and "ADPCM IMA WAV" (adpcm_ima_wav) in output, so with just one command on all the files (with the for batch command or via cygwin find) you would get the job done easily.
For setting up everything it's better if you wait the suggestions of the other users or start experimenting by yourself.
All the samples should be mono, the following script is a modification of the previous one that directly dumps the raw data without that 2048 bytes header and also puts the files in folders based on their samplerate.
The samplerate is mandatory to be known since it's necessary for the correct conversion:
Code: Select all
get DUMMY long # 0x3ea/3eb
get FILES long
get ZERO long
get ZERO long
for i = 0 < FILES
get NAME_CRC long
get FREQ short
get DATA_OFF short # ever 0x800
get OFFSET long
get SIZE long
string NAME p "%d/%08x" FREQ NAME_CRC # set the folder/name as you wish
math OFFSET + DATA_OFF
math SIZE - DATA_OFF
log NAME OFFSET SIZE
next i
-
- Posts: 35
- Joined: Sat May 08, 2021 2:07 am
Re: Disney's Up .sps .sdx
And here, there is another problem, I read on the internet the examples of using ffmpeg, but I don't really understand what I have to write in the .bat file. Then I noticed that the ps2 extracted files, have different names than the pc ones. is there a way to make these files extract with the same name?
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: Disney's Up .sps .sdx
ffmpeg is complicated, yes, and even some examples may not work because older versions were different.
That 32bit field is the only thing available there for identifying the files.
That 32bit field is the only thing available there for identifying the files.
-
- Posts: 35
- Joined: Sat May 08, 2021 2:07 am
Re: Disney's Up .sps .sdx
I've been trying all day to convert the extracted files with both of the tools you recommended, but I couldn't do it. I also noticed that if I try to select one of the extracted files with fmaudio, the program crashes. FFmpeg on the other hand, whatever string I enter on the .bat does not work, the program closes instantly.
-
- Site Admin
- Posts: 12984
- Joined: Wed Jul 30, 2014 9:32 pm
Re: Disney's Up .sps .sdx
I give up on ffmpeg.
While searching a solution I found an old topic of mine here on zenhax where I used a past version of ffmpeg for brute forcing the codec of a raw audio, unfortunately after an update they ruined the support of raw input audio:
viewtopic.php?p=6519#p6519
I even tried building a RIFF WAV header on the raw input but ffmpeg continue to complain: "Invalid data found when processing input".
ffmpeg is just a huge waste of time.
By the way my tentative with the raw data was:
And it spitted out the error "Option sample_rate not found" but if I remove -ar it says "Output file #0 does not contain any stream".
I hope someone can show us the magic command-line for reading a raw input adpcm audio...
While searching a solution I found an old topic of mine here on zenhax where I used a past version of ffmpeg for brute forcing the codec of a raw audio, unfortunately after an update they ruined the support of raw input audio:
viewtopic.php?p=6519#p6519
I even tried building a RIFF WAV header on the raw input but ffmpeg continue to complain: "Invalid data found when processing input".
ffmpeg is just a huge waste of time.
By the way my tentative with the raw data was:
Code: Select all
ffmpeg -acodec adpcm_psx -ar 32000 -ac 1 -vn -f data -i 32000\9a51aea0 test.wav
I hope someone can show us the magic command-line for reading a raw input adpcm audio...
-
- Posts: 909
- Joined: Sat Aug 09, 2014 11:21 am
Re: Disney's Up .sps .sdx
I've modified script for the PS2 version:
The ss2 files are playable with the vgmstream plugin for Winamp and Foobar2000.
No idea how to construct a valid RIFF header for the PC version though. Might give it a shot with a standard wave header and the appropriate codec short later.
Code: Select all
get DUMMY long # 0x3ea/3eb
get FILES long
get ZERO long
get ZERO long
get BNAME basename
for i = 0 < FILES
get NAME_CRC long
get FREQ short
get DATA_OFF short # ever 0x800
get OFFSET long
get SIZE long
math OFFSET + DATA_OFF
math SIZE - DATA_OFF
if FREQ != 0
callfunction SS2 1
get SSIZE asize MEMORY_FILE
string NAME p "%s_0x%08x.ss2" BNAME NAME_CRC
log NAME 0 SSIZE MEMORY_FILE
endif
next i
startfunction SS2
set CH 1
set INTERLEAVE 0x10
set MEMORY_FILE binary "\x53\x53\x68\x64\x18\x00\x00\x00\x10\x00\x00\x00\xb0\x36\x00\x00\x02\x00\x00\x00\xc0\x2f\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x53\x53\x62\x64\x00\xe8\x11\x00"
append
log MEMORY_FILE OFFSET SIZE
append
putVarChr MEMORY_FILE 0x24 SIZE long
putVarChr MEMORY_FILE 0xc FREQ long
putVarChr MEMORY_FILE 0x14 INTERLEAVE long
putVarChr MEMORY_FILE 0x10 CH byte
endfunction
The ss2 files are playable with the vgmstream plugin for Winamp and Foobar2000.
No idea how to construct a valid RIFF header for the PC version though. Might give it a shot with a standard wave header and the appropriate codec short later.