Repository navigation
Releases: ducvd89/Bloodborne-Android
Release list
Android 0.8.4
Android port of Bloodborne (v1.09) for Snapdragon devices.
Fixes for installing the game from PKG:
- "Not installed: Update the app's runtime to install from PKG" on a new install of the app: installing from PKG (and installing mods) failed until a game had been started once. The app now prepares its runtime first, so the first install can take a few seconds longer to start. (#6)
- Installing the update PKG took very long with no progress (for example the 8.6 GB CUSA00900 update): placing the update's files into the game is now much faster and shows its progress ("Installing").
Everything else is the same as 0.8.3. Updating keeps your settings and saves; use menu → App → Check for updates.
Select your own extracted game folder containing eboot.bin, or install it from your own PKGs. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
Android 0.8.3
Android port of Bloodborne (v1.09) for Snapdragon devices.
On-screen controller (menu → Controls):
- Camera anywhere: with the controller on, put a finger anywhere outside the buttons and drag to turn the camera. It works like a right stick centred where your finger lands; lift the finger to stop. The fixed right stick is gone (R3 is still a button).
- Edit controller layout now resizes buttons: hold a button and pinch with a second finger, or tap a button and use − / +. RESET (with a confirmation) is in the editor now, instead of the menu.
Installing the game from PKG (Game folder → Install from PKG…):
- Pick the PKG first, then choose the folder to install into. A folder named after the game's serial (for example
CUSA03173) is created inside it and becomes the game folder. - After the base game, the dialog shows the installed version and asks for the 1.09 update PKG, which the game needs to run. The update goes into the same folder. When the game is 1.09, it starts by itself.
Fixes:
- Mods did not load in 0.8.2 so the release removed: the game started without them, because of how Android shows shared storage to apps. If you installed 0.8.2 and use mods, update to 0.8.3.
- With no game folder set, the game folder dialog could cover the PKG installer.
Updating from 0.8.1 keeps your settings and saves; use menu → App → Check for updates. Your controller layout is kept.
Select your own extracted game folder containing eboot.bin, or install it from your own PKGs. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
Android 0.8.1
Android port of Bloodborne (v1.09) for Snapdragon devices.
0.8.1 adds save backup and restore (menu → Storage):
- Back up saves copies your saves to a new
Bloodborne-saves-<date>-<time>folder in your Download folder. The game keeps running. - Restore saves asks for a folder: pick a
Bloodborne-saves-…backup folder, or anysavedatafolder (with folders like1000/CUSA03173inside). Your current saves are backed up to Download first, so a restore can be undone. If the game is running, it is stopped for the restore and started again (unsaved progress is lost).
Everything else is the same as 0.8.0. Updating from 0.8.0 keeps your settings and saves; use menu → App → Check for updates.
Select your own extracted game folder containing eboot.bin, or install it from your own PKGs. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
0.8.0
Android port of Bloodborne (v1.09) for Snapdragon devices.
0.8.0 is faster and can update itself.
- Smoother, faster rendering. Buffer copies the game makes in the middle of drawing a frame no longer interrupt the GPU's work, and the draw pipeline (a second thread recording draws) is now always on, also when the game is limited to some CPU cores. On the AYN Thor in Central Yharnam: ~30 → 34–35 FPS without frame generation, with steadier frame times.
- Check for updates (menu → App): finds the newest release here, downloads it (the SHA-256 is checked) and installs it. Android asks once to allow this app to install apps. Installing closes the game, so save first.
- New default settings, tuned on the Thor: 752×424 scene upscaled by FSR 3.1 to 1280×720, the costly effects off, lowest model detail (most of the GPU time is geometry), 60 FPS limit. Lossless Scaling and cheats start off.
- Applied on a first install, and once when updating from 0.7.x or older: your controller mapping, GPU driver and mods choice are kept; Lossless Scaling, cheats and the graphics settings go to the defaults. Turn Lossless Scaling back on in the menu if you used it.
- Later updates keep your settings.
Tested: AYN Thor (Snapdragon 8 Gen 2, Adreno 740): 30 minutes of play without a crash with the new rendering, update from 0.7.0 keeps saves and applies the defaults as described. The in-app update was tested on the Thor only.
Select your own extracted game folder containing eboot.bin, or install it from your own PKGs. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
0.7.0
Android port of Bloodborne (v1.09) for Snapdragon devices.
0.7.0 adds mods (menu → Game → Mods).
- Install mod… takes a .zip, .7z or PS4 .pkg mod package. Archives are checked before anything is written (no files outside the mod's folder, enough free space), and a progress bar shows the size unpacked, percentage and time left.
- Each mod can be switched on or off and moved up or down in the load order (a later mod wins when two replace the same file), deleted, or all mods turned off at once. Changes apply when the game restarts (Apply & restart).
- Mods live in
/storage/emulated/0/Bloodborne/modsby default (Change folder… picks another). You can also copy a mod's folder there with a file manager. - Only mods for game version 1.09 are supported. Mods that change the game's executable are refused: a mod containing
eboot.bin,sce_moduleorsce_sysis listed but not used, and a .pkg mod is accepted only when it's for Bloodborne 1.09 and itseboot.binis identical to your game's (only its game data is kept).
Install the game from PKG (game folder dialog → Install from PKG…): pick the base game PKG, then the 1.09 update PKG; both go into the same folder, which is then checked and selected. You need free space about the size of the PKG.
Tested: AYN Thor (Snapdragon 8 Gen 2, Adreno 740): a Vietnamese translation (.pkg) installed from the Mods menu, with the translated title screen and menus in game. Not yet tested on a device: installing the game from PKG (a fix for PKGs over 2 GB is included but untested with a real game PKG), and .zip/.7z mods. Installs over 0.6.0 and keeps settings and saves.
PKG unpacking uses ps4-pkg-tool (shadPS4's PKG code, GPL-2.0); only homebrew (fake) PKGs can be read.
Select your own extracted game folder containing eboot.bin, or install it from your own PKGs. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
0.6.0
Android port of Bloodborne (v1.09) for Snapdragon devices.
0.6.0 adds a GPU driver menu (menu → Graphics → GPU driver).
- Built-in Turnip (automatic by GPU) stays the default: the Adreno 6xx/7xx build, or the Adreno 8xx build on 8xx phones.
- Add driver… → Download from GitHub lists the 5 newest Turnip drivers from this repository's
turnip-*releases. The list refreshes each time it opens, marks the build for your GPU as recommended, and checks every download against its checksum before installing it. - Add driver… → Install a zip from this device installs a driver zip from your storage.
- Choosing an installed driver turns the automatic choice off; choosing Built-in again turns it back on. Drivers can be deleted from the same list, and switching asks to restart the game.
- Only Linux (glibc) Turnip builds made for this app work. Adreno-tools driver packs for Android emulators (e.g. StevenMXZ's) can't load in the game's runtime, and the installer says so instead of letting the game crash.
Drivers available now
- Turnip main 26.3.0 (35b085c) for Adreno 6xx/7xx and Turnip gen8 26.3.0 (9c7e022) for Adreno 8xx: the drivers built into 0.5.2 and 0.6.0, unchanged.
- Turnip gen8 V37 recipe (1dee441), in the gen8 release: current Mesa plus StevenMXZ's V37 Adreno 8xx patches plus this app's patches. Runs on the AYN Thor's Adreno 740 with Lossless Scaling; not yet tested on Adreno 8xx.
Tested: AYN Thor (Snapdragon 8 Gen 2, Adreno 740): downloading, installing and switching drivers from the menu, and play with the V37 driver and Lossless Scaling 2×. Not tested on Adreno 8xx. Installs over 0.5.x and keeps settings and saves.
Lossless Scaling, as before: turning it on after the game started without it restarts the game; while it's on, its settings change at once.
Select your own extracted game folder containing eboot.bin. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
Turnip main 26.3.0 (35b085c) — Adreno 6xx/7xx
Turnip main (Adreno 6xx/7xx): Mesa 26.3.0-devel (35b085c)
Turnip, Mesa's open-source Vulkan driver for Qualcomm Adreno 6xx/7xx GPUs (KGSL kernel driver),
as shipped in the Bloodborne Android app.
This is a Linux (glibc, aarch64) build for this app's runtime, not an adrenotools / Android
driver: it loads in the game's Linux rootfs and will not work in other Android emulators.
Install
In the app: menu → GPU driver → Download, or Install zip (pick Turnip-main-26.3.0-35b085c.zip).
Build
- GPUs: Adreno 6xx/7xx
- Mesa: https://gitlab.freedesktop.org/mesa/mesa @ 35b085c, commit
35b085c4c067f198ce0b6437d94678e47b9c645f, version 26.3.0-devel - Vulkan API version: 1.4.363
The build predates BUILD-INFO.json, so its provenance was reconstructed from the patched Mesa source tree it was built from.
Patches applied on top, in order:
0001-freedreno-a840-kgsl-patchid-wildcard.patch: freedreno/common: add patch-id wildcard fallback for Adreno 840 (KGSL)0005-wsi-x11-sw-wait-for-the-gpu-on-the-present-thread.patch: wsi/x11: software present waits for the GPU on the present thread0006-tu-kgsl-power-constraint-from-the-environment.patch: tu/kgsl: GPU power constraint from the environment0007-wsi-x11-sw-frames-straight-to-the-app.patch: wsi/x11: software present hands the frames to the app (fxpresent)0008-vulkan-in-process-opaque-fd-for-emulated-timelines.patch: vulkan: in-process opaque FD export/import for emulated timelines0009-tu-kgsl-wake-pending-syncobj-waits-on-any-device-submit.patch: tu/kgsl: wake pending syncobj waits on any device's submission
Source: Mesa commit above + patches in patches-main-26.3.0-35b085c.tar.gz (with SOURCE.txt giving the order).
Checksums (SHA-256)
Turnip-main-26.3.0-35b085c.zip:67286a261840480241f93d04824ce020f9f70f58916708083c87d087d787927apatches-main-26.3.0-35b085c.tar.gz:f5e7181b256c740193c92805d0a56a8b382e2e629af814edf8dffc7812b66f0clibvulkan_freedreno.so:7e20503692ead516979020105c6fa6e3c51d92985cc3101339b77724279ce3c2
Mesa is licensed under the MIT license (individual files may carry their own); the license texts are in
LICENSE-mesa.txt in the zip.
Turnip gen8 26.3.0 (9c7e022) — Adreno 8xx
Turnip gen8 (Adreno 8xx): Mesa 26.3.0-devel (9c7e022)
Turnip, Mesa's open-source Vulkan driver for Qualcomm Adreno 8xx GPUs (KGSL kernel driver),
as shipped in the Bloodborne Android app.
This is a Linux (glibc, aarch64) build for this app's runtime, not an adrenotools / Android
driver: it loads in the game's Linux rootfs and will not work in other Android emulators.
Install
In the app: menu → GPU driver → Download, or Install zip (pick Turnip-gen8-26.3.0-9c7e022.zip).
Build
- GPUs: Adreno 8xx
- Mesa: https://github.com/whitebelyash/mesa-unified @ 9c7e022, commit
9c7e022677dfa3abb356c2b6732cbd2e25783d01, version 26.3.0-devel - Vulkan API version: 1.4.363
The build predates BUILD-INFO.json, so its provenance was reconstructed from the patched Mesa source tree it was built from.
Patches applied on top, in order:
0001-tu-kgsl-Prevent-overflow-in-kgsl-queue-wait-fence.patch: tu/kgsl: Prevent overflow in kgsl_queue_wait_fence0002-tu-kgsl-Distinguish-timestamp-and-sync-wait-errors.patch: tu/kgsl: Distinguish timestamp and sync wait errors0003-tu-kgsl-Prevent-indefinite-wait-times-for-0-timeout-waits.patch: tu/kgsl: Prevent indefinite wait times for 0 timeout waits0004-tu-kgsl-Always-round-up-the-wait-timeout.patch: tu/kgsl: Always round up the wait timeout0001-freedreno-a840-kgsl-patchid-wildcard.patch: freedreno/common: add patch-id wildcard fallback for Adreno 840 (KGSL)0005-wsi-x11-sw-wait-for-the-gpu-on-the-present-thread.patch: wsi/x11: software present waits for the GPU on the present thread0006-tu-kgsl-power-constraint-from-the-environment.patch: tu/kgsl: GPU power constraint from the environment0007-wsi-x11-sw-frames-straight-to-the-app.patch: wsi/x11: software present hands the frames to the app (fxpresent)0008-vulkan-in-process-opaque-fd-for-emulated-timelines.patch: vulkan: in-process opaque FD export/import for emulated timelines0009-tu-kgsl-wake-pending-syncobj-waits-on-any-device-submit.patch: tu/kgsl: wake pending syncobj waits on any device's submission
Source: Mesa commit above + patches in patches-gen8-26.3.0-9c7e022.tar.gz (with SOURCE.txt giving the order).
Checksums (SHA-256)
Turnip-gen8-26.3.0-9c7e022.zip:a35b9895274df9f59fb4347570851bd09e340f7e7f10f652f57538a138d1db3dpatches-gen8-26.3.0-9c7e022.tar.gz:99640ac4ed0134239413684735afd72503f6ee47f60c300d65ae49a23e894186libvulkan_freedreno_gen8.so:9aae2802fc750bebe0898dcec7de71ab2d7f4759f94360a1b0a1f7162392cdac
Mesa is licensed under the MIT license (individual files may carry their own); the license texts are in
LICENSE-mesa.txt in the zip.
Turnip V37 recipe (Adreno 6xx/7xx/8xx) r2: Mesa 26.3.0-devel (1dee441)
Turnip, Mesa's open-source Vulkan driver for Qualcomm Adreno 6xx/7xx/8xx GPUs (KGSL kernel driver),
built from Mesa main 1dee441 with StevenMXZ's V37 A8xx recipe
(StevenMXZ/Adreno-Tools-Drivers at b3b32ad, the a8xx-patchs2 variant;
GPL-3.0) and this app's own Mesa patches.
Not tested on hardware yet (as of this build). It has been built and checked as a library (aarch64 ELF, the
rootfs's libraries only, Vulkan entry points, the device table), but not run on an Adreno 8xx device.
Use gen8 if you need the known-working driver on Adreno 8xx.
This is a Linux (glibc, aarch64) build for this app's runtime, not an adrenotools / Android
driver: it loads in the game's Linux rootfs and will not work in other Android emulators.
Install
In the app: menu → GPU driver → Download, or Install zip (pick Turnip-gen8v37-26.3.0-r2-1dee441.zip).
Build
- GPUs: Adreno 6xx/7xx/8xx
- Mesa: https://gitlab.freedesktop.org/mesa/mesa @ 1dee441, commit
1dee441c7ff6bbccc4da5221ca7b146339f317dc, version 26.3.0-devel - Vulkan API version: 1.4.363
- Built: 2026-10-13T12:53:39Z
Patches applied on top, in order:
a8xx-cube-coord-sanitize.patch: V37 recipe: sanitize cube map directions on A8XX (hang with NaN/zero vectors)a8xx-bindless-invalidate.patch: V37 recipe: invalidate bindless descriptors through the A8XX registersa8xx-kgsl-ib-vbo-alias.patch: V37 recipe: fetch A8XX command streams through a virtual BO alias (KGSL)a8xx_gen8.patch: V37 recipe: the turnip/gen8 stack (A8xx family configs and compiler tuning, A825/A829/A830 entries, DECK_EMU, and the rest of whitebelyash/mesa-unified turnip/gen8)0001-ir3-a8xx-helper-functions-rebased-onto-mesa-main.patch: ir3: rebase the A8XX helper functions hunk of v37/a8xx_gen8.patch onto Mesa main0002-freedreno-a825-drop-removed-magic_regs-argument.patch: freedreno/common: drop the removed magic_regs argument from the A825 entry of v37/a8xx_gen8.patcha8xx_only_shared_mem.py: ours, replaces the recipe's a8xx_shared_mem.py: compute shared memory 32 KiB to 64 KiB on the Adreno 8xx entries only (the recipe's script also did it on 6xx/7xx, whose compute Local Buffer is 40 KiB)a840v2.py: V37 recipe: Adreno 840v2 (chip id 0x44050A21)0003-freedreno-a840-kgsl-patchid-wildcard-after-a840v2.patch: freedreno/common: add patch-id wildcard fallback for Adreno 840 (KGSL), after A840v20005-wsi-x11-sw-wait-for-the-gpu-on-the-present-thread.patch: wsi/x11: software present waits for the GPU on the present thread0006-tu-kgsl-power-constraint-from-the-environment.patch: tu/kgsl: GPU power constraint from the environment0007-wsi-x11-sw-frames-straight-to-the-app.patch: wsi/x11: software present hands the frames to the app (fxpresent)0008-vulkan-in-process-opaque-fd-for-emulated-timelines.patch: vulkan: in-process opaque FD export/import for emulated timelines0009-tu-kgsl-wake-pending-syncobj-waits-on-any-device-submit.patch: tu/kgsl: wake pending syncobj waits on any device's submission
r2: 64 KiB shared memory on Adreno 8xx only
The first build of this version (no revision in its file names, Turnip-gen8v37-26.3.0-1dee441.zip, r1)
ran the V37 recipe's a8xx_shared_mem.py, which changes cs_shared_mem_size from 32 KiB to 64 KiB for
every GPU in Mesa's device table. On Adreno 6xx and 7xx the compute Local Buffer (shared memory plus the
constants duplicated per wave bank) is 40 KiB, so r1 advertised more shared memory than the hardware has:
apps then ran shaders with more than 32 KiB of shared memory natively and overflowed the Local Buffer. An
Adreno 740 (Thor) hit a GPU hang (VK_ERROR_DEVICE_LOST) after about ten minutes of gameplay with r1.
r2 sets 64 KiB only on the Adreno 8xx entries (v37/ours/a8xx_only_shared_mem.py replaces the recipe's script,
same place in the order). Every other GPU is as upstream Mesa: 32 KiB on Adreno 6xx/7xx, 16 KiB where upstream has it.
Nothing else changed from r1.
Do not use r1 on Adreno 6xx or 7xx. Use r2 (or main, or gen8 on Adreno 8xx).
Applied to Mesa main, the recipe needed a few adaptations (all in patches/mesa-patches/v37/ours/
of patches-gen8v37-26.3.0-r2-1dee441.tar.gz, none skipped silently): one rejected hunk of a8xx_gen8.patch rebased, the
removed magic_regs argument of the A825 entry dropped, our A840 wildcard patch rebased after a840v2.py, and
the recipe's a8xx_shared_mem.py replaced by ours/a8xx_only_shared_mem.py (64 KiB shared memory on Adreno 8xx only).
Not applied, because Mesa main already has them:
apply_common.sh: replaced by the steps above with the same post-apply asserts (build_turnip.sh); two of its five patches are in Mesa maina8xx_shared_mem.py: replaced by v37/ours/a8xx_only_shared_mem.py: it sets 64 KiB shared memory on every GPU, and Adreno 6xx/7xx have a 40 KiB compute Local Buffer (GPU hang on an Adreno 740); ours does it on the Adreno 8xx entries onlykgsl-syncobj-merge-ts-fd.patch: Mesa main rewrote kgsl_syncobj_merge: it converts the aggregate timestamp to an fd (kgsl_syncobj_ts_to_fd(&ret)) before merging, and no longer reads sync->fd of a timestamp syncobjkgsl-zero-timeout-poll.patch: Mesa main polls on a zero timeout in wait_timestamp_safe (kgsl_poll_timestamp, KGSL_TIMESTAMP_RETIRED) instead of calling the wait ioctl0001-tu-kgsl-Prevent-overflow-in-kgsl-queue-wait-fence.patch: in Mesa main (os_time_get_absolute_timeout in kgsl_queue_wait_fence)0002-tu-kgsl-Distinguish-timestamp-and-sync-wait-errors.patch: in Mesa main (kgsl_timestamp_error, device loss on EPROTO/ENOENT/EDEADLK)0003-tu-kgsl-Prevent-indefinite-wait-times-for-0-timeout-waits.patch: in Mesa main (git apply -R --check passes)0004-tu-kgsl-Always-round-up-the-wait-timeout.patch: in Mesa main (git apply -R --check passes)0001-freedreno-a840-kgsl-patchid-wildcard.patch: does not apply after a840v2.py (context moved); replaced by v37/ours/0003, same entry
The V37 recipe files are licensed GPL-3.0: they and the license text are in patches-gen8v37-26.3.0-r2-1dee441.tar.gz
(mesa-patches/v37/, with SOURCE.md), and the license is also appended to LICENSE-mesa.txt in the zip.
Source: Mesa commit above + patches in patches-gen8v37-26.3.0-r2-1dee441.tar.gz (with SOURCE.txt giving the order).
Checksums (SHA-256)
Turnip-gen8v37-26.3.0-r2-1dee441.zip:69408420a360d12915c0a5e4d5fe16f3c819c6318e1d6ee39e2a7fe3fa653432patches-gen8v37-26.3.0-r2-1dee441.tar.gz:da631bae770657684fc741a53f1abab91080f7060dbc0162af4e46adac9de31blibvulkan_freedreno_gen8v37.so:0fb003205660429fea878c51d524218f189bdc965110e301a53bab8eb3c05313
Mesa is licensed under the MIT license (individual files may carry their own); the license texts are in
LICENSE-mesa.txt in the zip.
0.5.2
Android port of Bloodborne (v1.09) for Snapdragon devices.
0.5.2 brings upstream bloodborne_pc 0.51's Android fixes.
- Every retail release with update 1.09 now runs with the game's profile: US (CUSA00900), EU, UK, JP, Asia and The Old Hunters editions, not just CUSA03173. The folder picker also finds these releases' folders inside the folder you choose.
- The display is rebuilt more safely when the screen changes (swapchain replaced, not destroyed first).
- The title menu no longer flickers while it animates.
Not included from 0.51: online play (it can't run under the Android build's CPU translator yet), the overlay's Quit button and the DLSS changes.
Tested: AYN Thor (Snapdragon 8 Gen 2, Adreno 740): starts and plays with Lossless Scaling on. Installs over 0.5.x / 0.4.0 and keeps settings and saves.
Everything from 0.5 is still there: cheats, Game settings, upstream 0.5's save safety and GPU fixes. See 0.5.1.
Select your own extracted game folder containing eboot.bin. No game files are included. Lossless Scaling is sold separately on Steam and is not included.
0.5.1
Android port of Bloodborne (CUSA03173 v1.09) for Snapdragon devices.
0.5.1 fixes 0.5.0's crashes while playing ("Game stopped (23)" after a few minutes): they came from changes to the Lossless Scaling layer after 0.4.0, and 0.5.1 has 0.4.0's layer again. The side menu shows the app's version at the bottom.
New in 0.5
- Cheats (menu → Cheats): infinite health and infinite blood vials/items. They switch on and off at once, while you play.
- Game settings (menu → Game settings): skip the online/offline screen (on by default, straight to the main menu), skip intros, free camera, debug menu.
- Upstream bloodborne_pc 0.5 merged: saves are written safely (no damaged saves when Android kills the app), GPU crash and stall fixes, fewer hitches from pipeline compilation, DLC folders.
- Applying settings no longer leaves an error message over the restarted game.
Tested: AYN Thor (Snapdragon 8 Gen 2, Adreno 740): 15 minutes of play with Lossless Scaling on, no crash. Not yet tested on Adreno 8xx with 0.5; Lossless Scaling frame generation still shows doubled frames on the Oppo Find N5 (Adreno 830). Installs over 0.4.0 / 0.5.0 and keeps settings and saves.
Select your own extracted game folder containing eboot.bin. No game files are included. Lossless Scaling is sold separately on Steam and is not included.