• v0.9.0 b3350bb4f5

    yindo released this 2026-11-07 05:53:18 -10:00 | 0 commits to master since this release

    📅 Originally published on GitHub: Sat, 07 Nov 2026 01:36:13 GMT
    🏷️ Git tag created: Sat, 07 Nov 2026 00:16:07 GMT

    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 PipelineStore so the runtime, cache rebuild tool, and recipe importer write matching binary versions to profile.bin, preventing cache wipes on relaunch.
      • In-place header migration: accepts legacy version 24 headers in WarmUp and 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 VkPipelineCache handle.
      • 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 .spv and .in files after preload passes.
    • Windows Exception Red-Zone Fault Protection (432d2dd)

      • Added bounded sticky writable pages for known generator instruction ranges, preventing Windows KiUserExceptionDispatch from clobbering the System V 128-byte red zone during JIT guest execution.
      • Exposed runtime controls via BB_STICKY_FAULT_PAGES environment variable and registered BbStats::sticky_pages diagnostics.
    • 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_umount in src/runtime_savedata.c to automatically create timestamped rolling save snapshots in user/savedata_backups/auto_safepoint prior to New Game Plus (NG+) transitions.
      • Configurable via save_auto_backup in bbport.ini and BB_SAVE_AUTO_BACKUP environment variable.
    • 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 existing boot.bin binaries.
    • 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 as ui_depth, fixing missing HUD quick items and loading screen item icons at non-1080p output resolutions.

    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 userdata0010 slot tables to extract UTF-16LE names, levels, playtime, and FromSoftware map IDs.
      • Implemented param.sfo binary parsing reading INSTALL_DIR_SAVEDATA to dynamically resolve save directories across standard, regional, and GOTY releases to canonical title ID CUSA00207.
      • Added manual backups, rolling pre-launch snapshots with automatic pruning, pre-restore safety backups, and ZIP archive import and export with SPRJ0005.sce_sys metadata bundling.
    • Universal Cover Portrait & Windows Shell Icon Fix (1cc0678)

      • Embedded a universal 512x512 Bloodborne cover portrait (default_hunter.png) into BloodborneLauncher.exe via PyInstaller runtime asset bundles (sys._MEIPASS), replacing distorted banners and user-specific face crops.
      • Re-encoded icon.ico to 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.Launcher application ID via SetCurrentProcessExplicitAppUserModelID on launcher initialization.
    • UI Responsiveness & Lazy Tab Loading (b3350bb)

      • Implemented global CursorGuard Qt event filter automatically enforcing Qt.PointingHandCursor across 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.
    • Graphics & Patch Controls (d9b1bc6, b3350bb)

      • Added Texture Quality dropdown selector (Auto, Full, Half, Quarter) to Display & Graphics tab, saving to bbport.ini and passing BB_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.
    • Executable Discovery (2054129)

      • Updated file selectors, drop targets, and validation routines across the launcher to detect and accept both eboot.bin and eboot.elf executables.

    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.
    • 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.elf Dump Support (PR #189 by @facundo1701, d7b2db1, 2054129)

      • Contributed by @facundo1701: extended prepare.py ELF 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 link eboot.elf dumps alongside eboot.bin.
    • 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) with eboot.bin or eboot.elf and sce_module/libc.prx

    Installation

    1. Extract the release archive to a folder.
    2. Run BloodborneLauncher.exe.
    3. Confirm your decrypted version 1.09 eboot.bin or eboot.elf path on the Home dashboard.
    4. Select your GPU Adapter, game language, graphics settings, and controls.
    5. Click Launch Bloodborne.

    Updating from v0.8.0.

    1. Copy the savedata folder from your previous release directory bloodborne_pc_windows_port_v0.8.0_release\user\savedata to bloodborne_pc_windows_port_v0.9.0_release\user.
    2. Existing save files in user/savedata will 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=1 or prep_workers=2 in the launcher or bbport.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.log alongside any crash dump files from the out folder.

    Credits

    Thanks to the contributors and upstream developer:

    • @facundo1701: For PR #189, implementing raw decrypted ELF parsing in prepare.py to 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.

    Downloads v0.9.0

    Discord Server

    Join the Discord for updates, bug reports, and discussions about the Bloodborne PC Windows Port:
    https://discord.gg/gTvrZZ75G

    Downloads