# Bannerlator 3.0.8
Run Windows apps and games on Android — no PC and no root required.
**3.0.8 is the downloads-and-containers update.** Epic, GOG and Amazon downloads move to the same Rust engine Steam already uses — **two to nearly three times faster** on the same titles, same Wi-Fi. Containers stop being frozen to the compatibility layer they were born on: when a newer version of that layer appears, the container card offers **Update layer**, keeps your games, saves, shortcuts and settings, and can put the old layer back. Plus one-tap **Screen Effect Looks** in the in-game drawer, a **Media tab** on every store page, and the file-manager and EA fixes reported since 3.0.7.
> ⚠️ **Win-FG frame generation is still EXPERIMENTAL** — unchanged in this release. It is off by default; if it misbehaves, leave it off.
# What's New — everything since 3.0.7
## ⬇️ Epic, GOG and Amazon downloads — now on the Rust engine
The three remaining Java download managers are replaced by the adaptive-concurrency Rust engine that Steam has been using, with a shared fetch core per store. Same title, same phone, same Wi-Fi:
| Store | Title | Before | After |
|---|---|---|---|
| GOG | Gunslugs 3 (86 MB, 552 files) | 4.5 s | **2.2 s** |
| Epic | Alone With You (298 MB) | 11.4 s | **4.3 s** |
| Amazon | Dread Templar (4.2 GB) | 68.4 s | **48.4 s** |
- **Store download speed** — a new row in **Log Manager** (Slow / Medium / Fast / Blazing) sets how many pieces are pulled at once. **Fast** is the default and is the right answer for most connections; on a fast link the store's own CDN becomes the limit long before the setting does.
- The Java engines remain in the app as a fallback and are unchanged.
## 🔄 Update a container's compatibility layer — without rebuilding it
Until now a container was stuck on the Proton/Wine layer it was created with; getting a newer layer meant a new container, and re-installing everything in it.
- **The container card tells you.** When a newer build of your container's layer exists, the card shows **Update layer → v5** with a **?** button that explains, in plain language, what changes and what does not.
- **One tap.** Bannerlator backs up the container's registry, switches it to the new layer, and refreshes only Wine's own files inside the container. **Your games, saves, shortcuts and container settings are kept.** DXVK, FEX/Box64 and anything a game installed are left exactly as they are.
- **It fetches the layer if you do not have it.** If the newer layer is in the catalog but not on the device, the button shows a download icon and states the size; confirming downloads and installs it first, then updates the container.
- **Reversible.** The old layer stays installed and **Revert layer** is in the container's ⋮ menu, restoring the registry backup and the previous files.
- Only newer builds of the *same* layer line are offered (GE-Proton 11.0-6 v4 → v5), never a different Proton version and never a downgrade. Close the game before updating.
*Proven on device across all three paths: updating from an installed layer, downloading a catalog-only layer first, and reverting — with a Steam title launched afterwards to confirm the container still works.*
## 📦 New compatibility layers — versionCode 5
All seven Proton / GE-Proton layers were rebuilt (proton-wine release [`build-bionic-layers-20260907-eccode`](https://github.com/The412Banner/proton-wine/releases/tag/build-bionic-layers-20260907-eccode), now the in-app catalog default). They install into a new **`-arm64ec-5`** slot beside your existing layers — or use the new **Update layer** button above to move an existing container onto one.
- **Denuvo-protected games no longer die in the exception unwinder.** Wine's arm64ec `RtlIsEcCode` had no bounds check: unwinding a frame inside Denuvo's runtime produced a bad address, Wine read past its own code map, and the game black-screened on a stack overflow. Fixed — **Need for Speed Heat now reaches gameplay**, the first EA-app-era Denuvo title proven here.
- **Titanfall 2 boots on these layers too.** Whether that is down to the layer fixes or simply to EA Desktop being present in the container has not been established — both changed at once. Reported working; not yet profiled.
- **DirectAudio v1.3.2**, including opt-in microphone capture.
- **One file per layer instead of two.** The 4 KB and 16 KB page-size builds are unified into a single `.wcp` that runs on both.
- Everything from the `-4` layers is carried over: the EA Desktop networking and installer fixes, the font-handle cap, GE-Proton's game patches.
> ⚠️ **Components matter — the layer is only half of it.** A game that will not start is often a combination problem: the Proton layer, the FEXCore build and the DXVK version together. Heat was proven on the `-arm64ec-5` layer with FEXCore nightly `2608+45`, which is simply the build it finally booted on; on nightly `2608+229` it black-screened with a crash inside its own Denuvo runtime. Other FEXCore builds, including the catalog's stable ones, have not been tried on Heat yet. **Stable builds are what we recommend generally**, and if an EA title black-screens *after* the EA sign-in completes, changing the shortcut's FEXCore build is the first thing to try.
## 🏁 Need for Speed Heat — running through Steam and EA Desktop
The first EA-app-era **Denuvo** title running here, on a phone: added from the Steam library, launched through Steam → EA Desktop → game, on a GE-Proton 11.0-6 `-arm64ec-5` container.
*EA's own online sign-in and entitlement check complete inside the container — the networking fixes in the `-5` layers are what make this work.*
*Menu, opening cinematic and gameplay — D3D11 through DXVK on an Adreno 750. Frame rates are what they are on a phone: the menu sits near the panel cap, racing runs in the low teens.*
**▶ Gameplay clip (86 s, 1080p):** attached to this release as **`nfs-heat-gameplay.mp4`** — see the Assets list below.
**Expect a slow first launch.** These screenshots are from Heat's very first boot on the container, and it took a solid **seven minutes** from the EA sign-in screen to the game, with poor frame rates for the rest of that session — a cold start with an empty shader cache and a cold translation cache, which is the worst case rather than the norm. Every launch since has been quick and steady. Two things make that first boot worse than it needs to be: leave **Log Manager's Wine debug logging off** (with it on, an EA title can write gigabytes during startup and spend real CPU doing it), and let the first run finish rather than force-closing it, so the caches it is building survive.
> This run used the **`-arm64ec-5`** layer from this release with FEXCore nightly `2608+45` — the build Heat finally booted on, not a requirement we have proven. The same container on nightly `2608+229` black-screens with a crash inside Heat's Denuvo runtime, so **the FEXCore build is worth changing** if an EA title stops after the EA sign-in. Stable builds are the ones we recommend generally; they have not been tried on Heat yet.
## 🎨 Screen Effect "Looks" — one-tap presets in the game drawer
A row of named presets at the top of the drawer's Screen Effects section, on both renderer paths: Game Clarity, Vivid, Cinematic, Competitive, Adaptive Sharpen, Filmic, Arcade, Retro CRT, Upscale Sharp, Pixel Clean, Anime Edge. One tap sets every value a Look owns; moving one of those controls afterwards switches the row to **Custom** rather than lying about it. **Saturation** is new and is available on both paths, so the colour Looks grade identically whichever renderer you use.
## 🛒 Store pages — Media tab, and the catalog as a Contents source
- **Media tab** with screenshots and trailers on the Steam, GOG, Epic and Amazon detail pages.
- The **official catalog is usable as a Contents repository**, and a download can be kept as a **save archive only**.
## 🛠️ Fixes
- **File manager: the up arrow and Back work everywhere.** Opening a folder from **Favorites** — or from the Downloads / Games / Pictures shortcuts — made the app treat that folder as the top of the drive, so the up arrow greyed out and Back did nothing. Fixed, and every folder below the root now lists a **`..`** row you can tap to go up, in both list and grid view. *(Reported by **Devaspe**, [#476](https://github.com/The412Banner/Bannerlator/issues/476).)*
- **EA setup finds games added before the EA support existed.** A shortcut written by an older build carries no Steam app id, and EA setup reported "couldn't locate the game's install folder" — the fix matches the shortcut against your installed games and stamps the id back on. *(Reported for **Need for Speed Heat**.)*
- **Compatibility layers can go past version 9.** A version code of 10 or higher failed to resolve and silently fell back to the bundled Proton 9.
- **Relative Mouse is saved per game** ([#431](https://github.com/The412Banner/Bannerlator/issues/431)), and **file-manager cards have a uniform height** ([#475](https://github.com/The412Banner/Bannerlator/issues/475)).
- **The launch failure card's Close button works from the Games screen.** The card is drawn from one shared state; Close only finished the game screen, leaving an inert card behind.
## ⚠️ Carried over — still open
- **Cancelling a store download** removes it from the list but does not yet stop the transfer engine underneath. Force-stop the app to be certain it stopped. Cancel and resume on the new Rust store paths are not finished.
- **Origin-era EA titles ask for the EA sign-in on every launch**, and EA counts every one. Launch such a title many times in a short period and EA refuses it for a while ("too many computers"). This is EA's server, not something a reinstall fixes.
- **Need for Speed (2015)** does not run: its 2015-era Denuvo re-protects its own code thousands of times a second, which no Android emulation stack currently does fast enough. Every FEXCore mode and Box64 were tried.
- **Rockstar Games Launcher titles** (GTA V Enhanced) are not supported: the launcher installs but its Social Club web UI never loads.
- **64-bit titles launched directly by Steam** can still crash at startup with the overlay-injection signature and fall back to an insecure start; 32-bit-launcher titles (CS:S, TF2, L4D2) are unaffected.
- **The Java Steam engine fallback is still present.** Its removal has moved to a later release.
- Not yet device-tested in this release: the Contents hub's Official-repo mode and the Steam / Epic / Amazon Media tabs (Amazon needs a library refresh first).
## 📦 Where to get Proton 9
The APK does not bundle Proton 9 — Wine installs from the in-app catalog on first run.
> ⚠️ **A fresh install ships with no Wine at all.** On first run, open **Containers → the download icon** and install a Proton before creating a container. Updating from 3.0.7 changes nothing — your existing containers and Wine installs are untouched.
**Proton 9.0 arm64ec** — not bundled, download it if you want it:
**https://github.com/The412Banner/Nightlies/releases/download/Proton/wine/proton-9.0-arm64ec.wcp**
66.7 MB · sha256 `f8a99fed387f1b097009129dc49368c8f500927640a9d4c7a192d850b1b2068c`
Install it via **Containers → download icon → install the `.wcp`**. It also appears in the in-app catalog. *(Compiled as a wcp by **Xnick417x**.)*
---
## 🙏 Credits
**The Denuvo unwinder fix in the new layers** was diagnosed and implemented by **The412Banner**: reading the crash back through Wine's arm64ec exception path to an unbounded `RtlIsEcCode` lookup, patching it across all seven layer branches, and proving it on device with **Need for Speed Heat** — the first EA-app-era Denuvo title running here. The **in-place container layer update** and the **Rust download engines for Epic, GOG and Amazon** are likewise original work in this release.
Thanks to **GloriousEggroll** for GE-Proton 11.0-6, the base the arm64ec layers are built on; to the **Wine** and **FEX-Emu** teams for the runtime the fix lives in; to **Devaspe** for the file-manager report and its precise reproduction steps ([#476](https://github.com/The412Banner/Bannerlator/issues/476)); and to the community testers who reported the **Need for Speed Heat** install-folder failure and keep testing EA titles on their own accounts despite EA's activation limits.
Built on the work of many open-source projects and their communities:
- **Native Steam engine & SteamLite agent** — derived from **WinNative**'s GPL `wnsteam` client and `wn-steam-launcher` (hardened, extended and rebranded here); protocol groundwork from **SteamKit2** (the **SteamRE** team).
- **Steam (fallback engine)** — **JavaSteam** (joshuatam's fork of **SteamKit2**) and **Goldberg / gbe_fork** (Detanup01 & contributors).
- **Graphics & Frame Generation** — **Eden** (native LSFG present path) and **WinNative** (design reference); **DXVK** (Philip Rebohle & contributors), **VKD3D-Proton** (Hans-Kristian Arntzen & contributors), **Mesa / Turnip** (the Freedreno & Mesa teams), and **AMD FidelityFX (FSR)**.
- **Containers, launch & runtime** — **Wine** (WineHQ) and **Proton / GE-Proton** (Valve & GloriousEggroll); **box64** (ptitSeb) and **FEXCore** (the FEX-Emu team).
- **Audio** — Android **AAudio**, driven by our own **DirectAudio** endpoint.
- **The app itself** — **Winlator** (brunodev85) and its Cmod lineage; **GameNative** (GPL-3.0) for the Steam session-hardening and present paths.
*Steam is a trademark of Valve Corporation; EA, EA Desktop, Origin, Need for Speed and Frostbite are trademarks of Electronic Arts Inc.; GOG is a trademark of GOG sp. z o.o.; Epic Games Store is a trademark of Epic Games, Inc.; Amazon is a trademark of Amazon.com, Inc.; other names are trademarks of their respective owners. Bannerlator is an independent project — not affiliated with or endorsed by any of them. Each component remains under its own license.*
---
*Entirely app-side — no ImageFS reinstall. Install over 3.0.7; everything carries over.*