Mods and third-party patches¶
Both are in the launcher's Mods section and apply at the next start. The game folder itself is never changed.
File mods¶
The Mods group has the folder, a Load mods switch, and the list of mods: each one can be turned on or off and moved up or down. The lowest mod that is on wins: when two mods replace the same file, the log says which one replaced the other.
The mods folder is ~/.local/share/bbport/mods/ with the AppImage (mods/ in the data
directory when running from the repository). Extract each mod into a folder of its own:
mods/
Mod name/
dvdroot_ps4/
chr/...
param/...
menu/...
These layouts work as well:
Mod name/app0/dvdroot_ps4/..., andMod name/<title ID>/dvdroot_ps4/...with whichever release the mod was made for (CUSA03173,CUSA00900, ...).- Up to three extra wrapper folders, as extracting an archive into a folder of its name leaves it:
Mod name/Mod name v1.2/dvdroot_ps4/...(notes, pictures and links may sit next to them:README,.txt,.pdf,.png,.webp,.url, ...). - The game's folders without
dvdroot_ps4:Mod name/chr/...,Mod name/parts/...(chr,parts,map,menu,msg,param,sfx,sound,fontand the other folders ofdvdroot_ps4), also next to other folders such asScreenshotsorOptional, which stay out of the game.
A folder in the mods folder that is not a mod is listed in the launcher under the mods with the reason: still an archive, several mods in one folder, no game files, or empty.
Upper or lower case does not matter: a mod made on Windows with
DVDROOT_PS4/Chr/C0000.chrbnd.dcx replaces the game's dvdroot_ps4/chr/c0000.chrbnd.dcx.
The log shows how many game files the mods replaced and added, e.g.
Mods: 12 game files replaced, 0 added. A mod meant to replace files that says
0 game files replaced has its files in the wrong place.
What works: ready-made replacements of dvdroot_ps4 files (textures, models, params,
interface, sound, fonts). What does not:
- ZIP or 7z archives: extract them first.
- Two mods changing different parts of the same
.dcxor.bndfile: the last one replaces it whole, the files are not merged. - Mods that replace
eboot.bin,sce_moduleorsce_sys, DLL injectors and script plugins. Changes to the game's code are patches (below). - Symbolic links inside a mod.
Whether a mod works with Bloodborne 1.09 is up to its author.
A shadPS4-style folder next to the game folder, <game folder>-mods/dvdroot_ps4/... (for
example CUSA03173-mods next to CUSA03173), is loaded too, before the mods in the list. You
can also choose a folder that holds dvdroot_ps4 directly as the mods folder: it is then loaded
as one mod. Load mods turns all of them off. The launcher's button prompts and gestures
menu work the same way, as files laid under the mods; they are settings of their own and stay
on when mods are off.
How it works¶
For each start, the data directory gets a merged tree of links, out/mod-game-*: the game sees
the mods' files where they replace its own and the original files everywhere else. /app0 is
read-only, and saves go to the usual folder. The tree is removed when the game exits normally
or the launcher stops it; one left behind by a crash is not reused.
The order and the mods turned off are kept in mods.json in the data directory:
{"order": ["First", "Second"], "disabled": ["First"]}
New folders are turned on and added at the end, in alphabetical order.
From a terminal:
BB_GAME_DIR=/path/to/game BB_MODS_DIR=/path/to/mods bash run.sh
BB_GAME_DIR=/path/to/game BB_MODS_ENABLED=0 bash run.sh
BB_MODS_CONFIG sets another mods.json. BB_MOD_TRACE=1 (with BB_MODS_DIR) logs the
first reads of files that come from mods, to see whether a mod is being used.
Third-party patches¶
The Third-party patches group loads patches in the shadPS4/GoldHEN XML format from the
patches folder: ~/.local/share/bbport/patches/ with the AppImage, or another folder chosen in
the launcher.
- Only patches for version
01.09ofeboot.binare listed. Files for other games are skipped: a file applies when it lists any retail release of Bloodborne, or none. - Each patch starts on or off as the file says (
isEnabled); the choice in the launcher is kept inpatches.jsonin the data directory:
{"enabled": ["file.xml/Patch name"], "disabled": ["file.xml/Other patch"]}
- Lines of type
bytes,bytes16,bytes32,bytes64,float32,float64,utf8andutf16work. A patch with amaskline (a pattern search) or an address outside the executable is skipped whole, and the log says so. - They apply after bbport's own patches (
patches/Bloodborne.xml), so where both change the same bytes, the third-party patch wins. - shadPS4's patch file can stay named
Bloodborne.xml. In a file of that name, the patches named as one of bbport's own are left out (bbport's apply), and the rest start off until you turn them on, whatever the file says. An older package's copy of bbport's file adds nothing. - Patches that replace pointers in tables, such as 60 FPS++, are moved to where the game is loaded.
From a terminal: BB_PATCHES_DIR=/path BB_PATCHES_CONFIG=/path/patches.json bash run.sh.
This guide is based on bbport's MODS.md (Russian), by deadinside28.