Blackthorne/DATA.DAT

Материал из Old-Games.RU Wiki
Перейти к: навигация, поиск

Файл DATA.DAT содержит в себе все основные ресурсы игры. Он представляет из себя контейнер с таблицей смещений в начале файла. Довольно странно, но названий ресурсов нет, поэтому здесь они будут именоваться по индексу файла DATA.DAT, начиная с 1. Всего записей в файле 353. Все они переменной длины, некоторые запакованы модифицированным алгоритмом LZSS.

В файлах используется порядок байтов little-endian.

Формат заголовка

Смещение Размер Описание
0x0000 4 байта Количество записей (0x161, 353)
0x0004 4 байта * 353 Смещения начала ресурсов в файле DATA.DAT
0x0588 Остаток файла

Некоторые записи в области смещений имеют старшие биты, равные 0x40 вместо 0x00. Для чего это было сделано - непонятно.

Формат упакованного ресурса

Смещение Размер Описание
0x0000 4 байта Размер распакованного ресурса в байтах (без учета этого заголовка)
0x0004 Оставшийся объем Сжатый (?) ресурс

По всей видимости, первые 4 байта, содержащие размер ресурса, добавлялись к ресурсу для выделения нужного размера памяти и контроля целостности при распаковке игрой. Некоторые ресурсы (текстовые ресурсы и звуковые драйверы) не упаковывались вовсе.

Записи в DATA.DAT

Здесь приведены ресурсы по индексу (отсчет ведется от 1), которые удалось идентифицировать. Размер ресурса приведен без учета первых 4 байтов, содержащих размер распакованного ресурса.

