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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏
0 D6 W0 S( F$ N' [* E1 ?但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
1 n. U2 c0 z' P5 u3 w# ]" ]8 J& _) ]# T" m% O
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。. i7 d/ c; f  b9 l) z8 V
# Q* P0 O, C  d, ?0 \* @
字体文件在以下的帖子中,文件名是chinese_gb16x12.rar * ~, Z4 h. W' D
https://www.chinaavg.com/read.php?tid=16790/ m; N1 Z6 L) Z9 u

" R1 _& l; R7 L0 Z; m7 J字体是16X12,所以每个字模占24个字节。
' t2 y4 H3 u! D: D8 I/ T! I! IGB索引代码如下
( Y3 Y" T2 ~4 a  E0 @9 @. W  G5 sidx为GB232编码
% b. i4 E$ d$ Ridx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
: D3 T' \2 ^0 \0 `. [' o/ t; [( N' k% W  g' _  l& a! q
另外有一个要转换的文字的文件
8 v  o! B1 P( G' W每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。' d5 {8 M9 i: L* p3 I, F1 y5 ]
有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
# k( e1 U6 K8 [6 }我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
& k# b  f# x+ {6 @7 Y: B9 h+ Q. H9 T( W3 J/ Y4 a; i
能不能举个例子?
7 W& g! u9 V- l
& L! k8 [) Y% ~! a( V) B4 X还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
( y) A7 p' i+ ehttps://www.chinaavg.com/read.php?tid=16610
/ e# m( s$ x# E& D0 s! u2 }' [https://www.chinaavg.com/read.php?tid=17017  X( o5 t# X( n5 d
, u/ T* z0 a( D. [& N
你可以用这个工具先查看一下16X12字库,有个直观的概念。
5 p  k9 q9 \* p5 C" i) K- J. b0 ~. d8 t
我可以给你举个例子。不过只能用文字描述。
8 i3 q1 Y( B8 O; g% b; ?# L字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。4 `; _# ?, X# a' k4 N& d9 _2 j
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
( E' B+ J7 t% z+ Ridx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); ' E5 ?5 Y! r- v3 @2 Q) @
不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
0 _9 k" Y# n0 s6 Y) M  z/ T, ]. o
+ p! w- E% X0 i2 X好,接下去说再解释一下这个任务。
, A' w( Z9 ^7 W4 x, X8 _# K2 f0 g原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。
- V; S. H) L9 [: `" s2 B
0 \8 h: {8 w3 x$ _2 F' L: C我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0  u  M- x4 L# V. W
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
- A4 C9 `& B% U' u4 F3 }3 N0 P: ]我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
8 h* [1 p; j4 S. e+ y7 W得到 FFFFAD4E   这肯定是错了~
9 O9 E1 Q7 U/ K0 `" g% @到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。! l0 h) W5 u1 d9 S/ I
等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
6 r/ x2 ~8 U( v: ]8 q( Z不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
& @' P7 Q$ a! K% o, G: y# |然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)8 T9 w( e$ m* u% O" R1 T5 P4 \9 }
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
. x5 C. v- F& J* `3 }3 b得到 FFFFAD4E   这肯定是错了~
2 ?2 t9 m3 F6 H% c: ]  t到底是哪里算错了?
, }( o0 ~+ ~* Y8 ^6 y/ {1 U
这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。
+ M6 _0 i5 @! S& T" u0 M  H8 f' z) D: ?3 Q9 ]
放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
" X1 H- ?) I  r$ w1 Y/ l4 [不同的只是一个汉字占用32个字节。
1 X6 D/ c* ?" O' g你可以先学着算16X16的字库的偏移量,然后和这个工具对照。" T, k* \1 h. m- k1 q. x
然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :* t* g2 {4 ^2 y5 ^- Q2 `! K' x% I+ m
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0/ C* O- ^# e* A0 D/ Z2 H0 ]
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
2 h5 g, t' e# c2 O我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
1 k! m, P$ m* [2 }1 n( z" F得到 FFFFAD4E   这肯定是错了~0 B. E+ r' M' V% M
到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
/ Q3 J4 F7 z8 T! d$ w; @
5 p# J, e. c$ J* V似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :& {! P7 E" G" Q' o# q3 n
* ^' E: b8 z& M+ j  ]
呵呵...补码

, V! c5 k2 [4 [( S2 V  U( N你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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