Página principal
ESP32
Emulador
esp_8_bit
Buscando montajes curiosos con la ESP32
encontré esp_8_bit
,un emulador de:
Atari 400/800, XL, XEGS, 5200
Sega Master System, Game Gear
Nintendo Entertainment System
y los mas interesante es que genera video compuesto, tanto PAL o
NTSC.
Generar video compuesto(color) con arduino era realmente difícil,
pero con el ESP32 de doble núcleo es posible.
-----------
| |
|
25 |------------------> video out
| |
|
18 |---/\/\/\/----|---> audio out
|
| 1k
|
|
|
---
| ESP32
|
--- 10nf
|
|
|
|
|
v gnd
| |
|
| 3.3v <--+-+ IR Receiver
|
| gnd <--| )
TSOP4838 etc.
| 0
|-------------+-+ (Optional)
-----------
Al disponer el ESP32 de conexión bluetooth, he utilizado un viejo
mando de la consola wii, que funciona perfectamente.
El entorno de trabajo y compilación fué Debian 11 y el IDE de
arduino VER. 1.9.19 .
Una de las cosas que me llevo mas tiempo fue un error en la
compilación bajo Debian 11, decía que no tenia instalado la librería
serial de python.
Para instalar la librería serie para python se puede hacer de dos
métodos:
sudo pip3 install pyserial
python3 -m pip install pyserial
y la respuesta era : Requirement already satisfied: pyserial in
/usr/lib/python3/dist-packages (3.5b0)
En teoría ya las tenía instalada.
Después de muchas pruebas descubrí que en Debian 11 el enlace
directo de python apunta al python2, y debía apuntar a
python3.
Muchas de estas cosas pasan con Debian, al ser en muchos casos
demasiado conservador.
Para cambiar el enlace directo tecleamos desde root:
rm /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python
Para compilar nuestro emulador, debemos bajar las fuentes de: esp_8_bit
Descomprimimos en el directorio de compilación, en mi caso es
Arduino.
Arrancamos la IDE de arduino y configuramos el tipo de emulador y el
sistema de televisión (PAL o NTSC) en el fichero config.h.
Si todo fue bien nos saldrán el video compuesto por el pin25 y el
audio por el pin18.
Existen unos cuantos incluidos en el emulador, pero si queremos
incluir otros juegos debemos instalar una utilidad en la IDE de
arduino, ESP32FS.
El ESP32 normal tiene 4Mbytes de memoria, de los cuales para nuestro
proyecto utilizamos la mitad para el programa, y la otra mitad para
una especie de disco con el formato SPIFSS.
Las ROMS de los juegos se almacenan en el disco SPIFF, y para subir
ficheros a este disco utilizamos ESP32FS.
Para instalar la utilidad ESP32FS la descargamos y la descomprimimos
en:
~/Arduino/tools/ quedando como
~/Arduino/tools/ESP32FS/tool/esp32fs.jar .
Cuando reiniciamos la IDE de arduino nos aparecerá en el menu de Herramientas/ESP32_Sketch_Data_Upload
Si ejecutamos esta opción del menú, los ficheros (ROMS) que se
encuentran en el directorio de esp_8_bit/data se subirán a
la memoria del ESP32.
En algún caso algunas entradas de video compuesto la impedancia es
bastante baja y la salida del ESP32 no alcanza a dar la señal
correcta.
Para estos casos he creado un pequeño circuito:
Como me funcionaba en la protoboard , lo he pasado a circuito
impreso.
Como podemos observar, la calidad del video compuesto no es el
mejor, y sobre todo si utilizamos las pantalla planas, pero se puede
jugar perfectamente.
También he observado que con algunas ROMS se bloquea el emulador en
algún momento.
Gracias Peter Barrett
Saludos.
Juan Galaz
Bibliografía:
https://github.com/rossumur/esp_8_bit
https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/