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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏& E7 h0 n. U/ z. I: k
但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
  _* k" v7 U6 U1 X1 C7 j9 S. `( d; V1 R( A  ]$ j( W4 M
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。: _6 r& }: k4 ~0 n  I' I& L, n

$ I& l4 u3 D  y2 @- B字体文件在以下的帖子中,文件名是chinese_gb16x12.rar 2 L3 O0 H! z& O4 X! i8 A, k5 M0 T5 j  t
https://www.chinaavg.com/read.php?tid=16790
0 ]' R! h: i; ]7 D$ I  q. w* Z, v6 f; i7 l% I9 \, z% n' D
字体是16X12,所以每个字模占24个字节。, J& j# i5 |2 E$ }" r
GB索引代码如下
3 J! b0 V$ n+ Qidx为GB232编码# f# e7 P9 U7 t
idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
. N/ ^8 u1 s4 x( \
, x, Q9 |. b8 R4 M& a另外有一个要转换的文字的文件
3 \3 _, ?% Q) K每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。
3 D1 _  b1 S5 \+ B, D# r) x有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
1 Z) @9 r) T/ X2 V我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。1 N7 Z$ d9 b9 I; {6 J* f- ?1 G

+ |: H! {+ k9 t+ X$ \能不能举个例子?. B7 |: l; p! G) c  T
, ^1 u- q) r- [7 b8 R
还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
& p1 f( O9 H' w7 |) t! o4 {https://www.chinaavg.com/read.php?tid=16610$ D5 S  x; ~1 a6 b1 w+ O
https://www.chinaavg.com/read.php?tid=17017( O% s# ^3 u2 Z# y# i' b+ |

" W: L) W: J& d2 f: A你可以用这个工具先查看一下16X12字库,有个直观的概念。: |$ E* s+ ~8 q! \  ?2 S6 F( _0 U5 u
0 G7 z2 x: W+ k( H6 [; S# e
我可以给你举个例子。不过只能用文字描述。! o% c9 e6 B! {8 h4 F
字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。
, w; ]' O0 @" J: ?& @- m根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
" a* Z! c, Z5 K  tidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
& r' h8 U2 ^8 z5 U9 E" p不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
' k8 I2 z1 @. t& }/ \, X; |; O( {( e! H2 B
好,接下去说再解释一下这个任务。1 \; m/ }- ~8 d$ s: D
原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。
8 w( \$ I/ n8 b& y5 ?; l; T: J, B
我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0* G5 V; B# p* P' L2 F* A9 y
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
4 t% f' C- d6 \: }. d我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1), W  ^6 ]2 c2 H" f) m2 O
得到 FFFFAD4E   这肯定是错了~2 Z, p9 l; T5 b* S) d6 t
到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。, X- T8 n- ]0 E7 T1 l- ?
等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :; V2 w' u! r; H
不会算偏移量啊~  如方说‘新’字,GB码是 C2D09 y6 X9 `% P' \% z# `$ x
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
, t) Y5 y: X" o) S$ z0 T' E% M我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
2 X. @1 ]9 K+ k* a6 ]1 @得到 FFFFAD4E   这肯定是错了~! v. T1 p( r9 T+ z5 H6 z
到底是哪里算错了?
% D) @2 e% z% `) _, j
这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。1 [) v$ c# f$ _8 c1 }. m

) @; C  O, y$ }5 m- f0 c  X, K放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
2 Z+ n; B; n* t; j1 c9 `* R" C/ O不同的只是一个汉字占用32个字节。
2 E, r& k- u4 c2 t) k2 J你可以先学着算16X16的字库的偏移量,然后和这个工具对照。
0 [" d. L6 c( `  d- u& J4 t1 Z0 n然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :' H( V* k) P$ f* R
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
* h( l9 _) Q) {  d$ ?% P然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1), e% K- L6 B+ \# q$ f* D& _
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)6 p3 Y% v0 ?6 P
得到 FFFFAD4E   这肯定是错了~$ m7 P+ E. Z1 {: Q% h! B6 ~! z
到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
3 f7 l4 H9 {! e7 b; T5 X8 S: z# m
& I) a/ ?1 t7 D& ^  h- L似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
' O" O0 z' E& C) F2 l' o7 D* T: w9 c$ B  S
呵呵...补码

4 w6 W( A, x1 M0 Z# ~. U/ D你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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