Emulación bajo ESP32

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 10 Nov 2020 18:20

Último mensaje de la página anterior:

Para que os sea más cómodo el desarrollo, os dejo la paleta de colores para modo RGB 8 colores:
8colores.png
8colores.png (210 Bytes) Visto 2110 veces

Va de 0 (izquierda negro) a 7 (derecha blanco)
Y la de RRGGBB 64 colores:
64Colores.png
64Colores.png (260 Bytes) Visto 2110 veces

Va de 0 (izquierda negro) a 63 (derecha blanco)

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 11 Nov 2020 20:07

Ya he terminado una versión de test que funciona sin PSRAM en la TTGO VGA32 y con todas las modificaciones:

https://github.com/rpsubc8/ESP32TinyZXSpectrum

Imagen

He convertido el proyecto también a Arduino, para que lo compiléis con Visual Studio o con el IDE de Arduino.
Las cintas, por ahora sólo carga nativamente los programas de BASIC.
En un par de dias subiré la tool para convertir binarios a HEX al estilo del que hice para el emulador de la gameboy.
Lo que vaya modificando, lo iré metiendo en este repositorio.

dragonet80
Mensajes: 444
Registrado: 28 Nov 2017 12:36
Agradecido : 215 veces
Agradecimiento recibido: 175 veces

Re: Emulación bajo ESP32

Mensajepor dragonet80 » 12 Nov 2020 23:05

ackerman escribió: [*]Emulador NES, ATARI y SMS: https://github.com/rossumur/esp_8_bit/tree/master/src Usa salida PAL y NTSC, y está pensado para micros superiores y doble núcleo. Se requiere bypass de VGA, teclado y optimización de memoria.
[*]NES: Al igual que el anterior, está basado en Nofrendo https://github.com/espressif/esp32-nesemu Como casi todos los emuladores de NES para ESP32, sólo deja roms de 32 KB.Pensada para pantalla portátil LCD.

Mira, hoy me he encontrado con ésto:
https://www.instructables.com/Arduino-NES/
Mirando un poco por encima he visto que lleva el mapper 10, que el esp-8bit no lleva (son un par de juegos que lo soportan):
https://github.com/moononournation/ardu ... rc/mappers
No se si tendrá alguna mejora mas.

Por si te sirve de algo.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 13 Nov 2020 17:59

Muchas gracias dragonet80. Como se suele decir, pues pa la saca -thumbup . Lo meto en la primera hoja del hilo.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 14 Nov 2020 15:59

Tengo muchos frentes abiertos, pero sigo haciendo pruebas y mejoras del emulata de gameboy para la ttgo vga32.
He añadido modos de 4 colores con la salida de vga de 8 colores, y aunque no es muy agradable visualmente, es muy rápido.
Imagen

https://www.youtube.com/watch?v=F00ctuDlUbs&ab_channel=ackerman

Lo estoy dejando con varias opciones de compilación para elegir paleta azul, roja o la rara.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 15 Nov 2020 13:25

Pues estamos de enhorabuena.
Ya tengo portado el emulador de CPC 464 con lo principal para que funcione en la TTGO VGA32.

Imagen

https://www.youtube.com/watch?v=_3QWmjH6noc&ab_channel=ackerman

Aún me quedan muchas cosas, pero va por buen camino.
Tengo más frentes abiertos, con más máquinas portadas, pero claro, como primero soy yo, -grin -grin -grin , pues voy a portar lo que más me gusta,y muchas opciones las dejaré sin hacer, porque por ejemplo, no busco ni emulación exacta ni pirateria (todos los sistemas de protección). Por eso, con el código que vaya liberando, ya vais vosotros haciendo lo que necesiteis.

Avatar de Usuario
Ben-kenobi
Mensajes: 526
Registrado: 01 May 2014 23:06
Agradecido : 8 veces
Agradecimiento recibido: 28 veces

Re: Emulación bajo ESP32

Mensajepor Ben-kenobi » 16 Nov 2020 16:06

ackerman escribió:Pues estamos de enhorabuena.
Ya tengo portado el emulador de CPC 464 con lo principal para que funcione en la TTGO VGA32.

Imagen

https://www.youtube.com/watch?v=_3QWmjH6noc&ab_channel=ackerman

Aún me quedan muchas cosas, pero va por buen camino.
Tengo más frentes abiertos, con más máquinas portadas, pero claro, como primero soy yo, -grin -grin -grin , pues voy a portar lo que más me gusta,y muchas opciones las dejaré sin hacer, porque por ejemplo, no busco ni emulación exacta ni pirateria (todos los sistemas de protección). Por eso, con el código que vaya liberando, ya vais vosotros haciendo lo que necesiteis.


