#仿真器 #z80 #游戏 #格式 #no-std

no-std rustzx-core

ZX Spectrum 仿真器核心库

5 个版本 (破坏性更新)

0.16.0 2023 年 3 月 31 日
0.15.0 2021 年 10 月 17 日
0.14.0 2021 年 9 月 1 日
0.13.0 2021 年 5 月 24 日
0.12.0 2021 年 5 月 16 日

#357仿真器

Download history 13/week @ 2024-03-13 1/week @ 2024-03-20 7/week @ 2024-03-27 13/week @ 2024-04-03 3/week @ 2024-04-10 9/week @ 2024-04-17 4/week @ 2024-04-24 2/week @ 2024-05-22 7/week @ 2024-05-29

每月下载量 546 次
2 crates 中使用

MIT 许可证

240KB
5.5K SLoC

RustZX

RustZX CI Crates.io License Discord

logo

用 Rust 编写的 ZX Spectrum 仿真器

功能

  • 纯 Rust 编写
  • 跨平台
  • 全功能 ZX Spectrum 48K 和 128K 仿真
  • 完美的 Z80 核心仿真
  • 高度精确的 AY 芯片仿真
  • 蜂鸣声仿真
  • 支持的格式
    • tap - 磁带
    • sna - 快照,支持 48K 和 128K 版本
    • scr - 屏幕截图
  • 使用标准加载器快速加载 tap 文件
  • 精确计时
  • 全边界仿真
  • 游戏杆仿真:Kempston,Sinclair
  • Kempston 鼠标仿真
  • 扩展 128K 键盘仿真(箭头、退格、大写锁定键)
  • 快速保存/加载
  • 支持压缩资源(目前只支持 .gz
  • 独立的 no_std 核心库,可用于将仿真器移植到几乎任何地方。
    • 仍然需要全局分配器,但所有动态分配都已被最小化
    • 所有资源密集型功能均可通过 cargo features 进行配置
  • 仿真 obscure 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模式下只需按Enter)。在--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

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

依赖项

~0.9–1.6MB
~34K SLoC