Emulación bajo ESP32

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

Emulación bajo ESP32

Mensajepor ackerman » 28 Ago 2020 14:40

Ordenación para disponer de una hemeroteca:
  • Objetivo: Portar el mayor número de emuladores a la placa TTGO VGA32 con ESP32 (debe funcionar si o si en dicha placa) con salida VGA. El nivel de emulación no tiene que ser precisa, tan sólo conseguir emular algo, con un precio muy bajo de la placa. Además se consigue quitar el mono de cuando se arrancaban los microordenadores de 8 bits, que eran inmediatos al darles al interruptor.
  • Licencias: Evitar todas las licencias extrañas, que no son ni libres ni similares.
  • Comunidad: Lograr una unidad en donde cualquiera pueda acceder a la información y desarrollar fácilmente sin trabas ni perder el tiempo. Tanto el usuario final como el desarrollador sólo tendría que acceder aquí (recopilación de información).
  • Problemas: Se requiere teclado adaptado de usb a PS/2. Los ratones PS/2 originales dan problemas al leer coordenadas. Los teclados AT convertidos a PS/2 también dan problemas de mapeo (igual que en un PC).
    Se dispone de 520 KB de RAM, pero al ser compartida con todos los módulos, se dispone sólo de 300 KB y de manera especial.
    La placa oficialmente no dispone de psram.Determinados emuladores requieren de PSRAM.

Lista de tiendas que parece que tienen los chips con PSRAM (testeado por usuarios):
Yo no tengo ninguna placa con PSRAM, así que esta información es por reportes de usuarios.


Se quedan fuera muchos emuladores (mientras no tengan licencias libres), y a fecha 2020/11/12 nos quedan:
  • Funcionando:
    • Emulador VIC20: https://github.com/fdivitto/FabGL Permite cargar los PRG desde Flash o copiar de una URL con conexión WIFI a la Flash.
    • Emulador ALTAIR 8800: https://github.com/fdivitto/FabGL
    • ZX-ESPectrum: En el ZX-ESPectrum.ino figura un comentario de licencia, pero no tiene importancia (se olvidaron de quitar), es 100% libre (confirmado por rampa). https://github.com/rampa069/ZX-ESPectrum Funciona Spectrum 16/48 sin PSRAM, y Spectrum 128/+2/+3 con PSRAM. Permite snapshots SNA, ROMS, leer y grabar tapes, y tiene un OSD. Se necesita activar particion Huge App 4 MB , quitar la opción de PSRAM a la hora de compilar, así como usar la macro FABGL y un sólo núcleo. Se usan los pines 1,26 y 27 para sonido y conexión serie, en lugar de usar el pin 25 para sonido. Por tanto se esta usando los pines del conector de ratón, es decir, se tiene que hacer un adaptador, para luego conectar un arduino.
    • ZX-ESPectrum Wiimote:Fork de David Crespo basado en el ZX-ESPectrum de rampa. En el hardware.h ya estan definidos el pinout correcto para la placa TTGO-VGA32 (sonido 25). Tiene soporte para el mando de la WII y permite cargar SNA desde el OSD.https://github.com/dcrespo3d/ZX-ESPectrum-Wiimote/tree/lilygo-ttgo-vga32
    • Tiny ZX-ESPectrum sin PSRAM: He terminado una versión de test https://github.com/rpsubc8/ESP32TinyZXSpectrum Soporta .SCR, carga de BASIC y screens desde .TAP, soporte de ratón kempston, emulación sonido AY8912, salida de pulsos de cinta por altavoz, y se ejecuta en ESP32 sin PSRAM, permitiendo los modos de 48K y 128K.
    • Gameboy clásica: He dejado una versión funcional con fabgl y vga32, con sonido.https://github.com/rpsubc8/esp32gameboy. Las roms se tienen que colocar en código, compilar y subir. He dejado 2 roms homebrew Retroid y Last Crown. Si se es usuario, y se quiere sólo subir los .hex sin falta de compilar ni usar librerias https://github.com/rpsubc8/esp32gameboy/raw/master/arduino/hex/hex.zip Creada la tool para meter hasta 10 roms en el proyecto. https://github.com/rpsubc8/esp32gameboy/tree/master/arduino/tools
  • En Proceso de port:
    • Amstrad CPC 464: Ya arranca un 464.
    • Tiny ZX-ESPectrum sin PSRAM: Para usar todo el modo 128K sin psram, sólo con SRAM. Versión reducida para consumir lo mínimo y poder ser usada con micros ESP32 que no tienen psram.
    • Atari 2600: Ya tengo la CPU operativa.
    • Tetris SpaceX: En realidad no es un emulador, es un port. https://github.com/bitluni/TetrisSpaceX Usa salida CVBS y mando NES. Hay que convertir a VGA y teclado. Ya he conseguido que salga a VGA en escala grises (falta convertir de 54 supuestos grises a RGB222 paleta 64 colores), y ya funciona el teclado. Ya se puede jugar, falta ajustar un par de cosas y convertir todos los gráficos a 64 colores. Hice un port intermedio para corregir fallos más rápidamente en Windows con SDL y devcpp.https://www.youtube.com/watch?v=BNp6kGHfFJE&ab_channel=ackerman
    • Arcade Games:Es también un port. El autor Rob Cai, creó un Tetris, Snake, Breakout y Bomber para un ESP32 genérico con FABGL (8 colores), mando de ATARI y sin sonido.https://www.instructables.com/ESP32-VGA-Arcade-Games-and-Joystick/ Lo he convertido al pinout de la salida VGA (8 colores) de TTGO VGA32, sustituido el joystick por el teclado y he añadido sonido (no lo tenía). He modificado varias cosas, pero el diseño original del autor está mal implementado, dado que hace uso del propio buffer interno de la VGA para leer estados de juego. Al ser asíncrono, da problemas al realizar varios cálculos como rebotes en el breakout y en la eliminación de una línea en el Tetris. Así que aunque lo tengo al 100% portado y funcionando, voy a realizar una reimplementación para que funcione bien.
    • Digger: Es también un port. Es un clásico, que jugabamos en el PC1512. https://github.com/sobomax/digger Estoy simplificando la versión de Andrew Jenner (SDL+OpenGL) a una SDL simple, para luego convertirlo al TTGO VGA32.

  • No funcionan (Hay que portar):

