标题: 三国志系列码表与字库分析
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-11-26 23:50 资料 主页 文集 短消息 只看该作者
三国志从3代开始自带字库,而且不断的增加字的数量,也修改过很少一部分的字形,其实它的码序与big5是基本一致的.到5代,big5字基本全了.虽然这些都是dos时代的技术,但是从9代来看,自己带字库对提升显示效果还是很有帮助的,特别是要支持多内码的时候.像magicwin的字库就远不如9代的好,而且9代还对字用了反走样(其实就是使用了16色且包含透明色的调色板),效果看上去很不错
下面简单介绍一下三3~5的字符编码
我想big5码大家都应该比较熟悉了,两字节编码.第一个字节范围是a1~fe,第二个字节范围是40~7f,a1~fe.不过三国志里没有直接使用big5编码,但是它的编码顺序是基本相同的.它的第一个字节从92开始,到b0有间断,第二个字节分成很多段,分别是48~56,65~90,97~121,128~254,一共使用了188个码位
下面的对应是从第一个汉字开始的
转换代码如下
For j = 0 To 7 Step 2
If t(j) = 0 Or t(j) = 32 Then Exit For
tt = t(j + 1)
If t(j) < 176 Then
p = 1 - 188 + (188 * (t(j) - &H92)) * 2
Else
p = 11619 + (188 * (t(j) - 176)) * 2
End If
If tt > 47 Then tt = tt - 48
If t(j + 1) > 64 Then tt = tt - 7
If t(j + 1) > 96 Then tt = tt - 6
If t(j + 1) > 127 Then tt = tt - 5
p = p + tt + tt
Get #2, p, t(j)
Get #2, p + 1, t(j + 1)
Next j
其中#2是码表文件.这里有一个我处理过的码表,改变了某些编码的次序.不过限于时间,只保证人名的对应关系是正确

顺带说一下三国的字库.
它是14*16而不是一般的16*16.格式就是magicwin的那种啦,一位一个像素.
字库文件的名称是ziku.16p.
三九的是f_font.s9,开头就是big5码列表。
至于三十和三九差不多,只不过像素是倒序存放的


精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-11-28 11:40 资料 短消息 只看该作者
请教van:

三九和三十中历史武将的姓名编码是放在哪个文件中的呢?按照什么格式编码?


精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-11-28 14:10 资料 主页 文集 短消息 只看该作者
主程序里,现在当然是用Big5编码了
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-11-28 18:58 资料 短消息 只看该作者


QUOTE:
原帖由van于2004-11-28, 14:10:29发表
主程序里,现在当然是用Big5编码了

主程序中的姓名似乎并不是直接的big5码,或许是某种索引到f_font.s9码表的编码?

一个简单的例子:张飞的“张”字big5码是B1 69,ultraedit打开san9.exe(普通版脱掉了safedisc的),查找B1 69,共找到2处。如果姓名是直接big5编码,那么其中之一应该是姓“张”字的编码了,将他们替换,但运行san9.exe进游戏后姓名并没有变。由此可以肯定的是,找到的两处B1 69都不是姓名的big5码。倒是如果替换f_font.s9中前面的码表中的B1 69,那么进游戏后所有的“张”字都变了。
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-11-28 20:59 资料 主页 文集 短消息 只看该作者
big5码是肯定的,至于三9里武将姓名是如何存放的,我没什么印象了
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-1 20:27 资料 短消息 只看该作者
van兄能不能研究一下怎么修改三九中历史武将的姓名?

我试了好多方法都不知道怎么改:

1)查找存档文件,里面肯定没有;

2)剧本文件,好像也没有,据本里面只有武将能力数值;

3)改内存,也不行。方法是用金山游侠搜索。比如,要搜索张飞的big5码,就找B1 69 AD B8,可以找到好几处,全部替换;再回到游戏,发现张飞的名字的确是变了,但是只要一存档再取档,立刻又变回张飞了(由此也可以可肯定存档里面没有保存名字)。

4)根据van兄前面的介绍,应该是在san9pk.exe中找,但是却找不到,不知道怎么存放的。
精华帖
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5799
编号 622
注册 2004-7-7


发表于 2004-12-1 21:54 资料 文集 短消息 只看该作者
好像pk版加密了吧。
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-12-1 23:28 资料 主页 文集 短消息 只看该作者
是我记错了,在m_msg.s9里面的,你解压之后就可以看到人物名字了
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-12-1 23:30 资料 主页 文集 短消息 只看该作者
你可以参考友盟的帖子
http://www.e3ol.com/bbs/dispbbs.asp?Boardi...did=62&ID=15972
不过里面的附件已经失效了
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-12-1 23:54 资料 主页 文集 短消息 只看该作者
对了,其实San9普通版也不过是用safedisc2 cleaner自动脱壳的。你也可以用它对pk版试试看
精华帖
顶部
性别:男-离线 三国在飞
(天外怪魔 分封不动)

合肥侯谏议大夫

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14
组别 翰林学士
级别 安东将军
好贴 2
功绩 668
帖子 3313
编号 1650
注册 2003-10-24
来自 江西




QUOTE:
原帖由van于2004-12-01, 23:54:49发表
对了,其实San9普通版也不过是用safedisc2 cleaner自动脱壳的。你也可以用它对pk版试试看

东方给过我转换后的文件,可不能用啊。
这两个文件,一个是列传之类的,一个是游戏里面的所有文字,包括剧本说明在内。不过我把东方给我的弄丢啦。
M_MsgPK.s9
M_RtdnPK.s9
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 11:23 资料 短消息 只看该作者


