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

【汉化任务简报】#30 疾速天龙 字模置换程序

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

【汉化任务简报】#30 疾速天龙 字模置换程序

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

【汉化任务简报】#30 疾速天龙 字模置换程序

疾速天龙是一个可以用scummvm模拟器模拟的游戏; ], }9 t: p7 r+ B' ]! U5 _
但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
  v( w* X; Y. ]& L9 u: p% d7 i; f( i) Y9 c
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。0 f8 E! F, {4 Z3 [8 `* G. V+ g

" ?) @$ ~$ ]6 Z. G# ~! H3 ~字体文件在以下的帖子中,文件名是chinese_gb16x12.rar
" K, I1 G  p" i8 V+ Y% l$ H) vhttps://www.chinaavg.com/read.php?tid=16790
2 Z' l2 F  w* s& e5 m1 Z& ]% _1 a+ E
字体是16X12,所以每个字模占24个字节。) Y0 t2 T1 A: r) a
GB索引代码如下1 `* M1 A3 t6 m, r8 `1 U/ z2 M
idx为GB232编码
5 k8 u! T8 K+ m: a- V4 N0 zidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); . v$ r4 {2 v" M8 p2 Y$ i5 K- Y

5 Z- I+ }2 l# B) V另外有一个要转换的文字的文件
1 g4 S" q: q% }: j/ {每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。- E0 a9 I) x. L& r" C
有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
" Z" ~; a, c4 ^0 g我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
! M" D" D( X: c5 j$ Z) k: {9 [7 z& a$ V& j' A
能不能举个例子?
8 ]+ p# n# w" r% \
, K  A* c; @0 R; b. I* V- H还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.3 \3 C* f% k2 g$ m. r. b4 O3 H
https://www.chinaavg.com/read.php?tid=16610
. @. i3 y) Q5 _  @( v- Jhttps://www.chinaavg.com/read.php?tid=17017+ I6 r, [: H9 `8 y2 a% c

% V4 O! ^" |8 ], ?% v你可以用这个工具先查看一下16X12字库,有个直观的概念。; j2 S( ?. H& R3 U6 W" W
- `" a  S& {" X8 S% a0 W2 M6 P
我可以给你举个例子。不过只能用文字描述。$ @; Y4 Z# F/ a1 p
字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。
6 \) o  Y0 n$ w: y( `根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
8 J& Q& {% u3 \1 ]idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
  V1 w; _. M( P7 \' g不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
; D) w( S3 C" Q4 }4 @5 S& `& x) e) m9 y; }0 r/ S% f5 ?" ~+ D+ O5 u
好,接下去说再解释一下这个任务。
, r1 V+ `# \7 i. k原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。
4 u$ v1 G& j6 }6 i; g0 O$ t6 p3 b6 E! S+ B: t& x
我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
( {* [7 E  |' i1 c9 E: Q4 M2 R然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
6 ]% w4 B, B  ^我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
9 L. @5 W6 @7 B9 F0 R得到 FFFFAD4E   这肯定是错了~
" A* h! z1 s  @/ i1 D1 G1 _7 x. j到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。; s6 R: |7 r8 ?' L7 ^
等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :& N' z- f0 a: Q9 z( X5 a) V% P' ^; W
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
$ P7 ?1 m2 z1 }2 C, I  D然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
. B4 v  D9 V0 j7 y) F我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
$ ]4 k/ D0 a% Y4 [+ \得到 FFFFAD4E   这肯定是错了~
0 o. B* Q1 ?& _8 {到底是哪里算错了?

7 g1 I+ ~) I6 q" j这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。" Z/ w1 E1 f- _9 Q/ m
$ l0 I: i8 q' O4 N9 }* C( d/ i$ @
放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。! F9 g4 }6 x6 d1 Z9 h; @
不同的只是一个汉字占用32个字节。
+ D& E/ x" c0 I& \9 ^9 |1 w( r你可以先学着算16X16的字库的偏移量,然后和这个工具对照。
: U; A$ f; h9 d, T+ G) Y7 _  y然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
1 b! r* w" v; Z: |( Q: N) B. W不会算偏移量啊~  如方说‘新’字,GB码是 C2D0' ]; @& z3 U! b7 @( E& p3 O
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)+ O5 l& r9 A; V, g
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
0 c& S8 c9 T: g5 @" O# f得到 FFFFAD4E   这肯定是错了~2 S: L; L8 q, Q8 B+ l, ]
到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
9 f* i5 B$ N. u4 Q+ _' O& O, @4 T
似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
' N3 c1 i! K+ d- t& X2 x2 P8 A& Y) T$ y7 s9 Y. k, r9 g" X
呵呵...补码
9 K7 v9 P% f. }* y. Y
你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

10#
发表于 2009-6-6 14:36 | 只看该作者
考完试翻翻以前写的代码..忘记了...补码似乎是C入门的时候的一个概念...007老大不会不晓得的吧...
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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