设为首页收藏本站官方微博

汉化工具 林登布鲁克的冒险解包器

[复制链接]
查看: 4295|回复: 16
打印 上一主题 下一主题

[汉化工具] 林登布鲁克的冒险解包器

跳转到指定楼层
楼主
发表于 2009-5-10 09:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

林登布鲁克的冒险解包器

林登布鲁克的冒险 Adventures of Natalie Brooks  解包器
3 M  \2 [- d8 `. d: O" h" x要配合QuickBMS使用。
! r0 G+ o$ R* w: G; Q& y; W5 z- b1 q7 Y9 t" k/ e
----------------------------------------------------------------- ; e; x$ u& N- x8 @
2009.1.11 第1次更新 $ }+ y+ i& a( p# F9 x8 B

5 o- m" o( W  v3 S4 d2 k+ v我大致看了一下,觉得肥牛分析的还有些问题。
+ Y0 A. [% T; h  T+ Y* Q$ c我先纠正第1个问题。文件的结构应该是这样的:
$ |' ?& w4 C. T0 [2 }+ J字体文件名长度 4bytse
" ^% k% D" c6 B; o8 T  f2 q字体文件名 nbytes
4 \* A+ e& y) d& l7 U$ r字体高度 4bytse
" H5 x" C. f' w4 J: w, a, s/ I) M字体数 4bytse
7 \& p0 }& g4 o字模数据 字体数X24 bytes
+ C% Y1 m  {; x5 }8 Q) V+ }7 |尾部未知数据 nbytes 3 p2 D+ D: z* q8 d, A) Q: ?, a2 [
4 u: E- d7 l* [( d; w$ m2 _
肥牛可能只分析了1个字体文件,正好那个文件的字体高度是0x18. 所以误认为那是每条记录的字节数。其实再看看其他文件,应该会发现那是字体高度的可能性最大。
( d% D' [& w- O0 o& M( c
& w% C& b" l, I$ H" U) p------------------------------------------------------------------ $ a6 [+ K8 L2 h# g
2009.1.11 第2次更新 ) I5 _, }0 O: ]: I) u
肥牛说字符是按照ASCII码的顺序排列。我不知道是怎样看出来的? 6 H0 }1 K* {* E) V
据我观察字符并不是按照ASCII码的顺序排列。
( v: J7 H% a' b; D. w* j% Q$ l1 v' H4 T
首先,我们估计在每条记录的24个字节中,有4个字节记录了这个字符的编码。
( C/ c" x& X* A我们知道A这个字幕,ascii码和utf-8是0x41,utf-16码是0x41 0x00. 1 I# |7 E- {, `$ s! F
如果A-Z按顺序排列的话,我们会在字体定义文件中发现等间距(24byts)的
6 r/ n% {: }2 y  Q2 x0x41,0x42....这样的数据。但是实际上文件中并没有发现,
$ g9 k% B$ u3 K9 ^4 T所以字符应该不是按照ASCII码的顺序排列。: Z3 W! t  ^! B1 N/ ~6 v
: ], F& A( Y9 P$ Q
另外,肥牛说索引文件会长度由26K变成了1M以上。7 z) k" G( C/ e" F6 H6 n
我不知道肥牛是如何算出来的,每条记录24bytes,汉字算它9000个字。
' z4 ?  s$ O  U$ d3 o" ~. x算下来也就216K左右。远小于1M。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

17#
 楼主| 发表于 2010-7-11 15:25 | 只看该作者
顶上来,这个系列是有汉化可能性的
回复 支持 反对

使用道具 举报

16#
 楼主| 发表于 2010-1-12 20:00 | 只看该作者
引用第14楼肥牛于2010-01-12 19:04发表的  :: S- _6 b% a: ~& N4 J
正在从VERYCD上下载这个游戏,打算试试。