Manos a la obra
Mediante este hilo, cualquiera puede ponerse a colaborar o a recoger la información que necesita y ponerse por su cuenta a realizar cosas.
El ESP32 se creó para matar moscas a cañonazos, pensado sobre todo en la reducción de la curva de aprendizaje, es decir, para que los desarrolladores de PC pudieran usarlo fácilmente. Así, se puede acceder a una conexión WIFI con un par de instrucciones. Sin embargo, si queremos sacar todo el provecho, es decir, hilar fino, entonces se hace más cuesta arriba.
Cosas a destacar para desarrollar para esta placa:
  • Memoria: Los 520 KB son compartidos con todos los módulos y el Sistema Operativo Free RTOS. Si nos quedamos sin memoria, el ESP32 provoca una excepción y se resetea. Si se usa un malloc, y no hay memoria, automáticamente se reinicia. El mejor truco es hacer como cuando se desarrollaban los juegos en los 90's, es decir, se reserva toda la memoria al principio y luego la vamos usando. Existe fragmentación de memoria, así que no se puede coger toda la memoria que queramos, ya que por límite de tamaño (fragmentos), aunque se disponga de espacio libre, no se dispone de dicho tamaño. Por tanto, lo ideal, es usar fragmentos reducidos (no más de 16 KB). Si no se dispone de un fragmento libre, resetea (watchdog). Podemos quitar módulos (WIFI, serie, bluetooth), y cosas innecesarias para ahorrar memoria.
    Se dispone de memoria IRAM, es decir, memoria de código. Aunque el fabricante habla de 180 KB, suele ser de como mucho 96 KB y entra dentro de los 520 KB compartidos. Este tipo de RAM sería para variables locales y arrays de código. Si nos quedamos sin IRAM normalmente nos avisa el compilador, pero sino, se resetea el ESP32. Es la más rápida, ya que es cacheada.
  • Velocidad memoria: Esto es más viejo que el respirar, y ocurre en la mayoría de microcontroladores, pero paso a ordenar de más rápida a menos, la velocidad de las diferentes tipos de memoria en dicho microcontrolador:
    1. IRAM: 96 KB cacheados dentro de los 520 KB de SRAM.
    2. RAM: El resto de SRAM hasta 520 KB que no sean IRAM.
    3. PSRAM: módulo de RAM externa. Se puede añadir, pero de base la placa viene sin él.
    4. FLASH: 4 MB alineados a 32 bits (4 bytes), es decir, que si metemos 1 byte, si no compactamos, perderemos 3 bytes. Para lecturas de 1 sólo byte, deberemos desempaquetar (más lento). Los datos (arrays) se colocan aquí con la orden PROGMEM. El código siempre va en FLASH.
    5. EEPROM: 512 bytes
    Para que nos hagamos una idea, si leemos 16 KB de un buffer (array) en FLASH, tardaremos del orden de 800 microsegundos. En cambio, si lo hacemos de RAM, en función de que lo hagamos en IRAM o no, nos moveremos entre 1 y 4 microsegundos. Así que se tiene que tener una visión global de lo que queremos hacer, para luego en que tipo de memoria queremos colocar los datos, y pensar si queremos ahorrar velocidad o memoria.
  • DMA: Existe DMA de 32 bits, pero requiere declaración de 32 bits y una forma específica de acceder, en concreto, para lograr accesos de microsegundos, conseguir cachear el acceso, con peticiones máximas de 4 KB.
  • Núcleos: Se pueden crear tareas, pero sólo hay un núcleo.
  • Módulos: El uso de módulos y librerias no sólo trae como consecuencia el consumo de RAM, sino también de FLASH, en concreto si usamos WIFI y peticiones GET HTTP, se consume 70 KB de RAM y 400 KB de FLASH. Si tenemos menos de 70 KB de RAM libre, el ESP32 se reseteará. Podemos usar librerias más pequeñas, pero no son estándar y dan problemas.
  • Portar emuladores: Hay que descargar el emulador, adaptarlo a bajos recursos como ESP32, hacer bypass para VGA32 y bypass para probar en PC y ver en diferido. Si se usa SDL o similar, es más fácil. Si la resolución no es muy alta, se puede sacar salida a modo texto.
  • Documentación Gameboy:
    https://problemkaputt.de/pandocs.htm
    https://diegojuod.home.blog/2019/08/17/introduccion-emulador-de-gb



