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

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

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

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

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

林登布鲁克的冒险解包器

林登布鲁克的冒险 Adventures of Natalie Brooks  解包器
& E% x7 v  f1 G要配合QuickBMS使用。 6 \) K' ^1 p+ M( l# J

, d2 K- C1 h* k2 k-----------------------------------------------------------------
; i. m: F& I* N7 B& u$ n2009.1.11 第1次更新 + I2 Y; J6 w* l# [- A" `3 i

- Z1 P. t' |& }! g7 X6 C我大致看了一下,觉得肥牛分析的还有些问题。 % l1 u" n1 r) D4 J
我先纠正第1个问题。文件的结构应该是这样的:
- q; v4 ]2 d- f( R6 c字体文件名长度 4bytse ! ?* L3 q6 g+ i8 v2 B; ]* |. m
字体文件名 nbytes
9 T% e4 W; y: F7 \$ q字体高度 4bytse 5 _$ Q! }7 Y& s; q$ o/ p3 y  }
字体数 4bytse 4 H: Z0 G8 G: ?4 }& e7 D8 d6 h
字模数据 字体数X24 bytes
; ^  o) I( e/ Q; c尾部未知数据 nbytes ; _9 P( n4 x# L2 b" m6 y9 g, H

8 C3 Y- I7 C' ^4 s8 Z  z0 S肥牛可能只分析了1个字体文件,正好那个文件的字体高度是0x18. 所以误认为那是每条记录的字节数。其实再看看其他文件,应该会发现那是字体高度的可能性最大。
! j1 ^! ~" z" x: Z, y3 G  h
' y' F6 S% }2 j* G6 T2 E------------------------------------------------------------------
  ]9 `8 k. V: [% ~0 h, d2009.1.11 第2次更新 ! c  l) f1 f0 [( k  J4 l
肥牛说字符是按照ASCII码的顺序排列。我不知道是怎样看出来的?
/ x0 l( V% f3 D# I6 g; j据我观察字符并不是按照ASCII码的顺序排列。
3 L: f( W/ ?! F# i% n( |8 W0 K7 G9 u2 C7 F+ E$ B7 P5 e
首先,我们估计在每条记录的24个字节中,有4个字节记录了这个字符的编码。 ) o. \, O6 R3 b7 V$ T' t3 y
我们知道A这个字幕,ascii码和utf-8是0x41,utf-16码是0x41 0x00. # z0 M, S, o8 Y+ V$ s% k
如果A-Z按顺序排列的话,我们会在字体定义文件中发现等间距(24byts)的   u& }% Q/ Z5 h) H/ p+ V
0x41,0x42....这样的数据。但是实际上文件中并没有发现, 5 G6 i. y  T0 _- j) \4 D' {
所以字符应该不是按照ASCII码的顺序排列。- O7 N& u& [5 l( R$ j% |. m
% _! z7 ?5 i2 j9 b! R2 Q& o8 [7 T1 K
另外,肥牛说索引文件会长度由26K变成了1M以上。
2 @$ S# n2 ^9 e我不知道肥牛是如何算出来的,每条记录24bytes,汉字算它9000个字。
" n; v. `7 ^" k算下来也就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发表的  :
* t* Y% b& b3 g- z" o+ m8 B8 s  R正在从VERYCD上下载这个游戏,打算试试。

/ s* k/ i, Z2 `( ]5 @; l要是下不动的话可以从论坛ftp下
回复 支持 反对

使用道具 举报

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

使用道具 举报

14#
 楼主| 发表于 2010-1-11 22:46 | 只看该作者
对了,对于这个游戏,估计你只是想分析一下,不是真的要汉化吧。+ `" ?# m3 v  A$ `
不知道你最近有没有时间,如果有时间的话想请你帮忙制作【福尔摩斯:觉醒汉化项目】的工具。
( X- m% o9 Z; G4 b: l7 O: S分析基本都完成了,文件的结构和这个游戏很相似。
- v& h# u5 V3 j) ~, i8 X如有兴趣的话可以检索【福尔摩斯:觉醒汉化项目】。/ ]6 l" |4 a1 b7 f
需要制作一个图片字库和字库定义文件。
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2010-1-11 22:41 | 只看该作者
引用第11楼肥牛于2010-01-11 21:57发表的  :; l1 }3 `/ Y  O' E# M4 p
的确,我也是刚刚发现,我竟然把0x16算成是24了,真是个低级错误。可能就是因为开始对24这个长度先入为主吧。
3 n$ L: ?$ A6 }  Z9 S0 V
8 [/ C. Q1 D( S2 e另外,那个工具,点到33以上才会有反应。ABCD的确是连续出现的,65是A,66是B,67是C。俄文字母大写的A出现在第1040,我不知道在英文的WINDOWS系统中,俄文大写字母的ASCII码应该是多少?
3 F# p9 S& t: D$ `: v: ^序号是1040,那么在索引文件中的起始位置应该是* O( U& r% c1 P6 E6 Y6 a( e
(1040-33)*24+0x33A = 0x61A2  ;                                          33为第一个字符!的序号, 0x33A是该字符的起始位置6 k) _; P5 g; ^  a$ y
.......

( z# z* f7 b- p- }# h我算了一下,1040转换为16进制是0x410,utf-16 的10 04 对应的字符正好是俄文大写字母A。. [" P# L9 ]/ X& ^' j' A- J! x9 g7 M
所以可以确定,你说的字符排列顺序是对的,是按utf-16编码顺序来排列的。0 Q: k9 s; z) z2 T. S2 }$ @

