四.Course.dat的分析I
仔细观察Course.dat会发现,每一块数据分成两个部分,第一部分全是二进制数据,第二部分有可读的文字。对前几个块进行分析,得到以下结论:
块1:
数据部分:00000000-00001ce7
文字部分:00001ce8-00003835(似乎以FFFF作为结束标志)
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 E2 1C 4C 1B 02 00 3C 20 00 00 00 00 6E 00 44 10 ?L...< ....n.D.
00000010 00 00 00 00 1E 10 00 00 02 00 21 30 00 00 00 00 ..........!0....
前两个字节 1C E2似乎是数据部分长度,和我划分的区块(00000000-00001ce7)相比少了6个字节。
之后两个字节 1B 4C是文本的长度,应该是不包括最后两个字节FF FF的。
00 02 可能是mode之类的,保持不变。
块2:
数据部分:0000c000-0000c031 44 (7350)
文本部分:0000c032-0000c03c
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000C000 2C 00 09 00 02 00 1E 10 00 00 05 00 4A 20 00 00 ,...........J ..
0000C010 01 00 00 00 47 00 00 00 1E 10 00 00 00 00 2B 20 ....G.........+
0000C020 00 00 3C 00 00 00 0E 20 00 00 15 00 02 00 0C 00 ..<.... ........
0000C030 00 00 81 9A 96 A2 8A AE 90 AC 00 FF FF ..仛枹姰惉.
块3:
数据部分:00018000-0001f3c5 29632 (29588)
文本部分:0001f3c6-000228ba
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00018000 C0 73 F3 34 02 00 3C 20 00 00 00 00 6E 00 0E 20 纒?..< ....n..
00018010 00 00 14 00 02 00 44 10 00 00 02 00 1E 10 00 00 ......D.........
00018020 02 00 21 30 00 00 00 00 80 00 00 00 04 10 00 00 ..!0....€.......
可见每一块都是从C000的倍数开始的。
这些简单的分析大约了解了一下几点:
1) 每一段都是0xC000这么大
2) 前两个字节是数据部分长度,数据不包括前6个字节。
3) 之后两个字节是文本长度,文本不包括最后2个字节。
4) 再之后两个字节总是02 00 (怀疑是结束符FF FF的长度)
根据以上的分析,可以制作文本部分的地址列表,使用蓝山魔导的地址列表功能,可以批量将Course.dat中的所有文字导出。
虽然到这里都可以说是大功告成,下面就是翻译人员的事情了。但是我看了下导出的文本,有的很长一块,有的则零零落落,实在是不像样子。最后还是下定决心,再分析文本,自己编写程序来导出文本。