Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,877 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bannerlator

Bannerlator

Windows applications and games on Android.

Important

This repository is an experimental autonomous-setup fork maintained at moukrea/Bannerlator-AutoSetup. It is based on The412Banner/Bannerlator and is not an official Bannerlator release.

The current milestone is Steam-first: it creates and configures a managed container automatically, applies the closest known community/device profile, reconciles downloaded components with their real on-disk profiles, and validates sustained rendered gameplay instead of accepting the first Wine window. The game page now exposes setup state, repair, crash/early-exit diagnostics, and a consented Steam fallback ladder (Regular → Experimental → Cold Client). A tuning baseline records timestamped keyboard, mouse and XInput events plus performance/stability.

Still to build: deterministic playback of that trace, the target-aware 30/45/60/max-FPS search engine, and equivalent autonomous flows for Epic Games and GOG. The present APK does not claim those unfinished stages are functional.

This branch is an early integration prototype. Keep the upstream project's GPL-3.0 license, credits, and original project notice below when redistributing it.

Total Downloads Platform License Ask the AI

Support on Ko-fi

Download Latest Release Community Config Library Report a Mali GPU game issue

ContentsAsk AIDownloadConfig LibraryMali ReportsDiscordTelegramBuildsCredits


📌 Project Notice

Bannerlator is a personal build — made by me (The412Banner), for my own device, my own needs, and my own use.

It's a personal continuation of the Winlator Star Bionic project (star-emu/star) after it was discontinued and archived. None of the original developers are involved except me; it stands on their work plus cherry-picked commits from across the community — all credited below.

This is NOT an official or general-purpose Winlator release. It is built and tuned for my hardware and my workflow, and published as-is purely in case it happens to be useful to someone else.

  • No guarantee it works on any other device, GPU, or Android version.
  • No support, and no commitment to fix anything that works for me but not for you. If a feature works on my device, it isn't broken — for me, which is what this build is for.
  • Bug reports / feature requests for setups I don't run may simply be closed. That's not personal; this just isn't a community-support project.

You're free to use, modify, fork, or share it (GPL-3.0). If it doesn't work on your setup, that's expected — it wasn't built for it.


ℹ️ Information

App label Bannerlator Bionic (standard) · Bannerlator Bionic PuBG (pubg) · Bannerlator Bionic Ludashi (ludashi)
Packages com.winlator.banner (standard) · com.tencent.ig (pubg) · com.ludashi.benchmark (ludashi)
Version Bannerlator V 2.9.9 — built from Star marcescence (versionName 2.9.9, versionCode 71)
Android SDK compileSdk 34 · targetSdk 28 · minSdk 26 (Android 8.0+)
Lineage Winlator → cmod → Bionic Nightly → Star Bionic → marcescenceBannerlator

🐛 Report a Mali GPU Game Issue

Games misbehaving on a Mali GPU (Exynos / Dimensity / Kirin / Helio devices)? We run a dedicated public bug-report board for Mali devices — file a structured report with your logs, and get answers back from the developers in a public discussion thread on each report.

File a Mali report Browse all Mali reports

Every report gets its own public discussion thread. You can reply as the original poster — no account or password needed — and the developers answer right there in the thread.


📖 Contents


🆕 What's New in 2.9.9

Hotfix over 2.9.8. Entirely app-side — install over 2.9.8, everything carries over.