; ]3 J* d& t1 k: D; }3 P所以汉化应该是可行的,其实文件大一点应该也没关系,多占一点内存而已,应该不会出问题。
回复 支持 反对

使用道具 举报

12#
发表于 2010-1-11 21:57 | 只看该作者
的确,我也是刚刚发现,我竟然把0x16算成是24了,真是个低级错误。可能就是因为开始对24这个长度先入为主吧。# F# P0 s- O$ W5 [  H3 s

6 v3 q" U: n, l" }) B2 {  g0 `另外,那个工具,点到33以上才会有反应。ABCD的确是连续出现的,65是A,66是B,67是C。俄文字母大写的A出现在第1040,我不知道在英文的WINDOWS系统中,俄文大写字母的ASCII码应该是多少?
' n8 f5 h8 B$ R2 y序号是1040,那么在索引文件中的起始位置应该是- q9 P% i7 I- g+ T1 t/ g* B
(1040-33)*24+0x33A = 0x61A2  ;                                          33为第一个字符!的序号, 0x33A是该字符的起始位置
+ k- O2 M7 j0 K& E7 K0 z1 Q6 l/ ]8 N& v5 C* y2 m0 P, r
查看这个文件,可以看到0x61A2前面有很长的空白填充。 如果我们有证据显示俄文的A序号是1040,那就麻烦了。那样就说明我们的汉字确实需要按照这个规律向后排列。* G3 u+ C6 l; _& A) d  o

. ]( F" R5 G  h# Y不管怎样,通过这个游戏的分析,又学到一些新东西。应该对将来的汉化分析工作有帮助。
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2010-1-11 21:15 | 只看该作者
下面针对肥牛5楼的说明来说一下,: u, z: n; u+ ~7 R+ `' Z$ Y" ]

* r. @; r+ t% f5 U# O第1个字节是0x16, 也就是10进制22 而不是24,所以是font_game_menu_buttons的字符串长度。+ b# {$ ?" ~  q: ]: T1 o
我想这是肥牛犯的一个低级错误。
6 G5 Y7 w* y* }" T/ u- i1 ~! n! P我在顶楼说了,每个字符的记录的长度的确是24个字节,这个24是定死的。
- T! P: T3 L: x9 T在定义文件中并不出现,肥牛认为是记录的长度的那个字节,应该是字符的高度。
- I" L( z. f7 r! n2 `' Z9 M' Y5 E* L$ j; a
肥牛你的那个工具好像没法用. 点箭头没反应啊?( ~" [7 f7 U5 h; E& W
我想知道,如果是按ascii字符的顺序,ABCD。。。应该是连续定义的吧?
% i0 R, f" z( m, Q; Q. @. G能指出定义在哪吗?4 b4 U5 I0 H; }, y) K
还有最关键的一点,如何判断是按单字节ascii顺序定义的还是按双字节utf-16顺序定义的?; m. `! g+ V! M3 d
从文件内容来看是不容易判断得出的。& H& L. h8 f- a- O3 c+ `& J: v
不知道这个游戏有没有俄文版的。
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2010-1-11 20:55 | 只看该作者
引用第6楼肥牛于2010-01-11 19:39发表的  :
7 i' |) R+ k1 _: d/ M: ?7 H1 ~  E另外,说一下汉字导致文件长度增长的问题。& |/ d, ]5 G: P# y$ V. O1 b
并不是说我们有9000个汉字,就多了9000*24这么多个字节。因为汉字占的双字节与单字节字符是不连续的。以第一个汉字"啊"字为例,双字节是B0 A1,换成10进制就是45217,也就是说,在这个“啊”字前面,至少有45000个24个00的空占位。所以才导致这个字库的索引文件超过1M。
- x* \# b) @& P8 Z6 `& t当然,我这样说的前提是基于索引表是连续的这个假设的前提下,如果能找到俄文字符的对应关系,可能就不会有这么大了。
* [6 {/ q" L  D
你的意思我明白了。7 z7 k1 A" x1 B: p" {+ m- [# r
你是说在字体索引文件里包含了所有的码位。8 b6 T! l8 E( P4 {) q# b
我的疑惑是,如果是这样的话,码位的数量在定义文件头部有定义,
6 q% ]# ^3 C# N* u# G但是起始码和终止码在何处定义的呢?
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2010-1-11 20:46 | 只看该作者
引用第7楼肥牛于2010-01-11 19:42发表的  :4 I" [6 o( b3 i; _& i
突然想到,007下载的游戏是不是跟我的版本不一样?我是从Reflexive网站上直接下载的。其中Localization文件4.60 MB (4,826,852 字节)。

0 Y  I  f! q1 h- ^6 {1 c% P先回答这个,我用的也是这个版本。文件大小一样。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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