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 在 仿真器
每月下载量 546 次
在 2 crates 中使用
240KB
5.5K 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
进行配置
- 仿真 obscure 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
- 删除<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的很多细节。
- 当然 z80.info
- 来自ClrHome的指令表
- "Floating bus explained!" by Ramsoft
- 16K / 48K ZX Spectrum 参考
- 128K ZX Spectrum 参考
- Z80硬件组织
- disassembler.io 在线反汇编器
- Cool z80汇编 zasm
- 诊断ROM,由Phill提供
- 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。
依赖项
~0.9–1.6MB
~34K SLoC