🙏 Sorry for the churn — 2.9.8 shipped the TV / external-display feature before it was ready (it broke on Samsung DeX and Motorola desktop modes), so 2.9.9 is a quick turnaround to pull that feature until it's finished rather than leave a half-working release up. Thanks for the reports and patience.

  • 📺 TV / external-display output temporarily turned off. After reports it misbehaved on Samsung (DeX) and Motorola devices (#339) — game wouldn't go fullscreen, FPS HUD vanished, mouse stopped — the whole TV feature (auto-swap onto a TV/DeX display, the in-game TV tab, and the experimental wireless caster) is disabled until it's finished and properly tested. Plugging in a TV no longer pushes the game to it. Nothing is lost; saved TV settings stay on disk and the feature (with the DeX fix in place) returns in a later build.
  • 🎮 Controller/touch fix (#338, thanks @NaufalFajri). An explicit "-- Disabled --" touch-controls choice is honored and persists across launches (no phantom on-screen pad, no fake timeout), and the smart-default on-screen pad no longer spawns when a physical controller is already connected at launch.
  • 📝 Deeper log capture. Log Manager → "Capture logcat now" now grabs up to 10,000 lines (was 1,000) — still app-scoped, redacted, and on-demand — so bug-report logs reach much further back.
  • 🔊 Coming soon in 3.0: a ground-up audio stack rebuilt on PulseAudio 13.0 with a new adaptive AAudio sink that smart-adjusts on the fly, plus a dedicated in-game Audio tab / container-editor Audio panel with presets, fine-tuning and guest-latency control. Not in this build — in the works.

🆕 What's New in 2.9.8

2.9.8 continues the road to 3.0, focused on audio and playing on the big screen, plus a batch of stability fixes. Everything from 2.9.7 is included. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.7; your containers, themes, accent and per-game settings carry over untouched.

🎧 Audio that follows your headphones. Plug in or pull out wired, USB-C, Bluetooth or HDMI audio mid-game and the game's sound now moves to the new output within about half a second — in both directions. Previously, plugging headphones in during a game did nothing (audio stayed on the speaker or went silent), and unplugging could leave the game muted; headphones only worked if they were in before launch. Under the hood, an output-route change tears down the guest's audio stream and a torn-down stream can't just be "resumed" — so Bannerlator now rebuilds the audio path onto the new device on the fly and slides the game's sound onto it, without restarting audio or interrupting the game. Audio is also re-established automatically when you return to a backgrounded game or switch to an HDMI TV, with a manual "Reset audio" button in the TV options as a backstop.

📺 Play on your TV — new TV Options. Send a game to an external display (USB-C → HDMI or a dock) and use the handheld as the controller, with a dedicated TV panel: aspect ratio, scaling and render resolution for the TV, overscan correction (kills the black bars some TVs add), latency and frame-cap / frame-gen controls, an audio-route selector, and dim-handheld (dims the phone to save battery/heat). A pause pill shows on the TV and an on-phone badge makes it clear where the game is running. For the best TV experience, use a wired connection — it's low-latency and carries full audio.

📡 Wireless casting — ⚠️ experimental, video-only. New no-app wireless casting streams a game to a Chromecast / Google TV from the in-app Cast picker with nothing to install on the TV. It's early: noticeable latency, and game audio stays on the phone for now (TV audio over cast is in progress). Treat it as a fun extra — for real play on a TV, use the wired external-display path above.

🔕 Quieter session notification. The "session running" notification no longer pops up and makes a sound on every container/game launch — it now sits silently in the notification shade. The background-keepalive service is unchanged, so backgrounded games still stay alive.

🎮 Controller polish. On-screen controls now auto-hide when a physical controller is connected (and return when it disconnects), you can copy bindings between controllers, and the External Controllers / Players lists refresh live on hot-plug.

🩹 Stability fixes. A batch of renderer / X-server correctness fixes; swiping the app away now reliably tears down stale Wine processes so the next launch starts clean; and a host-side re-pin keeps your chosen CPU affinity from drifting back onto disabled cores during play.

Credits: the external-display concept and the suspend-sink audio-recovery approach are credited to GameNative — implemented clean-room here (the TV Options suite and the native audio client are our own). Wireless casting is entirely original to Bannerlator.

🆕 What's New in 2.9.7

2.9.7 is a small, focused update over 2.9.6 on the road to 3.0, headlined by a big controller-reliability overhaul. Everything from 2.9.6 is included. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.6; your containers, themes, accent and per-game settings carry over untouched.

🎮 Controller reliability overhaul. Controllers that stay connected and land on the right player. Hot-plug that holds — physical pads survive mid-game reconnects and Bluetooth sleep/wake via stable descriptor-keyed player slots. On-screen controls no longer die after ~15 minutes (rewritten shared-memory input transport). No more stolen Player 1 — a capability filter ignores handheld aux buttons (e.g. the AYANEO's) so your real controller stays Player 1. A new Players panel pins each controller (and the on-screen pad) to Player 1–4 / Auto / Ignore, live in-game and per-container/per-game, with shared-slot and on-screen auto-yield. Plus a controller-status toast on launch/changes, a one-tap Reset Input, and a "?" on every option.

🧠 Free Memory — honest and effective. The "Free memory" action is now two clearly labeled tiers: a light Drop file caches, and a root-only Deep clean that force-stops background apps to reclaim real RAM while sparing your running game and system apps — with an optional auto deep-clean on launch.

🧩 Task Manager — Processor Affinity readback. Setting a process's Processor Affinity always took effect, but the dialog used to reopen with all cores checked; it now shows your real selection every time.

Credits: controller overhaul builds on community forks — WinNative (shared-memory transport + descriptor-keyed slots), palazos (winlatorCmod hot-plug reconnect hooks, brunodev85 → Pipetto-crypto lineage), and GameNative (progressive input-capability handling).

🆕 What's New in 2.9.6

2.9.6 is a feature-and-fixes release over 2.9.5, headlined by a rebuilt in-game Task Manager and a new D7VK wrapper that runs old DirectX 7 / DirectDraw games on Vulkan. Everything from 2.9.5 is included. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.5; your containers, themes, accent and per-game settings carry over untouched.

🧰 In-game Task Manager — now a real control panel. The process list grew into a proper control panel. A Windows-style "Set affinity" on any running process's ⋮ menu lets you pin it to specific CPU cores live, mid-game — no relaunch — applied through the guest's real affinity path, with core toggles that match the container/game core-picker. Above it sits a live telemetry header: CPU & GPU usage and temperatures, GPU clock, FPS (+ minimum), RAM, swap, battery (level / watts / temperature / charging) and a per-core clock strip — all from the same cross-vendor sensors as the performance HUD. Plus a collapsible container info panel summarizing the running Wine/Proton, DX wrapper, renderer, driver, resolution and device. Which telemetry readings are available varies from device to device — some sensors (GPU load/clock, temperatures, battery watts) depend on what the manufacturer exposes, so a few values may read "—" on certain hardware.

🎮 D7VK — DirectX 7 / DirectDraw games on Vulkan. Old DirectDraw / Direct3D 3–7 titles historically took a slow OpenGL path. D7VK (WinterSnowfall's Vulkan implementation, a DXVK cousin) runs them straight through Vulkan instead — a new D7VK option in the DDraw Wrapper picker, per-container and per-game. It ships bundled and offline-ready as the default, and is catalog-backed: pick D7VK and a "D7VK Version" dropdown + download button appears, so you can pull bleeding-edge nightly d7vk builds from the catalog and switch between them. Entirely app-side — the wrapper drops into the container at launch, no ImageFS reinstall.

🧭 Container editor — tabs back on top in portrait. In portrait the editor tabs (General / Environment / Drives / Win Components / Advanced) now sit in a single icon bar across the top, spread evenly across the full width, with ? help (and Reset on the defaults screen) at the end of the row — reclaiming the wasted band. Landscape is unchanged (the collapsible left rail), and it applies to all three container screens — New Container, Edit Container and New Container Defaults.

🛡️ Backgrounded games stay alive. Switching to another app (or taking a call) mid-game used to let Android quietly kill the container. 2.9.6 runs the game session as a real foreground service with a persistent notification, so a backgrounded game or container keeps running instead of being evicted.

🎛️ Deeper graphics tuning (Turnip). GMEM control (Auto / On / Off) for Adreno (710 / 720 / 722) — force tiled rendering on or off, per-container and per-game — plus advanced TU_DEBUG tokens (concurrent-binning force/off, deck-emu, and more) for tricky titles. Each option carries a "?" explanation and a glossary entry.

📟 Performance HUD — wider device support + honest API labels. The HUD now reads GPU load / clock and charging state on MediaTek (GED) and other non-Adreno devices, and apps that report their active graphics API (e.g. the bundled AIO Graphics Test's per-backend tests) now show the correct API instead of a best guess.

❓ "?" help everywhere + glossary. Per-option "?" help buttons now cover every technical setting across the container editor, the per-game shortcut editor and the Turnip / Wrapper driver config, each backed by a plain-language glossary.

📦 Bundled in every container (picked up automatically, no reinstall): AIO Graphics Test 2.0.1 (repo) — single-window multi-API benchmark with an automatic OpenGL fallback for Mali / broken-DXVK; Banner File Manager 1.2.0 (repo) — faster on large folders; and Pale Moon, a lightweight browser launchable from the Start Menu.

🌐 Fixes. Containers now get a usable IPv4 DNS resolver, fixing games and launchers that couldn't resolve hostnames. New containers show up immediately in the Games "add a game" container picker — no relaunch needed. Pale Moon no longer clutters the container desktop or Games tab (Start Menu only). Plus assorted stability and UI polish.

🆕 What's New in 2.9.5

2.9.5 is a feature release over 2.9.4, headlined by a brand-new Unpack Archive tool and a full landscape UI overhaul. Everything from 2.9.4 is included. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.4; your containers, themes, accent and per-game settings carry over untouched.

📦 Unpack Archive — install games right in the File Manager. A new extractor built into the File Manager (⋮ → Unpack, or one-tap Fast Extract): ISO/UDF, ZIP, RAR, 7z and the TAR family via a bundled 7-Zip engine; GOG installers pulled straight out of setup_*.exe via a bundled innoextract; and — the headline — native FreeArc repack install with no PC: FitGirl/DODI-style FreeArc repacks (LZMA / tornado / rep) now decompress on-device via a bundled NDK unarc (srep-based repacks still need a Windows PC — the app tells you and offers the container route). Fast Extract unpacks to a new folder straight into a minimizable progress pill with a foreground notification, so multi-hour extracts survive backgrounding. Content-aware ⋮ menu (offers unpack on any real archive regardless of extension) plus power/thread and read-buffer controls.

🖥️ Landscape UI overhaul. Landscape stopped wasting the top and bottom of the screen. Tabs moved to a collapsible left rail on the Container editors, File Manager and Save Manager — it collapses to icons (with tiny labels in portrait), remembers per-screen, and reflows on rotation without losing your tab, edits or scroll. File Manager gains a left Locations rail (Internal / SD / Downloads / Games / favourites), grid by default in landscape (the grid/list toggle now works in portrait too), a New Folder button in the toolbar, and outlined selectors. Save Manager gets a left Steam/Custom/Settings rail, multi-column game cards, and a sync-count badge + banner. Container editors get the rail, reclaimed bottom space, and the Wine-glass container glyph. A slim top header on every screen, plus a new App Orientation setting (Auto / Portrait / Landscape) that locks the app UI — games are unaffected.

🎞️ Frame Generation & Present Modes. Frame-gen was being strangled by FIFO backpressure — it now forces mailbox while FG multiplies, and bionic-fg is re-enabled (device-verified). A live in-game Present Mode selector lands on the Graphics tab (FG gated to the Vulkan renderer), with "?" help + a glossary across the container/game editors and the shortcut editor. ⚠️ Frame generation is still experimental and a work in progress — please don't expect magic results; outcomes still vary from game to game, device to device, and with the components used. Both bionic-fg and lsfg-vk are offered — treat them as experimental and use whichever works best for your game.

🐛 Fixes. The GL/Zink perf-HUD now reads real FPS (was stuck at 0.0) — it counts on the child render surface the game actually presents to. Plus the File Manager grid/list toggle now works in portrait, and assorted landscape UI polish.

🆕 What's New in 2.9.4

2.9.4 is a feature release over 2.9.3, headlined by a HUD overhaul and a batch of container-setup quality-of-life. Everything from 2.9.3 is included. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.3; your containers, themes, accent and per-game settings carry over untouched.

🎚️ HUD overhaul — Fusion by default, with an on/off switch. The Fusion overlay is now the default HUD at its compact Pill size, and it gained a system-wide RAM% readout. The in-game FPS tab is reorganized: a master Show HUD toggle turns the whole overlay on/off live (no relaunch), your frame-rate & refresh controls stay put, and the appearance settings collapse into tidy tap-to-open sections — Style & Size, Metrics, Appearance, Alerts, Tools — with a thin accent line separating the tab buttons from their content.

🗂️ Log storage moved to Documents — fixes games closing mid-play. Logs defaulted to the app's private Android/data folder on restricted storage; under heavy logging, log rotation could crash the phone's media service and Android would kill the running game — the "the game just closes" bug (worst on the pubg build / AYANEO Pocket FIT). Logs now default to Documents/bannerlator; existing installs are migrated automatically, and the crash-prone "App data" location is removed.

🧰 Easier container setup. New Container Defaults are now user-configurable and per-architecture (x86-64 / arm64ec). A "What is all this?" newcomer glossary (34 terms) plus per-field ? help explains every container setting in plain English. The environment-variable editor no longer silently drops custom variables on save, adds separate Name and Value fields, and recognizes ~75 variables (was ~34). Save Manager's custom-game Restore is now always available via the in-app file picker.

🧩 Mali: BCn→ASTC transcode on the default driver. Set BCn Emulation Type = Compute, then enable BCn → ASTC in the graphics driver settings — the transcode is done by a bundled Vulkan layer, so it works on any wrapper (including "Original", which has no built-in BCn). No effect on Adreno, which decodes BCn natively.

🔤 Polish & fixes. The "+" add button no longer lands off-screen in right-to-left languages (#200) — thanks @aszba258-cyber and @alroe2435-cell for reporting, and iManiii for verifying on device. Landscape dialog scroll/clipping fixes across the growable pickers and Select-container dialogs.

⚠️ Frame generation. bionic-fg is temporarily disabled (repeated false-positive "it's working" reports on a work-in-progress feature) — use lsfg-vk for now. lsfg-vk is experimental: it's the recommended option, but don't expect it to run fluidly on every game and every device. bionic-fg returns as selectable once it's proven to work as intended.


🆕 What's New in 2.9.3

2.9.3 is a feature release over 2.9.2 — headlined by a full Save Manager. Everything from 2.9.2 is included. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.2; your containers, themes, accent and per-game settings carry over untouched.

💾 Save Manager — never lose a save again. A whole screen for your game saves — open it from the side menu (under Library), the Steam store, or any game's ⋮ menu or detail page. It manages three tiers — Steam Cloud, your local Library, and the container — and keeps them honest: for games whose Steam Cloud doesn't actually retain saves (looking at you, FlatOut 2) it detects that and backs them up locally instead, telling you exactly what happened. Auto-Collect grabs your saves automatically when you exit a game and before you uninstall one, so an uninstall never takes your progress with it. And it isn't Steam-only — any custom game (an imported EXE or folder) gets the same treatment through a universal save vault: auto-snapshot on exit, per-game folders under Downloads/Bannerlator/game saves/, and restore back into whichever container you choose. Rounded out with a live Steam connection badge + auto-connect and a "played but never synced" flag so nothing slips through the cracks. 📖 Full guide: Save Manager — Complete Guide.

🎞️ Frame generation — smoother by default (lsfg-vk). The lsfg-vk frame-gen defaults are retuned to match the settings that get the best real-world results: Performance mode is now on by default (a lighter interpolation model that's cheaper on Adreno), flow scale defaults higher (0.80) for cleaner motion, and a new per-container "Auto-enable at launch" (on by default) starts frame generation live at your saved multiplier from the first frame instead of waiting for you to switch it on in the drawer. Every one of these is still a toggle — flip auto-enable off to restore the old start-off behavior, per container. (Defaults ported from GameNative — see Credits.)

📊 Perf HUD. On dual-API builds the in-game overlay now reads the active DirectX API straight from the engine log and pins it to the running game, so the DX version it shows is the one actually in use.


🆕 What's New in 2.9.2

2.9.2 is a hotfix over 2.9.1. It fixes one thing, and it affected everyone. Like the releases before it it's entirely app-sideno ImageFS reinstall — just install over 2.9.1.

🔇 Turning logging off now actually turns logging off. In 2.9.1, switching every toggle in the Log Manager off did not stop Bannerlator writing a log, and setting WINEDEBUG=-all yourself didn't either. The switches chose how chatty Wine was; nothing told the app to stop writing the file, so it kept filling from everything else running underneath — the x86 translator, the Wine server, the loader, DXVK. That had a cost beyond the annoyance: when nothing is listening, Bannerlator normally discards that output without reading it, and because it was always listening, every 2.9.1 install was writing to disk line by line on every launch, whether you wanted logs or not. Now, with the recording switches off, no file is opened, nothing is written, no empty per-game folders are left behind, and the output is thrown away untouched. Viewing is unaffected — the Log Manager, viewer, per-game View logs, File Manager, sharing and Report a problem all still work on whatever is already on disk. ⚠️ With everything off a crash now leaves no Wine log, which is the point: to report a bug, turn Wine debug on, reproduce once, then use Report a problem. Found, reported and device-confirmed by D4V1Z0N.


🆕 What's New in 2.9.1

2.9.1 is a point release over 2.9, headlined by a full Log Manager — so when something breaks you can capture exactly what happened and file a report with the logs already attached — plus a set of drawer and library controls and a non-root GPU max-clock. Like the releases before it it's entirely app-sideno ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; just install over 2.9.

🗂️ Log Manager. One screen for everything logging, at App Settings → Logs → Open Log Manager. A folder per game with keep-last-N rotation and a choice of location (app data, Download, Documents, or a folder you pick). Choose exactly what gets recorded — Wine debug, Box64/FEXCore, DXVK & VKD3D, Android logcat, crash reports — with a "?" on every toggle whose copy leads with the performance cost, because two of them genuinely slow games down. Browse all 521 Wine debug channels, grouped by family (graphics, sound, input, networking…) with a "What's this?" switch that explains each in plain English, while the 18 everyday channels stay one tap away. A built-in log viewer with file tabs, a live following tail, severity colouring, find, wrap, copy and share — it reads only the tail of a file, so a multi-gigabyte Wine log opens instantly. View logs on any game straight from the library: long-press in grid view, or the ⋮ menu in list view. And Report a problem builds a redacted zip of the run and opens a GitHub issue pre-filled with device, app version, GPU, driver and DXVK/VKD3D versions. Redaction runs before anything is written — usernames, e-mail addresses and tokens are stripped from logs, crash reports and stack traces alike — and logcat capture is Bannerlator's own output only, never system-wide, even with root. Delete and Clear all remove only files Bannerlator wrote; anything else in your log folder is left alone by construction.

⚡ Lock GPU to max clock — without root. On Adreno devices this control no longer needs root: on a Snapdragon handheld it took the GPU from 231 MHz to 1000 MHz with root never granted. With root, the original path is still used; turning it off restores the clock either way.

🎨 Drawer & library controls. Appearance → Side Menu gains switches to hide the game stores section, internal storage and SD card storage, each independently. The drawer's storage bar is now labelled Internal Storage, and a card in the device gets its own card beneath it. The + button on Games and Containers can be long-pressed and slid along the bottom, so it stops covering a card's play or ⋮ button, and it stays where you put it. Games also gains multi-select removal (list and grid) and a third view mode — a four-across compact grid.

🔧 Graphics & runtime. Vulkan 1.4 by default, with the exported version clamped to the minor your driver actually reports (picking 1.4 on a 1.3 driver used to produce a version string no driver would accept). New containers on non-Adreno GPUs default to wrapper-gamenative. And FEXCore's SMC-checks variable was being set under the wrong name — it is FEX_SMCCHECKS, so that setting now actually applies.

📦 Smaller install. The APK is ~103 MB smaller: the bundled Proton 9 is gone, because that bundled copy never launched. Wine installs from the in-app catalog on first run instead. ⚠️ A fresh install ships with no Wine at all — open Containers → the download icon and install a Proton before creating a container. Updating from 2.9 changes nothing. If you want Proton 9, the working arm64ec .wcp is a direct download: proton-9.0-arm64ec.wcp (66.7 MB, compiled as a wcp by Xnick417x) — install it via Containers → download icon.


🆕 What's New in 2.9

2.9 is a big feature release headlined by two major additions — power-user Performance controls (with an opt-in root tier) and Virtual Controller Pro, a ground-up rebuild of the on-screen touch controls — and it rolls up everything that landed since 2.8. Like the last several releases it's entirely app-sideno ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; just install over your current build.

⚡ Performance controls — with an opt-in root tier. A new App Settings → Performance menu, mirrored live in the in-game Debug tab and kept in two-way sync, with global defaults and optional per-game overrides (honored only when they differ from the global, with a one-tap reset-to-global). No root needed, for everyone: Sustained Performance Mode (steadies clocks so long sessions stay smooth instead of spiking and dropping), Thread Priority Boost (raises the guest CPU-worker threads for more CPU time), and Prefer Big Cores (pins the running game to your fastest cores instead of the efficiency ones). Opt-in root tierMagisk / KernelSU / APatch, behind a Grant Root gate and a scroll-to-accept "USE AT YOUR OWN RISK" disclaimer: CPU governor → performance, lock CPU frequency to max, keep all cores online, lock GPU to max clock, disable thermal throttling, fan to maximum, and a "Free memory now" action. Safety is built in and always on: an exact snapshot-revert restores every value it touched to precisely what it was — automatically on game-exit, app-background or crash, and even after a hard kill (the snapshot is persisted to disk) — backed by a device-anchored Temperature Watchdog that reads your device's own thermal trip points (presets Conservative / Balanced / Aggressive / Manual) and rolls everything back before the device overheats. Every toggle has a "?" explainer, there's an "Explain toggles" overview and a watchdog "What's this?", and live CPU / GPU temps plus your device's own thermal limits are shown inline. Device-verified on an AYANEO Pocket FIT (Adreno). The root tier is entirely opt-in and gated behind the risk disclaimer — nothing writes to your system files unless you grant root and accept the warning.

🎮 Virtual Controller Pro. A ground-up overhaul of the on-screen touch controls. (PR #156 by arro000 — thank you.) New control types join the classic Button / D-Pad / Range / Stick / Trackpad: a Dynamic Stick (a floating stick that appears wherever your thumb lands inside a set area), a Mouse Area (a touch region that drives the cursor), a Button Grid (a rows × columns block of independently-bound keys, with optional multitouch and QWERTY / F-row / NumPad quick-fill), and Expandable Buttons (radial or list fly-outs). The editor is rebuilt in Jetpack Compose — a sliding per-element settings pane and a floating toolbar, with the selected control highlighted and refreshed control visuals — and you can now edit your controls live in-game, tapping a control to tune it against the running game and saving without leaving. Plus control groups (assign controls to a group, then show/hide the whole group at once), key combos (bind several keys to one control), per-element dead zones, a Hold key for stick / trackpad / mouse-area controls, custom control icons (import your own, tint them with your accent or use one as the whole button, with safe shared deletion), a binding picker with category filters (Keyboard / Mouse / Gamepad) and direct character entry, an editor background/reference image for tracing your layout, and a higher control-scale limit — up to 300%. Profiles gain a new ICpx format (with best-effort legacy ICP export), and external-controller binding moves to its own dedicated screen.

➕ Also rolled up since 2.8:

  • 🎛️ Fusion HUD — a fourth in-game overlay. A MangoHud-style overlay alongside Classic, GameHub and the GameNative-style HUD: size modes (Full / Tiles / Pill / Minimal / Mega), VRAM, GPU model, 1% / 0.1% lows and a live frametime graph — plus long-press to lock any HUD in place.
  • ⬇️ In-app updater. Settings → Updates checks GitHub for a new release and installs the correct flavor APK for you, with notify-on-update and an opt-in include-prereleases (beta channel) toggle.
  • 🎨 Driver-source management. Add, toggle and remove your own adrenotools GPU-driver feeds (a custom JSON URL or a GitHub owner/repo), on top of the built-in sources. (#160.)
  • 📂 Games-folder bulk import + smart import. Point at a whole library folder and every game subfolder is scanned for its real executable, named and cover-arted for one-tap batch add; individual .exe imports now auto-resolve the authoritative game name + cover from Steam and fix launcher-exe misnames.
  • 📁 File Manager — archive extraction & tools. The built-in (in-app) file manager can now extract zip / 7z / tar / tar.gz / xz / bz2 / zst (Zip-Slip-guarded, with progress and cancel), plus search, sort, a hidden-file toggle, multi-select bulk operations and free-space display.
  • 🖥️ In-game refresh-rate unlock, a Custom per-service startup mode (#168), and recommended-component install chips for the redistributables a game bundles.
Previously in 2.8 — gyroscope motion aim, rebuilt Big Picture, PC-accurate vibration

2.8 is a feature release built around three big additions — gyroscope motion aim, a completely rebuilt Big Picture mode, and PC-accurate controller vibration — plus a reorganised in-game Controls drawer and an updated file manager. Like the last several releases it's entirely app-sideno ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; just install over 2.7.1.

🎯 Gyroscope — motion aim. Aim by tilting your device. Gyro input can drive either the right stick or the mouse, with a Tilt-to-Aim (orientation) mode that maps how you hold the device straight to where you're aiming. Activation is yours to choose — Hold a button while you tilt, or Toggle it on and leave it on — and there's device-level calibration in Input Controls (plus a live bias correction) so a phone that drifts on a table doesn't drift in-game. Every setting is saved per container and per game, like the rest of the presets. (Implementation modeled on WinNative's — thank you.)

📖 New to motion aim? Read the complete gyro guide → — every mode and setting explained in plain English: Rate vs Tilt to Aim, the three targets (right stick / left stick / mouse), Hold vs Toggle activation, sensitivity / deadzone / smoothing tuning, drift calibration, and troubleshooting.

📺 Big Picture — rebuilt from scratch. Big Picture mode is now a full Compose rebuild: a fluid couch launcher you can actually drive from the sofa, with direct access to settings, features and your games, real per-game spec chips showing what each title is actually set to, and no background music. D-pad navigation is fixed throughout — no more phantom focus rings, clipped Play buttons or hero buttons overflowing on long titles.

🎮 PC-accurate controller vibration. Rumble now behaves like it does on a PC: dual-motor output (strong/weak driven independently rather than collapsed into one buzz), with a per-container vibration mode and intensity. Underneath, a winebus duration patch stops SDL rumble from auto-expiring mid-effect, so sustained rumble actually sustains — applied across Proton 10 and 11, on both arm64ec and x86-64, with a build-agnostic fallback so it keeps working on future layers. (Duration patch from TideGear's PR #91, adopted with permission; the vibration feature itself originates from GameNative #1214.)

🕹️ In-game Controls drawer. The Controls tab is split into Touch / Mouse / Vibration / Gyro sub-tabs instead of one long scroll, and the toggle chips are now a uniform 3-across grid with shorter labels.

📁 Banner File Manager 1.1.0. New containers ship the updated build, replacing 1.0.0.

Previously in 2.7.1 — wrapper catalog updates, frame-gen Performance mode, Banner File Manager

2.7.1 builds on 2.7's Wrapper Version Manager with a big round of catalog + update improvements, plus a frame-gen Performance mode, a controller-vibration master switch, our own Banner File Manager (replacing WFM), and consistent menu styling across the app. Like the last several releases it's entirely app-sideno ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; just install over 2.7.

🧩 Wrapper Version Manager — catalog + bundled updates. The wrapper catalog now remembers what you've installed across restarts and flags "Update available" when a newer build exists — for imported and bundled wrappers — with one-tap Update and a "From catalog" chip marking catalog-installed entries. The GameNative wrapper is refreshed to its latest July build (adds 32-bit game support), and the bundled leegao BCn + DX12 compat layers carry leegao's layer-composition fix so the two stack correctly. Plus a batch of fixes: the BCn layer (leegao) entry now detects correctly (was "Vulkan ICD" / 0 settings → BCn layer / 13 knobs), the shared "Extra libraries" payload is hidden from the manager (it isn't a wrapper), card text no longer truncates, and the catalog's Installed mark now clears properly on Reset.

🎞️ Frame generation — Performance mode. A new "Performance mode" toggle for lsfg-vk frame generation — per-container in settings and live in the in-game drawer — switches to a lighter frame-gen model for a real FPS gain on weaker GPUs, with no root or read-only file hacks. Defaults off. (Thanks @Tony57319#152.)

🎮 Controllers. A new "Controller vibration" master switch in the in-game Vibration section silences all rumble regardless of slot, saved globally — and the per-slot vibration toggles that used to snap back now reflect your changes.

📁 Banner File Manager. New containers now ship Banner File Manager — our own native Win32 file manager, forked from BrunoSX's Winlator File Manager: dual-pane split view, Open as administrator / Open with, and a native Win32 copy that sidesteps the Proton 10.0-4 shell32 copy-paste crash. (Applies to new containers.)

🎨 Interface. Every dropdown / overflow menu now shares one clean outlined-card style (dividers + accent icons), matching the File Manager.

Previously in 2.6.2 — fixes & hardening

2.6.2 is a fixes-and-hardening update on top of 2.6.1 — no new subsystem, just sharpening what's already here. The in-game performance HUD got a ground-up pass, component downloads now keep going when you leave the app, and a batch of reported bugs are fixed. Like the last several releases it's entirely app-sideno ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; just install over 2.6.

🎛️ In-game HUD — hardened + a new overlay style. Every overlay now reads one shared FPS source (they could drift before), and the metric readers (GPU load, CPU / GPU temp, RAM, battery / power) were rewritten with proper vendor discovery — so values that used to read 0% on many non-Adreno GPUs now populate correctly. There's a new third overlay — a GameNative-style HUD with live graphs — alongside Classic and GameHub, switchable live in-game. Plus compact chip UI in an aligned grid, a slider-controlled accent outline, FPS-limiter presets (30 / 60 / 90 / 120), and a clean GPU-model name (e.g. Adreno 750).

⬇️ Background component downloads. Downloading a large layer (Proton / DXVK / box64 / FEXCore / rootfs) no longer stops when you minimize or lock the phone — it continues via a foreground service with a shade notification, and resumes if interrupted. (Thanks @kylinzang#122.)

🔧 Fixes. DXVK 1.x can no longer be paired with VKD3D (they're binary-incompatible — DXVK 1.x can't back VKD3D-Proton — so the DX12 path failed silently) (@GmoLargey, #113); the per-game editor now labels the x86 backend WOWBox64 on arm64ec instead of "Box64" (@railexcatapangdiaz-ux, #111); the Classic HUD no longer double-shows or resizes on a metric toggle; power draw reads correctly on inverted-battery-current devices (Xiaomi / Poco) (HUD reports via Discord user devaspe); and a failed component install no longer reports success.

🔐 Run games as administrator. New per-container "Run as administrator" toggle (on by default) for installers and games that need elevation.

🌐 Community — thank you. Contributed straight to Bannerlator's own config repo: 166 games, 184 configs, from 252 accounts — and because the in-app browser also merges the BannerHub catalog, the total you can browse and apply inside the app is 2,257 games / 1,548 configs. All growing. This project grows only because of the community's support and participation. 🙏 Browse: Bannerlator repo · BannerHub catalog · online.

Previously in 2.6.1 — Adreno BCn fix

2.6.1 was a small hotfix on top of 2.6. The headline was an Adreno graphics fix: since 2.5, the integrated-wrapper BCn emulation (WRAPPER_EMULATE_BCN) was emitted for every GPU, but the BCn-aware wrapper builds act on it — so on Adreno 7xx it forced a pointless per-texture transcode: global slowdown and BC-heavy DX11 games (e.g. Skyrim AE) failing to launch. It's now gated off on Qualcomm (0x5143); Mali / Xclipse / PowerVR behaviour is untouched. Rounded out by an Add to Shortcuts action on any .exe in the File Manager, and a community-config XInput round-trip fix (the setting is a bitmask, was being written back as 1/0).

Previously in 2.6 — Community Config Sharing + optional accounts

2.6 completed Community Configs: 2.5.2 gave you the browse-and-apply half, and 2.6 added the other half — share your own working setups, locally or online, straight from the same Community Configs menu. Sharing captures your entire per-game setup (38 of 39 shortcut settings — the full DXVK/VKD3D config, graphics, emulator, wrapper incl. VEGAS, Turnip driver and input), and a brand-new optional account system (username + password, one-time recovery key, no email) lets your uploads follow you across devices and carry your name — everything still works anonymously without one. Also app-side, no ImageFS reinstall. (Includes a community VEGAS-dialog improvement from isygold#84.)

Previously in 2.5.2 — Community Configs (browse & apply) + two Proton 11 layers

2.5.2 adds Community Configs — a way to browse community-shared, per-game/per-device tuning configs right inside the app and apply a known-good setup to your game in one tap, without hunting through Discord screenshots. It also ships two new Proton 11 x86-64 compatibility layers in the downloadable catalog. Like the last few releases it's an app-side update — no ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; just install over 2.5.1.

🌐 Community Configs — new. A new globe button in the Games header opens a browsable catalog of community game-configs. Bannerlator matches your installed games to the catalog, and a "Matches my device" filter narrows it to configs shared from hardware like yours. Each shared config is its own card showing its ★ upvotes and ↓ downloads (best-rated first), the device it came from, and its date.

  • One-tap Apply. Tap a config → Apply to game and Bannerlator surgically merges just that config's settings — DXVK / VKD3D / Turnip driver / FEX preset / renderer / resolution / launch args / environment variables — into your shortcut, preserving everything else you've set (BCn options, HUD, colour toggles, and the rest are untouched). It'll even apply a config to a different game, warning you first.
  • Smart install of what's missing. If a config needs a DXVK / VKD3D / FEXCore build or a Turnip GPU driver you don't have, install it inline right there — an exact match installs with one confirm, or you pick from the closest versions (or browse all) — and the config auto-applies once it lands, with a ✓. FEX date-stamped builds are matched by their YYMM build tag so a dated config resolves to the right monthly build, and a component you already have is recognised instead of erroring.
  • Config detail page. Tap View details for a config's provenance (source device / SoC / app / date), exactly what it sets in Bannerlator's own component terms, and a preview of what would change on your shortcut before you apply. The detail page also shows the config's description, upvotes, downloads and comments live — and you can upvote and leave a comment yourself.

ℹ️ Community Configs is read-only for your setup — it only ever changes a shortcut when you tap Apply, and it never touches your containers, imagefs or existing settings.

🍷 Two new Proton 11 x86-64 compatibility layers — new. Two Proton 11.0-1 (x86_64) compatibility layers are now downloadable in-app from the Compatibility Layers menu (Wine/Proton tab): proton-11.0-1-x86_64-sdk28 for Android 9-era devices and proton-11.0-1-x86_64-sdk35 for Android 15 — pick the one matching your Android version.

Previously in 2.5.1 — the compatibility & tooling release

2.5.1 is a compatibility-and-tooling follow-up to 2.5: it fixes crashes and swapped colours on the SurfaceFlinger renderer, adds a live FEX runtime indicator so you can see exactly what's translating your game, makes FEXCore unixlib (.so) handling correct when you swap FEXCore versions per game, and expands the Environment Variable presets.

🎨 SurfaceFlinger renderer: colour & crash fix — new. The SurfaceFlinger host renderer (ASurfaceRenderer) gets a crash-and-colour-accuracy fix: the red/blue channel swap is corrected, a GPU-side format converter and proper fencing are added, and the OpenGL / Vulkan / DRI3 paths are left untouched. A new "Correct SurfaceFlinger colours" toggle is available per container and per game (shown inline under the Renderer picker when SurfaceFlinger is selected, on by default). Device-verified on Adreno 750: DiRT 3 on DXVK + SurfaceFlinger renders with correct colours, no R/B swap, and no Vulkan / OpenGL regression. (Ported from GameNative #1620 / #1644.)

🔎 FEX runtime indicator — new. The Graphics tab now shows a live badge, read straight from the running game: arm64ec vs x86-64, the translator (FEXCore / wowbox64 / Box64), and — for FEXCore — whether the native unixlib (.so) or the classic DLL path is active. No more guessing what's under the hood.

🧩 FEXCore unixlib (.so) auto-match — new. Users run different FEXCore versions per game or container — some DLL-only, some with the native .so unixlib. 2.5.1 keeps the shared .so in sync with your selection on every launch: a unixlib build gets its matching .so placed, a DLL-only build gets it cleared. No stale .so silently overriding a DLL-only choice, no mismatched .dll / .so pair — and uninstalling a unixlib FEXCore removes its .so too.

🧰 18 new Environment Variable presets — new. The Add Environment Variable picker gained 18 presets across DXVK / VKD3D / Wine / Mesa — including DXVK_DISABLE_TIMELINE_SEMAPHORES, VKD3D_SHADER_MODEL, DXVK_FRAME_RATE, VKD3D_CONFIG, WINEFSYNC, WINE_FULLSCREEN_FSR and MESA_VK_WSI_PRESENT_MODE — so common tuning vars are one tap away instead of typed by hand. (Requested by Angel.)

Previously in 2.5 — the Mali hardening release

2.5 is the Mali hardening release. If you're on a Mali or Xclipse GPU, this is the big one: BC-texture (BCn) games that used to crash or render as black / garbled textures now work, backed by a full sign-off on real Mali-G57 hardware — plus an in-game logging overhaul so reporting a problem no longer means digging through Android/data. It's an app-side update — no ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched; the new Mali driver assets are pulled into your existing containers automatically on next launch.

🟢 Mali & Xclipse: BC-texture games now work — new. Mali / Xclipse GPUs don't decode BC (BCn) textures in hardware, so many games crashed, ran out of VRAM, or showed black / missing textures. A new "Wrapper + bcn_layer" graphics driver (pick it per container under Graphics driver) transcodes those textures on the GPU at runtime so the games just run — device-proven on Mali-G57 (Helio G99), where MiSide went from crashing to rendering correctly at ~34 fps with zero buffer errors. It's backed by leegao's bcn_layer shader-v3 (up to ~3.5× faster BCn / ASTC transcoding), with a BCn Layer Settings panel to tune force-decode, ETC2 / ASTC transcode, image-view mode and debug logging. A second "Wrapper-gamenative" driver ships labelled experimental (BCn baked into the wrapper; Adreno-only in practice). (Driven end-to-end by @kylinzang on Mali-G57 — #70.)

🧾 In-game logging overhaul — new. Reporting a bug from inside a game is finally painless: a Copy button in the in-game Debug Logs panel copies the whole log (including BCn transfer stats) to the clipboard; a selectable log location (Settings → Logs: App data, Download, Documents or a custom folder) lets you grab every log straight from a file manager with no shizuku / adb; DXVK, DXGI and VKD3D logs are co-located with the Wine log in one folder (they no longer hide in the game directory); and the Wine Debug Channels dialog now scrolls. (All three ideas from @kylinzang — #70.)

🔧 Fixes. The wrapper_DestroyBuffer: null buffer log spam is eliminated (bundled Vulkan wrapper bumped to ETC2-Milestone-2); the in-game Copy-logs action row is pinned on-screen (it was pushed off the bottom in landscape); and the release-notes pipeline is hardened against backticks / shell metacharacters.

Previously in 2.4 — the fit & finish release

2.4 is the fit & finish release. Take control of how your game fills the screen, import files without fighting Android's system picker, and make your in-game choices stick per game. Nearly every headline feature here came straight from a GitHub report or request. It's an app-side update — no ImageFS reinstall — your containers, themes, custom accent and per-game settings carry over untouched.

🖥️ Fullscreen aspect-ratio modes — new. No more forced stretching on wide games. Choose exactly how the picture fits the screen, per container and per game: Off (windowed, letterboxed), Fit (fullscreen, aspect preserved), Stretch (fills, ignores aspect), Fill (fills with aspect kept, cropping the overflow — no bars, no distortion) and Integer (largest whole-number scale, pixel-perfect and centered). Switch live from the in-game drawer with a new five-button selector that applies instantly and keeps the drawer open so you can compare. Works on the OpenGL, Vulkan and SurfaceFlinger renderers. (GitHub #71.)

📁 Import files with the built-in File Manager — new. Android's system file picker (SAF) silently fails or crawls on a lot of OEM skins. Every local import now opens Bannerlator's own File Manager in a pick mode instead — covering content packs (.wcp), control profiles (.icp), wallpapers, custom icons, saves, shortcuts, drivers and the big Proton / Wine / DXVK / box64 / FEXCore assets. It starts in Download, remembers your last folder, filters to the file types you need, and now shows a real thumbnail for image files (jpg/png/webp…) instead of a generic icon — so picking a wallpaper is no longer done blind. Large imports show a progress bar with percentage and ETA. The system picker is still available as a "Pick via system…" option for cloud / document providers. (GitHub #73.)

🎚️ In-game choices that stick — per game — new. Three settings you tune in-game are now remembered per game and restored on relaunch: the Scaling mode (SGSR / FSR / FSR-Fit / Sharpen / NIS used to reset to a plain filter every launch), the Fullscreen mode, and your dragged FPS overlay position (classic and GameHub HUD).

🧩 Choose your DLC + smarter Steam installs — new. A "Choose DLC" sheet lets you opt out of owned DLC before downloading, with the download size updating live as you check and uncheck; an "Includes DLC" line on the detail page; and a true-size install fix — Steam's catalog over-reported some games' sizes, so a fully-downloaded game could be wrongly flagged "incomplete" and refuse to launch, which is now resolved by fetching the real depot-manifest sizes. The detail page also gains a size breakdown (on-disk footprint, download size, catalog size, free space) and download ETA + speed across the detail page, Download Manager and notification. (Install-blocker reported by @Devaspe.)

🖼️ Container wallpaper picker — new. Pick an image as your container's desktop wallpaper — the picker now actually appears in the container editor — and choose whether a wallpaper applies to just this container or globally to all of them. (GitHub #66.)

💾 Back up & restore game saves — new. Export and import your saves as GameHub-compatible zips, with per-game save discovery, a confirm checklist before anything is overwritten, and a caution prompt so you verify before replacing originals.

🔧 Fixes. The magnifier follows the cursor on Vulkan now (parity with OpenGL, fullscreen and windowed) (GitHub #44) and no longer dims the whole screen while zoomed; the Settings "Enable File Provider" help button no longer crashes; and Scrape cover is available from the list-view overflow menu, not just the grid.

Previously in 2.3 — the storefronts release

2.3 is the storefronts release. Bannerlator gains a full built-in Steam store — sign in with username/password or QR code, browse your owned library, and download + install your games through a native depot engine — plus new Epic Games and Amazon Games stores, with the existing GOG store folded into a new cross-store Download Manager. One ⬇ manager shows every active download and your whole installed library across all four stores, with background downloads that survive leaving the app and appear in your notification shade. For offline / emulated play there's an optional Goldberg auto-patch for Steam games, a 4-tier download-speed picker, and this release hardens store logs so credentials and tokens are scrubbed from anything you might share. It's an app-side update — no ImageFS reinstall — your containers, themes and settings carry over untouched.

🎮 Built-in Steam store — new. Sign in to Steam (username + password or QR code), browse your owned library, and download + install games through a built-in depot engine (built on JavaSteam) straight into a container. Includes a GameNative-style 4-tier download speed (Slow / Medium / Fast / Blazing, cores × ratio), session hardening that recovers from Steam's ~1-hour connection-manager logoff so long installs survive, an in-header connection / login status pill, a depot-download OOM fix, and an optional per-download "Log debug session" toggle.

🕹️ Goldberg auto-patch — new. On a Steam game's detail page, apply a Goldberg / gbe_fork patch for offline / emulated play in three tiers — Regular, Experimental, ColdClient — installed automatically and cleanly reverted on switch-back. (Modifies a game's shipped files to run offline/emulated — use at your own risk, for games you own.)

⬇️ Cross-store Download Manager — new. One unified ⬇ manager across Steam, Epic, GOG and Amazon: see active downloads and your installed library in one place, with live two-bar download/install progress, background downloads + shade notifications (a foreground service keeps them running after you leave the app), launch / verified uninstall, a single source-of-truth install state across detail / card / list, and a new "Default screen on launch" setting.

🛍️ Epic, GOG & Amazon stores. Amazon Games and Epic Games stores added — sign in, browse your library, and download / install / launch (including Epic free games) — and GOG wired into the Download Manager. All non-Steam store pages are restyled to Material 3 to match the app theme and the Steam layout, with live download % on detail pages, cover art, launch fixes, a themed container picker, and themed toasts (fixing an unreadable black-box toast on some ROMs).

🔒 Security & your accounts. The Steam / Epic / GOG / Amazon sign-ins are a third-party login system, exactly like any other emulator or launcher that logs into these stores — Bannerlator is not affiliated with or endorsed by Valve/Steam, Epic, GOG or Amazon, and you use them at your own risk. This release redacts credentials and identifiers from logs — signed download / manifest URLs, OAuth authorization codes, GOG client_secret + refresh_token, and account identity IDs are stripped from logcat and the shareable diagnostic files via a new StoreLog.redactUrl helper (Steam was already redacted). Even so, be cautious about sharing any log or debug file publicly — they can still contain other diagnostic detail. See the Security Hardening section below.

🔓 Steam QR sign-in re-enabled. With the new logoff-recovery path in place, QR login is back on — a QR session stores the same credentials as a password login and recovers the same way. If downloads or the session keep dropping after a QR sign-in, sign out and use username + password (the more durable path).

Previously in 2.2.2 — the in-game ReShade release

2.2.2 brought the big one: in-game ReShade effects — real ReShade .fx post-processing you configure per game, toggle and tune live, and stack. It also landed a batch of fixes from GitHub and Discord reports: the FPS limiter no longer resets between sessions, on-screen controls honour a white colour, container creation can no longer get stuck, and very light / dark custom accents stay readable. That was an app-side update with no ImageFS reinstall — existing containers refreshed their ReShade layer automatically on next launch.

🎬 In-game ReShade effects. Run real ReShade .fx effects (colour grading, sharpen, film grain, CRT, tonemap, LUTs…) on DXVK / VKD3D games, compiled on-device via the bundled vkBasalt layer:

  • Per-game setup — pick effects when editing a container or a game shortcut; your choices are saved with that game.
  • On-demand catalog of ~100 curated MIT / CC0 effects (search, browse, download only what you want) — or drop your own into the ReShade/ folder (see Adding your own ReShade effects).
  • Dedicated in-game ReShade tab that auto-generates properly typed controls — sliders, toggles, dropdowns and colour pickers — read straight from each shader, with a Reset-to-defaults button. Toggle and tune effects live, no restart, and your changes persist per game across quit → relaunch.
  • Solo or stack — run a single effect or layer several at once.
  • ⚠️ Stacking multiple effects? Add them a few at a time. Each ReShade effect compiles on-device and costs GPU, so selecting too many at once can stop a game from starting — you'll get a flat / blank screen instead of the game. If that happens, go back into the per-game ReShade effect settings and uncheck the effects one at a time (or the specific heavy one) until the game boots correctly, then add more gradually. (Colour effects today; depth effects like SSAO / DOF aren't supported yet.)

♻️ Existing containers auto-update the ReShade layer on next launch — no need to recreate a container or reinstall the ImageFS for ReShade to work.

🛟 In-game drawer rail now scrolls so every control — including Exit — is always reachable on short screens.

🎛️ FPS limiter now sticks between sessions for a game launched from a shortcut. (GitHub #46.)

🎨 Fixeswhite on-screen controls stay white (GitHub #46); very light / dark custom accents stay readable (glyphs pick a contrasting colour, AMOLED and presets unchanged); and container creation can no longer get stuck on a leftover shortcut (GitHub #45).

Previously in 2.2 — the themeable-interface overhaul

2.2 is a big visual overhaul: the whole interface — and the in-game side drawer — now follow your chosen theme, with a redesigned drawer, nine new colour presets, and per-game control colours. It also adds Favorites to the File Manager and rebuilds the controller-binding screen, alongside a batch of readability and consistency fixes.

🎨 A themeable interface — redesigned. The app drawer and the in-game side drawer were rebuilt with new icons and accent-driven buttons, and — the big change — your selected theme now recolours the entire app and the in-game drawer. Previously large parts of the UI stayed blue regardless of theme; now presets and your custom accent reach the screens, dialogs, drawer, chips, sliders and overlays.

  • 9 new theme presets bring the total to 16, plus the custom HSV accent picker: Midnight Cobalt, Phosphor, Carbon & Ember, Amethyst, Crimson, Synthwave, Royal Gold, Frost and Monochrome — alongside Classic Dark, AMOLED (still the default), Ocean, Forest, Sunset, Rose and Steel.
  • AMOLED stays the default and is unchanged, so updating doesn't alter your look unless you choose a new theme. Your previously selected theme and custom accent are preserved.

🕹️ Per-game on-screen control colours — new. The on-screen touch controls follow your app theme by default, and you can now override their colour per game. Turn off "Follow app theme" in the Controls editor (in-game drawer or the out-of-game Input Controls page), pick a colour, and it's saved with that game's profile — so each game can keep its own control colour.

⭐ File Manager — Favorites / bookmarked folders — new. Pin the folders you open most and jump straight to them. A ★ button opens a dedicated Favorites list, and each entry shows exactly where it lives — a colour-coded badge for the storage source (Internal, SD card, Drive C:, Drive Z:), the container name for a container drive, and the full path — so two games' C:\Program Files are never confused. Pin from a folder's ⋮ menu or with "Pin current folder", unpin with the filled ★. Favorites persist across launches; entries for a deleted container quietly drop off.

🎮 Controller-binding screen rebuilt. The external controller-binding screen was rebuilt in the modern UI: labels are clearly readable under any theme, each binding is a card matching the rest of the app, and buttons you press while binding appear instantly. (Builds on the 2.1.1 readability fix; bindings still persist and Ludashi-format profile import still works.)

🧰 In-game Task Manager. "New Task" now works on the Vulkan / Native renderers — the dialog used to be invisible over those surfaces — and running processes are shown as cards.

🧹 Consistency & readability. The Games and Containers lists now share one card style with consistent depth on every theme, and legacy dropdowns, spinners, dialogs and section headers follow the accent too — with a luminance floor so text never goes dark-on-dark on a dark custom accent.


🎞️ Frame Generation & Present Modes

Frame generation (lsfg-vk and bionic-fg) inserts AI-generated in-between frames to make motion look smoother — it helps most when a game runs below your screen's refresh rate. It runs on the Vulkan renderer.

Present mode decides how finished frames are handed to your screen:

Mode What it does
FIFO (default) "Vsync on" — smooth, tear-free, most battery-friendly, but it makes the game wait for the display.
Mailbox "Fast vsync" — never makes the game wait, still tear-free. The right mode for frame generation, so its extra frames actually reach the screen.
Immediate "Vsync off" — lowest input lag, but can tear.

Bannerlator automatically switches to Mailbox while frame generation is running, then restores your chosen mode when it turns off — because FIFO would otherwise throttle the generated frames before they reach the screen. You can also switch modes live from the Present Mode selector in the in-game Graphics tab, and every mode is explained by a "?" button and in the in-app "What is all this?" glossary.

Why is my FPS reading different from another emulator?

With frame generation on, two apps' FPS numbers can look very different — because they count frames at different points in the pipeline:

  • An app that reads the game's raw output shows a clean 2× / 3× / 4× — impressive, but it counts frames your screen never actually displays.
  • Bannerlator's HUD counts frames as they reach the display pipeline, so it reflects the real gain — not a perfectly clean multiple, and always capped by your screen's refresh rate.

Neither number is "frames on glass." Your panel's refresh rate (e.g. 120 or 144 Hz) is the true ceiling — above it, frames are generated but not shown. A result like 65 → 107 fps at 2× on a demanding game, with the frametime roughly halving, is frame generation working correctly.


✨ Full Features

Everything Bannerlator offers, at a glance. No PC and no root required — it runs Windows apps and games directly on your Android device.

🍷 Windows compatibility
  • Wine Windows compatibility layer — run native Win32/Win64 applications and games.
  • Box64 / Box86 x86 & x86-64 → ARM translation, with selectable performance presets.
  • WOWBox64 for arm64ec containers (correctly labelled per container).
  • FEXCore as an alternative x86/x64 emulation backend — with automatic unixlib (.so) matching: whichever FEXCore version you pick per game or container, the native .so companion is kept in sync on every launch (matched for unixlib builds, cleared for DLL-only), so there's never a stale or mismatched .so.
  • arm64ec and x64 container support.
🎨 Graphics & translation layers

📖 Not sure which graphics driver or wrapper to use? Read the wrapper & driver guide → — what a wrapper actually does, a pick-by-GPU table (Adreno / Mali / Xclipse / PowerVR), every built-in driver explained, all 18 catalog wrappers with their authors and upstream links, which of them are byte-identical across projects (so you don't test the same file twice), and troubleshooting.

  • DXVK — DirectX 8 / 9 / 10 / 11 → Vulkan (with GPLAsync and Sarek variants).
  • VKD3D-Proton — DirectX 12 → Vulkan.
  • WineD3D / DirectDraw OpenGL fallback paths for older titles.
  • D7VK — DirectX 7 / DirectDraw (Direct3D 3–7) → Vulkan for old 2D/3D titles that otherwise take the slow OpenGL path (WinterSnowfall's DXVK-lineage Vulkan implementation). Selectable in the DDraw Wrapper picker per container and per game; ships bundled as the default and is catalog-backed — a "D7VK Version" dropdown lets you download and switch between nightly d7vk builds.
  • Proton bionic translation layers (via GameNative) — including Proton 11.0-1 in arm64ec and x86-64 builds, packaged per Android SDK (SDK 28 for Android 9-era, SDK 35 for Android 15) and downloadable from the Compatibility Layers menu.
  • VEGAS — Adreno-optimized DXVK for reduced stutter and real-time upscaling on mobile GPUs.
    • 📖 New to VEGAS? Read the VEGAS DXVK FAQ — install, config, FSR, tiers, frame generation & shader-stutter troubleshooting.

    • 🚀 Support VEGAS Development — low-level graphics dev & vibecoder: debugging, refactoring & improving original DXVK code for Adreno. ❤️ Sponsor isygold →

  • Turnip / Mesa open-source Adreno Vulkan drivers, with Timeline Semaphore patches for newer DXVK; bundled and downloadable driver options.
  • Driver-source management — add, toggle and remove your own adrenotools GPU-driver feeds (a custom JSON URL or a GitHub owner/repo) on top of the built-in sources, so you can pull Turnip / driver builds straight from the repos you trust. (Requested in #160.)
  • BCn transcoding for Mali / Xclipse — a "Wrapper + bcn_layer" graphics driver (leegao's bcn_layer, shader-v3) that decodes BC textures on the GPU, so BCn games run on GPUs without hardware BC support — with a BCn Layer Settings panel (force-decode, ETC2 / ASTC transcode, image-view mode, debug logging). An experimental "Wrapper-gamenative" driver (BCn baked into the wrapper, Adreno-only) is also selectable. (Device-proven on Mali-G57.)
  • Wrapper Version Manager — bring your own graphics wrapper: import / update / delete any .tzst wrapper (from another project or your own build), browse a curated downloadable catalog of wrappers from across the Winlator family (each credited to its source, flagged "Mali only" where relevant), and get auto-detected settings — real toggles / sliders / dropdowns read straight from what each wrapper actually supports, with driver internals and log noise filtered out. Per-entry Update / Reset / Edit / Delete / Details plus a pre-import inspection view. (Modeled on WinlatorMali's graphics-driver manager; requested in #132.) 📖 Which wrapper for my device? →
  • Mali DX12 (experimental) — a new opt-in 6th graphics driver, "Wrapper + compat + bcn", pairing leegao's BCn transcode layer with a DX12 compat layer and a "Use GameNative engine (DX12)" toggle, for Valhall-class Mali GPUs. Inert unless selected and unaffected on Qualcomm / Adreno; DX12 on Mali is still being proven on hardware — treat it as a test path and report back with logs.
🖥️ Renderers
  • Multiple host renderers — Vulkan, OpenGL, SurfaceFlinger, and VirGL.
  • SurfaceFlinger renderer colour fix — the SurfaceFlinger (ASurfaceRenderer) host renderer got a crash + colour-accuracy fix (red/blue channel swap corrected, GPU-side format converter, proper fencing), with a "Correct SurfaceFlinger colours" toggle available per container and per game (shown inline under the Renderer picker when SurfaceFlinger is selected, on by default). (Ported from GameNative #1620 / #1644.)
  • ℹ️ The Vulkan host renderer uses the rendering path from StevenMXZ (Winlator-Ludashi); its AHardwareBuffer present path — what makes Vulkan / DXVK / VKD3D content actually display correctly — was ported from / cross-examined against GameNative. See Credits.

  • Native Rendering (Low-Latency Mode) — low-latency direct-scanout presentation on both the Vulkan and OpenGL renderers, skipping the compositor blit to cut input lag (mutually exclusive with that renderer's post-processing effects / scaling, since it bypasses the compositor).
  • Spatial upscalers on both the Vulkan and OpenGL renderersSGSR (Snapdragon GSR 1.0) and FSR / FSR-Fit (AMD FidelityFX Super Resolution 1.0), plus NIS (NVIDIA Image Scaling, Vulkan), a Sharpen (RCAS) mode and Linear / Nearest, all switchable live in the in-game drawer. On Vulkan it engages when a game renders below display resolution; on OpenGL it renders the scene at a reduced internal resolution and reconstructs it back up. Every sharpness slider runs 0 (off) → 100 (max). Your chosen scaling mode is now remembered per game across relaunch.
  • Fullscreen aspect-ratio modes — control how a game fills the screen, per container and per game: Off (windowed, letterboxed), Fit (fullscreen, aspect preserved), Stretch (fills, ignores aspect), Fill (fills with aspect kept, cropping the overflow — no bars, no distortion) and Integer (largest whole-number scale, pixel-perfect and centered). A five-button selector in the in-game drawer switches modes live without closing the drawer, on all three host renderers. Your choice is saved per game.
  • Supersampling (Render scale) — render above display resolution (1.25× / 1.5× / 2×) and downsample with a Lanczos-2 filter for DSR / OGSSAA-style anti-aliasing; set per container / per shortcut.
  • Screen effects on both the OpenGL and Vulkan renderers — FXAA, Toon, CRT, NTSC, Color grading, CAS sharpening, and fake-HDR (the Vulkan path runs them through a new post-processing pipeline; previously they were OpenGL-only).
  • Debanding (Vulkan) — an optional terminal dither pass that removes the visible banding from smooth gradients, skies, and dark scenes on 8-bit output, with an adjustable strength.
  • ReShade post-processing — run real ReShade .fx effects (colour grading, sharpen, film grain, CRT, tonemap…) on DXVK / VKD3D games. Effects compile on-device via a bundled vkBasalt layer; pick from an on-demand catalog of ~100 curated MIT/CC0 effects or drop your own into the ReShade/ folder. A dedicated in-game ReShade tab auto-generates properly typed controls (sliders / toggles / dropdowns / colour pickers) from each shader, so you can toggle and tune effects live with a Reset-to-defaults button. Effects are configured per game (container or shortcut), persist across relaunch, and can be run solo or stacked. (Color effects today; depth effects such as SSAO/DOF are not included yet.)
    • ⚠️ Stacking multiple effects? Add them a few at a time. Each effect compiles on-device and costs GPU — selecting too many at once can stop a game from starting, showing a flat / blank screen instead of the game. If that happens, uncheck effects one at a time (or the specific heavy one) in the per-game ReShade effect settings until it boots, then add more gradually.

  • Match refresh rate to FPS (VRR) — the display's refresh rate can follow your frame rate: an Auto (match FPS) toggle or a manual 60 / 90 / 120 / 144 Hz slider, on all three host renderers, auto-disabled on displays that don't support variable refresh.
  • Adjustable resolution and frame-rate limit.
🎞️ Frame generation & pacing
  • Two selectable frame-generation engines — pick Off / bionic-fg / lsfg-vk per container; the running engine is shown as a badge in the in-game drawer.
    • bionic-fg — powered by the bionic-fg Vulkan layer (Lossless-Scaling lineage), bundled and ready to use out of the box.
    • lsfg-vk — powered by the lsfg-vk Vulkan layer (Android port by FrankBarretta).
  • ⚠️ lsfg-vk requires you to supply your own Lossless.dll. Bannerlator bundles no proprietary Lossless Scaling files. You must own Lossless Scaling (THS, on Steam) and import its Lossless.dll via Settings → Frame Generation (lsfg-vk) → pick DLL. The DLL is copied into app storage and serves all containers. Until you import a valid Lossless.dll, the lsfg-vk option stays greyed out; bionic-fg needs no DLL and works without it.

  • Live in-game controls for whichever engine the container runs: switch between Off / 2× / 3× / 4× and adjust the flow-scale slider right from the in-game Graphics drawer, hot-reloaded with no restart.
  • FPS Limiter — a standalone, engine-independent live frame cap. It paces the X11 Present extension by delaying the IdleNotify that frees the guest's buffer, so the game itself throttles (the in-game HUD reflects the cap and GPU/power draw drops). Works the same with frame gen Off, bionic-fg, or lsfg-vk, on both host renderers, all guest APIs. When lsfg-vk is multiplying (2×+) the limiter automatically steps aside so lsfg's own pacing governs — no double-cap. This guest-side present-pacing mechanism was ported from GameNative (see Credits).
  • lsfg Performance mode — a lighter frame-gen model for weaker GPUs, selectable per container and live in the in-game drawer, with no root or read-only file hacks; defaults off. (Requested by @Tony57319#152.)
  • Confirmed on both the OpenGL and Vulkan host renderers.
⚡ Performance & thermal controls

Power-user device-tuning, reachable from App Settings → Performance and mirrored live in the in-game Debug tab (kept in two-way sync), with global defaults and optional per-game overrides — an override is honored only when it differs from the global default, and each has a one-tap reset-to-global.

  • No root requiredSustained Performance Mode (steadies clock speeds over long sessions), Thread Priority Boost (raises the guest CPU-worker threads for more CPU time, never downgrading an already-hot thread), and Prefer Big Cores (pins the running game to the fastest CPU cluster instead of the efficiency cores).
  • Opt-in root tier (Magisk / KernelSU / APatch) — behind a Grant Root gate and a scroll-to-accept "USE AT YOUR OWN RISK" disclaimer: CPU governor → performance, lock CPU frequency to max, keep all cores online, lock GPU to max clock, disable thermal throttling, fan to maximum, and a one-shot "Free memory now" action. Entirely optional — nothing writes to your system files unless you grant root and accept the warning.
  • Always-on snapshot-revert — the first time a setting is touched its exact prior value is captured, and everything is restored to precisely that value on game-exit, app-background or crash. The snapshot is persisted to disk, so even a hard kill is repaired on next launch. It never guesses defaults and can't be disabled.
  • Temperature Watchdog — anchored to your device's own thermal trip points, it polls the hottest CPU/GPU zone and force-reverts all performance state before the device overheats. Presets Conservative / Balanced / Aggressive / Manual, on by default (turning it off needs the same scroll-to-accept disclaimer).
  • In-app help — a "?" explainer on every toggle, an "Explain toggles" overview, a watchdog "What's this?", and live CPU / GPU temps plus your device's own thermal limits shown inline. (Device-verified on an AYANEO Pocket FIT / Adreno.)
📦 Containers
  • Create and manage multiple isolated Wine containers.
  • Redesigned container cards — a clean spec-chip layout (renderer · DXVK on top, driver · VKD3D · backend beneath) that matches the game cards.
  • Auto-close on game exit — the session closes itself once the launched game quits (per-container "Close when game exits" toggle, on by default), so you're not left at a black Wine desktop.
  • Import / export containers to move or back up setups.
  • Per-container control of Wine version, graphics driver, DXVK / VKD3D version, Box64 preset, drive mappings, Z-drive selector, and environment variables — the Add Environment Variable picker includes a large set of presets (DXVK / VKD3D / Wine / Mesa) with typed value editors, so common tuning vars are one tap away.
  • Desktop wallpaper picker — set an image as a container's Wine desktop wallpaper from the container editor, and choose whether it applies to just this container or globally to all of them.
  • Compatibility Layers download menu — a cloud button on each component (Wine/Proton, DXVK, VKD3D, Box64/WOWBox64, FEXCore) opens a downloader to browse, install or remove versions, with Wine/Proton tabs, an "in use" marker, install-from-file, and byte-accurate download + install progress bars.
  • In-game refresh-rate unlock — a per-container / per-game toggle that lets a game pick a refresh rate above 60 Hz from its own display menu (requires a "Refreshed" Proton 10.0-4 / 11.0-1 layer; stays off on older layers by design). Distinct from the display's Match refresh rate to FPS (VRR).
  • Custom startup-services mode — alongside Normal / Essential / Aggressive, a Custom startup option starts with every Wine service off so you enable only the ones you need. (Requested in #168.)
🕹️ Games, shortcuts & input
  • Game library with grid or list layout, sorting, and installed/updated filters.
  • Redesigned game cards — primary chips (renderer · DXVK · frame-gen) over a muted driver · VKD3D · backend line, with the resolution in the subtitle; long component names no longer blank the game title.
  • Add shortcuts from external storage — a single .exe, or a whole games folder (point at a library folder and every game subfolder is scanned for its real executable, named and cover-arted for one-tap batch add).
  • Smart import — importing an .exe auto-resolves the authoritative game name and cover art from the Steam store, fixing generic launcher-exe misnames, with a Search Steam confirm step.
  • Recommended components — a game's bundled redistributables are detected and surfaced as one-tap install chips.
  • Back up & restore game saves as GameHub-compatible zips, with per-game save discovery and a confirm checklist before anything is overwritten.
  • SteamGridDB cover-art scraping.
  • Per-game settings including display language / locale.
  • Virtual Controller Pro on-screen controls — a Compose-rebuilt controls editor with an in-game live editor, control types Button / D-Pad / Range / Stick / Trackpad plus Dynamic Stick, Mouse Area, Button Grid (with optional multitouch and QWERTY / F-row / NumPad quick-fill) and Expandable Buttons (radial or list fly-outs). Includes control groups (show/hide a whole set), key combos, per-element dead zones, a Hold key, custom control icons (import, tint or use as the whole button), a category-filtered binding picker, an editor reference image, and a control scale up to 300%. Profiles export as ICpx (or best-effort legacy ICP). Overlays follow your app theme or take a per-game custom colour set in the Controls editor. (PR #156 by arro000.)
  • Physical controller support (SDL2), plus touchpad / mouse emulation with adjustable cursor speed. The external controller-binding screen lists each input as a card with readable labels, and buttons you press while binding appear instantly.
  • Controller vibrationPC-accurate dual-motor rumble (strong/weak driven independently) with a per-container vibration mode and intensity, backed by a winebus duration patch so sustained rumble doesn't auto-expire mid-effect (Proton 10/11, arm64ec + x86-64). Plus per-slot rumble toggles and a master switch (in the in-game Vibration section) that silences all rumble regardless of slot, saved globally.
  • Gyroscope — motion aim — tilt to aim, driving the right stick, left stick or the mouse, in either Rate mode (how fast you turn) or Tilt to Aim orientation mode (the angle you hold), with a choice of activator button (L1 / L2 / R1 / R3 / always-on), Hold or Toggle activation, adjustable sensitivity / deadzone / smoothing / invert, device-level drift calibration, and settings saved per container and per game. 📖 Full guide →
🌐 Community Configs

Browse community-shared, per-game / per-device tuning configs in-app and apply a known-good setup in one tap.

  • Catalog browser (globe button in the Games header) with search, Steam / Title filters, sort by upvotes / name / device count, and a "Matches my device" filter that narrows to configs shared from hardware like yours.
  • Per-config cards showing ★ upvotes and ↓ downloads (best-rated first), the source device / SoC and the date, aggregated across every folder a game is known by.
  • One-tap Apply that surgically merges just the config's settings — DXVK / VKD3D / Turnip driver / FEX preset / renderer / resolution / launch args / environment variables — into your shortcut, preserving everything else you've set. Applies to any shortcut, warning you if it doesn't match the game.
  • Smart install of a config's missing DXVK / VKD3D / FEXCore build or Turnip GPU driver: an exact match installs with one confirm, otherwise pick from the closest versions (or browse all), and the config auto-applies afterward. FEX date builds match by their YYMM monthly tag; components you already have are recognised, not re-installed.
  • Config detail page — provenance (source device / SoC / app / date), a plain-language list of what the config sets in Bannerlator's own component terms, and a before-you-apply diff against your shortcut, plus the config's live description, upvotes, downloads and comments — you can upvote and comment yourself.
  • Read-only for your setup — nothing changes unless you tap Apply; your containers, imagefs and existing settings are never touched.
  • Share your own setups — export a game's working settings and upload them for the community in a couple of taps. The export captures the full recipe (graphics translator + all its options, driver, renderer, resolution, launch args, env vars and the rest) plus your device / graphics chip — but never your files, store logins, or device-specific driver tuning. Sharing is anonymous by default and Bannerlator keeps its configs in its own space, separate from other apps' libraries. My uploads lets you edit a description inline or delete an upload any time.
  • Optional account (no email needed) — you never need one, but a username + password account makes your uploads follow you to a new device, puts your name and picture on configs you share, and is recovered with a one-time recovery key instead of an email reset. Everything — browse, apply, share, manage, upvote, comment — works fully anonymously without it.
  • 📖 Read the full plain-English guide → for a friendly, non-technical walkthrough of browsing, applying, sharing, and the optional account/recovery-key system.
🛒 Built-in stores & cross-store Download Manager

Sign in to your existing storefronts and play from libraries you already own — Bannerlator does not sell, bundle or circumvent any game or DRM.

  • Steam — sign in with username / password or QR code, browse your owned library, and download + install games through a built-in depot engine (built on JavaSteam). Includes a 4-tier download-speed picker (Slow / Medium / Fast / Blazing), session hardening that recovers from Steam's ~1-hour connection-manager logoff so long installs finish, a connection / login status pill, and a depot-download OOM fix.
    • DLC picker — a "Choose DLC" sheet lets you opt out of owned DLC before downloading, with the download size updating live as you check and uncheck, plus an "Includes DLC" line and a size breakdown (footprint / download / catalog / free space) and download ETA + speed on the detail page. A true-size install fix fetches real depot-manifest sizes so fully-downloaded games are no longer wrongly flagged "incomplete."
    • Optional Goldberg auto-patch on a game's detail page — a Goldberg / gbe_fork Steam-emulator patch for offline / emulated play, in Regular / Experimental / ColdClient tiers, installed automatically and cleanly reverted on switch-back. (Modifies a game's shipped files — use at your own risk, for games you own.)
  • Epic Games — sign in, browse your library, and download / install / launch your titles (including Epic free games).
  • Amazon Games — sign in, browse your library, and download / install / launch your titles.
  • GOG — sign in and browse your owned library; download and install your DRM-free games with cloud-save sync and one-tap launch into a container.
  • ⬇ Cross-store Download Manager — one unified manager across all four stores: see every active download and your whole installed library in one place, with live two-bar download/install progress, background downloads + notification-shade support (a foreground service keeps them running when you leave the app), and launch / verified uninstall for any installed game. Install state, cover art and update-available status stay in sync across a game's detail page, its download card and the store list.
  • 🔒 These sign-ins are a third-party login system, exactly like any other emulator/launcher that logs into these stores — use them at your own risk (see Security Hardening).

🔒 Security Hardening & your store accounts

The Steam / Epic / GOG / Amazon sign-ins are a third-party login system, exactly like any other emulator or launcher that logs into these stores. Bannerlator is not affiliated with, authorised by, or endorsed by Valve/Steam, Epic Games, GOG, or Amazon.

  • Use at your own risk. You are logging your real store account into a community app. That's a normal trade-off for this kind of tool — but it's your account and your call.
  • Your credentials are redacted from logs. This release strips sensitive values out of everything the stores write, to logcat and the shareable diagnostic files, via a new StoreLog.redactUrl helper: signed download / manifest URLs (Amazon / Epic / GOG CDN links carry access tokens in the query), OAuth authorization codes, GOG client_secret + refresh_token, and account identity IDs (Epic account ID, GOG user ID). Steam credentials were already redacted. None of this changes how login, downloads or cloud saves work — only what gets written to a log.
  • Still be careful sharing logs. Even with redaction, a log or debug file can contain other diagnostic detail — so only share one publicly if you're comfortable doing so.
🧰 Bundled Start-menu utilities
  • New containers ship with handy Windows tools in the Start menu — Banner File Manager (our own file manager — see below), AIO Graphics Test, and Game Controller Test.
  • .lnk working-directory ("Start in") support so shortcuts for apps that only run from their own folder launch correctly.
📁 Banner File Manager

The bundled Windows file manager (C:\windows\wfm.exe) is Banner File Manager — our own native Win32 file manager, forked from BrunoSX's Winlator File Manager (MIT). It ships in every new container's Start menu.

  • Dual-pane split view (View ▸ Split View) — two independent panes, active one highlighted, copy between them.
  • File actions — Open as administrator, Open with ▸ (registered apps + choose another program), Properties.
  • Native Win32 copy / move / delete instead of shell32 SHFileOperation — sidesteps the Wine shell32 copy-paste crash on Proton 10.0-4.
  • Quality of life — keyboard shortcuts (F2 / Del / F5 / F6 / Backspace / Enter / Ctrl+C·X·V·A), Show Hidden Files, byte-accurate copy progress bar with cancel, status-bar total size.
  • Theme-aware (light + dark, follows the container theme; owner-drawn header / status bar / search to match) and universal x86-64 (Box64 / wowbox64 / FEXCore).

Source, releases & issues: github.com/The412Banner/banner-file-manager.

🎛️ Interface & in-game overlay
  • Modern Jetpack Compose user interface with a redesigned, icon-led navigation drawer.
  • Theme-aware everywhere — your selected preset / accent recolours the whole app and the in-game side drawer, including dialogs, chips, sliders and overlays.
  • Customizable themes16 presets (AMOLED default, Classic Dark, Ocean, Forest, Sunset, Rose, Steel, plus Midnight Cobalt, Phosphor, Carbon & Ember, Amethyst, Crimson, Synthwave, Royal Gold, Frost and Monochrome) plus an HSV custom-accent picker.
  • Big Picture mode — a Compose-built couch launcher for TV / handheld use: full D-pad navigation, direct rails to your games, settings and features, and per-game spec chips showing what each title is actually set to.
  • In-game overlay drawer for settings, input, and quick toggles, with a Task Manager that lists processes as cards and can launch new tasks on any renderer. The Controls tab is split into Touch / Mouse / Vibration / Gyro sub-tabs, with a uniform 3-across grid of toggle chips.
  • In-game Task Manager — a full control panel. Beyond the process cards it now offers Windows-style per-process Processor Affinity ("Set affinity" on a process's ⋮ menu — pin it to specific CPU cores live, mid-game, applied through the guest's real affinity path with no relaunch), a live telemetry header (CPU & GPU usage and temperatures, GPU clock, FPS + minimum, RAM, swap, battery level / watts / temperature / charging, and a per-core clock strip), and a collapsible container info panel (Wine/Proton, DX wrapper, renderer, driver, resolution, device).
  • Built-in File Manager with Favorites — bookmark folders and jump to them from a dedicated list, each labelled by storage source (Internal / SD card / a container's Drive C: or Z:) and full path. Image files show real thumbnails, and the File Manager doubles as the app's file picker for every import (WCP / ICP / wallpaper / drivers / assets) — reliable on OEM skins where Android's system picker fails, with the system picker still available as a secondary option. It also handles multi-select bulk operations, archive extraction (zip / 7z / tar / tar.gz / xz / bz2 / zst, Zip-Slip-guarded with progress and cancel), and search / sort / hidden-file toggle / free-space display.
  • Performance HUD — FPS, frame time, CPU/GPU temperature, and RAM, in vertical or horizontal layout, with its on-screen position saved per game. Four switchable overlay styles — Classic, GameHub, a GameNative-style HUD with live graphs, and the new Fusion HUD (MangoHud-style: size modes Full / Tiles / Pill / Minimal / Mega, VRAM, GPU model, 1% / 0.1% lows and a frametime graph) — with long-press to lock any HUD in place.
  • FEX runtime indicator — a live badge in the Graphics tab shows what's actually translating the running game: arm64ec vs x86-64, the translator (FEXCore / wowbox64 / Box64), and — for FEXCore — whether the native unixlib (.so) or the classic DLL path is active. Read straight from the running process, so it reflects reality, not just the setting.
📥 Builds & distribution
  • Three build flavors with distinct package IDs — standard, PuBG, and Ludashi.
  • Optimized release builds (not debug) for a smoother Compose UI, AOSP-testkey signed so updates install over previous installs.
  • In-app updaterSettings → Updates checks GitHub for a newer release and installs the correct flavor APK for you, with notify-on-update and an opt-in include-prereleases (beta channel) toggle.
  • Continuous GitHub Actions action builds and tagged stable releases.

🎨 Adding your own ReShade effects

Show / hide

Besides the built-in download catalog, you can add any ReShade effect yourself by dropping it into a folder. Follow these steps exactly:

1. Open the ReShade drop-in folder on your device (create the ReShade folder if it isn't there yet):

Android/data/com.winlator.banner/files/ReShade/

📁 That path is for the Standard build. For the other builds, swap the package name: PuBGAndroid/data/com.tencent.ig/files/ReShade/ · LudashiAndroid/data/com.ludashi.benchmark/files/ReShade/.

2. Make one folder per effect. Name the folder whatever you want the effect to be called in the menu — for example MySepia.

3. Put the effect's files inside that folder — all in the same place, next to the .fx:

  • the effect's .fx file (required),
  • any .fxh files it #includes (very common — e.g. ReShade.fxh, ReShadeUI.fxh),
  • any image / texture files the effect uses.
ReShade/
  MySepia/
    MySepia.fx          ← the effect (folder name match = used first)
    ReShade.fxh         ← copy in any .fxh the .fx #includes
    ReShadeUI.fxh
    noise.png           ← copy in any textures it uses

4. Pick it in the app. Open the app → edit a container or a game shortcutReShade effect picker. Your folder now appears in the list — select it.

5. Use it in-game. Launch a DirectX (DXVK / VKD3D) game, open the in-game drawer → ReShade tab, and turn the effect on/off and tune its sliders live.

⚠️ Read this if something doesn't show up or work

  • Only colour effects work — sharpen, colour grading, film grain, CRT, tonemap, vignette, etc. Depth effects (SSAO, depth-of-field, MXAO) do not work yet.
  • ReShade only affects DirectX games running through DXVK / VKD3D — it does nothing on OpenGL / WineD3D / older 2D titles.
  • Effect not in the list? Make sure it's in its own subfolder and that the subfolder actually contains a .fx file (a loose .fx sitting directly in ReShade/ is ignored).
  • Effect selected but no change in-game? Most often a missing #include — open the .fx in a text editor, find any #include "Something.fxh" lines, and make sure each of those .fxh files is copied into the same folder as the .fx. Same for any texture files.
  • Game won't start / flat or blank screen after enabling effects? You likely stacked too many effects at once. Each one compiles on-device and costs GPU, and too many together can stop the game from launching. Go back into the per-game ReShade effect settings and uncheck the effects one at a time (or the specific heavy one) until the game boots correctly, then re-enable them gradually. Adding effects a few at a time avoids this.
  • Can't even find Android/data? Many stock file managers hide it on Android 11+. Use a file manager that can open Android/data, or copy the effect folder over from a PC via a USB cable, then drop it in.

🎮 Frontends Workaround

Show / hide

Bannerlator does not work by itself on frontends out of the box. See the frontends workaround guide to get it running.


🛠️ Building

This project is built via GitHub Actions only — local builds are not supported.

  • Action builds — every fix is compiled and published as a downloadable workflow artifact.
  • Releases — tagged stable builds are published as GitHub Releases.

🤖 Ask Me Anything

Show / hide

Got a question about Bannerlator? Ask the codebase directly. An AI reads the actual source code and answers with the exact file names and line numbers, so you can check it yourself. It never guesses — if the answer isn't in the code, it says so.

Ask a Question

It's three steps:

  1. Open an issue (you'll need a free GitHub account).
  2. Type your question — be specific, and name a feature, setting, or file.
  3. Submit. The AI replies in a comment on your issue, usually within 1–2 minutes.

That's it — no form, no approval step, nothing else to do.

ℹ️ The AI replies to every new issue automatically. A few per person per day are free; past that, it will ask you to try again later.

Good things to ask:

  • "How does the FPS limiter work?"
  • "Where is the GOG store integration implemented?"
  • "What values does the scaling mode picker accept?"
  • "How are release builds signed and distributed?"

Avoid device-specific troubleshooting like "why is my game slow?" — the AI explains what the code does, not how a game runs on your phone.

Prefer the command line?

With opencode installed (npm install -g opencode-ai), run the same agent locally against a clone of this repo:

opencode run "your question" --agent ama-agent --model opencode/big-pickle
Maintainers / forks — one-time setup

The bot runs on the opencode/big-pickle model via your opencode credentials (not a separate API key). To enable it on a fork:

  1. Locally run cat ~/.local/share/opencode/auth.json and copy the whole JSON.
  2. Add it as a repository secret named OPENCODE_AUTH under Settings → Secrets and variables → Actions.
  3. Make sure the answered and question labels exist.

Every newly opened issue is answered automatically, bounded by a per-user daily limit and a monthly cap — tune both at the top of .github/workflows/ama-answer.yml (PER_USER_PER_DAY, MONTHLY_CAP; maintainers are exempt from the daily limit). You can also force a re-run on an older issue by adding the question label. Without the secret, the bot posts a notice explaining what's missing.


🙏 Credits

Show / hide

This build stands on a long chain of prior work — its direct lineage, plus the projects whose commits and work are cherry-picked and implemented here:

Contributor Contribution
brunodev85 Original Winlator — Wine + Box64 + Turnip on Android. Foundation of every fork below. Also serves the input_controls profiles consumed by this fork: https://raw.githubusercontent.com/brunodev85/winlator/main/input_controls/
coffincolors cmod Winlator fork — package com.winlator.cmod and the customization layer this codebase is built on.
Pipetto-crypto Winlator Bionic fork (the "Bionic" half of Star Bionic) and the upstream Box64 fix branch. Co-credited on cmod. Also packaged vkBasalt into the Winlator shortcut pipeline — the integration Bannerlator's ReShade feature builds on.
jacojayy Maintainer of the Star line. Timeline Semaphore patches in the bundled Turnip driver for newer DXVK compatibility. Official site developer and maintainer.
Star / Frost dev team The star-emu team behind the original Star Bionic and Winlator Frost lines this build continues from.
isygold (AGBOOLA Israel Oluwagbogo) Star Engine / VEGAS — the Adreno-optimized DXVK fork this build's v1.3-vegas is named for, eliminating stutter and adding real-time upscaling on mobile GPUs, plus tuned dxvk.conf profiles. See the VEGAS DXVK FAQ for help & configuration.
🚀 Support VEGAS Development — low-level graphics dev & vibecoder: debugging, refactoring & improving original DXVK code for Adreno. ❤️ Sponsor →
vivsi Controller support contributions.
arro000 Virtual Controller Pro (#156) — a ground-up on-screen touch-controls overhaul: new control types (Dynamic Stick, Mouse Area, Button Grid, Expandable Buttons), a Jetpack Compose-rebuilt controls editor with an in-game live editor, control groups, key combos, per-element dead zones, custom control icons, and a control scale limit raised to 300%.
StevenMXZ Winlator-Ludashi and extensive cherry-picked work implemented in this build. This includes the new user interface and the Vulkan rendering path — both of which were still unreleased and unfinished at the time these builds and this repo were created — along with various other cherry-picked commits. This work is set to be released properly in his upcoming 3.1.
GameNative GameNative by utkarshdalal — Proton bionic translation layers and cherry-picked commits adapted into this build. Its rendering pipeline was also the reference used to fix and rewire Bannerlator's render options — the AHardwareBuffer present path that makes Vulkan / DXVK / VKD3D content render correctly on both the OpenGL and Vulkan host renderers (GPUImage socket-buffer locking + EGLImage sampling, DRI3 direct-scanout, the Present extension's FLIP / COPY branches, and the Native Rendering+ direct-scanout path) was ported from and cross-examined against GameNative's implementation. The standalone FPS limiter is GameNative's too — its guest-side present-pacing mechanism (delaying the X11 Present IdleNotify to throttle the game itself, plus the rule that lsfg-vk's own pacing governs when its multiplier is ≥ 2) was ported from GameNative. For the Steam store (2.3), the session-hardening patterns (derived-loggedIn state, off-pump PICS sync, single reconnect funnel, dead-token clearing, keep-alive / watchdog) and the DownloadSpeedConfig cores × ratio 4-tier download-speed model were also ported / adapted from GameNative. The PC-accurate controller vibration feature (dual-motor rumble with per-container mode + intensity) originates from GameNative #1214, reaching this build via TideGear's port (see below). In 2.9.8, the external-display ("game on TV") concept and the suspend-sink audio-recovery approach (re-establishing the guest's audio output after backgrounding or a mid-game output-route change) were referenced from GameNative and reimplemented clean-room — the TV Options suite and Bannerlator's native pasink libpulse audio client are original work, and the wireless casting feature is entirely Bannerlator's own with no upstream equivalent.
TideGear GameHub-Vibration-Fix — the PC-accurate controller vibration work this build's rumble is built on. TideGear authored both halves: the original vibration feature PR (carrying GameNative #1214 forward) and the preload-free winebus.so rumble-duration patch (PR #91) that drops the libevshim LD_PRELOAD hook and instead byte-patches SDL's rumble duration to never auto-expire — which is what makes sustained rumble actually hold instead of dying after ~1s. Adopted with the author's permission. Bannerlator re-derived the patch patterns per Proton build (9.0 / 10 / 11 aarch64 + Wine 10.0 x86-64) and added a build-agnostic structural fallback.
WinNative WinNative — the reference for Bannerlator's gyroscope (motion aim) support. Its rate-mode gyro implementation is what ours is derived from: the sensor→stick pipeline (deadzone → sensitivity → exponential low-pass → clamp), the axis and sign conventions, and the fractional-remainder accumulator that keeps slow tilts from rounding away to nothing. Bannerlator adapted it to our evdev gamepad-injection path and extended the gyro-mouse mode to also drive the X pointer directly, so motion control works on a Wine container desktop and not only in captured mouse-look games. GPL-3.0, same as this project.
xXJSONDeruloXx bionic-fg — the Android/bionic Vulkan frame-generation layer powering Bannerlator's Frame Generation feature. Included in-tree as a git submodule with the author's permission.
PancakeTAS lsfg-vk — the open-source Vulkan frame-generation layer (a Vulkan-layer reimplementation of Lossless Scaling's frame generation) that Bannerlator's second, user-selectable FG engine is built on.
FrankBarretta lsfg-vk-android — the Android/bionic port of lsfg-vk (AHardwareBuffer path + vkCmdPipelineBarrier2 shim) that runs as Bannerlator's lsfg-vk engine on the Turnip stack. The in-game live multiplier/flow-scale reload uses the conf.toml mtime-watch mechanism from GameNative's lsfg-vk-android fork. No proprietary shaders are bundled — users supply their own Lossless.dll (Lossless Scaling by THS) via the in-app picker.
DadSchoorse vkBasalt (zlib) — the Vulkan post-processing layer that embeds the ReShade FX compiler. Bannerlator's ReShade feature is a continuation of this work: the bundled layer is built from DadSchoorse's source, patched for live on-device toggle and slider control. The bundled / catalog .fx effects are MIT / CC0 shaders by the ReShade (crosire), prod80 (prod80-reshade-repository), luluco250 (FXShaders) and fubax authors, each under their own MIT / CC0 license.
leegao (Lee Gao) Vulkan texture-compression work used for mobile-GPU compatibility and performance — the BCn decompression layer (shader-v3, powering 2.5's "Wrapper + bcn_layer" Mali driver) and the DX12 compat_layer that, alongside it, powers 2.7's new opt-in "Wrapper + compat + bcn" Mali DX12 driver — including the just-landed layer-composition fix — plus real-time ASTC/ETC compute-shader encoders and the bionic-vulkan-wrapper (ETC2-Milestone-2) bundled as the base wrapper for the Mali BCn path.
WinterSnowfall d7vk — the DXVK-lineage Vulkan implementation of DirectX 7 / DirectDraw (Direct3D 3–7) that powers Bannerlator's new D7VK DDraw-wrapper option (new in 2.9.6). Bundled as the default and offered as downloadable nightly catalog builds.
WinlatorMali (GunaCharanTeja / Charan) WinlatorMali — the Wrapper Version Manager (new in 2.7) is modeled on WinlatorMali's graphics-driver manager, introduced in Winlator Mali Bionic 1.1; a number of the downloadable catalog wrappers come from WinlatorMali too (each credited in-app). The feature was requested in #132 by @6ui99uhkllj.
BrunoSX The bundled Windows file manager is Banner File Manager (new in 2.7.1), Bannerlator's fork of BrunoSX's Winlator File Manager (MIT) — rebuilt with native Win32 file operations (sidestepping the Proton 10.0-4 shell32 copy-paste crash), a dual-pane split view, and Open-as-administrator / Open-with.
@Tony57319 Reported / requested the lsfg Performance mode frame-gen toggle new in 2.7.1 (#152).
@clintOnSky 🌱 (first-time contributor) Downstream fixes surfaced in #96, applied to main individually: the bionic-fg present-path bounded fence wait (replacing the full vkQueueWaitIdle after the frame-gen dispatch, restoring FPS in heavy DXVK titles on single-queue Adreno/Turnip) plus the FIFO-pacing acquire guard — matched by the fixes upstreamed as xXJSONDeruloXx/bionic-fg#6 and now baked into the submodule source; the Xiaomi/HyperOS libjpeg.so symlink-shadow removal that lets the frame-gen Vulkan layer load; the sign-agnostic battery-wattage fix for Xiaomi/MTK devices that report discharge current as positive; and the WOWBOX64 content-type fix for arm64ec Box64 downloads with live refresh of the component version lists after a download sheet closes.
JavaSteam JavaSteam (in.dragonbra:javasteam) by Longi94 — the Steam connection-manager client the built-in Steam store logs in and talks to Steam with, and — via the javasteam-depotdownloader fork by joshuatam — the entire depot-download engine Bannerlator's Steam store is built on.
Goldberg Steam Emu / gbe_fork Goldberg Steam Emu by Mr_Goldberg, and gbe_fork by Detanup01 — the Steam emulator Bannerlator's Goldberg auto-patch installs (Regular / Experimental / ColdClient tiers) for offline / emulated play of games you own.
Pluvia Pluvia — an Android Steam client whose patterns were referenced alongside GameNative while building the Steam store's login / session handling.
The412Banner Full Jetpack Compose UI migration, in-game overlay rewrite, controller-support restore (SDL2 SoName fix + four event files), Box64 edit-dialog fix, theme system, and CI/release infrastructure. In 2.3, building on JavaSteam / GameNative / Goldberg, the original engineering is Bannerlator's own: the cross-store Download Manager, the four storefront integrations (Steam / Epic / GOG / Amazon), the multi-week Steam session-hardening work, the depot OOM fix, the Goldberg auto-patch integration, the store Material-3 restyle, and the store-log credential redaction (StoreLog.redactUrl). In 2.4, the fullscreen aspect-ratio pipeline (Off/Fit/Stretch/Fill/Integer across all three renderers), the in-app File-Manager import picker replacing SAF (with image thumbnails + percent/ETA import progress), the DLC picker, the true-size depot install fix, per-game persistence of scaling / fullscreen / HUD position, and the container wallpaper picker. In 2.5, the Mali / BCn hardening — wiring leegao's bcn_layer (shader-v3) + ETC2-Milestone-2 wrapper into the "Wrapper + bcn_layer" and experimental "Wrapper-gamenative" drivers, the BCn Layer Settings UI, and the in-game logging overhaul (copy-logs button, selectable log location, co-located DXVK/VKD3D logs, scrollable debug-channels dialog). In 2.5.1, the SurfaceFlinger colour + crash fix and per-container / per-game "Correct SurfaceFlinger colours" toggle (ASurfaceRenderer R/B-swap fix + GPU converter, ported from GameNative #1620 / #1644), the in-game FEX runtime indicator (arm64ec / x86-64 · FEXCore / wowbox64 / Box64 · unixlib / DLL, read live from /proc/<pid>/maps), the FEXCore unixlib (.so) auto-match at launch (per-game version sync + uninstall cleanup), and 18 new Environment Variable presets (DXVK / VKD3D / Wine / Mesa). In 2.5.2, the Community Configs system — the in-app catalog browser, per-uploaded-config cards with live upvotes / downloads / comments, the surgical config-apply engine, and the smart inline installer for DXVK / VKD3D / FEXCore + Turnip drivers — plus two new Proton 11.0-1 x86-64 compatibility layers (SDK 28 / SDK 35) built and published to the downloadable catalog. Also maintains the Nightlies WCP Hub and Banners-Turnip.

Upstream stack

The Wine/translation stack this app bundles or downloads:

Component Author
Wine WineHQ
Box64 / Box86 ptitSeb
FEXCore FEX-Emu
DXVK doitsujin / Philip Rebohle
DXVK-GPLAsync patch Ph42oN
DXVK-Sarek pythonlover02
VEGAS (Adreno-tuned DXVK / GPLAsync fork — v1.3-vegas) isygold · FAQ · ❤️ Sponsor
D7VK (DirectX 7 / DirectDraw → Vulkan) WinterSnowfall
VKD3D-Proton Hans-Kristian Arntzen
Turnip / Mesa Freedreno team @ Mesa
Proton layers (bionic) GameNative
Steam depot engine JavaSteam by Longi94 · depotdownloader fork joshuatam
Steam emulator (Goldberg auto-patch) Goldberg Steam Emu (Mr_Goldberg) · gbe_fork (Detanup01)
Controller vibration (PC-accurate rumble) Feature GameNative #1214 · port + preload-free winebus duration patch TideGear (#91)
Gyroscope (motion aim) Rate-mode pipeline + axis conventions from WinNative
Frame Generation (bionic-fg) xXJSONDeruloXx
Frame Generation (lsfg-vk) PancakeTAS · Android port FrankBarretta · live-reload fork GameNative · DLL Lossless Scaling (user-supplied)
Post-processing (ReShade / vkBasalt) vkBasalt by DadSchoorse (zlib) · Winlator packaging Pipetto-crypto · effects by crosire · prod80 · luluco250 · fubax (MIT / CC0)

Community reports & requests

Much of Bannerlator's polish is driven by the people who file issues and test builds. Recent features came directly from:

  • Angel — requested the environment-variable presets that seeded 2.5.1's new preset set (DXVK_DISABLE_TIMELINE_SEMAPHORES, VKD3D_SHADER_MODEL).
  • @kylinzang — the driving force behind 2.5's Mali / BCn support (#70, originally #54 / #53): the original request, the env-var spec, the in-game logging overhaul, and iterative on-device testing on Mali-G57 through a full sign-off. Also fullscreen aspect-ratio modes (#71) and the in-app File-Manager import picker (#73).
  • @rizky2-crypto — Mali-G610 BCn testing (#30).
  • @SombraShadow — the container wallpaper picker (#66).
  • @abdogm — magnifier cursor-follow & no-dim fixes (#44).
  • @Devaspe — the Steam install-blocker report that drove the true-size depot install fix.

…and everyone in the Discord and on GitHub who tests builds and reports issues. 🙏

Additional credits surfaced in the Star Bionic REVAMPED project (star.bionic-revamp):

  • @The412Banner — Converting the UI to Jetpack Compose and rewriting the controller implementation.
  • @jacojayy — Timeline Semaphore patches in Turnip.

If you have contributed and are not listed, open a PR — this list is intended to be complete.


⚖️ Disclaimer

Winlator and its forks are unofficial community projects. They are not affiliated with or endorsed by Microsoft, Wine, the Mesa project, Qualcomm, Valve/Steam, Epic Games, GOG, Amazon, or any game publisher. The built-in store sign-ins are a third-party login system for libraries you already own — see Security Hardening & your store accounts, and use them at your own risk. Compatibility varies by device GPU, Android version, and individual game.


📄 License

Bannerlator is licensed under GPL-3.0 as a whole, because it incorporates GPL-3.0-licensed components (notably GameNative and lsfg-vk), whose copyleft governs the combined distribution.

The upstream Winlator → cmod → Bionic → Star → Ludashi lineage it builds on is MIT © 2023 BrunoSX (permissive, and GPL-3.0-compatible). That MIT notice — and the license and copyright of every incorporated component (GameNative, lsfg-vk, gbe_fork/Goldberg, vkBasalt, bcn_layer, JavaSteam, bionic-fg, Wine/Box64/Mesa/DXVK, FSR/NIS/SGSR, ReShade shaders, …) — is preserved in THIRD-PARTY-LICENSES.md.

See LICENSE for the full GPL-3.0 text and THIRD-PARTY-LICENSES.md for all third-party attributions.

About

Experimental autonomous container setup and Steam-first launch orchestration for Bannerlator on Android.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages