#emulator #tui

bin+lib emulatorr

用 Rust 编写的 6502 模拟器,带有 TUI

1 个不稳定版本

0.1.0-alpha2023 年 9 月 24 日

123#emulation

MIT 许可证

59KB
1K SLoC

6502 模拟器

请注意,这只是一个为了学习 Rust 和 6502 工作原理的项目。您可以按照原样使用此软件。请随时提交问题或贡献,但不要期望太多。

master

GitHub license

路线图

  • 想出一个更好的 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