5 个不稳定版本
| 0.16.0 | 2023年3月31日 |
|---|---|
| 0.15.0 | 2021年10月17日 |
| 0.1.2 | 2021年9月1日 |
| 0.1.1 | 2021年5月24日 |
| 0.1.0 | 2021年5月16日 |
#280 in 仿真器
用于 vtx-bin
47KB
1K SLoC
RustZX

用 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标志在SCF和CCF中的神秘行为)- 块指令标志 怪异 (
LDxR/CPxR/INxR/OTxR)
安装
- 请确保您已安装C编译器和CMake,以便构建捆绑的
sdl2 - (Linux特定) 安装所需的开发包:
libasound2-dev - 使用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- 删除<箭头>- 128K箭头键Esc- 解锁鼠标(如果使用--mouse)
在joy键盘层模式(F9)
<箭头>- Kempston joy 箭头Alt- Kempston 开火WASD- Siclair Joy 1 箭头Caps Lock- Sinclair Joy 1 开火IJKL- Siclair Joy 2 箭头Enter- Sinclair Joy 2 开火
屏幕截图

参考资料
使用了许多资源来找出如何构建这个模拟器。衷心感谢以下资源,它们帮助了解了ZX Spectrum的许多细节。
- 当然 z80.info
- 来自ClrHome的指令表
- Ramsoft的"Floating bus explained!"
- 16K / 48K ZX Spectrum 参考
- 128K ZX Spectrum 参考
- Z80硬件组织
- disassembler.io在线反汇编器
- Cool z80汇编器 zasm
- 由Phill的诊断ROM
- zx-modules.de - 优秀的资源,值得一试!
- speccy.info
- Harlequin
- 还有许多其他优秀的材料,帮助我制作了rustzx!
- FUSE 模拟器源码,用于查找正确的时序
- YAZE 测试套件
- z80test 测试套件
- ROM 例程
ROM
模拟器包含由 Sinclair Research Ltd(现在由 Amstrad plc 拥有)创建的 ROM,Amstrad 已经 授权 在与模拟器一起分发它们的 ROM。在 RustZX 中,这些 ROM 包含在核心模拟器库的源码中 mod rustzx_core::zx::roms。可以通过禁用功能 embedded-roms 来从核心库中排除嵌入式 ROM。
lib.rs:
VTX 音频格式解析库
请参阅 vtx-bin 仓库的源码以获取使用示例
依赖项
~2.1–3MB
~57K SLoC