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

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

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

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

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

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

疾速天龙是一个可以用scummvm模拟器模拟的游戏' D) ~6 N4 k1 F' r6 Y3 ~9 O& [
但是在导入文本的时候,我们发现一些特定的文字无法被导入到文本中。
7 C. r, `/ l# e) L, n7 o7 d. d
* I: l: I' `5 ^: M2 N( ?我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
# i7 U! @& i- ?* |1 ?+ w) I1 b: U
2 C% h# v5 T% d+ e, ]7 ?9 ^字体文件在以下的帖子中,文件名是chinese_gb16x12.rar - v+ A! H: t. g/ e# X7 S4 M
https://www.chinaavg.com/read.php?tid=167904 X% \  Q4 k& j+ h) \. ^

* {. |' V2 X7 k$ K2 \字体是16X12,所以每个字模占24个字节。
  |( M0 }, X- A: n: U0 ]! mGB索引代码如下7 m# e2 ?2 M# q" k& I  B4 `( h' @* g* ^
idx为GB232编码6 k% u" t0 F) w+ E8 K- X2 f9 q  h8 s
idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1); - H) J# l' G) A+ |' H0 ?+ e' s& P
5 F7 M  x; ]8 F$ x
另外有一个要转换的文字的文件
0 z" _0 s0 _9 Y" _: n5 K6 j. X0 p每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。
* B1 [  Q$ b9 {) Y1 q! L有若干行,循环即可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-6-5 23:53 | 只看该作者
这一句话没看懂:
/ M. g' }# O) P我们采用修改字体文件中字形的方法,当我们需要输出文字A的时候,我们在文本中导入的是文字B,但是我们把文字B的样子修改为A。这样我们就能输出A了。
! P* I4 \; V, S  C# m& W% b
$ \2 j1 i  L; F能不能举个例子?/ V  y" F' S: G" C! `  _# v
: t4 ]5 y4 s" ?( s. R/ h* T; W
还有这个“每行2个字,就是把前一个字的字模样子转换为后一个字的字模样子的意思。”,也请举个例子。
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-6-6 11:29 | 只看该作者
你可以先看一下下面这2个帖子.
0 W6 V. f& B4 k; |- Ohttps://www.chinaavg.com/read.php?tid=16610+ Q: \+ g! ~5 [0 v3 X! ?# U2 ]
https://www.chinaavg.com/read.php?tid=17017. R! c( `% ~2 c0 M" O3 s; E0 l

8 {5 u; I: c3 w8 Y) H% u你可以用这个工具先查看一下16X12字库,有个直观的概念。
. G9 T/ d. t+ ^$ `$ }: ~% _% q& R
6 O  A% i$ y+ s4 d. m我可以给你举个例子。不过只能用文字描述。
: e7 R, t' f4 d- u$ f字体文件中每24个字节保存了一个汉字的字模,一个挨一个连续存放。
( X0 i2 f8 T6 \* o2 F根据汉字的编码找到该汉字字模的偏移量的公式我写了,是一下这个公式。
; d' ]# J* X& b0 n7 Z( pidx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1);
+ c" t  t' e% j, e" Q不放心的话,可以找个汉字,然后找到它的字模的偏移量,然后切出24个字节,再用这个工具看一下。
5 x) ]( P! o& k1 g* @0 _- v+ z9 ?
) Y9 Z  {4 R) P% A好,接下去说再解释一下这个任务。! @5 o; D$ J# g: q3 R- T( G$ r( F
原本16X12里的字模的样子都是没有重复的,现在我们要做一件事,我们要修改一个汉字的字模,比如说是"你"这个字,我们给它做个变脸手术,让它的样子长得和"我"这个字一样,其实就是找到"我"的字模的位置和"你"的字模的位置,把"我"的字模覆盖掉"你"的字模。
+ q0 r! B) ~" a! a8 w7 j( b& u+ G1 m% h' T* B6 R
我们要求修改好多对"你"和"我",这个就在一个文本文件里定义,怎么定义其实是随便的。
回复 支持 反对

使用道具 举报

sspking 该用户已被删除
地板
发表于 2009-6-6 12:53 | 只看该作者
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
  Z  k3 |8 p5 Y8 y% w然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)
* i7 G* r" B" [" O3 _我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)
# S: m8 x( v' h) a( q  y4 p得到 FFFFAD4E   这肯定是错了~3 T$ Z( U3 ]0 n( {4 G, R
到底是哪里算错了?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-6-6 13:07 | 只看该作者
算偏移量是比较费脑子的,我记得好像高位低位要换一下。& ^+ f' ^! b, K6 y2 `
等我发现你哪里算错再告诉你。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-6-6 13:43 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :
* K5 a2 z) [+ k4 z  X' g- T不会算偏移量啊~  如方说‘新’字,GB码是 C2D09 Z& s+ R: f. a' |9 V3 ~+ I6 ?
然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1)' Q3 M7 `. A0 A4 n7 R5 e
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)4 m$ ?3 }) q; U) v
得到 FFFFAD4E   这肯定是错了~
/ }2 ]" ~5 N0 l! y到底是哪里算错了?

, _4 d0 p% Q  z) |: A7 ^这个索引是指这个汉字在字库中是第几个,所以你还要考虑每个汉字占用的字节数24,才能正确算出偏移量。; J6 `! @; F  b! t

5 O  A  Y: m/ C" S* g放上一个工具,可以看16X16的字库的偏移量,索引的计算方式相同。
3 P0 c6 f! J8 A: l不同的只是一个汉字占用32个字节。
4 Q" i) t4 {7 I0 c) _你可以先学着算16X16的字库的偏移量,然后和这个工具对照。% k1 g$ Q8 z3 o$ l2 a; t: g% Y
然后就能算16X12的了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7#
发表于 2009-6-6 14:31 | 只看该作者
引用第3楼sspking于2009-06-06 12:53发表的  :' s, i6 I# H3 x+ P1 |" ~
不会算偏移量啊~  如方说‘新’字,GB码是 C2D0
; O: ]3 f! W, C3 _然后 idx = ((idx % 256) - 0xa1)* 94  + ((idx / 256) - 0xa1), p  q- A& x; z( U. _
我用VB ,那么就是a = ((a Mod 256) - &HA1) * 94 + ((a / 256) - &HA1)/ H0 I2 w) H. l2 `' D1 z( I3 n4 D* @: O8 r
得到 FFFFAD4E   这肯定是错了~
7 ?2 W, m' M$ ~: n, u到底是哪里算错了?
呵呵...补码
回复 支持 反对

使用道具 举报

8#
发表于 2009-6-6 14:32 | 只看该作者
http://promiseforever.com/200904 ... rt-for-chinese.html
0 Y; u- D; T- w% x2 P4 r, M, T0 O& z8 n  s' o$ Q
似乎不是很早前就做了么...
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2009-6-6 14:33 | 只看该作者
引用第6楼firendless于2009-06-06 14:31发表的  :
  Z/ q" A6 V7 m' B
% r4 E' M- r( t2 z2 a6 Q呵呵...补码
: u( ~1 T6 @7 M$ c( K
你说详细一些。应该怎么样算才对。
回复 支持 反对

使用道具 举报

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

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