BottleShip 0.7 expands game compatibility, improves rendering and importing, and adds
experimental AOT code caching. This release includes everything merged into main
since October 5, 2026, through the 0.7 release on October 8.
- Compatibility has grown from 15 to 53 games. Titles now running include Need for Speed: Underground 2, XIII, Far Cry, The Bard's Tale and Mafia. See the full compatibility list for the tested editions, demo coverage and remaining limitations.
- An optimized Direct3D 9 implementation. Rendering runs in a dedicated worker, with batched WebGPU submission and broader shader, texture and render-state support.
- It's easier to add your own GOG games. Import supported offline installers, including multipart EXE + BIN downloads, directly into the library. Review the executable and settings, save the package, or download a reusable WGB. In Chrome, you can also select an installed game folder or a GOG installer folder. Everything is processed locally. GOG import guide.
- On-screen controls for mobile devices. Touch controls, configurable virtual gamepad layouts and an on-screen keyboard make more games accessible without a physical keyboard and mouse.
- Improved loading times and frame rates across many games. CPU and rendering optimizations are joined by persistent streaming caches: downloaded bundle ranges are reused locally, and cold file reads park the guest instead of wasting CPU time. Results depend on the game, browser and hardware; large demos can still take time to load on their first run.
- Experimental AOT code caching. Record WebAssembly generated while a game runs, save it locally and reuse compatible code on later launches. More on this below.
- A much larger public demo library. There are now 42 entries, with original cover artwork, a curated featured order and sorting by title, genre or year. Recent additions include Thief Gold, Cossacks, Mafia and Blade of Darkness. Try the library.
Installer support has also expanded to supported variants of NSIS, MSI/CAB, Wise, VISE, older InstallShield payloads and RAR4 self-extractors. Improvements to native launchers and child processes, saving, legacy text rendering and palette handling help more games get from their setup screens into gameplay. Demo verification stages are recorded separately in the compatibility document.
The CPU emulator's JIT translates x86 code into WebAssembly as the game runs. BottleShip can now record those generated modules, persist them in browser storage and load compatible ones again on a later run of the same game. Unrecorded code continues through the normal JIT, and cached code is checked against the game's code pages and the runtime configuration before reuse.
To try it, open Developer tools from the in-game toolbar:
- Click AOT: Record.
- Play the scenes you want to capture.
- Click AOT: Save before closing the game.
- Leave AOT: Auto enabled and reload the same game. AOT: Status shows the loaded units and whether they have actually been entered.
This is the first step toward a broader AOT pipeline. The current user-facing feature reuses recorded JIT output; experimental offline compiler and correctness tools are also in the repository. Whole-game recompilation and near-native performance are research goals.
- Bring games from 2006–2009 into reach, with good performance. We'd like to push toward the later years of the 32-bit Windows era with titles such as Command & Conquer: Red Alert 3, Batman: Arkham Asylum, Assassin's Creed and Burnout Paradise. These are targets for upcoming work.
- Explore static recompilation of x86 games into WebAssembly without source code. The JIT already produces WASM, and AOT recording lets us keep it. The next question is whether we can analyze and optimize that code enough to get performance close to native ports built from source. That's the ambitious part we'd like to investigate :)