Port x86 del emulador Vectrex de John Hawthorn al ESP32.
- Se ha portado al ESP32
- No se usa PSRAM, funcionando en ESP32 de 520 KB de RAM (TTGO VGA32 v1.x)
- Uso de un OSD de bajos recursos
- Creado proyecto compatible con Arduino IDE y Platform IO
- Modo blanco y negro 1 bpp (2 colores) VGA2Controller
- Soporte de 640x480, 800x600 y 1024x768
- Para video se usa fabgl 1.0.8
- Emulación a la mitad de velocidad, 23 fps en 640x480 y 19 fps en 1024x768
- No hay sonido por el momento
- Soporte para leer cartuchos via WIFI
- Versión precompilada (flash download 3.9.2) 1024x768
https://github.com/rpsubc8/ESP32TinyVectrex/tree/main/ESP32/precompile
Debemos de elegir el tipo ESP32: Posteriormente, seleccionaremos los archivos tal y como la captura adjunta, con los mismos valores de offset: Y le daremos a start. Si todo ha sido correcto, sólo tendremos que reiniciar el ESP32.
- TTGO VGA32 v1.x (1.0, 1.1, 1.2, 1.4)
- Visual Studio 1.66.1 PLATFORMIO 2.4.3 Espressif32 v3.5.0 (python 3.6)
- Arduino IDE 1.8.11 Espressif System 1.0.6
- Librería reducida Arduino fabgl 1.0.8 (incluida en proyecto PLATFORMIO)
Se debe instalar el PLATFORMIO 2.4.3 desde las extensiones del Visual Studio. Se requiere también Espressif32 v3.5.0 (python 3.6). Luego se seleccionará el directorio de trabajo TinyVectrex. Debemos modificar el fichero platformio.ini la opción upload_port para seleccionar el puerto COM donde tenemos nuestra placa TTGO VGA32. Luego procederemos a compilar y subir a la placa. No se usa particiones, así que debemos subir todo el binario compilado. Está todo preparado para no tener que instalar las librerias de fabgl.
- Cartuchos de 32K
- Reiniciar
http://tomeko.net/online_tools/file_to_hex.php?lang=en
Se permite usar:
- Cursores izquierda, derecha, arriba, abajo
- Teclas a, s, d, f
- use_lib_vga640x480: Modo de video 640x480.
- use_lib_vga800x600: Modo de video 800x600.
- use_lib_vga1024x768: Modo de video 1024x768.
- use_lib_gfx: Deshabilita la salida de video. No muestra nada por pantalla. Usar solo para medir tiempos de emulación.
- use_lib_wifi: Activa la WIFI para poder cargar cartuchos desde un servidor web. Al requerir mucha RAM, se aconseja usar un servidor http, en lugar de https. Se debe introducir el nombre de red y clave en el fichero gbWifiConfig.h
Por defecto, se ha dejado apuntando al servidor local, dado que el pages de github del proyecto requiere https (consumo de RAM), y dará fallo de memoria:
https://rpsubc8.github.io/ESP32TinyVectrex/www/vectrex/output
Para activar este modo, se debe descomentar la línea use_lib_wifi en el gbConfig.h
Debemos configurar en el archivo gbWIFIConfig.h los datos:
#define gb_wifi_ssd "nombreDeNuestraRedWIFIdelRooter" #define gb_wifi_pass "passwordDeNuestraRedWIFIdelRooter" //#define gb_wifi_url_base_path "http://192.168.0.36/vectrex/output" #define gb_wifi_url_base_path "https://rpsubc8.github.io/ESP32TinyVectrex/www/vectrex/output" //millisecons delay stream read #define gb_wifi_delay_available 0 #define use_lib_wifi_debug
Por ahora, la configuración está fijada en nuestro gbWIFIConfig.h que tendremos que recompilar, de manera, que sólo se conectará a nuestra red del rooter. Por tanto debemos de cambiar gb_wifi_ssd y gb_wifi_pass.
El gb_wifi_url_base_path es la ruta en donde se encuentran nuestros directorios outlist y outdat, que contienen el listado de archivos, así como los mismos, por lo que dicho path será diferente si usamos un servidor local.
El concepto es simple, se dispone de:
outlist --> Fichero con la lista de nombres (longitud 8) de bin. Límite de 128 ficheros outdat --> Los fichero bin.
Por ahora, para optimizar el consumo de RAM, se ha dejado una estructura de longitud de nombres 8:3, es decir, 8 caracteres de nombre y 3 de extensión. Dejo unas tools intermedias para preparar y hacer la conversión:
build.bat --> Lanza todos los bats, procesando input en output data83.bat --> Convierte todos los archivos input a formato 8:3 list.bat --> Genera los outlist (lista de archivos). dsk.exe --> Genera un txt que dentro contiene la lista de archivos con longitud de nombre 8. lowercart.bat --> Convierte las extensiones BIN a .bin
Un ejemplo de outlist, por ejemplo de cart.txt, que contiene:
ArmorAttBedlam Berzerk BlitzActCleanBosCleanSweCosmicChDarkToweDEADLINEdemo2019
Siempre que se añada un fichero, debemos de regenerar la lista con el list.bat o bien llamando a todo el proceso build.bat.
Dentro esta la lista de archivos con longitud máxima de 8 caracteres, que es la que se mostrará en el menu de selección de cartucho en el ESP32. Estos archivos, por ahora están pensados para un máximo de 128 entradas, que equivale a 1024 bytes (128 x 8).
Cada vez que se hace una petición a un tipo, se carga el fichero .TXT con la lista (1024 bytes, 128 nombres). Y cuando se selecciona, se hace la petición al fichero que se encuentra en el outdat.
Cuando se seleccione un archivo, se procederá a cargarlo en outdat con su ruta. Los archivos tienen que tener la extensión en minúsculas.
Si se usa un servidor externo WEB, es posible, que por políticas impida realizar peticiones seguidas, así que es recomendable no hacer peticiones muy seguidas.
Para depurar la WIFI, se debe descomentar use_lib_wifi_debug en el fichero gbWifiConfig.h
- rainy (demoscene)
- OnslaughtElect (demoscene)
- demo 2019 party (demoscene)
- deadline 2019 (demoscene)
- raiding party (demoscene)
- trex