-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsound_fat_bin.bms
102 lines (96 loc) · 2.34 KB
/
sound_fat_bin.bms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Ubisoft - sound.fat + (sound.bin, stream.bin)
# ---
# Beowulf: The Game (Windows, PlayStation 3, Xbox 360)
putarray 0 0 ""
putarray 0 1 "English"
putarray 0 2 "Japanese"
putarray 0 3 "German"
putarray 0 4 "French"
putarray 0 5 "Spanish"
putarray 0 6 "Italian"
putarray 0 7 "Korean"
putarray 0 8 "TChinese"
putarray 0 9 "Portuguese"
putarray 0 10 "SChinese"
putarray 0 11 "Polish"
putarray 0 12 "Russian"
putarray 0 13 "Hungarian"
putarray 0 14 "Czech"
# these are all of the languages (see above) that were referenced in Beowulf exe
get fat_name filename
if fat_name != "sound.fat"
cleanexit
endif
endian big
get fat_sign long
if fat_sign == 0x0000005a
endian big
elif fat_sign == 0x0000bc42
endian little
else
cleanexit
endif
get languages long
for i = 0 < languages
get lang_num long 0
putarray 1 i lang_num
next i
get bao_entries long
string sound_bin_name p "sound.bin"
open FDSE sound_bin_name 1
math bao_name_type = 0
math multilingual = 0
for i1 = 0 < bao_entries
get level_id long
get sub_entries long
for j1 = 0 < sub_entries
math bao_name_type = 1
callfunction get_bao_info 1
next j1
next i1
math multilingual = 1
for i2 = 0 < languages
getarray lang_num 1 i2
getarray lang_name 0 lang_num
for j2 = 0 < bao_entries
get sub_entries long
for j3 = 0 < sub_entries
math language_sub_entry = j2
math language_sub_entry + 1
math bao_name_type = 2
callfunction get_bao_info 1
next j3
next j2
next i2
startfunction get_bao_info
get bao_id long
get bao_offset long
get bao_size long
if bao_name_type = 1
#string bao_name p "%08x/%08x.bao" level_id bao_id
string bao_name p "%08x.bao" bao_id
elif bao_name_type = 2
#string bao_name p "%s/%04d/%08x.bao" lang_name language_sub_entry bao_id
string bao_name p "%s/%08x.bao" lang_name bao_id
else
set bao_name string "00000000.bao"
endif
xmath is_stream "bao_id & 0xf0000000"
if is_stream == 0x50000000
math sb_exists = 0
if multilingual = 0
string stream_bin_name p "stream.bin"
elif multilingual = 1
string stream_bin_name p "%s/stream.bin" lang_name
endif
open FDSE stream_bin_name 2 EXISTS
if EXISTS == 1
math sb_exists = 1
endif
if sb_exists = 1
log bao_name bao_offset bao_size 2
endif
else
log bao_name bao_offset bao_size 1
endif
endfunction