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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏
) Z, `6 T/ s9 i4 y! s但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
) e4 E7 O7 z+ q. c! x$ L
6 M6 Y# ?9 y9 z1 R, F我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
( Q8 d: k- ^/ h! ]2 b$ }/ i! ?; c" P) \1 f, V; W" Q/ Q
字体文件在以下的帖子中,文件名是chinese_gb16x12.rar . l* F4 q# t5 C* x; W0 r3 s# s: J$ A
https://www.chinaavg.com/read.php?tid=16790
5 p# N6 p/ k% C( w  k  U* m
( |9 f! e  I- D+ ~& G% O( {字体是16X12,所以每个字模占24个字节。
% _, z" C! l1 P6 n9 _; I( j7 kGB索引代码如下3 B" `; Y7 B3 ?2 Q! ~0 I. |7 |- ?/ B8 O
idx为GB232编码
+ V+ \6 S! o" U  ]0 m4 ?( \idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); ) ?; Z$ ?7 K$ }2 \# @( F
5 O3 p& E3 H8 b  f2 \
另外有一个要转换的文字的文件! @* a) G+ P; v# P' n) _
每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。7 a" F' H0 a" j$ P) f
有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:9 V0 \) x6 U' T- Q9 a1 F
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。4 Q3 E) j" m5 |2 T. C
" i  O9 w; G3 B' _* T
能不能举个例子?
' I; [5 o. r0 O) U8 ~( P& u, Z' S- O  t/ U4 c
还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
% t4 s, ]. Z. P, Ehttps://www.chinaavg.com/read.php?tid=166107 k8 A1 T0 ^4 ^& I! T2 T
https://www.chinaavg.com/read.php?tid=17017
& I% H" X8 {2 P$ g) i, J
6 V) D9 b: N; A- v6 {. O7 _你可以用这个工具先查看一下16X12字库,有个直观的概念。1 p* u: g  k9 c2 }; m. K5 N" x, x: Y
/ {. h* {, \4 ^5 B! b. ^* @
我可以给你举个例子。不过只能用文字描述。- s2 J8 R2 f2 o; y
字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。3 q! P( x3 |; J0 D! b
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
, T5 l5 z8 n5 f0 K) ^6 M; b. didx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
* o7 y8 R& Y. r8 w不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
, y' B* g. h9 }3 I( P. Y8 ~9 o6 r' i' m# f- ~
好,接下去说再解释一下这个任务。: ^/ i5 f: t; X" w. {0 G. g
原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。; b+ G  W+ a( h2 ?2 L' t+ n9 w  V6 h

2 R+ i4 p' r' d# d* L$ ~% u我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D00 |. K2 M0 r3 D7 [8 D( N; }
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)( Y8 T: ?8 A: f
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)' h6 |( x2 e( T/ A* \9 r0 h2 z& m/ x
得到 FFFFAD4E   这肯定是错了~
2 B# O! i1 S! T到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。
  w* c( u! n  b* ]& w% C等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
7 Q! a8 |$ {; k2 }! }! R. K不会算偏移量啊~  如方说‘新’字,GB码是 C2D0: D# a1 C  `+ v4 T# a9 P0 i, y
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
$ e) h8 _" w( I$ f. ~8 a8 U我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
- j! J- d$ m6 n5 q& U得到 FFFFAD4E   这肯定是错了~9 C4 L: |1 B% R( L0 m5 _
到底是哪里算错了?

. t! w8 @8 J! K这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。/ U! v" Y: G) V

/ Y& c7 ?; Q/ M放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
! {& r. @9 i: |2 \; R. n' h3 K不同的只是一个汉字占用32个字节。
0 W2 \3 C1 J0 r( h  c: ~5 g你可以先学着算16X16的字库的偏移量,然后和这个工具对照。# _. G: o4 {( A7 {
然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
) ~' c( q% E4 q6 A5 _/ [# j: x2 Y不会算偏移量啊~  如方说‘新’字,GB码是 C2D0$ g/ G  s# I9 |% F1 w0 P) C
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
( S9 t8 }& _+ `! i! o& H我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)6 C2 q  r. g8 g' u2 q# ~
得到 FFFFAD4E   这肯定是错了~
/ P8 ]& V( x7 o到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html5 b9 V# `& a1 @/ W: y  Q0 a4 m
% W7 y4 }* g8 C; C# N5 g8 {
似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :; f4 q% x5 I3 Y  K
( c) M6 u8 @' r1 q0 r2 u! k
呵呵...补码

- O/ p! g9 g" u5 a; l你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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