logoalt Hacker News

Show HN: RetroTick – Run classic Windows EXEs in the browser

158 pointsby lqs_today at 1:06 PM46 commentsview on HN

RetroTick parses PE/NE/MZ binaries, emulates an x86 CPU, and stubs enough Win32/Win16/DOS APIs to run classics like FreeCell, Minesweeper, Solitaire and QBasic, entirely in the browser. Built with Preact + Vite + TypeScript.

Demo: https://retrotick.com

GitHub: https://github.com/lqs/retrotick


Comments

ThrowawayTestrtoday at 10:12 PM

Can it run doom?

chromeheartstoday at 1:49 PM

This is so cool & I'm really amazed by it but I couldn't help laugh at the readme

> We strongly recommend contributing with Claude Code or similar AI coding tools. [...] Of course, coding by hand is also welcome.

Funny time we live in lol

show 1 reply
lqs_today at 4:01 PM

Hidden feature: right-click any executable and select "View Resources" to browse its embedded resources like icons, bitmaps, dialogs, and version info. It even supports viewing Delphi forms (though Delphi programs can't actually run yet). Think of it as a browser-based Resource Hacker or eXeScope.

butokaitoday at 4:00 PM

Just a couple of hours ago I was thinking about this project from some time ago doing the same thing: https://github.com/evmar/retrowin32

I wondered how much of this could be done with an LLM agent, and here we have the answer

show 1 reply
jeroenhdtoday at 2:29 PM

Seems to run a lot faster than the previous proof-of-concept I've found (https://www.boxedwine.org/app). Then again, that website runs an entire Linux VM to support Wine.

show 1 reply
realityfactchextoday at 7:22 PM

Cool concept. I tried six different old Windows executables from programs I wrote way back when.

FWIW:

* My old VB 6 .exe apps all fail with "Reason: Unimplemented API: MSVBVM60.DLL..."

* My old QuickBASIC .exe apps fail in various other ways ("Illegal function call", etc.).

Keep on hacking.

show 1 reply
hard_timestoday at 5:26 PM

I wonder if this is the future of "I need to run my legacy Windows enterprise app on modern hardware"?

I suppose we're also not limited to WinNT look and feel, and can render dialogs, buttons, windows with any CSS framework?

Although, as the cost of building software is tumbling down, it will make more sense to re-build from scratch, targeting whatever runtime or platform you need.

pathartltoday at 7:40 PM

I had a not-really-similar idea of hooking Windows GUI APIs and exposing them over websockets to create a psuedo-RDP and rendering the UI in the browser. My purpose was to provide a remote interface for old dedicated game servers that can only be controlled via a GUI.

smusamashahtoday at 8:07 PM

I can right click and inspect HTML. I was thinking it will all be rendered on a single canvas. It's not. All the window elements like buttons, title bars etc are html divs. This is awesome.

maniazi83today at 6:58 PM

This is seriously impressive. Emulating x86 + stubbing enough Win32 APIs in the browser is not trivial.

How are you handling system calls that expect filesystem or registry access? Are those fully stubbed/mocked, or mapped to some in-browser virtual layer?

Also curious how you’re handling performance for heavier binaries — interpreted JS/WASM core?

ddgfloridatoday at 8:02 PM

Nice. QBASIC FOR i = 1 to 5: PRINT i: NEXT hung up after 4. The shift key didn't work in the Qbasic Editor.

LinusUtoday at 2:19 PM

This is super cool!

Checkout retrowin32 for something similar but written in Rust and not specifically targeting the web: https://github.com/evmar/retrowin32

show 1 reply
Tepixtoday at 2:44 PM

Tried it with REVERSI.EXE from Windows 3.0 from https://winworldpc.com/download/c2bbc28f-177a-c2b2-5311-c3a4... DISK02.IMG

(you have to first uncompress it, for example with 7zip).

    $ sha256sum REVERSI.EXE
    a9e319c8f479d1568beec03858fdbb27c71747b2bbed6cd7c9f5e2daa23b40e9  REVERSI.EXE
Result:

The game starts, it begins rendering the board, but then hangs.

show 3 replies
TechSquidTVtoday at 2:42 PM

Please let me plan Sim Theme Park. I can't seem to run it on Crossover on my mac.

show 1 reply
ale42today at 3:20 PM

Funny project...

Tried to run SHELL from QBASIC, but it crashes:

  D:\qbasic.exe has encountered a problem and needs to close.
  
  Reason:  illegal instruction
  Address: 0x00002fee
show 2 replies
stuaxotoday at 4:12 PM

Not sure shift is working. I tried using QBASIC but couldn't type : only ; because of that.

Then I tried running the program SHELL and it crashed.

itintheorytoday at 4:54 PM

Seems like the .scr files trigger CrowdStrike Falcon. Not clear where the executables run here come from...

haonnoahtoday at 3:12 PM

Pretty cool. The pipes program doesn't seem to have color. Thoughts on making programs launch from a URL parameter? IE Launching a screensaver or game?

show 1 reply
b3lvederetoday at 1:52 PM

Aww. The FreeCell cheats don't work, except for -1 and -2 :)

show 1 reply
em3rgent0rdrtoday at 4:28 PM

Impressive. Noting however that double-clicking is not working in Minesweeper. :)

Dwedittoday at 2:24 PM

Not enough Shell32 to run Winfile or Notepad.

Also the command prompt won't list directories for some reason.

show 1 reply
tty456today at 5:32 PM

Winamp 2.x would be great to add if allowed!

KellyCriteriontoday at 6:04 PM

they even have SSMAZE.SCR, that 2.5D rendering screensaver! :D

alfiedotwtftoday at 4:22 PM

Whoa, this is pretty sick!!

wertyu123today at 1:42 PM

Nice

octoclawtoday at 2:07 PM

[dead]