my6502

NES 模拟器项目状态

最后更新: 2025-11-30
项目阶段: 核心功能完成,准备游戏测试


📊 总体进度

阶段 1: 硬件设计         ████████████ 100%
阶段 2: CPU 实现         ████████████ 100%
阶段 3: PPU 基础         ████████████ 100%
阶段 4: APU 基础         ████████████ 100%
阶段 5: 系统集成         ████████████ 100%
阶段 6: 单元测试         ████████████ 100%
阶段 7: 游戏测试         ░░░░░░░░░░░░   0% ← 当前位置
阶段 8: PPU 完善         ░░░░░░░░░░░░   0%
阶段 9: APU 完善         ░░░░░░░░░░░░   0%
阶段 10: 优化调试        ░░░░░░░░░░░░   0%

整体完成度: 60%


✅ 已完成功能

1. CPU (6502) - 100% 完成

指令集实现

寻址模式

中断处理

状态机

2. PPU (Picture Processing Unit) - 基础完成

核心功能

寄存器接口

渲染功能

3. APU (Audio Processing Unit) - 基础完成

音频通道

音频输出

4. DMA (Direct Memory Access) - 完成

5. 系统集成 - 完成

6. 测试工具 - 完成

单元测试

测试结果: 6/6 通过 ✅

开发工具


🔧 技术栈

硬件描述

测试框架

开发环境


📁 项目结构

my6502/
├── src/
│   ├── main/
│   │   └── rtl/
│   │       ├── cpu_6502.sv          # CPU 核心
│   │       ├── nes_ppu.sv           # PPU 核心
│   │       ├── nes_apu.sv           # APU 核心
│   │       ├── nes_dma.sv           # DMA 控制器
│   │       └── nes_system.sv        # 系统集成
│   └── test/
│       ├── rtl/
│       │   ├── unit/                # 单元测试
│       │   ├── nes_capture_tb.cpp   # 帧捕获工具
│       │   └── nes_gui_audio_tb.cpp # GUI 模拟器
│       └── tools/
│           └── check_cpu_instructions.py
├── docs/
│   ├── PROJECT_STATUS.md            # 本文档
│   └── instruction_dependency_tree.txt
└── roms/                            # 游戏 ROM 文件

🐛 已知问题

1. PPU 渲染问题 (优先级: 高)

现象: 帧捕获输出单色画面 RGB(84,84,84)

可能原因:

影响: 无法显示游戏画面

状态: 待修复

2. APU 音频不完整 (优先级: 中)

缺失功能:

影响: 音频质量不完整

状态: 基础功能可用

3. 游戏兼容性未验证 (优先级: 高)

现状:

需要验证:

状态: 待测试


📝 开发历史

2025-11-30

之前的工作


🎯 下一步计划

短期目标 (1-2 天)

  1. 游戏测试 (最高优先级)
    cd src/test/rtl
    make gui_audio
    ./obj_dir/Vnes_gui_audio
    
    • 验证游戏是否能启动
    • 检查 CPU 执行是否正常
    • 分析渲染输出
  2. PPU 渲染修复
    • 实现图块数据读取
    • 实现调色板映射
    • 验证背景渲染
  3. 调试工具增强
    • 添加 CPU 指令跟踪
    • 添加 PPU 状态监控
    • 添加内存访问日志

中期目标 (1-2 周)

  1. PPU 完善
    • 精灵渲染
    • 背景滚动
    • 精灵优先级
    • 精灵 0 碰撞检测
  2. APU 完善
    • 三角波通道
    • 噪声通道
    • DMC 通道
    • 包络/扫描/长度计数器
  3. 游戏兼容性
    • 测试多个游戏
    • 修复兼容性问题
    • 建立游戏兼容性列表

长期目标 (1 个月+)

  1. 性能优化
    • 流水线优化
    • 时序优化
    • 资源使用优化
  2. 功能扩展
    • Mapper 支持 (MMC1, MMC3 等)
    • 存档功能
    • 作弊码支持
    • 录像回放
  3. FPGA 移植
    • 综合测试
    • 时序约束
    • 硬件验证

📊 代码统计

RTL 代码

总计: ~2000 行 SystemVerilog

测试代码

总计: ~1500 行测试代码


🤝 贡献指南

开发流程

  1. 修改 RTL 代码
  2. 运行单元测试: make all
  3. 运行 GUI 测试: make gui_audio
  4. 提交代码

测试要求

代码规范


📚 参考资料

6502 CPU

NES 架构

PPU

APU


📞 联系方式

项目维护者: tongxiaojun
最后更新: 2025-11-30


项目状态: 🟡 开发中 - 核心功能完成,准备游戏测试