Skip to content

0.3

Choose a tag to compare

@deadinside28 deadinside28 released this 06 Oct 08:29
· 1 commit to master since this release

English · Русский

bbport is the counterpart of Wine + DXVK for a single game: Bloodborne (CUSA03173, v1.09) on Linux. The game's x86-64 code runs directly on the CPU, a runtime written for this game replaces the PS4 system libraries, and the graphics are translated to Vulkan. No game files are included — you need your own dump. AppImage for desktops and the Steam Deck: data in ~/.local/share/bbport, --play starts the game without the launcher window.

Questions about this project: Discord https://discord.gg/KYZRKk9CB — not the shadPS4 server.

What's new since 0.2

Upscalers: no more smearing on stairs

  • Camera motion vectors had the vertical axis inverted. Camera pitch and vertical movement were wrong, so wherever the camera bobs up and down — the Cathedral Ward stairs, the sewers — FSR 4 / 4.1.1 smeared the background in streaks and FSR 3.1 blurred it, while the character stayed sharp. Checked against the GPU's own per-vertex motion: now within 0.05 px (was 1.3–3.7 px off).
  • 16× anisotropic filtering for scene textures (the game uses 1× for most of them): sharper floors, stairs and walls seen at an angle. BB_ANISO=0 restores the game's filtering.

VRAM no longer grows from area to area

  • The texture cache never freed anything; game memory blocks in VRAM were never given back. Now textures unused for 20 s and memory blocks unused for 60 s are released, smaller VMA blocks avoid fragmentation. 13 minutes of teleporting: 3.8 → 7.3 GB before, 4–5.5 GB now.
  • Frame statistics have a Memory: line (VRAM, GTT, RSS, caches).

