Shadowboy logoShadowboyHome

Release Notes

Changelog

Switch between Android and Desktop release streams without leaving the page.

Android notes cover Google Play builds, phone/tablet controls, Android netplay, imports, metadata, controller handling, emulator cores, and mobile-specific fixes.

v1.10.99(199)May 27, 2026

Updated the public release notes and Google Play guidance around Shadowboy's multi-system library, multiplayer, saves, cheats, artwork, controller support, imports, Help & Tips, and themes.

Changed
  • Updated the public release notes and Play Store guidance to highlight ShadowBoy's multi-system library, multiplayer, save states, cheats, artwork, controller support, ZIP imports, Help & Tips, and Dark/Light/System themes.
  • Refreshed release preparation docs around the production Play Store listing, public app link, and cleanup-aware build scripts.
v1.10.98(198)May 25, 2026

Added a dedicated Help & Tips page in Settings with expandable task guides for folders, imports, watch folders, library actions, controls, cheats, multiplayer beta, Premium, troubleshooting, and privacy/legal basics.

Added
  • Added a dedicated Help & Tips page in Settings with expandable task guides for folders, imports, watch folders, library actions, controls, cheats, multiplayer beta, Premium, troubleshooting, and privacy/legal basics.
  • Added a Help & Tips callout to the Quick Controls first-run guide so new users know where to find deeper help later.
Changed
  • Settings Help and tips now opens the full help page instead of only replaying the quick-controls guide.
v1.10.97(197)May 25, 2026

Added in-app Privacy Policy and Terms of Service pages, linked from Settings and first-run setup.

Added
  • Added in-app Privacy Policy and Terms of Service pages, linked from Settings and first-run setup.
  • Added a one-time Quick Controls guide after first-run onboarding, with a Settings replay entry for the main library and in-game actions.
  • Added an Appearance setting with Dark, Light, and System modes; fresh installs default to Dark.
  • Added a persistent Settings action for rating ShadowBoy on Google Play.
Changed
  • Refined the app theme resources for dark/light contrast and updated icon tinting across the library, settings, dialogs, and gameplay HUD surfaces.
  • Updated the embedded Kotlin netplay SDK to tolerate optional relay voice metadata while Android multiplayer remains voice-free.
Fixed
  • Join Multiplayer invite-code entry now submits from the Android keyboard Done/Enter action, helping landscape users whose keyboard covers the dialog buttons.
  • Android room creation now explicitly omits optional voice setup and ignores voice token refresh messages, so voice metadata cannot request mic permissions or affect gameplay.
v1.10.96(196)May 23, 2026

Android multiplayer beta now uses stricter relay-aligned state repair checkpoints, exact state-hash target frames, and SDK snapshot identity fields for resync recovery.

Changed
  • Android multiplayer beta now uses stricter relay-aligned state repair checkpoints, exact state-hash target frames, and SDK snapshot identity fields for resync recovery.
Fixed
  • Multiplayer resync now rejects stale or mismatched snapshot chunks before loading them, preventing wrong-epoch repair data from disrupting a room.
  • State-hash reporting now stays on the same exact frame schedule as the relay and desktop runner, so missed report windows do not drift into nearby-frame hash comparisons.
  • Host repair snapshots now preserve the relay-requested repair frame long enough for recovery while still keeping Android rollback memory bounded.
v1.10.95(195)May 22, 2026

Updated Android multiplayer copy to clearly frame the current invite and join flows as beta features.

Changed
  • Updated Android multiplayer copy to clearly frame the current invite and join flows as beta features.
  • Android multiplayer now uses the relay state-resync SDK flow so state drift can pause the room, transfer a fresh host snapshot, reload the guest, and resume from the relay timeline.
Fixed
  • Multiplayer invite sharing now keeps the host invite auto-resume watcher alive while the Android share sheet is open, so sharing a code does not strand or prematurely end the waiting room.
  • Remote multiplayer menu pauses now explicitly route to the in-game menu, while remote app-switch/system/connection pauses show a waiting dialog with an `Exit to library` escape path.
  • Multiplayer heartbeat and resync handling now rejects stale acknowledgements and old-epoch snapshot payloads before they can mark a session live or load stale state.
