7 puntos por GN⁺ 2026-01-26 | 5 comentarios | Compartir por WhatsApp
  • Un proyecto que porta el clásico juego de 1993 DOOM para ejecutarlo en los earbuds inalámbricos PineBuds Pro, con juego remoto disponible vía web
  • Está compuesto por cuatro elementos: un servidor serial, un servidor web, una página web estática y el port de DOOM que conecta los earbuds con el servidor web
  • Mediante una conexión UART se asegura un ancho de banda de unos 2.4 Mbps, y el video se transmite como stream MJPEG, logrando un rendimiento teórico de hasta 27 FPS
  • Se hizo overclock del CPU de 100 MHz a 300 MHz y, debido a los límites de la codificación JPEG, se obtuvo un rendimiento real de alrededor de 18 FPS
  • Las restricciones de RAM y FLASH se resolvieron con optimizaciones y con el archivo Squashware WAD liviano, mostrando el potencial de los experimentos de hardware basados en firmware open source

Resumen del proyecto

  • Se porteó DOOM, lanzado en 1993, para ejecutarlo en los earbuds PineBuds Pro
    • Se menciona que los PineBuds Pro son los únicos earbuds inalámbricos compatibles con firmware open source
    • Los visitantes del sitio web pueden entrar a una cola y jugar de forma remota
  • El proyecto se compone de cuatro partes
    • El port de DOOM que corre en los earbuds
    • Un servidor serial que conecta los earbuds con el servidor web y convierte el stream MJPEG a Twitch
    • Un servidor web encargado de servir los recursos, gestionar la cola, enviar entradas de teclado y mostrar el stream
    • Una página web estática encargada de la visualización en el navegador y de la comunicación con el servidor

Hardware y estructura de conexión

  • Los earbuds no tienen pantalla, así que envían y reciben datos por Bluetooth o por pads de contacto UART
    • Bluetooth es más lento, con alrededor de 1 Mbps, por lo que UART (2.4 Mbps) resulta más adecuado
  • El framebuffer de DOOM tiene una resolución de 320×200, color de 8 bits, y ocupa unos 96 KB
    • Con el ancho de banda de UART, se podrían transmitir cerca de 3 FPS
    • Para mejorar esto, se adoptó un esquema de stream MJPEG
  • Como codificador JPEG se usó bitbank2/JPEGENC
    • El tamaño promedio de cada cuadro JPEG es de 11~13.5 KB
    • En teoría, el FPS máximo ronda los 22~27 FPS

Ajuste del rendimiento del CPU

  • El reloj del CPU en el firmware base es de 100 MHz, pero se elevó a 300 MHz y se desactivó el modo de bajo consumo
  • Aunque el Cortex-M4F (300 MHz) es suficiente para ejecutar DOOM, el cuello de botella aparece en la codificación JPEG
    • La tasa de cuadros real fue de alrededor de 18 FPS

Optimización de memoria (RAM)

  • La RAM accesible por defecto es de 768 KB, y al desactivar el procesador auxiliar se obtienen 992 KB
  • Como DOOM requiere 4 MB de RAM, se aplicaron varias optimizaciones
    • Precomputación de tablas de búsqueda, almacenamiento de variables const en flash, desactivación del sistema de caché y eliminación de variables innecesarias, entre otras, para reducir el uso de memoria

Problema de capacidad de flash

  • El archivo WAD base de DOOM 1 pesa 4.2 MB, superando el límite de 4 MB de almacenamiento de los earbuds
  • El problema se resolvió usando la versión liviana Squashware WAD (1.7 MB) de fragglet
    • Así, todos los recursos pudieron caber en la memoria flash

Open source y accesibilidad

  • El código del proyecto está publicado en dos repositorios de GitHub
    • DOOMBuds: port de DOOM para los earbuds
    • DOOMBUDS-JS: soporte para la interacción entre el navegador y los earbuds
  • El sitio web funciona con un sistema de cola, y a partir del quinto turno el stream de Twitch cambia a un stream MJPEG de baja latencia

5 comentarios

 
cybecho 2026-01-27

"Ejecuta DOOM"

 
pjh2568 2026-01-26

Los maestros de hacer correr DOOM de verdad... son increíbles.

 
tsboard 2026-01-26

Wow, esto sí está... 😱😱😱😱😱

 
kimjoin2 2026-01-26