New memory model — experimental, off by default

  • The game's memory lives in system RAM and the GPU uses it in place, like a PC game's buffers: no write tracking, no copies of the whole GPU memory — faster and fewer stutters (Yahar'gul: 144 FPS with the old model, 152–155 with the new one).
  • Tested only on the author's PC (RX 7800 XT) and a Steam Deck. It may crash, and it does not work properly on NVIDIA (the port detects this and stays on the old model). Turn it on in the launcher: Performance → New memory model (experimental). By default the 0.2 model is used.

Stability

  • Guest fault ... 0x263b8e7 (frequent on the Steam Deck): GPU completion labels were written with memcpy, i.e. as two overlapping stores; the game could free the block in between. Now a single atomic store. Not yet confirmed on the Deck.
  • GPU hangs no longer look like a silent freeze with the sound still playing: a lost device is detected, a 10 s watchdog writes a report naming the stuck draw/dispatch and stops the game. A hang in a particle compute shader was located; the cause is not fixed yet — please send the log if it happens.
  • Game files are checked at start: without the 1.09 update, with an old eboot or another edition, the launcher explains what is wrong (BB_SKIP_GAME_CHECK=1 skips it).

Controls and launcher

  • Keyboard and gamepad remapping: Controls → Keyboard / Gamepad, press Assign and the key/button.
  • Choose the controller to use (wheels and other devices no longer get picked); the selected one is taken as soon as it connects.
  • Character name entry in a window over the game.
  • The mouse cursor is hidden in fullscreen and after 3 s without movement.
  • Drop-down lists show short choices with the full description under the title — no more cut-off text.

Game patches

  • Sprint Fix (High FPS): above ~147 FPS (sometimes above ~90) sprinting dropped to half speed. Always applied with the 90 FPS and unlimited modes.
  • Intel CPUs: the game's tone mapping turned black / darker than on the PS4 (most of all in the DLC), because Intel's approximate float instructions give different values. The fix is applied automatically on Intel (BB_INTEL_TONEMAP_FIX=0/1 forces it).

Other

  • MangoHud is drawn once: two overlays (the AppImage's and a system MangoHud, or Steam's performance overlay on the Deck) showed doubled, offset text.
  • FSR 4.1.1 asset build: picks the newest GE-Proton correctly, works without Nix, and avoids the FP8 shader variant on RDNA4 (untested on RDNA4).

Notes

  • On the Steam Deck use FSR 3 and the 1280×720 output.
  • FSR 4.1.1 models are not included (they come from AMD's DLLs): build them with tools/fsr4cap/build_assets.sh into ~/.local/share/bbport/fsr4_411.
  • NVIDIA: use FSR 3; keep the new memory model off.
  • Next patch: the rest of the graphics renderer moves from decoding the PS4 GPU's command stream to DXVK-style translation of the game's graphics API calls.

Details (in Russian): docs/CHANGES_2026-10-06.md.


Русский

bbport — аналог Wine + DXVK для одной игры: Bloodborne (CUSA03173, v1.09) на Linux. x86-64-код игры выполняется прямо на процессоре, системные библиотеки PS4 заменяет рантайм, написанный под эту игру, графика переводится в Vulkan. Файлов игры нет — нужен свой дамп. AppImage для ПК и Steam Deck: данные в ~/.local/share/bbport, --play — запуск без окна лаунчера.

Вопросы по проекту — в Discord https://discord.gg/KYZRKk9CB, а не на сервер shadPS4.

Что нового с 0.2

Апскейлеры: больше нет мыла на лестницах

  • В векторах движения камеры была перевёрнута вертикальная ось. Наклон камеры и движение вверх-вниз считались неверно, поэтому там, где камера покачивается, — лестница к собору, канализация — FSR 4 / 4.1.1 мазали фон полосами, а FSR 3.1 размывал его, при этом персонаж оставался чётким. Сверено с векторами самого GPU по вершинам: теперь расхождение до 0,05 пикселя (было 1,3–3,7).
  • Анизотропная фильтрация 16x для текстур сцены (игра ставит большинству 1x): чётче пол, ступени и стены под углом. BB_ANISO=0 — фильтрация игры.

Видеопамять больше не растёт от локации к локации

  • Кэш текстур ничего не освобождал, блоки памяти игры в VRAM не возвращались. Теперь текстуры, не использованные 20 с, и блоки, не использованные 60 с, освобождаются, а блоки VMA меньше и не дробят память. 13 минут телепортов: было 3,8 → 7,3 ГБ, стало 4–5,5 ГБ.
  • В статистике кадров есть строка Memory: (VRAM, GTT, RSS, кэши).

Новая модель памяти — экспериментальная, по умолчанию выключена

  • Память игры в оперативной памяти, GPU использует её на месте, как буферы игры для ПК: без отслеживания записей и копий всей памяти GPU — быстрее и меньше рывков (Яр'гул: 144 FPS на старой модели, 152–155 на новой).
  • Проверена только на ПК автора (RX 7800 XT) и Steam Deck. Может вылетать и не работает должным образом на NVIDIA (порт это замечает и остаётся на старой модели). Включается в лаунчере: Производительность → Новая модель памяти (экспериментально). По умолчанию работает модель 0.2.

Стабильность

  • Guest fault ... 0x263b8e7 (частый на Steam Deck): метки завершения GPU писались через memcpy, то есть двумя перекрывающимися записями, и игра успевала освободить блок между ними. Теперь — одна атомарная запись. На Деке ещё не подтверждено.
  • Зависание GPU больше не выглядит как тихая заморозка при играющем звуке: потеря устройства замечается, сторож через 10 с пишет отчёт с отрисовкой, на которой встал GPU, и останавливает игру. Найдено зависание в шейдере частиц; причина ещё не устранена — если случится, пришлите журнал.
  • При запуске проверяются файлы игры: без обновления 1.09, со старым eboot или другим изданием лаунчер объясняет, что не так (BB_SKIP_GAME_CHECK=1 — пропустить).

Управление и лаунчер

  • Переназначение клавиатуры и геймпада: Управление → Клавиатура / Геймпад, «Назначить» и нажать клавишу или кнопку.
  • Выбор контроллера (рули и другие устройства больше не перехватывают ввод); выбранный берётся, как только подключится.
  • Ввод имени персонажа в окне поверх игры.
  • Курсор мыши скрыт в полноэкранном режиме и через 3 с без движения.
  • Выпадающие списки показывают короткие варианты, а полное пояснение — под заголовком: текст больше не обрезается.

Патчи игры

  • Sprint Fix (High FPS): выше ~147 FPS (иногда выше ~90) бег падал до половины скорости. Всегда включается с режимами 90 FPS и «без ограничения».
  • Процессоры Intel: тонмаппинг игры становился чёрным / темнее, чем на PS4 (сильнее всего в DLC), потому что приближённые float-инструкции Intel дают другие значения. Исправление включается само на Intel (BB_INTEL_TONEMAP_FIX=0/1 — принудительно).

Прочее

  • MangoHud рисуется один раз: два оверлея (из AppImage и системный, или оверлей производительности Steam на Деке) давали двоящийся текст со сдвигом.
  • Сборка ассетов FSR 4.1.1: правильно выбирает новейший GE-Proton, работает без Nix и обходит FP8-вариант шейдеров на RDNA4 (на RDNA4 не проверено).

Важно

  • На Steam Deck используйте FSR 3 и вывод 1280×720.
  • Модели FSR 4.1.1 не входят в сборку (они из DLL AMD): соберите их tools/fsr4cap/build_assets.sh в ~/.local/share/bbport/fsr4_411.
  • NVIDIA: используйте FSR 3, новую модель памяти не включайте.
  • Следующий патч: остальная часть графического рендера переходит с разбора команд видеочипа PS4 на трансляцию вызовов графического API игры, по типу DXVK.

Подробно: docs/CHANGES_2026-10-06.md.