v1.10.94(194)May 21, 2026

Added `.7z` archive import support for manual imports and watch-folder scans, including nested archives, while preserving existing ZIP handling.

Added
  • Added `.7z` archive import support for manual imports and watch-folder scans, including nested archives, while preserving existing ZIP handling.
v1.10.93(193)May 21, 2026

Android netplay now follows the relay's server-arbitrated frame clock, rollback, adaptive input-delay, and state-hash SDK contracts for Android-to-Android rooms.

Changed
  • Android netplay now follows the relay's server-arbitrated frame clock, rollback, adaptive input-delay, and state-hash SDK contracts for Android-to-Android rooms.
  • Android-hosted rooms now identify themselves as Android clients in the relay descriptor.
Fixed
  • Android now blocks Desktop-hosted netplay invites, and older relay invites without host client-kind metadata, before launching a guest session so unstable cross-platform rooms do not start.
v1.10.84(184)May 20, 2026

Android netplay now sends the relay player-exit signal when the local player leaves, and remote Android clients return to the library with a clear quit toast when the other player exits.

Fixed
  • Android netplay now sends the relay player-exit signal when the local player leaves, and remote Android clients return to the library with a clear quit toast when the other player exits.
  • Netplay startup now lets the transient `Now Playing` banner auto-hide normally after guest launch and relay resume paths.
  • Gameplay now keeps the screen awake during active emulation while still using the netplay background-pause path if the app is minimized or locked.
v1.10.83(183)May 20, 2026

Netplay reconnect now closes replaced control sockets, reports resyncing recovery states more clearly, and rejects mismatched input epochs instead of silently stalling.

Fixed
  • Netplay reconnect now closes replaced control sockets, reports resyncing recovery states more clearly, and rejects mismatched input epochs instead of silently stalling.
  • Netplay start confirmation toasts now show once per session, preventing misleading repeated connection messages during recovery.
v1.10.82(182)May 19, 2026

Netplay recovery now explicitly confirms restored connections after both sockets reopen into compatibility, sync, ready, playing, or paused room states, while still using cached relay resume tickets for reconnect.

Fixed
  • Netplay recovery now explicitly confirms restored connections after both sockets reopen into compatibility, sync, ready, playing, or paused room states, while still using cached relay resume tickets for reconnect.
v1.10.81(181)May 19, 2026

Updated Android netplay to protocol 4 with the relay SDK's dual-channel flow: JSON control stays on the main WebSocket while controller input now uses the signed binary input socket.

Changed
  • Updated Android netplay to protocol 4 with the relay SDK's dual-channel flow: JSON control stays on the main WebSocket while controller input now uses the signed binary input socket.
  • Removed manual Android host input-delay controls because the relay now owns startup timing and input delay selection.
Fixed
  • Android now waits for the input socket before compatibility, snapshot sync, and ready-up, so protocol 4 rooms only start after both players have their control and input channels connected.
  • Netplay now shows small status toasts when the second player connects and when the remote player pauses the session.
v1.10.80(180)May 19, 2026

Android now coordinates app-switch/background interruptions through the netplay pause contract and shows clearer waiting messages when the other player is paused by device or connection events.

Fixed
  • Android now coordinates app-switch/background interruptions through the netplay pause contract and shows clearer waiting messages when the other player is paused by device or connection events.
v1.10.79(179)May 19, 2026

Added a netplay-only Android audio runtime mode with shorter startup/recovery buffering, latency trimming, and smoothed underrun recovery while preserving the standard emulator audio policy.

Changed
  • Added a netplay-only Android audio runtime mode with shorter startup/recovery buffering, latency trimming, and smoothed underrun recovery while preserving the standard emulator audio policy.
v1.10.78(178)May 19, 2026

Added a native Android share action beside copy in the in-game netplay invite dialog, with share-sheet text for sending the invite code through installed messaging apps.

Added
  • Added a native Android share action beside copy in the in-game netplay invite dialog, with share-sheet text for sending the invite code through installed messaging apps.
v1.10.77(177)May 19, 2026

