上次我们大致对 PVS 档案的格式有了个思路,接下来我们就继续进行完整的分析吧
本系列已完结,以下为整理目录方便查阅
反过来看 PVS 的文件结构,其实很简单,文件分为三个部分,头部标记、调色板、以及 图形部分
每个 PVS 文件都以 30 00 00 08
开头
接下来的 48
个字节就是调色板了,读取方式和 16.PAT
的读取方式相同,这个 以前
有介绍过,也不再多讲。之前分析绘图过程时,调色板的信息是被我忽略的,因为觉得
可以直接使用 16.PAT
后来发现,PASS*.PVS
的颜色不对,才确认需要用到其他的调色板,
不过那时已经猜到,调色板就在头部。
接下来的部分就是动画帧了,每帧都是由四字节长度再加背景图内容的「长度-值」模式 构成的,一直到文件尾,背景图的解码方式直接参考 青衫 就好,不过这部分由于每帧都是基于之前绘制的结果,所以第一帧的数据量最多,其他帧 只写入变化部分,所以绘制时需要保留上一帧的结果,再加上变化内容。
文件名 | 内容 | 创建时间 |
---|---|---|
ACA.PVS | 法官敲槌 | Jan 19, 1996 6:41 AM (GMT) |
MARK.PVS | 开场动画 | May 21, 1996 8:48 PM (GMT) |
MOA.PVS | 各位客户辛苦了-旗袍版 | Jan 28, 1996 5:34 AM (GMT) |
MOB.PVS | 公布本月排行榜-旗袍版 | Jan 28, 1996 5:36 AM (GMT) |
MSA.PVS | 各位客户辛苦了-制服版 | Jan 28, 1996 5:39 AM (GMT) |
MSB.PVS | 公布本月排行榜-制服版 | Jan 28, 1996 5:41 AM (GMT) |
PASS1-1.PVS | 台北通关-孙小美 | Jan 31, 1996 2:01 PM (GMT) |
PASS1-10.PVS | 台北通关-小丹尼 | Jan 30, 1996 11:22 PM (GMT) |
PASS1-11.PVS | 台北通关-沙隆巴斯 | Jan 31, 1996 12:49 PM (GMT) |
PASS1-12.PVS | 台北通关-阿土 | Jan 30, 1996 10:27 PM (GMT) |
PASS1-2.PVS | 台北通关-钱夫人 | Jan 31, 1996 2:12 PM (GMT) |
PASS1-3.PVS | 台北通关-珍妮佛 | Jan 31, 1996 9:10 AM (GMT) |
PASS1-4.PVS | 台北通关-石桥贵子 | Jan 30, 1996 11:02 PM (GMT) |
PASS1-5.PVS | 台北通关-玛格丽特 | Jan 30, 1996 11:43 PM (GMT) |
PASS1-6.PVS | 台北通关-林娇娇 | Jan 30, 1996 10:06 PM (GMT) |
PASS1-7.PVS | 台北通关-金凯子 | Jan 30, 1996 10:41 PM (GMT) |
PASS1-8.PVS | 台北通关-安德烈 | Jan 31, 1996 11:45 AM (GMT) |
PASS1-9.PVS | 台北通关-白瑞德 | Jan 31, 1996 5:52 PM (GMT) |
PASS2-1.PVS | 台湾通关-孙小美 | Jan 31, 1996 2:26 PM (GMT) |
PASS2-10.PVS | 台湾通关-小丹尼 | Jan 30, 1996 11:33 PM (GMT) |
PASS2-11.PVS | 台湾通关-沙隆巴斯 | Jan 31, 1996 1:11 PM (GMT) |
PASS2-12.PVS | 台湾通关-阿土 | Jan 31, 1996 4:46 PM (GMT) |
PASS2-2.PVS | 台湾通关-钱夫人 | Jan 31, 1996 7:56 AM (GMT) |
PASS2-3.PVS | 台湾通关-珍妮佛 | Jan 31, 1996 9:43 AM (GMT) |
PASS2-4.PVS | 台湾通关-石桥贵子 | Jan 31, 1996 11:12 PM (GMT) |
PASS2-5.PVS | 台湾通关-玛格丽特 | Jan 31, 1996 2:18 PM (GMT) |
PASS2-6.PVS | 台湾通关-林娇娇 | Jan 31, 1996 3:07 PM (GMT) |
PASS2-7.PVS | 台湾通关-金凯子 | Jan 31, 1996 7:09 AM (GMT) |
PASS2-8.PVS | 台湾通关-安德烈 | Jan 31, 1996 12:06 PM (GMT) |
PASS2-9.PVS | 台湾通关-白瑞德 | Jan 30, 1996 10:01 PM (GMT) |
PASS3-1.PVS | 大陆通关-孙小美 | Jan 31, 1996 1:36 PM (GMT) |
PASS3-10.PVS | 大陆通关-小丹尼 | Jan 30, 1996 11:13 PM (GMT) |
PASS3-11.PVS | 大陆通关-沙隆巴斯 | Jan 31, 1996 12:28 PM (GMT) |
PASS3-12.PVS | 大陆通关-阿土 | Jan 31, 1996 3:08 PM (GMT) |
PASS3-2.PVS | 大陆通关-钱夫人 | Feb 1, 1996 12:33 AM (GMT) |
PASS3-3.PVS | 大陆通关-珍妮佛 | Jan 30, 1996 10:04 PM (GMT) |
PASS3-4.PVS | 大陆通关-石桥贵子 | Jan 31, 1996 10:02 PM (GMT) |
PASS3-5.PVS | 大陆通关-玛格丽特 | Jan 31, 1996 6:51 PM (GMT) |
PASS3-6.PVS | 大陆通关-林娇娇 | Jan 31, 1996 10:09 AM (GMT) |
PASS3-7.PVS | 大陆通关-金凯子 | Jan 30, 1996 10:19 PM (GMT) |
PASS3-8.PVS | 大陆通关-安德烈 | Jan 31, 1996 11:24 AM (GMT) |
PASS3-9.PVS | 大陆通关-白瑞德 | Jan 31, 1996 5:19 PM (GMT) |
SS16.PVS | 大宇 LOGO | Jan 18, 1996 7:23 AM (GMT) |
ACA、MOA、MOB、MSA、MSB
使用 16.PAT
也可以画出来,但是 PASS
系列就要用专用的
调色板了,SS16
么,留给大家验证吧
只有 PASS2-12
在解析时遇到了问题,有一桢的长度数据是错的,特殊处理了一下,遇到
错误长度终止解析,导致这个动画会短一点,我不清楚是我这个版本的问题,还是原厂
数据就错了。
现在回头看 PVS 格式,感觉很简单,但是实际回顾整个摸索的时间,其实还是付出了不少 的精力,首先要学会用 dosbox 调试程序,然后要看懂简单的汇编,最后是了解 VGA 的 绘图方法,还好没有时程的压力,从我开始对 PVS 文件产生好奇,到真正解出来已经 好几个月过去了,当然期间也不是一直有时间来研究这个,很多时候也是根据疑问看了一堆 资料,结果当初的疑问没有解决,还产生了更多的疑问,挫败感还是很多的。感觉现在 大富翁 3 这个心结我已经基本解开了,希望这个系列也能帮到其他想要了解那个时代游戏 资源的朋友,我也把解析的代码放了一份到 gitlab, 供大家参考,如果有任何疑问,还请联系我,这个系列先告一段落吧。