Tema licencias
Las licencias tipo GNU datan de 1983. No debe perderse ni un microsegundo de tiempo en entender el alcance legal de otros proyectos. Por tanto, si quieren ser incluidos, es de obligado cumplimiento, el cambio de licencia.


Mensaje Original 2020/08/28:
Creo nuevo tema, para pedir ayuda y reunir conocimiento.
El año pasado me pillé la placa ttgo vga32,que contiene un microcontrolador TTGO micro32 compatible ESP32:
Imagen
Se puede programar con:
https://github.com/fdivitto/FabGL

Se dispone de un emulador de VIC20, un ALTAIR, y se puede programar nativamente.
Pero como siempre se quiere más y más y más, pues queria tener emuladores. He probado el del Spectrum:
https://github.com/rampa069/ZX-ESPectrum

Y como no he encontrado más, me puse a pillar código de otros emuladores portados a ESP32, pero no a esta placa, en concreto, que tienen salida a TV o a GLCD.
Tenemos de gameboy:
https://github.com/lualiliu/esp32-gameboy
https://github.com/Ryuzaki-MrL/Espeon
ATARI, NES y SMS:
https://github.com/rossumur/esp_8_bit
En estos he metido mano al código, quitando toda la parte de salida de video y mandos, adaptándolo a la salida VGA (bypass) y entrada de teclado. He tenido que meter mano a la temporización para que más o menos vaya.
Dejo captura de emulador de gameboy con el juego Super Mario Land funcionando:
Imagen
Imagen

Dado que mis conocimientos en desarrollo de emuladores son básicos, era interesante, saber si alguien que esté más puesto en emulación está portando más emuladores para ESP32 o si tiene en mente portar, y así me ahorro el seguir con esto, -grin , que aunque me divierte, dudo que pueda quedar algo decente.

rampa
Mensajes: 19
Registrado: 23 Ago 2019 21:24
Agradecido : 2 veces
Agradecimiento recibido: 21 veces

Re: Emulación bajo ESP32

Mensajepor rampa » 28 Ago 2020 23:58

Hola! hace un par de años, Jorge (queru) y yo escribimos un emulador para spectrum que puedes hacerlo correr en esa misma placa

https://github.com/rampa069/ZX-ESPectrum

echale un vistazo al branch 128k

https://github.com/rampa069/ZX-ESPectrum/blob/128k/include/def/hardware.h

En ese fichero se definen los pines, que creo que por defecto, en ese branch estan asignados a los que tiene esa placa (macro FABGL) el speaker y la salida serial para el emulador de AY (que corre en un atmega8 aparte) salen del conector del raton.. :-)

Ya me contaras si te sirve.

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 29 Ago 2020 13:12

Muchas gracias por la información. Si, he probado vuestro emulador de spectrum, estoy profanando vuestro código para ver como furrula por dentro. -grin
¿Que dificultades habéis encontrado?¿Tenéis en mente hacer más o meteros en otros emuladores?¿Que consejos dais?
La verdad que pasa como con Arduino, hay muchas placas, y empieza a parecerse a una torre de Babel, cada uno hace diseños para una u otra placa. Pero en la diversidad está el gusto, igual que pasa con Linux, existen muchas configuraciones. Yo tengo la versión 1.2, una versión superior al de la foto. Ahora van por la 1.4 (incluye lector tarjetas SD).

Yo sigo con el emulata del Gameboy, pero como digo al principio, como mis conocimientos en emulatas son bajos, pues no se si estoy haciendo todo bien, sólo hago que tire, modifico código y tiro millas, porque por ejemplo, hay cosas que el código original no estaban implementadas y he tenido que meterlas:
Imagen
Aqui dejo un video de demostración de como va.

https://www.youtube.com/watch?v=AbctXNDx3CU

Por ahora meto salida a VGA con una especie de framebuffer en FABGL. Tiro de fabgl::VGAController::writeScreen, que es lo más parecido, porque la libreria FABGL es muy bonita, pero no es nada rápida. Seguramente, termine tirando de la libreria VGA32 a pelo, pero hasta que no tenga más cosas acabadas, no creo que me meta a ello.

Avatar de Usuario
kikems
Mensajes: 4139
Registrado: 30 May 2013 19:23
Agradecido : 1458 veces
Agradecimiento recibido: 1867 veces

Re: Emulación bajo ESP32

Mensajepor kikems » 29 Ago 2020 13:19

Me pierdo un poco, eso del ESP32 no es lo que se usa para el wifi por serial?

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 29 Ago 2020 13:26

kikems escribió:Me pierdo un poco, eso del ESP32 no es lo que se usa para el wifi por serial?

Exacto, el mismo. Se desaprovecha mucho su potencial. -rofl -rofl
En realidad, ya con el hermano pequeño (ESP8266), ya se podían hacer grandes cosas.

Añadiendo un puerto para teclado, ratón, y DAC de video VGA, o bien pillando ya esta placa, se puede usar como un microordenador.

rampa
Mensajes: 19
Registrado: 23 Ago 2019 21:24
Agradecido : 2 veces
Agradecimiento recibido: 21 veces

Re: Emulación bajo ESP32

Mensajepor rampa » 29 Ago 2020 21:42

