标题:
请高人指点(关于《三国志英杰传》人物头像提取问题)
[打印本页]
作者:
封剑尘
时间:
2006-9-25 21:45
标题:
请高人指点(关于《三国志英杰传》人物头像提取问题)
本人想把《三国志英杰传》的人物头像提取出来,结果发现困难重重。
《三国志英杰传》的人物头像应该是存储在 FACEDAT.R3 文件中。共有 240 幅,尺寸为 64 X 80 ,颜色只有 8 色,如果是类似 BMP 格式存储,每幅图应该是 1920 字节,总大小至少是 460800 字节。
而 DOS 版英杰传 FACEDAT.R3 文件大小只有 341808 字节,所以应该是压缩过的,但看文件头又不是 LS11 压缩。van 太守解释
QUOTE:
压缩了,TFDED.COM这个程序负责解压缩
。可惜我不会汇编,勉强用 DEBUG 对 TFDED.COM 跟踪了几行,结果更是莫名其妙:( AX BX CX DX SP BP SI DI DS ES SS CS IP 等省略)
DEBUG TFDED.COM
( 0B68:0100 E90506 JMP 0708 )
-t
0B68:0708 FC CLD
-t
0B68:0709 B062 MOV AL,62
-t
0B68:070B 2E CS:
0B68:070C A23B07 MOV [073B],AL CS:073B=62
-t
0B68:070F 2E CS:
0B68:0710 A24B07 MOV [074B],AL CS:074B=62
-t
0B68:0713 2E CS:
0B68:0714 A25F07 MOV [075F],AL CS:075F=62
-t
0B68:0717 2E CS:
0B68:0718 A27107 MOV [0771],AL CS:0771=62
-t
0B68:071B 32C0 XOR AL,AL ;不管前面的内容有没有意义,这一下必然是 0 了吧
-t
0B68:071D 3A068000 CMP AL,[0080] DS:0080=00
-t
0B68:0721 7438 JZ 075B
-t
0B68:075B A28107 MOV [0781],AL DS:0781=00
-t
0B68:075E B86235 MOV AX,3562 ;直接指定了AX,前面那些还有什么用?
-t
0B68:0761 CD21 INT 21
……
有没有哪位高人能帮忙分析一下 TFDED.COM ,找出解压原理,不胜感激。文件不长,只有 1985 字节。
然后我又下载了 WIN 版英杰传(这个版本在我的机器上无法运行,硬盘会响将近一分钟,还是什么都没出来)。 WIN 版英杰传的 FACEDAT.R3 文件是 LS11 压缩的,解压后分为 240 段,可是每段长度不一,最少 1197 字节,最多 2339 字节,而且每段都包含 48 字节的头部信息,这部分信息完全相同:
00000000h: 4E 50 4B 30 31 36 04 00 80 02 90 01 40 00 50 00
00000010h: 00 00 0F 00 F0 00 FF 00 00 0F 0F 0F F0 0F FF 0F
00000020h: 77 07 0A 00 A0 00 AA 00 00 0A 0A 0A A0 0A AA 0A
前六个字节是 NPK016 ,第 13 和 15 字节我怀疑是图像的宽度和高度,其他的就不明白了。难道又是编了码?这编码也够奇怪的,编码后的长度有的是原来的一半多点,有的比原来还大,谁能知道这是什么编码?
(van 太守的 RPGViewer 无法打开 DOS 版的 FACEDAT.R3 , WIN 版的能识别出有 240 幅图片,但无法正常显示,唯一能显示的两幅都是花的,而且高度也不对,显示的是 64 X 64 ,实际是 64 X 80 )
有请各位高人指点迷津,助我解开难题,感激不尽!
作者:
shadewither
时间:
2006-9-26 00:08
虽然十年以前就开始用pc了,但是一直不会用debug
既然LZ连DEBUG都会用,还是自己琢磨一下吧
附件是sourcer8的反汇编结果,应该能看看了;我是看不懂
[
本帖最后由 shadewither 于 2006-9-26 15:48 编辑
]
附件:
TFDED.LST
(2006-9-26 15:48, 56.56 K) / 该附件被下载次数 231
http://xycq.org.cn/forum/attachment.php?aid=22302
附件:
TFDED.SDF
(2006-9-26 15:48, 8.91 K) / 该附件被下载次数 200
http://xycq.org.cn/forum/attachment.php?aid=22303
作者:
金圭子
时间:
2006-9-26 09:21
48色,可能性最大的其实还是个16色的颜色表,就是3位1色(解过几个Hgame,除了标准的bmp。都是3位的,bmp这种浪费1位的情况在dos时代很少,当然当时的格式都是随时写随时换,可能到3代就和2代的数据格式不一样了,所以不像bmp这种“永流传”的还用到了保留位…………)
看看后面一段有点像(间隔的出现00 ff或者00 f0的多是颜色表),前面一行多的可能是格式吧(图片长宽等等)…………
作者:
封剑尘
时间:
2006-9-26 21:00
QUOTE:
既然LZ连DEBUG都会用,还是自己琢磨一下吧
我说了我不会汇编,像 MOV ADD JZ 这类的命令还能顾名思义, INT 21 之后干了什么就一点儿概念也没有了……
QUOTE:
可能性最大的其实还是个16色的颜色表,就是3位1色
从抓下来的图看,人物头像应该只用了 8 色,我说的每幅图 1920 字节就是按每像素 3 位算的,不压缩情况下这是最小的尺寸了。最大的问题是每段长度不一,最少 1197 字节,最多 2339 字节,显然不是按固定尺寸格式保存的。
唉!实在不行我先抓 240 幅图剪切下来用,具体格式以后再研究吧,浪费时间啊……(可惜也没办法替换人物头像了)
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/)
Powered by Discuz! 5.0.0