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