Bloodborne PC Windows Port v0.9.0
Bloodborne PC Windows Port version 0.9.0 adds an integrated Save Game Manager with automatic NG+ safepoints, stops recurring shader cache wipes through unified cache versioning, resolves Windows red-zone exception faults, hardens long-session stability against driver exit codes 139, 140, and 23, introduces mip-skipping texture quality selection for low-VRAM GPUs, adds analog keyboard movement simulation with SOCD Last-Win priority, supports decrypted raw eboot.elf dumps across all launch paths, and eliminates UI stutter with background tab warming and global cursor management.
Core
-
Shader Cache Versioning & Pipeline Recompilation Fixes (ce83b80, 432d2dd)
- Unified cache version constants under
PipelineStoreso the runtime, cache rebuild tool, and recipe importer write matching binary versions toprofile.bin, preventing cache wipes on relaunch. - In-place header migration: accepts legacy version 24 headers in
WarmUpand updates them to version 25 without clearing valid compiled shaders. - Fixed imported shader metadata layout to match the four fields expected by
RegisterShaderMeta, removing two stray motion addresses that shifted specialization data by 16 bytes. - Moved periodic Vulkan pipeline cache flushes to a dedicated saver thread protected by a creation mutex, preventing asynchronous compilation workers from racing the
VkPipelineCachehandle. - Flushed queued cache I/O writes before worker shutdown and child process invocation to prevent data loss on process exit.
- Reused equal-specification permutation modules found at alternate indices to recover permutation-conflict preloads.
- Purged stale-version metadata and orphaned
.spvand.infiles after preload passes.
- Unified cache version constants under
-
Windows Exception Red-Zone Fault Protection (432d2dd)
- Added bounded sticky writable pages for known generator instruction ranges, preventing Windows
KiUserExceptionDispatchfrom clobbering the System V 128-byte red zone during JIT guest execution. - Exposed runtime controls via
BB_STICKY_FAULT_PAGESenvironment variable and registeredBbStats::sticky_pagesdiagnostics.
- Added bounded sticky writable pages for known generator instruction ranges, preventing Windows
-
Long-Session Stability Hardening: Exit Codes 139, 140 & 23 (3e60038)
- Retained deferred command payloads inside their recording chunks until execution finishes, serializing chunk hand-off between GPU and recording threads to reduce memory faults.
- Serialized pipeline compilation on the shared
VkPipelineCache, turning driver shader rejections into logged warnings and draw skips instead of process aborts. - Handled PM4 command stream desyncs and malformed packets by abandoning corrupted submissions or skipping packets with rate-limited logging.
- Intercepted guest allocator assertion
0x61(DLFixedAllocator), reporting failing allocation parameters in crash diagnostics. Closes #177, #178, #181, #185.
-
C Runtime Save Safepoint System (8d76278)
- Hooked
save_umountinsrc/runtime_savedata.cto automatically create timestamped rolling save snapshots inuser/savedata_backups/auto_safepointprior to New Game Plus (NG+) transitions. - Configurable via
save_auto_backupinbbport.iniandBB_SAVE_AUTO_BACKUPenvironment variable.
- Hooked
-
Mip-Skipping Texture Quality Pipeline (8841db5)
- Ported mip-skipping texture quality selection from upstream author deadinside (bloodborne_pc).
- Added Auto, Full, Half, and Quarter texture quality modes for 2D block-compressed textures (BC1 to BC7) of 512x512 or larger with at least 3 mips. Render targets, depth buffers, storage images, and lookup tables remain at full resolution.
-
Async Pipeline Warmup & Startup Stall Resolution (ed73550)
- Dispatched cached graphics pipelines asynchronously to worker threads during warmup, removing the synchronous driver compilation stall on the render thread before the first frame.
- Protected shader cache directory rebuilds on Windows with Vectored Exception Handling (VEH) to skip incompatible shaders cleanly.
- Capped startup shader recipe imports to a 5 ms budget per frame and deferred shader cache verification until after window creation.
- Added modification timestamp checks across launch preparation scripts (
prepare.py,link_libc.py,link_modules.py) to reuse existingboot.binbinaries.
-
Stencil-Only UI Mask Redirection (PR #190 by @HatsyRei, 574f133)
- Contributed by @HatsyRei: redirected stencil-only mask draws (
draw_colors == 0) to adopt UI-sized depth buffers asui_depth, fixing missing HUD quick items and loading screen item icons at non-1080p output resolutions.
- Contributed by @HatsyRei: redirected stencil-only mask draws (
Launcher
-
Integrated Save Game Manager (8d76278, 1cc0678, b3350bb)
- Added dedicated Save Manager tab featuring dark Souls-styled character slot cards displaying character name, level (
Lvl:), playtime clock (Playtime:), blood echoes, and in-game location. - Decoded unencrypted
userdata0010slot tables to extract UTF-16LE names, levels, playtime, and FromSoftware map IDs. - Implemented
param.sfobinary parsing readingINSTALL_DIR_SAVEDATAto dynamically resolve save directories across standard, regional, and GOTY releases to canonical title IDCUSA00207. - Added manual backups, rolling pre-launch snapshots with automatic pruning, pre-restore safety backups, and ZIP archive import and export with
SPRJ0005.sce_sysmetadata bundling.
- Added dedicated Save Manager tab featuring dark Souls-styled character slot cards displaying character name, level (
-
Universal Cover Portrait & Windows Shell Icon Fix (1cc0678)
- Embedded a universal 512x512 Bloodborne cover portrait (
default_hunter.png) intoBloodborneLauncher.exevia PyInstaller runtime asset bundles (sys._MEIPASS), replacing distorted banners and user-specific face crops. - Re-encoded
icon.icoto standard Windows DIB/BMP format across 7 shell resolutions (16x16, 24x24, 32x32, 48x48, 64x64, 128x128, 256x256), fixing missing icons in Windows Explorer and taskbar previews. - Registered
Bloodborne.PC.Launcherapplication ID viaSetCurrentProcessExplicitAppUserModelIDon launcher initialization.
- Embedded a universal 512x512 Bloodborne cover portrait (
-
UI Responsiveness & Lazy Tab Loading (b3350bb)
- Implemented global
CursorGuardQt event filter automatically enforcingQt.PointingHandCursoracross buttons, comboboxes, and sliders. - Eliminated keybind initialization lag by avoiding premature stylesheet polish during button creation.
- Staggered tab construction via single-shot timers (Display at 100 ms, Patches at 300 ms, M&K at 500 ms, Advanced at 700 ms, Saves at 900 ms).
- Deferred heavy disk scans in Advanced (
update_cache_info) and Saves (refresh_save_manager) tabs so views render immediately. - Enforced minimum heights on action buttons to prevent text clipping across custom DPI scales.
- Implemented global
-
Graphics & Patch Controls (d9b1bc6, b3350bb)
- Added Texture Quality dropdown selector (Auto, Full, Half, Quarter) to Display & Graphics tab, saving to
bbport.iniand passingBB_TEXTURE_QUALITY. - Grouped upscaler configuration into a dedicated card with direct dropdown selection.
- Added real-time conflict detection: patches that conflict with the Live FPS patch display an inline warning badge and are automatically disabled while Live FPS is active.
- Added Texture Quality dropdown selector (Auto, Full, Half, Quarter) to Display & Graphics tab, saving to
-
Executable Discovery (2054129)
- Updated file selectors, drop targets, and validation routines across the launcher to detect and accept both
eboot.binandeboot.elfexecutables.
- Updated file selectors, drop targets, and validation routines across the launcher to detect and accept both
Improvements and Fixes
-
Keyboard Layout Preset Mapping Fix (019939a, d9b1bc6)
- Corrected keybind scancode resolution so selecting AZERTY or QWERTY presets in the launcher translates directly to physical SDL scancodes in
bbport.ini, eliminating the bug where AZERTY and QWERTY movements were inverted in-game. - Added fallback display text (
None) for unassigned keybind buttons.
- Corrected keybind scancode resolution so selecting AZERTY or QWERTY presets in the launcher translates directly to physical SDL scancodes in
-
Analog Keyboard Movement & Opposing Key Priority (94388d5, 8ea9aa3)
- Simulated smooth analog thumbstick acceleration (70 ms rise, 45 ms fall) and 1100 deg/s angular sweep for keyboard movement, eliminating digital snapping and unintended sideways drift.
- Normalized diagonal movement along the unit circle to prevent excessive speed on combined inputs.
- Added last-input priority (SOCD Last-Win) on opposing keys (A/D and W/S): pressing an opposite direction immediately overrides movement, and releasing it returns movement to the held key.
- Decayed 180-degree directional reversals through center magnitude along the target axis rather than sweeping outer perimeters, eliminating perpendicular drift during strafing.
- Added a 10% deadzone to physical gamepad sticks to prevent resting stick drift from affecting keyboard inputs.
-
Decrypted Raw
eboot.elfDump Support (PR #189 by @facundo1701, d7b2db1, 2054129)- Contributed by @facundo1701: extended
prepare.pyELF parsing to accept raw decrypted ELFs (7F 45 4C 46) directly from dumpers such as Itemzflow without requiring a PS4 SELF container wrapper. - Extended executable discovery across
run.bat, the launcher, and all preparation scripts (game_check.py,link_libc.py,link_modules.py,mods.py) to recognize and linkeboot.elfdumps alongsideeboot.bin.
- Contributed by @facundo1701: extended
-
Long-Session Stability & Crash Reductions (3e60038)
- Reduced memory corruption and driver crashes (exit codes 139, 140, 23) by serializing chunk allocation and command buffer hand-offs.
- Converted driver shader compilation failures into skipped draw calls instead of aborting the process.
- Prevented crashes from PM4 command stream corruption by abandoning invalid packets with diagnostic logging.
-
Stencil Mask UI Icon Clipping Fix (PR #190 by @HatsyRei, 574f133)
- Contributed by @HatsyRei: restored missing HUD quick item icons and loading screen items when playing at non-1080p resolutions without an upscaler by routing stencil mask draws into UI depth.
Requirements
- OS: Windows 10 or Windows 11 (64-bit)
- GPU: Vulkan 1.3 capable graphics card (NVIDIA GTX 10-series or newer, AMD RX 400-series or newer, Intel Arc)
- CPU: 64-bit x86 processor supporting AVX 1.0 or SSE4.2 (BMI1 is optional)
- Game Dump: Decrypted Bloodborne PS4 dump (
CUSA03173,CUSA00207,CUSA03023,CUSA00900, version 1.09) witheboot.binoreboot.elfandsce_module/libc.prx
Installation
- Extract the release archive to a folder.
- Run
BloodborneLauncher.exe. - Confirm your decrypted version 1.09
eboot.binoreboot.elfpath on the Home dashboard. - Select your GPU Adapter, game language, graphics settings, and controls.
- Click Launch Bloodborne.
Updating from v0.8.0.
- Copy the
savedatafolder from your previous release directorybloodborne_pc_windows_port_v0.8.0_release\user\savedatatobloodborne_pc_windows_port_v0.9.0_release\user. - Existing save files in
user/savedatawill be automatically indexed by the Save Manager.
In-Game Hotkeys
- F1: Lock or unlock the mouse cursor.
- F4: Toggle the in-game cheat and tweaks menu.
- Insert or L3 + R3: Open the in-game settings overlay.
- F11: Show or hide the FPS and performance display.
Troubleshooting
- If the game freezes on startup or crashes when transitioning between areas, set
prep_workers=1orprep_workers=2in the launcher orbbport.ini. Higher values use more CPU threads simultaneously, which can saturate 4-core and 6-core processors. - If running on a GPU with 2 GB to 4 GB VRAM, set Texture Quality to Half or Quarter to prevent VRAM over-allocation and stutter.
- Cap your frame rate to 60 FPS in the launcher if encountering stability issues during heavy combat or in particle-dense areas.
- Avoid enabling conflicting frame rate mods at the same time. The launcher now displays a yellow indicator next to patches disabled by the Live FPS patch.
- If you encounter visual glitches or crashes following an update, delete the shader cache in
user/cache/CUSA03173/(or your regional CUSA folder) so shaders rebuild cleanly.
Diagnostics & Reporting
- When reporting an issue, click Copy Diagnostics on the launcher Home tab and attach the resulting
bblauncher.logalongside any crash dump files from theoutfolder.
Credits
Thanks to the contributors and upstream developer:
- @facundo1701: For PR #189, implementing raw decrypted ELF parsing in
prepare.pyto enable direct execution for Itemzflow and unstripped executable dumps. - @HatsyRei: For PR #190, fixing missing HUD quick items and loading screen item icons at non-1080p resolutions by redirecting stencil mask draws into the UI depth buffer.
- @deadinside28: for the mip-skipping texture quality pipeline (8841db5), shader recipes.
Discord Server
Join the Discord for updates, bug reports, and discussions about the Bloodborne PC Windows Port:
https://discord.gg/gTvrZZ75G