there are 2(?) types of sound packages:
1. Type 1 - encrypted fsb data stored separately from FSBsize and FSBoffset
XXX header offset 0x65 is offset of FSB1data
Code: Select all
[nametable]
[FEVsize][FEVoffset][FEVdata]
[FSB1size][FSB1offset]
[FSB2size][FSB2offset]
[FSB3size][FSB3offset]
[FSB4size][FSB4offset]
...
[FSB1data]
[FSB2data]
[FSB3data]
[FSB4data]
2. Type 2 - encrypted fsb data stored normaly.
XXX header offset 0x65 is Null
Code: Select all
[nametable]
[FEVsize][FEVoffset][FEVdata]
[FSB1size][FSB1offset][FSB1data]
[FSB2size][FSB2offset][FSB2data]
[FSB3size][FSB3offset][FSB3data]
[FSB4size][FSB4offset][FSB4data]
static location of nametable offset is unknown for me,
so i use some durty code to find it.
SND_uni.bms -
Code: Select all
...
findloc offset string "default"
math offset += 172
...
dont work with SND_MUS_TrainingRoom.xxx and all
foreign language files (i.e. SND_SPEECH_MILEENA_ESP.xxx, SND_SPEECH_SCORPION_GER.xxx etc)
SND_foreign.bms -
Code: Select all
...
findloc SND_ string "SND_"
math SND_ -= 4
goto SND_
get FNsize long
getdstring FNAME FNsize
string FNAME - 4
string FNAME + ".fev"
findloc offset string FNAME
...
dont work with SND_MUS_TrainingRoom.xxx and other default(ENG) language