Android guest netplay startup now retries until the SDK runtime is playable and forces a one-time GL surface restart before playback, so video/audio start without minimizing or reopening the app.

Fixed
  • Android guest netplay startup now retries until the SDK runtime is playable and forces a one-time GL surface restart before playback, so video/audio start without minimizing or reopening the app.
v1.10.76(176)May 19, 2026

Netplay invite joining now uses a six-slot code entry that auto-formats the visual `XXXX-XX` code, ignores typed separators, and still accepts pasted formatted codes.

Changed
  • Netplay invite joining now uses a six-slot code entry that auto-formats the visual `XXXX-XX` code, ignores typed separators, and still accepts pasted formatted codes.
Fixed
  • Android guest netplay startup now keeps the pending playback start latched until the relay session and activity resume state are both ready, preventing black video/audio that only recovered after minimizing or reopening the app.
v1.10.75(175)May 18, 2026

Android netplay release for NES, SNES, Genesis, and Master System, including invite flows, relay session coordination, reconnect recovery, and cross-platform compatibility with Desktop.

Added
  • Added Android controller netplay support for NES, SNES, Genesis, and Master System, including invite creation from the in-game menu, invite joining from the library screen, relay authentication, host state sync, and lockstep input exchange.
  • Added the shared Kotlin netplay SDK module so Android uses the relay-owned room, pause, reconnect, heartbeat, and close-state contracts instead of hand-maintained protocol copies.
  • Added a Gameplay Settings netplay section with Android host input delay control, defaulting to the same 3-frame delay used by Desktop.
Changed
  • Netplay room compatibility now advertises a platform-neutral state format and host input delay so Android and Desktop clients can join each other without depending on matching app build strings.
  • The library header now moves search into the former badge row and uses a people action button for netplay invite joining while keeping the premium entry visible.
  • Netplay connection recovery now pauses Android emulation and audio while reconnecting, then resumes only when the relay session is active again.
Fixed
  • Android guests now wait for the relay startSession message before starting emulation, preventing guest-side black video/audio until an Android surface lifecycle bounce.
  • Netplay pause/resume now flows through the relay timeline so local pause menus, remote pause requests, and resumed gameplay stay coordinated across Android and Desktop.
  • Failed host invite creation keeps the game paused instead of silently resuming before the player can retry or exit the invite flow.
  • Android resends compatibility when the relay asks the room to re-check, and frame-buffer/input handling was hardened for cross-platform host/guest readiness.
v1.10.64(164)May 11, 2026

PSP control polish release focused on real analog stick magnitude for touch and controller input.

Changed
  • PSP now feeds PPSSPP real analog stick magnitude from both the on-screen thumbstick and connected controller sticks instead of converting steering into full left/right tilt.
Fixed
  • PSP analog input now updates immediately before each emulated frame and releases cleanly without the short-tap direction latch, improving steering/control in games such as GTA while leaving D-pad behavior unchanged for other systems.
v1.10.63(163)May 7, 2026

Android production-candidate release for Shadowboy's initial public rollout, adding final library sorting polish on top of the recent multi-system, metadata, controller, and PSP stability work.

Added
  • Added a System A-Z library sort that groups games by console first, then sorts each system's games alphabetically for cleaner browsing across larger multi-system libraries.
  • Added System A-Z to Settings as a default library sort choice, so players can keep the all-in-one library organized by system automatically.
Changed
  • This build is positioned as the Android production candidate for Shadowboy's first public Google Play release, pending production review approval.
v1.10.62(162)May 6, 2026

Library, metadata, controller, and PSP stability release: ZIP imports, richer per-game metadata tools, controller detection/mapping, PSP analog/D-pad handling, and safer PSP relaunch behavior all landed since the last site entry.

Added
  • Manual imports and watch-folder scans now understand ZIP archives, including bounded nested ZIPs, importing only recognized ROM files while leaving source archives untouched.
  • Library entries gained More Info, Rename, and Refresh metadata actions, plus an import progress card and persisted metadata/artwork diagnostics for real tester failures.
  • Controller Settings now surfaces connected Bluetooth/USB controllers, compatibility warnings, and a guided premium mapper for custom hardware profiles.
