About this project (the reverse-engineering project) ===================================================== What this is ------------ This site runs a 1999 Windows game in a desktop browser. It is built the way the original game is not: the game is not emulated and it is not re-implemented by hand. Instead: * A recompiler translates the game's own program (x86 machine code) into WebAssembly, in your browser, when you first press Play. * A from-scratch re-implementation of the Windows and DirectX 6 APIs the game calls (kernel32, user32, gdi32, winmm, ddraw, d3d6, dinput, dsound, dplayx, advapi32, ole32) runs that translated program: file system, registry, timers, threads, surfaces, 3D device, sound and input. * The rendering, the audio and the input are driven by the browser itself (WebGL 2, the Web Audio API, the Gamepad API). Nothing of the game is shipped with the site. You unpack your own disc image in your own browser; the game files are read from the file you picked, written to this browser's private storage (OPFS) and never leave your machine. The site serves the player, the translator and the runtime — not one byte of the game. The project is an independent, non-commercial work of reverse engineering and clean-room re-implementation, published under the MIT license (see the LICENSE file in the source repository linked from the page). It is not affiliated with, authorized, sponsored or endorsed by Microsoft Corporation or Angel Studios, and it makes no claim over the game, its names or its assets. Why a disc image and a patched program -------------------------------------- The retail disc's program is protected by copy protection, so it cannot be run as it ships. The port therefore runs Microsoft's own Midtown Madness 1.2 update program (build 1589, "Angel: 1589 / Sep 16 1999"), which the player obtains from Microsoft's public update. Both the disc image and that program are the player's own files. Where the code comes from ------------------------- The runtime and the recompiler were derived from the MIT-licensed Shrek 2 Team Action browser port and, in places, from the MIT-licensed Bella Sara port; they were then adapted to the Windows and DirectX 6 surface that this game uses. The third-party components (FFmpeg, iced-x86, Emscripten and its libraries, dlmalloc and Vite) keep their own licenses: see legal/third-party.txt. Questions --------- The source repository linked from the page carries the full source of the runtime, the recompiler, the installer and the page.