ripping info - bnnm/vgmstream GitHub Wiki
Random info for harder-to-guess cases.
That is KT's current wave bank. It works like this: game loads .srsa
in memory then it can play audio inside .srsa
, or use the info to load streams from .srst
. (same for .asbin/stbin/etc, they are the same format).
These .srsa/srst can be inside .file/.fdata
and similar bigfiles depending on the game. First you need to extract them with tools like this bms. They can be found externally too, usually as .asbin+.stbin.
Once you have .srst there are .bms and such scripts that can extract subfiles from it, the results usually playable in vgmstream. However I recommend keeping .srsa
+.srst
untouched because:
- there are (encrypted) stream names inside
.srsa
(note that names are optional, but bgm usually has them) - some
.srst
are encrypted, making extracting them a hassle - some
.srsa
have jingles/music/etc, but can't be extracted (memory/srsa audio is a bit different vs stream/srst audio)
vgmstream already handles all that = easier. If you have BGM.srsa
+ BGM.srst
in the same dir just load .srsa
and it'll show all audio from BGM.srst with proper names (if names were included).
One separate problem is that Koei Tecmo's engine often (but not always) uses hashed names, and data is also commonly inside other bigfiles. Meaning you may find 0x3a160928.srsa
and 0x272c6efb.srst
look unrelated but are actually the same pair.
To handle those hashed names so vgmstream can play .srsa
+.srst
correctly you can do this:
- use this bms to extract
.srsa
and.srst
from bigfiles like.file
/.fdata
- any other tool that handles Koei Tecmo's Engine and extracts
.srsa
/srst
(like Cethleann or RDBTool) is fine too -
.file
usually have.srst
and.fdata
has.srsa
- any other tool that handles Koei Tecmo's Engine and extracts
- put all
.srsa
+.srst
in the same dir - run this python script to match
.srsa
with.srst
- in some games you may need to edit the .py and set
FULL_MATCH = False
to get a proper match.
- in some games you may need to edit the .py and set
That should create a .txtm
file in the dir that tells vgmstream how to match .srsa
with .srst
even if names aren't the same. Now play the .srsa with .srst
and .txtm
in the dir and vgmstream should play the file.
You could also rename the hashed filenames to something more sensical. Reversing KT's hashed names isn't that easy but they reuse names often though: 0x3a160928 = SE1_Common_BGM.SRSA and 0x272c6efb = SE1_Common_BGM.SRST, more or less. Here are some filelists.
In some cases the .py may not find a match for some .srsa
no matter the settings. Usually this means the .srst
is from the localized audio folders, or sometimes it just doesn't exist. For example I've seen .srsa
in the base game for DLC audio (the .srst
should be downloaded separately). It could be a bug as well though.
rUGP, âge's engine used in a bunch of visual novels (not only from âge) uses custom .ogg called ".oor".
The .rio filesystem in this engine is particularly complex + often has encrypted TOC. Tools like GARBRO only handle early versions, plus it seems like every other game uses a new versions of the engine.
So instead I made a tool that extracts raw .oor from the .rio packages: https://github.com/bnnm/vgm-tools/tree/master/misc/oor-extractor
Files aren't sorted in .rio, so one may want to use the -s xxxx
to filter smaller (voice) files. .oor are playable in vgmstream.