Dios mío.

 
GN⁺ 2026-01-26
Opiniones en Hacker News
  • Cada vez que veo que DOOM corre en algún dispositivo simple, me hace pensar si esto es una victoria del software o un fracaso económico por no haber podido fabricar hardware dedicado más barato

    • Los PineBuds fueron diseñados desde el principio como una plataforma de firmware abierto, con un MCU potente para experimentar
      Los earbuds Bluetooth con ANC no son un producto simple, y la cancelación de ruido requiere realizar cálculos muy complejos de forma continua
      Un MCU rápido no es solo desperdicio, también aporta ventajas en baja latencia y gestión eficiente de energía
      En vez de hacer un ASIC perfecto, es mucho más realista tener una arquitectura actualizable con un MCU de propósito general
      Al final, comprar MCU probados a gran escala es mucho más económico que fabricar un chip personalizado
    • Desde otra perspectiva, este es un caso de éxito económico donde, gracias a las economías de escala, el hardware potente terminó siendo incluso la opción más barata
    • Yo lo veo como una victoria de la fabricación de semiconductores
      El costo de mano de obra, pruebas, capacitación y producción en pequeños volúmenes para diseñar y fabricar un chip personalizado termina siendo más alto
      Los costos de procesos de negocio pesan mucho más que el costo de materiales
    • Me sorprende que se intente interpretar como un fracaso económico el enorme éxito de la economía de mercado
      Vivimos en un mundo donde DOOM corre en unos earbuds, no hay razón para verlo de forma negativa
    • Que el CPU sea un ARM Cortex-M4F de doble núcleo a 300MHz realmente hace pensar que el escalado del hardware desde el lanzamiento de DOOM está fuera de control
      Son especificaciones excesivas, pero igual impresiona que todo eso quepa dentro del oído
  • Yo porteé DOOM a los PineBuds Pro
    Si accedes por internet, puedes jugar DOOM en mis earbuds
    En mi sitio están los detalles y el enlace a GitHub

    • Me da curiosidad cuál será la tasa de compresión de la codificación JPEG
  • Siempre me da un poco de pena que siempre terminen porteando DOOM
    Antes había muchos juegos simples pero adictivos, pero los juegos de hoy son demasiado grandes y complejos como para llevarlos a plataformas pequeñas
    Siento que la industria, salvo por la escena indie, perdió el rumbo
    Juegos como Master of Orion 1 eran simples, pero daban ganas de volver a jugarlos una y otra vez
    Los juegos actuales parecen más videos, con poca interacción y centrados en grindear XP, así que me interesan menos

    • La razón por la que DOOM se elige tan seguido es que es código abierto, tiene requisitos de recursos razonables, un motor interesante y desarrolladores muy respetados
      Ya se volvió toda una tradición
    • Los juegos de antes eran pequeños por limitaciones técnicas
      Ahora a la mayoría de los usuarios no les importa mucho el tamaño ni el rendimiento
      Como los consumidores adoptaron la actitud de “mientras funcione”, el valor de la optimización se fue reduciendo
      Aun así, en la escena indie todavía hay muchos juegos cortos y con estilo
      Solo que, como los juegos cortos al estilo de una película difícilmente dejan una gran impresión, no suelen hacerse muy conocidos
    • Coincido, yo también quisiera ver Freespace 2 corriendo en unos earbuds
  • La lista de ports de DOOM puede verse en la página de Wikipedia

  • Me parece un gran efecto publicitario para los PineBuds Pro
    Me pregunto si los Fairbuds podrían hacer algo así
    Pero si DOOM corre en tantos dispositivos, ¿por qué todavía no funciona fluidamente en un 386?

  • Me acordé de que John Carmack dijo en una entrevista después de DOOM 3 que, a medida que el motor se volvió más complejo, ya no podía escribir todo el código él solo
    Me pregunto qué pensará ahora en esta era de la IA

    • Actualmente está concentrado en hacer realidad la AGI
      Personalmente, creo que sería positivo respecto a la IA
      Y “Masters of Doom” es un libro realmente bueno, lo recomiendo
    • Incluso durante el desarrollo de DOOM, Carmack ya usaba enfoques parecidos a la IA en formas como la interpolación aproximada (Approximate Interpolation)
  • Me pregunto si alguien aquí ha usado los PineBuds Pro
    No había un canal relacionado en el IRC de Pine64, así que era difícil preguntar

    • Si soy sincero, nunca los he usado para su propósito original
      No sé cómo sean la comodidad ni la calidad de sonido, pero en el canal de Discord de Pine64 hay una sala dedicada a Pinebuds
    • Los he usado desde que salieron y la duración de batería es corta: con ANC activado, como mucho unas 2 horas
    • Antes me gustaba Pine64, pero después de los problemas con la tablet e-ink y el teléfono, les tengo menos confianza
    • Yo los uso satisfecho
      A propósito instalé un firmware sin ANC, pero como earbuds Bluetooth cumplen perfectamente su función
  • En unos años, si los earbuds tienen un poco más de RAM, quizá también puedan correr un clúster local de Kubernetes

  • Estoy esperando el post de “porteé DOOM al chip de un vape desechable” 😄

    • La mayoría de los vapes usan el MCU Puya PY32, que tiene 3KB de RAM y 24KB de ROM, así que está lejísimos de poder correr DOOM
      Si la ley de Moore sigue vigente, quizá sea posible en unos 10 años
    • El video relacionado puede verse en este enlace de YouTube
  • El visor independiente conectado directamente a los earbuds también funciona en móvil
    Ver video de demostración
    No tiene controles táctiles, solo reproduce el loop de la intro