esp32p4 nesemu 基于 MIPI-DSI 的 ESP32-P4 NES 模拟器

tangstone
Posts: 2
Joined: Thu Aug 06, 2026 6:28 pm

esp32p4 nesemu 基于 MIPI-DSI 的 ESP32-P4 NES 模拟器

Postby tangstone » Thu Aug 06, 2026 6:35 pm

https://github.com/tangstoney/esp32p4-n ... ADME_CN.md

https://youtu.be/vCaPCH94INk?si=UREuSRQMkMkgFjyC

ESP32-P4 Function EV Board 上的 NES 模拟器 POC,屏幕是 7 寸 1024 x 600 MIPI-DSI。 模拟器内核用的是 nofrendo,内核以下的显示、输入、音频 (即 OSD 胶水层)全部为本项目基于 ESP-IDF v6.0 和 esp_lvgl_adapter 组件重写。

与经典的 ESP32 nofrendo 例程相比,这个移植有三个不同的地方:

画面不经过 LVGL 渲染。 LVGL adapter 被切到 dummy-draw 模式,模拟器把自己的 RGB565 帧直接刷进 DSI 帧缓冲。LVGL 本身仍然是初始化好的状态,随时可以把屏幕收回去。
手柄画在屏幕上。 4:3 画面两侧的黑边正好用来画虚拟手柄——不需要额外硬件、不需要接线, 并且支持多点触控(可以按住方向键的同时按 A/B)。
音频时钟就是模拟器的节拍器。 I²S 阻塞写是整个系统里唯一的限速环节:16 kHz / 60 fps = 每帧 266 个采样,I²S DMA 队列写满时 nes 任务自然挂起。循环里没有 vTaskDelay、没有定时器,声音和画面也 不可能跑偏。
由于 LVGL v9 + esp_lvgl_adapter 这套栈被完整保留,这个工程同时也是一个 「如何在不拆掉 LVGL 的前提下把屏幕交给 CPU 直刷渲染器」 的可运行范例。

当前状态: POC。阶段 0–3(构建、显示、触摸、音频)已全部在实机验证通过, 画面、按键、声音都能用。阶段 4 未开始,详见 项目进度
p4-ev-nes-demo.jpg
p4-ev-nes-demo.jpg (3.68 MiB) Viewed 3 times
p4-ev-board.jpg
p4-ev-board.jpg (914.22 KiB) Viewed 3 times
主要目的就是,翻新乐鑫跑nes的老demo,填补网上没有适配P4的空白

都2026年了,希望大家在触屏上玩得开心

Who is online

Users browsing this forum: No registered users and 0 guests