Changed
  • Metadata and artwork refresh is more deliberate: normal background sync backs off from repeated misses, forced per-game refreshes use stronger title cleanup, and renamed games can repair bad matches.
  • Hardware input now separates gameplay and menu routing, PSP analog-stick input from PSP D-pad input, and guided mapping captures sticks, D-pad, face buttons, shoulders, Start/Select, and menu chords distinctly.
  • Release builds now run Android R8 minification/obfuscation and archive matching mapping files plus native debug symbols for crash decoding.
Fixed
  • PSP exit and relaunch now fully close PPSSPP, audio, GLES, and worker-thread state before the next launch, preventing stale native state from freezing later PSP sessions.
  • SNES screenshots and save-state previews now use correct color expansion instead of rendering dark, and the controls dialog remains reachable on small landscape screens.
  • Metadata matching rejects weak RAWG/no-platform partial matches, clears stale details when a corrected lookup has no safe match, and keeps local library refresh working when metadata-version discovery fails.
v1.10.53(153)May 2, 2026

Recent platform expansion release: Sega Genesis / Mega Drive, Sega Master System, Game Gear, and PSP joined the existing GB/GBC/GBA/NES/SNES lineup with matching library imports, artwork, metadata, cheats, controls, screenshots, save states, and legal attributions.

Added
  • Sega Genesis / Mega Drive, Sega Master System, Game Gear, and PlayStation Portable (PSP) support across the app, including .md, .bin, .gen, .smd, .gg, .sms, .bms, .iso, .cso, .pbp, and .elf imports.
  • System-specific library badges, artwork and metadata lookup, bundled cheat database wiring, touch controls, screenshots, auto-save, and save-state flows for the new Genesis Plus GX and PPSSPP core paths.
  • A shared in-game audio mute control plus a default Start Muted setting for players who want sessions to begin silent.
Changed
  • First-run onboarding, watch-folder setup, empty-library copy, About, Settings, license screens, backend platform payloads, and website copy now present Shadowboy as a broader multi-system emulator.
  • Auto-save now refreshes the selected visible resume slot during active gameplay and on explicit exit, keeping the internal suspend slot separate.
  • About, Settings, and Licenses now point each bundled emulator core at its upstream project and packaged license text instead of relying on generic catch-all wording.
Fixed
  • PPSSPP startup, GLES output, media decode, audio timing, save-state serialization, screenshots, and slot previews were hardened so PSP sessions boot, render, save, and resume through Shadowboy's shared emulator flow.
  • Genesis Plus GX now selects the correct two-button device for Game Gear and Master System ROMs instead of forcing every Sega title through the Genesis controller path.
  • Cheat-server sync now maps Game Gear and Master System libretro cheat folders into explicit local variants and bumps the import schema so the live dataset reimports correctly.
v1.10.45(145)April 29, 2026

Major platform expansion release covering new systems, better onboarding and settings flows, and a long run of stability work across rendering, audio, cheats, metadata, and server sync.

Added
  • Shadowboy now supports early NES imports and gameplay, and it also gained first-class SNES support with dedicated core integrations, system badges, and system-aware metadata and cheat flows.
  • Playback speed controls, save-state slot management improvements, a richer settings area, first-run onboarding, watch-folder setup guidance, and in-app feedback/settings flows all landed across the recent releases.
Changed
  • The app now presents itself as a broader retro emulator instead of a GBA-only handheld app, with copy, onboarding, system badges, and backend payloads updated around Sega Genesis / Mega Drive, NES, SNES, GB, GBC, and GBA support.
  • Metadata, artwork, cheat import, and diagnostics moved onto the ShadowBoy backend and were expanded to handle newer cores, newer cheat variants, and server-backed dataset/version refresh behavior more cleanly.
Fixed
  • A long series of fixes tightened SNES audio/video startup, first-frame rendering, cheat mapping, screenshot/state paths, playback-speed audio behavior, metadata refresh behavior, and backend bootstrap/session handling.
  • NES and SNES support also shipped with follow-up fixes for cheat parsing, metadata matching, overlay layout, and server-side sync behavior so the newer systems integrate cleanly with the rest of Shadowboy.
