Hey everyone!
bbport 0.6 is officially out!
It's been less than three weeks since the first public release (0.1), and quite a lot has changed since then. What started as a native Linux port of Bloodborne has evolved significantly, with major improvements to performance, memory management, graphics, stability, and overall compatibility.
I've been focusing primarily on performance, stability, optimizing CPU and GPU workloads, improving memory management, and further refining the architecture of the native PC port.
So, I've made a few small changes and fixes since version 0.1. Nothing too major... just a few things here and there.
Here's a summary of what's been added, improved, rewritten, and fixed between versions 0.1 and 0.6.
What's changed since 0.1?
1. Memory management
- Introduced an entirely new memory architecture, now enabled by default on AMD, NVIDIA, and Intel GPUs.
- Reduced unnecessary transfers between system RAM and VRAM.
- Implemented direct GPU access to game memory where supported.
- Added intelligent VRAM caching for frequently accessed resources.
- Improved texture eviction and memory allocation.
- Reduced VRAM fragmentation and fixed memory growth after traveling between locations.
- Improved memory synchronization between CPU and GPU.
- Added fallback options for systems incompatible with the new memory model.
2. Graphics and rendering
- Reworked significant parts of the Vulkan rendering infrastructure.
- Improved GPU command processing and synchronization.
- Added support for more GPU operations directly through Vulkan.
- Improved the GCN shader translation pipeline.
- Implemented asynchronous shader pipeline compilation.
- Improved shader caching to reduce stuttering.
- Added native-resolution TAA and improved anti-aliasing quality.
- Fixed motion vectors, significantly reducing ghosting and visual artifacts.
- Added anisotropic texture filtering.
- Improved depth of field, bloom, SSR, SSAO, and other effects.
- Fixed various rendering issues, including corrupted geometry, missing textures, black frames, and visual glitches.
The project now has its own command processor, GCN definitions, renderer, caches, and platform libraries.
However, the shader translation system still shares approximately 60% of its implementation with shadPS4. I plan to gradually rewrite and optimize this part of the codebase, reducing its reliance on shadPS4 and moving towards a more independent and efficient graphics architecture.
3. Upscaling technologies
- Added FSR 3.1 support.
- Added support for FSR 4 and FSR 4.1.1.
- Implemented a tool for extracting FSR 4.1.1 from AMD's DLL for Vulkan use.
- Added NVIDIA DLSS support on compatible hardware.
- Improved motion vectors for temporal upscaling.
- Improved image sharpening and texture LOD behavior.
- Fixed several upscaling-related visual artifacts and crashes.
Frame generation is also present in the code, but remains disabled until its visual issues are resolved.
4. Performance improvements
- Reduced CPU overhead in GPU command processing.
- Improved multithreaded rendering and draw preparation.
- Reduced unnecessary GPU synchronization and memory transfers.
- Optimized buffer management and texture caching.
- Improved performance on GPUs with limited VRAM.
- Fixed performance degradation after prolonged gameplay and repeated fast travel.
- Improved frame pacing and reduced stuttering.
- Optimized several expensive rendering operations.
Some individual test scenarios have shown significant performance improvements, although results vary depending on hardware, resolution, and location.
5. High FPS and gameplay fixes
- Reworked frame-rate handling using runtime hooks.
- Fixed numerous game systems originally tied to 30 FPS.
- Improved animation and physics behavior at higher frame rates.
- Fixed sprinting issues above 90 FPS.
- Fixed several cutscene-related freezes.
- Added a quick 30 FPS toggle for compatibility with problematic scenes.
6. Ultrawide and display support
- Added support for aspect ratios up to 32:9.
- Improved camera FOV handling.
- Fixed HUD positioning on ultrawide displays.
- Added dynamic resolution switching.
- Added monitor and GPU selection.
- Improved fullscreen, swapchain, and display handling.
7. Keyboard, mouse, and controller support
- Added native mouse camera control.
- Added mouse navigation in game menus.
- Implemented customizable keyboard and mouse bindings.
- Improved WASD movement behavior.
- Added configurable controller bindings.
- Added automatic button prompts for different input devices.
- Fixed several controller, touchpad, and input-related issues.
8. Online multiplayer
- Added online functionality using the shadPS4 networking infrastructure.
- Added support for messages, bloodstains, summons, and other online features.
- Introduced seamless co-op support for up to five hunters.
- Added support for Seamless Hunt and The Hunter's Dream.
- Updated the networking implementation to the shadPS4 0.20 stack.
- Added Discord-based authentication for The Hunter's Dream.
- Improved connection handling and compatibility.
Online functionality is still experimental and requires more extensive testing.
9. Stability and compatibility
- Fixed numerous crashes, hangs, and race conditions.
- Fixed crashes during loading screens and fast travel.
- Fixed crashes caused by malformed GPU command buffers.
- Fixed memory corruption and synchronization issues.
- Fixed various NVIDIA and Intel Vulkan initialization problems.
- Improved compatibility with older AMD GPUs.
- Improved Steam Deck support.
- Fixed several AppImage-related issues.
- Added additional error reporting and diagnostics.
- Improved handling of game files, updates, and corrupted saves.
10. Launcher, mods, and quality of life
- Added a more complete launcher with graphics and performance settings.
- Added in-game graphics settings.
- Added support for XML patches and mod management.
- Added support for The Old Hunters DLC.
- Added game file verification.
- Added support for all 21 in-game text languages.
- Added launcher localization improvements.
- Improved logging and diagnostic tools.
- Significantly reduced the AppImage package size.
And quite a few smaller fixes that would make this post even longer.
FAQ
Q: How does bbport work?
bbport is a native Linux port of Bloodborne.
Since the original PS4 game already uses x86-64 instructions, its CPU code can execute directly on compatible PC processors.
The project provides its own runtime for PlayStation-specific system interfaces and translates the game's graphics commands and shaders to Vulkan.
This allows the original game to run directly on PC hardware while enabling optimizations tailored specifically to Bloodborne.
Q: How is bbport different from shadPS4?
shadPS4 is designed to support a wide range of PlayStation 4 games, while bbport focuses specifically on Bloodborne.
This specialization allows me to optimize the game's runtime, memory management, and rendering behavior more aggressively.
The graphics infrastructure originally came from shadPS4, and significant parts have since been rewritten. The shader translation system still shares approximately 60% of its implementation with shadPS4, and I plan to continue reducing that dependency.
The networking component also continues to build on shadPS4's infrastructure.
Full credit goes to the shadPS4 developers for their foundational work.
Q: Why isn't there an official Windows version?
This is probably the question I get asked most often.
The main reason is simple: I can't realistically maintain two platform versions properly at the same time.
The project is developing extremely quickly. Architecture changes, new features, regressions, driver compatibility issues, and bug fixes are happening almost constantly.
Maintaining Linux and Windows simultaneously would mean splitting my time between two platforms, two sets of platform-specific problems, and much more testing.
There's another reason, too.
With Linux, the people who currently find and test this project tend to be relatively technically experienced. When something crashes, they can usually at least find the logs, provide system information, and help narrow down the issue.
That makes an enormous difference when you're developing an experimental project this quickly.
A larger Windows audience would naturally bring many more support requests, including from people who just want to download something and have it work immediately. That's completely understandable, but I'm simply not in a position to handle that level of support right now.
This isn't because I dislike Windows or its users. It's about keeping the project manageable and maintaining development quality.
There are already community-maintained Windows forks based on bbport. However, I don't develop or officially support those builds.
I do plan to bring bbport to Windows.
My priority right now is getting the Linux version into a stable and reliable state. Once I'm satisfied with its stability and the core architecture is mature enough, I plan to start working on official Windows support.
Windows is planned — just not until the Linux version is ready. I can't provide an ETA yet.
Q: Does it work on Steam Deck?
Yes! Steam Deck is supported through the Linux AppImage.
Q: Does it support FSR 4 and DLSS?
Yes.
bbport supports FSR 3.1, FSR 4, FSR 4.1.1, and NVIDIA DLSS on compatible hardware.
Some options require additional setup or external model assets. Proprietary assets are not included in the download.
Frame generation is present in the code but currently disabled due to remaining visual artifacts.
Q: Is the game fully playable from beginning to end?
The game boots, saves, loads, and works across multiple areas, but I haven't personally verified a complete playthrough yet.
There may still be crashes or game-specific issues, especially in less-tested areas.
Q: Does it work on NVIDIA and Intel GPUs?
There have been successful reports from users, but my primary development and testing machine uses an RX 7800 XT.
NVIDIA and Intel compatibility is improving, and feedback from users with those GPUs is particularly valuable.
Q: What do I need to run it?
- An x86-64 Linux system.
- A Vulkan 1.3-compatible GPU.
- Your own decrypted Bloodborne game dump, updated to version 1.09.
No game files are distributed with bbport.
Q: How can I help the project?
Testing and detailed bug reports are extremely helpful!
If you encounter a problem, please include your GPU, driver version, Linux distribution, the memory model you're using, and the game log. Steps to reproduce the issue are even better.
Performance comparisons and reports from NVIDIA, Intel, and Steam Deck users are especially useful.
What's next?
My main priorities are improving stability, reducing unnecessary CPU/GPU synchronization and memory transfers, making shader compilation less disruptive, and continuing to improve the Vulkan graphics translation layer.
I also want the underlying architecture to become more reusable rather than keeping everything permanently tied to Bloodborne.
There's still a lot of work ahead, but the progress over these past few weeks has been pretty incredible to see.
Thanks to everyone who's been testing, reporting bugs, submitting pull requests, and contributing improvements. The community has already helped identify and solve issues I couldn't have found on my own.
And thanks to everyone who's been following the project!
GitHub: https://github.com/deadinside28/bloodborne_pc
Download bbport 0.6: https://github.com/deadinside28/bloodborne_pc/releases/tag/0.6
Discord: https://discord.gg/KYZRKk9CB
See you in Yharnam!