Skip to content

Latest commit

 

History

History
89 lines (78 loc) · 3.9 KB

readmeSpanish.md

File metadata and controls

89 lines (78 loc) · 3.9 KB

Tiny ESP32 C64

Port del emulador Toy C64 de PC x86 (Rink Springer) a la placa TTGO VGA32 v1.2 con ESP32.

He realizado varias modificaciones:
  • Portado de x86 PC a ESP32
  • Uso de SRAM, no se usa PSRAM
  • Funciona en ESP32 de 520 KB de SRAM (TTGO VGA32 v1.2)
  • Uso de un sólo core
  • Creado proyecto compatible con Arduino IDE y Platform IO
  • Arduino IDE 1.8.11 Espressif System 1.0.6
  • Emulación de disquetera (pruebas)
  • Emulación de cartucho (pruebas)
  • Emulación modo video carácter monocromo y color
  • Optimización de RAM y velocidad
  • No hay emulación de Sonido (por ahora)
  • No hay emulación de modos bitmap ni sprites(por ahora)

Requerimientos

Se requiere:
  • TTGO VGA32 v1.2
  • Visual Studio 1.48.1 PLATFORMIO 2.2.0
  • Arduino IDE 1.8.11 Espressif System 1.0.6
  • Librería Arduino bitluni 0.3.3 (incluida en proyecto)


PlatformIO

Se debe instalar el PLATFORMIO 2.2.0 desde las extensiones del Visual Studio.

Luego se seleccionará el directorio de trabajo TinyC64ttgovga32. 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 C64.ino del directorio c64.

Debemos instalar las extensiones de spressif 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. 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.

Test

Al ser una versión de Test, sólo debe usarse para pruebas de rendimiento.
Se consigue tener 162032 bytes libre de SRAM.
Los tiempos de emulación, rondan los 10 ms por frame y 49 fps.
Sólo se está usando un core, para los tests.
fps:49 10645 m:10636 mx:10663
fps:49 10645 m:10634 mx:10662
fps:49 10638 m:10636 mx:10649
Se puede probar el BASIC y pokes:
poke 1024,1
poke 55296,1


Usabilidad

Esta versión de Test sólo permite:
  • Tecla F12 Reiniciar

Opciones

El archivo gbConfig.h se seleccionan las opciones:
  • usb_lib_fast_GetCyclesForOpcode: Usar array cache para calculo de tiempos por instrucción (muy rápido).
  • usb_lib_fast_MemoryReadByte: Usar acceso directo sin vectores al leer de memoria (muy rápido)
  • usb_lib_fast_MemoryWriteByte: Usar acceso directo sin vectores al escribir de memoria (muy rápido)