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日 | 
#131 在 模拟器
24 每月下载次数
27KB
553 代码行
RustZX

用 Rust 编写的 ZX Spectrum 模拟器。
- 观看这个演示视频 (v0.9.x)
- 阅读 CHANGELOG.md 了解最新版本更改信息
特性
- 纯 Rust 编写
- 跨平台
- 完全模拟 ZX Spectrum 48K 和 128K
- 高度精确的 Z80 内核模拟
- 高度精确的 AY 芯片模拟
- 蜂鸣声模拟
- 支持的格式- tap- 磁带
- sna- 快照,支持 48K 和 128K 版本
- szx- 快照,支持 48k 和 128k 版本,以及 zlib 压缩
- 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 游戏键盘层 | 
| Insert | 开始磁带 | 
| Delete | 停止磁带 | 
| End | 中断命令 | 
| Caps Lock | 大写锁定命令 | 
| 退格键 | Delete | 
| <箭头键> | 128K箭头键 | 
| Esc | 解锁鼠标(如果使用 --mouse) | 
在游戏键盘层模式(F9)
| 快捷键 | 功能 | 
|---|---|
| <箭头键> | Kempston 游戏箭头 | 
| Alt | Kempston 火箭 | 
| WASD | Sinclair 游戏机1 箭头 | 
| Caps Lock | Sinclair 游戏机1 火箭 | 
| IJKL | Sinclair 游戏机2 箭头 | 
| Enter | Sinclair 游戏机2 火箭 | 
截图
 
 
 

参考
许多资源被用于找到如何构建此模拟器。非常感谢以下资源,它们帮助了解了很多关于ZX Spectrum的细节。
- z80.info 当然!
- 解码Z80操作码
- 操作码列表
- CPU用户手册
- CPU架构
- 中断行为
- Z80未记录的记录
- 来自 ClrHome 的指令表
- Ramsoft 的“浮动总线解释!”
- 16K / 48K ZX Spectrum 参考
- 128K ZX Spectrum 参考
- Z80硬件组织
- disassembler.io 在线反汇编器
- Cool z80汇编 zasm
- Phill 的诊断ROM
- zx-modules.de - 优秀的资源,去看看吧!
- speccy.info
- Harlequin
- FUSE 模拟器源代码,用于查找正确的时序
- YAZE测试套件
- z80test测试套件
- ROM例程
- 以及其他许多优秀资料,这些都帮助我制作了rustzx!
ROMs
模拟器包含由 Sinclair Research Ltd(现由 Amstrad plc 拥有)创建的ROM。
Amstrad 已 允许将它们的ROM与模拟器一起分发。
在RustZX中,这些ROM包含在核心模拟库的源代码中 mod rustzx_core::zx::roms。可以通过禁用功能 embedded-roms 来从核心库中排除嵌入式ROM。
依赖项
~6MB
~90K SLoC