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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏% i, I: A! q% f* F- N& |: d
但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
* [3 z; K) g" q* P
5 ^# ^# k8 C) N我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。9 |! W( Z- e! y/ o  ^0 W
7 c- Y1 X- z. w% O( J
字体文件在以下的帖子中,文件名是chinese_gb16x12.rar : w( _, C0 a6 h. c' ]3 n" j
https://www.chinaavg.com/read.php?tid=16790
" S2 `) x$ }. t0 m5 V3 n3 x1 v
0 c  j) @  W- @6 ?$ ~字体是16X12,所以每个字模占24个字节。0 w8 I1 f% s4 G
GB索引代码如下
0 L1 T* X, W9 @  E: F+ \9 t1 sidx为GB232编码
# t( |% k) R. M4 ]4 P; L( k- Cidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); : i: g6 m3 D8 O9 N5 ^7 m! o4 K# P

3 X7 l9 R' a5 y- w另外有一个要转换的文字的文件
9 w: q: b) t, P' R3 l7 |) i每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。0 Z+ v$ _0 f2 T7 O9 T' Y
有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
3 Y' `2 y: F. z3 I, r& ^我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
5 |" t1 ]  t/ c9 Y* C9 b
+ w4 ~/ k  ~) k8 N; C" f能不能举个例子?) J6 M+ V3 ]- f  G" C# i
0 Y, P- j# y3 F4 M1 Q, f+ N
还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
0 a0 q7 J/ `; lhttps://www.chinaavg.com/read.php?tid=16610
4 [+ W6 M# p$ Ehttps://www.chinaavg.com/read.php?tid=17017
* `. N) g7 B! v* y3 }
+ N+ H% c6 J' k1 J1 X你可以用这个工具先查看一下16X12字库,有个直观的概念。$ G$ @$ K9 N" R  \' ]. u) U$ @
7 y& I. D/ A+ P/ n3 w( M. s. E! N
我可以给你举个例子。不过只能用文字描述。
9 u; a1 F# |  O  {字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。; A& W! u; M2 G) L/ R" `3 U
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
* ]3 I6 M9 [! x) c3 l* Gidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); & q9 }+ k% K( D' W7 v5 u  b0 [7 ^9 C
不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
% z. d1 V( t0 i' a- e, g+ S1 @* u* }" ^
好,接下去说再解释一下这个任务。. Y# q, B8 b9 a0 r. m- U
原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。7 T+ U: }: |4 s( y' r
( X( B, O. U* ]$ c
我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0" t1 D. `6 ?8 l
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)# G: h  P" ]3 h7 q( E+ E* @
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
6 j) v& ^& B/ M得到 FFFFAD4E   这肯定是错了~/ d: @/ {3 K* I
到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。
4 w! A8 H0 G2 G: h' q* S$ q等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
7 N4 S* |/ Y+ j: Y- [3 B7 S2 a不会算偏移量啊~  如方说‘新’字,GB码是 C2D03 Q; u* P" F5 A$ V1 W/ ~) b$ j
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
  J; x* Y; V; o& E/ v+ ?我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)5 `! ~" V3 H3 }* \
得到 FFFFAD4E   这肯定是错了~
% l' ~& y) k5 I8 O' r3 c到底是哪里算错了?
/ W( P0 z# q8 `# G
这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。; N5 H) e2 ]7 ^! I% W" v: v

( y9 ^  I  E  u放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。$ X+ w! ?* a/ G# _
不同的只是一个汉字占用32个字节。
6 ]! E$ e5 I) |# ]你可以先学着算16X16的字库的偏移量,然后和这个工具对照。( c  b& ~3 d3 b# R2 F: l/ a
然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
5 r+ |3 ~4 I# v2 X不会算偏移量啊~  如方说‘新’字,GB码是 C2D0* y5 [0 H! V, H% l8 |8 N; v% Q4 t# w
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
. W) Q. S. W/ q4 J( ?2 g: g我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)8 [0 T5 C$ v; d+ D$ o
得到 FFFFAD4E   这肯定是错了~
' T1 M+ ?" Q4 |0 q5 V到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html$ G- r" v5 h" M% M: A# b# P# ^* h9 u

5 x( C8 G1 J& t7 [" q# g% x似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :& [! C) `( W3 T* S

/ M. ~3 @6 d4 ^4 f& H& S2 M& i; R呵呵...补码
' Q! P. v/ w9 n: |5 L+ p3 [
你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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