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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏. Z2 w5 t* ^) c8 \# N- H# w
但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
+ X# r- |' K% k, n- P2 t6 Y5 U$ f1 X2 c, q
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
: f" a+ E; n! p
5 ^8 k7 F  d' [" H) @字体文件在以下的帖子中,文件名是chinese_gb16x12.rar 7 S2 r# s* @) s+ g  j/ P* }
https://www.chinaavg.com/read.php?tid=16790( Y, f% Y4 q( w' b% b
$ S* {' _  k+ }8 F' H2 ?
字体是16X12,所以每个字模占24个字节。# \, q7 H/ c3 t
GB索引代码如下; e5 x! K4 a! o, _
idx为GB232编码. z9 R/ W1 ]6 u4 l, k& ^, x1 v/ R
idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
9 P- `. D3 R. ~7 Z0 M) t$ `6 m/ @3 {, W1 Z4 B
另外有一个要转换的文字的文件, T: H/ }5 @$ l8 x% l3 f
每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。
. c& \; ~1 f3 ^# x4 `# m有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
7 `' \% Q: l5 j& ~7 K  g- B$ f  ?我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
3 @; Z: b' w  ^4 b* t
- M% X2 K0 Z+ w% _( f% L0 ?能不能举个例子?! y4 ]& w, Y% {( u2 G
' L+ h) _, N! R+ s
还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
; E3 @7 r, ]0 H4 {1 Uhttps://www.chinaavg.com/read.php?tid=16610
& A' ^6 @" `- A3 z  ?9 J/ khttps://www.chinaavg.com/read.php?tid=17017; k6 U8 a2 s2 Q# h7 k6 O
  y6 {) n( n: Z$ u, J' V; m) d
你可以用这个工具先查看一下16X12字库,有个直观的概念。
: ~0 ~" D+ G( X' C" q" S
6 I; L3 q! x% _我可以给你举个例子。不过只能用文字描述。
5 w0 _/ U5 k+ r8 t% L/ o字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。: X  ?+ Z* h0 P: J! X& e8 A
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
7 X4 [# N; i- d& gidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); & n+ Y4 Z  ^. q! ^
不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。6 c1 W( t# {) e2 n" P2 {

8 \4 J# O( c5 j* r4 Y0 e好,接下去说再解释一下这个任务。
9 V' B7 p* M8 `+ \6 F原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。
. Y; x) V- Z9 ~; e9 W$ c' Y; \+ ^4 Y+ P# P( N) A* T) V
我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
) o$ n3 r7 k' u然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
# \! U. M9 C* A# P7 e$ g( i/ ]我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)' j5 I9 w+ X; M' X
得到 FFFFAD4E   这肯定是错了~
% V$ ^! m4 Y& I* `  X到底是哪里算错了?
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :3 {3 P) }2 V( e: Q) L& Y" F
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
! h* \) q9 u" M然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
+ q) e" @. Y- S7 g1 Z, o+ Z我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1), _; a6 K# U6 W5 R3 c  b& i8 m- l3 V
得到 FFFFAD4E   这肯定是错了~+ O/ M0 ~3 h# b
到底是哪里算错了?
" g& l- W4 n  V5 M& ~! o+ X, C
这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。; q! ?+ {; ^% O) h5 @( e

" ^- H! {) ^" v. O# A放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
9 k8 h3 P/ r8 z! U3 s) |不同的只是一个汉字占用32个字节。
% h% ~  i3 Z3 ^3 l. G! o: n6 }你可以先学着算16X16的字库的偏移量,然后和这个工具对照。
5 o4 s) J: u& e' ]然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
  e2 q# P4 [  b不会算偏移量啊~  如方说‘新’字,GB码是 C2D0( z0 a+ I# s0 ^9 R+ ^8 P: x
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
. R$ ~0 a! W, h3 m" r% c+ X我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)- y, a% \2 s+ f, G5 A
得到 FFFFAD4E   这肯定是错了~
" M% @4 L9 ~9 F6 L) ?4 y# r到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
( p5 o6 q# Q  d" D" E. H6 M5 O# {: k+ A, [( ~# e; r" a8 O8 @8 b
似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
2 k8 I" x" g6 @$ \( v4 ?9 `7 N# z: c, L7 w% m6 v. O
呵呵...补码
3 R: |% \/ v) I# F0 p
你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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