Индекс Смещение Старший бит Размер ресурса Распаковка Сжат? Описание
001 1416 0x00 32 32 нет
002 1452 0x00 8543 8543 нет Текстовые ресурсы
003 9999 0x00 8543 8543 нет Текстовые ресурсы
004 18546 0x00 8543 8543 нет Текстовые ресурсы
005 27093 0x00 14775 14775 нет Звуковой драйвер Miles Design для Ad Lib(R) Music Synthesizer Card
006 41872 0x00 14825 14825 нет Звуковой драйвер Miles Design для Creative Labs Sound Blaster(TM) FM / Sound Media Vision Thunderboard(TM) FM Sound
007 56701 0x00 15235 15235 нет Звуковой драйвер Miles Design для Creative Labs Sound Blaster Pro(TM) FM Sound
008 71940 0x00 16357 16357 нет Звуковой драйвер Miles Design для Creative Labs Sound Blaster Pro(TM) FM Sound
009 88301 0x00 15242 15242 нет Звуковой драйвер Miles Design для Media Vision Pro Audio Spectrum(TM) 8 FM Sound
010 103547 0x00 16333 16333 нет Звуковой драйвер Miles Design для Media Vision Pro Audio Spectrum(TM) Plus/16 FM Sound
011 119884 0x00 10816 10816 нет Звуковой драйвер Miles Design для Advanced Gravis UltraSound Card
012 130704 0x00 10707 10707 нет Звуковой драйвер Miles Design для Roland MT-32 or compatible with Roland MPU MIDI Interface / Roland LAPC-1
013 141415 0x00 5023 5023 нет Звуковой драйвер Miles Design для Creative Labs Sound Blaster(TM) Digital Sound / Media Vision Thunderboard(TM) Digital Sound
014 146442 0x00 5261 5261 нет Звуковой драйвер Miles Design для Creative Labs Sound Blaster Pro(TM) Digital Sound
015 151707 0x00 4612 4612 нет Звуковой драйвер Miles Design для Media Vision Pro Audio Spectrum(TM) Digital Sound
016 156323 0x00 5248 5248 нет Звуковой драйвер Miles Design для Forte UltraSound(TM) Digital Sound
017 161575 0x00 3400 4202 да Банк OPL инструментов Miles Design
018 164979 0x00 4128 7804 да Музыка в формате XMI
019 169111 0x00 4222 7656 да Музыка в формате XMI
020 173337 0x00 3481 4534 да Музыка в формате XMI
021 176822 0x00 3949 6928 да Музыка в формате XMI
022 180775 0x00 3940 6706 да Музыка в формате XMI
023 184719 0x00 5015 7434 да Музыка в формате XMI
024 189738 0x00 5475 8974 да Музыка в формате XMI
025 195217 0x00 5760 8938 да Музыка в формате XMI
026 200981 0x00 8788 12118 да Музыка в формате XMI
027 209773 0x00 10324 14226 да Музыка в формате XMI
028 220101 0x00 10546 14414 да Музыка в формате XMI
029 230651 0x00 4813 8908 да Музыка в формате XMI
030 235468 0x00 7122 10962 да Музыка в формате XMI
031 242594 0x00 7035 11240 да Музыка в формате XMI
032 249633 0x00 8276 14102 да Музыка в формате XMI
033 257913 0x00 9224 16032 да Музыка в формате XMI
034 267141 0x00 9228 15886 да Музыка в формате XMI
035 276373 0x00 6445 10360 да Музыка в формате XMI
036 282822 0x00 7840 12214 да Музыка в формате XMI
037 290666 0x00 7874 12180 да Музыка в формате XMI
038 298544 0x00 7244 7479 да Звуковые эффекты в формате Creative Labs Voice
039 305792 0x00 19668 23608 да Звуковые эффекты в формате Creative Labs Voice
040 325464 0x00 12110 16551 да Звуковые эффекты в формате Creative Labs Voice
041 337578 0x00 7102 8175 да Звуковые эффекты в формате Creative Labs Voice
042 344684 0x00 3710 3699 да Звуковые эффекты в формате Creative Labs Voice
043 348398 0x00 3894 3533 да Звуковые эффекты в формате Creative Labs Voice
044 352296 0x00 3593 6575 да Звуковые эффекты в формате Creative Labs Voice
045 355893 0x00 3535 6199 да Звуковые эффекты в формате Creative Labs Voice
046 359432 0x00 3638 6199 да Звуковые эффекты в формате Creative Labs Voice
047 363074 0x00 3793 6455 да Звуковые эффекты в формате Creative Labs Voice
048 366871 0x00 1956 2103 да Звуковые эффекты в формате Creative Labs Voice
049 368831 0x00 1235 1335 да Звуковые эффекты в формате Creative Labs Voice
050 370070 0x00 5839 7735 да Звуковые эффекты в формате Creative Labs Voice
051 375913 0x00 21639 28983 да Звуковые эффекты в формате Creative Labs Voice
052 397556 0x00 7634 9847 да Звуковые эффекты в формате Creative Labs Voice
053 405194 0x00 6558 7847 да Звуковые эффекты в формате Creative Labs Voice
054 411756 0x00 9920 10807 да Звуковые эффекты в формате Creative Labs Voice
055 421680 0x00 119421 110647 да Звуковые эффекты в формате Creative Labs Voice
056 541105 0x00 48974 68407 да Звуковые эффекты в формате Creative Labs Voice
057 590083 0x00 9043 12343 да Звуковые эффекты в формате Creative Labs Voice
058 599130 0x00 10256 11591 да Звуковые эффекты в формате Creative Labs Voice
059 609390 0x00 29240 36151 да Звуковые эффекты в формате Creative Labs Voice
060 638634 0x00 52542 50743 да Звуковые эффекты в формате Creative Labs Voice
061 691180 0x00 33982 39767 да Звуковые эффекты в формате Creative Labs Voice
062 725166 0x00 18147 28471 да Звуковые эффекты в формате Creative Labs Voice
063 743317 0x00 9113 9765 да Звуковые эффекты в формате Creative Labs Voice
064 752434 0x00 20329 34309 да Звуковые эффекты в формате Creative Labs Voice
065 772767 0x00 48386 48386 нет
066 821157 0x40 131542 635904 да
067 952703 0x40 39606 87552 да
068 992313 0x40 23247 86016 да
069 1015564 0x40 36206 86016 да
070 1051774 0x40 19928 39936 да
071 1071706 0x40 16865 108288 да
072 1088575 0x00 53 48 да
073 1088632 0x00 53 48 да
074 1088689 0x00 7062 15364 да Половинчатая аномалия
075 1095755 0x00 3119 5124 да
076 1098878 0x40 3168 11264 да неизвестный спрайт
077 1102050 0x00 5276 9216 да
078 1107330 0x00 304 1152 да
079 1107638 0x00 52 48 да
080 1107694 0x00 45 48 да
081 1107743 0x00 50 48 да
082 1107797 0x00 52 48 да
083 1107853 0x00 53 48 да
084 1107910 0x00 53 48 да
085 1107967 0x00 54 48 да
086 1108025 0x00 54 48 да
087 1108083 0x00 54 48 да
088 1108141 0x00 53 48 да
089 1108198 0x00 41 48 да
090 1108243 0x00 53 48 да
091 1108300 0x00 40 48 да
092 1108344 0x00 156 768 да Blackthorne/VGA-палитра цветов
093 1108504 0x00 3983 9024 да
094 1112491 0x00 899 1128 да
095 1113394 0x00 360 432 да
096 1113758 0x00 162 448 да
097 1113924 0x00 85 107 да
098 1114013 0x00 193 768 да Blackthorne/VGA-палитра цветов
099 1114210 0x00 7887 30976 да
100 1122101 0x00 1358 3872 да
101 1123463 0x00 1425 1680 да
102 1124892 0x00 222 448 да
103 1125118 0x00 93 107 да
104 1125215 0x00 239 768 да Blackthorne/VGA-палитра цветов
105 1125458 0x00 14638 52288 да
106 1140100 0x00 1976 6536 да
107 1142080 0x00 2062 2152 да
108 1144146 0x00 324 896 да
109 1144474 0x00 268 896 да
110 1144746 0x00 107 118 да
111 1144857 0x00 233 576 да
112 1145094 0x00 199 768 да Blackthorne/VGA-палитра цветов
113 1145297 0x00 5619 19200 да
114 1150920 0x00 1863 2400 да
115 1152787 0x00 754 824 да
116 1153545 0x00 130 448 да
117 1153679 0x00 87 97 да
118 1153770 0x00 202 768 да Blackthorne/VGA-палитра цветов
119 1153976 0x00 4582 25152 да
120 1158562 0x00 376 3144 да
121 1158942 0x00 1082 1272 да
122 1160028 0x00 402 448 да
123 1160434 0x00 87 107 да
124 1160525 0x00 149 768 да Blackthorne/VGA-палитра цветов
125 1160678 0x00 47 48 да
126 1160729 0x00 9046 34304 да
127 1169779 0x00 977 4288 да
128 1170760 0x00 1410 1560 да
129 1172174 0x00 343 448 да Файл соответствия букв алфавита (фрагмент ASCII)?
130 1172521 0x00 159 448 да
131 1172684 0x00 164 202 да
132 1172852 0x00 213 265 да
133 1173069 0x00 164 202 да
134 1173237 0x00 1241 4608 да
135 1174482 0x00 535 1152 да
136 1175021 0x40 4071 15360 да неизвестный спрайт
137 1179096 0x00 344 1152 да
138 1179444 0x00 608 1152 да
139 1180056 0x40 2574 8192 да неизвестный спрайт
140 1182634 0x00 149 768 да Blackthorne/VGA-палитра цветов
141 1182787 0x00 53 48 да
142 1182844 0x00 4113 18688 да неизвестный спрайт
143 1186961 0x00 280 2336 да
144 1187245 0x00 771 824 да
145 1188020 0x00 270 448 да Файл соответствия букв алфавита (фрагмент ASCII)?
146 1188294 0x00 146 176 да
147 1188444 0x40 5642 16384 да неизвестный спрайт
148 1194090 0x40 2094 9216 да неизвестный спрайт
149 1196188 0x40 1202 4096 да неизвестный спрайт
150 1197394 0x00 149 768 да Blackthorne/VGA-палитра цветов
151 1197547 0x00 10158 54144 да
152 1207709 0x00 4204 6768 да
153 1211917 0x00 2402 3040 да
154 1214323 0x00 166 448 да
155 1214493 0x00 1002 2560 да
156 1215499 0x00 101 121 да
157 1215604 0x00 216 768 да Blackthorne/VGA-палитра цветов
158 1215824 0x00 53 48 да
159 1215881 0x00 4985 21568 да
160 1220870 0x00 322 2696 да
161 1221196 0x00 947 1112 да
162 1222147 0x00 335 448 да
163 1222486 0x00 152 178 да
164 1222642 0x40 781 5120 да
165 1223427 0x40 2178 15360 да
166 1225609 0x00 365 768 да Blackthorne/VGA-палитра цветов
167 1225978 0x00 11443 40384 да
168 1237425 0x00 1378 5048 да
169 1238807 0x00 1695 1840 да
170 1240506 0x00 297 448 да
171 1240807 0x00 123 448 да
172 1240934 0x00 224 448 да
173 1241162 0x00 259 286 да
174 1241425 0x00 144 768 да Blackthorne/VGA-палитра цветов
175 1241573 0x00 4286 24192 да
176 1245863 0x00 361 3024 да
177 1246228 0x00 1088 1296 да
178 1247320 0x00 387 448 да
179 1247711 0x00 235 253 да
180 1247950 0x00 357 768 да Blackthorne/VGA-палитра цветов
181 1248311 0x00 28416 64000 да
182 1276731 0x00 2358 8000 да
183 1279093 0x00 7895 8064 да
184 1286992 0x00 1410 3136 да
185 1288406 0x00 1230 3136 да
186 1289640 0x00 2978 6720 да
187 1292622 0x00 1622 6720 да
188 1294248 0x00 6393 17920 да
189 1300645 0x00 3865 17920 да
190 1304514 0x00 8552 18240 да
191 1313070 0x00 4908 18240 да
192 1317982 0x00 474 697 да
193 1318460 0x00 493 753 да
194 1318957 0x00 727 1045 да
195 1319688 0x00 1009 1466 да
196 1320701 0x00 974 1470 да
197 1321679 0x00 214 265 да
198 1321897 0x00 389 768 да Blackthorne/VGA-палитра цветов
199 1322290 0x00 22276 64960 да
200 1344570 0x00 2153 8120 да
201 1346727 0x00 5351 6024 да
202 1352082 0x00 4726 12544 да
203 1356812 0x00 2669 12544 да
204 1359485 0x00 764 1271 да
205 1360253 0x00 837 1380 да
206 1361094 0x00 835 1272 да
207 1361933 0x00 836 1295 да
208 1362773 0x00 182 226 да
209 1362959 0x00 148 176 да
210 1363111 0x00 215 265 да
211 1363330 0x00 154 1152 да
212 1363488 0x00 337 768 да Blackthorne/VGA-палитра цветов
213 1363829 0x00 20682 55872 да неизвестный спрайт
214 1384515 0x00 2310 6984 да
215 1386829 0x00 4324 5000 да
216 1391157 0x00 3656 13440 да
217 1394817 0x00 2816 13440 да
218 1397637 0x00 817 1450 да
219 1398458 0x00 988 1822 да
220 1399450 0x00 923 1761 да
221 1400377 0x00 903 1593 да
222 1401284 0x00 215 265 да
223 1401503 0x00 232 576 да
224 1401739 0x00 271 576 да
225 1402014 0x00 333 576 да
226 1402351 0x00 336 576 да
227 1402691 0x00 287 576 да
228 1402982 0x00 324 576 да
229 1403310 0x00 1068 4608 да
230 1404382 0x00 342 768 да Blackthorne/VGA-палитра цветов
231 1404728 0x00 23558 64832 да неизвестный спрайт
232 1428290 0x00 2178 8104 да
233 1430472 0x00 4785 5448 да
234 1435261 0x00 2958 8960 да
235 1438223 0x00 2428 8960 да
236 1440655 0x00 785 1290 да
237 1441444 0x00 782 1297 да
238 1442230 0x00 782 1246 да
239 1443016 0x00 838 1420 да
240 1443858 0x00 310 360 да
241 1444172 0x40 191 768 да Blackthorne/VGA-палитра цветов
242 1444367 0x40 697 3072 да
243 1445068 0x00 236 576 да
244 1445308 0x40 7301 27648 да
245 1452613 0x00 419 864 да
246 1453036 0x00 95 576 да
247 1453135 0x40 910 3072 да
248 1454049 0x00 2948 9216 да
249 1457001 0x00 162 288 да
250 1457167 0x40 288 1792 да
251 1457459 0x40 436 1536 да
252 1457899 0x00 310 576 да
253 1458213 0x00 465 864 да
254 1458682 0x40 167 1024 да
255 1458853 0x00 62 288 да
256 1458919 0x00 155 288 да
257 1459078 0x40 754 1536 да
258 1459836 0x00 246 1152 да
259 1460086 0x40 448 3072 да неизвестный спрайт
260 1460538 0x40 608 4096 да
261 1461150 0x40 106 512 да
262 1461260 0x40 537 1792 да
263 1461801 0x00 127 288 да
264 1461932 0x00 511 2880 да
265 1462447 0x00 53 48 да
266 1462504 0x00 52 48 да
267 1462560 0x00 53 48 да
268 1462617 0x00 53 48 да
269 1462674 0x40 842 3072 да
270 1463520 0x40 3633 15360 да
271 1467157 0x40 537 3328 да неизвестный спрайт !!
272 1467698 0x00 475 864 да
273 1468177 0x40 2551 10240 да
274 1470732 0x40 1441 10240 да
275 1472177 0x40 624 4608 да
276 1472805 0x40 4171 13824 да
277 1476980 0x00 1594 6912 да
278 1478578 0x00 410 864 да
279 1478992 0x00 40 48 да
280 1479036 0x00 160 1152 да
281 1479200 0x00 133 576 да
282 1479337 0x40 2780 18432 да
283 1482121 0x40 1365 11264 да
284 1483490 0x40 1522 8192 да
285 1485016 0x00 164 284 да
286 1485184 0x00 196 284 да
287 1485384 0x00 195 268 да
288 1485583 0x00 183 248 да
289 1485770 0x00 848 4096 да шрифт
290 1486622 0x00 86 512 да
291 1486712 0x00 808 4096 да шрифт
292 1487524 0x00 351 512 да
293 1487879 0x00 52 48 да
294 1487935 0x00 43 48 да
295 1487982 0x00 53 48 да
296 1488039 0x00 54 48 да
297 1488097 0x00 44 48 да
298 1488145 0x00 35 48 да
299 1488184 0x00 52 48 да
300 1488240 0x00 53 48 да
301 1488297 0x00 51 48 да
302 1488352 0x00 50 48 да
303 1488406 0x00 54 48 да
304 1488464 0x00 52 48 да
305 1488520 0x00 52 48 да
306 1488576 0x00 191 448 да
307 1488771 0x00 644 3136 да
308 1489419 0x00 281 448 да
309 1489704 0x00 4254 12094 да Музыка в формате XMI
310 1493962 0x00 6638 15784 да Музыка в формате XMI
311 1500604 0x00 7694 16284 да Музыка в формате XMI
312 1508302 0x00 6210 11206 да Музыка в формате XMI
313 1514516 0x00 10204 15982 да Музыка в формате XMI
314 1524724 0x00 9218 13312 да Музыка в формате XMI
315 1533946 0x40 30358 78336 да
316 1564308 0x00 7248 17920 да
317 1571560 0x00 3872 17920 да
318 1575436 0x00 3877 10752 да
319 1579317 0x00 2213 10752 да
320 1581534 0x00 4388 14336 да
321 1585926 0x00 2566 14336 да
322 1588496 0x00 4139 10752 да
323 1592639 0x00 2155 10752 да неизвестный спрайт
324 1594798 0x00 5246 16128 да
325 1600048 0x00 3086 16128 да
326 1603138 0x00 4397 12544 да
327 1607539 0x00 2988 12544 да
328 1610531 0x00 6125 17920 да
329 1616660 0x00 4134 17920 да
330 1620798 0x00 3075 8960 да
331 1623877 0x00 2445 8960 да
332 1626326 0x00 3146 8960 да
333 1629476 0x00 2543 8960 да
334 1632023 0x00 3040 8960 да
335 1635067 0x00 2367 8960 да
336 1637438 0x00 367 896 да
337 1637809 0x00 301 896 да
338 1638114 0x40 2233 6144 да
339 1640351 0x40 2322 6144 да
340 1642677 0x40 1633 9216 да
341 1644314 0x40 1346 3072 да
342 1645664 0x00 148 768 да Blackthorne/VGA-палитра цветов
343 1645816 0x00 4485 13504 да
344 1650305 0x00 203 1688 да
345 1650512 0x00 523 544 да
346 1651039 0x00 192 448 да
347 1651235 0x00 91 107 да
348 1651330 0x00 305 448 да
349 1651639 0x00 96 112 да
350 1651739 0x00 96 112 да
351 1651839 0x00 91 107 да
352 1651934 0x00 182 207 да
353 1652120 0x00 0 0 нет Заполнитель, не используется

