Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Disney's Up .sps .sdx

Featured Replies

  • Author
  • Localization

emanuelect, posted Fri Dec 10, 2021 7:13 pm (68150)


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.
  • Author
  • Localization

aluigi, posted Fri Dec 10, 2021 8:17 pm (68157)


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:
Code:
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 "x" 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.
  • Author
  • Localization

emanuelect, posted Sat Dec 11, 2021 1:37 am (68164)


How can I convert the extracted files? I have searched the internet, but have found nothing.
  • Author
  • Localization

aluigi, posted Sat Dec 11, 2021 8:55 am (68167)


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:
Code:
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/x" FREQ NAME_CRC # set the folder/name as you wish
    math OFFSET DATA_OFF
    math SIZE - DATA_OFF
    log NAME OFFSET SIZE
next i
Good luck
  • Author
  • Localization

emanuelect, posted Sat Dec 11, 2021 12:24 pm (68170)


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?
  • Author
  • Localization

aluigi, posted Sat Dec 11, 2021 1:00 pm (68173)


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.
  • Author
  • Localization

emanuelect, posted Sat Dec 11, 2021 6:20 pm (68183)


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.
  • Author
  • Localization

aluigi, posted Sat Dec 11, 2021 7:10 pm (68190)


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:
Code:
ffmpeg -acodec adpcm_psx -ar 32000 -ac 1 -vn -f data -i 32000\9a51aea0 test.wav
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...
  • Author
  • Localization

AlphaTwentyThree, posted Sat Jan 01, 2022 9:56 am (68583)


I've modified script for the PS2 version:

Code:
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_0xx.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.
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.