-shock ¡ INCREIBLE !

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 19 Nov 2020 15:43

Muchas gracias a tod@s. He tenido suerte.
Hoy estamos ante un momento histórico:
Imagen

https://www.youtube.com/watch?v=9r09JuCpVJM&ab_channel=ackerman

En el video, está una prueba en la placa real TTGO VGA32 sin PSRAM. Aunque se puede ver como arranca el 464, 664 y el 6128, por ahora prefiero ser cauto, y prefiero centrarme sólo en el 464. Vale más apuntar bajo, que no disparar a todo lo que se menea y acabar en accidente. -grin -grin
Los colores raros, son porque estoy a pruebas en 8 colores.
No os podéis imaginar lo difícil que es el desarrollo, dado que estoy usando un sólo núcleo y sólo SRAM. Los que desarrollan para FPGA's, saben la dificultad de la limitación de usar sólo SRAM, pues en el ESP32, se multiplica por 256 el grado de destreza. Podria decirse que este proyecto es Titánico, pero a la larga, estoy seguro que marcará un antes y un después.
Para que os hagáis una idea, he reducido 1 MB de tablas precalculadas a sólo 64KB. El CPC es muy grandon, comparado con el Spectrum, pero que guapo es,se merece, todo el sacrificio. -thumbup -thumbup

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 21 Nov 2020 16:23

Ya tengo una versión para salida 8 colores y para 64 colores. No es exacta a la paleta del CPC 464, pero es lo más parecido.
Imagen

https://www.youtube.com/watch?v=l5APB84iWsE&ab_channel=ackerman

En el video se puede ver en funcionamiento en la placa real TTGO VGA32, como ejecuta el juego SOKOBAN. No es la velocidad final, estoy en pruebas que blindan el código, dado que el original tenía muchos gazapos (he corregido), que en PC y Nintendo DS, aguantaba el tipo. Estoy portando múltiples emuladores, alguno basado en el CrocoDS, por lo que es el doble trabajo, portar de DS a PC y PC a TTGO. El de DS como reducía la resolución de video, no me ha gustado como ha quedado, y estoy con el CPCEM.
Lo que es bastante cutre, es empezar por emuladores de PC actuales, porque aunque intentan ser fieles a la emulación, son muy lentos en ejecución y altos en consumo de recursos, lo que se traduce, en que al final hay que rehacer casi al 100% el código entero, y más que ayudar, entorpecen.

La memoria, tal y como he dejado escritos en la primera hoja, tenemos el problema de la fragmentación y el espacio máximo libre, es decir, que jamás podremos usar los 520 KB de RAM, es más, jamás podremos usar 128 KB libres lineales. Si usamos las sdk originales del ESP32, tenemos 3 tipos de SRAM, numeradas del 0 al 2. Como se está usando PLATFORMIO y Arduino IDE, no se dispone de este acceso a la SRAM de 3 tipos, sino que se encapsula en la IRAM (static) y la RAM dinámica(malloc). Por tanto, para conseguir 128 KB, por ejemplo, se podría usar el truco de 64 KB de IRAM y 64 KB de malloc. Aunque también se puede usar 4 bloques de 16 KB con malloc para ir seguros. La IRAM como máximo es de 96 KB, así que necesitamos controlar al 100% todas las variables que usamos. Por eso no tiene sentido usar un emulador sin despiezar hasta el último byte de consumo de RAM. Tenemos que saber absolutamente toda la RAM que estamos usando, además de reducir el consumo a lo mínimo.

Lo que pretendo con este hilo, tal y como comentaba desde el principio, es tener, una hemeroteca, donde cualquiera pueda participar y acceder sin falta de tener que pedir ayuda o permiso para usar las cosas, como suele ocurrir en otros proyectos. Es decir, pretendo que desaparezca la figura del gestionador, pero debe seguir un orden y autogestionarse, para que no acabe siendo un cajón de sastre o un basurero, en donde, se meta cualquier tipo de información, que al final sólo añade ruido. Por ejemplo, se puede usar un ARM Cortex o un Propeller de Parallax, pero entonces, pertenecería a otra clase de proyecto.

Avatar de Usuario
Alki
Mensajes: 64
Registrado: 23 Nov 2016 10:05
Agradecido : 5 veces
Agradecimiento recibido: 11 veces

Re: Emulación bajo ESP32

