仔细观察后,发现有两个出现几率很大的字符串:TKEY、TDAT,并且每个文件都是以TABL开头。初步想法这是GXT文件的标识符,接着又发现在每个TKEY标识符后都跟随着类似任务名的缩写,缩写后就紧跟着游戏的对话内容。当时在想这些也许符合某一种格式,便继续观察与猜测。
进一步观察,随便找一个TKEY进行观察,发现每个缩写距下一个都是12个字节,而且缩写与对话内容之间以TDAT分隔,便确定TDAT为缩写的结束符。接下来看对话内容,都是以xx 00 xx 00的方式储存,xx为内容。凭直觉觉得,缩写应当与内容有关系。便数了数缩写的数量,Perfect!数量和对话的句子数完全符合,这样也就同时发现了00 00为句子的谨大腊休止符。
找到了缩写与内容之间的关系,可是还没有发现如何确定缩写及内容在文件中的位置,理了理思路,决心从头看起,因为一般内容的位移都储存在文件的头部。果然,在文件开头发现了问题的所在,也有很多缩写,而且都是12个字节,更令人兴奋的是经过测试发现在12个字节的最后4个字节储存了上面所说的缩写以及内容在文件中的绝对位移(外国人似乎很喜欢12,暗黑II的钥匙最多也是12个 ^-^)。
知道了这些信息,就等于完全知道了如何将游戏中的文字资源提取出来,至于汉化就不可能了,因为试了一下根本无法显示汉字,应该是字库没有相关信息。不过利用这些文字和游戏中的音效做一个GTA简易版本也不错啊,而且包括了好几种语言。下面附带的是研究出的GXT格式文件结构,另外笔者自制的《GTA-VC文字资源提取器》也即将出炉! :)
--------------------------------------------------------------------------
GXT格式文件结构:
长度 | 类型 | 名称 &描述
4 字节 String 标志符;固定为"TABL"
4 字节 Long 对话组信息长度
? 字节 ??? 对话组信息,长度为对话组信息长度
对话组信息结构:
[ 8 字节 String 对话组名称
[ 4 字节 Long 对话组内容绝对位移
对话组信息数量 = 对话组信息长度/12
... ...
对话内容,分两种情况MAIN对话组,其他对话组:
MAIN对话组:
4 字节 String 标志符;固定为"TKEY"
4 字节 Long 对话信息长度
4 字节 Long 未知
? 字节 ??? 对话信息,长度为对话信息长度
对话信息结构:
[ 8 字节 String 对话名称
[ 4 字节 Long 未知
对话信息数量 = 对话信息祥滑长度/12
注:最后一个对话信息以"TDAT"结束
... ...
4 字节 Long 对话内容长度
??? ??? 具体对话内容,储存格式为 xx 00 xx 00, xx为内容, 00 00为一个对话中止符
其他对话组:
12 字仿老节 String 对话组名称 + "TKEY"(后四位)
4 字节 Long 对话信息长度
4 字节 Long 未知
对话信息结构:
[ 8 字节 String 对话名称
[ 4 字节 Long 未知
对话信息数量 = 对话信息长度/12
注:最后一个对话信息以"TDAT"结束
... ...
4 字节 Long 对话内容长度
??? ??? 具体对话内容,储存格式为 xx 00 xx 00, xx为内容, 00 00为一个对话中止符
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)