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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏4 Y4 Q- p7 o$ W
但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。( s1 ~; c' g$ B# P6 X2 p4 {
5 S4 `% h, E8 V/ e; o8 |( H% a2 z
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
/ i8 N+ x4 x/ P( K: R4 Y7 l* C* |. R4 Z2 T6 Y
字体文件在以下的帖子中,文件名是chinese_gb16x12.rar
- ^" A" ?) H( ~+ c! Shttps://www.chinaavg.com/read.php?tid=16790
( H/ O# g1 \- D2 }0 e9 Y) R
3 ?: w+ `# N# i- h; M% b- b. C字体是16X12,所以每个字模占24个字节。
+ b& J- P/ S7 m% `' nGB索引代码如下% {% F+ ^4 Z8 c3 r( ]& y) i
idx为GB232编码; _9 g" p* r7 ~' `2 H5 E4 ]+ S
idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); 6 ^) v! z3 P7 O. L2 k

# B6 y# \% H4 P另外有一个要转换的文字的文件
4 \5 f  k, K! s# Q6 I2 Q每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。
$ e/ R9 t) ^& S2 Q3 |有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
. p. S1 s: d; K" S% Z, J: }) b我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
) x2 U$ Z. n% Y8 u+ E! ?; C3 {+ a$ B& d* d. [9 {
能不能举个例子?
; N8 I( n  H- t9 a4 Q- U7 y* _& @
还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
% H: D$ Z2 U4 j! n% q6 nhttps://www.chinaavg.com/read.php?tid=16610
7 H1 F( ?( j3 bhttps://www.chinaavg.com/read.php?tid=17017$ u$ r5 l! ~. K( p+ k3 v, a# e

1 m, X8 e5 z, N' {你可以用这个工具先查看一下16X12字库,有个直观的概念。# I' B7 u7 T1 p# Y0 j$ ~) |; H
+ ~6 Q% \: e+ d) ?' |; j
我可以给你举个例子。不过只能用文字描述。  u& N% F! ?- w% D. n6 Z, b
字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。( @$ |4 x2 `7 e- G$ l$ N# m/ r4 g
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
% I1 d5 q6 w/ vidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
# }$ c' E9 M- u% D- ?( m  ^# e不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
. a  Q" Y1 h0 R/ m  @4 V0 W' j9 b* ^# L& R: L
好,接下去说再解释一下这个任务。9 b7 l/ A+ Z. D8 `0 c( x$ u
原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。5 e: i& p* W* n$ |$ f
5 O" U* L/ E$ a" x* O4 V
我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0$ w9 p& C$ ^3 z- G0 a- Y+ X
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)4 }, g0 G  v8 [6 c. h
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
, I3 b3 Y2 \: ^7 R7 }2 J# E得到 FFFFAD4E   这肯定是错了~
. z7 K: J7 \  l4 t/ E到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。" g2 @2 X- x6 q, Z* y1 {- }7 ^2 k
等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :5 w( Z; M+ S# \  w
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
. T" x" u6 }0 L然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
3 {$ r3 s2 ~5 J- k/ P我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
0 n3 L! b4 `' e  _得到 FFFFAD4E   这肯定是错了~! a% j7 h' g$ K+ N$ \
到底是哪里算错了?

2 V- H" H) w% l1 P这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。2 F; H# [+ B0 q8 j

: |1 k! H0 p: `. z+ U放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。1 c- x% i2 a6 J/ C: M6 c4 m
不同的只是一个汉字占用32个字节。
: g+ d( u. |+ R7 d( J' Z5 a你可以先学着算16X16的字库的偏移量,然后和这个工具对照。
7 f/ v" t. M, U" h1 K- m然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
% b2 R( y, f  J$ [$ l4 K不会算偏移量啊~  如方说‘新’字,GB码是 C2D05 ~% F- O; v% s
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
- @5 e" L  T4 V, [3 ]; m5 U我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1); @1 {0 c6 z. g; O! T, Y
得到 FFFFAD4E   这肯定是错了~
) b- g/ J% [& X; H5 B0 o; S( S到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
4 T. i9 n( `1 `; v4 l3 ?- z. I7 I) B' F# ?
似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
* ~& R" ]) R' a% z9 f! Q% |: m
9 `4 m5 M& p# b* }呵呵...补码

& k7 N; k9 O: q) A/ X4 O, t你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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