Mensajepor Alki » 21 Nov 2020 17:35

impresionante lo tuyo...

por cierto, no tienes lo de amstrad puesto en el repo no?

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 21 Nov 2020 18:02

Alki escribió:impresionante lo tuyo...
por cierto, no tienes lo de amstrad puesto en el repo no?

Muchas gracias.

cpc8colores.gif
cpc8colores.gif (9.9 KiB) Visto 970 veces


Aún no lo tengo el repositorio, porque estoy en fase de construcción, pero tranqui, que lo subiré pronto, como hice con el de gameboy y el ZX Spectrum. Primero subiré una versión de test, y luego ya subiré la versión más estable. Las versiones de Test estan pensadas para sólo probar con lo que viene.
Lo hago así, porque si subiera por ejemplo lo que tengo ahora y lo ejecutarais por error con salida de 8 colores en lugar de 64, directamente os arrancáis los ojos (se vería como la imagen que pongo). -rofl -rofl Aunque es cambiar un par de opciones o líneas de código, al final se quiere algo cómodo y rápido, y como se vea mal, va a dar mala sensación.

Y respecto a los otros emuladores, el de ZX Spectrum dejé la versión de test para que se pruebe que realmente funciona en placas sin PSRAM, pero aún falta que le meta la herramienta que convierta ROMs, SNA y TAPES a .H y que el OSD permita hacer scroll de ficheros. Es una tontería, pero aún no lo he metido. También voy a añadir la opción de emular y cargar DSK's al ZX Spectrum.

Todas estas opciones permitirán el dia de mañana que cualquiera pueda hacerse un custom emulator, y así si no quiere por ejemplo cintas, pues quita la opción, y si por ejemplo quiere un dispositivo raro, pues lo añada.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 23 Nov 2020 14:08

Como una imagen vale más que mil palabras:

Imagen

https://www.youtube.com/watch?v=LAS3A6X4WJo&ab_channel=ackerman

Ya estoy en los últimos coletazos, y en nada saldrá una versión pública.
Como se puede ver en este video, ya he mejorado la velocidad, y va de lujo. Da la sensación de estar en un CPC real, sobre todo jugando al Prince of Persia.

Aclaro, que le he dado mil vueltas, pero los DSK's, vais a necesitar la tool que estoy haciendo para transformar a .H, porque la opción más óptima ha sido dejar toda la estructura de sectores, tracks y los datos RAW en si mismos del disco en Flash, y consumir 0 bytes de RAM. Si dejara todo el DSK tal cual, consumiría mucha RAM, y estoy como el QEMM. -grin -grin

Por ahora va a quedar una pantalla virtual de 400x300 pixels, que con zoom y unzoom gestiona los modos 160x200, 320x200 y 640x200. Pero estoy con un sistema alternativo que cambia a un modo de video parecido al específico, para optimizar aún más velocidades.
El sonido, lo gestiono, pero aún no saca nada físico, lo dejo para el final, pero pondré un modo dirty sound como siempre, que aunque no es lo más preciso, es lo más rápido para tirar millas, y para bajo consumo de CPU.

Este emulador de CPC da más vidilla que el Spectrum, porque va a dejar múltiples configuraciones de configuraciones.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 25 Nov 2020 13:04

Al final, aunque no quería pararme mucho en el modo 128 KB, pues pasa lo de siempre, se termina uno metiéndose.

Imagen

https://www.youtube.com/watch?v=PWx-kQQ3cqU&ab_channel=ackerman

Es un modo no muy rápido pero de bajo consumo que permite ejecutar la demo de batman group. Voy ver si puedo reducir el consumo de ram para incluirlo o no.

Avatar de Usuario
Womble
Mensajes: 75
Registrado: 19 Nov 2020 18:59
Agradecido : 15 veces
Agradecimiento recibido: 77 veces

Re: Emulación bajo ESP32

Mensajepor Womble » 27 Nov 2020 13:43

This CPC is superb ackerman!

I also have your TinyESPSpectrum running on a FabGL dev board.

I like the clean user interface!

I am looking at how to get the Camputers Lynx PALE emulator to work with the Z80emu that you and Ramon have used, at present I use the Kogel core.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 27 Nov 2020 16:28

Womble escribió:This CPC is superb ackerman!
I also have your TinyESPSpectrum running on a FabGL dev board.
I like the clean user interface!
I am looking at how to get the Camputers Lynx PALE emulator to work with the Z80emu that you and Ramon have used, at present I use the Kogel core.

