Emulación bajo ESP32

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 25 Oct 2020 09:27

Último mensaje de la página anterior:

Gracias por la info de la tienda. Igual era bueno hacer una especie de lista con estos datos para así saber donde pillar los posibles buenos.
En cuanto deje de funcionar la v1.2, me pillaré la v1.4, aunque no descarto que la pille antes. -grin -grin Mooooola mucho, es muy adictivo -rofl -rofl . Lo único, es que a lo mejor, termino teniendo la misma placa y problema. Intentaré resumir el tema de la psram para recoger información:
Para poder usar el modo 128K del emulador, tal y como he visto por código se necesitan un total de 163840 bytes, es decir 160 KB de psram (rom0 a rom3, ram0 a ram4 y ram6). Sin esa psram, no funciona el modo 128K, salvo que se hagan las modificaciones que estoy haciendo.Pero el modo 48K que usa SRAM funciona perfectamente.
La psram, no es más que un chip de ram externa con comunicación SPI. Cualquier ESP, incluido los de gama baja ESP82266, permiten conectar psram, incluso una sram o eprom externa.La cuestión, es que la placa TTGO VGA32 no tiene nada de todo eso. Aquí es donde entra, la construcción del chip, que es donde han metido en su interior el chip psram.
Desconozco como se fabrica un ESP32 exactamente, pero parece que se está dando la misma situación que la mutación de micros de x86 de AMD. Hay una lista, buscad por internet, que te dice todas las posibilidades, pero así por encima:

Código: Seleccionar todo

Algunos Athlon II X3 425/435/440/445 mutan a X4
Algunos Phenom II x2 555BE mutan a B55BE x3 y x4
Algunos Phenom II x2 550BE mutan a B50BE x3 y x4
Algunos Phenom II x2 545 mutan a B45 x4
Algunos Phenom II x3 720BE mutan a 20BE x4
Algunos Sempron 140 mutan a Athlon II x2 440

Muchos de estos micros, no pasaban los tests de CPU, y otros de potencia watios, asi que te podías cargar los mosfet de la placa o la fuente.En unas placas si tiraban bien y en otros no, por eso habia que hacer los tests.
Yo tengo un equipo Athlon x2 mutado a x3 phenom, el 4º núcleo de phenom me daba fallos de test.

Volviendo al ESP32, el micro WEMOS, permite usar la psram interna, pero según reportes en foros americanos, a unos les dan 0 bytes, a otros 2 MB, otros 4 MB, otros fallos al hacer tests, sólo detectan 1 núcleo, y a otros americanos les dan ganas de matar al fabricante (el traductor petaba al traducir los insultos). -grin -grin
Los diferentes WROVER que existen por encima son:

Código: Seleccionar todo

ESP32-WROOM-32 - no psram, 1 nucleo
ESP32-WROOM-32D - no psram, 1 nucleo
ESP32-WROOM-32U - no psram
ESP32-SOLO-1 - no psram
ESP32-WROVER (PCB) - 8 MB psram,2  núcleos
ESP32-WROVER (IPEX) - 8 MB psram,2 núcleos
ESP32-WROVER-B - 8 MB psram,2  núcleos
ESP32-WROVER-IB - 8 MB psram, 2 núcleos


Y pasamos al micro32, de la placa TTGO-VGA32, que en principio equivale a un ESP32-PICO-D4, que oficialmente, tiene lo mínimo, es decir, 0 bytes de psram y un sólo núcleo.
En webs chinas, lo comparan con un WROOM32, pero no dicen nada de nada de cualquier otra cosa.

Así que si queréis ir poniendo un inventario de referencias de chip, igual sirve para algo. Lo que se os ocurra.
Tu prueba todo lo que veas del emulata, y vas comentando resultados.

jltursan
Mensajes: 3142
Registrado: 20 Sep 2011 13:59
Agradecido : 275 veces
Agradecimiento recibido: 789 veces

Re: Emulación bajo ESP32

Mensajepor jltursan » 25 Oct 2020 11:29

Caramba, que de cosas parece hacer el TTGO-VGA32... -shock

Una cosa a los que la conoceis bien, ¿hay algún entorno (no emulado) integral para esta plataforma?, me refiero a algo que permita arrancarla con un BASIC o parecido que de acceso al hardware. Imagino algo así como un BASIC con la librería FabGL integrada, al estilo de un Maximite o ese tipo de hierbas.

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 25 Oct 2020 12:06

jltursan escribió:Caramba, que de cosas parece hacer el TTGO-VGA32... -shock
Una cosa a los que la conoceis bien, ¿hay algún entorno (no emulado) integral para esta plataforma?, me refiero a algo que permita arrancarla con un BASIC o parecido que de acceso al hardware. Imagino algo así como un BASIC con la librería FabGL integrada, al estilo de un Maximite o ese tipo de hierbas.

Otro que ha caido en la secta. -rofl -rofl -rofl
Si, tienes un proyecto Tiny BASIC:

Imagen

https://www.instructables.com/ESP32-Basic-PC-With-VGA-Output/

Como está pensado para otro chip, si lo metes tal cual y lo subes a la placa, petara.
Lo acabo de mirar ahora mismo, pero te cuento cosas a tocar del código para que te tire, que básicamente, es quitar el soporte a SD, cambiar el pin de audio y los pines de video, como se puede ver aqui:

Código: Seleccionar todo

//#define ENABLE_FILEIO 1
//#define ENABLE_AUTORUN 1
//#define ENABLE_EAUTORUN 1
#define kPiezoPin 25
VGAController.begin(GPIO_NUM_22, GPIO_NUM_19, GPIO_NUM_5, GPIO_NUM_23, GPIO_NUM_15); //8 colores Seccion fabgl

Con esto, arrancaria y podrías programar en BASIC. Adjunto el código todo modificado, así como el binario para el que no quiera recompilar y lo quiera subir a FLASH directamente
Luego ya te pegas tu, para usar el soporte de SD y envio de programas por terminal, así como carga de EPROM y demás.
Adjuntos
TinyBasic.zip
(276.82 KiB) Descargado 11 veces

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 26 Oct 2020 14:24

Pues estamos de enhorabuena.
He de aclarar, que las modificaciones que estoy haciendo del emulata del Zx Spectrum de rampa069, principalmente son para mi, así que igual a muchas personas, ciertas funcionalidades que estoy quitando, puede que realmente las puedan necesitar, y les fastidie. Por ejemplo, yo no necesito para nada el modo demo, es más ni lo he probado, pero básicamente consiste en poner en modo diapositivas un SNA detrás de otro. Todo lo que quito, memoria RAM y flash para la saca.
He optimizado en el ESP32 los 18503 microsegundos que tarda en generarse un frame de video en el emulador original, a 10637 microsegundos (no es la mitad, pero casi). Aún me quedan muchas mejoras más, pero voy por fases.

Imagen

Y lo mejor, en un par de horas he realizado el port del port (suena a modo bucle) -rofl del emulata del ESP32 ZX Spectrum de rampa069 para SDL bajo Windows con devcpp. Esto va a ser útil para modificaciones más grandes, como emular cinta, y para el día de mañana para otros emuladores, como puede ser el CPC464. Ahora voy poder desarrollar más rápido.

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

Me faltan cosas, pero lo tengo para un apaño rápido sin color y se puede ver como carga la ROM de diagnósticos

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 28 Oct 2020 11:26

He realizado varias modificaciones en el port de PC:

Código: Seleccionar todo

 - Mini port Win32, con reescritura de código, fácil port a Linux.
 - Añadido un dirty sound del altavoz interno y ay-3-8912 en SDL del port Windows


Estoy realizado varias modificaciones para PC y ESP32:

Código: Seleccionar todo

 - No se usa la PSRAM, entra todo en el chip original con sólo 520 KB de SRAM.
 - Funciona 16/48K y todos los 128K, +2, +3, +3E.
 - Optimizaciones de cpu, video y FLASH.
 - He quitado el modo demo, la grabación y carga rápida de SNA's, así como el SPIFF.
 - He quitado el OSD original, creando uno propio ultra reducido de recursos.
 - Quitado el soporte de hardware real de pulsos de cinta externa.
 - Soporte de cintas .TAP, con carga de pantallas.
 - Soporte de dirty sound con el chip ay-3-8912. Es parecido al que hice para la gameboy.
 - Control de velocidad de emulación, hasta 16x.
 - Adaptación de teclado PC, para poder borrar sin pulsar shift+0, o moverse en menús sin shift+6.

Aquí dejo un test de carga de screen de cinta virtual:

Imagen

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

bluedarky
Mensajes: 41
Registrado: 30 Dic 2019 13:24
Agradecido : 5 veces
Agradecimiento recibido: 4 veces

Re: Emulación bajo ESP32

Mensajepor bluedarky » 29 Oct 2020 09:29

He encontrado esto: https://github.com/CornN64/esp_8_bit
Parece que es para poder utilizar mandos de varias consolas en varios emuladores, y para sacar video compuesto. No sé si ya tenias constancia de esto... lo dejo por si sirve de algo.

Avatar de Usuario
Alki
Mensajes: 53
Registrado: 23 Nov 2016 10:05
Agradecido : 3 veces
Agradecimiento recibido: 8 veces

Re: Emulación bajo ESP32

Mensajepor Alki » 29 Oct 2020 12:59

buenas.. pues ya me ha llegado el juguetito... y no sé como pero he conseguido ya ponerle el emu de spectrum.. ahora a ir aprendiendo -thumbup

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 30 Oct 2020 14:12

bluedarky escribió:He encontrado esto: https://github.com/CornN64/esp_8_bit
Parece que es para poder utilizar mandos de varias consolas en varios emuladores, y para sacar video compuesto. No sé si ya tenias constancia de esto... lo dejo por si sirve de algo.

Muchas gracias por la info. Pues lo voy meter a la primera hoja de información, para que así la gente lo tenga en cuenta para portar. Por lo que veo, es un fork del de rossum, pero añadiendo soporte de mandos N64, NES y SNES, así que hay que reducir también a 1 núcleo, modificar a VGA y quitar psram.

Imagen
A parte de cargar ficheros .SCR y poder leer screens desde ficheros .TAP directamente sacando estructura de bloques, me he puesto a añadir carga de juegos, interceptando la rutina 0x056B de carga de cinta. Aquí dejo la carga del cargador de BASIC. Va por buen camino para la carga de juegos.
https://www.youtube.com/watch?v=HT1eyp_5HP8&ab_channel=ackerman

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 01 Nov 2020 19:16

No tenía pensado hacerlo, pero como no me lleva mucho tiempo, he añadido el soporte de emulación del ratón AMX y del Kempston

Imagen

Está opción la voy a dejar como opcional en la compilación, ya que aunque no consume mucho de FLASH y memoria, es una opción más bien friki para desarrollos extremos.
Así se puede usar el puerto PS/2 del ratón de la placa TTGO VGA32, y podemos tener un pedazo zx spectrum con teclado y ratón real.
He falseado los puertos 0xFBDF, 0xFFDF y 0xFADF, así como el puerto 31 para que funcione, como se puede ver en las aplicaciones 3DCOOL-KM, AT4OPEN-KM, sipka, el test de Zxds y los juegos como Fire.

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

Avatar de Usuario
Alki
Mensajes: 53
Registrado: 23 Nov 2016 10:05
Agradecido : 3 veces
Agradecimiento recibido: 8 veces

Re: Emulación bajo ESP32

Mensajepor Alki » 03 Nov 2020 00:15

Hola, pues ya he estado probando unos cuantos emus, y sorprendente me han funcionado casi todos.

Dentro de los ejemplos de Fabio hay cosillas también muy interesantes para esta placa.

A ver si se animan los programadores y se portan muchos emus.

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 03 Nov 2020 12:57

Alki escribió:Hola, pues ya he estado probando unos cuantos emus, y sorprendente me han funcionado casi todos.
Dentro de los ejemplos de Fabio hay cosillas también muy interesantes para esta placa.
A ver si se animan los programadores y se portan muchos emus.

-thumbup -thumbup Es puro vicio, una vez que empiezas, no se puede parar. -grin -grin Si sacas tiempo, prueba el emulador de gameboy que modifiqué, a ver que tal te va. Hay muchas cosas que se pueden mejorar, principalmente el bank switch, que lo hice rápido para tirar millas, pero se puede ahorrar mucha ram y cpu.

Esta semana intentaré ir cerrando cosas del emulador de ZX Spectrum, para así tener una versión publicada, y que lo podáis probar. Lo que vaya mal, no lo pondré, y lo que si, lo dejo. No intento una emulación perfecta, dado que llevaría mucho tiempo.
El emulador original, no emulaba el AY-8912, tan sólo el speaker. Le he añadido soporte, pero un dirty sound de 3 canales. El de ruido lo dejo sin implementar, para más adelante.

Imagen

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

La versión de x86 de PC dudo que la publique, igual que la versión x86 de gameboy. Más que nada, porque es una versión muy bizarra que he realizado, y es de andar por casa. La tengo para desarrollar más rápido, sin falta de tener que estar probando en la placa. Si la tengo que dejar curiosa y documentada, me llevaría semanas. -grin -grin Pero podría venir bien para portar a Linux, BeOS y QNX, porque la mayoría de los programadores no saben desarrollar un único código multiplataforma 100% estandar, y los ports que realizan dan grimilla. Se tiende a generar códigos diferentes para cada plataforma.

dragonet80
Mensajes: 422
Registrado: 28 Nov 2017 12:36
Agradecido : 207 veces
Agradecimiento recibido: 161 veces

Re: Emulación bajo ESP32

Mensajepor dragonet80 » 03 Nov 2020 21:29

ackerman escribió:Los diferentes WROVER que existen por encima son:

Código: Seleccionar todo

ESP32-WROOM-32 - no psram, 1 nucleo
ESP32-WROOM-32D - no psram, 1 nucleo
ESP32-WROOM-32U - no psram
ESP32-SOLO-1 - no psram
ESP32-WROVER (PCB) - 8 MB psram,2  núcleos
ESP32-WROVER (IPEX) - 8 MB psram,2 núcleos
ESP32-WROVER-B - 8 MB psram,2  núcleos
ESP32-WROVER-IB - 8 MB psram, 2 núcleos


Y pasamos al micro32, de la placa TTGO-VGA32, que en principio equivale a un ESP32-PICO-D4, que oficialmente, tiene lo mínimo, es decir, 0 bytes de psram y un sólo núcleo.
En webs chinas, lo comparan con un WROOM32, pero no dicen nada de nada de cualquier otra cosa.

En la web oficial tienes los diferentes modelos:
https://www.espressif.com/en/products/modules
El bueno es el ESP32-WROVER-E (PCB) y el -IE (IPEX) (llevan el soc v3). Los modelos anteriores (el B o el sin letra) se consideran no recomendados para nuevos diseños. Lo ideal sería pillar un ESP32-WROVER-E con 16 MB de flash (tiene doble nucleo y 8 MB de PSRAM), pero algunos vendedores no te indican la cantidad de flash.

He estado mirando la distribución de pines de este modelo y el que va en la TTGO-VGA32, cambia un poco, pero se podría apañar, sobretodo si no se usan los pines de abajo del módulo para SD. ¿Hay algún esquemático de la placa TTGO-VGA32 donde pueda ver qué pines del módulo se usan?

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 03 Nov 2020 22:01

dragonet80 escribió:He estado mirando la distribución de pines de este modelo y el que va en la TTGO-VGA32, cambia un poco, pero se podría apañar, sobretodo si no se usan los pines de abajo del módulo para SD. ¿Hay algún esquemático de la placa TTGO-VGA32 donde pueda ver qué pines del módulo se usan?

En la primera hoja de este hilo esta el pinout:

http://www.retrowiki.es/viewtopic.php?f=86&t=200036016

Aquí la v 1.4
Imagen

Y Aquí la v1.1 y v1.2
Imagen

Y aqui el circuito:
Imagen

dragonet80
Mensajes: 422
Registrado: 28 Nov 2017 12:36
Agradecido : 207 veces
Agradecimiento recibido: 161 veces

Re: Emulación bajo ESP32

Mensajepor dragonet80 » 04 Nov 2020 18:34

ackerman escribió:Y aqui el circuito:
Imagen

Gracias, aunque me refería al esquema completo de la placa TTGO VGA. En las fotos se ven mas integrados y me da la impresión de que hay mas pines utilizados, pero no puedo saberlo.

De todos modos, lo que quería decirte, es que si necesitas la PSRAM creo que se podría desoldar el "micro" ese (que eso debe ser un clon Chino y a saber si tiene las prestaciones de un Spressif original o no) y soldarle uno de los wrover-e oficiales. Aunque la disposición de los pines cambia un poco realmente son muy parecidos, los pads que no lleguen directos se les pone un cablecito y ya. Ahora, si con las limitaciones del que viene de serie ya te apañas entonces no hace falta perder el tiempo desoldando y volviendo a soldar.

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 04 Nov 2020 21:03

