Show HN: RetroTick – Run classic Windows EXEs in the browser
retrotick.com
Demo: https://retrotick.com
GitHub: https://github.com/lqs/retrotick
retrotick.com
Demo: https://retrotick.com
GitHub: https://github.com/lqs/retrotick
> 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
Make 01 great again!
I wondered how much of this could be done with an LLM agent, and here we have the answer
The current state of RetroTick was achieved in less than one hour using Claude Code.
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.
We created it around 2004, for Windows XP. Used Borland C++ and Windows driver for LPT port. Driver was written in asm, just for fun.
Since then, factory changed hands two times, and relocated from EU to China. 20 years, and Windows app still is working. I think they ran it on even on windows 98 at first.
(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.
> We strongly recommend contributing with Claude Code or similar AI coding tools.
- when you finish the game, the final score appears, then disappears
- when you set the skill to master and start a game, the game still hangs after your first move.
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.
Checkout retrowin32 for something similar but written in Rust and not specifically targeting the web: https://github.com/evmar/retrowin32
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?
For performance, the CPU is fully emulated in plain TypeScript. It does not use WASM or JIT yet. It is still fast enough to run simple programs from about 30 years ago. In the future, JIT optimization may be added to improve speed.
These two .exe versions I have didn't work, but the ones already in the demo seemed to work: SKI WINMINE
Tried to run SHELL from QBASIC, but it crashes:
D:\qbasic.exe has encountered a problem and needs to close.
Reason: illegal instruction
Address: 0x00002feeThen I tried running the program SHELL and it crashed.
Also the command prompt won't list directories for some reason.