|
| 1 | +# ESP32-NESEMU, a Nintendo Entertainment System emulator for the ESP32 (IDF v5) |
| 2 | +==================================================================== |
| 3 | + |
| 4 | +This is a quick and dirty port of Nofrendo, a Nintendo Entertainment System emulator. It lacks sound, but can emulate a NES at close to full speed, albeit with some framedrop due to the way the display is driven. |
| 5 | + |
| 6 | +The portation of NES emulator is based on [ESP-BSP](https://github.com/espressif/esp-bsp) code and it allows to change the board quickly. |
| 7 | + |
| 8 | +| Selection of the game | Super Mario | Donkey Kong | qBert | |
| 9 | +| :----------: | :-----------: | :----------: | :----------: | |
| 10 | +| <img src="doc/images/gameselection.jpg"> | <img src="doc/images/supermario.jpg"> | <img src="doc/images/donkeykong.jpg"> | <img src="doc/images/qbert.jpg"> | |
| 11 | + |
| 12 | +## Warning |
| 13 | +------- |
| 14 | + |
| 15 | +This is a proof-of-concept (only for demo) and not an official application note. As such, this code is entirely unsupported by Espressif. |
| 16 | + |
| 17 | +## USB HID Controller |
| 18 | +--------- |
| 19 | + |
| 20 | +The games are controlled by USB HID SNES GamePad. |
| 21 | + |
| 22 | +<img src="doc/images/controller.jpg"> |
| 23 | + |
| 24 | +## Build and flash |
| 25 | +--------- |
| 26 | + |
| 27 | +``` |
| 28 | +idf.py -p COMx flash monitor |
| 29 | +``` |
| 30 | + |
| 31 | +## Board selection |
| 32 | +--------- |
| 33 | + |
| 34 | +For change the board, please edit the [`components/esp_nes/idf_component.yml`](components/esp_nes/idf_component.yml) file and change these lines to another BSP component: |
| 35 | + |
| 36 | +``` |
| 37 | +ws_7inch: |
| 38 | + version: "bsp/7inch_update" |
| 39 | + path: "SquareLine/boards/custom_waveshare_7inch/components/ws_7inch/" |
| 40 | + git: https://github.com/espressif/esp-bsp.git |
| 41 | +``` |
| 42 | + |
| 43 | +For example, you can use this for ESP-BOX: |
| 44 | + |
| 45 | +``` |
| 46 | +esp-box: "*" |
| 47 | +``` |
| 48 | + |
| 49 | +## ROM |
| 50 | +--- |
| 51 | +This NES emulator does not come with a ROM. This demo allows to select between three games, each game must be flashed to right flash region: |
| 52 | + |
| 53 | +1. Game: `0x00100000` |
| 54 | +2. Game: `0x00200000` |
| 55 | +3. Game: `0x00300000` |
| 56 | + |
| 57 | +You can use this command for flash the game into right flash region: |
| 58 | + |
| 59 | +``` |
| 60 | +python esptool.py --chip esp32s3 --port "COM3" --baud $((230400*4)) write_flash -fs 4MB 0x100000 .\games\supermario.nes |
| 61 | +``` |
| 62 | + |
| 63 | +## Copyright |
| 64 | +--------- |
| 65 | + |
| 66 | +Code in this repository is Copyright (C) 2016 Espressif Systems, licensed under the Apache License 2.0 as described in the file LICENSE. Code in the |
| 67 | +components/nofrendo is Copyright (c) 1998-2000 Matthew Conte (matt@conte.com) and licensed under the GPLv2. |
| 68 | + |
0 commit comments