- Tiny386 emula un i386 en ESP32‑S3 y arranca Windows 95 con vídeo, red y sonido.
- Rendimiento modesto: arranque ~4 minutos; Notepad, Solitaire e IE funcionan.
- Código en C99 (~6k LOC), licencia BSD‑3; demo WebAssembly disponible.
- Soporte actual para JC3248W535; posible portabilidad a otros microcontroladores.

Lo que hace nada parecía un chascarrillo de foro se ha vuelto real: Windows 95 arrancando en un ESP32‑S3 gracias a un emulador x86 minimalista llamado Tiny386. En un pequeño devkit con pantalla táctil de 3,5 pulgadas, el sistema de Microsoft se pone en marcha, tarda unos minutos y va justito, pero abre el Bloc de notas, juega al Solitario y hasta carga una web vintage a través de la red.
El responsable es el desarrollador He Chunhui (hchunhui), quien ha construido un emulador i386 desde cero en C99 y lo ha portado al microcontrolador de Espressif. Lo llamativo no es solo que funcione, sino que, según la información publicada en GitHub, Hackster/Hackaday y medios especializados, hablamos probablemente de la primera vez que alguien logra cargar Windows en hardware ESP32, después de hitos previos como el arranque de Linux 5.0 en otras placas ESP32 y una imagen de Linux 6.3 en el Olimex ESP32‑S3‑DevKit‑LiPo.
Qué es Tiny386 y quién está detrás
Tiny386 es, en esencia, un PC x86 virtual, escrito en C99 y pensado para ser portátil. Su corazón es un emulador de CPU Intel i386 “simple y tonto” —palabras del propio autor— con un objetivo clarísimo: ejecutar la mayor cantidad posible de software de 16 y 32 bits sin cargar con una complejidad descomunal.
La CPU virtual implementa el conjunto de instrucciones del 80386 y añade instrucciones de 486 y 586 donde hacen falta para poder arrancar núcleos Linux modernos y sistemas Windows contemporáneos a esa época. El núcleo ronda las 6.000 líneas de código (LOC), algo sorprendente si tenemos en cuenta lo que es capaz de mover, e incluye de forma opcional emulación de la FPU x87 para software que la necesite.
Como todo proyecto joven, hay huecos por cubrir. De hecho, faltan funciones como el depurado, el hardware tasking y ciertos checks de permisos. Aun así, la premisa se cumple: para la mayor parte del software clásico DOS/Windows 3.x/95 e incluso para arrancar un Linux moderno, la implementación actual da la talla.
Cómo logra emular un PC i386 en un ESP32‑S3
Para valorar el mérito, conviene recordar qué era un 80386: un procesador x86 de 32 bits con pipeline de seis etapas y MMU integrado, lanzado a mediados de los 80. Fue la base de una era entera de PCs personales, portátiles y hasta servidores, con modos real y protegido que marcaron la evolución del software.
En el lado opuesto, el ESP32‑S3 es un microcontrolador actual de bajo coste con dos núcleos Tensilica Xtensa LX7 a 240 MHz, conectividad Wi‑Fi/Bluetooth y muy bajo consumo. Aunque la comparación no es directa (emular siempre penaliza), la fuerza bruta de este SoC y la ayuda de memoria PSRAM externa permiten simular una máquina 386 funcional con gráficos, red y sonido básicos, todo dentro del propio micro.
El truco está en una aproximación pragmática: la CPU se emula de forma sencilla, se añaden las instrucciones imprescindibles que faltaban para casos modernos, y el resto de la experiencia de PC se construye a base de periféricos virtuales ya probados en otros proyectos. Esa mezcla de minimalismo y reciclaje inteligente es la que hace posible que el conjunto arranque Windows 95 sin morir en el intento.
Periféricos y firmware emulados
Para completar el ecosistema PC, Tiny386 toma prestado código de TinyEMU y QEMU a fin de emular los componentes clásicos de una máquina ISA de principios de los 90. La BIOS y la VGABIOS, por su parte, llegan del proyecto SeaBIOS, lo que facilita el arranque de sistemas sin depender de ROMs propietarias.
El listado de periféricos soportados incluye piezas muy conocidas por cualquiera que haya trasteado con emulación PC clásica: controladores de interrupciones, temporizadores, teclado, vídeo, disco, red y audio. En detalle:
- Controlador de interrupciones 8259 (PIC) y temporizador 8254 (PIT), fundamentales para la temporización del sistema.
- Controladora de teclado 8042 y CMOS RTC para reloj y configuración básica.
- VGA ISA con Bochs VBE para ofrecer modos de vídeo compatibles.
- Controladora de disco IDE para almacenamiento.
- Tarjeta de red NE2000 ISA, una veterana muy extendida y fácil de emular.
- DMA ISA 8257, altavoz de PC, Adlib OPL2 y Sound Blaster 16 para audio.
Gracias a este catálogo, el sistema no solo muestra gráficos y arranca un Windows con interfaz, sino que tiene conectividad de red y puede reproducir sonido con los drivers adecuados, lo cual redondea la experiencia “PC antiguo” de forma sorprendentemente completa.
Hardware de referencia: JC3248W535 con ESP32‑S3
La demostración que ha captado todas las miradas corre sobre la Guition JC3248W535, una placa de desarrollo con ESP32‑S3 y una pantalla LCD de 3,5 pulgadas con táctil. Es un devkit que se puede encontrar por unos 25‑30 dólares en tiendas como AliExpress, y que, por lo que se ha visto, incluye todo lo necesario para jugar a “PC noventero de bolsillo”.
Un detalle importante: el puerto USB‑C de esta placa parece estar pensado para programación y depurado, no como host de periféricos USB estándar del ESP32‑S3. Aun así, con el periférico USB OTG del chip, se podría imaginar un montaje con un hub USB al que conectar teclado y ratón, creando un mini‑386 con entrada directa por cable.
Hoy por hoy, el soporte oficial del proyecto se centra en esta placa concreta, y el autor indica que solo ESP32‑S3 está cubierto de forma nativa. La arquitectura del emulador, no obstante, busca la portabilidad: con un esfuerzo razonable, se podría llevar a otros microcontroladores y plataformas, lo que abre la puerta a más formatos y pantallas.
Rendimiento y experiencia de uso
La pregunta que todo el mundo se hace: ¿qué tal va? La respuesta corta es “funciona, con paciencia”. El arranque completo de Windows 95 ronda los 4 minutos en la demo pública. Una vez cargado, el sistema responde con lentitud pero es manejable: se puede abrir el Bloc de notas, jugar al Solitario y hasta lanzar Internet Explorer.
La conectividad de red está implementada, por lo que el emulador puede cargar sitios web básicos. En la demostración se ve cómo abre info.cern.ch, la primera web de la historia, lo que añade un toque nostálgico delicioso a la escena de Windows 95 corriendo en un micro de menos de 30 euros.
En cuanto a fluidez, es lógico que el conjunto vaya al límite: la emulación añade sobrecarga y el ESP32‑S3 no tiene aceleración gráfica PC. Pese a ello, la sensación general es “usabilidad al borde” más que un simple “arranca y se cuelga”. Si te pones el vídeo al doble de velocidad —consejo popular entre quienes ya lo han visto—, la cosa se hace más llevadera.
Como nota simpática, Tiny386 puede ejecutar Doom, ese clásico test de “si no corre Doom, no vale”. Y gracias a los dispositivos de sonido virtualizados (PC speaker, Adlib OPL2 y SB16), el apartado auditivo también está cubierto en la medida de lo posible dentro de las limitaciones del hardware.
Sistemas operativos y software compatibles
El catálogo que ya se ha mostrado en vídeo incluye Windows 3.1/3.2 (con la variante china de 3.1) y Windows 95. Más allá de eso, el autor recalca que Tiny386 “debería ejecutar la mayoría del software de 16/32 bits”, y que con la ampliación de instrucciones de 486/586 es posible iniciar tanto núcleos Linux relativamente modernos como Windows NT de la época.
Un detalle muy interesante es que Tiny386 es capaz de arrancar el kernel de Linux directamente, sin pasar por una BIOS tradicional, lo que simplifica algunos flujos de prueba. Para explorar sin montar un hardware, el proyecto ofrece además una demo en WebAssembly que arranca Windows 3.2 en el navegador, y se mencionan alternativas como FreeDOS o JSLinux para quienes quieran comparar experiencias de emulación en la web.
En el terreno de las aplicaciones, además del ya citado Doom, los programas básicos de Windows 95 (Bloc de notas, Solitaire e Internet Explorer) han demostrado funcionar, con las obvias restricciones de rendimiento. Es una muestra suficiente para concluir que la pila gráfica, de entrada/salida y de red está razonablemente bien integrada.
Cómo se maneja la entrada y los puertos
En la placa JC3248W535, el uso de periféricos físicos está condicionado por el USB‑C orientado a programación. Para salvar ese escollo, en la implementación actual el teclado y el ratón se pueden redirigir por Wi‑Fi hacia el emulador, ofreciendo control sin necesidad de puertos dedicados en el devkit.
De cara al futuro, no sería raro ver builds que aprovechen el USB OTG del ESP32‑S3 como host y que permitan montar un hub para enchufar teclado y ratón convencionales. Ese salto facilitaría bastante la interacción sin depender de la pantalla táctil o de soluciones de entrada remota.
Licencia, código y recursos para probar
El proyecto se publica bajo licencia BSD de 3 cláusulas, lo que anima a su reutilización y portabilidad. En el repositorio de GitHub están el código fuente completo, instrucciones básicas de compilación, documentación de los archivos de configuración y, para quienes van con prisa, imágenes precompiladas listas para flashear.
Además de la documentación técnica, hay una demo en el navegador (GitHub Pages) que permite hacerse una idea de cómo arranca Windows 3.2 y cómo responde el conjunto, sin necesidad de hardware. Quienes quieran profundizar también pueden encontrar información y debates en páginas como Hackster.io y Hackaday.io, y en comunidades como /r/hardware, donde estas proezas retro‑tech suelen generar conversaciones animadas.
Medios como CNX Software o Tom’s Hardware han cubierto el avance, subrayando detalles como el lista de periféricos emulados, la dependencia de SeaBIOS para BIOS/VGABIOS y el estado actual del soporte para la placa JC3248W535. De hecho, parte de la difusión ha llegado con el impulso de la comunidad —gracias a puntas como la de Zoobab—, lo que explica la rapidez con que el proyecto ha saltado a la primera plana maker.
De Linux en AVR a Windows 95 en ESP32‑S3
Para poner las cosas en perspectiva, quienes recuerden los intentos de arrancar Linux en microcontroladores de 8 bits (como AVR) saben lo eterno que podía resultar. Frente a aquello, ver a un ESP32‑S3 emulando un 386 que tira de Windows 95 se siente “rápido” y, desde luego, mucho más práctico.
También se han visto logros previos en el ecosistema ESP32: Linux 5.0 en placas ESP32 y, más recientemente, una imagen de Linux 6.3 en la Olimex ESP32‑S3‑DevKit‑LiPo. Pero la llegada de Windows a esta familia de micros marca un antes y un después en la exploración de límites, por lo peculiar del objetivo y lo exigente que resulta mover un entorno gráfico clásico.
Limitaciones actuales y oportunidades de mejora
La lista de “todavía no” incluye el depurador integrado, el hardware tasking y ciertas comprobaciones de permisos, además de los inevitables cuellos de botella de rendimiento que vienen con la emulación pura. También pesa que, de momento, el soporte oficial esté ceñido a la JC3248W535, lo que limita la variedad de pantallas y accesorios disponibles de serie.
En el lado positivo, el enfoque de Tiny386 es tan directo que hay margen claro para optimizar: mejoras en memoria externa (latencias de PSRAM), ajustes finos en la emulación de CPU, posibles rutas críticas en periféricos gráficos o de disco, y aprovechar el USB OTG para elevar la experiencia con dispositivos reales. Cada pequeño avance computa mucho cuando el presupuesto de ciclos es tan ajustado.
Preservación, educación y diversión retro
Más allá del “porque se puede”, proyectos así tienen un valor didáctico y de preservación nada menor. Con Tiny386, desarrolladores y docentes pueden reproducir entornos x86 históricos sin hardware original, cada vez más escaso y frágil, y hacerlo en una plataforma ultrabarata y de bajo consumo.
Para la comunidad, abre la puerta a probar software antiguo, documentar comportamientos de sistemas legacy y montar talleres donde se explique, con ejemplos palpables, cómo los modos real y protegido del 386 condicionaban el diseño de sistemas operativos como Windows 3.x/95 y la evolución de Linux.
También hay un punto cultural que no conviene subestimar: es paradójico —y muy divertido— que para “sentir potencia” hoy tengamos que emular un CPU de los 80 sobre un micro moderno, cuando llevamos en el bolsillo móviles miles de veces más capaces que aquellos PCs originales. Ese contraste ayuda a entender cuánto hemos avanzado y por qué la emulación es una herramienta tan potente.
Arquitectura interna: modos, memoria y BIOS
El i386 real combinaba modos real y protegido, paginación y un MMU que sentó las bases de la memoria virtual en PC. Tiny386 replica lo crítico de ese comportamiento para que los sistemas operativos se sientan “en casa”, combinando la emulación de CPU con un conjunto de periféricos que responden donde el software espera señales ISA de toda la vida.
Un pilar aquí es SeaBIOS, de donde provienen la BIOS y la VGABIOS utilizadas. Esto garantiza compatibilidad con rutinas de arranque ampliamente soportadas y evita depender de ROMs cerradas. A la vez, cuando conviene, el emulador puede saltarse la BIOS y cargar el kernel de Linux directamente, un atajo muy útil para pruebas.
Portabilidad y ecosistema
Al estar escrito en C99 y con un core de CPU tan conciso, portar Tiny386 a otras plataformas se vuelve un trabajo acotado: basta con implementar la capa de I/O y adaptar la integración con pantalla, entrada y almacenamiento. El propio autor destaca la portabilidad como la gran baza del proyecto.
Esto no solo beneficia a quienes quieran llevarlo a otros micros o SBCs, también facilita que terceros añadan periféricos, prueben optimizaciones o incluso construyan frontends específicos (por ejemplo, para lanzar directamente distintas imágenes de Windows o distribuciones DOS/Linux retro).
Qué se ha demostrado hasta ahora
La “prueba de vida” de Windows 95 con arranque en ~4 minutos es la estrella, pero no llega sola. También se han mostrado Windows 3.1/3.2, la navegación básica con red (incluido info.cern.ch), el funcionamiento de aplicaciones del sistema y la ejecución de software icónico como Doom.
En paralelo, hay una demo WebAssembly que arranca Windows 3.2 en el navegador, una forma estupenda de palpar el sabor de la emulación sin soldar ni flashear nada. Y para los más manitas, el repositorio ofrece configuraciones y una imagen precompilada con la que empezar en la JC3248W535 con poca fricción.
Comparativa con otras experiencias en ESP32

