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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏
" D7 V! e6 [* w. c8 y但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
$ j7 ?- b  i9 J) P2 p, L0 r6 c, \, ]: u/ ^; I
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
3 @$ a( R$ w- o* X# ]- Z9 Z7 ?" ]/ d# E7 t% ]4 l5 j
字体文件在以下的帖子中,文件名是chinese_gb16x12.rar
' o" C: [3 w" o) z, {https://www.chinaavg.com/read.php?tid=16790
( S& K+ E8 p2 o% _
+ d7 H0 z$ i0 r3 ~: B字体是16X12,所以每个字模占24个字节。
% X% z$ v! y' C* V. s! h9 lGB索引代码如下5 K4 _3 q! `- t! y
idx为GB232编码
; x: q9 B: F+ ]7 T5 k* G1 D1 N$ w( `idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);   t8 @% Y0 X/ Y, f$ r
* P; \, X2 Y7 r4 B* e* z; M
另外有一个要转换的文字的文件
" ]; ^9 `0 H$ \0 f% U4 a每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。
! |6 w& t& J0 j' w4 p9 ]  I有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:  J; U4 d0 @# L6 R
我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
: s; _2 i! a, |- L, ]
8 ~; l- I( ~0 a能不能举个例子?8 H3 Q2 q) \3 a+ [; K& ^

: L  z% ]. N& F# s  h+ e( P& {还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
7 M6 D' w4 B8 T4 Ghttps://www.chinaavg.com/read.php?tid=16610
) Y1 p) G3 t1 J5 f" Khttps://www.chinaavg.com/read.php?tid=17017
  z4 o2 @' a7 l3 y
5 _( x1 a- Z* Z; R8 i你可以用这个工具先查看一下16X12字库,有个直观的概念。
6 @( T8 g( ^" p) L  P8 x6 V. r8 |6 D: \$ ~/ F) a
我可以给你举个例子。不过只能用文字描述。: h; j0 C2 {8 j0 S$ G0 }. @5 c' I
字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。; R/ t0 K+ k4 V+ p9 w9 W
根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
) y* \( D0 [6 Gidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
+ T' X( \+ S1 j' U6 H* Z不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。9 e/ E5 e' |7 {* ~* J3 o! T8 P7 D

2 v/ |( [, D8 C$ M6 z, n3 `2 x, e好,接下去说再解释一下这个任务。
% ], r& H9 W# c5 ]原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。" c# l% p  j. B

0 a0 B+ {* V4 i6 Q- L7 a5 R# r8 t我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0" H1 @1 |7 `% }2 m( Y% O' z" O
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)9 D4 A* P3 p: w) ~8 V4 v7 |) }, h
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)' c! p/ Y* A! u7 i
得到 FFFFAD4E   这肯定是错了~* F0 ^. \: V+ Q& y/ W6 k
到底是哪里算错了?
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :4 H- j: c$ n$ j6 g% W0 d
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0) k7 z# c# f0 T& X% W
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
/ _1 Z/ ]; t! E, ~我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
0 c  c8 m7 u5 g8 a" R得到 FFFFAD4E   这肯定是错了~
' i. v- ?2 V# I2 s3 p* Y到底是哪里算错了?
0 H5 k- T5 t% w9 C- l
这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。3 \# z3 a$ p8 O3 ~- I
- p( y2 \# V- R. @
放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
( ]* l8 `" L& t5 P+ H  p: e不同的只是一个汉字占用32个字节。
) H- {! x/ K* I  V你可以先学着算16X16的字库的偏移量,然后和这个工具对照。
0 z5 u$ e( R% U然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
# Z$ F  H# y9 A  y6 m7 z( i7 _! O不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
0 n1 f4 Z5 o9 A. }然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
* C! A1 W3 U7 i' C# u6 n8 A- i我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)' X# ~: E5 R1 R5 K: _: l
得到 FFFFAD4E   这肯定是错了~. h! Q8 \4 r( e% e8 B- O/ n+ J
到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
$ T: Q: h  K+ V4 L, ]1 @9 D( k" j6 y9 b2 x! |( M
似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
# F9 h+ @/ U! l; O& [; P+ a! W" {; A, n% n
呵呵...补码
% m4 y- D7 Z  F8 D
你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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