找回密码
 注册

QQ登录

只需一步,快速开始

SEGA Saturn模拟效能研究

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

——原创文章,转载请注明出处


       世嘉土星模拟不佳的神话


       关于土星模拟最新状况,目前有3款土星模拟器值得关注,SSF、Mednafen、Kronos。

       土星模拟器当前处于非常健康的状态,至少有两个模拟器SSF、Mednafen经兼容测 试 http://www.segasaturn.org/ 可正常模拟大多数SS游戏。SSF、Mednafen是目前最好的土星模拟器,尽管在个别游戏兼容上互有短长,使用上建议一主一备或互为主备。



       世嘉土星总线规范,首度揭秘!


       从世嘉土星开发文档来看,土星的系统总线采用的是SCSI规范,SCSI定义了一种并行协议,主要是用于数据传输和通信控制的块协议。

       世嘉土星官方开发套件包含CD模拟器(图1、2),可将CD-ROM拷贝到SCSI2硬盘,通过特制的HDL扩展卡(图6)插入扩展卡槽,使用SCSI2接口连接MPEG VCD端口I/O通道控制,利用该通道控制管理、传输CD-ROM块数据,完成CD块时序控制处理,因为是在土星主板Bus总线上加载CD-ROM(模拟光驱)来运行游戏,比物理光驱快的多,CD模拟器是4倍速设计,物理光驱是2倍速。


       能够使用CD模拟器的零售版土星(图)

       世嘉土星SCSI HDL适配卡(图)

       https://www.retroreversing.com/sega-saturn-programming-box/


       土星官方Mirage CD模拟器,是世嘉开发工具部门Cross Products于1995年发布的世嘉土星CartDev开发工具包,含Mirage CD模拟器,土星的开发平台是基于SCSI的通信,土星硬件需要连接到世嘉CartDev开发套件的主处理器上一起使用。当连接到目标机器或土星游戏机时,它能提供一个完整的基于硬件的实时CD-ROM模拟系统,并能透明地替代该机器的CD-ROM驱动器。直接从文件进行模拟,Mirage可精确模拟所有目标CD机制的所有功能和时序。Mirage极高性能的双SCSI总线,意味着Mirage能够直接从文件进行全速模拟,并即时执行CD编码。


       这里引述土星官方Mirage CD模拟器开发者的回忆:“我在1993年左右为土星开发了交叉编译器(CodeScape)的硬件接口(卡槽)和CD模拟器。25多年后再看到它,感觉很奇怪!!!我还为其他游戏机开发了大量其他ICE和模拟器硬件。当时我在英国为一家名为CrossProducts的公司工作。土星有2xSH2 CPU和68K声音处理器,不过现在没有任何信息了,基本上是一个SCSI2接口,用于下载/上传。CD模拟器是一个开关,可在个人电脑和土星之间复用SCSI2硬盘。光盘镜像放在硬盘上,土星启动它。(根据记忆,可能有误)。我让FPGA/CPLD完成了SCIS2的所有内存映射,并将一些DPRAM作为串行转换器的接口,用于使用RS422缓冲器加载CD。模拟器上有一个FPGA(Xilinx3000系列和一个XC95xxxCPLDIIR)、DPRAM和一个SH2作为主CPU,还有一个前面板LCD和按钮。我的一些才华横溢的同事开发了模拟器上的固件。我当时的老板是一位非常知名的游戏程序员。他是个杰出的人,身边有很多非常有才华的人。在我的职业生涯中,能与这样的团队共事,我感到非常自豪。在利兹的一栋小楼里,人才济济!我现在开发ASIC和高复杂度的FPGA。”


       开发者还为其提供了SCSI层框架(内置土星多处理器I/O位移运算操作符、总线数据传输与通信控制的块函数调用协议),能让土星在CartDev开发套件的主处理上可靠运行游戏ROM。


       民间ODE(光驱模拟器)


       https://tieba.baidu.com/p/8560966004

       https://tieba.baidu.com/p/8626024331

       https://tieba.baidu.com/p/6090420896

      Saroo ODE抄板了作为世嘉土星开发工具SNASM2中的SCSI HDL适配卡(图5、6)。

      Saroo v1.2使用STM32H750 Cortex-M7 MCU,主频为400MHz,并将STM32H750的MCU SRAM作为接口,用于使用CDC缓存加载CD。

      Saroo ODE在土星CD模拟上,借由Yabause公布的SMPC (土星微控制器系统管理和外设控制,内置程序ROM的日立4位MCU) 文档信息,Saroo ODE完成了SMPC配置下的I/O内存资源映射表与总线结构,同时FPGA内部也进行了重新配置。

      尽管Saroo v1.2取得了重大进展,但MCU的嵌入式SRAM,无法以与土星实机CD Block提供的相同的低延迟来满足所有请求,因此数据经常会被损坏。

      Saroo ODE很快找到了学习对象,在软件优化上,Saroo ODE采用Satiator ODE开发者詹姆斯·莱德温的方案,对于时钟要求高 (低延迟定时信号处理) 的游戏,Satiator ODE以外挂方式为镜像添加读取延时文件,并优化ROM固件库函数、程序、数据结构,略微改善在缺少SCSI层框架情况下的数据传输与通信控制。该版似乎终于不负众望,被认为“近乎完美”。


      Saroo在SMPC配置下的I/O内存资源映射表与总线结构中,由于缺少必要的SCSI层框架 (多处理器I/O位移运算操作符、总线数据传输与通信控制的块函数调用协议),在一致性处理上没法自适应地根据多处理器I/O应用进行动态调整,存在指标失灵的技术盲点,因此始终会有一些游戏运行不好,或仍无法运行。框架中视图层以给定的样式展现数据并反馈事件给逻辑层,逻辑层由土星总线仲裁器 (由一个带有cpu_dma的XOR门组成。当CPU繁忙时为“1”,on_off开关作为输入,仲裁器是通向内存模块的通道) 异或可逆运算 (XOR) 指令 (按位异或:对应的二进制位相同时出0,不同出1) 负责添加等待状态,用于控制内存和处理器I/O位移之间的数据路径流,通过IPL内部控制链路代码交互及传输数据,视图层总线数据传输与通信控制的块函数调用协议作用于软硬件之间的耦合。


      土星时序处理是由多处理器时钟完成的,它们一起运行的时钟数,在总线主循环里将按照SCU、SH2、DSP、SCSP、68000、CD区块的顺序处理,时钟变化由系统库提供,当加大 (一个数据块) 循环处理的时钟数,数据传输速率会有所上升但是兼容性会降低。对开发者来说,土星总线规范能为其找到最终的路径优化,难点是需要模拟总线仲裁功能,对多处理器时钟周期全局变量进行精确仿真,一致性处理基于数据自适应动态调整,以解决余下有问题运行不好或仍无法运行的游戏,实现100%完全兼容。


      Satiator ODE开发者詹姆斯·莱德温因为熟悉CPU工作原理,他找到并利用了CD Block ROM带有SH-1通道指令代码 (位移运算非对称密钥),该指令用于从土星MPEG Vidio CD端口(传输未压缩视频和CD数字音频)解码和加载SH-1代码时使用,通过MPEG VCD端口I/O通道控制 (位移运算,变量基于问答符交换) 管理、传输CD-ROM块数据,完成CD块时序控制处理 (为指令的执行提供定时信号)。世嘉土星官方HDL扩展卡,在零售版世嘉土星上传输CD-ROM块数据,同样利用到了MPEG Vidio CD端口I/O通道控制。由于Saroo一直占用卡带通道,导致不能做到游戏中断,切换到记忆卡功能实现记忆卡存档,只能通过固件方式虚拟外置记忆卡功能。对官方HDL扩展卡光驱模拟器的功能模仿,Saroo在硬件和软件上是拼凑出来的方案,硬件上不兼容土星MPEG Vidio CD端口I/O通道控制,Saroo ODE不能像官方HDL扩展卡精确模拟土星所有目标CD机制的所有功能和时序,Saroo ODE虽然可以直接从文件进行全速模拟,但并不能即时执行CD编码。


      位运算是一种对二进制数据进行操作的技术,它可以实现对单个位或一组位的操作,对于处理各种硬件设备和通信协议非常有用,借此方式一定程度上起到优化CD Block ROM块的定时信号处理。对于时钟要求高 (低延迟定时信号处理) 的游戏,Satiator ODE以外挂方式为镜像添加读取延时文件,并优化ROM固件库函数、程序、数据结构,略微改善在缺少SCSI层框架情况下的数据传输与通信控制。不过基本性质没有改变,一致性处理没法自适应地根据多处理器I/O应用进行动态调整,即兼容性上始终会有一些游戏运行不好,或仍无法运行。

      P.S.

      通道控制是一个独立于CPU的专管输入/输出控制的处理机,它控制设备与内存直接进行数据交换。引入通道的目的是:使数据的传输独立于CPU,使CPU从繁重的I/O工作中解脱出来。它有自己的通道指令,这些通道指令受CPU启动,并在操作结束时向CPU发中断信号。通道控制方式与DMA控制方式类似,也是一种以内存为中心,实现设备与内存直接交换数据的控制方式。与DMA控制方式相比,通道方式所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。


      I/O通道控制方式是对DMA控制方式的发展,它进一步使CPU参与到数据传输的控制减少,即把对一个数据块的读/写为单位的干预,减少为对数据块的读/写及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备的并行操作,从而更有效地提高整个系统的资源利用率。在通道控制方式中,CPU只需发出启动指令,指出要求通道执行的操作和使用的I/O设备,该指令就可以启动通道并使该通道从内存中调出相应的通道程序执行。


      问题同样适用于MiSTer FPGA Saturn内核

      https://tieba.baidu.com/p/8691569883

      根据FPGA解决方案,在土星上实现起来更加困难,FMV出现流媒体问题及同步中断、BGM、显示效果有问题或无法运行,不存在完美的兼容性,因为都需要编程,如果程序不正确,自然就不能正常工作。



       SS模拟器的声音表现


       土星在技术上拥有强大的声音系统,有采样器、合成器和效果器,由包括摩托罗拉68k CPU和一个定制的32通道雅 马 哈FM/PCM声音处理器YMF292(也称为SCSP)组成,该声音处理器带有一个集成的DSP,它有自己独 立的RAM和DAC芯片。


       SS模拟器FM合成器音色和DSP后处理音效之间的区别:

       实机 (10分) = SSF PreviewVer (10分)  > Mednafen Saturn (6分) > Yaba Sanshiro (3分) 
       先说声音系统仿真结果:
       SSF的高动态范围超过了真正的实机
       Mednafen未实现SCSP-DSP汇编动态链接库这在实机中是不存在的。
       Yabause及其衍生版Yaba Sanshiro、Kronos都没有模拟SCSP这种定制声音处理器的程序。

       与实机同级别的音源采样和效果处理作对比,Yaba Sanshiro、Mednafen仍然仅限于简单的采样和微弱的效果。Mednafen从2016年开始支持SS模拟,在功能仿真上,开发者表示由于SCSP-DSP硬件算法复杂,Mednafen未能实现SCSP-DSP汇编动态目前为止使用传统静态编译处理缺少汇编级性能优化

       土星实机PCM音频是44.1KHz/13bit,bit位深精度约为13。SSF PCM音频是44.1KHz/15bit,bit位深的采样精度略高于实机,接近CD的16bit标准(数据来源SSF_PreviewVer_R28/Document/index.html索引页)
       CD数字音频是44.1KHz/16bit的PCM标准。bit位深越大,信噪比和动态范围越好,音色也就越真实、生动。
       由于录音和播放设备都会有一定的底噪,事实上往往有2-3bit是被底噪信号耗掉的,在动态范围上有意义的位深只有13bit,这时实际的动态范围也就80dB左右,听一般轻音乐录音问题不大,但大动态的录音作品,就可能存在一定影响(动态被压缩)了。


       SSF实现土星DSP实时数字音效处理

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

       SSF TestVer自2018/01/03到更高版本的SSF PreviewVer R9有致命1级bug内置声源混响效果无法工作,使用SS回声和混响音效的游戏,音频流在访问SCSP-DSP处理时,声音CPU在游戏启动时不准确地崩溃并破坏了SCSP-DSP寄存器,导致运行中不时发生程序崩溃。

       DSP(数字信号处理),用于对声音信号进行数字化处理。DSP具有高速的运算能力,在上面应用各种快速算法,可进行很多复杂的实时数字音效处理,如信号放大、过滤(有选择地通过或阻塞一定的频带)或均衡(使一定的电学特性平整一些)、混响、回声、3D Sound(定义声音在3D空间中的定位和声响),DSP组采用数字逻辑对数字波形进行以上操作。
       
       在土星DSP编程单元中,世嘉混响效果处理上使用了24位浮点运算,但在实机DSP环形缓冲区中写入的浮点数据是什么格式,世嘉是不公开的,长久以来,开发者不清楚DSP混响效果计算的浮点数据(用于声源相位旋转滚动的横坐标时间计算格式)。SSF只是采用单精度浮点运算,由于世嘉在土星DSP内部对声源相位中心坐标的定位还使用了定点计算,SSF在DSP环形缓冲区模拟上,一直没实现所需要使用的SCSP寄存器功能,环形缓冲区不更新,因为数据没有被写入SCSP DSP使用的环形缓冲器内存,任何试图直接访问环形缓冲器的软件都会产生错误的声音。此类访问会导致一部分旧版SSF运行中随机发生崩溃。真正的实机内置声源定位效果的DSP能自动处理直接访问环形缓冲区的软件声音,这种DSP实时数字音效处理,由于涉及到复杂的数字信号处理算法,开发者过去也认为没有软件可以完成如此棘手的事情。为了纠正旧版中拖了很长时间的各种错误,进一步提升兼容性、速度和准确性,SSF TestVer被放弃修改,版本回退,重新更名为SSF PreviewVer。

       频繁更新至SSF PreviewVer R10,开发者尝试修复SCSP-DSP处理中的bug,该版将单精度浮点运算改为和SS实机处理相同的固定点运算,从SSF PreviewVer R12开始,声音改为使用波形音频播放,并且可以选择切换XAudio2 (动态库处理音频数据) 播放,XAudio2内置效果:混响、音量计量,提供灵活且强大的DSP框架,支持音频信号编程处理,信号是声音编程的基本单位,好比是图形中的像素。DSP(数字信号处理)效果好比是游戏音频的像素着色器,如原始信号缺乏低音,DSP可通过算法为其补偿一些低频。同样也适用于歌曲的人声、中音和高音,动态范围,立体感和清晰度这些,通过数字优化补偿能消除任何不完美的地方,使其相对 "更好"。

       为完整模拟实机SCSP-DSP三维空间声源定位算法,需要解开世嘉在土星DSP环形缓冲区中写入的浮点数据格式,实现PCM脉冲编码调制线性反馈移位寄存功能,由SCSP寄存器(流密匙ON/OFF)组成声源定点坐标交替变换,会在每次采样时更新,至此就将原三维空间的声源定位由线性回归问题转化为非线性分类。

       开发者经过一番努力推导,终于得出了DSP环形缓冲区中写入的浮点数据格式,将此浮点地址转换为定点地址,用于旋转滚动(代表电流采样的正半周)的坐标计算。直到SSF PreviewVer R17终于实现DSP混响算法实时主动处理,提高了音频解码性能和质量,开发者认为现在的SSF声音听起来像一台真正的实机!这一改进提高了声源处理的边缘保真度(基于严密的精确算法),相对于(实机)原始硬件。


       多机种模拟器Mednafen(My Emulator Don't Need A Frickin'Excellent Name的首字母缩写词)

       Mednafen土星是CPU密集型计算,近年在完善土星模拟上作了大量修正和优化,目前还在积极开发中,最新正式版在兼容性和运行效率上较过去的旧版更好。
       
       1、Mednafen土星在在VDP2执行VRAM访问循环状况上覆盖了SSF的一些盲点(SSF当前内存约束下的全局误差校准有偏估计)。

       土星对CPU周期的要求非常严格,改变任何关于解释器的东西都可能需要重写与时序有关的一切,因此在准确性和速度之间的权衡是一个困难的命题,对于时序紧凑和更直接访问硬件的土星系统,精度几乎总是更可取的,而现有PC硬件在软件中模拟主机硬件处理对于周期确的仿真速度已经非常快了,并且通常包含更严格的时序限制

       (关于模拟器"准确性"的三种不同状态) 模拟器处理的精准度有不同的质量等级,最高等级是“周期确”;Mednafen土星未使用回溯算法求解约束满足问题,即通过全局约束相容性检查,土星的每个硬件相对于其它运行组件都被模拟在正确的周期内,周期确是高精确模拟的一个关键方面,需占用大量CPU时钟周期用样本统计量来推断总体硬件参数,同时还要根据统计量的抽样分布特征,估计出总体参数的一个区间,而不是一个数值,并同时给出总体参数落在这一区间的可能性大小,概率的保证,周期准确的模拟器能产生相对于(实机)原始硬件100%准确模拟。

       Mednafen土星错误报告、兼容性列表:

       另一个多机种模拟器BizHawk在土星模拟上使用了Mednafen内核(阉 割部分功能版本更新晚于官网),在内存和CPU占用率上都比Mednafen原版更高。

