鬼火 发表于 2007-3-4 13:21:43

DRS 文件结构

为了说明DRS文件得结构, 用gamedata_x1_p1.drs做例子.
1. 头文件头文件包括版权, 版本和文件类型(tribe),数据表得数量,第一个文件得位置,每个数据表里的文件类型,数据表的位置,和里面文件的数量。
00000000:43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39    Copyright (c) 19
00000010:39 37 20 45 6E 73 65 6D 62 6C 65 20 53 74 75 64    97 Ensemble Stud
00000020:69 6F 73 2E 1A 00 00 00 31 2E 30 30 74 72 69 62    ios.....1.00trib
00000030:65 00 00 00 00 00 00 00 02 00 00 00 AC 00 00 00    e...........¬...
00000040:61 6E 69 62 58 00 00 00 01 00 00 00 20 70 6C 73    anibX....... pls
00000050:64 00 00 00 06 00 00 00                                          d......         

格式
-----------------------------------------------------------------------
长度          类型            描述
-----------------------------------------------------------------------
40 bytes    string         版权信息Copyright (c) 1997 Ensemble Studios\032.
4 bytes      string         文件版本   1.00
12 bytes    string         文件类型tribe
4 bytes      long         数据表的数量02 00 00 00
4 bytes      long         第一个文件的位置 AC 00 00 00
4 bytes      string         第一个表的数据类型 61 6E 69 62 (anib)
4 bytes      long         第一个表的位置58 00 00 00
4 bytes      long         第一个表的中文件数量 01 00 00 00
4 bytes      string         第二个表的数据类型 20 70 6C 73 ( pls)
4 bytes      long         第二个表的位置64 00 00 00
4 bytes      long         第二个表中文件的数量 06 00 00 00
-----------------------------------------------------------------------
注意,除了版权、版本信息以外,所有的数据都是用4字节的dword存放的,dword中数据是从后往前读的。比如说 54000 是F0 D2 00 00
所以, 第一表是二进制文件(binary),包括所文本文件。第二个表是SLP图象文件。


2. 数据表
数据表存放每个嵌入文件的名字、位置、和长度,
00000058:d4 d3 00 00 ac 00 00 00 01 05 00 00 30 14 00 00    Ôó..¬.......0...
00000068:ad 05 00 00 82 38 00 00 38 14 00 00 2f 3e 00 00    -...‚8..8.../>..
00000078:82 38 00 00 3e 14 00 00 b1 76 00 00 82 38 00 00    ‚8..>...±v..‚8..
00000088:62 14 00 00 33 af 00 00 d6 78 02 00 63 14 00 00    b...3ˉ..Öx..c...
00000098:09 28 03 00 d6 78 02 00 64 14 00 00 df a0 05 00    .(..Öx..d...ß ..
000000a8:d6 78 02 00                                                               Öx..            

其中D4 D3 00 00 是第一个文件的名字,54228. AC 00 00 00 是位置,01 05 00 00 是长度。后同。

格式:
-----------------------------------------------------------------------
长度            类型   描述
-----------------------------------------------------------------------
4 bytes         long      文件名   D4 D3 00 00
4 bytes         long      文件位置AC 00 00 00
4 bytes         long      长度   01 05 00 00
-----------------------------------------------------------------------

3. 嵌入的文件
000000ac:2f 2a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 4c 49   /* ********* BLI
000000bc:4e 44 20 52 41 4e 44 4f 4d 20 2a 2a 2a 2a 2a 2a    ND RANDOM ******
000000cc:2a 2a 2a 2a 20 2a 2f 0d 0a 2f 2a 20 32 35 20 73   **** */../* 25 s
000000dc:70 72 20 30 31 20 2a 2f 0d 0a 0d 0a 0d 0a 23 69   pr 01 */......#i
000000ec:6e 63 6c 75 64 65 5f 64 72 73 20 72 61 6e 64 6f    nclude_drs rando
000000fc:6d 5f 6d...................... 后略.                                     m_m            

没什么好讲的,从AC的位置开始,一个接一个,一直到文件尾
DRS文件的里的资源有的优先度, 比如说gamedata_x1_p1.drs里面龟船的图象就可以覆盖掉graphics.drs里同名的龟船文件...
至于文件优先度的顺序,在age2_x1.exe里面。
所以说如果要替换DRS里的哪个文件, 完全没有必要在原文件中替换。比如说要替换graphics.drs里的图象,没有必要替换graphics.drs里的原图。可以把新图加到gamedata_x1_p1.drs里面,用同样的文件名,系统会自动覆盖掉原来的。这样补丁发布起来就容易多了。

[此贴子已经被作者于2007-3-13 12:20:39编辑过]

_MZR_阔比多华 发表于 2007-3-4 20:28:30

好象是MPS用的吧

qs 发表于 2007-3-4 20:30:16

great!

_CCC_大智 发表于 2007-3-4 19:13:32

Wow,真是太强了

Rev 发表于 2007-3-23 22:22:56

基本上看不懂

__破天神剑__ 发表于 2007-3-24 17:44:35

能说详细点吗?~!完全不懂

败月鸟 发表于 2010-9-17 11:27:30

应该可以列个 lst导出应该不是问题了
页: [1]
查看完整版本: DRS 文件结构