ackerman escribió:
kikems escribió:Me pierdo un poco, eso del ESP32 no es lo que se usa para el wifi por serial?

Exacto, el mismo. Se desaprovecha mucho su potencial. -rofl -rofl
En realidad, ya con el hermano pequeño (ESP8266), ya se podían hacer grandes cosas.

Añadiendo un puerto para teclado, ratón, y DAC de video VGA, o bien pillando ya esta placa, se puede usar como un microordenador.

con el esp8266 tengo un emulador de CPM fantastico, con terminal serial y 12 disquettes montados.... -grin

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 30 Ago 2020 16:35

rampa escribió:con el esp8266 tengo un emulador de CPM fantastico, con terminal serial y 12 disquettes montados.... -grin

Suena interesante. ¿Lo tienes disponible para descargar y probar? ¿Pusiste salida de video?
¿Es este?
https://github.com/rampa069/RunCPM

La verdad que el ESP8266 es una pasada. Yo nada más que dejó programar en C, que al principio sólo dejaba en LUA, y antes de que hicieran placas de desarrollo, pillé varios para probar.

Avatar de Usuario
zx81
Mensajes: 337
Registrado: 23 Feb 2013 21:31
Agradecido : 26 veces
Agradecimiento recibido: 91 veces

Re: Emulación bajo ESP32

Mensajepor zx81 » 30 Ago 2020 17:25

Llevo dos días intentando encontrar al desarrollador que ha escrito un montón de emuladores para los esp32 y las placas Teensy, pero no hay manera de que dé con él, a ver si alguien tiene más suerte que yo, pero seguiré intentándolo.

P.D.: Podría ser este: https://github.com/Jean-MarcHarvengt
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: 127
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecimiento recibido: 75 veces

Re: Emulación bajo ESP32

Mensajepor ackerman » 30 Ago 2020 19:48

zx81 escribió:P.D.: Podría ser este: https://github.com/Jean-MarcHarvengt

Este repositorio que pasas, como dirían los millenials, es pura crema. -thumbup
Impresionante.

El Multi CompUter Machine Emulator tiene muy buena pinta. Parece que habría que readaptar código y sobre todo bypass a video VGA.
¿Como lo veis, os entran ganas de meteros en faena? -grin

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 03 Sep 2020 17:52

Imagen

https://www.youtube.com/watch?v=_zh5UDjzbNI

He realizado varias modificaciones para aumentar la velocidad y para reducir consumo de RAM (me quedan 160 KB libres).
La carga de ROMS por WIFI, lo abandono, porque para que funcione, tan sólo cargaría roms de 16 KB's. Es una pena, porque lo había dejado funcionando, pero es mejor disponer de esa RAM y memoria FLASH para meter más ROMS y de más tamaño.
He creado un modo rápido de color rojo para máxima velocidad.
Ahora ya es jugable, pero si por ejemplo alguien como spinecard lo usara, se arrancaría los ojos. -grin
Tengo código para fabgl y para VGA32 de ESPlib, pero por ahora se va a quedar fabgl sin interface (consumo de RAM).
Se permite reiniciar el emulador, así como el ESP32 (tarda sólo 2 segundos en arrancar).
Estoy realizando unas herramientas para facilitar la labor de pasar las ROMS a código empaquetado, para que cualquier usuario pueda meter las ROMS que quiera, le da a compilar y envia sin tocar nada (modo easy).
Cuando sea más estable y bonito el código, lo subiré a un repositorio.

Avatar de Usuario
masteries
Mensajes: 417
Registrado: 30 May 2018 11:33
Ubicación: Espaciando
Agradecido : 38 veces
Agradecimiento recibido: 161 veces

Re: Emulación bajo ESP32

Mensajepor masteries » 03 Sep 2020 20:59

