本指南帮助你快速构建和运行 NES 模拟器。
brew install verilator sdl2 python3
# Ubuntu/Debian
sudo apt install verilator g++ make libsdl2-dev python3
# Fedora
sudo dnf install verilator gcc-c++ make SDL2-devel python3
git clone <repository-url>
cd my6502
cd src/test/rtl/unit
make all
预期输出:
Testing DMA...
Testing APU...
Testing PPU...
Testing CPU...
[TEST] PASS: INC/DEC - mem[$12] = $01
[TEST] PASS: ROL/ROR - mem[$13] = $80
[TEST] PASS: AND - mem[$14] = $0F
[TEST] PASS: ORA - mem[$15] = $FF
[TEST] PASS: EOR - mem[$16] = $55
[TEST] PASS: LSR/ASL - mem[$17] = $AA
Testing NMI...
[TEST] PASS: NMI triggered 6820 times
Testing PPU rendering...
[TEST] PASS: PPU rendered 61440 pixels
cd src/test/rtl
make gui_audio
./obj_dir/Vnes_gui_audio
功能:
控制:
# 编辑 CPU 代码
vim src/main/rtl/cpu_6502.sv
# 编辑 PPU 代码
vim src/main/rtl/nes_ppu.sv
# 编辑 APU 代码
vim src/main/rtl/nes_apu.sv
cd src/test/rtl/unit
# 测试 CPU
make test_cpu
# 测试 PPU
make test_ppu
# 测试 APU
make test_apu
# 测试 DMA
make test_dma
# 测试 NMI
make test_nmi
# 测试 PPU 渲染
make test_ppu_render
cd src/test/rtl/unit
make clean
将 NES ROM 文件 (.nes) 放入 roms/ 目录:
mkdir -p roms
cp your_game.nes roms/
编辑 src/test/rtl/nes_gui_audio_tb.cpp:
// 修改 ROM 路径
std::string rom_path = "../../roms/your_game.nes";
cd src/test/rtl
make gui_audio
./obj_dir/Vnes_gui_audio
捕获游戏画面到 PPM 文件:
cd src/test/rtl
make capture
timeout 60s ./obj_dir/Vnes_capture
输出: dk_output/frame_*.ppm
cd dk_output
../ppm2png.sh
cd src/test/tools
python3 check_cpu_instructions.py
输出:
6502 Instruction Coverage Analysis
===================================
Total Instructions: 151
Implemented: 151
Missing: 0
Coverage: 100.0%
单元测试会生成 VCD 波形文件:
cd src/test/rtl/unit/waveforms
# 使用 GTKWave 查看
gtkwave test_cpu.vcd
GUI 模拟器窗口标题显示实时 FPS。
解决: 安装 Verilator
brew install verilator # macOS
解决: 安装 SDL2 开发库
brew install sdl2 # macOS
sudo apt install libsdl2-dev # Linux
解决:
make cleanmake all可能原因:
调试步骤:
可能原因:
解决:
遇到问题?
祝你使用愉快! 🎮