Пример распаковки DATA.DAT (Perl)

#!/usr/bin/perl

use warnings;
use strict;

my ($buffer, $size) ;
my (@offset, @bits, @real_sizes);

open(DATA, "<", "DATA.DAT");
read(DATA, $buffer, 4);

# количество записей в файле
$offset[0] = unpack("L8", $buffer);
# <= || < ?
for (my $i = 1; $i <= $offset[0]; $i++) {
        seek(DATA, $i * 4, 0);
        read(DATA, $buffer, 4);
        # Некоторые старшие биты почему-то выставлены в 0x40. Контрольные точки? Антиотладочные приемы?
        $offset[$i] = unpack("L8", $buffer) & 0xFFFFFF;
        if((unpack("L8", $buffer) & 0xFF000000) == 0x40000000) {
#               print "Найден 0x40 - Индекс $i, смещение $offset[$i]\n";
                $bits[$i] = "0x40";
        } else {
                $bits[$i] = "0x00";
        }
}
my $filesize = -s "DATA.DAT";
push(@offset, $filesize);
print "^ Индекс\t^ Смещение \t^ Старший бит\t^ Размер ресурса\t^ Распаковка\t^ Сжат?\t^ Описание ^\n";
for (my $i = 1; $i <= $offset[0]; $i++) {
        my $filename = sprintf("FILE%03d.BIN", $i);
        open(FILE, ">", $filename);
        seek(DATA, $offset[$i], 0);
        # Пока есть еще данные
        if ($offset[$i+1]) {
                # -4 - размер заголовка ресурса, содержащий объем распакованного ресурса
                $size = $offset[$i+1] - $offset[$i] ;
                my $clean_size = $size - 4;
                # Размер ресурса
                read(DATA, $buffer, 4);
                $real_sizes[$i] = unpack("L8", $buffer);

                seek(DATA, $offset[$i], 0);
                read(DATA, $buffer, $size);

                print FILE $buffer;
                close(FILE);
                my $packed = "да";
                if ($clean_size == $real_sizes[$i]) {
                        $packed = "нет";
                }
                printf "| %03d\t ", $i;
                print "| $offset[$i]\t | $bits[$i]\t | $clean_size\t | $real_sizes[$i]\t | $packed\t |   |\n";
        }
}

close(DATA);