ackerman escribió:Ordenación para disponer de una hemeroteca:
  • Objetivo: Portar el mayor número de emuladores a la placa TTGO VGA32 con ESP32 (debe funcionar si o si en dicha placa) con salida VGA. El nivel de emulación no tiene que ser precisa, tan sólo conseguir emular algo, con un precio muy bajo de la placa. Además se consigue quitar el mono de cuando se arrancaban los microordenadores de 8 bits, que eran inmediatos al darles al interruptor.
  • Licencias: Evitar todas las licencias extrañas, que no son ni libres ni similares.
  • Comunidad: Lograr una unidad en donde cualquiera pueda acceder a la información y desarrollar fácilmente sin trabas ni perder el tiempo.
  • Problemas: Se requiere teclado adaptado a usb. Los ratones PS/2 originales dan problemas al leer coordenadas. Los teclados AT convertidos a PS/2 también dan problemas de mapeo (igual que en un PC).
    Se dispone de 512 KB de RAM, pero al ser compartida con todos los módulos, se dispone sólo de 300 KB y de manera especial.


Se quedan fuera muchos emuladores (mientras no tengan licencias libres), y a fecha 2020/09/02 nos quedan:
  • Funcionando:
  • En Proceso de port:
    • Gameboy clásica: Sin sonido. Video y teclado OK. Es más o menos jugable, no es 50 fps, pero da 20 fps. Permite desde un interface resetear, acelerar y modos de video rápidos. Abandono la carga de ROMS por WIFI, dado que sólo me deja de 16 KB, al ser inestable por memoria libre. Las ROMS se cargan desde Flash.

  • No funcionan (Hay que portar):



Mensaje Original 2020/08/28:
Creo nuevo tema, para pedir ayuda y reunir conocimiento.
El año pasado me pillé la placa ttgo vga32,que contiene un microcontrolador TTGO micro32 compatible ESP32:
Imagen
Se puede programar con:
https://github.com/fdivitto/FabGL

Se dispone de un emulador de VIC20, un ALTAIR, y se puede programar nativamente.
Pero como siempre se quiere más y más y más, pues queria tener emuladores. He probado el del Spectrum:
https://github.com/rampa069/ZX-ESPectrum

Y como no he encontrado más, me puse a pillar código de otros emuladores portados a ESP32, pero no a esta placa, en concreto, que tienen salida a TV o a GLCD.
Tenemos de gameboy:
https://github.com/lualiliu/esp32-gameboy
https://github.com/Ryuzaki-MrL/Espeon
ATARI, NES y SMS:
https://github.com/rossumur/esp_8_bit
En estos he metido mano al código, quitando toda la parte de salida de video y mandos, adaptándolo a la salida VGA (bypass) y entrada de teclado. He tenido que meter mano a la temporización para que más o menos vaya.
Dejo captura de emulador de gameboy con el juego Super Mario Land funcionando:
Imagen
Imagen

Dado que mis conocimientos en desarrollo de emuladores son básicos, era interesante, saber si alguien que esté más puesto en emulación está portando más emuladores para ESP32 o si tiene en mente portar, y así me ahorro el seguir con esto, -grin , que aunque me divierte, dudo que pueda quedar algo decente.



Uffff... este micro con entrada de teclado y ratón y salida VGA, e interfaz Wifi es un sueño hecho realidad.
Esto permite implementar interfaces de usuario en sistemas de control crítico para sectores donde una Raspberry no está permitida o sería una locura (nadie pondría una Raspi para controlar dispositivos que pueden dañar a una persona, imagina que el Linux se cuelga, o no responde en Tiempo Real a unos sensores...).

Y para montarte un ordenador o una consola, pues con la CPU de 32 bits a 160 o 240 MHz, más los 4 MB de ROM y los 520 KB de RAM; pues te montas una especie de Commodore Amiga / Atari STE en un momentín, pero a color de 8 bits si te parece, o con soporte para 16 paletas de 16 colores y cosas así.
La maestría interior...

Se venden trapdoor de 512 KB para Amiga 500: viewtopic.php?f=71&t=200034052

Se venden trapdoor de 1 MB para Amiga 500 Plus: viewtopic.php?f=71&t=200034115

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 06 Sep 2020 16:34

