注册 登录
琵琶行论坛 返回首页

红莲火焰的个人空间 https://www.ppxclub.com/?89405 [收藏] [复制] [分享] [RSS]

日志

SEGA Saturn模拟效能研究

热度 2已有 1832 次阅读2020-4-27 10:26 |个人分类:模拟日志| 世嘉土星

       OpenGL CS视频渲染器
       土星是怪兽,它有8个处理器,其中有2个自定义图形处理器VDP1和VDP2。VDP2处理背景,VDP1处理精灵、纹理和多边形。

       VDP1是每行绘制一条“四边形”线,其基本思想是沿水平边插值端点,然后在这些端点之间绘制纹理线。它必须在斜率改变的地方用一个额外的像素画线,所以所有的像素都有一个相邻的左、右、上或下。他们这样做是为了防止线之间的空隙。

       像OpenGL这样的现代图形api不知道如何做到这一点,因为它的渲染管道是基于三角形几何体的,所以基本上它不能再现VDP1的行为。有一些技巧,比如细化,但最终它们只是针对特定问题的解决方案,而不是针对这一问题的所有解决方案。不过,这里有一些好消息:在OpenGL 4.3中,引入了一个名为“计算着色器”的新功能,您可能已经通过Flycast的“顺序无关透明度”(order independent transparency)或N64的“并行”(parallel)中听说过它,这个新组件为OpenGL提供了许多灵活性,并允许实现按行渲染四边形的例程。这就是这个渲染器的目的:精确地再现VDP1的行为。


       让我们做一些比较,从头到尾,是从控制台,Mednafen /甲虫、Kronos(OpenGL CS渲染器)、Kronos(旧的OpenGL渲染器,基于Yaba Sanshiro的)的屏幕截图。这些图像与VDP1处理行为相关的两件事值得注意:

       * 道路边界:在控制台上,Mednafen和Kronos的新渲染器,如果放大,您会注意到它不是一条平滑的线,有点,这是准确的行为;最后一个屏幕虽然平滑线可能看起来更好,但实际上是不准确的。
       * 到处都是孔:如果放大最后一个屏幕截图,您会注意到在山顶,后面的道路上到处都有一些孔,其他屏幕截图中不存在这些孔。

       可以使用OpenGL渲染器解决这些漏洞,但最终最终会在此过程中产生其他问题。直到最近,我们仍使用这种解决方法,但对于Sega Rally而言,它只是放大了道路边界上的点。这种新渲染器的唯一已知缺点是,它将需要一个相当不错的GPU!
---------------------------------------------------------------
       世嘉土星不做3D,而是做3D变形的2D精灵

       土星模拟器从技术上讲,OpenGL可以做四边形,在OpenGL或D3D中将这些四边形绘制为实际的3D对象,硬件上是通过三角形模拟的四边形但这样的全3D硬件渲染的精确图形会产生大量渲染错误和其它各种各样问题,并且无法再现土星可以做出许多奇怪的效果(比如“蝴蝶结四边形”)。主要是API的一个限制影响3D加速,老实说,它需要至少有OpenGL 4.3能力的GPU硬件,在OpenGL 4.3中,引入了一个名为“计算着色器”的新功能,这个新组件为OpenGL提供了许多灵活性,并允许实现按行渲染四边形的例程。Kronos新的OpenGL CS渲染器在着手解决基于Yaba Sanshiro旧OpenGL渲染器上的问题,精确地再现VDP1处理行为是OpenGL CS渲染器的目的。

       当主机硬件和PC硬件非常不同,并且PC硬件速度足够快,可以在软件中模拟主机硬件处理,一开始就这样做的有SSF。不过,SSF开发者也使用了DX11 GPGPU加速,在GPU上运行Saturn模拟器。 虽然仍然无法获得更高的分辨率,但你的CPU会被完全释放。
---------------------------------------------------------------
       Yaba Sanshiro重新开始编写新的Vulkan图形仿真核心
       一直以来,Yaba Sanshiro的OpenGL受API的限制,硬件渲染不能再现土星VDP1的处理行为,产生出大量错误和其它各种各样问题导致OpenGL硬件渲染性能非常低,而CPU使用率又出奇高,Yaba现在在windows上表现很烂,开发者一度放弃了Windows版本的开发,虽然后面转到了Android、IOS平台继续开发(方便收费),但原有的错误特性导致问题依旧并且更多,如今Yaba的开发者准备重新编写新的vulkan图形仿真核心以便准确模拟VDP1、VDP2,除此以外,还需全面改进windows版本在音频/图形驱动程序下的执行效能。