0 h/ J( `- P9 _( P要是下不动的话可以从论坛ftp下
回复 支持 反对

使用道具 举报

15#
发表于 2010-1-12 19:04 | 只看该作者
正在从VERYCD上下载这个游戏,打算试试。
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2010-1-11 22:46 | 只看该作者
对了,对于这个游戏,估计你只是想分析一下,不是真的要汉化吧。8 p9 q. C" v0 {: U* x
不知道你最近有没有时间,如果有时间的话想请你帮忙制作【福尔摩斯:觉醒汉化项目】的工具。
4 }2 M$ `, X! g. `# H8 w* e分析基本都完成了,文件的结构和这个游戏很相似。
; H5 ]; x! W! c9 r如有兴趣的话可以检索【福尔摩斯:觉醒汉化项目】。, ~0 p) H: z0 C, W
需要制作一个图片字库和字库定义文件。
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2010-1-11 22:41 | 只看该作者
引用第11楼肥牛于2010-01-11 21:57发表的  :, t+ c/ b+ Q. L8 t5 @0 d2 u+ o9 t; [+ x
的确,我也是刚刚发现,我竟然把0x16算成是24了,真是个低级错误。可能就是因为开始对24这个长度先入为主吧。
, A8 |0 O+ o# X) {  {; A3 ^6 m3 ~; `, R$ N. R# h: C/ ~/ I" r0 W) D
另外,那个工具,点到33以上才会有反应。ABCD的确是连续出现的,65是A,66是B,67是C。俄文字母大写的A出现在第1040,我不知道在英文的WINDOWS系统中,俄文大写字母的ASCII码应该是多少?
, N; `0 G4 S- z- j$ u; U. M序号是1040,那么在索引文件中的起始位置应该是
6 V5 a8 d  ?. N(1040-33)*24+0x33A = 0x61A2  ;                                          33为第一个字符!的序号, 0x33A是该字符的起始位置
  K  L, P7 p) L$ M# \& S; K0 Z( I.......

, Z! g5 k: F3 ~: W8 E  ~我算了一下,1040转换为16进制是0x410,utf-16 的10 04 对应的字符正好是俄文大写字母A。7 r) |- c% r3 v- A
所以可以确定,你说的字符排列顺序是对的,是按utf-16编码顺序来排列的。" U; W+ D/ S# L3 o+ h$ T; d
! d: {4 n6 q% P$ Q' j- J; x
所以汉化应该是可行的,其实文件大一点应该也没关系,多占一点内存而已,应该不会出问题。
回复 支持 反对

使用道具 举报

12#
发表于 2010-1-11 21:57 | 只看该作者
的确,我也是刚刚发现,我竟然把0x16算成是24了,真是个低级错误。可能就是因为开始对24这个长度先入为主吧。
5 T. k( L. K+ M& }: b% g+ A* K4 h# f: s! M  ]( M
另外,那个工具,点到33以上才会有反应。ABCD的确是连续出现的,65是A,66是B,67是C。俄文字母大写的A出现在第1040,我不知道在英文的WINDOWS系统中,俄文大写字母的ASCII码应该是多少?
2 v8 o7 r9 a0 j. M* a序号是1040,那么在索引文件中的起始位置应该是
! Q( T+ z# D! a  F6 j(1040-33)*24+0x33A = 0x61A2  ;                                          33为第一个字符!的序号, 0x33A是该字符的起始位置+ F6 |( V, O5 I2 e- |2 d3 N$ N/ H
/ S, V% L3 f3 |
查看这个文件,可以看到0x61A2前面有很长的空白填充。 如果我们有证据显示俄文的A序号是1040,那就麻烦了。那样就说明我们的汉字确实需要按照这个规律向后排列。
3 N$ d" ~9 r& Z+ o3 b2 S' h! b5 l2 v( f' J
不管怎样,通过这个游戏的分析,又学到一些新东西。应该对将来的汉化分析工作有帮助。
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2010-1-11 21:15 | 只看该作者
下面针对肥牛5楼的说明来说一下,6 d, N4 N8 l8 a; y& M. }
0 v: N0 S9 T5 ^& |) h- T( h' a
第1个字节是0x16, 也就是10进制22 而不是24,所以是font_game_menu_buttons的字符串长度。; g( m, N; A0 ^; I
我想这是肥牛犯的一个低级错误。: L8 W5 \: \+ ?) R- r, @% o# B4 L
我在顶楼说了,每个字符的记录的长度的确是24个字节,这个24是定死的。
+ w" @& C1 h- f2 `, h/ L( P6 j在定义文件中并不出现,肥牛认为是记录的长度的那个字节,应该是字符的高度。9 U3 f, z6 j  F6 q% W/ y1 D6 N1 a

8 X- T8 `. X8 ~7 ]6 @: N肥牛你的那个工具好像没法用. 点箭头没反应啊?
" D: D6 C5 p3 b' l! }" j/ W我想知道,如果是按ascii字符的顺序,ABCD。。。应该是连续定义的吧?1 a( V" B" X) a  r8 ~6 U
能指出定义在哪吗?: X, a* O: V# D9 c$ G
还有最关键的一点,如何判断是按单字节ascii顺序定义的还是按双字节utf-16顺序定义的?
, t% {0 N+ l" m1 f) e从文件内容来看是不容易判断得出的。/ q; g; ~+ F* D" }8 O1 {
不知道这个游戏有没有俄文版的。
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2010-1-11 20:55 | 只看该作者
引用第6楼肥牛于2010-01-11 19:39发表的  :9 }' L2 E( F0 v
另外,说一下汉字导致文件长度增长的问题。3 Y  a3 D4 F1 H+ \9 W" X* A
并不是说我们有9000个汉字,就多了9000*24这么多个字节。因为汉字占的双字节与单字节字符是不连续的。以第一个汉字"啊"字为例,双字节是B0 A1,换成10进制就是45217,也就是说,在这个“啊”字前面,至少有45000个24个00的空占位。所以才导致这个字库的索引文件超过1M。4 d; T) `# B- @5 h# w
当然,我这样说的前提是基于索引表是连续的这个假设的前提下,如果能找到俄文字符的对应关系,可能就不会有这么大了。

! m$ \" {# h% _7 w你的意思我明白了。
. @% f! Y6 W% R! @你是说在字体索引文件里包含了所有的码位。
; _% W4 n# ~. p% a* I- u7 u我的疑惑是,如果是这样的话,码位的数量在定义文件头部有定义,; D: p  c5 r$ w( }# }# N+ ]
但是起始码和终止码在何处定义的呢?
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2010-1-11 20:46 | 只看该作者
引用第7楼肥牛于2010-01-11 19:42发表的  :
5 V2 z4 T3 i6 {# O8 R2 C突然想到,007下载的游戏是不是跟我的版本不一样?我是从Reflexive网站上直接下载的。其中Localization文件4.60 MB (4,826,852 字节)。
7 M" ?1 N+ @; Z2 S: m
先回答这个,我用的也是这个版本。文件大小一样。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表