This is for those games where Nova Software Extractor stops at a certain point (such as games like Xenosaga).
Before I get any farther, this method does not work on Kingdom Hearts. I have no idea why, the FMVs are probably encoded differently.
Things you will need:
The File Splitter (optional, and probably not recommended)
A hex editor (I use WinHex, because it can handle 4 gig files)
Notepad, or a couple pages of scrap paper
A LOT of time
First of all, let me say that this is not as quick as splitting the files and then using Nova on them. Xenosaga has around 20 MILLION PAGES
of hex code you need to search through. (I put in six hours yesterday, and I'm still not even halfway.) You need to have a lot of time on your hands.
If you open any .pss file in a hex editor, you'll see a couple things that are always the same. First, the file will begin with the hex code
0000 01BA 4400 0400 0401
and end with the hex code
FFFF FFFF 0000 01B9
(i.e. the header and footer of the files.)
For practice, I suggest using DVD Decrypter to make an image of Final Fantasy X-2. This game has clearly defined .pss files, as there's a huge chunk of zeros before and after every .pss file. In Xenosaga, they're not that obvious, and since there's 50+ files in the first 4 gigs, you want to make sure you're not writing down every single "start code". A side note: it seems that "end codes" are always correct, while "start codes" only occur at the beginning and in the middle of .pss files. If you're writing down every single start code, about a third of these will be in the middle of the .pss file. Which is why I say practice with FFX-2.
Make the image of the game, and split into the file sizes you like. Be aware that if you do split, you'll probably split the file in the middle of a .pss file, so the number of start and end codes won't match.
Load the file into the hex editor. Begin searching for the hex value (not the text string) 0000 01BA 4400 0400 0401
. Make sure to remove all the spaces. When you find one, make sure it's the header. It will usually, but not always, have "encoded by TMPGEnc" in the text strings on the right side of the program. It will most likely have a bunch of successive numbers in the next few lines (you'll see several 15s, then 16s, then 17s, etc.) If it's a header, write the offset down in notepad. (For example: 4D12 5000
.) Then continue searching, on to the next one. If it's not a header (i.e. it's surrounded by a bunch of other data) don't write it down.
After you have all your offsets for the headers, begin searching for the end codes. (FFFF FFFF 0000 01B9) Remember to remove the spaces. When you find one, write it next to the offset of the header.
starting offset --> 4D125000 - 4D501000
<-- ending offset
Copy all the hex code from 0000 01BA 4400 0400 0401
to FFFF FFFF 0000 01B9
. Since there will probably be several hundred thousand pages of code to copy (per .pss file) you need to have a trick. WinHex lets you place a marker at a specific point, so I place it on B9. Then you have to highlight a little bit around the marker (so it knows you want to copy it). Then I go to the offset I want, double click on 01 (the first part of the start code), and it highlights everything from the marker to the beginning of the header. Then copy into a new file (control+shift+N) and save as a .pss file.
Repeat Step 4 another 100 times, and you'll have all your .pss files. Then you get to convert them all!
Now, I imagine this can be altered to find other types of files, such as the FMVs in Kingdom Hearts, the .hack series, and Silent Hill 3. The problem is, I have no idea what the headers of those files look like. Maybe it's just the .m2v file, and the music/sound is elsewhere? So if anyone has any idea, please post. : )