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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏
% A- Y8 |# C4 e$ S* D$ W" g但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。+ C! T' I4 t& G' x/ D

) J  ]8 m$ k# Q- r5 f' X我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
  Z- ^1 i+ \' R% I2 E% v( ]+ R0 Q$ r
字体文件在以下的帖子中,文件名是chinese_gb16x12.rar
1 ?  A) f# _, o6 @7 O6 t+ T+ l, u9 yhttps://www.chinaavg.com/read.php?tid=16790) E0 l% u" W" ?/ ]+ b

3 r% I" T0 ]" R) A/ S5 K字体是16X12,所以每个字模占24个字节。2 ^7 H3 |. v5 ?  m: e* Z" w
GB索引代码如下  q2 W! h8 @) E% s  f- T4 q
idx为GB232编码( x- @% ]8 L/ s2 e9 ~. Z8 B
idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); / [. u& ?5 m7 l$ M

% u2 j2 A, x, H5 y  `, j另外有一个要转换的文字的文件6 L# y$ f5 R5 ]! V- _) b! D
每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。
. u) ^3 J- l( E( I有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
  k. i' R+ D3 A我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。( a% P) N0 C# e9 |5 h5 f" g' R0 S

4 R# J7 B* b: H; x. [能不能举个例子?+ ?1 C# _. L; `4 P7 \

8 Q2 f7 z  C0 o6 I还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
- H9 U+ J' \( {  V' k5 M, whttps://www.chinaavg.com/read.php?tid=16610
$ x9 D, D3 V4 k3 I) z  {https://www.chinaavg.com/read.php?tid=17017
3 C) E. H. f. B+ p5 B0 b) `- `0 c; i; ^% {2 n
你可以用这个工具先查看一下16X12字库,有个直观的概念。8 `0 J8 v8 u/ R- D! X
% X3 P: e' Z1 v
我可以给你举个例子。不过只能用文字描述。$ Q8 ~, B. {9 I7 r, E5 x
字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。/ {2 T, b( m! G( O8 C7 m' t
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
) |$ Y( W: E5 K$ Xidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); . G! [0 G! ]2 T$ O  O) f2 a/ H
不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
, v0 k! C; e1 L5 W: u3 Q+ p" E- q5 Z8 J% r3 H
好,接下去说再解释一下这个任务。
7 n5 J/ y* ^! O+ l原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。0 G3 |. [  W6 y. N

, v, Y4 ]% N0 p8 C我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D08 c' j  {, E( H+ s& K# H
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1): k' y1 z3 {( j, @/ H% V* ?
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)% h3 L$ p- x8 C$ ]
得到 FFFFAD4E   这肯定是错了~
5 r% ~7 r# l- Z+ y  n3 b到底是哪里算错了?
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :! o, v) {) `/ b7 d
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
; A8 ?+ @3 w/ `9 b' Q+ g然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
3 T- |/ v8 V3 I* J' e. p8 z我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)( r: A+ D% G& J0 J3 n# t
得到 FFFFAD4E   这肯定是错了~
, h2 [9 l$ Z! z4 @. G: w到底是哪里算错了?
5 x0 Z, e) y3 Q' z
这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。# n1 C5 w/ ^- t. y" \' ]) Q
7 P8 M! N$ _! B6 v, |" M# Y
放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
/ X& {/ D/ _. q" L* [7 z, D+ r不同的只是一个汉字占用32个字节。
7 _8 ^) K9 t6 K/ r: x& \你可以先学着算16X16的字库的偏移量,然后和这个工具对照。9 T: u% `- R* v8 w4 {
然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
6 A8 J2 }  w; a' A, P不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
/ A9 d- O; o, V5 C: Z! `- s然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1), d2 @! \6 r+ Z9 w4 I* j! j
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)# I8 b1 b  P( M. e5 X# N' @$ v
得到 FFFFAD4E   这肯定是错了~( R9 Z6 g" W7 q  o, W# G" F4 y; n
到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
6 e" f5 }7 q1 i: Y; p! l; \9 X
9 G% l% ^. g' M" g似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
( X9 w/ O2 p6 t' m& N) T9 V
& ]; q2 X: |2 \2 @7 L7 h" T8 I呵呵...补码

1 B: ^. b8 B2 r! m- p  r你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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