Skip to content

Latest commit

 

History

History
166 lines (129 loc) · 3.9 KB

File metadata and controls

166 lines (129 loc) · 3.9 KB

开发日志

[v0.7.0] - 2025-11-30 - 游戏可运行 🎉

里程碑

  • M7: 游戏可运行 - 完成!

新增

  • 🎮 创建 NES 运行器 (nes_runner.cpp)
    • 加载 iNES ROM 格式
    • PRG/CHR ROM 接口
    • 帧计数和统计
    • Makefile 构建系统

测试结果

  • ✅ nestest ROM: 成功运行,生成 120 帧/10秒
  • ✅ Super Mario Bros: 成功运行,生成 180 帧/10秒
  • ✅ CPU 执行正常
  • ✅ PPU 接收数据正常
  • ✅ 游戏初始化成功(不再卡死)

性能

  • 帧率: ~12-18 FPS(受调试输出影响)
  • 目标: 60 FPS(需要优化)

[v0.6.0] - 2025-11-30

新增

  • ✨ 完成 6502 CPU 完整指令集实现 (100% 覆盖率)

    • 新增 57 个指令,从 94/151 提升到 151/151
    • 实现 BIT 绝对寻址 ($2C)
    • 实现 INC/DEC 内存操作 (8 个操作码)
    • 实现 ROL/ROR 循环移位 (8 个操作码)
    • 实现 AND/ORA/EOR 所有寻址模式 (27 个操作码)
    • 实现 LSR/ASL 内存操作 (8 个操作码)
    • 实现 CMP/CPX/CPY 变体 (6 个操作码)
    • 实现 ADC/SBC 间接寻址模式
  • 📝 创建项目文档

    • 指令依赖树 (instruction_dependency_tree.txt)
    • 项目状态文档 (PROJECT_STATUS.md)
    • 开发日志 (CHANGELOG.md)
  • 🧪 扩展单元测试

    • 添加 INC/DEC 测试
    • 添加 ROL/ROR 测试
    • 添加 AND/ORA/EOR 测试
    • 添加 LSR/ASL 测试

修复

  • 🐛 修复 CPU 指令集不完整导致的游戏初始化问题
    • 根因:缺失 37.7% 的指令导致游戏无法正确执行
    • 解决:实现完整的 151 条指令

改进

  • ⚡ 优化 CPU 时钟分频
    • 从 ÷12 改为 ÷8,提升执行速度

测试

  • ✅ 所有单元测试通过 (6/6)
    • test_cpu: PASS (包含新指令测试)
    • test_ppu: PASS
    • test_apu: PASS
    • test_dma: PASS
    • test_nmi: PASS (6820 次触发)
    • test_ppu_render: PASS (61440 像素)

[之前的工作] - 2025-11-29 及更早

新增

  • 🎮 实现 NES 系统架构

    • CPU (6502) 基础实现
    • PPU (2C02) 基础实现
    • APU 脉冲波通道
    • DMA 控制器
    • 系统集成模块
  • 🖼️ 创建帧捕获工具

    • PPM 格式导出
    • 可配置采样间隔
    • PNG 转换脚本
  • 🎨 创建 SDL2 GUI 模拟器

    • 实时视频显示 (768x720)
    • 音频播放 (44.1kHz)
    • FPS 计数器
  • 🔊 实现 APU 音频输出

    • 脉冲波通道 1/2
    • 占空比生成 (12.5%, 25%, 50%, 75%)
    • 16-bit 立体声输出
  • 🧪 创建单元测试套件

    • CPU 测试
    • PPU 测试
    • APU 测试
    • DMA 测试
    • NMI 测试
    • PPU 渲染测试
  • 🔧 创建开发工具

    • 指令覆盖率分析工具 (check_cpu_instructions.py)
    • VBlank 测试工具
    • PPUSTATUS 测试工具

修复

  • 🐛 修复 VBlank 时序问题

    • 添加 VBlank 保持计数器 (200 CPU 周期)
    • 修复 PPUSTATUS 优先级逻辑
  • 🐛 修复 CPU 状态机问题

    • 修复 MEMORY 状态转换
    • 修复 WRITEBACK 状态逻辑

分析

  • 🔍 分析游戏初始化卡死问题
    • 使用分治法隔离组件
    • 创建 VBlank 流程测试
    • 发现 CPU 指令集不完整是根因

版本说明

版本号规则

  • 主版本号:重大架构变更
  • 次版本号:功能新增
  • 修订号:Bug 修复

当前版本

v0.6.0 - 核心功能完成,准备游戏测试


里程碑

  • M1: 基础架构搭建 (2025-11-25)
  • M2: CPU 基础实现 (2025-11-26)
  • M3: PPU 基础实现 (2025-11-27)
  • M4: 系统集成 (2025-11-28)
  • M5: 单元测试完成 (2025-11-29)
  • M6: CPU 指令集完整 (2025-11-30)
  • M7: 游戏可运行 (待完成)
  • M8: PPU 完善 (待完成)
  • M9: APU 完善 (待完成)
  • M10: FPGA 移植 (待完成)

贡献者

  • tongxiaojun - 项目创建者和主要开发者

致谢

感谢以下资源和社区:

  • NESDev Wiki 提供的详细技术文档
  • 6502.org 提供的 CPU 参考资料
  • Verilator 开源仿真工具
  • SDL2 多媒体库