Skip to content

Latest commit

 

History

History
161 lines (135 loc) · 7.05 KB

readmeSpanish.md

File metadata and controls

161 lines (135 loc) · 7.05 KB

ESP32 Tiny Elkulator

Port del emulador x86 Elkulator Acorn Electron versión 0.5 (autor Tom Walker) a la placa TTGO VGA32 v1.x (1.0, 1.1, 1.2, 1.4) con ESP32.


He realizado varias modificaciones:.
  • Funciona en ESP32 con 520 KB de RAM (TTGO VGA32)
  • Usa un sólo core
  • OSD de bajos recursos
  • Proyecto compatible con Arduino IDE y Platform IO
  • Proyecto compatible con Web Editor y ArduinoDroid (6.3.1) con tool makeandroid.bat
  • Carga de ROMs desde Flash progmem
  • Carga de SNA (version 0.5) desde Flash progmem
  • Carga de discos ADF disk desde Flash progmem
  • Soporta 8 y 64 colores (librería reducida de Ricardo Massaro)
  • Modo de video 320x200
  • Permite escala de pantalla en 320x200. Recordar que el acorn tiene 256 lineas.
  • Versión precompilada (flash download 3.9.2) 320x200 (DAC 3 bits, 8 colores)
  • Sin emulación de sonido, por ahora.
  • Opción de eliminar el cálculo de redondeo IEEE (double) de la VGA, para evitar problemas de precisión. Encontrada esta anomalía a partir del fallo encontrado por David Crespo Tascón al no sacar video.
  • Faltan teclas por mapear:
        Faltan:
        Fila 0: Copy (bit 1) y NC (bit 2, Sin conexión, no se necesita)
        Fila 2: NC (bit 3, Sin conexión, no se necesita)
        Fila 3: ; (bit 2)    
       



Versión precompilada

En la carpeta precompile hay una versión ya compilada para ser guardada con la herramienta de descarga flash 3.9.2. Es una versión con resolución 320x200 (DAC 3 bits, 8 colores) con los juegos de demostración en FLASH.

https://github.com/rpsubc8/ESP32TinyElkulator/tree/main/esp32/precompile/320x200
También se ha añadido la opción de 320x200 sin cálculo IEEE.

Debemos elegir el tipo ESP32:

A continuación, seleccione los archivos como se muestra en la captura de pantalla adjunta, con los mismos valores de desplazamiento:

Y pulsaremos start. Si todo ha sido correcto, solo tendremos que reiniciar el ESP32.



Requerimientos

Se requiere:
  • TTGO VGA32 v1.x (1.0, 1.1, 1.2, 1.4)
  • Visual Studio 1.66.1 PLATFORMIO 2.5.0 Espressif32 v3.5.0
  • Arduino IDE 1.8.11 Espressif System 1.0.6
  • ArduinoDroid (6.3.1)
  • Librería reducida Arduino bitluni 0.3.3 (incluida en proyecto)



ArduinoDroid

Se debe ejecutar, sólo una vez, el script makeandroid.bat, que nos deja toda la estructura de datos del directorio dataFlash en el directorio raiz, así como reemplazando las archivos principales con llamadas de los .h sin usar el directorio de datos dataFlash.
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.



Arduino Web Editor

Se debe ejecutar, sólo una vez, el script makeandroid.bat. Una vez finalizado, se sube a la nube como un proyecto cualquiera, ya sea comprimido en zip o por archivos.



PlatformIO

Se debe instalar el PLATFORMIO 2.5.0 desde las extensiones del Visual Studio. Se requiere también Espressif32 v3.5.0.

Luego se seleccionará el directorio de trabajo TinyElkulatorttgovga32. 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 bitluni.



Arduino IDE

Todo el proyecto es compatible con la estructura de Arduino 1.8.11. Tan sólo tenemos que abrir el elkulator.ino del directorio elkulator.

Debemos instalar las extensiones de spressif (v1.0.6) en el gestor de urls adicionales de tarjetas https://dl.espressif.com/dl/package_esp32_index.json Para el modo normal, ya está preparado el proyecto, de forma que no se necesita ninguna librería de bitluni. Lo podemos hacer desde el administrador de bibliotecas. 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.



Usabilidad

Se permite cargar:
  • Snapshots SNA (version 0.5)
  • Cartuchos 16 KB y 32 KB
  • Discos formato ADF
Se dispone de un OSD básico de bajos recursos, es decir, muy simple, que se visualiza pulsando la tecla F1.

Los ficheros deben ser convertidos a .h en hexadecimal. Puede usarse la herramienta online:
http://tomeko.net/online_tools/file_to_hex.php?lang=en



Opciones

El archivo gbConfig.h se seleccionan las opciones:
  • use_lib_vga320x200: Modo 320x200
  • use_lib_320x200: Muestra 200 lineas en, lugar de 256 en 320x200
  • use_lib_vga8colors: Modo 8 colores (3 bits RGB) o 64 colores (6 bits RRGGBB)
  • use_lib_log_serial: Se envian logs por puerto serie usb
  • FIX_PERIBOARD_NOT_INITING: Solución de David Crespo Tascón para teclados que no se inicializan.
  • gb_ms_keyboard: Se debe especificar el número de milisegundos de polling para el teclado.
  • use_lib_fix_double_precision: No usa el cálculo de frecuencia de video VGA con el propio ESP32, evitando posibles problemas de precisión con la mantisa. Es útil para ESP32's que calculen mal la frecuencia.



Aplicaciones Test

Se han dejado múltiples juegos en formato SNA (versión 0.5):
  • Craze Erider
  • Space Invaders
  • Killer gorilla
  • Stock car
  • Felix

Se han dejado múltiples cartuchos (16 KB):

  • Hopper
  • Snapper

Se han dejado múltiples cartuchos (32 KB):

  • Count Down
  • Star Ship Command
  • LISP

Se ha dejado el disco de Wellcome. Para testear desde el emulador:

 *CAT
 *!BOOT



DIY circuito

Si no queremos usar una placa TTGO VGA32 v1.x, podemos construirla siguiendo el esquema de fabgl: