Emulación bajo ESP32

firepower
Mensajes: 18
Registrado: 28 Nov 2020 13:49
Ubicación: Vietnam
Agradecido : 8 veces
Agradecimiento recibido: 15 veces

Re: Emulación bajo ESP32

Mensajepor firepower » 30 Nov 2020 15:24

Último mensaje de la página anterior:

Running this test:

#include <Arduino.h>
void setup(){
Serial.begin(115200);
Serial.printf("setup running on core %d", xPortGetCoreID());
Serial.println();
Serial.printf("Total PSRAM: %d", ESP.getPsramSize());
Serial.println();
Serial.printf("Free PSRAM: %d", ESP.getFreePsram());
Serial.println();
}
void loop(){
}

esptool.py v2.6
Serial port COM3
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None

Serial Monitor:
setup running on core 1
Total PSRAM: 4194252
Free PSRAM: 4194252

The ESP32 can access external SPI RAM transparently, so you can use it as normal memory in your program code. However, because the address space for external memory is limited in size, only the first 4MiB can be used as such. Access to the remaining memory is still possible, however this needs to go through a bankswitching scheme controlled by the himem API.

El ESP32 puede acceder a la RAM SPI externa de forma transparente, por lo que puede usarla como memoria normal en su código de programa. Sin embargo, debido a que el espacio de direcciones para la memoria externa es de tamaño limitado, solo los primeros 4MiB se pueden usar como tales. El acceso a la memoria restante aún es posible, sin embargo, esto debe pasar por un esquema de cambio de banco controlado por la API de himem.

Himem API

https://github.com/espressif

Because we are only planning on emulating 8bit and 16bit retro computers 4096kB PSRAM plus 520kB SRAM should be plenty without needing to mess with Himem.

Debido a que solo estamos planeando emular computadoras retro de 8 bits y 16 bits, 4096kB PSRAM más 520kB SRAM deberían ser suficientes sin necesidad de meterse con Himem.

firepower
Mensajes: 18
Registrado: 28 Nov 2020 13:49
Ubicación: Vietnam
Agradecido : 8 veces
Agradecimiento recibido: 15 veces

Re: Emulación bajo ESP32

Mensajepor firepower » 30 Nov 2020 16:52

ackerman have the option of no wait states for TURBO mode -thumbup

ackerman tiene la opción de estados sin espera para el modo TURBO -thumbup

Avatar de Usuario
zx81
Mensajes: 379
Registrado: 23 Feb 2013 21:31
Agradecido : 65 veces
Agradecimiento recibido: 130 veces

Re: Emulación bajo ESP32

Mensajepor zx81 » 30 Nov 2020 17:56

ackerman escribió:zx81, se yo que tienes ganas de hacer el emulata del ZX81, así que te anoto en el evolutivo, que haces una versión de test en 2 días, en 4 integración y la entrega en 1 semana. -thumbup -thumbup Es broma, este hilo surgio para unir sólo la info de todo lo que se desarrolle, pero que cada uno haga lo que le de la gana y sobre todo lo que más le guste.


Más bien digo que sería chulo que hubiera un emulador de ZX81, porque después del manifiesto fracaso de ZXBaremulator, no estoy muy motivado para desarrollar más emuladores. Quizá en el futuro cambie de idea, pero hoy, como que no.

Es mucho más cómodo estar en el lado del "hay que" que pasarse al lado del "voy a", donde va a parar. Y cuando alguien saca algo, criticar todo lo que se hace porque considero que hay cosas innegociables que el emulador debería tener porque yo así lo digo. Pero todo eso sin mover un músculo ni hacer trabajar a una sola neurona. La vieja'l visillo versión s.XXI.

La verdad es que compré la placa, la he conectado una vez para saber si me habían enviado un ladrillo y ya. Ni ganas me quedan de probar el emulador de Spectrum siquiera.

Pero sigo atento el hilo, que es muy interesante y te felicito por la cantidad de curro que estás haciendo. Yo sí se valorar lo que haces. ;)
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

ackerman
Mensajes: 162
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 16 veces
Agradecimiento recibido: 100 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 30 Nov 2020 19:42

firepower escribió:Running this test:
esptool.py v2.6
Serial port COM3
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None

Serial Monitor:
setup running on core 1
Total PSRAM: 4194252
Free PSRAM: 4194252

Thank you very much for the information. -thumbup -thumbup A perfect test. With this result, you can see that you have 2 cores.
The ram, you have to do a complete test to be sure. The function getFreePsram and getPsramSize if you do not have psram directly or give exception, or can give a very high or negative number. But psram can exist and be corrupted. For this, you have to do an access test. This is not only useful with ps_malloc or ps_calloc, because the compiler can detect that nothing is done in the code and remove it. The FreeRTOS can also perform ps_malloc and ps_calloc without error, but when accessing memory, that's when the exception occurs. Therefore, you must perform accesses with memset or random access in code, to ensure that the memory is 100% OK.

But in principle with the information you have given, I already have one thing clear. I'm going to get a v1.4 board, surely this week. If everything is OK, I will inform you about the manufacturer, so that more people can buy it. -drinks -drinks

The PSRAM, as you comment, can only be addressed 4 MB in a simple way. Everything that passes of the 4MB has to be done by commutation.
I agree with you that with 4 MB to emulate many 8-bit and 16-bit machines you have plenty, but who knows what could be done with 8 MB or more. Nevertheless, the ideal even if you have psram, is to use sram as much as possible, because if a SRAM data is within the 4 cacheable KB, the performance of an algorithm is multiplied by x100 against the same data in an SPI ram, even if it is in cache.


Spanish:
Muchas gracias por la información. -thumbup -thumbup Un test perfecto. Con este resultado, se ve que tiene 2 núcleos.
La ram, hay que hacer un test completo para estar seguros. La función getFreePsram y getPsramSize si no se dispone de psram directamente o da excepción, o puede dar un número muy alto o negativo. Pero puede existir psram y estar corrupta. Para ello, hay que hacer test de acceso. No sirve sólo con ps_malloc o ps_calloc, dado que el compilador puede detectar que no se hace nada en código y lo elimina. El FreeRTOS también puede realizar ps_malloc y ps_calloc sin que ocurra error, pero al acceder a la memoria, es cuando ocurre la excepción. Por tanto, se debe realizar accesos con memset o acceso aleatorios en código, para garantizar que la memoria está 100% OK.

Pero en principio con la información que has dado, ya tengo una cosa clara. Me voy a pillar una placa v1.4, seguramente esta semana. Si me llega todo OK, informaré por aqui del fabricante, para que así también lo compre más gente. -drinks -drinks

La PSRAM, tal y como comentas, sólo se puede direccionar 4 MB de manera sencilla. Todo lo que pase de los 4MB se tiene que hacer por conmutación.
Coincido contigo que con 4 MB para emular muchas máquinas de 8 bits y 16 bits se tiene de sobra, pero quien sabe lo que se podría hacer con 8 MB o más. No obstante, lo ideal aunque se disponga de psram, es usar sram lo máximo posible, puesto que si un dato de SRAM queda dentro de los 4 KB cacheables, el rendimiento de un algoritmo se multiplica por x100 frente al mismo dato en una SPI ram, aunque esté en caché.

ackerman
Mensajes: 162
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 16 veces
Agradecimiento recibido: 100 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 30 Nov 2020 20:00

zx81 escribió:Es mucho más cómodo estar en el lado del "hay que" que pasarse al lado del "voy a", donde va a parar. Y cuando alguien saca algo, criticar todo lo que se hace porque considero que hay cosas innegociables que el emulador debería tener porque yo así lo digo. Pero todo eso sin mover un músculo ni hacer trabajar a una sola neurona. La vieja'l visillo versión s.XXI.

Esto es España, el deporte nacional es criticar, sobre todo entre tapa y tapa de calamares y croquetas. :-D :-D :-D
He visto en videos tu emulador (entrevista que te hizo ron), y es una pasada lo rápido que arranca. Opino lo mismo, es una pasada de curro lo que te has metido entre pecho y espalda. Yo no es por nada personal, pero la raspberry no comulgo con la filosofía de la empresa, no va conmigo eso de sacar placas como churros y después dejar al usuario tirado.

En esto hay que tener una cosa clara, lo primero es hacer algo para uno mismo, y si por casualidad a otra persona le puede interesar, pues perfecto. Porque, no hay recompensa para tanto esfuerzo. A un amigo mio, que lleva tiempo queriendo desarrollar algo para Vectrex, ya le dije, haz algo que realmente te guste, porque hagas lo que hagas, vas a estar completamente sólo.

Por eso, la importancia de este hilo, porque aunque me guste mucho la diversidad de plataformas, realmente y desde el corazón, hay muchas plataformas, que me han importado, me importan y me importaran entre nada y absolutamente nada. -grin -grin Y hay otras, como por ejemplo el cpc, que me encantan. -grin Eso no quita que deteste a la compañía AMSTRAD.
Y yo por este hilo, pasara como cuando se salía de comedia un sábado de noche, y alguien hacia un quiebro, y desaparecia sin decir adios antes de tomar la última. Se tiene que autogestionar sin falta de un gestionador, y que sirva sólo como nexo de unión para todos aquellos que quieran desarrollar para esta plataforma.

firepower
Mensajes: 18
Registrado: 28 Nov 2020 13:49
Ubicación: Vietnam
Agradecido : 8 veces
Agradecimiento recibido: 15 veces

Re: Emulación bajo ESP32

Mensajepor firepower » 30 Nov 2020 20:30

@ZX81

ZX-80 & ZX-81 emulator ROM for use in ZX Spectrum emulator just create a folder (ZX-81) and rename the ROM 0.rom. (copy how exist files are named). This is how I made the Jupiter Ace work.
"/data/rom/48K/ZX-81/0.rom"


La ROM del emulador ZX-80 y ZX-81 para usar en el emulador ZX Spectrum simplemente cree una carpeta (ZX-81) y cambie el nombre de la ROM 0.rom. (copie cómo se nombran los archivos existentes). Así es como hice funcionar el Jupiter Ace.
"/data/rom/48K/ZX-81/0.rom"

ZX-80 ROM

ZX-81 ROM

Jupiter Ace ROM

Firmware using PSRAM and SDcard for /rom, /sna and boot.cfg files.
https://github.com/abelykh0/ZX-ESPectrum

Thanks to Paul Farrow for his emulators.

Avatar de Usuario
zx81
Mensajes: 379
Registrado: 23 Feb 2013 21:31
Agradecido : 65 veces
Agradecimiento recibido: 130 veces

Re: Emulación bajo ESP32

Mensajepor zx81 » 30 Nov 2020 20:48

ackerman escribió: Yo no es por nada personal, pero la raspberry no comulgo con la filosofía de la empresa, no va conmigo eso de sacar placas como churros y después dejar al usuario tirado.


Las opiniones son de cada uno, pero no comprendo muy bien la argumentación. No han sacado tantas placas, salvo las variantes de la Pi4 y la sorpresa de la Pi 400 es que es por la que más me están preguntando. Yo critico que esas placas, dado para lo que son, deberían proporcionarse con TODA la documentación técnica posible, pero no alcanzo a ver eso de que dejan tirado al usuario. La última Raspbian soporta la primera PI sin problemas (ehem, sin más problema que la limitación de CPU y memoria de la placa).
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

ackerman
Mensajes: 162
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 16 veces
Agradecimiento recibido: 100 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 02 Dic 2020 19:11

Ya está una primera versión de test pública, se puede mejorar mucho más, pero es mejor sacar ya algo para que quede una base:
Imagen
Aquí se puede ver en funcionamiento:

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

Y en el repositorio se puede bajar para probar:

https://github.com/rpsubc8/ESP32TinyCPC

Lo he dejado preparado para el 464. El 6128 aunque funciona, estoy en pruebas.
Para conseguir máximas velocidades, hay que jugar con los parámetros del gbConfig.h de los modos de videos rápidos, pero que está en modo experimental. Existen muchas opciones, para ahorrar RAM y para ganar velocidad.
Para el sonido se requiere la libreria fabgl.
Está todo pensado para trabajar siempre con 400x300 o 320x200. En próximas subidas pondré modos de video específicos.
Aún me faltan teclas por remapear

Y ahi queda todo el código para que cualquiera pueda seguir la línea y mejorar. No requiere ni psram ni doble núcleo.

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 » 03 Dic 2020 21:41

Genial, deseando probarla, a ver si mañana saco un hueco para sacar el amstrad-enchufe..
Imagen

ea4gge
Mensajes: 36
Registrado: 30 Nov 2020 01:16
Agradecido : 14 veces
Agradecimiento recibido: 6 veces

Re: Emulación bajo ESP32

Mensajepor ea4gge » 04 Dic 2020 09:55

Buenas!!!

Interesante el hilo. Yo tengo montado con teensy 4.1 un Amiga desde este verano:

https://github.com/Jean-MarcHarvengt/MCUME

El ESP32 lo tenía dejado de lado pero menuda pintaza tiene. Gran trabajo!!!

Alberto///EA4GGE

ackerman
Mensajes: 162
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 16 veces
Agradecimiento recibido: 100 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 04 Dic 2020 12:21

Muchas gracias.

Alki escribió:Genial, deseando probarla, a ver si mañana saco un hueco para sacar el amstrad-enchufe..
Imagen

Te queda genial en la caja. -thumbup Donde la pillaste?
Ya dejé tool para convertir dsk's a .h de manera cómoda, y probar lo que se quiera. Los dsk's solo tira 42 tracks y 11 sectores. Es de andar por casa, así que cualquier cosa rara, fijo que falla. -grin
Yo hice el emulata pensando en mi, así que metí lo que necesito (RAM,velocidad y v1.2).Como está disponible el código, pues, cada uno puede ir añadiéndo lo que quiera.
Se puede uno entretener con las opciones del gbConfig.h.
Para activar el modo 128K se tiene que descomentar use_lib_128k . De esta forma, se incluye en la compilación la ROM del 6128 y se usa 128 KB de RAM. Si no se activa, sólo se puede acceder al 464 y 664. Así ahorramos recursos.
La demo de Batman forever y el Pinball Dreams funciona en modo 6128, pero no con la versión que he dejado publicada. Hay que modificar cosas en el código, que no queda cómodo para dejarlo fácil al usuario.
Cualquier duda, sin problema, la voy resolviendo por aquí, si se. -grin

ea4gge escribió:Buenas!!!
Interesante el hilo. Yo tengo montado con teensy 4.1 un Amiga desde este verano:
https://github.com/Jean-MarcHarvengt/MCUME
El ESP32 lo tenía dejado de lado pero menuda pintaza tiene. Gran trabajo!!!

El teensy 4.1 es una bestia parda, esos 600 Mhz dan vidilla, y en varios foros ya la han overclockeado a 700 Mhz sin problema. Tengo ganas de hecharle mano para otras cosas que tengo en mente. Aunque antes tengo que esperar a que me llegue la placa TTGO v1.4 y probar el doble núcleo con los 8 MB de RAM.
Estoy convencido que cada vez van a salir más soluciones de este estilo para la emulación, sobre todo porque son muy económicas y prácticas. Otra cosa, es la precisión y las sensaciones que transmita, pero en económico, es imbatible.
Tu nick te delata. -thumbup Hay más radiopitas por el foro. Saludos, mi QRA es ea1hlx. -drinks -drinks

ea4gge
Mensajes: 36
Registrado: 30 Nov 2020 01:16
Agradecido : 14 veces
Agradecimiento recibido: 6 veces

Re: Emulación bajo ESP32

Mensajepor ea4gge » 04 Dic 2020 13:25

ackerman escribió:Muchas gracias.

Alki escribió:Genial, deseando probarla, a ver si mañana saco un hueco para sacar el amstrad-enchufe..
Imagen

Te queda genial en la caja. -thumbup Donde la pillaste?
Ya dejé tool para convertir dsk's a .h de manera cómoda, y probar lo que se quiera. Los dsk's solo tira 44 tracks y 11 sectores. Es de andar por casa, así que cualquier cosa rara, fijo que falla. -grin
Ýo hice el emulata pensando en mi, así que metí lo que necesito (RAM,velocidad y v1.2).Como está disponible el código, pues, cada uno puede ir añadiéndo lo que quiera.
Se puede uno entretener con las opciones del gbConfig.h.
Para activar el modo 128K se tiene que descomentar use_lib_128k . De esta forma, se incluye en la compilación la ROM del 6128 y se usa 128 KB de RAM. Si no se activa, sólo se puede acceder al 464 y 664. Así ahorramos recursos.
La demo de Batman forever y el Pinball Dreams funciona en modo 6128, pero no con la versión que he dejado publicada. Hay que modificar cosas en el código, que no queda cómodo para dejarlo fácil al usuario.
Cualquier duda, sin problema, la voy resolviendo por aquí, si se. -grin

ea4gge escribió:Buenas!!!
Interesante el hilo. Yo tengo montado con teensy 4.1 un Amiga desde este verano:
https://github.com/Jean-MarcHarvengt/MCUME
El ESP32 lo tenía dejado de lado pero menuda pintaza tiene. Gran trabajo!!!

