[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92554":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":12,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},92554,"Bannerlator","The412Banner\u002FBannerlator","The412Banner","Bannerlator — run Windows PC games and apps on Android (Wine + Box64\u002F86). A personal, community-driven continuation of the discontinued Winlator Star Bionic project. GitHub Actions builds + releases.",null,"C",60,8,3,4,0,43.66,"GNU General Public License v3.0",false,"main",true,[],"2026-07-22 04:02:06","\u003Cp align=\"center\">\n  \u003Cimg src=\"logo.jpg\" width=\"820\" alt=\"Bannerlator\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Bannerlator\u003C\u002Fh1>\n\u003Cp align=\"center\">\u003Cb>Windows applications and games on Android.\u003C\u002Fb>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FThe412Banner\u002FBannerlator\u002Ftotal?style=for-the-badge&label=Downloads&color=ff2d9b\" alt=\"Total Downloads\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlatform-Android%208.0%2B-7a4cff?style=for-the-badge\" alt=\"Platform\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPL--3.0-2d9bff?style=for-the-badge\" alt=\"License\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002Fnew?template=ask-the-ai.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F💬%20Ask%20the%20AI-Ask%20about%20the%20app-7b2ff7?style=for-the-badge&logo=claude&logoColor=white\" alt=\"Ask the AI\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Freleases\u002Flatest\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F⬇%20Download-Latest%20Release-ff2d9b?style=for-the-badge&logo=android&logoColor=white\" alt=\"Download Latest Release\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#-ask-me-anything\">Ask AI\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Freleases\u002Flatest\">Download\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Fn8S4G2WZQ4\">Discord\u003C\u002Fa> •\n  \u003Ca href=\"https:\u002F\u002Ft.me\u002FThe412BannerGaming\">Telegram\u003C\u002Fa> •\n  \u003Ca href=\"#building\">Builds\u003C\u002Fa> •\n  \u003Ca href=\"#credits\">Credits\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## 📌 Project Notice\n\n> **Bannerlator is a personal build — made by me ([The412Banner](https:\u002F\u002Fgithub.com\u002FThe412Banner)), for my own device, my own needs, and my own use.**\n>\n> It's a personal continuation of the Winlator *Star Bionic* project ([star-emu\u002Fstar](https:\u002F\u002Fgithub.com\u002Fstar-emu\u002Fstar)) 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.\n>\n> **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.\n>\n> - **No guarantee it works on any other device, GPU, or Android version.**\n> - **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.\n> - Bug reports \u002F feature requests for setups I don't run may simply be closed. That's not personal; this just isn't a community-support project.\n>\n> 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.\n\n---\n\n## ℹ️ Information\n\n| | |\n|---|---|\n| **App label** | `Bannerlator Bionic` (standard) · `Bannerlator Bionic PuBG` (pubg) · `Bannerlator Bionic Ludashi` (ludashi) |\n| **Packages** | `com.winlator.banner` (standard) · `com.tencent.ig` (pubg) · `com.ludashi.benchmark` (ludashi) |\n| **Version** | Bannerlator **V 2.5** — built from Star **marcescence** (`versionName 2.5`, `versionCode 40`) |\n| **Android SDK** | `compileSdk 34` · `targetSdk 28` · `minSdk 26` (Android 8.0+) |\n| **Lineage** | Winlator → cmod → Bionic Nightly → Star Bionic → **marcescence** → **Bannerlator** |\n\n---\n\n## 🆕 What's New in 2.5\n\n2.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 \u002F 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\u002Fdata`. 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.\n\n**🟢 Mali & Xclipse: BC-texture games now work — new.** Mali \u002F Xclipse GPUs don't decode BC (BCn) textures in hardware, so many games crashed, ran out of VRAM, or showed black \u002F 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](https:\u002F\u002Fgithub.com\u002Fleegao)**'s **bcn_layer shader-v3** (up to ~3.5× faster BCn \u002F ASTC transcoding), with a **BCn Layer Settings** panel to tune force-decode, ETC2 \u002F 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](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F70).)*\n\n**🧾 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 \u002F 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](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F70).)*\n\n**🔧 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 \u002F shell metacharacters.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Previously in 2.4\u003C\u002Fb> — the fit & finish release\u003C\u002Fsummary>\n\n2.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.\n\n**🖥️ 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.)*\n\n**📁 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 \u002F Wine \u002F DXVK \u002F box64 \u002F 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\u002Fpng\u002Fwebp…) 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 \u002F document providers. *(GitHub #73.)*\n\n**🎚️ 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 \u002F FSR \u002F FSR-Fit \u002F Sharpen \u002F NIS used to reset to a plain filter every launch), the **Fullscreen mode**, and your dragged **FPS overlay position** (classic *and* GameHub HUD).\n\n**🧩 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.)*\n\n**🖼️ 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.)*\n\n**💾 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.\n\n**🔧 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.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Previously in 2.3\u003C\u002Fb> — the storefronts release\u003C\u002Fsummary>\n\n2.3 is the **storefronts** release. Bannerlator gains a full **built-in Steam store** — sign in with **username\u002Fpassword 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 \u002F 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.\n\n**🎮 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](https:\u002F\u002Fgithub.com\u002FLongi94\u002FJavaSteam)**) straight into a container. Includes a **GameNative-style 4-tier download speed** (Slow \u002F Medium \u002F Fast \u002F Blazing, cores × ratio), **session hardening** that recovers from Steam's ~1-hour connection-manager logoff so long installs survive, an in-header **connection \u002F login status pill**, a **depot-download OOM fix**, and an optional per-download **\"Log debug session\"** toggle.\n\n**🕹️ Goldberg auto-patch — new.** On a Steam game's detail page, apply a **[Goldberg](https:\u002F\u002Fmr_goldberg.gitlab.io\u002Fgoldberg_emulator\u002F) \u002F gbe_fork** patch for **offline \u002F 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\u002Femulated — **use at your own risk**, for games you own.)*\n\n**⬇️ 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\u002Finstall progress, **background downloads + shade notifications** (a foreground service keeps them running after you leave the app), **launch \u002F verified uninstall**, a single **source-of-truth install state** across detail \u002F card \u002F list, and a new **\"Default screen on launch\"** setting.\n\n**🛍️ Epic, GOG & Amazon stores.** **Amazon Games** and **Epic Games** stores added — sign in, browse your library, and **download \u002F install \u002F 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).\n\n**🔒 Security & your accounts.** The Steam \u002F Epic \u002F GOG \u002F 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\u002FSteam, Epic, GOG or Amazon, and you use them **at your own risk**. This release **redacts** credentials and identifiers from logs — signed download \u002F 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](#-security-hardening--your-store-accounts) section below.\n\n**🔓 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).\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Previously in 2.2.2\u003C\u002Fb> — the in-game ReShade release\u003C\u002Fsummary>\n\n2.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 \u002F 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.\n\n**🎬 In-game ReShade effects.** Run real ReShade `.fx` effects (colour grading, sharpen, film grain, CRT, tonemap, LUTs…) on **DXVK \u002F VKD3D** games, compiled **on-device** via the bundled **[vkBasalt](https:\u002F\u002Fgithub.com\u002FDadSchoorse\u002FvkBasalt)** layer:\n- **Per-game setup** — pick effects when editing a **container** or a **game shortcut**; your choices are saved with that game.\n- **On-demand catalog** of ~100 curated MIT \u002F CC0 effects (search, browse, download only what you want) — or **drop your own** into the `ReShade\u002F` folder (see [Adding your own ReShade effects](#-adding-your-own-reshade-effects)).\n- **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.\n- **Solo or stack** — run a single effect or layer several at once.\n- > ⚠️ **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 \u002F 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 \u002F DOF aren't supported yet.)*\n\n**♻️ Existing containers auto-update the ReShade layer** on next launch — no need to recreate a container or reinstall the ImageFS for ReShade to work.\n\n**🛟 In-game drawer rail now scrolls** so every control — including **Exit** — is always reachable on short screens.\n\n**🎛️ FPS limiter now sticks between sessions** for a game launched from a shortcut. *(GitHub #46.)*\n\n**🎨 Fixes** — **white on-screen controls** stay white *(GitHub #46)*; very **light \u002F 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)*.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Previously in 2.2\u003C\u002Fb> — the themeable-interface overhaul\u003C\u002Fsummary>\n\n2.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.\n\n**🎨 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.\n- **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.\n- **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.\n\n**🕹️ 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.\n\n**⭐ File Manager — Favorites \u002F 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.\n\n**🎮 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.)\n\n**🧰 In-game Task Manager.** **\"New Task\" now works on the Vulkan \u002F Native renderers** — the dialog used to be invisible over those surfaces — and running processes are shown as **cards**.\n\n**🧹 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.\n\n\u003C\u002Fdetails>\n\n\u003C\u002Fdetails>\n\n\u003C\u002Fdetails>\n\n\u003C\u002Fdetails>\n\n---\n\n## ✨ Full Features\n\nEverything Bannerlator offers, at a glance. No PC and no root required — it runs Windows apps and games directly on your Android device.\n\n### 🍷 Windows compatibility\n- **Wine** Windows compatibility layer — run native Win32\u002FWin64 applications and games.\n- **Box64 \u002F Box86** x86 & x86-64 → ARM translation, with selectable performance presets.\n- **WOWBox64** for arm64ec containers (correctly labelled per container).\n- **FEXCore** as an alternative x86\u002Fx64 emulation backend.\n- **arm64ec** and **x64** container support.\n\n### 🎨 Graphics & translation layers\n- **DXVK** — DirectX 8 \u002F 9 \u002F 10 \u002F 11 → Vulkan (with GPLAsync and Sarek variants).\n- **VKD3D-Proton** — DirectX 12 → Vulkan.\n- **WineD3D \u002F DirectDraw** OpenGL fallback paths for older titles.\n- **Proton bionic** translation layers (via GameNative).\n- **VEGAS** — Adreno-optimized DXVK for reduced stutter and real-time upscaling on mobile GPUs.\n  - > 📖 **New to VEGAS?** Read the **[VEGAS DXVK FAQ](https:\u002F\u002Fhtmlpreview.github.io\u002F?https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fblob\u002Fmain\u002Fdocs\u002Fvegas_faq.html)** — install, config, FSR, tiers, frame generation & shader-stutter troubleshooting.\n  - > 🚀 **Support VEGAS Development** — low-level graphics dev & vibecoder: debugging, refactoring & improving original DXVK code for Adreno. **[❤️ Sponsor isygold →](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fisygold)**\n- **Turnip \u002F Mesa** open-source Adreno Vulkan drivers, with Timeline Semaphore patches for newer DXVK; bundled and downloadable driver options. A **`turnip-26.1.0`** option loads Turnip as a direct system Vulkan ICD (no adrenotools hook) so it works on **Android 10 \u002F pre-11 devices** too.\n- **BCn transcoding for Mali \u002F Xclipse** — a **\"Wrapper + bcn_layer\"** graphics driver ([leegao](https:\u002F\u002Fgithub.com\u002Fleegao)'s [bcn_layer](https:\u002F\u002Fgithub.com\u002Fleegao\u002Fbcn_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 \u002F 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.)*\n\n### 🖥️ Renderers\n- Multiple host renderers — **Vulkan**, **OpenGL**, and **VirGL**.\n- > ℹ️ The **Vulkan host renderer** uses the rendering path from **[StevenMXZ](https:\u002F\u002Fgithub.com\u002FStevenMXZ\u002FWinlator-Ludashi)** (Winlator-Ludashi); its `AHardwareBuffer` present path — what makes Vulkan \u002F DXVK \u002F VKD3D content actually display correctly — was ported from \u002F cross-examined against **[GameNative](https:\u002F\u002Fgithub.com\u002Futkarshdalal\u002FGameNative)**. See [Credits](#-credits).\n- **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 \u002F scaling, since it bypasses the compositor).\n- **Spatial upscalers on *both* the Vulkan *and* OpenGL renderers** — **SGSR** (Snapdragon GSR 1.0) and **FSR \u002F FSR-Fit** (AMD FidelityFX Super Resolution 1.0), plus **NIS** (NVIDIA Image Scaling, Vulkan), a **Sharpen** (RCAS) mode and Linear \u002F 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.\n- **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.\n- **Supersampling (Render scale)** — render above display resolution (1.25× \u002F 1.5× \u002F 2×) and downsample with a Lanczos-2 filter for DSR \u002F OGSSAA-style anti-aliasing; set per container \u002F per shortcut.\n- **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).\n- **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.\n- **ReShade post-processing** — run real ReShade `.fx` effects (colour grading, sharpen, film grain, CRT, tonemap…) on **DXVK \u002F VKD3D** games. Effects compile **on-device** via a bundled **[vkBasalt](https:\u002F\u002Fgithub.com\u002FDadSchoorse\u002FvkBasalt)** layer; pick from an **on-demand catalog** of ~100 curated MIT\u002FCC0 effects or drop your own into the `ReShade\u002F` folder. A dedicated in-game **ReShade tab** auto-generates properly typed controls (sliders \u002F toggles \u002F dropdowns \u002F 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\u002FDOF are not included yet.)*\n  - > ⚠️ **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 \u002F 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.\n- **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 \u002F 90 \u002F 120 \u002F 144 Hz** slider, on all three host renderers, auto-disabled on displays that don't support variable refresh.\n- Adjustable resolution and frame-rate limit.\n\n### 🎞️ Frame generation & pacing\n- **Two selectable frame-generation engines** — pick **Off \u002F bionic-fg \u002F lsfg-vk** per container; the running engine is shown as a badge in the in-game drawer.\n  - **bionic-fg** — powered by the **[bionic-fg](https:\u002F\u002Fgithub.com\u002FxXJSONDeruloXx\u002Fbionic-fg)** Vulkan layer (Lossless-Scaling lineage), bundled and ready to use out of the box.\n  - **lsfg-vk** — powered by the **[lsfg-vk](https:\u002F\u002Fgithub.com\u002FPancakeTAS\u002Flsfg-vk)** Vulkan layer (Android port by [FrankBarretta](https:\u002F\u002Fgithub.com\u002FFrankBarretta\u002Flsfg-vk-android)).\n- > ⚠️ **lsfg-vk requires you to supply your own `Lossless.dll`.** Bannerlator bundles **no** proprietary Lossless Scaling files. You must own **[Lossless Scaling](https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F993090\u002FLossless_Scaling\u002F)** (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.\n- **Live in-game controls** for whichever engine the container runs: switch between **Off \u002F 2× \u002F 3× \u002F 4×** and adjust the **flow-scale** slider right from the in-game Graphics drawer, hot-reloaded with no restart.\n- **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\u002Fpower 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](https:\u002F\u002Fgithub.com\u002Futkarshdalal\u002FGameNative)** (see [Credits](#-credits)).\n- Confirmed on **both** the OpenGL and Vulkan host renderers.\n\n### 📦 Containers\n- Create and manage **multiple isolated Wine containers**.\n- **Redesigned container cards** — a clean spec-chip layout (renderer · DXVK on top, driver · VKD3D · backend beneath) that matches the game cards.\n- **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.\n- **Import \u002F export** containers to move or back up setups.\n- Per-container control of Wine version, graphics driver, DXVK \u002F VKD3D version, Box64 preset, drive mappings, Z-drive selector, and environment variables.\n- **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.\n- **Compatibility Layers download menu** — a cloud button on each component (Wine\u002FProton, DXVK, VKD3D, Box64\u002FWOWBox64, FEXCore) opens a downloader to browse, install or remove versions, with **Wine\u002FProton tabs**, an **\"in use\"** marker, **install-from-file**, and **byte-accurate download + install progress bars**.\n\n### 🕹️ Games, shortcuts & input\n- **Game library** with grid or list layout, sorting, and installed\u002Fupdated filters.\n- **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.\n- Add shortcuts from external storage.\n- **Back up & restore game saves** as **GameHub-compatible zips**, with per-game save discovery and a confirm checklist before anything is overwritten.\n- **SteamGridDB** cover-art scraping.\n- Per-game settings including display language \u002F locale.\n- **Customizable on-screen touch controls** and virtual gamepad overlays, which **follow your app theme** or take a **per-game custom colour** you set in the Controls editor.\n- **Physical controller** support (SDL2), plus touchpad \u002F 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.\n\n### 🛒 Built-in stores & cross-store Download Manager\nSign in to your existing storefronts and play from libraries **you already own** — Bannerlator does not sell, bundle or circumvent any game or DRM.\n- **Steam** — sign in with **username \u002F password or QR code**, browse your owned library, and **download + install** games through a built-in **depot engine** (built on **[JavaSteam](https:\u002F\u002Fgithub.com\u002FLongi94\u002FJavaSteam)**). Includes a **4-tier download-speed** picker (Slow \u002F Medium \u002F Fast \u002F Blazing), **session hardening** that recovers from Steam's ~1-hour connection-manager logoff so long installs finish, a **connection \u002F login status pill**, and a depot-download **OOM fix**.\n  - **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 \u002F download \u002F catalog \u002F 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.\"\n  - **Optional Goldberg auto-patch** on a game's detail page — a **[Goldberg](https:\u002F\u002Fmr_goldberg.gitlab.io\u002Fgoldberg_emulator\u002F) \u002F gbe_fork** Steam-emulator patch for **offline \u002F emulated** play, in **Regular \u002F Experimental \u002F 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.)*\n- **Epic Games** — sign in, browse your library, and **download \u002F install \u002F launch** your titles (including Epic **free games**).\n- **Amazon Games** — sign in, browse your library, and **download \u002F install \u002F launch** your titles.\n- **[GOG](https:\u002F\u002Fwww.gog.com\u002F)** — 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.\n- **⬇ 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\u002Finstall progress, **background downloads + notification-shade** support (a foreground service keeps them running when you leave the app), and **launch \u002F 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.\n- > 🔒 These sign-ins are a **third-party login system, exactly like any other emulator\u002Flauncher** that logs into these stores — **use them at your own risk** (see [Security Hardening](#-security-hardening--your-store-accounts)).\n\n### 🔒 Security Hardening & your store accounts\nThe Steam \u002F Epic \u002F GOG \u002F 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\u002FSteam, Epic Games, GOG, or Amazon.**\n- **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.\n- **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 \u002F manifest URLs** (Amazon \u002F Epic \u002F 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.\n- **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.\n\n### 🧰 Bundled Start-menu utilities\n- New containers ship with handy Windows tools in the Start menu — **Winlator File Manager (WFM)**, **AIO Graphics Test**, and **Game Controller Test**.\n- **`.lnk` working-directory (\"Start in\") support** so shortcuts for apps that only run from their own folder launch correctly.\n\n### 🎛️ Interface & in-game overlay\n- Modern **Jetpack Compose** user interface with a redesigned, icon-led navigation drawer.\n- **Theme-aware everywhere** — your selected preset \u002F accent recolours the **whole app *and* the in-game side drawer**, including dialogs, chips, sliders and overlays.\n- **Customizable themes** — **16 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**.\n- 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.\n- **Built-in File Manager with Favorites** — bookmark folders and jump to them from a dedicated list, each labelled by storage source (Internal \u002F SD card \u002F 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 \u002F ICP \u002F wallpaper \u002F drivers \u002F assets) — reliable on OEM skins where Android's system picker fails, with the system picker still available as a secondary option.\n- **Performance HUD** — FPS, frame time, CPU\u002FGPU temperature, and RAM, in vertical or horizontal layout, with its on-screen **position saved per game**.\n\n### 📥 Builds & distribution\n- **Three build flavors** with distinct package IDs — *standard*, *PuBG*, and *Ludashi*.\n- **Optimized release builds** (not debug) for a smoother Compose UI, AOSP-testkey signed so updates install over previous installs.\n- Continuous **GitHub Actions** action builds and tagged stable releases.\n\n---\n\n## 🎨 Adding your own ReShade effects\n\nBesides the built-in download catalog, you can add **any** ReShade effect yourself by dropping it into a folder. Follow these steps exactly:\n\n**1. Open the ReShade drop-in folder on your device** (create the `ReShade` folder if it isn't there yet):\n\n```\nAndroid\u002Fdata\u002Fcom.winlator.banner\u002Ffiles\u002FReShade\u002F\n```\n\n> 📁 That path is for the **Standard** build. For the other builds, swap the package name: **PuBG** → `Android\u002Fdata\u002Fcom.tencent.ig\u002Ffiles\u002FReShade\u002F` · **Ludashi** → `Android\u002Fdata\u002Fcom.ludashi.benchmark\u002Ffiles\u002FReShade\u002F`.\n\n**2. Make one folder per effect.** Name the folder whatever you want the effect to be **called in the menu** — for example `MySepia`.\n\n**3. Put the effect's files inside that folder — all in the same place, next to the `.fx`:**\n- the effect's **`.fx`** file (required),\n- any **`.fxh`** files it `#include`s (very common — e.g. `ReShade.fxh`, `ReShadeUI.fxh`),\n- any **image \u002F texture** files the effect uses.\n\n```\nReShade\u002F\n  MySepia\u002F\n    MySepia.fx          ← the effect (folder name match = used first)\n    ReShade.fxh         ← copy in any .fxh the .fx #includes\n    ReShadeUI.fxh\n    noise.png           ← copy in any textures it uses\n```\n\n**4. Pick it in the app.** Open the app → edit a **container** or a **game shortcut** → **ReShade effect** picker. Your folder now appears in the list — select it.\n\n**5. Use it in-game.** Launch a **DirectX (DXVK \u002F VKD3D) game**, open the in-game drawer → **ReShade tab**, and turn the effect on\u002Foff and tune its sliders **live**.\n\n> #### ⚠️ Read this if something doesn't show up or work\n> - **Only colour effects work** — sharpen, colour grading, film grain, CRT, tonemap, vignette, etc. **Depth effects (SSAO, depth-of-field, MXAO) do not work yet.**\n> - ReShade only affects **DirectX games running through DXVK \u002F VKD3D** — it does nothing on OpenGL \u002F WineD3D \u002F older 2D titles.\n> - **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\u002F` is ignored).\n> - **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.\n> - **Game won't start \u002F 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.\n> - **Can't even find `Android\u002Fdata`?** Many stock file managers hide it on Android 11+. Use a file manager that can open `Android\u002Fdata`, or copy the effect folder over from a PC via a USB cable, then drop it in.\n\n---\n\n## 🎮 Frontends Workaround\n\nBannerlator does not work by itself on frontends out of the box. See the [frontends workaround guide](https:\u002F\u002Fgithub.com\u002Fstar-emu\u002Fstar\u002Fblob\u002Fmarcescence\u002Fmarcescence-frontends.md) to get it running.\n\n---\n\n## 🛠️ Building\n\nThis project is built via **GitHub Actions only** — local builds are not supported.\n\n- **Action builds** — every fix is compiled and published as a downloadable workflow artifact.\n- **Releases** — tagged stable builds are published as GitHub Releases.\n\n---\n\n## 🤖 Ask Me Anything\n\nGot a question about Bannerlator? **Ask the codebase directly.** An AI reads the\nactual source code and answers with the exact file names and line numbers, so you\ncan check it yourself. It never guesses — if the answer isn't in the code, it says so.\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002Fnew\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F💬%20Ask%20a%20Question-Open%20an%20issue-7b2ff7?style=for-the-badge&logo=claude&logoColor=white\" alt=\"Ask a Question\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n**It's three steps:**\n\n1. **[Open an issue](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002Fnew)** (you'll need a free GitHub account).\n2. Type your question — be specific, and name a feature, setting, or file.\n3. Submit. The AI replies in a comment on your issue, usually within **1–2 minutes**.\n\nThat's it — no form, no approval step, nothing else to do.\n\n> ℹ️ The AI replies to **every** new issue automatically. A few per person per day\n> are free; past that, it will ask you to try again later.\n\n**Good things to ask:**\n\n- *\"How does the FPS limiter work?\"*\n- *\"Where is the GOG store integration implemented?\"*\n- *\"What values does the scaling mode picker accept?\"*\n- *\"How are release builds signed and distributed?\"*\n\n*Avoid device-specific troubleshooting like \"why is my game slow?\" — the AI explains\nwhat the **code** does, not how a game runs on your phone.*\n\n\u003Cdetails>\n\u003Csummary>Prefer the command line?\u003C\u002Fsummary>\n\nWith [opencode](https:\u002F\u002Fopencode.ai) installed (`npm install -g opencode-ai`), run the\nsame agent locally against a clone of this repo:\n\n```\nopencode run \"your question\" --agent ama-agent --model opencode\u002Fbig-pickle\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Maintainers \u002F forks — one-time setup\u003C\u002Fb>\u003C\u002Fsummary>\n\nThe bot runs on the **opencode\u002Fbig-pickle** model via your opencode credentials\n(not a separate API key). To enable it on a fork:\n\n1. Locally run `cat ~\u002F.local\u002Fshare\u002Fopencode\u002Fauth.json` and copy the whole JSON.\n2. Add it as a repository secret named **`OPENCODE_AUTH`** under\n   **Settings → Secrets and variables → Actions**.\n3. Make sure the `answered` and `question` labels exist.\n\nEvery newly opened issue is answered automatically, bounded by a per-user daily\nlimit and a monthly cap — tune both at the top of\n`.github\u002Fworkflows\u002Fama-answer.yml` (`PER_USER_PER_DAY`, `MONTHLY_CAP`;\nmaintainers are exempt from the daily limit). You can also force a re-run on an\nolder issue by adding the **`question`** label. Without the secret, the bot posts\na notice explaining what's missing.\n\u003C\u002Fdetails>\n\n---\n\n## 🙏 Credits\n\nThis 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:\n\n| Contributor | Contribution |\n|---|---|\n| **brunodev85** | Original [Winlator](https:\u002F\u002Fgithub.com\u002Fbrunodev85\u002Fwinlator) — Wine + Box64 + Turnip on Android. Foundation of every fork below. Also serves the `input_controls` profiles consumed by this fork: \u003Chttps:\u002F\u002Fraw.githubusercontent.com\u002Fbrunodev85\u002Fwinlator\u002Fmain\u002Finput_controls\u002F> |\n| **coffincolors** | [`cmod` Winlator fork](https:\u002F\u002Fgithub.com\u002Fcoffincolors\u002Fwinlator) — package `com.winlator.cmod` and the customization layer this codebase is built on. |\n| **Pipetto-crypto** | [Winlator Bionic fork](https:\u002F\u002Fgithub.com\u002FPipetto-crypto\u002Fwinlator) (the \"Bionic\" half of *Star Bionic*) and the upstream [Box64 fix branch](https:\u002F\u002Fgithub.com\u002FPipetto-crypto\u002Fbox64). Co-credited on cmod. Also packaged **vkBasalt** into the Winlator shortcut pipeline — the integration Bannerlator's **ReShade** feature builds on. |\n| **jacojayy** | Maintainer of the [Star](https:\u002F\u002Fgithub.com\u002Fjacojayy\u002Fstar) line. Timeline Semaphore patches in the bundled Turnip driver for newer DXVK compatibility. Official site developer and maintainer. |\n| **Star \u002F Frost dev team** | The [star-emu](https:\u002F\u002Fgithub.com\u002Fstar-emu) team behind the original *Star Bionic* and *Winlator Frost* lines this build continues from. |\n| **isygold** (AGBOOLA Israel Oluwagbogo) | [Star Engine \u002F VEGAS](https:\u002F\u002Fgithub.com\u002Fisygold\u002Fvegas-releases) — 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](https:\u002F\u002Fgithub.com\u002Fisygold\u002FDXVK.CONF-FILE-SETTINGS-). See the **[VEGAS DXVK FAQ](https:\u002F\u002Fhtmlpreview.github.io\u002F?https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fblob\u002Fmain\u002Fdocs\u002Fvegas_faq.html)** for help & configuration.\u003Cbr>🚀 **Support VEGAS Development** — low-level graphics dev & vibecoder: debugging, refactoring & improving original DXVK code for Adreno. **[❤️ Sponsor →](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fisygold)** |\n| **vivsi** | Controller support contributions. |\n| **StevenMXZ** | [Winlator-Ludashi](https:\u002F\u002Fgithub.com\u002FStevenMXZ\u002FWinlator-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**. The bundled **Winlator File Manager (`wfm.exe`)** — including its correct \"Local Disk\" drive-icon behaviour — is from StevenMXZ's **Winlator-Ludashi 3.1 hotfix** release. |\n| **GameNative** | [GameNative](https:\u002F\u002Fgithub.com\u002Futkarshdalal\u002FGameNative) 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 \u002F DXVK \u002F 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 \u002F 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 \u002F watchdog) and the **`DownloadSpeedConfig` cores × ratio 4-tier download-speed model** were also ported \u002F adapted from GameNative. |\n| **xXJSONDeruloXx** | [bionic-fg](https:\u002F\u002Fgithub.com\u002FxXJSONDeruloXx\u002Fbionic-fg) — the Android\u002Fbionic Vulkan **frame-generation** layer powering Bannerlator's Frame Generation feature. Included in-tree as a git submodule with the author's permission. |\n| **PancakeTAS** | [lsfg-vk](https:\u002F\u002Fgithub.com\u002FPancakeTAS\u002Flsfg-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. |\n| **FrankBarretta** | [lsfg-vk-android](https:\u002F\u002Fgithub.com\u002FFrankBarretta\u002Flsfg-vk-android) — the Android\u002Fbionic 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\u002Fflow-scale reload uses the `conf.toml` mtime-watch mechanism from **GameNative's** [lsfg-vk-android fork](https:\u002F\u002Fgithub.com\u002FGameNative). No proprietary shaders are bundled — users supply their own `Lossless.dll` ([Lossless Scaling](https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F993090\u002FLossless_Scaling\u002F) by THS) via the in-app picker. |\n| **DadSchoorse** | [vkBasalt](https:\u002F\u002Fgithub.com\u002FDadSchoorse\u002FvkBasalt) (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 \u002F catalog `.fx` effects are MIT \u002F CC0 shaders by the **ReShade ([crosire](https:\u002F\u002Fgithub.com\u002Fcrosire\u002Freshade-shaders))**, **prod80 ([prod80-reshade-repository](https:\u002F\u002Fgithub.com\u002Fprod80\u002Fprod80-reshade-repository))**, **luluco250 ([FXShaders](https:\u002F\u002Fgithub.com\u002Fluluco250\u002FFXShaders))** and **fubax** authors, each under their own MIT \u002F CC0 license. |\n| **leegao** (Lee Gao) | Vulkan texture-compression work used for mobile-GPU compatibility and performance — the [BCn decompression layer](https:\u002F\u002Fgithub.com\u002Fleegao\u002Fbcn_layer) (**shader-v3**, powering 2.5's **\"Wrapper + bcn_layer\"** Mali driver) and real-time [ASTC\u002FETC compute-shader encoders](https:\u002F\u002Fgithub.com\u002Fleegao), plus the [bionic-vulkan-wrapper](https:\u002F\u002Fgithub.com\u002Fleegao\u002Fbionic-vulkan-wrapper) (**ETC2-Milestone-2**) bundled as the base wrapper for the Mali BCn path. |\n| **JavaSteam** | [JavaSteam](https:\u002F\u002Fgithub.com\u002FLongi94\u002FJavaSteam) (`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. |\n| **Goldberg Steam Emu \u002F gbe_fork** | [Goldberg Steam Emu](https:\u002F\u002Fmr_goldberg.gitlab.io\u002Fgoldberg_emulator\u002F) by **Mr_Goldberg**, and **gbe_fork** by **[Detanup01](https:\u002F\u002Fgithub.com\u002FDetanup01\u002Fgbe_fork)** — the Steam emulator Bannerlator's **Goldberg auto-patch** installs (Regular \u002F Experimental \u002F ColdClient tiers) for offline \u002F emulated play of games you own. |\n| **Pluvia** | [Pluvia](https:\u002F\u002Fgithub.com\u002Foxters168\u002FPluvia) — an Android Steam client whose patterns were **referenced alongside GameNative** while building the Steam store's login \u002F session handling. |\n| **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\u002Frelease infrastructure. **In 2.3**, building on JavaSteam \u002F GameNative \u002F Goldberg, the original engineering is Bannerlator's own: the **cross-store Download Manager**, the **four storefront integrations** (Steam \u002F Epic \u002F GOG \u002F 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\u002FFit\u002FStretch\u002FFill\u002FInteger across all three renderers), the **in-app File-Manager import picker** replacing SAF (with image thumbnails + percent\u002FETA import progress), the **DLC picker**, the **true-size depot install fix**, **per-game persistence** of scaling \u002F fullscreen \u002F HUD position, and the **container wallpaper picker**. **In 2.5**, the **Mali \u002F 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\u002FVKD3D logs, scrollable debug-channels dialog). Also maintains the [Nightlies WCP Hub](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FNightlies) and [Banners-Turnip](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBanners-Turnip). |\n\n### Upstream stack\n\nThe Wine\u002Ftranslation stack this app bundles or downloads:\n\n| Component | Author |\n|---|---|\n| **Wine** | [WineHQ](https:\u002F\u002Fwww.winehq.org\u002F) |\n| **Box64 \u002F Box86** | [ptitSeb](https:\u002F\u002Fgithub.com\u002FptitSeb) |\n| **FEXCore** | [FEX-Emu](https:\u002F\u002Fgithub.com\u002FFEX-Emu) |\n| **DXVK** | [doitsujin \u002F Philip Rebohle](https:\u002F\u002Fgithub.com\u002Fdoitsujin) |\n| **DXVK-GPLAsync patch** | [Ph42oN](https:\u002F\u002Fgitlab.com\u002FPh42oN) |\n| **DXVK-Sarek** | [pythonlover02](https:\u002F\u002Fgithub.com\u002Fpythonlover02) |\n| **VEGAS** (Adreno-tuned DXVK \u002F GPLAsync fork — `v1.3-vegas`) | [isygold](https:\u002F\u002Fgithub.com\u002Fisygold\u002Fvegas-releases) · [FAQ](https:\u002F\u002Fhtmlpreview.github.io\u002F?https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fblob\u002Fmain\u002Fdocs\u002Fvegas_faq.html) · [❤️ Sponsor](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fisygold) |\n| **VKD3D-Proton** | [Hans-Kristian Arntzen](https:\u002F\u002Fgithub.com\u002FHansKristian-Work) |\n| **Turnip \u002F Mesa** | [Freedreno team @ Mesa](https:\u002F\u002Fgitlab.freedesktop.org\u002Fmesa\u002Fmesa) |\n| **Proton layers (bionic)** | [GameNative](https:\u002F\u002Fgithub.com\u002Futkarshdalal\u002FGameNative) |\n| **Steam depot engine** | [JavaSteam](https:\u002F\u002Fgithub.com\u002FLongi94\u002FJavaSteam) by [Longi94](https:\u002F\u002Fgithub.com\u002FLongi94) · depotdownloader fork [joshuatam](https:\u002F\u002Fgithub.com\u002Fjoshuatam) |\n| **Steam emulator (Goldberg auto-patch)** | [Goldberg Steam Emu](https:\u002F\u002Fmr_goldberg.gitlab.io\u002Fgoldberg_emulator\u002F) (Mr_Goldberg) · [gbe_fork](https:\u002F\u002Fgithub.com\u002FDetanup01\u002Fgbe_fork) (Detanup01) |\n| **Frame Generation (bionic-fg)** | [xXJSONDeruloXx](https:\u002F\u002Fgithub.com\u002FxXJSONDeruloXx\u002Fbionic-fg) |\n| **Frame Generation (lsfg-vk)** | [PancakeTAS](https:\u002F\u002Fgithub.com\u002FPancakeTAS\u002Flsfg-vk) · Android port [FrankBarretta](https:\u002F\u002Fgithub.com\u002FFrankBarretta\u002Flsfg-vk-android) · live-reload fork [GameNative](https:\u002F\u002Fgithub.com\u002Futkarshdalal\u002FGameNative) · DLL [Lossless Scaling](https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F993090\u002FLossless_Scaling\u002F) (user-supplied) |\n| **Post-processing (ReShade \u002F vkBasalt)** | [vkBasalt](https:\u002F\u002Fgithub.com\u002FDadSchoorse\u002FvkBasalt) by [DadSchoorse](https:\u002F\u002Fgithub.com\u002FDadSchoorse) (zlib) · Winlator packaging [Pipetto-crypto](https:\u002F\u002Fgithub.com\u002FPipetto-crypto\u002Fwinlator) · effects by [crosire](https:\u002F\u002Fgithub.com\u002Fcrosire\u002Freshade-shaders) · [prod80](https:\u002F\u002Fgithub.com\u002Fprod80\u002Fprod80-reshade-repository) · [luluco250](https:\u002F\u002Fgithub.com\u002Fluluco250\u002FFXShaders) · fubax (MIT \u002F CC0) |\n\n### Community reports & requests\n\nMuch of Bannerlator's polish is driven by the people who file issues and test builds. Recent features came directly from:\n\n- **[@kylinzang](https:\u002F\u002Fgithub.com\u002Fkylinzang)** — the driving force behind **2.5's Mali \u002F BCn support** ([#70](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F70), originally #54 \u002F #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](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F71)) and the in-app File-Manager import picker ([#73](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F73)).\n- **[@rizky2-crypto](https:\u002F\u002Fgithub.com\u002Frizky2-crypto)** — Mali-G610 BCn testing ([#30](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F30)).\n- **[@SombraShadow](https:\u002F\u002Fgithub.com\u002FSombraShadow)** — the container wallpaper picker ([#66](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F66)).\n- **[@abdogm](https:\u002F\u002Fgithub.com\u002Fabdogm)** — magnifier cursor-follow & no-dim fixes ([#44](https:\u002F\u002Fgithub.com\u002FThe412Banner\u002FBannerlator\u002Fissues\u002F44)).\n- **[@Devaspe](https:\u002F\u002Fgithub.com\u002FDevaspe)** — the Steam install-blocker report that drove the true-size depot install fix.\n\n…and everyone in the Discord and on GitHub who tests builds and reports issues. 🙏\n\nAdditional credits surfaced in the **Star Bionic REVAMPED** project (`star.bionic-revamp`):\n\n- **@The412Banner** — Converting the UI to Jetpack Compose and rewriting the controller implementation.\n- **@jacojayy** — Timeline Semaphore patches in Turnip.\n\n> If you have contributed and are not listed, open a PR — this list is intended to be complete.\n\n---\n\n## ⚖️ Disclaimer\n\nWinlator and its forks are unofficial community projects. They are **not** affiliated with or endorsed by Microsoft, Wine, the Mesa project, Qualcomm, **Valve\u002FSteam, 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](#-security-hardening--your-store-accounts), and **use them at your own risk**. Compatibility varies by device GPU, Android version, and individual game.\n\n---\n\n## 📄 License\n\n**Bannerlator is licensed under [GPL-3.0](LICENSE) as a whole**, because it incorporates GPL-3.0-licensed components (notably **GameNative** and **lsfg-vk**), whose copyleft governs the combined distribution.\n\nThe 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\u002FGoldberg, vkBasalt, bcn_layer, JavaSteam, bionic-fg, Wine\u002FBox64\u002FMesa\u002FDXVK, FSR\u002FNIS\u002FSGSR, ReShade shaders, …) — is preserved in **[`THIRD-PARTY-LICENSES.md`](THIRD-PARTY-LICENSES.md)**.\n\nSee [`LICENSE`](LICENSE) for the full GPL-3.0 text and [`THIRD-PARTY-LICENSES.md`](THIRD-PARTY-LICENSES.md) for all third-party attributions.\n","Bannerlator 是一个在 Android 设备上运行 Windows 应用和游戏的兼容层工具，基于 Wine 与 Box64\u002FBox86 构建，延续已停止维护的 Winlator Star Bionic 项目。它通过二进制翻译与系统调用适配，在 ARM64\u002FARM32 Android 系统（8.0+）上实现 x86\u002Fx64 Windows 程序的本地执行，支持图形渲染与基本输入交互。项目为个人定制构建，针对特定硬件优化，不提供通用兼容性保证或官方支持。适用于具备较强硬件性能（如高端安卓平板或游戏手机）且熟悉底层调试的用户，用于轻量级 Windows 桌面应用或老款 PC 游戏的实验性运行。",2,"2026-07-09 02:30:21","CREATED_QUERY"]