Los planos de la TTGO VGA32 pertenecen supuestamente a la compañia LILYGO (se muy poco de esa empresa), que no tengo ni idea si van a liberarlos, pero básicamente los chips extra contienen un amplificador de audio (NS4150) y los chips para aumentar y reducir voltajes de 5V y 3V. Con el esquema de fabgl que he dejado, se puede hacer uno la placa, y lo que interesa es el pineado con la relación GPIO.
Lo del clon Chino, ahi le has dado, es donde quería llegar desde las primeras hojas del hilo. Es un clon que equivale al ESP32-PICO-D4. Si pedimos oficialmente a Spressif el ESP32-PICO-D4, nos van a dar uno con las características oficiales, es decir, un sólo núcleo y 520 KB de SRAM. Cuando nos movemos por fabricantes, no sólo tenemos problemas con el ESP32-PICO-D4, sino con los wrover. Hay que pedir o directamente a Spressif o a fabricantes homologados y de garantia, como puede ser Mouser. Pero claro, entonces pagamos extra por la garantia, y pierde la gracia de lo barato.
Lo de desoldar, es lo que comentas, pierde la gracia, para eso, directamente se pilla uno la placa LILYGO® TTGO T7 V1.4 y se le añade el DAC de VGA y conectores de PS/2, y se monta todo en una protoboard.
Yo con las limitaciones, más o menos me arreglo, siempre y cuando sepa hasta donde quiero llegar. Por ejemplo, he reducido los 18503 microsegundos del dibujado de un frame en el emulador de ZXSPectrum (función videoTask) a 8300 microsegundos. Es decir, ahora es más del doble de rápido. Incluso he quitado hilos y tengo otra mejora para seguir incrementando velocidad, pero lo dejo para otro podado. Y la RAM, ahora mismo, con todos los modos de 128K activos, me sobra hasta 120 KB de RAM, sin usar para nada la PSRAM. Tengo en mente incluso meter modos de video avanzados e incluso un modo Scorpion y Pentagon reducido, pero todo eso, con calma, que eso requiere muchas más modificaciones.
Otra cosa, es el resto de usuarios, que pueden verse limitados, sobre todo si se empieza a mezclar chips ESP, que puede parecer una torre de babel, al estilo de Arduino o Linux. El objetivo de este hilo era intentar focalizar todo y aprovechar una placa barata con todo montado. Pero eso no quita, que si sacan una placa con más recursos y con posibilidad de durar en el tiempo, que se vaya uno a ella. -grin -grin Es lo de siempre, si dan más RAM, más periféricos, más E/S, más de todo, y al mismo precio, pues, uno no puede negarse a los encantos.
También hay que darse cuenta, que muchos de estos micros, al igual que muchos fpgas, van a quedar deprecated en un par de años, mientras que otros sobreviviran. Por eso tenemos que estar atentos a los parámetros que hoy en día hacen que por ejemplo siga existiendo el 16F84, el ESP8266 o por ejemplo que el ATMEGA 328 sea 100% compatible con el ATMEGA168, pero con más de todo.Mientras que otros chips, están muertos y enterrados y son 100% incompatibles hasta con ellos mismos. -rofl

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 06 Nov 2020 12:51

He añadido una conversión a salida monocromática por tonalidades, para simular un monitor de fósforo verde o una TV de blanco y negro, y así ganar un poco de calidad de imagen, ya que en escala de grises se consigue disimular los saltos de color. Se puede seleccionar desde el OSD. También se deja ajustar la imagen a la izquierda y hacia arriba, para solucionar defectos visuales en monitores.
Imagen
Como la placa usa RGB y RRGGBB, es decir, 1 bit para 8 colores y 2 bits para 64 colores, no se puede obtener ni siquiera 16 grises, tan sólo 4. Por tanto, he dejado salida monocromática Roja, Verde y Azul, por ahora para el modo de 8 colores.

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

Estoy dejando el código limpio, y en camino para dejar una versión pública de Test. Publicaré bajo licencia WTFPL, como suele ser habitual.

ackerman
Mensajes: 128
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 10 Nov 2020 18:20

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 677 veces

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

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


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