#c64 #仿真器 # Commodore # 输出缓冲区 # sid # resid

无需 std resid-rs

将 reSID(一个 MOS6581 SID 仿真引擎)移植到 Rust

18 个版本 (7 个稳定版本)

1.1.1 2022 年 8 月 7 日
1.1.0 2022 年 7 月 3 日
1.0.4 2019 年 12 月 2 日
1.0.3 2019 年 7 月 5 日
0.4.2 2017 年 12 月 28 日

#36仿真器

每月 31 次下载
5 个包中使用 (通过 zinc64-emu)

GPL-3.0+

415KB
7K SLoC

resid-rs

Build Status Crates.io

概述

将 reSID(一个 MOS6581 SID 仿真引擎)移植到 Rust。

故事

此项目始于 2017 年 1 月左右的 zinc64(一个 Commodore 64 仿真器)。它发展到了可以供其他人使用的程度,因此被打包并作为一个独立的包发布。

使用方法

将 SID 寄存器读/写连接到 resid 后,剩下的工作就是生成音频样本并将它们推送到音频输出缓冲区。

while delta > 0 {
    let (samples, next_delta) = self.resid.sample(delta, &mut buffer[..], 1);
    let mut output = self.sound_buffer.lock().unwrap();
    for i in 0..samples {
        output.write(buffer[i]);
    }
    delta = next_delta;
}

组件

组件 状态
包络 完成
外部滤波器 完成
滤波器 完成
采样器 完成
样条 完成
波形 完成
Sid 完成

变更日志

  • 0.3 - 与原始 resid 兼容
  • 0.4 - 完全采样器支持
  • 0.5 - 由于重采样而大大缩小了性能差距
  • 0.6 - SIMD 优化
  • 0.7 - 持续集成和 GPLv3
  • 0.8 - 文档和 API 优化/内部清理
  • 0.9 - 迁移到 Rust 2018
  • 1.0 - 支持 no_std
  • 1.1 - 更符合 Rust 习惯的实现,移除了内部可变性并改进了对 async rust 的支持

致谢

  • 感谢 Dag Lem 提供的 reSID 实现
  • 感谢 Daniel Collin 鼓励我发布这个项目并帮助优化代码
  • Commodore 的人们为构建标志性的 8 位机器
  • Rust 开发者为提供了一个令人难以置信的开发语言

依赖项