Windows 95 en un ESP32-S3: así funciona Tiny386 y por qué importa

Última actualización: noviembre 17, 2025
Autor: Isaac
  • Tiny386 emula un PC i386 con periféricos clásicos (NE2000, VGA Bochs VBE, SB16) y BIOS SeaBIOS.
  • Arranca Windows 95 en un ESP32-S3 (GUITION JC3248W535), con red funcional e interfaz usable.
  • Código compacto (~6k LOC), licencia BSD-3, FPU x87 opcional y soporte de instrucciones 486/586.
  • Demos WebAssembly y repositorio en GitHub facilitan probarlo y entender su alcance técnico.

Emulación de Windows 95 en ESP32-S3

Lo que hace unos años habría sonado a chiste hoy es una realidad palpable: Windows 95 arrancando en un ESP32-S3 gracias al ingenio de He Chunhui y su proyecto Tiny386. No es un port, ni magia negra; es una emulación minimalista pero tremendamente efectiva de un PC de principios de los noventa que consigue sacar petróleo de un microcontrolador moderno de bajo coste. El resultado no es un cohete, pero sí lo bastante funcional como para abrir el bloc de notas, echar un solitario y hasta cargar una web histórica.

La gracia del asunto no se queda en la anécdota. Tiny386 combina un núcleo de CPU i386 escrito desde cero en C99 con un conjunto de periféricos emulados prestados de grandes como QEMU y TinyEMU, todo ello apoyándose en SeaBIOS para el firmware. El conjunto arranca Windows 3.1/3.2, Windows 95 e incluso núcleos Linux, tanto en la demo web como de forma nativa sobre un ESP32-S3 concreto con pantalla de 3,5 pulgadas. Y sí, también corre Doom, porque si no ejecuta Doom, ¿es realmente un ordenador?

Qué es Tiny386 y quién está detrás

El cerebro de la operación es He Chunhui (hchunhui), quien ha desarrollado Tiny386 como un emulador de PC x86 ultraportable con especial cariño por la eficiencia: su CPU i386 “simple y directa” ronda las ~6.000 líneas de código y se ha implementado en C99 para facilitar el port a distintas plataformas. Desde el primer momento se ha buscado un equilibrio entre fidelidad y rendimiento para sacar partido a MCUs como el ESP32-S3.

El proyecto no pretende ser una reimplementación exhaustiva de todas las esquinas del 386. Chunhui reconoce que faltan elementos como la depuración integrada, el hardware tasking o ciertos chequeos de permisos; aun así, la compatibilidad es amplia para software de 16/32 bits, lo bastante como para mover desde sistemas Windows 9x/NT (según la configuración) hasta aplicaciones clásicas de la época DOS/Windows.

Para cubrir las exigencias de sistemas más modernos que un 386 puro, Tiny386 incorpora instrucciones de generaciones posteriores (486 y 586) allí donde hace falta. Ese toque “híbrido” permite arrancar núcleos Linux actuales y hacer que Windows 95 se sienta como en casa, a pesar de ejecutarse sobre un hardware que no se parece en nada a un PC AT de los noventa.

Arquitectura: CPU emulada, FPU opcional y SeaBIOS

El corazón de Tiny386 es un emulador i386 creado desde cero, en el que se gestionan los modos real y protegido, la MMU y el flujo de instrucciones de forma bastante fiel, pero sin florituras innecesarias que penalicen el rendimiento en un MCU. Para quienes lo necesiten, existe un emulador x87 FPU opcional que amplía capacidades en tareas de coma flotante, aunque no siempre es imprescindible según la carga de trabajo.

  Firmar y cifrar archivos utilizando certificados OpenPGP con Kleopatra

El sistema de arranque y vídeo BIOS proviene del proyecto SeaBIOS, una elección muy sensata si tenemos en cuenta el ecosistema clásico PC que se está intentando reproducir. SeaBIOS aporta el firmware BIOS/VGABIOS necesario para que el stack de un PC de los noventa cobre vida sin depender de binarios propietarios ni configuraciones arcanas. Además, Tiny386 puede saltarse la BIOS y arrancar directamente el kernel de Linux si así se prefiere.

