Port del emulador NES Master de PC de Jens Nyberg a la placa TTGO VGA32 v1.x (1.0, 1.1, 1.2, 1.4) con ESP32.
- Portado de x86 PC a ESP32
- No se usa PSRAM, funcionando en ESP32 de 520 KB de RAM (TTGO VGA32 v1.x)
- Uso de un sólo core
- OSD de bajos recursos
- Creado proyecto compatible con Arduino IDE y Platform IO
- Proyecto compatible con Web Editor y ArduinoDroid (6.3.1) con tool makeandroid.bat
- Emulación de ricoh2A03 (libreria fabgl) versión reducida de dcrespo3d(David Crespo Tascón)
- Ajuste de pantalla X
- Menú de velocidad de CPU de emulación (AUTO), sonido, teclado
- Soporte para modo 8 y 64 colores (versión reducida de Ricardo Massaro).
- VGA 320x240
- Se recomienda sólo usar cartuchos simples sin conmutación de bancos
- Se usa un DIRTY Sound de 3 canales que no es fiel a la emulación real
- Cursores arriba, abajo, izquierda, derecha
- Tecla X (botón A), tecla Z (botón B)
- Tecla C (botón SELECT), tecla V (botón START)
Se requiere:
- TTGO VGA32 v1.x (1.0, 1.1, 1.2, 1.4)
- Visual Studio 1.48.1 PLATFORMIO 2.2.1 Espressif32 v3.3.2
- Arduino IDE 1.8.11 Espressif System 1.0.6
- ArduinoDroid (6.3.1)
- Librería reducida Arduino fabgl 0.9.0 (incluida en proyecto PLATFORMIO)
- Librería reducida Arduino bitluni 0.3.3 (incluida en proyecto)
Al finalizar, el propio script, termina borrando el directorio dataFlash.
El script utiliza el fart.exe (find and replace text).
Una vez, se haya ejecutado con éxito, se puede usar con el ArduinoDroid.
Ya está preparado el proyecto, de forma que no se necesita ninguna librería de bitluni ni fabgl. Debemos desactivar la opción de PSRAM, y en caso de superar 1 MB de binario, seleccionar 4 MB de partición a la hora de subir. Aunque el código no use PSRAM, si la opción está activa y nuestro ESP32 no dispone de ella, se generará una excepción y reinicio del mismo en modo bucle.
- Seleccionar ROM permite elegir ROM de juego.
- Offset X de la pantalla
- Cambiar los milisegundos de polling para video, teclado, ratón y sonido
- Sonido Volumen (100%, 75,%, 50%, 25%, 5%)
- Sonido activo o en silencio
- Espera de CPU en modo AUTO (ajuste 20 ms por frame real) o la espera en ms que queramos
http://tomeko.net/online_tools/file_to_hex.php?lang=en
- use_lib_vga8colors: Obliga a usar RGB modo de 8 colores (3 pines). Saca 8 colores, frente a los 64 del modo normal (6 pines RRGGBB).
- use_lib_sound_ricoh2A03: Se utiliza un mezclador de 3 canales en modo dirty, emulando el ricoh2A03. Consume un poco de RAM. Se requiere la librería fabgl 0.9.0 reducida, ya incluida en el proyecto
- use_lib_log_serial: Se envian logs por puerto serie usb
- gb_ms_keyboard: Se debe especificar el número de milisegundos de polling para el teclado.
- gb_ms_sound: Se debe especificar el número de milisegundos de polling para el sonido.
- gb_delay_emulate_ms: Milisegundos de espera por cada frame completado.
- use_lib_fix_double_precision: No usar FPU para el cálculo del PLL.
- use_lib_debug_i2s: Información detallada de la inicialización del modo de video.
- use_lib_measure_time: Muestra estadísticas del consumo de CPU y fps.
- use_lib_vga320x240x60hz_bitluni: Usa el modo de video 320x240 de bitluni.
- use_lib_vga320x240x60hz_fabgl: Usa el modo de video 320x240 con los parámetros de fabgl.
- use_lib_vga320x240x60hz_bitluni_apll_fix: Usa el modo de video 320x240 de bitluni con la corección del fallo del PLL.
Tool rom2h
input/ roms/ AlfonzoMeleeHB.nes ChaseHB.nes output/ dataFlash/ rom/Posteriormente debemos copiar el directorio dataFlash en el proyecto TinyNesMasterttgovga32\nes sobreescribiendo la carpeta dataFlash previa. Se recomienda limpiar el proyecto y volver a compilar.
Esta herramienta es muy simple, y no controla los errores, por lo que se recomienda dejarle los archivos con nombres muy simples y lo más sencillo posible.
El proyecto en PLATFORM.IO está preparado para 1 MB de Flash. Si necesitamos los 4MB de flash, tendremos que modificar la entrada del archivo platformio.ini
board_build.partitions = huge_app.csvEn el Arduino IDE, debemos elegir la opción Partition Scheme (Huge APP).