在工具的编写过程中,又发现了新问题。
2 H6 O( b3 X6 H j我上面说的4字节的句子个数,这里是错的。我分析了一下,觉得这里应该是句子的类型。在我使用的BIN中,一共出现了三种类型。01、0A和0B,其中,01代表的应该是正常的提示。而0A和0B代表的应该是对话部分,因为这个游戏中出现了两个人,Mina和Jep。而对于01类型的句子来说,前面文件头部分的4字节的长度和句子的长度是对应的。但是对于0A或者0B类型的,处理起来就麻烦一些。因为这两种类型对应的部分是这样的。
9 R' k' Q5 p6 _; H5 T) H/ j- R* _8 W8 `( h
文件头部分
, U1 N' `3 L I, E J( N9 E5 h
" q& t) R e6 i; ]
8 d. M+ l, a6 T文件体部分1 \: p% Y4 h9 X, |4 p
6 r+ b5 y6 o( j2 A6 Y0 K5 h
, q! ^ i; a; x1 M6 p
先是显示对话句子的代码,如Mina0200,然后是三个00,接下来才是对话的内容:No!,后面再跟三个00,这样“No!”长度3,再加上后面三个00,长度正好是6,就和文件头部分的长度对应上了。也就是说,处理01类型和0A或者0B类型的方式要分开。, w; _- Y; |" g
! N1 R2 A) g/ ^1 n6 z
我目前已经完成了从BIN文件中提取的工作,下面就是写回的操作了。因为有朋友提出,翻译后的文字可能会比原来的文字长,所以这次核心的代码完全推翻重写的。实际上就是完全重造BIN文件。写回后,新的BIN文件的长度和原来的BIN文件长度会有变化。按照我的理解应该是可行的,只是这个想法还需要在实践中检验。# g7 q/ M/ i$ F* m1 U; q4 m( H
t0 Z" l# G5 C$ r, Y
我用来测试的这个文件中,只有三种类型,01、0A、0B,我处理起来是按照01的和非01的处理的。不知道其他游戏会不会有别的类型。以后慢慢再完善吧。我继续我的工作了。 |