#模拟器 #声音 #ay #no-std

no-std aym

AY/YM 音频芯片模拟库

4 个版本 (2 个重大更改)

0.16.0 2023年3月31日
0.15.0 2021年10月17日
0.1.1 2021年5月24日
0.1.0 2021年5月16日

#251模拟器

Download history 16/week @ 2024-03-11 6/week @ 2024-03-18 13/week @ 2024-03-25 23/week @ 2024-04-01 11/week @ 2024-04-08 15/week @ 2024-04-15 22/week @ 2024-04-22 7/week @ 2024-04-29 4/week @ 2024-05-06 7/week @ 2024-05-13 14/week @ 2024-05-20 13/week @ 2024-05-27 19/week @ 2024-06-03 17/week @ 2024-06-10 18/week @ 2024-06-24

每月 55 次下载
3 包中(2 个直接)使用

MIT 许可

26KB
582

RustZX

RustZX CI Crates.io License Discord

logo

Rust 编写的 ZX Spectrum 模拟器

  • 观看这个演示视频 (v0.9.x)
  • 阅读 CHANGELOG.md 了解最新版本更改信息

特性

  • 纯 Rust 编写
  • 跨平台
  • 全功能 ZX Spectrum 48K 和 128K 模拟
  • 完美模拟 Z80 内核
  • 高度精确的 AY 芯片模拟
  • 蜂鸣器声音模拟
  • 支持的格式
    • tap - 磁带
    • sna - 快照,支持 48K 和 128K 版本
    • scr - 屏幕截图
  • 使用标准加载器快速加载 tap 文件
  • 精确计时
  • 全功能边框模拟
  • 操纵杆模拟:Kempston, Sinclair
  • Kempston 鼠标模拟
  • 扩展 128K 键盘模拟(箭头,退格,大小写锁定)
  • 快速保存/加载
  • 支持压缩资源(目前仅支持 .gz
  • 独立的 no_std 内核库,可用于将模拟器移植到任何地方。
    • 仍然需要全局分配器,但所有动态分配都已被最小化
    • 所有资源密集型特性均可通过 cargo features 配置
  • 模拟 Z80 的神秘特性
    • WZ/memptr 寄存器(F3/F5 标志在 BIT n, (HL) 中表现神秘行为)
    • Q 寄存器(F3/F5 标志在 SCFCCF 中表现神秘行为)
    • 块指令标志 怪异之处LDxR/CPxR/INxR/OTxR

安装

  1. 确保您已安装C编译器和CMake以构建捆绑的 sdl2
  2. (Linux特定) 安装所需的开发包:libasound2-dev
  3. 使用cargo安装它
cargo install rustzx

如何使用

rustzx --help # Show help
rustzx test.tap # Autodetect file type and run in 48K mode
rustzx --ay test.tap # Run in 48K mode with AY sound chip
rustzx -m128 --tape test128.tap # Run in 128K mode with tape
rustzx --rom tester.rom -s3 # Run with custom rom and 3x screen scaling
rustzx --nofastload test.tap # Run without fast tape loading
rustzx --mouse test.tap # Run with Kempston mouse support

要在48K模式下加载磁带,请按 j 然后按 Ctrl+p 两次,就像在真实的Spectrum上一样。您应该在模拟器的屏幕上看到 LOAD "",然后按 Enter(在128K模式下只需按回车键)。在 --nofastload 模式下,按 Insert 播放磁带,按 Delete 停止

如果您有断断续续的音频,请尝试使用更大的值 --sound-latency 选项。

默认按键绑定

  • F1 - 快速保存
  • F2 - 快速加载
  • F3 - 设置正常模拟速度
  • F4 - 设置2倍模拟速度
  • F5 - 可能的最大模拟速度
  • F6 - 启用帧跟踪信息
  • F9 - 启用kempston/sinclair joy键盘层
  • Insert - 开始磁带
  • Delete- 停止磁带
  • End - 中断命令
  • Caps Lock - 大写锁定命令
  • Backspace - 删除
  • <Arrows> - 128K箭头键
  • Esc - 解锁鼠标(如果使用 --mouse

在joy键盘层模式(F9)下

  • <Arrows> - Kempston joy 箭头
  • Alt - Kempston 射击
  • WASD- Sinclair Joy 1 箭头
  • Caps Lock - Sinclair Joy 1 射击
  • IJKL- Sinclair Joy 2 箭头
  • Enter - Sinclair Joy 2 射击

屏幕截图

参考资料

为了找到如何构建这个模拟器,使用了许多资源。向以下帮助了解ZX Spectrum许多细节的资源表示衷心的感谢:

ROM

模拟器包含 ROM,由 Sinclair Research Ltd(现由 Amstrad plc 拥有)创建。Amstrad 已经授权与模拟器一起分发其 ROM。在 RustZX 中,这些 ROM 包含在核心模拟器库的源代码中 mod rustzx_core::zx::roms。可以通过禁用功能 embedded-roms 从核心库中排除嵌入的 ROM。

依赖项

~560KB
~11K SLoC