11-13-2022, 12:27 PM
(This post was last modified: 11-13-2022, 05:55 PM by Random Talking Bush.)
I came up with a method which actually seems like a pretty reliable and universal method for ripping SFX content out of PS1, PS2 and even PSP games.
1. Find the ROM files on {LINK REMOVED, DO NOT LINK TO ROM FILES!}
2. Open the ROM with CDmage, choose M2 for PS1 games
https://www.romhacking.net/utilities/1435/
3. Extracted everything from the root to a "Dump" folder
4. Flatten that folder.
The method of how i did it was using windows explorer, searching in the folder for the wildcard character *, then selecting everything but the folders and press CTRL+X, then in a temporary folder i use teracopy to paste all files in in that single depth, using an option to auto rename files with the same name
5. Download this amazing utility, PSound:
https://www.romhacking.net/utilities/679/
6. IMPORTANT: to bruteforce through all the files we put in a flat folder containing all the game data found in the ROM, we have to make settings in PSound to make the scanning process automated (it isn't by default for some weird reason)
Options in PSound:
- Autostart scanning (ON)
- Autoclose scan dialog box (ON)
- Scan Dropped files (ON)
7. Drag n drop all the ROM files we put in that single temporary folder. The reason we had to flatten the extracted file tree from CDMage, is because PSound can't scan folders reccursively, so we need ALL game files to be in a single folder. Maybe my english is not the best and i'm explaining it in a confusing way, but basically just make sure that after extracting files from CDMage, those files are probably in some kind of folder tree with files located in multiple folders. The method i described above in 4), is how we then get all these files to be in just a single folder instead.
8. After PSound finish scanning, just have a listen to the sounds with the integrated player. Listen to the pitch. If it sounds right, you're good to go, but if it's too high pitched, go to settings in PSound and force a lower sample rate. For one game i did, i had to force it at 16000. If you encounter a game where the sounds are lower in pitch than they should be, try one of the higher sampling rates. But for a lot of games it's best to not force a sampling rate, this is just if PSound is not able to pick up the correct rate from .vh files etc.
One problem with this is, that because we just bruteforce through all the game files, PSound might also find a lot of music, and if you force a specific sampling rate, that music might end up in a different pitch than the SFX, because in some games the SFX and music are encoded at different sampling rates. That's another reason why it's best to not force a sampling rate, if nothing sounds weird.
9. After verifying that the scans are good, select all CTRL+A, and go to file --> "convert", select a folder where .wav will get dumped
10. Possibly this folder now contains some duplicate data, since we just bruteforced and searched ALL game data.
To get rid of duplicates, use a software duplicate file remover. Any will do. I used this free GUI Python app from:
https://github.com/alessandrobelottidev/...tesCleaner
Btw this step IS probably important, so far using this method, i haven't tried a game that didn't have a lot of duplicates. But heck computers are fast these days, and this bruteforce method doesn't take too long but should make shure you get EVERYTHING that's possible to rip in there
Disclaimer: I actually only tried this method on PS1 and PSP games, but i can't see why it wouldn't work on PS2 as well, it seems like PSound is designed for that, and to my knowledge due to backwards compatibility with the PS1, the SFX encoding is basically the same on the PS2. But this is actually just speculation on my side, i only got intro ROM hacking yesterday where i learned myself this method and tested it out for 3 games, with great success in all cases. It seems like it's a method that will literally get you everything, and it's great because it's bruteforced, so you don't have to guess at which files the sounds are actually located in.
However as i learned, *most* of the SFX audio is actually stored in .VH + .VB file pairs, the VH being a header file, and VB being the body or actual audio data. These pair up to form a single audio "file", you can use other tools like GenPSF to combine these pairs into VAB files for example. VAB is like a data collection of all the individual SFX, and then there's VAG which is like the individual samples stored "inside" a VAB. But. Armed with PSound and bruteforcing you shouldn't need to worry to be honest, just let PSound scan all the files. PSound identifies VAN and VAG aswell btw, it seems like PSound is the way to go especially for SFX since they are usually stored in more obscure file formats that are harder to work with at an individual file leve, but this bruteforce method made it incredibly easy to get any SFX you desire out of these old games.
While using this method on a PSP game i actually didn't identify any .VH or. VB files. What i did learn about the PSP is they use a format called AT3 for music files, much like the AX file format in the PS1 used for music usually and vox / bigger sound flies. But this AT3 however is very easy, since you can actually just rename files to be .wav, and then it will open in anything. You can even just straight up drop the AT3 files into VLC, it will recognize it and play.
But the SFX for the game i was hacking was not using AT3, i actually never figured out where the SFX data came from. But after bruteforcing my way through all the data, i was left with 1k+ SFX samples (after removing duplicates), so i'm quite sure i got everything anyway.
1. Find the ROM files on {LINK REMOVED, DO NOT LINK TO ROM FILES!}
2. Open the ROM with CDmage, choose M2 for PS1 games
https://www.romhacking.net/utilities/1435/
3. Extracted everything from the root to a "Dump" folder
4. Flatten that folder.
The method of how i did it was using windows explorer, searching in the folder for the wildcard character *, then selecting everything but the folders and press CTRL+X, then in a temporary folder i use teracopy to paste all files in in that single depth, using an option to auto rename files with the same name
5. Download this amazing utility, PSound:
https://www.romhacking.net/utilities/679/
6. IMPORTANT: to bruteforce through all the files we put in a flat folder containing all the game data found in the ROM, we have to make settings in PSound to make the scanning process automated (it isn't by default for some weird reason)
Options in PSound:
- Autostart scanning (ON)
- Autoclose scan dialog box (ON)
- Scan Dropped files (ON)
7. Drag n drop all the ROM files we put in that single temporary folder. The reason we had to flatten the extracted file tree from CDMage, is because PSound can't scan folders reccursively, so we need ALL game files to be in a single folder. Maybe my english is not the best and i'm explaining it in a confusing way, but basically just make sure that after extracting files from CDMage, those files are probably in some kind of folder tree with files located in multiple folders. The method i described above in 4), is how we then get all these files to be in just a single folder instead.
8. After PSound finish scanning, just have a listen to the sounds with the integrated player. Listen to the pitch. If it sounds right, you're good to go, but if it's too high pitched, go to settings in PSound and force a lower sample rate. For one game i did, i had to force it at 16000. If you encounter a game where the sounds are lower in pitch than they should be, try one of the higher sampling rates. But for a lot of games it's best to not force a sampling rate, this is just if PSound is not able to pick up the correct rate from .vh files etc.
One problem with this is, that because we just bruteforce through all the game files, PSound might also find a lot of music, and if you force a specific sampling rate, that music might end up in a different pitch than the SFX, because in some games the SFX and music are encoded at different sampling rates. That's another reason why it's best to not force a sampling rate, if nothing sounds weird.
9. After verifying that the scans are good, select all CTRL+A, and go to file --> "convert", select a folder where .wav will get dumped
10. Possibly this folder now contains some duplicate data, since we just bruteforced and searched ALL game data.
To get rid of duplicates, use a software duplicate file remover. Any will do. I used this free GUI Python app from:
https://github.com/alessandrobelottidev/...tesCleaner
Btw this step IS probably important, so far using this method, i haven't tried a game that didn't have a lot of duplicates. But heck computers are fast these days, and this bruteforce method doesn't take too long but should make shure you get EVERYTHING that's possible to rip in there
Disclaimer: I actually only tried this method on PS1 and PSP games, but i can't see why it wouldn't work on PS2 as well, it seems like PSound is designed for that, and to my knowledge due to backwards compatibility with the PS1, the SFX encoding is basically the same on the PS2. But this is actually just speculation on my side, i only got intro ROM hacking yesterday where i learned myself this method and tested it out for 3 games, with great success in all cases. It seems like it's a method that will literally get you everything, and it's great because it's bruteforced, so you don't have to guess at which files the sounds are actually located in.
However as i learned, *most* of the SFX audio is actually stored in .VH + .VB file pairs, the VH being a header file, and VB being the body or actual audio data. These pair up to form a single audio "file", you can use other tools like GenPSF to combine these pairs into VAB files for example. VAB is like a data collection of all the individual SFX, and then there's VAG which is like the individual samples stored "inside" a VAB. But. Armed with PSound and bruteforcing you shouldn't need to worry to be honest, just let PSound scan all the files. PSound identifies VAN and VAG aswell btw, it seems like PSound is the way to go especially for SFX since they are usually stored in more obscure file formats that are harder to work with at an individual file leve, but this bruteforce method made it incredibly easy to get any SFX you desire out of these old games.
While using this method on a PSP game i actually didn't identify any .VH or. VB files. What i did learn about the PSP is they use a format called AT3 for music files, much like the AX file format in the PS1 used for music usually and vox / bigger sound flies. But this AT3 however is very easy, since you can actually just rename files to be .wav, and then it will open in anything. You can even just straight up drop the AT3 files into VLC, it will recognize it and play.
But the SFX for the game i was hacking was not using AT3, i actually never figured out where the SFX data came from. But after bruteforcing my way through all the data, i was left with 1k+ SFX samples (after removing duplicates), so i'm quite sure i got everything anyway.