Thank you very much.I'm sure you look great in the Lynx PALE emulator.
In the code I modified from the Spectrum you can see some tricks to get more speed, especially video, getting a pointer to the direct video area:

Código: Seleccionar todo

unsigned char **ptrVGA = vga.backBuffer

Look at the type of driver used, if it is (VGA3Bit,VGA6Bit) or (VGA3BitI,VGA6BitI), to make masks and special accesses (gbvgaMask8Colors)|gbvgaBits8Colors). This way of working allows caching.
The bitluini library is very practical, but it can be optimized, and skip the whole Object Orientation layer.
In ESP32 the cache is rewarded. It has 3 zones of RAM,(520 KB) formed by:

Código: Seleccionar todo

 SRAM0 - 192 KB
 SRAM1 - 128 KB
 SRAM2 - 200 KB

Where they make data snaps. This form is more complex, but is light years away from speed optimization with respect to the use of PSRAM, since it is blocking and slower, when using the SPI.

Spanish:
Muchas gracias.
Seguro que te queda genial el emulador de Lynx PALE.
En el código que modifiqué del Spectrum puedes ver algunos trucos para conseguir más velocidad, sobre todo de video, consiguiendo un puntero a la zona directa de video:

Código: Seleccionar todo

unsigned char **ptrVGA = vga.backBuffer

Hay que mirar el tipo de driver que se usa, si es (VGA3Bit,VGA6Bit) o (VGA3BitI,VGA6BitI), para hacer máscaras y accesos especiales (gbvgaMask8Colores)|gbvgaBits8Colores). Esta forma de trabajar permite cachearse.
La librería de bitluini es muy práctica, pero se puede optimizar, y saltarse toda la capa de Orientación a Objetos.
En el ESP32 se premia la cache. Dispone de 3 zonas de RAM (520 KB) formadas por:

Código: Seleccionar todo

 SRAM0 - 192 KB
 SRAM1 - 128 KB
 SRAM2 - 200 KB

Donde se hacen encajes de datos. Esta forma es más compleja, pero está a años luz de optimización de velocidad respecto al uso de PSRAM, dado que es bloqueante y más lento, al usar el SPI.

ackerman
Mensajes: 177
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 23 veces
Agradecimiento recibido: 101 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 27 Nov 2020 18:18

Ya está el sonido del AY8912. He dejado un dirty sound de 3 canales, super simple con ultrabajo consumo, es decir, que suena de pena. -grin -grin -grin , pero sirve para tirar millas, y que no quede mudo. Como voy dejar el código fuente, cualquiera puede mejorarlo.

Imagen

https://www.youtube.com/watch?v=2C3hpad6mD8&ab_channel=ackerman

El modo de 128 KB ya funciona, como se puede ver en el juego de La Abadia del Crimen. Para las demos, como son más cerdas -rofl -rofl , la cosa es diferente. La demo de Batman Forever, cada vez voy cargando más, ya llega a la mitad del segundo disco, pero aún no tira completa.


Hace 2 años, casi 3, en foros internacionales comenzaron con dudas sobre si se podría hacer un emulador de CPC para un ESP32 de la placa Odroid-Go:

Código: Seleccionar todo

 ESP32 WROVER 2 cores 240 Mhz
 520 KB SRAM
 4 MB psram
 16 MB flash
 Obligatorio tarjeta SD
 320×240 TFT LCD

Aún siguen debatiendo, si se puede o no, incluso se baraja añadir más módulos. Parece que al igual que el resto de proyectos retro, lo que importa es vender, vender y vender hardware, para acabar pillando polvo en algún sitio, y finalmente deprecated.
Gracias a este hilo, ya sabéis que con mucho menos, se puede emular el CPC y otros ordenadores de 8 bits:

Código: Seleccionar todo

 ESP32 1 sólo núcleo 240 Mhz
 Sólo 520 KB SRAM
 4 MB flash
 Monitor VGA

Avatar de Usuario
minter
Mensajes: 3356
Registrado: 22 Jul 2014 18:51
Agradecido : 4019 veces
Agradecimiento recibido: 1611 veces

Re: Emulación bajo ESP32

Mensajepor minter » 27 Nov 2020 18:48

ackerman escribió:Hace 2 años, casi 3, en foros internacionales comenzaron con dudas sobre si se podría hacer un emulador de CPC para un ESP32 de la placa Odroid-Go:


Es que ackerman es mucho ackerman!!! -drinks


Volver a “Emulaciones software, FPGA y otras soluciones”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado