Bannerlator 3.0.0 — Pre-Release 2
Pre-releaseBannerlator 3.0.0 — Pre-Release 2
Run Windows apps and games on Android — no PC and no root required.
🧪 This is an opt-in beta, not a stable release. You're only seeing it because you turned on Settings → Include pre-releases. Stable users stay on 2.9.9 and won't be offered this. It installs entirely app-side — no ImageFS reinstall — so your containers, themes, accent and per-game settings carry over untouched.
🧱 Builds on Pre-Release 1. Everything from 3.0.0-pre1 is here — the ground-up audio stack (DirectAudio + adaptive PulseAudio/ALSA), the Contents hub, and the Adreno a6xx driver-crash fix. This cut is about what landed since pre1: a full Epic Games Store / EOS experience, a unified install-progress UI, an in-game graphics-API label fix, a controller input-death fix, and heavy-game memory headroom.
What's New — since Pre-Release 1
🎮 Epic Games Store — real EOS support (the headline)
Bannerlator's Epic support graduated from "launches games" to a genuine, badged, cancel-safe store experience with Epic Online Services (EOS) identity and authentication.
- Real launch-arg authentication + EOS identification — the launcher injects the genuine Epic launch arguments (auth, exchange, locale) so EOS titles that demand a valid session actually start, and the app identifies which of your games are EOS-backed.
- EPIC / EOS badges everywhere — a store EPIC badge and an EOS badge overlay the cover art (top-left) in grid views and sit beside the game name in list rows, with an EOS chip on the launch splash so you know what's starting. Grid columns were widened to fit.
- Denuvo-aware ownership token — for EOS titles behind Denuvo, an ownership token (
-epicovt) is passed when needed, gated by a Denuvo heuristic (literal-string scan + shipping-exe size) with a per-shortcut "Force Denuvo ownership token" override for edge cases. - Per-shortcut "Launch offline" — a toggle to launch an Epic title without the online auth handshake, with the Denuvo/Offline sub-toggles sensibly greyed out when EOS auth isn't in play.
- Selective install tags — pick which optional content (e.g. language packs) to install, plus delta / verify / repair so you only pull what changed.
- A cancel-safe, resume-safe downloader — this was a large reliability pass:
- Cancel is now honored across every phase — the chunk pool, the delta-verify phase, and the manifest/CDN phase — so pressing cancel actually stops the whole job.
- A keep-or-delete dialog on cancel, synced across all three surfaces (library, detail, in-progress), so the action buttons always reflect the real state; delete-on-cancel also clears the install record so no stale "Resume/Play" buttons linger.
- Atomic chunk writes — a chunk is written to a temp file and swapped into place, so an interrupted download can never leave a truncated chunk that a later resume would silently reuse (a class of corrupted-install bug).
- Launch quick-wins — locale/offline arguments, ownership-token and AdditionalCommandLine caching, and per-game fixes; plus a library de-duplication pass so a game can't appear twice.
📦 Contents — a unified install experience
The Contents hub (new in pre1) got the install flow it deserved, and the same popup now drives container-side component installs too.
- One shared install popup — a live progress dialog used by both the Contents hub and the New/Edit-container component installer, so installing looks and behaves identically wherever you start it.
- Live two-pass progress bar — download fills in a darker accent, install sweeps a lighter accent over it, finishing matched to your theme accent (no stray colours). Local-file installs show a single install bar (there's nothing to download).
- Metadata up front — the component type, description and version are read from the package and shown from the first frame, instead of only appearing at the end.
- A real Cancel — cancelling actually stops the install (best-effort on a native extract), and the finished popup stays open until you close it so you can read what happened. Progress also shows as a live percentage in the Android notification shade.
- Save location, de-duplicated — the "Save location" control now lives in one place (the Contents settings cog) instead of being shown twice.
- A D7VK browse chip in the Nightlies source, and a fix for a crash when deleting a component from the Installed tab.
🖥️ In-game HUD — accurate graphics-API label
The Fusion HUD's API label (DXVK / VKD3D / D3D12 …) was wrong for many modern games on arm64ec — a D3D12/VKD3D title (e.g. GTA V Enhanced) could read DXVK.
- Root cause: on arm64ec the DirectX modules aren't visible the old way (they're not mapped where the HUD looked), so the label fell back to the container's configured wrapper name.
- The fix: a layered resolver that reads the game's own ground-truth signals in priority order — an app self-report, the game engine's log (Unity
Player.log), then the wrapper's own logs (VKD3D / DXVK) — before falling back. It works even with the log toggle off (a tiny private log is written just for the label), and it now labels dual-API games correctly: a title that offers both DX11 and DX12 (e.g. Deus Ex: Mankind Divided) reads D3D11 in DX11 mode and D3D12 in DX12 mode, instead of being fooled by a startup D3D12 capability probe. - HUD polish — the in-game Show HUD toggle now turns the FPS counter on and builds the overlay live, and the HUD's background threads idle while it's off (a small battery/CPU win).
🎮 Controllers — input-death-mid-game fix
A frustrating bug where controller input could stop reaching the game mid-session is fixed (ported from WinNative #603):
- The fake-input ring buffer capacity was raised 512 → 4096, with proper store-release fences around its seqlock publishes, closing a race that could wedge the input pipe.
- Controllers are neutralised when the in-game drawer opens, so opening the overlay can't leave a stuck input.
Note: this is the input-death fix. The larger controller slot-takeover / player-assignment overhaul (#345) is still being finished and is not in this build.
🍷 Heavy-game memory headroom — WINEVMEMMAXSIZE
Some very large titles reserve an enormous virtual-address space up front (e.g. Deus Ex: Mankind Divided's ~489 GB reservation) and fail on the guest.
- A new
WINEVMEMMAXSIZEknob lets you cap the guest Wine VA reservation. It's opt-in and default-off (nothing changes unless you set it) and is recognised in the env-var picker.
🎞️ Frame generation — win-fg bring-up progress
win-fg (the clean-room replacement introduced in pre1) advanced toward working frame generation:
- Phase 3a interpolated-frame synthesis + blit is now bundled, with automatic background/foreground reset pulses on toggle-on and model change so the layer re-initialises cleanly, and the bundled runtime
.sowas refreshed several times (swapchain+1, HUD-rect masking, quality tuning).
⚠️ Still experimental. Frame insertion bring-up is ongoing; treat win-fg as a work-in-progress. If you want working frame generation today, lsfg-vk remains available and unaffected.
⚠️ Known limitations in this build
- win-fg frame generation is still in bring-up (see above).
- The controller slot-takeover overhaul (#345) is not merged yet — only the input-death fix above is included.
- The HUD probe-gate for dual-API games is fresh; if you see a mislabel on an unusual title, that's a bug report we want.
- Epic Denuvo ownership-token support is best-effort and hard to verify (few runnable Denuvo-on-EOS titles exist); it's inert unless a game needs it.
➕ Everything from Pre-Release 1 and 2.9.9, carried forward
All of pre1 (the audio stack, Contents hub, a6xx driver-crash fix, X-server correctness fixes, interface-scale sliders) and all of 2.9.9 are included unchanged underneath this.
🙏 Credits — for the work in this build
The changes since Pre-Release 1 build directly on:
- WinNative — the controller input-ring hardening (#603) adapted here for the input-death-mid-game fix (GPL-3.0).
- GameNative — the Epic Games Store / EOS plumbing and download model referenced for parity.
- VKD3D-Proton and DXVK — the Direct3D → Vulkan wrappers whose own logs power the new, accurate in-game API label (and which run the games it labels).
- AMD FidelityFX FSR3 (MIT) — the optical-flow front-end behind win-fg's frame-generation bring-up.
- Wine / Proton and GE-Proton (GloriousEggroll) — the runtime the new
WINEVMEMMAXSIZEguest-memory cap builds on.
And thank you to everyone on the pre-release channel who tested builds and filed reports this cycle — the HUD-label and Epic download fixes came straight out of that.
(The full upstream credits for everything Bannerlator is built on — Winlator, Wine/Proton, FEX, Box64, Mesa/Turnip, DXVK/VKD3D, DirectAudio and more — are carried in the repo and earlier releases.)
📖 Also available as a standalone document
The same breakdown lives in the repo for easy linking/reading:
→ Bannerlator 3.0.0-pre2 — Detailed Changelog
Report anything you hit — that's what a pre-release is for.
