#模拟器 #任天堂 #超级 #超级任天堂 #spc

snes-apu

超级任天堂音频单元模拟器

13 个版本

使用旧的 Rust 2015

0.1.12 2015年11月11日
0.1.11 2015年10月30日

#snes 中排名第 7

BSD-2-Clause

160KB
2.5K SLoC

snes-apu 构建状态 Crates.io Crates.io

超级任天堂音频单元模拟器。

描述

这是一个针对超级任天堂音频部分的非常精确的模拟器。

包括一个可以播放SPC文件的示例

cargorun --release --examplespc_player --test/ferris-nu.spc test/smashit.spc

注意:由于当前所依赖的 emu项目 存在的限制,所包含的spc_player示例只能在OS X上构建。其他平台将尽快支持。

音频单元由几个主要部分组成

  • 一个CPU(SPC700核心),100%周期精确
  • 一个DSP,精确到最近的音频样本
  • 64KB RAM
  • 3个计时器
  • 还有一些额外的粘合剂来将它们全部连接起来 :)

最初用C++编写,这个模拟器作为将我的所有模拟器基础设施移植到Rust的试点,迄今为止已经相当成功。

不足之处

虽然模拟本身非常精确(没有已知的错误,除了未完全实现的一些功能,如DSP寄存器读取和启动状态),并且绝大多数代码可以被认为是符合Rust习惯的代码(据我所知),但仍有一些小问题需要解决。

具体来说,在几个地方使用了不安全的代码进行内部可变性而没有运行时检查。目前也没有使用适当的包装数字类型,因此模拟器只能在发布配置下正确运行。这两个问题将很快得到解决。

更多问题可以在GitHub上的问题跟踪器中找到。

附加信息

test 目录中包含了一些测试SPC文件

  • ferris-nu.spc - 由elix演奏的"nu"的原声带
  • smashit.spc - 由elix演奏的"Smash It"的原声带

使用此库的其他项目

  • snes-apu-dbg - 用于此库开发的基于 Qt 的图形调试器

归属

大部分核心 SMP 代码是从 byuu 的 higan 源代码中烘焙出来的:[点击访问](http://byuu.org/emulation/higan/)

同样,一些 DSP 代码(尤其是包络)是从 blargg 的 snes_spc 代码中深炸出来的:[点击访问](http://blargg.8bitalley.com/libs/audio.html#snes_spc)

没有他们的出色工作,这个项目就不会存在!

许可证

此代码根据 BSD2 许可证授权(见 LICENSE)。

依赖项