QUOTE:
原帖由van于2004-12-01, 23:54:49发表
对了,其实San9普通版也不过是用safedisc2 cleaner自动脱壳的。你也可以用它对pk版试试看

试过safedisc 2 cleaner,它只能脱掉safeddisc 2.60以前的壳;但是PK1.01使用safedisc 2.90加的,san X使用3.10加的,safedisc 2 cleaner都不能脱壳。

我的水平很菜的  ,不会手动脱
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 11:37 资料 短消息 只看该作者
用applocale开ue32看了一下m_msg.s9,还是乱码太多,可能ue32没能区分开控制字符和big5码
精华帖
顶部
性别:男-离线 东方无翼

燕王

Rank: 28Rank: 28Rank: 28Rank: 28
组别 诸侯
级别 卫将军
好贴 6
功绩 849
帖子 6143
编号 1704
注册 2003-10-27


三九的msg也是LS11压缩的,我对他解压的算法跟sanx一样。但是sanx的就好用,san9的解压后可以看到内容,却不能正确载入。  不知为何。难道非要压缩回去他才肯认?

脱壳的时候同gameplore

附我解压的列传文件,van看看是怎么回事儿?


附件: M_RtdnPK.s9 (2004-12-2 11:53, 77.56 K)
该附件被下载次数 332
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 12:20 资料 短消息 只看该作者


QUOTE:
原帖由东方无翼于2004-12-02, 11:53:22发表
三九的msg也是LS11压缩的,我对他解压的算法跟sanx一样。但是sanx的就好用,san9的解压后可以看到内容,却不能正确载入。  不知为何。难道非要压缩回去他才肯认?

脱壳的时候同gameplore

附我解压的列传文件,van看看是怎么回事儿?

谢谢东方兄的解压文件,看到正确的文本了。

刚才看M_msg.s9时发现开头是LS11,不知道其含义,以为仅仅是个文件标记。听东方兄这么一说,才知道是压缩算法。怪不得applocale直接看m_msg.s9不行
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 12:30 资料 短消息 只看该作者
请教一下东方兄:那个LS压缩算法是标准的算法还是KOEI自创的?好像找不到这个算法,只有一个LZ压缩算法
精华帖
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5799
编号 622
注册 2004-7-7


发表于 2004-12-2 12:32 资料 文集 短消息 只看该作者


QUOTE:
原帖由gameplore于2004-12-02, 12:30:02发表
请教一下东方兄:那个LS压缩算法是标准的算法还是KOEI自创的?好像找不到这个算法,只有一个LZ压缩算法

这个不是标准的lz系列算法,不过有lz的一部分思想,目前还没有看到某种已经命名的算法与这个完全相同。
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-12-2 13:08 资料 主页 文集 短消息 只看该作者
解压以后的三9Msg文件,可以直接替换原来的文件


附件: M_Msg.rar (2004-12-2 13:08, 173.13 K)
该附件被下载次数 321
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 13:31 资料 短消息 只看该作者


QUOTE:
原帖由van于2004-12-02, 13:08:07发表
解压以后的三9Msg文件,可以直接替换原来的文件

找到人名了,就在解压缩后的m_msg.s9的FDAA开始。

谢谢van  ,谢谢各位高手
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 13:33 资料 短消息 只看该作者


QUOTE:
原帖由Maxwell于2004-12-02, 12:32:28发表
这个不是标准的lz系列算法,不过有lz的一部分思想,目前还没有看到某种已经命名的算法与这个完全相同。

是这个么:

http://www.gameres.com/Articles/Program/Other/LZSS.htm
精华帖
顶部
性别:男-离线 van

平曲侯泸川军节度使

Rank: 13Rank: 13Rank: 13Rank: 13
柱国(正二品) 工神
组别 节度使
级别 军师将军
好贴 3
功绩 475
帖子 984
编号 25461
注册 2004-11-24


发表于 2004-12-2 13:36 资料 主页 文集 短消息 只看该作者
具体的压缩算法可以参考
http://www.xycq.net/forum/index.php?showtopic=34612
精华帖
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5799
编号 622
注册 2004-7-7


发表于 2004-12-2 13:43 资料 文集 短消息 只看该作者


QUOTE:
原帖由gameplore于2004-12-02, 13:33:17发表
是这个么:

http://www.gameres.com/Articles/Program/Other/LZSS.htm

不完全是,你可以参照van的文章,过会儿我也会写一篇文章。
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 13:47 资料 短消息 只看该作者


QUOTE:
原帖由van于2004-12-02, 13:36:55发表
具体的压缩算法可以参考
http://www.xycq.net/forum/index.php?showtopic=34612

van研究的真深啊,pfpf
精华帖
顶部
性别:未知-离线 gameplore

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
好贴 1
功绩 7
帖子 274
编号 17912
注册 2004-9-18


发表于 2004-12-2 13:50 资料 短消息 只看该作者


QUOTE:
原帖由Maxwell于2004-12-02, 13:43:56发表

QUOTE:
原帖由gameplore于2004-12-02, 13:33:17发表
是这个么:

http://www.gameres.com/Articles/Program/Other/LZSS.htm

不完全是,你可以参照van的文章,过会儿我也会写一篇文章。

期待ing
精华帖
顶部
性别:男-离线 小平头

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 4
编号 207219
注册 2007-8-26


发表于 2007-8-26 16:27 资料 短消息 只看该作者
看来想要做游戏还是太难了,我根本就学不会
太难了,要是有图文说明就好啦
精华帖
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2024-10-4 13:33
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015494 second(s), 11 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP