#z80 #emulator

no-std rustzx-z80

Z80 CPU模拟库

3个版本 (重大更新)

0.16.0 2023年3月31日
0.15.0 2021年10月17日
0.14.0 2021年9月1日

#369 in 模拟器


用于3个crate(通过rustzx-core

MIT许可证

115KB
2.5K SLoC

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模式下只需按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。


lib.rs:

包含所有CPU特定结构、函数、常量的模块

无运行时依赖