Periféricos emulados: del NE2000 a Sound Blaster 16

Para completar la experiencia “PC”, Tiny386 reutiliza bloques de periféricos de proyectos consolidados como TinyEMU y QEMU. Entre los dispositivos soportados se encuentran el 8259 PIC (interrupciones), 8254 PIT (temporizador), 8042 (controlador de teclado) y el reloj CMOS/RTC, piezas clásicas del ecosistema x86 de aquellas fechas.

En el apartado gráfico, la emulación se apoya en una VGA ISA con Bochs VBE para modos de vídeo más versátiles, mientras que el almacenamiento corre a cargo de un controlador de disco IDE. Para la red, la elección cae en una tarjeta NE2000 ISA, veterana y fácil de emular, lo que permite dotar a Windows 95 y a otros sistemas de conectividad TCP/IP con un esfuerzo razonable.

El sonido también está cubierto: además del altavoz del PC, se emulan Adlib OPL2 y Sound Blaster 16, suficientes para revivir la banda sonora de muchos juegos y aplicaciones multimedia de la época. La DMA (8257 ISA) completa la lista, facilitando transferencias eficaces entre memoria y periféricos como en un PC auténtico.

Rendimiento real: Windows 95 funciona, con paciencia

En la práctica, el sistema arranca y se deja usar con cierta soltura, teniendo en cuenta que todo sucede dentro de un MCU. En el devkit soportado, el arranque de Windows 95 ronda los cuatro minutos y el entorno se nota “pesadito”; nada dramático si lo que buscamos es la experiencia y el factor “lo he conseguido” más que productividad a toda pastilla.

Una vez en el escritorio, se ha mostrado plenamente operativo con pequeñas pruebas: NotePad, Solitaire e Internet Explorer abren y funcionan. Conectividad mediante la NE2000 emulada también hay, hasta el punto de cargar info.cern.ch —la primera web de la historia— en la demostración. Consejo práctico: ver el vídeo de la demo a 2x ayuda a hacerse una idea sin dormirse.

La sensación general es que, aunque la interfaz responde con cierta parsimonia, la experiencia es perfectamente reconocible. Esto no es una mera imagen estática, sino un PC emulado “de verdad” sobre un microcontrolador, con su pila de drivers, BIOS y periféricos clásicos funcionando en equipo.

  ¿Cuál es el comando sudo en Windows?

La base hardware: del 386 al ESP32-S3

Si nos vamos a los números, el contraste impresiona. Un 80386 clásico corría entre 12 y 40 MHz, mientras que el ESP32-S3 integra dos núcleos Xtensa LX7 a 240 MHz, a años luz en frecuencia y eficiencia energética. Esa holgura, sumada a optimizaciones, permite emular un 386 razonablemente funcional, sobre todo si se combina con PSRAM externa para albergar memoria del “PC” virtual.

Ahora bien, nadie regala nada: emular siempre tiene peaje. Aun con ese músculo, el ESP32-S3 no deja de ser un MCU, de manera que el rendimiento se acerca más al de un PC de gama baja noventero que al de un pentium moderno. Pero para aplicaciones, juegos 2D y entornos ligeros de la época, va que chuta.

Plataforma soportada y detalles del devkit

Por el momento, Tiny386 sobre hardware real está enfocado a un objetivo muy concreto: el GUITION JC3248W535, un devkit con pantalla táctil de 3,5 pulgadas y SoC ESP32-S3. Es una plataforma asequible (en torno a los 30 dólares) que facilita la experiencia “todo en uno”: MCU, display y alimentación en un mismo tablero.

Un detalle a tener en cuenta es su puerto USB-C. Aunque pueda dar pie a confusiones, en este modelo se utiliza básicamente para programación del módulo y no para exponer el USB periférico del ESP32-S3. Aun así, con el USB OTG del chip y algo de maña, se podría llegar a montar un “386” con un hub y conectar teclado, ratón y compañía.

Demos y cómo probar Tiny386 sin soldar nada

