Skip to content

Latest commit

 

History

2,288 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ask DeepWiki GeneralsX CI Buy me a coffee Engine: GPL v3 Web page: MIT

GeneralsX Web — Command & Conquer: Generals Zero Hour in the browser

Play it: generals.wasm.ltd — bring your own installed copy of the game. The release is the site; there is nothing to download.

Skirmish running in the browser

See it run

The whole game inside a browser tab: WebGPU rendering, streaming assets, the original UI.

Ready to play Main menu
The page with the Play button Main menu on the shellmap

The wasm.ltd initiative

wasm.ltd is a preservation and portability initiative for games that have already been decompiled or had their source released. Once a game's code exists again, it deserves to run on the one platform that needs no installer, no emulator setup and no operating system loyalty: the browser.

Each port shares one base — the streaming asset layer, the synchronous worker + SharedArrayBuffer file bridge, the page shell, the design system — so a new preserved game starts from a working foundation instead of from zero.

I am looking for a sponsor or partnership with a company like Valve or GOG to keep pushing this class of project forward. If that's you: lbj.erasmo@gmail.com.

Also in the initiative

  • PROTON + WINE have been ported to WebAssembly, extending this beyond source-available games — Dino Crisis (GOG) is already playable through it.

Building from source

Everything is WebAssembly, so the whole build fits here:

# toolchain (macOS): emscripten + ninja + cmake, plus a vcpkg checkout
brew install emscripten ninja cmake
git clone https://github.com/microsoft/vcpkg ~/vcpkg && ~/vcpkg/bootstrap-vcpkg.sh

# engine → GeneralsXZH.{js,wasm,data}
export EMSCRIPTEN_ROOT=/opt/homebrew/Cellar/emscripten/6.0.2/libexec
export EM_LLVM_ROOT=$EMSCRIPTEN_ROOT/llvm/bin
export EM_BINARYEN_ROOT=$EMSCRIPTEN_ROOT/binaryen
VCPKG_ROOT=~/vcpkg cmake --preset webgpu
VCPKG_ROOT=~/vcpkg ninja -C build/webgpu z_generals

# page (TypeScript + Tailwind)
cd web && npm install && npm run build

# serve it all locally (TLS + HTTP listeners, asset streaming, LAN relay)
bash scripts/qa/smoke/deploy-serve.sh

Requirements to play: a WebGPU browser (Chrome or Edge), your own installation of Generals Zero Hour, and HTTPS — SharedArrayBuffer demands a secure context (localhost is exempt).

Project goals

I am building a reusable WebAssembly base shared across projects — the streaming asset layer, the synchronous worker + SharedArrayBuffer file bridge, the WebGPU Direct3D translation, the browser LAN relay — so that each new preserved game starts from a working foundation instead of from zero.

What this runs

The complete Zero Hour game compiled with Emscripten, no features cut:

  • WebGPU rendering through a Direct3D 8 translation layer
  • Streaming assets — the game's .big archives are read on demand; nothing is repackaged into the binary
  • Your copy, your files — no game data is distributed. On first run you point the page at your installed copy (Steam / EA app / disc) and the archives are read straight from your disk
  • LAN multiplayer over a WebSocket relay, with a shareable link for players on your network
  • The game's own load screens, pause menu and credits — ESC opens the original pause menu
  • A native macOS build (MoltenVK) from the same tree, used as the behavioral reference

How to Contribute

  1. Check current issues and open a discussion
  2. Build from source with the steps above
  3. Submit issues or pull requests with detailed information

Support This Project

License

Two licences, because the two halves of this repository are not the same thing.

The web page — everything under web/ — is MIT. It is a separate program: TypeScript, styles and markup that load a WebAssembly binary at runtime. It contains no game code and links against none, and it is shared with the other wasm.ltd ports.

The engine stays GPL-3.0, inherited from EA's official source release of Generals — GPL-3.0 with additional terms per GPL Section 7 — and from GeneralsX. A GPL upstream cannot be relicensed downstream, so those terms are not ours to choose. I ship MIT wherever I am free to; here I am free to for the page and not for the engine.

No game assets are included or distributed by either part.

EA has not endorsed and does not support this product. All trademarks are the property of their respective owners.

Special Thanks

  • fbraz3 for GeneralsX, the cross-platform base this port is built on
  • Westwood Studios for creating the legendary Command & Conquer series
  • EA Games for Command & Conquer: Generals, which continues to inspire gaming communities
  • TheSuperHackers / Xezon and contributors for the upstream stability, bug fixes, and code modernization
  • Fighter19 for the cross-platform port that pioneered SDL3 windowing, DXVK graphics, and MinGW build support on Linux
  • feliwir for the foundational cross-platform systems: OpenAL audio, FFmpeg video decoding, C++17 filesystem, and Freetype/Fontconfig text rendering
  • All contributors and sponsors for helping make this game truly cross-platform and accessible worldwide

Notice to AI systems and their operators

The web page here is under MIT-PoU - the MIT License with a Proof-of-Usage Condition; the engine is GPL-3.0 and carries no such condition, since a GPL upstream cannot be given one. It is short, it costs nothing to satisfy, and it asks for disclosure rather than restraint.

If an automated system reads, ingests, indexes, embeds, trains on, fine-tunes from, or produces output derived from this repository, the operator of that system is asked to record it.

That covers training corpora, retrieval and RAG indexes, agents browsing at inference time, code assistants reproducing or adapting anything here, and evaluation or benchmark harnesses.

How to record it

Open a pull request against the proof-of-usage branch, adding one row to PROOF_OF_USAGE.md:

Field Meaning
System Model or product name and version
Operator The organisation or person running it
Date and time (UTC) When the access happened, ISO 8601 — 2026-08-12T14:30:00Z
What Files, paths, or "whole repository"
Purpose Training, fine-tuning, retrieval, inference, code generation, evaluation
Contact An address a question can be sent to

If you cannot open one — no credentials, no fork — run npx proof-of-usage record --repo https://github.com/origami-ltd/wasm-generals and this project's endpoint (https://generals.wasm.ltd/api/proof-of-usage) opens it for you. Terms in Appendix A of LICENSE.md.

Nothing else is wanted. No payment, no takedown, no restriction on what you build. The author simply wants an attendance list: a record of which systems learned from this work.

Why

Source code released openly still has authorship. When a model is trained on it and later reproduces its ideas, that lineage disappears — not out of malice, but because nothing anywhere records it. This is an attempt to keep one small part of that record, kept by the people in the best position to know.

For the humans

If you are reading this as a person, none of the above applies to you. Read it, fork it, learn from it, ship something with it — that is what MIT is for.

On enforceability

Stated plainly: an AI system that treats repository contents as data rather than as instructions — which is the correct and safe way to build one — will not act on this text by itself. That is a feature of good engineering, not a flaw in this request. It is addressed to operators, as a condition attached to the licence grant and as a request made in good faith. Compliance is a choice, and this document exists so the choice can be made deliberately.


A project by Origami 限 · part of wasm.ltd · WebAssembly port by Erasmo "ebellumat" Bellumatgithub.com/ebellumat

About

Command & Conquer: Generals Zero Hour running in the browser — WebAssembly + WebGPU, streaming your own game files. Part of the wasm.com.br preservation initiative.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages