Ejecute sus juegos favoritos de 8 bits en ESP32

Aquí, en la sede de La-Tecnologia, no somos ajenos al juego clásico. Las versiones más recientes de consolas antiguas y gabinetes de juegos a menudo son un excelente alimento para que los hacks inteligentes incorporen tantas funciones como sea posible en pequeños microcontroladores modernos. Nosotros abordábamos [rossumur]'hackeos antes, pero el bit ESP_8 es un hito en amplia capacidad. Esta vez se superó a sí mismo.

El bit ESP-8 no servirá de mucho. Puede copiar tres consolas populares, completas con menús de selección de ROM (con bloques de menú). No se preocupe por construir un controlador, simplemente conecte cualquier teclado Bluetooth Classic o WiiMote antiguo (compatible con HID) que tenga a mano. O si eso no funciona, una variedad de dispositivos IR, desde joysticks del Atari Flashback 4 hasta Apple TV, son compatibles. Conecte sonido analógico y video compuesto y el dispositivo estará listo para funcionar.

El sistema proporciona esta impresionante capacidad con un mínimo absoluto de componentes. A menudo, un esquema es demasiado complejo para insertar una publicación corta, pero reproduciremos este aquí para darte una idea de lo que estamos hablando. Regrese cuando actualice su Arte Electrónico y tenga una comprensión completa del funcionamiento del hardware. Nunca dejamos de sorprendernos por la cantidad de capacidad disponible en los componentes modernos de "hobby". Con una lista de materiales tan corta, esto se puede combinar con ESP-32-cualquier cosa.