Frente a otras demos como Linux en ESP32 “a pelo”, el salto a Windows 95 emulado añade un interés especial: obliga a reproducir una pila gráfica y de drivers más caprichosa, y a lidiar con expectativas de interfaz que no existían en un arranque de consola.
La experiencia con la Olimex ESP32‑S3‑DevKit‑LiPo y Linux 6.3 demuestra que el ecosistema ESP32‑S3 tiene margen para sorprender. Tiny386 empuja esa frontera hacia el territorio Windows, cerrando un círculo que parecía reservado a SBCs más potentes como Raspberry Pi.
Al final, lo que queda claro es que, con algo de ingenio, un micro de bajo coste puede convertirse en una máquina retro bastante convincente, capaz de arrancar sistemas completos y de darnos una clase magistral de arquitectura de computadores de los 90.
Vista en su conjunto, la historia de Tiny386 condensa varios logros: emulación i386 concisa, periféricos clave bien integrados, BIOS libre, portabilidad pensada desde el día uno y una demo que, aunque lenta, enseña lo que importa: que Windows 95 y Linux se pueden mover en un ESP32‑S3 con una fidelidad más que decente.
Y sí, tiene su punto poético que para rememorar la “magia” de Windows 95 en 2025 no toquemos un Pentium viejo, sino que tiremos de un emulador de 6.000 líneas y un devkit con pantalla táctil que cabe en el bolsillo. La informática, a veces, es mucho más divertida cuando se mezcla la nostalgia con el ingenio.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.