El teensy 4.1 es una bestia parda, esos 600 Mhz dan vidilla, y en varios foros ya la han overclockeado a 700 Mhz sin problema. Tengo ganas de hecharle mano para otras cosas que tengo en mente. Aunque antes tengo que esperar a que me llegue la placa TTGO v1.4 y probar el doble núcleo con los 8 MB de RAM.
Estoy convencido que cada vez van a salir más soluciones de este estilo para la emulación, sobre todo porque son muy económicas y prácticas. Otra cosa, es la precisión y las sensaciones que transmita, pero en económico, es imbatible.
Tu nick te delata. -thumbup Hay más radiopitas por el foro. Saludos, mi QRA es ea1hlx. -drinks -drinks




Oooole, ea4hlx!!! nos oímos entonces, jejeje. En cuanto a lo del teensy... Si, me puse con el precisamente por eso, es una mala bestia. Mi idea es hacerme un Amiga portatil con el.

Actualmente ese proyecto lo tienen muy evolucionado, ya sacan VGA, tiene teclado por USB, la SD...

Llevo sin tocarlo un par de meses (no me da la vida -grin ) pero visto como va el tema me pongo de nuevo con ello.

Pillé dos integrados de 8MB de RAM, aunque solo iba a usar uno. Lo bueno del 4.1 es que no necesitas placa adicional, va soldado diréctamente en la placa, otro de los motivos por los que me decidí por este Teensy.

Ahora, visto este hilo me pongo a cacharrear con el ESP32. Otra cosa no se, pero en precio no tiene rival, jejeje

Alberto///EA4GGE

dragonet80
Mensajes: 432
Registrado: 28 Nov 2017 12:36
Agradecido : 214 veces
Agradecimiento recibido: 163 veces

Re: Emulación bajo ESP32

Mensajepor dragonet80 » 04 Dic 2020 17:37

ackerman escribió:El teensy 4.1 es una bestia parda, esos 600 Mhz dan vidilla, y en varios foros ya la han overclockeado a 700 Mhz sin problema.

Y hasta 1 GHz -shock
https://twitter.com/whitequark/status/1266056731714519040?s=20
Las Teensy están muy bien. La última que usé fué la 3.2, todavía no me ha hecho falta mas potencia, pero no me importaría probar la 4.1.

firepower
Mensajes: 18
Registrado: 28 Nov 2020 13:49
Ubicación: Vietnam
Agradecido : 8 veces
Agradecimiento recibido: 15 veces

Re: Emulación bajo ESP32

Mensajepor firepower » 05 Dic 2020 08:13

3D Printed Case for VGA32 V1.4 edited to allowing full access to all ports.
needs 4 x M3 screws

Imagen

VGA32-V14.7z
(28.07 KiB) Descargado 7 veces


VGA32 V1.4 Case
Adjuntos
ttgo_vga.png
(24.36 KiB) No descargado aún

ackerman
Mensajes: 162
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 16 veces
Agradecimiento recibido: 100 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 05 Dic 2020 13:54

firepower escribió:3D Printed Case for VGA32 V1.4 edited to allowing full access to all ports.
needs 4 x M3 screws
VGA32-V14.7z


Thank you very much for sharing the STLs. -thumbup It looks great, too bad you don't have a 3D printer. -banghead

Spanish:
Muchas gracias por compartir los STL. -thumbup Queda muy bien, lástima que no tenga impresora 3D. -banghead

firepower
Mensajes: 18
Registrado: 28 Nov 2020 13:49
Ubicación: Vietnam
Agradecido : 8 veces
Agradecimiento recibido: 15 veces

Re: Emulación bajo ESP32

Mensajepor firepower » 05 Dic 2020 20:23

I do have a 3D Printer -thumbup

ackerman
Mensajes: 162
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 16 veces
Agradecimiento recibido: 100 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 07 Dic 2020 20:17

Ya he dejado una tool de andar por casa también para el ZX-Spectrum que he modificado (sin psram) para poder generar toda la Flash con los archivos .tape, .scr, roms, y sna:

https://github.com/rpsubc8/ESP32TinyZXSpectrum/tree/main/tools/data2h

Está todo explicado aqui:

https://github.com/rpsubc8/ESP32TinyZXSpectrum/blob/main/readmeSpanish.md

Ahora ya no hay que convertir cada archivo a .h, sino que metemos los archivos en input y en el output nos generará todas las estructuras .h para meter en el proyecto, compilar y subir a la placa. Y de esta forma, ya podemos tener nuestro propio emulador con nuestras propios juegos.
Los nombres 0.rom a 3.rom siguen la misma nomenclatura que el emulador ZX-ESPectrum. A lo largo de la semana subiré más modificaciones, como la corrección de sonido.


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