v1.10.3(104)April 21, 2026

Audio startup now refreshes the native core sample rate immediately, fixing the regression where sound could stay silent until you changed playback speed.

Fixed
  • Audio startup now refreshes the native core sample rate automatically instead of only correcting after a manual speed change. This fixes the regression where sound could stay silent until playback speed was changed.
v1.10.2(103)April 21, 2026

Gameplay now has a proper playback speed selector, backed by real runtime speed ratios and a consistent resampled audio path.

Added
  • Playback speed selector during gameplay with 0.5x, 1x, 1.5x, and 2x options exposed as a compact speed chip under the session menu button.
Changed
  • Emulation pacing now uses a real speed ratio instead of the old brute-force fast-forward burst, so speed changes are handled as a first-class runtime setting.
  • Native audio output now runs through the resampled playback path consistently, which lets the app follow speed changes cleanly without restarting the emulation session.
v1.10.1(102)April 21, 2026

Large internal architecture cleanup across the app and native bridge, splitting core responsibilities into smaller helpers without changing intended gameplay or UI behavior.

Changed
  • Large internal architecture cleanup across the app and native bridge. Core responsibilities are now split into smaller helpers and controllers so the codebase is easier to maintain without changing intended gameplay or UI behavior.
  • Audio playback, cheat importing, bundled cheat lookup, metadata fetching, gamepad overlay input routing, and multiple JNI bridge areas were refactored into clearer modules with smaller file boundaries.
v1.10.0(101)April 20, 2026

Cheats now work offline with a bundled local database, and the savestate path keeps using the safer non-cheat flags that avoid post-load lockups.

Added
  • Local cheat database bundled with the APK for offline use. Cheats now work without network access — no more downloading from GitHub at runtime.
Fixed
  • Savestates now use the same non-cheat flags as mGBA's own GUI frontends instead of SAVESTATE_ALL, avoiding cheat-state serialization during save/load that could lock the app after a successful state restore.
v1.9.9(100)April 20, 2026

Savestate restores no longer serialize cheat-state data on the way in or out, avoiding one of the last post-load lockups after an apparently successful restore.

Fixed
  • Savestates now use the same non-cheat flags as mGBA's own GUI frontends instead of SAVESTATE_ALL, avoiding cheat-state serialization during save/load that could lock the app after a successful state restore.
v1.9.8(99)April 20, 2026

Loading a savestate no longer reparses the full cheat list on the UI thread right after restore, which could freeze the app even when the state itself loaded correctly.

Fixed
  • Loading a savestate no longer rebuilds the full per-ROM cheat list from disk after the native state restore, which was reparsing disabled cheats on the UI thread and could freeze the app right after a successful load.
v1.9.7(98)April 20, 2026

Versioning shifts onto the 1.9.x track so Shadowboy stops drifting toward a fake 2.0, alongside better cheat paste cleanup and stricter validation.

Changed
  • Version naming now stays on the 1.9.x track instead of continuing to climb toward an implied 2.0.
Fixed
  • Manual cheat entry now normalizes pasted code blocks before saving, so compact libretro strings and multi-code paste blocks are stored as real per-line mGBA codes when possible.
  • The cheat editor now validates codes against the live native parser before saving and shows the lines that failed instead of silently accepting dead cheats.
  • Download candidate matching now keeps distinct cheat-format variants together when the source database offers them, instead of collapsing them into one result.
v1.96(97)April 20, 2026

Downloaded libretro cheats now get normalized into real mGBA code lines, and older broken imports can recover automatically during native sync.

Fixed
  • Downloaded libretro cheats are now normalized into real mGBA code lines during import instead of being saved as compact +-delimited fragments that mGBA does not parse directly.
  • Native cheat sync now falls back to libretro-style code normalization when stored cheat lines do not parse as-is, so older broken downloaded imports can recover without hand-editing each code.
v1.95(96)April 20, 2026

Cheats now survive a trip through the in-game menu instead of being torn down and rebuilt on resume, so enabled codes keep applying in play.