---------------------------------------------------------------
       测试不同SS模拟器的声音表现

       SSF Test Version (18.01.03) (Sega Saturn Emulator for WIN)
       SSFに関しては以下の修正が出来ればいいなぁ おそらくバグってるSCSP-DSP処理 バーニングレンジャーなどフェードアウト後にゴミが残る現象 VDP2のビットマップの表示不具合 BIOSのエミュレート
テストバージョンを更新しました … 内蔵音源で音程が狂うバグを修正してみました 怪しいソフトは一通り確認したつもりですが、まだ音程の狂っているソフトがあるかもしれません

       之前的SSF TestVer自2018/01/03到更高版本的SSF PreviewVer R9有一个严重错误,SCSP-DSP处理存在bug,导致程序不定时发生崩溃。

       土星内置声源DSP(数字信号处理)在混响效果处理上使用了24位浮点运算,但在实机DSP环形缓冲区中写入的浮点数据是什么格式,世嘉是不公开的,长久以来,开发者不清楚DSP混响效果计算的浮点数据(用于旋转滚动的坐标计算格式)。SSF只是采用单精度浮点运算,由于世嘉在土星DSP内部还使用了定点计算,SSF在DSP环形缓冲区模拟上一直没有实现带有所需要使用的SCSP寄存器功能,内置声源的DSP混响效果不起作用,无法正确播放直接访问环形缓冲区的软件声音,导致程序不定时发生崩溃。开发者过去也认为没有软件可以完成如此棘手的事情,为解决这一致命异常错误和其它问题,作者放弃了SSF TestVe重立了新的SSF PreviewVer。

       更新至SSF PreviewVer R10开始了音源处理的修复,这版先将单精度浮点运算改为和SS实机处理相同的固定点运算。之后在SSF PreviewVer R12中支持了XAudio2(音频动态库编程优化处理)。借助系统音频底层API XAudio2处理输出来实现更加清晰动态的数字立体声,因为XAudio2支持音频信号编程处理,信号是声音编程的基本单位,好比是图形中的像素。 处理信号的数字信号处理器 (DSP) 好比是游戏音频的像素着色器,经数字优化补偿后提高了力量感、临场感和清晰度,最大程度还原了SS原声源的层次与空间分布。

       接着是完整模拟实机的DSP混响处理,需要解开世嘉在土星DSP环形缓冲区中写入的浮点数据格式,实现PCM脉冲编码调制线性反馈移位寄存功能,由流密码开/关组成声源定点坐标的交替转换,这是三维空间框体下声源重心坐标的定位机理。

       开发者经过一番仔细推导,大致得出了DSP环形缓冲区中写入的浮点数据格式,将此浮点地址转换为定点地址,用于旋转滚动(代表电流采样的正半周)的坐标计算。从SSF PreviewVer R17终于实现对土星DSP功能的完整模拟,开发者认为现在的SSF声音听起来像一台真正的实机!
---------------------------------------------------------------
       最后谈下多机种模拟器Mednafen

       作为兼容多机种运行环境的软件平台,核心在设计开发框架时要满足的,往往是一个需求类别,优先考虑的是抽象出软件最合理的设计,使得程序具有良好的可读性和扩展性,通常一开始写出的逻辑就为了以后的重用,多机种模拟器包含的许多通用性开发框架就是一步步抽象/埋坑/优化而来的,而不是具体到某个实机其硬件环境指标的需求,所以一定会考虑代码的复用性、组件的复用性、同一个功能对不同场景的复用性。有了复用的能力,才能够用更少的开发去满足更多场景的同类需求问题。考虑到实现代码框架环境的通用性,复用性代码的堆砌比较多,为实现某个主机运行所需的兼容环境,比照实机硬件函数 (机制) 的取值精度一般比较低,直观表现在图像/声音效果的还原上。

       Mednafen 1.26.1 (2020/11/10) 正式版对SS作了许多修正优化,在执行效率上也更好。
       另一个多机种模拟器BizHawk(使用Mednafen内核)在内存和CPU占用率上都比Mednafen原版更高。

BizHawk 2.6


Mednafen 1.26.1 x64


SSF_PreviewVer_R18 v8
最注重准确性的Saturn模拟器,基于对SEGA Saturn实机进行严格的逆向工程研究。
运行KoF 95,CPU资源占用最低,执行效率SSF更好。

1

路过

雷人

握手

鸡蛋
1

鲜花

刚表态过的朋友 (2 人)

全部作者的其他最新日志

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|琵琶行论坛 ( 赣ICP备12000882号 )

GMT+8, 2021-7-27 18:44 , Processed in 0.017252 second(s), 6 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部