Bloodborne PC Windows Port v0.8.0
This release introduces upstream GPU command processor synchronization and packet pacing, modernizes the SPIR-V shader recompiler with fast math optimizations, brings Garbage Collector Part 2 verification (shadPS4 Issue #184), overhauls the audio mixer to eliminate CPU thread starvation and clipping, restores 1:1 camera physics during high-framerate sprinting, adds configurable async pipeline compilation, and automates title screen startup into offline play.
Improvements
-
Vulkan Buffer Device Address & Memory Model Groundwork (624ac74)
- Integrated dense VRAM buffer mirrors and Vulkan Buffer Device Address (BDA) in-shader page table mappings.
- Added layer memory management and residency models in preparation for direct host-memory imports and low-overhead allocation tracking.
-
Vulkan Shader Caching, Ring Deduplication & Performance (dcdb834)
- Ported performance optimizations from upstream author deadinside (
0fc2921):- Replaced repetitive
VirtualQuerysystem calls inwin32_memorywith fast internal view range lookups. - Added constant ring buffer deduplication in the Vulkan rasterizer using XXH3 64-bit hashing and dynamic VRAM-budgeted ring sizing.
- Integrated shader recipe import and background pre-compilation support (
shader_recipes.bin) for hitch-free pipeline warmup. - Added compute copy shader HLE bypass to skip identical memory blocks during GPU transfers.
- Enabled NVAPI profile initialization to guarantee high-performance GPU power states under Windows.
- Polished the in-game shader compilation overlay with a smooth animated spinner and synchronized it with the F11 HUD toggle.
- Replaced repetitive
- Ported performance optimizations from upstream author deadinside (
-
Audio Pipeline Overhaul & Low-Spec CPU Stabilization (c3f5589)
- Stripped aggressive thread priority overrides that previously caused CPU core starvation and audio thread stalls on 4-core and 6-core processors.
- Replaced synthetic gain boosting and limiter saturation with linear, uncolored volume calculations, preserving dynamic range without clipping.
- Increased the audio queue cushion threshold to reliably cover native WASAPI device buffer periods.
- Streamlined output sample pacing and removed obsolete Win32 timer resolution calls.
-
Command Processor Sync, Packet Pacing & Texture Cache Modernization (6b2cc0e)
- Ported core synchronization, PM4 loop safety, and subresource handling from upstream shadPS4:
- Validated
ce_task.handlebefore checking.done()and guarded against counter underflows inWaitOnDeCounterDiff(e6c79a5). - Pre-read packet lengths before execution across graphics and Constant Engine (CE) command loops to eliminate ring buffer overwrite races (
7ea677e). - Added proper handling for PM4 Type 2 padding packets and applied atomic acquire semantics to
PM4CmdRewind::Valid()(c64a1e0). - Fixed string formatting names for
NumberFormat::Ubscaled(e0845a1). - Implemented
SubresourceExtent::Contains()for strict per-dimension mip-level and array-layer matching (ca36c7e). - Guarded
ExpandImagecopy operations withHasGpuValidData()to prevent overwriting CPU-dirty modifications (699009c). - Tracked parent images immediately inside
ResolveOverlapto safeguard subresource slices (d3ff0e0). - Constrained attachment-less render pass bounds with
GetCombinedScissor()to prevent oversized framebuffers (0cd6e4f). - Verified complete mip-chain transfer handling in
CopyImageWithBuffer(b3d46e9).
- Validated
- Ported core synchronization, PM4 loop safety, and subresource handling from upstream shadPS4:
-
Shader Recompiler Modernization & Fast Shader Math (b62051d)
- Ported compiler correctness and control flow reconstructions from upstream shadPS4:
- Excluded
GetUserDatafrom Phi folding to protect push constant and buffer table register inputs from corruption (524be7c). - Stabilized Phi node deduplication order for deterministic SPIR-V output and maximum pipeline cache hit rates (
603cff4). - Lowered undefined 64-bit integer values to
OpUndefin the SPIR-V emitter (ab1dd38). - Lowered
S_SLEEPinstructions as benign scheduling hints instead of aborting shader translation (a808e76). - Corrected operand metadata for
BUFFER_WBINVL1/BUFFER_WBINVL1_SCand mapped them to device memory barriers (6752d8b). - Accounted for singleton workgroup dimensions during compute LDS barrier analysis (
08225c2). - Preserved CFG fallthrough edges and halted lookahead on terminators to fix structured control-flow reconstruction (
78bedfa). - Handled
HW_ID.SE_IDhardware register reads inS_GETREG_B32as virtual engine zero (f0ea8eb). - Added
GsOp::EmitCutsupport inS_SENDMSGwith missing stream index fields (de27898). - Added Fast Shader Math support (
BB_FAST_SHADER_MATH=1) applyingRelaxedPrecisiondecorators to floating-point operations, unlocking GPU driver FMA vectorization and throughput gains (b61f6c5).
- Excluded
- Ported compiler correctness and control flow reconstructions from upstream shadPS4:
-
Architectural PM4 Buffer Chaining, CE FIFO & Garbage Collector Part 2 (d81d63b)
- Ported advanced command packet features and memory reclamation from upstream shadPS4:
- Implemented
IT_STRMOUT_BUFFER_UPDATEstreamout offset tracking and handledIT_GET_LOD_STATSacross graphics and compute queues (b6f0c58,9d3524f). - Followed chained indirect command buffers (
INDIRECT_BUFFERwith chain bit) by replacing the current buffer span rather than nesting tasks, avoiding call-depth recursion (1b9d159). - Supported stencil-only depth targets and decoupled stencil slice dimensions from color/depth aspect sizing logic (
626f3ac). - Implemented global CE task FIFO scheduling across graphics submissions with scheduler-yielding waits (
f9d0748). - Integrated Garbage Collector Part 2 download verification (
HasGpuValidData(),CanBeDownloaded()) to safely reclaim host memory without desyncing guest memory (e6faa2e,0918faa,eedf851, shadPS4 Issue #184). - Built the deferred
maybe_downloadverification queue using native Win32 pointer hashing (XXH3_64bits). - Added edge-page protection (
ReadEdgeImagePages) and edge modification invalidation (MarkDirtyIfEdgesModified). - Retained custom idle-seconds thresholds (
BB_GC_IDLE_SECONDS), depth target fast-free paths, and submission rate limiters.
- Implemented
- Ported advanced command packet features and memory reclamation from upstream shadPS4:
-
Async Pipeline Compilation Controls & Launcher UI Reorganization (d81d63b)
- Added direct configuration for asynchronous Vulkan pipeline compilation (
BB_ASYNC_PIPELINES) via a dedicated dropdown in the launcher under GPU Adapter (Auto, Off, 1, 2, 4, 8 worker threads). - Reorganized and unified dropdown sizing across the Display & Graphics tab, placing Live Resolution neatly beneath Upscaler Preset.
- Added direct configuration for asynchronous Vulkan pipeline compilation (
-
Automated Title Screen Offline Dialog Bypass (d81d63b)
- Integrated the "Skip Online/Offline Choice" patch into
patches/Bloodborne.xml(detouring function0x01f39030to offline handler0x1b49cd0). - Added hardcoded code toggle in
scripts/patches.py(SKIP_NETWORK_CHOICE_DEFAULT = True), launching straight to the main menu without requiring manual input. Can be toggled off in code or overridden viaBB_SKIP_NETWORK_CHOICE=0/bbport.ini.
- Integrated the "Skip Online/Offline Choice" patch into
Fixes
-
Live FPS 240 Ceiling & Static XML Preset Lock Fix (83a168e)
- Uncapped the guest frame pacer ceiling from 60 FPS to 240 FPS so 90 FPS, 120 FPS, and Uncapped targets exceed 60 FPS under the dynamic clock hook.
- Fixed an issue where disabling Live FPS mode set
BB_FPS_PATCH=0, which mistakenly forced static XML framerate presets back down to 30 FPS.
-
Sprint Camera Lag & Third-Person Camera Pull-Back (dcdb834)
- Fixed delayed third-person camera follow and excessive camera pull-back distance during sprinting under the dynamic clock hook.
- Removed 41 artificial camera damping overrides from
Bloodborne.xml, restoring authentic 1:1 camera physics across all framerates.
-
Audio Distortion, Crackling & Limiter Clipping (c3f5589)
- Eliminated audio stuttering and buffer under-runs by removing thread priority hogging that starved low-spec CPU cores.
- Removed harsh digital limiter saturation, preventing clipping distortion during high-volume sound effects and boss encounters.
-
GPU Memory Leak & Edge-Page Corruption (shadPS4 Issue #184, d81d63b)
- Resolved memory reclamation stalls and edge-page modification bugs by validating GPU download eligibility and tracking boundary pages across texture allocations.
Credits & Upstream References
Thanks to the developers whose work was used in this release:
- @deadinside28: Author and creator of upstream
bloodborne_pc/bbport, for memory range lookups, ring buffer deduplication, shader recipes, NVAPI integration, and title screen offline bypass (0fc2921). - shadPS4 Team & Contributors: For their continuous work on the PS4 emulation core and graphics recompiler. Commits incorporated into this release:
- Command Processor & Texture Cache:
e6c79a5,7ea677e,c64a1e0,e0845a1,ca36c7e,699009c,d3ff0e0,0cd6e4f,b3d46e9. - Shader Recompiler:
524be7c,603cff4,ab1dd38,a808e76,6752d8b,08225c2,78bedfa,f0ea8eb,de27898,b61f6c5. - Architectural PM4, Buffer Chaining & GC Part 2 (Issue #184):
b6f0c58,9d3524f,1b9d159,626f3ac,f9d0748,e6faa2e,0918faa,eedf851.
- Command Processor & Texture Cache:
Requirements
- OS: Windows 10 or Windows 11 (64-bit)
- GPU: Vulkan 1.3 capable graphics card (NVIDIA GTX 10-series+, AMD RX 400-series+, Intel Arc)
- CPU: 64-bit x86 processor supporting AVX 1.0 or SSE4.2 (CPUs without BMI1 are supported)
- Game Dump: Decrypted Bloodborne PS4 dump (
CUSA03173,CUSA00207,CUSA03023,CUSA00900, version 1.09) witheboot.binandsce_module/libc.prx
Installation
- Extract the release archive to a folder.
- Run
BloodborneLauncher.exe. - Confirm your decrypted 1.09
eboot.binpath on the Home dashboard. - Select your GPU Adapter, game language, graphics settings, and controls.
- Click Launch Bloodborne.
Updating from v0.7.2
- Copy the
USERfolder from\bloodborne_pc_windows_port_v0.7.2_release\userto\bloodborne_pc_windows_port_v0.8.0_release
In-Game Hotkeys
- F1: Lock or unlock the mouse cursor.
- F4: Toggle the in-game cheat/tweaks menu.
- Insert or L3 + R3: Open the in-game settings menu.
- 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 worker counts can overload 4-core and 6-core processors. - If you experience shader compilation stuttering during initial gameplay, ensure "Async Pipelines" is set to Auto or 2-4 threads in the launcher.
- Avoid enabling conflicting frame rate mods at the same time. If you run into issues, try launching with only "Skip Intro" enabled first.
- If you notice visual glitches or crashes after an update, delete the cache folder in
user/cache/CUSA03173/(or your regional CUSA folder) so the game can rebuild shaders cleanly.
Note
- When reporting a crash, please click "Copy Diagnostics" on the launcher's Home tab and attach the latest
bblauncher.log, andcrash logfrom theoutfolder.
Discord Server
Join the Discord for updates, bug reports, and discussions about the Bloodborne PC Windows Port:
https://discord.gg/gTvrZZ75G