SS模拟器FM合成器音色和DSP后处理音效之间的区别:
实机 (10分) = SSF PreviewVer (10分) > Mednafen Saturn (6分) > Yaba Sanshiro (3分)
我先说声音系统仿真结果:
SSF的高动态范围超过了真正的实机。
Mednafen未实现SCSP-DSP汇编动态链接库,这在实机中是不存在的。
Yabause及其衍生版Yaba Sanshiro、Kronos都不具有模拟这样的自定义声音驱动程序,因为它根本就不能工作。
与实机同级别的音源采样和效果处理作对比,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有一个严重错误,内置声源的混响(混响效果)无法工作,使用SS回声和混响音效的游戏,音频流在访问SCSP-DSP处理时存在bug,原因是声音CPU在游戏启动时不准确地崩溃并破坏了SCSP-DSP寄存器,导致一部分旧版SSF运行中不定时发生崩溃。
DSP(数字信号处理),用于对声音信号进行数字化处理。DSP具有高速的运算能力,在上面应用各种快速算法,可进行很多复杂的实时数字音效处理,如均衡,混响、回声、3D Sound定义声音在3D空间中的定位和声响。
在土星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的首字母缩写词)
作为兼容多机种运行环境的软件平台,核心在设计开发框架时要满足的,往往是一个需求类别,优先考虑的是抽象出软件最合理的设计,使得程序具有良好的可读性和扩展性,通常一开始写出的逻辑就为了以后的重用,多机种模拟器包含的许多通用性开发框架就是一步步抽象/埋坑/优化而来的,而不是具体到某个实机其硬件环境指标的需求,所以一定会考虑代码的复用性、组件的复用性、同一个功能对不同场景的复用性。有了复用的能力,才能够用更少的开发去满足更多场景的同类需求问题。考虑到实现代码框架环境的通用性,复用性代码的堆砌比较多,为实现某个主机运行所需的兼容环境,比照实机硬件函数 (机制) 的取值精度一般比较低,直观表现在图像/声音效果的还原上。
土星对CPU周期的要求非常严格,改变任何关于解释器的东西都可能需要重写与时序有关的一切。因此在准确性和速度之间的权衡是一个困难的命题。对于老硬件系统,精度几乎总是更可取的,而现有PC硬件在软件中模拟主机硬件处理对于精度的仿真速度已经非常快了,并且通常包含更严格的时序限制。Mednafen的图像、声音处理精确度虽然低于SSF,但时序容错率和数据实时性较好(SSF这方面相较实机目前调整过高)。我觉得它使用了回溯算法求解约束满足问题 (约束满足问题中弧相容算法),通过全局约束相容性检查,使模拟系统的每一个方面相对于其他一切都在正确的时间发生,在请求与响应时间序列数据状况上好于SSF。
Mednafen的世嘉土星模拟是CPU密集型计算,近年在完善土星模拟上作了大量修正和优化,目前还在积极开发中,最新正式版在兼容性和执行效率上较过去的旧版更好。
另一个多机种模拟器BizHawk在模拟土星上使用了Mednafen内核(版本更新晚于官网),在内存和CPU占用率上都比Mednafen原版更高。