About this project
Wine-Assembly is a browser-based Windows 98 emulator that executes original, unmodified .exe files. It consists of an x86 interpreter and a reimplementation of the Win32 API, both written directly in WebAssembly Text (WAT). No operating system image is booted, and no source ports are maintained. The emulator loads PE files directly, decodes x86 basic blocks into a threaded-code cache, computes CPU flags lazily, and dispatches Win32 API calls to WAT handlers. It supports 16-bit Windows 3.1 NE executables, real DLLs with relocations, DirectX (DirectDraw, Direct3D, DirectSound, DirectInput), and a virtual LAN for multiplayer over Winsock and DDEML.
A wide range of applications run, including games like 3D Pinball Space Cadet, SkiFree, Solitaire, Minesweeper, Chip's Challenge, Diablo shareware, and Winamp 2.91/2.95, as well as Windows 98 accessories such as Notepad, WordPad, Calculator, Paint, RegEdit, and Task Manager. The smoke matrix tracks 114 binaries, with 81 passing, 29 warnings/known limitations, 4 expected 16-bit skips, and no unexpected crashes.
The project differs from v86, 98.js, Webamp, and js-dos by skipping BIOS, kernel, and disk boot, loading the PE file directly for fast startup, and running actual binaries rather than recreations. It is written in WAT by hand, with about 210,000 lines across 61 source parts, plus a JavaScript host providing canvas, file/network I/O, audio, input, and timers. The build uses a custom WAT compiler and produces both tail-call and compatibility WebAssembly builds of about 1 MB each.
Quick start instructions cover building with `bash tools/build.sh`, serving locally, and running from the command line with Node.js. The CLI supports tracing, breakpoints, input injection, and rendering frames to PNG. The repository includes extensive documentation on memory layout, design notes, and per-app reverse-engineering notes. The project is MIT licensed.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.