1 个不稳定版本
0.1.0-alpha | 2023 年 9 月 24 日 |
---|
123 在 #emulation
59KB
1K SLoC
6502 模拟器
请注意,这只是一个为了学习 Rust 和 6502 工作原理的项目。您可以按照原样使用此软件。请随时提交问题或贡献,但不要期望太多。
路线图
- 想出一个更好的 Crate 名称
后端
核心
- 实现所有寻址模式
- 测试所有寻址模式
- 实现所有指令
- SBC
- 处理分支指令中的溢出/下溢
- 测试所有指令
- 中断
- BRK
- IRQ
- NMI
- 测试所有操作码
- 计算周期
IO
- 读取纯文本文件
- 读取 ROM 文件
- 自定义,最小化格式
- iNES
- NES2.0
NES
- PPU
- APU
- 等。
前端
- TUI
- 寄存器
- 标志
- 内存
- 查看内存
- 滚动内存
- 编辑内存
- 查看堆栈
- 移植到
ratatui
- 显示
- 菜单
- 主题化
- API
特定系统仿真
- 0xFFFA-0xFFFB: NMI 中断向量
- 0xFFFC-0xFFFD: 重置向量
- 0xFFFE-0xFFFF: IRQ 中断向量
任天堂娱乐系统 / 家用机
更多信息请参阅 NESdev Wiki
CPU 内存映射
- 0x0000-0x07FF: 2KB 内部 RAM (如 Bus.rs 中使用)
- 0x0800-0x1FFF: 内部 RAM 的镜像
- 0x2000-0x2007: PPU 寄存器
- 0x2008-0x3FFF: PPU 寄存器的镜像
- 0x4000-0x4017: APU 和 I/O 寄存器
- 0x4016 和 0x4017 分别读取控制器 1 和 2 (按位)
- 0x4018-0x401F: 通常禁用 (APU 和 I/O 功能)
- 0x4020-0xFFFF: 卡带空间 (PRG ROM/RAM 和映射寄存器,包括重置和 IRQ 向量)
CPU-PPU 寄存器
从 0x2000 到 0x2007 的 8 个寄存器,超过该范围进行镜像。
- 0x2000: PPUCTRL
- 0x2001: PPUMASK
- 0x2002: PPUSTATUS
- 0x2003: OAMADDR
- 0x2004: OAMDATA
- 0x2005: PPUSCROLL
- 0x2006: PPUADDR
- 0x2007: PPUDATA
- 0x4014: OAMDMA
PPU 内存映射
- 0x0000-0x1FFF: 图案内存 ("CHR ROM")
- 0x2000-0x3EFF: 名称表内存 ("VRAM")
- 0x3F00-0x3FFF: 颜色表内存
依赖项
~10–20MB
~250K SLoC