世嘉土星图形技术研究1

世嘉土星图形技术研究1

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

本文介绍从世嘉土星游戏《慟哭 そして…》中提取CG图片的方法。通过模拟器Ymir和Yabause抓取VDP1/2的VRAM、CRAM及寄存器数据,分析图层配置,确认背景和精灵图参数。解码VDP1时,根据精灵图信息,从vdp1-vram.bin偏移0x10B40处提取8BPP、320×64数据,即可还原对话框底图,验证计算吻合。

🔎

延伸解读

土星双芯片分工与提取思路

世嘉土星的图形处理由VDP1和VDP2分工完成:VDP1负责3D多边形和动态精灵,VDP2负责多层2D背景和最终合成。本文提取CG时,先通过模拟器抓取两块芯片的VRAM、CRAM及寄存器数据,再结合图层观察确认各数据用途。理解这种分工有助于定位数据来源,避免混淆不同芯片的存储内容。

模拟器组合使用的优势

作者选用Ymir和Yabause两款模拟器配合:Ymir用于快速导出完整内存镜像,Yabause则提供直观的图层开关和VDP调试界面,便于确认背景、精灵等元素的归属。这种组合能提高逆向分析效率,但并非唯一方案——仅用Yabause也能完成全部操作,读者可根据习惯选择工具。

数据偏移验证的可靠性

文章通过计算验证了数据位置的正确性:左半对话框底图为320×64像素、8BPP格式,占用0x5000字节,从0x10B40偏移加上该大小正好等于右半图的起始偏移0x15B40。这种基于格式和尺寸的推算,为从VRAM中准确截取图像提供了可复用的验证方法。

Q&A

世嘉土星的图形芯片VDP1和VDP2分别负责什么?

VDP1负责3D多边形和动态精灵的绘制,VDP2负责多层2D背景、仿射变换和最终图像合成。

如何从世嘉土星游戏中提取CG图片?

使用模拟器(如Ymir和Yabause)进入游戏到目标画面,通过Ymir的Debug菜单Dump all memory导出vdp1-vram.bin、vdp2-cram.bin和vdp2-vram.bin,再通过Memory viewer中的VDP2 registers Dump出vdp2-registers.bin。然后使用Yabause的Layer和Debug功能确认图层配置,最后根据配置数据从VRAM中解码出图片。

在提取《慟哭 そして…》的CG时,需要从模拟器中导出哪些原始数据文件?

需要导出vdp1-vram.bin、vdp2-cram.bin、vdp2-vram.bin和vdp2-registers.bin。

如何确认游戏画面中各个图层的内容?

使用Yabause模拟器运行游戏到相同页面,点击View - Layer,逐个勾选Vdp1、NBGx等按钮进行观察,即可确认每个图层显示的内容。

在《慟哭 そして…》中,对话框底图的精灵图参数是什么?

对话框底图由两个精灵图组成,分别对应左半边和右半边。左半边纹理地址为0x10B40,右半边为0x15B40,两者均为8BPP、320×64像素。

如何验证从vdp1-vram.bin中提取的对话框底图数据位置是正确的?

通过计算验证:左半张图大小 = 320 * 64 * 1字节 = 20480字节 = 0x5000,而0x10B40 + 0x5000 = 0x15B40,正好是右半张图的起始地址,说明数据位置正确。

提取《慟哭 そして…》的对话框底图时,需要从vdp1-vram.bin的哪个偏移量开始提取?

从偏移量0x10B40开始提取,格式为8BPP,尺寸为320×64。

🏷️

标签

➡️

继续阅读