BizHawk 2.6


Mednafen 1.26.1 x64


SSF PreviewVer使用Clang+LLVM编译,在注重准确性模拟器中的执行效率是最高的。最新版在Ryzen7 3700X上模拟大部分SS游戏,CPU使用率都在4%以下,主SH2,协SH2,68000,即使用满DSP,也不会超过6%,4代I7-4771上CPU使用率也不超过10%。




       Kronos从2018.12月推出,至2019年5月作者François在过去6个月中对OpenGL核心渲染器进行了完全重写,它允许和修复了大量图形问题。
       Kronos使用的是高性能SH2缓存解释器,尽管与YabaSanshiro中使用的Dynarec不同,但CPU频率要求仍然比使用经典的SH2解释器(如甲虫土星)的模拟器低约30%。


       2020.5月,发布Kronos 2.1.2,加入了新的OpenGL Compute Shader,这个新渲染组件为OpenGL提供了很大的灵活性,并允许实现逐行渲染四边形例程绘制。准确地再现VDP1的处理行为是这个渲染器的目的,GPU需支持OpenGL 4.3。
       此处提供了兼容性列表
       2023.12.25,发布Kronos 2.6.0,删除了软件渲染和基于YabaSanshiro的旧式OpenGL渲染器。

       OpenGL Compute Shader

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

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

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

       考虑到用现代GPU正确模拟VDP1有多难,它是否被正确模拟了?一个很好的测试是世嘉拉力赛的观赏模式:正确的VDP1模拟在道路上不会有洞,在边界上几乎看不到小点,如图1-3所示:

不像下图这样:


       让我们做一些比较,从第一张到最后一张,分别是土星实机、Mednafen/beetle、Kronos(OpenGL Compute Shader)、Kronos(旧式OpenGL渲染器,基于YabaSanshiro)的屏幕截图。在这些图片中与VDP1处理行为关的两件事值得注意:

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

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


       世嘉土星不做3D,而是做3D变形的2D精灵

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

       当主机硬件和PC硬件非常不同,并且PC硬件速度足够快,可以在软件中模拟主机硬件处理,一开始就这样做的有SSF。不过,SSF开发者也使用了DX11 GPGPU加速,在GPU上运行Saturn模拟器虽然仍然无法获得更高的分辨率,但你的CPU会被完全释放。


       Yaba Sanshiro重新开始编写新的Vulkan图形仿真核心


       Yaba Sanshiro 源自Yabause代码库,由日本devMiyax开发,原名uoYabause,其中的uo代表 "Un official"非官方,uoYabause为Yabause的非官方移植【uoYabause网站已声明】,是合并了OpenGL ES 3.0硬件加速的Android版Yabause,于2015年底推出,因为它适用于Android,所以引起了轰动。2017/09/08更名为Yaba Sanshiro并发布了Windows版,与Android版同步定期更新。如果不熟悉Sega Saturn,可能觉得新的“Yaba Sanshiro”名字听起来像是胡言乱语,其实这是开发者对Sega Saturn官方吉祥物Segata Sanshiro世嘉三四郎的致敬。

       Yaba Sanshiro 2015年作为Yabause的一个分支开始开发,Yabause是一款已停止开发的模拟器,Yabause代表"Yet Another Buggy And Uncomplete Saturn Emulator"又一个漏洞百出不完整的土星模拟器;2003年发布,2016年开发团队在其官网宣布Yabause不再继续开发和维护。作为分支版的YabaSanshiro Windows版也一度停更,都因为不恰当使用OpenGL受API限制,硬件渲染不能再现土星VDP1的处理行为,产生出大量错误和其它各种各样的问题。SH2 Dynarec在4代i7上能达到70%的CPU使用率。Yabause及其衍生版uoYabause、Yaba Sanshiro硬件渲染看似有着更快、更好的视觉改进,实际是以严重缺陷为代价提供的。Yaba Sanshiro基于Yabause架构,devMiyax断断续续做着修复,至今仍未有根本性改善(图形和其它方面模拟不完整)兼容性表现一直很烂。

       Yaba Sanshiro原名uoYabause,作为Yabause非官方移植版uoYabause上架谷歌商店后,于2017年8月遭谷歌下架原因是uoYabause该名称与Yabause太相似了,有购买用户向谷歌投诉uoYabause该移植付费版是一个欺诈项目,稳定性、兼容性差评不断,有人在推特发文,认为该模拟器在VDP1、SH2、SCU 、SCSP这些部分上可能需要重做

       从谷歌将uoYabause从Play商店下架后该项目被devMiyax改名为Yaba Sanshiro,重新上架谷歌Play商店,不久又因包含Action Replay作 弊功能涉嫌违反谷歌Play商店的设备和网络滥用政策(作 弊功能可能会导致自动过滤器出现故障),2020年10月谷歌将包含Action Replay作 弊功能的Yaba Sanshiro列入黑名单之后它的名字更名为Yaba Sanshiro 2,重新上架谷歌Play商店,作 弊功能已被删除,而为之前Yaba Sanshiro专业版付费的用户由于失去了他们的许可证,所以必须再次为此版本付费。

       2018年12月由法国François开发适用于Windows、Linux端的Kronos(试图协调Yabause、Yaba Sanshiro的分支版),此分支以准确性为导向,以现代OpenGL为目标,同时实施急需的修复,其图形仿真水平在很大程度上高于Yaba Sanshiro,它的兼容性和功能可以说是Yabause的最佳分支版。

       Yaba Sanshiro大可以像Kronos那样引入OpenGL Compute Shader来准确模拟VDP1处理。
       SSF Android同样引入了OpenGL Compute Shader,兼容OpenGL ES 3.1。
       以下是SSF Android特有选项   
       ・CS组线程Y    
       指定计算着色器组线程的数量     
       数字越大,处理速度越快,但有些设备可能无法在高线程数下工作。
       ----------------
       Compute Shader是在OpenGL 4.3(OpenGL ES 3.1)开始支持的一种专门用于并行计算的着色器。
       Android在Android 5.0(API 21)引入了OpenGL ES 3.1支持。

       2020年12月27日,Yaba Sanshiro开发者devMiyax推特发文称准备重新编写新的Vulkan图形仿真核心,以便准确模拟VDP1、VDP2。
       我重新开始使用#Vulkan实现新的图形仿真核心。到目前为止,我觉得好处是。
       *可以分离VDP2和VDP1
       *最大限度地减少和简化了仿真的实现。
       *快速

       Yaba Sanshiro选择了Vulkan来初步实现新的图形仿真核心,devMiyax在4年前告知用户Vulkan不支持四边形渲染,只能通过镶嵌来处理。这里我查了资料,Vulkan在Android下完全支持Compute Shader。

      由于土星模拟的瓶颈是多个VDP系统,硬件仿真必须分开来实现。此外,世嘉土星对CPU周期的要求非常严格,改变任何关于解释器的东西都可能需要重写与时序有关的一切。devMiyax接手Yabause开发有10年以上,考虑到硬件渲染造成的弊端矛盾,开发中在解决新bug的同时又会造成其它问题,顾此失彼陷于技术矛盾的问题处理。新版Yaba Sanshiro较旧版在兼容性、稳定性难有明显改善下,除UI界面优化调整不错外,其它方面变得更糟,若非自身程序Bug太多影响到付费用户与谷歌Play平台网络管理,招致两次除名下架在EMU圈子影响较大,开发者可能不会想办法从其它方面进行弥补。

      2022/3/15 开发者devMiyax在推特发文:“关于SH2缓存,它将在Yaba Sanshiro 2 Pro 1.8版本中提供。在1.8版本中加入了SH2缓存模拟,通过缓存命中率修正某些游戏bug,略微提升SH2准确性以此改善一些兼容性。 经测试OpenGL下缺失图层问题严重,可通过调整设置解决,但会造成屏幕图层闪烁。新加入的Vulkan核心目前只能支持个别游戏。2022/3/27发布Windows版 1.8更新,测试运行情况比安卓版要好,仍然存在很多严重bug:切换全屏会使窗口上下黑边不断延长导致窗口/全屏切换失效,整体情况落后另一分支版Kronos。

      Yaba Sanshiro对VDP1、SH2、SCU 、SCSP的仿真还不完善。开发者devMiyax在谷歌Play向用户坦言:“硬件模拟真的很难,Yaba Sanshiro并不完善,你可以在这里检查当前的兼容性。

      有别以往的是,开发者devMiyax从Yaba Sanshiro 2 Pro 1.8开始转为在软件中来实现模拟土星的硬件处理(包含Android版在内)SCSP-DSP已被模拟,可以对各种效果、ADX等进行高精确模拟。测试Yaba Sanshiro 2 Pro最新版,在露娜2中动画音乐ADX解码计数误差较大,循环卡顿严重,SCSP-DSP的模拟状况很差。

      Kronos也实现了SCSP-DSP模拟,Kronos文档比较表中开发者François估计音频模拟实现了95%(和YabaSanshiro2一样)。最新版Kronos 2.6.0 露娜2 ADX动画音乐(需要准确模拟SCSP-DSP)可正常播放,但有连续间歇性断音呲...呲声,SCSP Block在音频流处理上失真比较严重。


(待续,本稿尚在增改中)


1

路过

雷人

握手

鸡蛋
4

鲜花

刚表态过的朋友 (5 人)

发表评论 评论 (1 个评论)

回复 zjwkof02 2023-7-3 10:48
mame只有mess0.148u1可以模拟kof95

facelist doodle 涂鸦板

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

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

GMT+8, 2024-7-16 10:08 , Processed in 0.011507 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部