Quien quiera curiosear sin hardware puede hacerlo en el navegador: existe una demo WebAssembly que arranca Windows 3.2 (la edición china basada en Windows 3.1), JSLinux y FreeDOS, además de otra demo accesible vía GitHub Pages. Es la manera más rápida de hacerse una idea del comportamiento de Tiny386 y de su compatibilidad.

El repositorio en GitHub publica el código fuente completo con licencia BSD de 3 cláusulas, instrucciones básicas de compilación, documentación de los ficheros de configuración e incluso imágenes precompiladas. También hay información adicional en Hackster.io y Hackaday.io, donde se detallan pequeñas particularidades y se recopilan avances de la comunidad.

Windows, Linux y algo más: compatibilidad práctica

Además de Windows 95, Tiny386 ha mostrado su capacidad para cargar Windows 3.1/3.2 y variantes de Windows 9x/NT en determinados escenarios. Para los más linuxeros, el emulador puede iniciar directamente un kernel moderno y, de hecho, ya se habían visto antecedentes de Linux 5.0 y 6.3 arrancando en placas ESP32 (aunque no bajo Tiny386), lo que subraya que este ecosistema tiene recorrido.

  ¿Cuánto cuesta el play 5 en Republica Dominicana?

En el capítulo de “obligatorios”, también se ha probado software emblemático como Doom (1993), que sirve de termómetro informal para medir compatibilidad y rendimiento gráfico/sonoro en sistemas emulados clásicos. No será el benchmark definitivo, pero es ya un idioma común en la escena retro.

Comparativa y contexto: del AVR al ESP32-S3

Quienes recuerden el calvario de intentar levantar Linux en un AVR de 8 bits apreciarán el salto cualitativo. Frente a aquellas pruebas de paciencia, Tiny386 en un ESP32-S3 resulta “rápido” en términos relativos: arranca un Windows 95 utilizable (con calma), ofrece red y suena convincente. No es moco de pavo, especialmente viniendo de un microcontrolador de consumo contenidísimo.

Este enfoque demuestra que, con una emulación sensata y periféricos bien escogidos, un MCU actual puede recrear un PC noventero con bastante autenticidad. Las implicaciones en docencia, conservación y “demostradores” técnicos son claras: poder enseñar cómo funcionaba un x86 clásico sin recurrir a chatarra cada vez más escasa es un plus.

Optimización y margen de mejora

Tiny386 adopta una estrategia directa, sin capas de complejidad que penalicen ciclos. Esto deja espacio para explorar optimizaciones: desde microajustes en el bucle de la CPU emulada hasta mejoras en cachés de traducción o rutas críticas de E/S. Con más tuning, el ESP32-S3 podría dar aún más de sí y acercarse a una experiencia más “ágil” para software temprano de los noventa.

En el terreno de I/O, la posibilidad de explotar USB OTG para un hub con teclado/ratón abre puertas a montajes más “PC-like”. También hay margen para refinar la integración con pantallas y táctiles, o para ampliar la documentación de configuración con perfiles listos para distintos casos de uso.

Comunidad, cobertura y recursos

El proyecto ha tenido eco en medios especializados y comunidades. CNX Software ofreció una cobertura detallada e incluso enlazó un vídeo donde se aprecia el comportamiento con Windows 95, además de recordar que Tiny386 puede arrancar el kernel de Linux directamente. La pieza se enriqueció con una mención a Hackster.io y un agradecimiento a Zoobab por el aviso.

En /r/hardware —subreddit centrado en noticias, reseñas y debates de calidad sobre hardware— el tema también ha asomado, con el tono curioso y técnico que lo caracteriza. Y en redes como X, los embeds del vídeo exigen tener JavaScript habilitado para su reproducción, un detalle logístico que conviene tener presente al consultar demostraciones.

Por último, CNX Software invita a quien lo desee a apoyar su labor —ya sea vía criptomonedas, Patreon o enlaces de afiliación—, recordatorio habitual en su comunidad y que deja claro que una cobertura así se sostiene mejor con apoyo directo de lectores.

mejores Procesadores para PC de Escritorio
Artículo relacionado:
Guía definitiva de procesadores de escritorio: elige bien tu CPU