Proof-of-concept NES emulator for the ESP32
esp32-nesemu
已发布
项目简介
ESP32的概念验证NES模拟器。
ESP32-NESEMU 是一个将经典任天堂娱乐系统(NES)模拟器移植到 ESP32 微控制器上的开源项目。该项目基于 Nofrendo 模拟器核心进行了快速适配,旨在探索在资源受限的嵌入式平台上运行 8 位游戏模拟的可能性。
标签
项目特点
在 ESP32 单片机上完整实现 NES 模拟器核心
支持通过 I2S 接口输出音频
支持 SPI 或并行接口驱动 LCD 屏幕
支持蓝牙手柄和 USB 手柄输入
支持游戏存档和读档功能
开源代码,方便学习和二次开发
技术规格
| 主控芯片 | ESP32(双核 Xtensa LX6) |
|---|---|
| 运行频率 | 240 MHz |
| 内存 | 520 KB SRAM + 4 MB PSRAM(推荐) |
| 显示接口 | SPI / 并行 8-bit |
| 音频输出 | I2S(通过 MAX98357 或类似 DAC) |
| 输入方式 | 蓝牙手柄 / USB HID 手柄 / GPIO 按键 |
| 支持游戏格式 | .nes 文件(从 SD 卡或 Flash 加载) |
| 帧率 | 约 30-60 FPS(取决于游戏和配置) |
| 存储介质 | SD 卡(SPI 模式) |
项目资源
搜索资源
物料清单 (BOM)
| 物料名称 | 数量 | 参考价格 | 备注 |
|---|---|---|---|
| ESP32 开发板(如 ESP32-DevKitC) | 1 | — | 推荐带 PSRAM 版本 |
| 320x240 TFT LCD 屏幕(ILI9341 或类似) | 1 | — | SPI 或 8-bit 并行接口 |
| MAX98357 I2S 音频模块 | 1 | — | 或类似 I2S DAC |
| MicroSD 卡模块 | 1 | — | SPI 接口 |
| 蓝牙手柄(如 PS3/PS4 手柄) | 1 | — | 或 USB 手柄 + USB 转串口模块 |
| 5V 电源适配器或锂电池 | 1 | — | 根据开发板供电需求 |
| 杜邦线 / 面包板 | 若干 | — | 用于连接各模块 |
所需工具
| 工具 | 用途 | 是否必需 |
|---|---|---|
| ESP-IDF | 编译和烧录固件 | ✅ 是 |
| Python 3 | 运行构建脚本和工具链 | ✅ 是 |
| Git | 克隆仓库和版本管理 | ✅ 是 |
| 串口调试工具(如 PuTTY) | 查看调试输出 | ▢ 推荐 |
| 逻辑分析仪 | 调试时序问题 | ▢ 推荐 |
| 烙铁和焊锡 | 焊接模块和排针 | ▢ 推荐 |
能力画像
**记忆与知识检索**:3/5 — 需要了解 NES 硬件架构和 ESP32 外设接口,但文档和代码注释较完整
**动手与操作**:4/5 — 需要焊接排针、连接屏幕和音频模块,硬件搭建有一定工作量
**编程与算法**:4/5 — 涉及模拟器核心、I2S 音频驱动、显示驱动等,需要 C 语言和 ESP-IDF 编程经验
**设计与建模**:2/5 — 主要使用现成模块,不需要自行设计电路或 PCB
**实验与调试**:4/5 — 需要调试显示时序、音频同步、手柄输入等问题,逻辑分析仪很有帮助
**协作与分享**:2/5 — 个人项目为主,但可以提交 PR 或 issue 参与改进
**学习与研究**:5/5 — 非常适合学习嵌入式系统、模拟器原理、音频/视频驱动等知识
**系统集成**:3/5 — 需要将多个外设模块整合到一个系统中,协调 I2C、SPI、I2S 等总线
所需技能
C 语言编程基础
ESP-IDF 开发环境搭建和使用
嵌入式系统调试(串口输出、逻辑分析仪)
基本电路知识(面包板连接、焊接)
了解 I2S、SPI、I2C 等通信协议
了解 NES 硬件架构(6502 CPU、PPU、APU)为加分项
适用场景
嵌入式学习项目:通过实际项目学习 ESP32 和外设驱动
怀旧游戏:在自制硬件上玩经典 NES 游戏
模拟器开发入门:研究如何在资源受限的 MCU 上实现模拟器
创客作品:制作一个便携式 NES 游戏机
教学演示:展示嵌入式系统如何实现音视频输出和交互