- Tiny386 emula un i386 a ESP32‑S3 i arrenca Windows 95 amb vídeo, xarxa i so.
- Rendiment modest: arrencada ~4 minuts; Notepad, Solitaire i IE funcionen.
- Codi a C99 (~6k LOC), llicència BSD‑3; demo WebAssembly disponible.
- Suport actual per a JC3248W535; possible portabilitat a altres microcontroladors.
El que fa res semblava un xafardell de fòrum s'ha tornat real: Windows 95 arrencant en un ESP32‑S3 gràcies a un emulador x86 minimalista anomenat Tiny386. En un petit devkit amb pantalla tàctil de 3,5 polzades, el sistema de Microsoft s'engega, triga uns minuts i va justet, però obre el Bloc de notes, juga al Solitari i fins i tot carrega una web vintage a través de la xarxa.
El responsable és el desenvolupador He Chunhui (hchunhui), que ha construït un emulador i386 des de zero a C99 i ho ha portat al microcontrolador d'Espressif. El que crida l'atenció no és només que funcioni, sinó que, segons la informació publicada a GitHub, Hackster/Hackaday i mitjans especialitzats, parlem probablement de la primera vegada que algú aconsegueix carregar Windows a maquinari ESP32, després de fites prèvies com l'arrencada de Linux 5.0 en altres plaques ESP32 i una imatge de Linux 6.3 a l'Olimex ESP32‑S3‑DevKit‑LiPo.
Què és Tiny386 i qui està darrere
Tiny386 és, en essència, un PC x86 virtual, escrit en C99 i pensat per ser portàtil. El seu cor és un emulador de CPU Intel i386 “simple i ximple” —paraules del mateix autor— amb un objectiu claríssim: executar la major quantitat possible de programari de 16 i 32 bits sense carregar amb una complexitat descomunal.
La CPU virtual implementa el conjunt d'instruccions del 80386 i afegeix instruccions de 486 i 586 on calen per poder arrencar nuclis Linux moderns i sistemes Windows contemporanis a aquesta època. El nucli ronda les 6.000 línies de codi (LOC), una cosa sorprenent si tenim en compte el que és capaç de moure, i inclou de manera opcional emulació de la FPU x87 per a programari que la necessiti.
Com tot projecte jove, hi ha buits per cobrir. De fet, falten funcions com el depurat, el maquinari tasking i certs checks de permisos. Tot i així, la premissa es compleix: per a la major part del programari clàssic DOS/Windows 3.x/95 i fins i tot per arrencar un Linux modern, la implementació actual dóna la talla.
Com aconsegueix emular un PC i386 en un ESP32‑S3
Per valorar el mèrit, cal recordar què era un 80386: un processador x86 de 32 bits amb pipeline de sis etapes i MMU integrat, llançat a mitjans dels 80. Va ser la base d'una era sencera de PCs personals, portàtils i fins i tot servidors, amb modes reals i protegits que van marcar l'evolució del programari.
Al costat oposat, el ESP32‑S3 és un microcontrolador actual de baix cost amb dos nuclis Tensilica Xtensa LX7 a 240 MHz, connectivitat Wi‑Fi/Bluetooth i molt baix consum. Encara que la comparació no és directa (emular penalitza sempre), la força bruta d'aquest SoC i l'ajuda de memòria PSRAM externa permeten simular una màquina 386 funcional amb gràfics, xarxa i so bàsics, tot dins del mateix micro.
El truc està en una aproximació pragmàtica: la CPU s'emula de manera senzilla, s'hi afegeixen les instruccions imprescindibles que faltaven per a casos moderns, i la resta de lexperiència de PC es construeix a base de perifèrics virtuals ja provats en altres projectes. Aquesta barreja de minimalisme i reciclatge intel·ligent és la que fa possible que el conjunt arrenqui Windows 95 sense morir a l'intent.
Perifèrics i firmware emulats
Per completar l'ecosistema PC, Tiny386 presa prestat codi de TinyEMU i QEMU per emular els components clàssics d'una màquina ISA de principis dels 90. BIOS i la VGABIOS, per la seva banda, arriben del projecte SeaBIOS, cosa que facilita l'arrencada de sistemes sense dependre de ROMs propietàries.
El llistat de perifèrics suportats inclou peces molt conegudes per qualsevol que hagi trastejat amb emulació PC clàssica: controladors d'interrupcions, temporitzadors, teclat, vídeo, disc, xarxa i àudio. En detall:
- Controlador d'interrupcions 8259 (PIC) i temporitzador 8254 (PIT), fonamentals per a la temporització del sistema.
- Controladora de teclat 8042 i CMOS RTC per a rellotge i configuració bàsica.
- VGA ISA amb Bochs VBE per oferir modes de vídeo compatibles.
- Controladora de disc IDE per emmagatzematge.
- Targeta de xarxa NE2000 ISA, una veterana molt estesa i fàcil d'emular.
- DMA ISA 8257, altaveu de PC, Adlib OPL2 i Sound Blaster 16 per a àudio.
Gràcies a aquest catàleg, el sistema no només mostra gràfics i arrenca un Windows amb interfície, sinó que té connectivitat de xarxa i pot reproduir so amb els conductors adequats, la qual cosa arrodoneix l'experiència “PC antic” de manera sorprenentment completa.
Maquinari de referència: JC3248W535 amb ESP32‑S3
La demostració que ha captat totes les mirades corre sobre la Guition JC3248W535, una placa de desenvolupament amb ESP32‑S3 i una pantalla LCD de 3,5 polzades amb tàctil. És un devkit que es pot trobar per uns 25-30 dòlars en botigues com AliExpress, i que, pel que s'ha vist, inclou tot el necessari per jugar a “PC nou de butxaca”.
Un detall important: sembla que el port USB‑C d'aquesta placa està pensat per programació i depurat, no com a host de perifèrics USB estàndard de l'ESP32‑S3. Tot i així, amb el perifèric USB OTG del xip, es podria imaginar un muntatge amb un hub USB on connectar teclat i ratolí, creant un mini‑386 amb entrada directa per cable.
Ara com ara, el suport oficial del projecte se centra en aquesta placa concreta, i l'autor indica que només ESP32‑S3 està cobert de forma nativa. L'arquitectura de l'emulador, però, busca la portabilitat: amb un esforç raonable, es podria portar altres microcontroladors i plataformes, cosa que obre la porta a més formats i pantalles.
Rendiment i experiència dús
La pregunta que tothom es fa: com va? La resposta curta és “funciona, amb paciència". L'arrencada completa de Windows 95 ronda els 4 minuts a la demo pública. Un cop carregat, el sistema respon amb lentitud però és manejable: es pot obrir el Bloc de notes, jugar al Solitari i fins a llançar Internet Explorer."
La connectivitat de xarxa està implementada, per tant l'emulador pot carregar llocs web bàsics. A la demostració es veu com obre info.cern.ch, la primera web de la història, cosa que afegeix un toc nostàlgic deliciós a l'escena de Windows 95 corrent en un micro de menys de 30 euros.
Pel que fa a la fluïdesa, és lògic que el conjunt vagi al límit: l'emulació afegeix sobrecàrrega i l'ESP32‑S3 no té acceleració gràfica PC. Tot i això, la sensació general és “usabilitat a la vora” més que un simple “arrenca i es penja”. Si et poses el vídeo al doble de velocitat —consell popular entre els que ja ho han vist—, la cosa es fa més suportable.
Com a nota simpàtica, Tiny386 pot executar perdició, aquest clàssic test de “si no corre Doom, no s'hi val”. I gràcies als dispositius de so virtualitzats (PC speaker, Adlib OPL2 i SB16), l'apartat auditiu també està cobert en la mesura que sigui possible dins de les limitacions del maquinari.
Sistemes operatius i programari compatibles
El catàleg que ja s'ha mostrat en vídeo inclou Windows 3.1 / 3.2 (amb la variant xinesa de 3.1) i Windows 95. Més enllà d'això, l'autor recalca que Tiny386 “hauria d'executar la majoria del programari de 16/32 bits”, i que amb l'ampliació d'instruccions de 486/586 és possible iniciar tant nuclis Linux relativament moderns com a Windows NT de l'època.
Un detall molt interessant és que Tiny386 és capaç de arrencar el nucli de Linux directament, sense passar per una BIOS tradicional, cosa que simplifica alguns fluxos de prova. Per explorar sense muntar un maquinari, el projecte ofereix a més una demo a WebAssembly que arrenca Windows 3.2 al navegador, i s'esmenten alternatives com FreeDOS o JSLinux per als que vulguin comparar experiències d'emulació a la web.
Al terreny de les aplicacions, a més del ja citat Doom, els programes bàsics de Windows 95 (Bloc de notes, Solitaire i Internet Explorer) han demostrat funcionar, amb les òbvies restriccions de rendiment. És una mostra suficient per concloure que la pila gràfica, dentrada/sortida i de xarxa està raonablement ben integrada.
Com s'utilitza l'entrada i els ports
A la placa JC3248W535, l'ús de perifèrics físics està condicionat pel USB‑C orientat a programació. Per salvar aquest escull, a la implementació actual el teclat i el ratolí es poden redirigir per Wi‑Fi cap a l'emulador, oferint control sense necessitat de ports dedicats al devkit.
De cara al futur, no seria estrany veure builds que aprofitin el USB OTG de l'ESP32-S3 com a host i que permetin muntar un hub per endollar teclat i ratolí convencionals. Aquest salt facilitaria força la interacció sense dependre de la pantalla tàctil o de solucions dentrada remota.
Llicència, codi i recursos per provar
El projecte es publica sota llicència BSD de 3 clàusules, cosa que anima a la seva reutilització i portabilitat. Al repositori de GitHub hi ha el codi font complet, instruccions bàsiques de compilació, documentació dels arxius de configuració i, per als qui van amb pressa, imatges precompilades llistes per flashejar.
A més de la documentació tècnica, n'hi ha una demo al navegador (GitHub Pages) que permet fer-se una idea de com arrenca Windows 3.2 i com respon el conjunt, sense necessitat de maquinari. Els que vulguin aprofundir també poden trobar informació i debats a pàgines com Hackster.io i Hackaday.io, i en comunitats com /r/maquinari, on aquestes proeses retro‑tech solen generar converses animades.
Mitjans com CNX Software o Tom's Hardware han cobert l'avenç, subratllant detalls com el llista de perifèrics emulats, la dependència de SeaBIOS per a BIOS/VGABIOS i l'estat actual del suport per a la placa JC3248W535. De fet, part de la difusió ha arribat amb l'impuls de la comunitat —gràcies a puntes com la de Zoobab—, cosa que explica la rapidesa amb què el projecte ha saltat a la primera plana maker.
De Linux a AVR a Windows 95 a ESP32‑S3
Per posar les coses en perspectiva, els qui recordin els intents de arrencar Linux a microcontroladors de 8 bits (com AVR) saben com pot resultar etern. Davant d'allò, veure un ESP32‑S3 emulant un 386 que estira Windows 95 se sent “ràpid” i, per descomptat, molt més pràctic.
També s'han vist èxits previs a l'ecosistema ESP32: Linux 5.0 a plaques ESP32 i, més recentment, una imatge de Linux 6.3 a la Olimex ESP32‑S3‑DevKit‑LiPo. Però l'arribada de Windows a aquesta família de micros marca un abans i un després en l'exploració de límits, pel peculiar de l'objectiu i l'exigent que resulta moure un entorn gràfic clàssic.
Limitacions actuals i oportunitats de millora
La llista de “encara no” inclou el depurador integrat, el maquinari tasking i certes comprovacions de permisos, a més dels inevitables colls dampolla de rendiment que vénen amb lemulació pura. També pesa que, de moment, el suport oficial estigui cenyit a la JC3248W535, el que limita la varietat de pantalles i accessoris disponibles de sèrie.
Al costat positiu, l'enfocament de Tiny386 és tan directe que hi ha marge clar per optimitzar: millores en memòria externa (latències de PSRAM), ajustaments fins a l'emulació de CPU, possibles rutes crítiques en perifèrics gràfics o de disc, i aprofitar l'USB OTG per elevar l'experiència amb dispositius reals. Cada petit avenç computa molt quan el pressupost de cicles és tan ajustat.
Preservació, educació i diversió retro
Més enllà del “perquè es pot”, projectes així tenen un valor didàctic i de preservació gens menor. Amb Tiny386, desenvolupadors i docents poden reproduir entorns x86 històrics sense maquinari original, cada cop més escàs i fràgil, i fer-ho en una plataforma ultrabarata i de baix consum.
Per a la comunitat, obre la porta a provar programari antic, documentar comportaments de sistemes legacy i muntar tallers on s'expliqui, amb exemples palpables, com els modes real i protegit del 386 condicionaven el disseny de sistemes operatius com Windows 3.x/95 i levolució de Linux.
També hi ha un punt cultural que no convé subestimar: és paradoxal —i molt divertit— que per “sentir potència” avui hàgim de emular un CPU dels 80 sobre un micro modern, quan portem a la butxaca mòbils milers de vegades més capaços que aquells PC originals. Aquest contrast ajuda a entendre quant hem avançat i perquè l'emulació és una eina tan potent.
Arquitectura interna: modes, memòria i BIOS
El i386 real combinava modes real i protegit, paginació i un MMU que va establir les bases de la memòria virtual a PC. Tiny386 replica la crítica d'aquest comportament perquè els sistemes operatius se sentin “a casa”, combinant l'emulació de CPU amb un conjunt de perifèrics que responen on el programari espera senyals ISA de tota la vida.
Un pilar aquí és SeaBIOS, d'on provenen la BIOS i la VGABIOS utilitzades. Això garanteix compatibilitat amb rutines dʻarrencada àmpliament suportades i evita dependre de ROMs tancades. Alhora, quan convé, l'emulador es pot saltar la BIOS i carregar el nucli de Linux directament, una drecera molt útil per a proves.
Portabilitat i ecosistema
En estar escrit a C99 i amb un core de CPU tan concís, portar Tiny386 a altres plataformes es torna un treball acotat: només cal implementar la capa d'I/O i adaptar la integració amb pantalla, entrada i emmagatzematge. El mateix autor destaca la portabilitat com la gran carta del projecte.
Això no només beneficia els que vulguin portar-lo a altres micros o SBCs, també facilita que tercers afegeixin perifèrics, proveu optimitzacions o fins i tot construïu frontends específics (per exemple, per llançar directament diferents imatges de Windows o distribucions DOS/Linux retro).
Què s'ha demostrat fins ara
La “prova de vida” de Windows 95 amb arrencada en ~4 minuts és l?estrella, però no arriba sola. També s'han mostrat Windows 3.1/3.2, la navegació bàsica amb xarxa (inclòs info.cern.ch), el funcionament d'aplicacions del sistema i l'execució de programari icònic com a Doom.
En paral·lel, n'hi ha una demo WebAssembly que arrenca Windows 3.2 al navegador, una forma estupenda de palpar el sabor de l'emulació sense soldar ni flaixar res. I per als més manetes, el repositori ofereix configuracions i una imatge precompilada amb què començar a la JC3248W535 amb poca fricció.
Comparativa amb altres experiències a ESP32

Davant d'altres donem com Linux a ESP32 “a pèl”, el salt a Windows 95 emulat afegeix un interès especial: obliga a reproduir una pila gràfica i de drivers més capritxosa, ia bregar amb expectatives d'interfície que no existien en una arrencada de consola.
L'experiència amb la Olimex ESP32‑S3‑DevKit‑LiPo i Linux 6.3 demostra que l?ecosistema ESP32‑S3 té marge per sorprendre. Tiny386 empeny aquesta frontera cap al territori Windows, tancant un cercle que semblava reservat a SBCs més potents com Raspberry Pi.
Al final, el que queda clar és que, amb una mica d'enginy, un micro de baix cost es pot convertir en una màquina retro força convincent, capaç d'arrencar sistemes complets i de donar-nos una classe magistral d'arquitectura de computadors dels 90.
Vista en conjunt, la història de Tiny386 condensa diversos èxits: emulació i386 concisa, perifèrics clau ben integrats, BIOS lliure, portabilitat pensada des del dia ui una demo que, encara que lenta, ensenya el que importa: que Windows 95 i Linux es poden moure en un ESP32‑S3 amb una fidelitat més que decent.
I sí, té el seu punt poètic que per rememorar la “màgia” de Windows 95 el 2025 no toquem un Pentium vell, sinó que estirem de un emulador de 6.000 línies i un devkit amb pantalla tàctil que cap a la butxaca. La informàtica de vegades és molt més divertida quan es barreja la nostàlgia amb l'enginy.
Redactor apassionat del món dels bytes i la tecnologia en general. M'encanta compartir els meus coneixements a través de l'escriptura, i això és el que faré en aquest bloc, mostrar tot el més interessant sobre gadgets, programari, maquinari, tendències tecnològiques, i més. El meu objectiu és ajudar-te a navegar pel món digital de forma senzilla i entretinguda.