Fixed
  • Cheats no longer get torn down and rebuilt every time you resume from the in-game menu. The live native cheat state now survives resume correctly, so enabled cheats keep applying when you go back to gameplay.
  • Native cheat clearing/removal now detaches mGBA cheat hooks cleanly instead of deinitializing sets in place, which prevents stale breakpoint state from breaking GBA cheat execution.
v1.94(95)April 20, 2026

A themed CLEAR ALL action now lets you wipe cheats for just the current ROM, with a confirmation step to stop accidental nukes.

Added
  • A themed "CLEAR ALL" action in the cheats dialog for the current ROM, with a confirmation prompt that only clears cheats for that specific game.
v1.93(94)April 20, 2026

Enabled cheats now repopulate the core correctly after rebuilds, and imported libretro GBA codes keep their full two-part line format.

Fixed
  • Enabled cheats now refresh into the mGBA core when the native cheat list is rebuilt, so they continue applying after opening the menu, resuming the game, or loading a state.
  • Downloaded libretro cheats now keep each code line intact instead of splitting on spaces, which restores imported GBA cheat codes like XXXXXXXX XXXXXXXX.
v1.91(92)April 19, 2026

Small polish on the new controller preset switcher so you can actually see both options at once.

Fixed
  • Controller preset buttons (Xbox / Switch) now render side-by-side in the Controls dialog so both are visible without scrolling.
v1.90(91)Controller SupportApril 19, 2026

Bluetooth and HID gamepads now work end-to-end, with preconfigured Xbox and Switch button layouts you can swap between mid-game.

Added
  • Bluetooth / HID controller support. Hardware gamepads now drive the same input pipeline as the on-screen pad — buttons, D-pad, and analog sticks (left stick + HAT) feed directly into the core.
  • Controller preset toggle in the in-game Controls menu: Xbox layout (A=bottom, B=right) and Switch / Nintendo (A↔B / X↔Y swapped). Preset persists in SharedPreferences.
  • Gamepad MODE / guide button opens the in-game session menu while playing.
v1.89(90)April 19, 2026

Fixes for the cheats dialog and a smarter search that stops drowning you in duplicate results.

Fixed
  • “+ Add” and “Download” in the cheats dialog were no-ops because dismissing the cheats list re-opened the in-game menu on top of the child dialog. Dismiss callback now skips when transitioning into Edit or Download.
  • Cheat search results were duplicated (same game 10× at 75% match) because regional/revision variants all normalized to the same string. Results are now deduped by normalized base name, with region preference (USA/World > Europe > Japan > other) and penalties for Beta/Proto/Demo/Rev/Unl variants.
v1.88(89)April 19, 2026

Cleanup pass on cheats: better error states, consistent strings, and shared helpers for network work.

Changed
  • Cheat dialog strings moved to strings.xml for consistent wording and easier future translation.
  • Shared Context.dp() extension and a BackgroundWork helper replace the per-file duplicates; cheat network calls now go through the shared executor.
  • Cheat-download failures (network errors, unreachable libretro-database) now surface as a distinct “Couldn’t reach the cheat database” dialog instead of an empty “no matches found” screen.
Fixed
  • Duplicate ROM display-name and filename extraction in EmulationActivity collapsed into resolveRomDisplayName() / resolveRomFileName() helpers.
  • Indentation fix for startEmulation().
v1.87(88)Cheats UpdateApril 19, 2026

Big one: a built-in cheat system with live toggling and an online database for instant import.

Added
  • In-game cheat system with per-ROM JSON storage, live toggling, and type selection (CodeBreaker/GameShark/PAR/VBA for GBA, GameShark/Game Genie/VBA for GB/GBC).
  • Cheat download from the libretro-database over the network, with fuzzy match against the ROM’s No-Intro-style filename.
  • “Cheats” entry in the in-game session menu.
Fixed
  • Screenshot from the in-game menu reporting “Screenshot failed” while emulation was paused. The JNI screenshot path no longer requires the emulation loop to be running, and now reports the true result from mCoreTakeScreenshot.
v1.86First LightApril 2026

The first public release of Shadowboy. GB, GBC, and GBA support, save states, remappable controls, and a game library that just works.