小虾米资讯

AD1
当前位置:网站首页 / android / 正文

android:SEGA Saturn模拟效能研究

2021-01-01 20:10:45 / 我要吐槽 查看是否已被百度收录 查看是否已被谷歌收录 查看是否已被搜狗收录 查看是否已被360收录
AD2
Kronos 2.1.2进度报告(SEGA Saturn模拟器)https://www.libretro.com/index.php/kronos-2-1-2-progress-report-sega-saturn-emulator/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图形仿真核心https://twitter.com/miyaxdev/status/1343054255674982400 一直以来,Yaba Sanshiro的OpenGL受API的限制,硬件渲染不能再现土星VDP1的处理行为,产生出大量错误和其它各种各样问题导致OpenGL硬件渲染性能非常低,而CPU使用率又出奇高,Yaba现在在windows上表现很烂,开发者一度放弃了Windows版本的开发,虽然后面转到了Android版来开发(方便收费),但原有的错误特性导致问题依旧并且更多,如今Yaba的开发者准备重新编写新的vulkan图形仿真核心以便准确模拟VDP1、VDP2,除此以外,还需全面改进windows版本在音频/图形驱动程序下的执行效能。---------------------------------------------------------------测试不同SS模拟器的声音表现https://tieba.baidu.com/p/6609996944?see_lz=1 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 TestVer的开发。 从新版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多机种模拟器 作为兼容多机种运行环境的软件平台,核心在设计开发框架时要满足的,往往是一个需求类别,优先考虑的是抽象出软件最合理的设计,使得程序具有良好的可读性和扩展性,通常一开始写出的逻辑就为了以后的重用,多机种模拟器包含的许多通用性开发框架就是一步步抽象/埋坑/优化而来的,而不是具体到某个实机其硬件环境指标的需求,所以一定会考虑代码的复用性、组件的复用性、同一个功能对不同场景的复用性。有了复用的能力,才能够用更少的开发去满足更多场景的同类需求问题。考虑到实现代码框架环境的通用性,复用性代码的堆砌比较多,为实现某个主机运行所需的兼容环境,比照实机硬件函数 (机制) 的取值精度一般比较低,直观表现在图像/声音效果的还原上,另外程序时钟周期数循环延时问题较ePSXe、SSF模拟PS、SS明显许多,而处理过程反而要占用更高的CPU资源,徒增功耗。还需要进一步修正和优化,提升执行效率,降低CPU使用率。

Yaba Sanshiro重新开始编写新的Vulkan图形仿真核心.....期待更好的Yaba

加油,完善了(不要光驱)就能玩光明三部曲了

期待ss模拟器越来越好。

Powered By © 小虾米资讯 2015

(本站部分文章来源于网络或网友爆料,不代表本站观点,如有侵权请联系及时删除 )