masteries escribió:Uffff... este micro con entrada de teclado y ratón y salida VGA, e interfaz Wifi es un sueño hecho realidad.

Eres de los mios. A mi me pasó igual, nada más que vi la placa, me la pillé.
masteries escribió:nadie pondría una Raspi para controlar dispositivos que pueden dañar a una persona

Yo siempre he opinado y opino lo mismo que tu. Sin embargo, a lo largo de la vida y donde he currado, no sólo se han usado equipos raros para control de automatismos, sino, incluso PC's conectados a profibus. Hasta había un sistema de mensajería basado en inserciones en Base de Datos. -shock -shock Está claro, que donde manda patrón no manda marinero, y si hay montado un sistema absurdo hasta en COBOL, pues, toca apechugar y tirar millas.
masteries escribió:más los 4 MB de ROM y los 520 KB de RAM; pues te montas una especie de Commodore Amiga / Atari STE en un momentín

Molaría lo de Amiga y Atari, pero puede que sea algo complicado, al menos con respuesta en tiempo medianamente real, pero es todo ponerse. Los 520 KB es un poco bombo y platillo del fabricante. No se puede usar los 520 KB, es como querer usar todo la memoria RAM del PC con el Sistema Operativo funcionando. Es más bien, 300 KB fijo, y si queremos hasta 360 KB desactivando módulos. Tenemos que añadir también la fragmentación de memoria libre.

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 07 Sep 2020 21:13

Imagen
He cambiado la forma de volcar a pantalla y he mejorado la velocidad. Ya permito cargar ROMS de más de 64 KB. Aún queda mucho para mejorar la velocidad, pero se puede ver las mejoras:

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

He probado con:
  • BATMAN (128 KB)
  • Lion King (512 KB)
  • Contra (128 KB)
  • Bomberman (256 KB)
  • Donkey Kong (512 KB)
  • Hoshi Kirby (256 KB)
  • Metroid (256 KB)
  • Mortal Kombat 3 (512 KB)

El Mortal, Donkey Kong y Metroid no van muy bien.

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 10 Sep 2020 14:24

Me he calentado -grin , y como tira bastante bien la parte gráfica, aunque el original no tenía implementado el sonido para la gameboy, me he puesto a programarlo. Estoy haciendo un motor de sonido dirty, por ahora sólo tengo 2 canales, me faltan los otros 2, pero para un apaño va a servir.

Desde aquí animo a todo el mundo, que se meta a esta plataforma, que es muy divertido, y fijo que pueden salir cosas muy interesantes.

Imagen
También tira la ROM homebrew de 2MB del Super Mario 3.
http://gameboyworld.weebly.com/gameboy-game-reviews/super-mario-special-3-gbc-bootleg

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

Re: Emulación bajo ESP32

Mensajepor ackerman » 12 Sep 2020 18:39

Imagen

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

No es lo definitivo, pero ya está, la gameboy del ESP32 ya no está muda. Como dije, es una chapucilla rápida de andar por casa, sólo 3 canales de los 4 posibles. No es el modo definitivo, porque en el PC estoy haciendo varios alternativos diferentes al ESP32.

A ver como dejo el código elegante, para poder subir a github (no paro de rehacer cosas para muchas veces, dejarlo como estaba), y dejarlo con alguna rom homebrew sin licencia problemática.
He dejado la opción de compilar con FABGL o bien con VGA32 y libreria de teclado. En velocidad, van igual de rápidas, pero se ahorra un poco de memoria RAM y FLASH si no se usa FABGL. Aunque para emular sigue siendo lento.
Intentaré cerrarlo rápido aunque no quede estable, para asi pasar a ATARI (aunque me da mucho asquito), NES y megadrive.

Avatar de Usuario
ron
Mensajes: 19223
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2193 veces
Agradecimiento recibido: 1987 veces

Re: Emulación bajo ESP32

Mensajepor ron » 12 Sep 2020 19:01

Gracias Jaime por documentar todo esto.


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