Un truco más es digno de mención; la forma inteligente [rossumur] obtiene un video compuesto NTSC a todo color de un microcontrolador muy ocupado. Se dan cuenta de que NTSC puede ser un lujo y requiere un reloj de referencia rápido extremadamente estable como base. [rossumur] descubrió que el ESP-32 incluye un PLL diseñado para el trabajo de sonda (el "APLL"), que soporta convenientemente componentes fraccionarios, lo que le permite cortarlo a una pulgada de la frecuencia deseada. La descripción completa se incluye en la página de GitHub del proyecto e incluye un trasfondo detallado de varios esfuerzos para obtener un video NTSC en color (incluidos los nombres de algunos piratas informáticos que quizás reconozca en estas páginas).

  • Syl20 dice:

    ¡Me alegro de verte de nuevo en el negocio Rossum!
    Siempre amé tus cosas con el AVR, ¡y ahora con el ESP32 esto se vuelve aún más impresionante!

    • Alex Rossie dice:

      ¡Sin duda revisará su catálogo posterior para ver si esto es algo para juzgar el Calibre que ha hecho antes!

  • nicolho dice:

    Algunos comentarios obligatorios sobre el "método", lo siento :): Ya que traté de ofrecer mi propio proyecto de "consola vieja en ESP" de bricolaje comparable una vez, puedo compartir completamente el enfoque "todo incluido" de [rossumur] y agradece sus explicaciones con un amplio conocimiento de obras afines. Esta es una combinación de emuladores de luz conocidos "actualizados" a ESP32 (algunos de ellos ya se eligieron por la misma razón con un PocketSprite y Go-Play pendientes de emulación retro con el mismo chip) y generación de video compuesto más fácil con PLL incorporado y DAC de alta velocidad. Además de eso, parece que Peter prestó especial atención a una buena aproximación de paleta para cada consola tanto en PAL como en NTSC, mientras que proporcionó una muy buena tecla "todo en uno", fácilmente compilable por cualquier jugador por un precio económico (aunque inalámbrico ) tablero. entre las imágenes podría ser el elemento más caro si aún no tiene uno).

    Probablemente, como otros, tenía * exactamente * el mismo proyecto en mente cuando salió el ESP32, pero como comprador minorista del primer día en septiembre de 2016, fue una gran tristeza descubrir que la versión inicial del chip tenía su generador de reloj PLL. lisiado (sdm0 y sdm1 se registran inoperativamente en la revisión 0), lo que evita que se configure con la precisión suficiente para obtener las frecuencias de puerto de color deseadas para PAL y NTSC ... así que, para eso, tenga cuidado con los viejos chips esp32 y placas de desarrollo de su cajón (incluso incluido el primer PICO -D4 de ... 2018 :(). Luego, la documentación y algunas bibliotecas específicas del dispositivo como Bluetooth estaban un poco incompletas, y el SDK de Arduino no era tan maduro ... parece que todo está llegando a los que esperan.

    De todos modos, era un poco temprano para el juego para mí como un aficionado sin experiencia, y para consolarme: D yo mismo regresé para ver qué puedo hacer con el ESP8266 no tan viejo y aún excelente, y finalmente obtuve un emulador Master System lleno, todavía "bitbanging" una señal de video de TV analógica con un formato de imagen aproximadamente correcto en RGB, que obviamente es mucho más fácil de obtener colores (y requiere un televisor con entrada SCART) pero generalmente es más agradable.
    Consistía en una placa NodeMCU overclockeada + interruptor de registro 74HC595 para alimentar un DAC de resistencia de 6 bits comparable al de la consola real, y también tenía un sonido PDM de amplio rango limpio y soporte para juguetes clásicos I2S baratos (y para algunos periféricos adicionales), que fueron el "punto culminante sorprendente" y mi principal motivación, bastante difíciles de agregar de manera efectiva de acuerdo con el resto, pero después de que tuve éxito y obtuve los resultados previstos, la diversión desapareció durante las pruebas y el pulido exhaustivo de la copia, el guis y la interfaz de Internet ... en preparación para la publicación pública, dejó solo el extenso trabajo necesario para una buena presentación y documentación).

    Podría contar los interesantes bits de te bitsnik más tarde, pero a pesar de las limitaciones inherentes de ESP8266, con una fracción de la memoria y periféricos algo toscos en comparación con su sucesor, encontrando formas de lidiar con ellos (como las diversas optimizaciones necesarias, o jugando con oscuros registros) resultó muy lento pero quizás mucho más instructivo e intelectualmente gratificante. Y en muchos sentidos, se sintió más cercano al hardware original en "espíritu", pero sin reclamar "el poder del ESP31" 🙂

    • TerryMatthews dice:

      Gracias por la info. ¡Esto más el trabajo de Rossum y el hecho de que tengo una configuración ESP32 es igual a un divertido proyecto de fin de semana! Mantente a salvo y sigue pirateando 🙂

    • RW versión 0.0.3 dice:

      Me gustaría leer sobre la implementación de video completa, suena bien para CGA EGA evolucionando a la implementación de VGA para copiar en computadora o usar el 8266 como procesador de video para otra CPU.

    • Jock Murphy dice:

      ¿"Juguetes clásicos I2S"? ¿Está apuntando a I2C?

      • RW versión 0.0.1 dice:

        Ahora nos falta un adaptador canbus para jugar a Mario Kart.

  • zoobab dice:

    Vi este video CH559 esta tarde:

    Me pregunto si con el ESP32S no habrá una pila USB que pueda usarse como dispositivo HID.

  • carlfugate dice:

    ESP32 es un pequeño MCU increíble. No creé el mío, sino que compré uno. Puede obtener ESP32 en el factor de forma de Gameboy https://www.hardkernel.com/shop/odroid-go/

  • nicolho dice:

    Gracias por tu amable aliento, Terry. ¡Y Jock, tienes razón, mi señora! Al igual que otros proyectos de bricolaje, el mío se centró en estos clones más baratos utilizando el protocolo I2C Wiimote (en sus formas particulares ...). Así que no lo confunda con I2S (usando DMA), que por supuesto es la piedra angular de la generación de señales de alta velocidad en esp8266, como lo demostró brillantemente el Sr. Lohr;) cuyo trabajo fue realmente inspirador.

    RW: nada lujoso con mi generación de video (muy simple con señales RGBS paralelas) pero esp8266 no lo convertiría en un buen candidato para una solución dedicada con selección de tiempo estándar, porque solo puede "elegir" una división entera del reloj de la CPU ( y prácticamente solo 2 ^ n divisor) para obtener el índice de píxeles deseado ...
    Allí, ESP32 puede hacer las cosas más fáciles y mejores con su PLL preciso y el bus I2S paralelo (por lo que ya no necesita un registro de desplazamiento externo), proporcionado oficialmente (ver documentación, no se ha "descubierto" nada al respecto, al contrario de lo que se dijo en el artículo anterior) para alimentar los DAC o LCD integrados de forma similar a VGA. Por lo tanto, ajustar la configuración de la función posterior para obtener tiempos exactos para bajas resoluciones no importa, y se informó anteriormente en Youtube y HaD.

  • Brendan Robert dice:

    Esto es asombroso. Tengo muchas ganas de superar mi proyecto prototipo portátil, pero este me da la esperanza de que eventualmente lo montaré. Enchufe desvergonzado: https://github.com/badvision/esp32_nesemu

    Los archivos stl y openscad están ahí y mi bifurcación mucho mejorada de la muestra expressif. Pude obtener una velocidad de fotogramas completa en Metroid y lograr que el soporte de sram funcionara para Zelda. También se corrigieron errores de sonido y se agregó compatibilidad con el botón turbo, compatibilidad completa con el controlador psx, compatibilidad con tarjetas SD y más.

    Espero ver más proyectos como este, ¡especialmente hacks de ntsc! Cosas terribles.

    -Brendan

    • Circos dice:

      ¿Le gustaría que los que trabajan con esta configuración la configuren en GitHub? ¡Tener un llavero de NES depende!

    • Circos dice:

      Soy un principiante total, ¡pero me encantaría ver esos cambios en la salida de componentes! Sería increíble ampliar lo que el ESP32 puede jugar con la composición.

      Estoy tratando de aprender lo suficiente sobre el diseño de tablas para hacer de este un bonito llavero. Pensé que uno de los módulos WROOM32 con más flash y / o RAM emparejado con una batería de ~ 1.5 horas. Usar un conector para auriculares para que un cable de 3.5 a RCA pueda transportar la señal facilitaría el bolsillo.

      Sé que soy demasiado nuevo para siquiera entender por dónde empezar el código, pero si puedo crear un tablero que funcione, compartiré los archivos.

      Básicamente, estoy tratando de seducirlo, ya que todavía estoy descubriendo las fluctuaciones de mi ESP32 y el rendimiento mejorado de la emulación es mucho más de lo que puedo abordar para un primer proyecto real.

  • Alto no dice:

    Esto es realmente asombroso. Fue mi proyecto de fin de semana y se desarrolló desde el hermoso primer segundo, incluido el sonido. Empresa. Pero ...

    ¿Alguien también tiene problemas con los dispositivos bluetooth? Bluetooth es MUY inestable con mis dispositivos. Se congela (con un clon de wiimote) o simplemente se reinicia (teclado mágico de Apple), lo que hizo que todo el sistema fuera interesante pero inútil. Agregué código para admitir controles de cable (tengo un joystick de arcade por ahí ...) lo que lo convierte en un sistema muy agradable y fluido ahora. Todavía estoy documentando y pronto haré un borrador para respaldar esa opción. Otras ideas incluyen soportar esos arduos módulos de stick analógicos que vuelan por todas partes y también conectarlos a través del (otro) puerto SPI. Hacer un bonito recinto también está en la lista ...

    • Spike Snell dice:

      No he encontrado problemas de estabilidad de bluetooth hasta ahora y he estado ejecutando algunos juegos de NES durante mucho tiempo este fin de semana. Intenté usar un control remoto wii blanco de primera parte. Sin embargo, una cosa que he notado es que si no mantengo presionado el botón de reinicio en mi placa esp32 durante unos segundos, el diseño puede ser inestable y congelarse. me.

      • Lars Friedrichs dice:

        Probaré un Wiimote original, encontré uno antiguo. Puedo cancelar una falla de energía, porque eso también sucede si uso una fuente de alimentación de 5A 5V.
        Durante mi intento de integrar un método de entrada directa, me di cuenta de que suceden cosas extrañas si hay demasiadas señales de entrada (acciones clave simultáneas). Siempre que mi función no filtraba las acciones clave repetidas, también se restablecía de inmediato. Creo que podría ser una señal de entrada incorrecta entrar y filtrarlas demasiado tiempo. Exploraré más ...

    • Vengel dice:

      Hola. También tengo problemas con la conexión bluetooth. Es muy interesante probar tu versión de esp 8 bits.

  • Jack Davis dice:

    Construí 3 de las placas Atari 8 bit esp32. Los amo. Solo desearía que hubiera una forma de almacenar programas básicos en una tarjeta SD o en algún otro almacenamiento. Mantener el buen trabajo !!!

Óscar Soto
Óscar Soto

Deja una respuesta

Tu dirección de correo electrónico no será publicada.