Soulbrandt is a PC port of Demon's Souls (PS3, 2009). The game's original code has been converted to run directly on Windows and Linux, with no emulator.
You need your own copy of the game: the US version, BLUS30443, or the European version, BLES00932 (both version 1.00, on disc or from the PlayStation Store), or the Japanese or Asian disc, BCJS30022 or BCAS20071, with its 1.04 update. This project includes no game files.
0.1.2, the current release, is an alpha. Download it from the Releases page.
The game plays from start to finish (a tester has beaten it), but not every part has been tried on every setting, so expect bugs. What isn't supported yet is below; please report anything you find. Questions and help: Discord.
Press F1 (or L3 + R3 on a controller) at any time to open the menu. Most settings apply right away. Each setting has a short help text in the menu.
Picture - Frame rates of 30 (the original), 60, 120, 144, 165 or 240 fps, a number of your own, or unlocked. The game's timing is fixed so it still plays the way it should. Above 60 fps is less tested. - Cutscenes play at 30 fps by default, as they judder above it. You can play them at your frame rate instead. - V-sync on or off, "Even frames" for smooth motion, and G-Sync / FreeSync. - Render resolution up to 300% (4K), ultrawide aspect ratios (21:9 and 32:9), and 16:10 for the Steam Deck's screen. - Anti-aliasing (FXAA or SMAA), anisotropic filtering up to 16x, texture filtering and a sharp scaling filter. - HDR on HDR displays (Windows), with settings for brightness, peak and shadows. - Turn off the game's depth of field and motion blur. - Window, borderless fullscreen, or exclusive fullscreen on Windows (Settings > Display > Display mode). Alt+Enter switches. - Two renderers (Settings > Display > Renderer): DirectX 12 and Vulkan. Windows starts on DirectX 12, except with a GeForce GTX 10 series card or older, which starts on Vulkan. Linux starts on Vulkan.
Controls - Xbox controllers, DualSense and DualShock 4, over USB or Bluetooth, with vibration. Pick which controller the game uses when several are connected. - Keyboard and mouse, laid out like the Souls games on PC. To turn the camera with the mouse, turn on Mouse look in Settings > Controls. - Change which buttons and keys do what. - The game's button prompts show the buttons of the controller you're using, or your keys (Settings > Game > Button icons). - A deadzone for each stick, set as how far you tilt it, with a live picture of the stick (Settings > Controls). - Mouse sensitivity, inverted axes, and switching lock-on targets with a flick of the mouse. - Roll in any direction while locked on: the roll goes where the stick points. It's on by default; turn off Roll toward the stick in Settings > Controls for the original's four directions. - The mouse in the game's own menus: point and click. Experimental, and off by default.
HUD - Move, resize, hide or show each part of the HUD. - Change its size, and choose where it goes on wide screens.
Game - Skip the logos and the opening movie, and go straight into your last save. - Stat respec: the Maiden in Black, or the statue in front of where you wake in the Nexus, puts your stats back to your class's and gives back the souls your levels cost, to spend again. Off by default: turn on Stat respec in the Nexus in Settings > Game. - Use several soul items at once, as Drop does. On by default: turn off Use several souls at once in Settings > Game for the original's one at a time. - Change Appearance at the statue in front of where you wake in the Nexus: the game's own Edit Appearance, with your character. Off by default: turn on Change appearance in the Nexus in Settings > Game. - Choose the language in Settings > Game > Language. The European disc has English, French, German, Spanish and Italian, plus Japanese, Chinese (Traditional) and Korean; the US disc has English and Japanese; the Asian disc has English, Chinese (Traditional) and Korean. It starts in your PC's language when it can. A change needs a restart.
Online - On by default, on this project's own server: messages, bloodstains, ghosts, co-op and invasions. - Players of every supported version play together. - The Pantheon in the Nexus: its statues show the characters of the players at the top of each board. - Setup asks for your online name. You can change it, or turn online play off, in Settings > Network. - A matchmaking password, so you meet only your friends. - Show or hide other players' messages, bloodstains and ghosts.
Mods
- Put mods in the mods folder (Mods in the menu or on the start screen, then Open the mods folder) and turn each one on or off there. Mods for the PS3 game or RPCS3 that replace the game's files work, and the game's own files are never changed.
- A mod that changes how the game plays keeps you offline, so you never meet players without it. Mods that only change the look or sound keep online play.
- When two mods change the same thing, the one higher in the list wins; the arrows on each mod move it. The list is kept in mods\load_order.txt, which mod managers can use too (docs/143).
The program - A setup that builds the game from your copy, with an Original and an Enhanced preset (see How to play). - Updates: the game checks for a new version at start and asks before changing anything. Your saves and settings are kept, and you can go back one version. - In the menu, the Large Sword of Moonlight is the cursor and a crystal lizard dances in the corner. Both can be turned off. - Trophies, with pop-ups and a tune from the game. Setup can bring your trophies and save across from RPCS3. - A Discord status: your profile shows that you're playing, the area you're in and whether you're online (Settings > Network). - Report an issue in the menu opens a GitHub issue with your PC's details filled in, and a zip to attach that includes your save, so the problem can be seen where it happened. It has no game files. If the game crashes or stops responding, a window offers to do the same.
PS3_GAME in it: the US (BLUS30443) or European (BLES00932) disc, version 1.00, or the Japanese (BCJS30022) or Asian (BCAS20071) disc with its 1.04 update, as a folder or a .pkg file that setup has RPCS3 install. The US and European PlayStation Store versions (NPUB30910, NPEB01202) work once installed in RPCS3. Setup cannot use ISO files yet.These steps are for the release download.
DemonsSoulsRecomp-X.Y.Z-windows.zip) or the tarball for Linux (DemonsSoulsRecomp-X.Y.Z-linux.tar.xz), and unpack it into a folder of its own.Soulbrandt.exe (on Linux, Soulbrandt). Setup opens.EBOOT.elf and the .sdat files).
- Show me how: step by step, with free tools only.~/.local/share on Linux) and needs about 4 GB free there; to build on another drive, press Change next to Build folder first.Then press Play.
A portable install: put an empty file named portable.txt next to Soulbrandt.exe before its first start. Your settings, logs and setup's build then stay inside the program's folder, as your saves already do, and you can move or rename that folder.
Windows may warn you the first time you start Soulbrandt.exe ("Windows protected your PC"), because the program isn't signed yet. Click More info, then Run anyway.
If RPCS3 is set to run as administrator, setup cannot start it: untick that in rpcs3.exe's Properties.
CI builds the Linux program on every change, and each release includes a Linux download. It needs x86-64 Linux with glibc 2.35 or newer, a Vulkan driver, and curl and tar. Nothing else needs installing. The game renders on Vulkan, and setup prepares its shaders. If Vulkan can't start, the game falls back to its older renderer on vkd3d (DirectX 12 on Vulkan), which compiles shaders as it goes, with long pauses when a new area loads.
Linux is newer and less tested than Windows. Players run it on desktop Linux and on the Steam Deck, on Vulkan (docs/106).
macOS is not supported.
On a Steam Deck, keys and the mouse stay out of the game while its controls are on, because Steam's desktop layout presses them too. To use a keyboard on a docked Deck, set PAD_KEYBOARD_WITH_PAD=1.
On a Steam Deck the game runs best with Manual GPU Clock Control at 800 MHz and the Thermal Power (TDP) Limit at 15 W (Quick Access menu > Performance).
Online play is on by default and uses this project's own server. Setup asks for your online name; you can change it, or turn online play off, in Settings > Network. Players of every supported version meet on the same server. RPCS3 players use other servers, so you won't meet them. What the server keeps about you is in the privacy note.
Use Report an issue in the menu (F1), or open an issue. For questions and help, join the Discord. Report security problems privately, as SECURITY.md says.
This is the technical part. The full notes are in docs/.
Tools
| Windows | Linux |
|---|---|
| Visual Studio 2022 Build Tools, LLVM (clang), CMake, Ninja, Python 3, Git Bash | clang or GCC, CMake, Ninja, Python 3, SDL2, Vulkan and FFmpeg development files, vkd3d (details) |
On Windows, step 4 downloads FFmpeg's MPEG-2 video decoder for the game's movies (about 1 MB) and puts it beside des_boot.exe. If that download fails, the build says so and goes on, and the movies then need Microsoft's free MPEG-2 Video Extension from the Microsoft Store; without either, they play their sound with no picture. (A paid app called "MPEG-2 Video Extensions", from another publisher, is a different thing; you don't need it.)
From your copy of the game
PS3_GAME)EBOOT.BINlibsre.prx from your PS3 firmware, decrypted. The game doesn't need it; it is only for the LIBSRE_OWN=0 fallback (docs/88).Steps
sh
git clone https://github.com/JonathanDC64/Soulbrandt.git
cd Soulbrandt
git clone https://github.com/JonathanDC64/ps3recomp.git
ps3recomp.pin names the ps3recomp commit this version of the port needs. python tools/release/pin_ps3recomp.py local checks your checkout against it.PS3_GAME/USRDIR/EBOOT.BIN (Utilities > Decrypt PS3 Binaries) to work/game/EBOOT.ELF. Copy PS3_GAME/ICON0.PNG next to it, for the program's icon.sh
python ps3recomp/tools/ppu_loader.py work/game/EBOOT.ELF -o work/loader
python ps3recomp/tools/ppu_lifter.py work/game/EBOOT.ELF \
--functions work/loader/EBOOT.functions.json --hle-stubs work/loader/EBOOT.imports.json \
--override-funcs "0x167AC88=ds_malloc,0x167AC58=ds_free,0x273D38=des_move_post,0x724E40=des_menu_tick" \
--insn-hooks @port/insn_hooks.txt --shadow-stack --chunk-lines 150000 --output work/recomp -j 16
python ps3recomp/tools/gen_hle_nids.py --all --out work/recomp/hle_nid_table.cpp
python scripts/apply_boot_patches.py work/recomp
Then the SPU code with python scripts/build_spu.py --eboot work/game/EBOOT.ELF (docs/09), which first cuts the SPU programs out of the EBOOT, and, if you have libsre.prx, libsre with python scripts/build_libsre.py <libsre.prx>. The lifter's flags above are also in scripts/lift_ppu.json, which setup reads; change both together.sh
cmake -S ps3recomp -B ps3recomp/build -G Ninja -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_BUILD_TYPE=Release \
-DPS3RECOMP_RSX_HAL=ON
cmake -S port -B port/build -G Ninja -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl \
-DCMAKE_BUILD_TYPE= -DCMAKE_CXX_FLAGS_DEBUG= -DCMAKE_C_FLAGS_DEBUG=
cmake --build ps3recomp/build --target ps3recomp_runtime rsx_shader_precompile
cmake --build port/build --target des_boot --parallel 4
PS3RECOMP_RSX_HAL=ON builds the portable renderer: DirectX 12 through it, the default, and Vulkan beside it (Settings > Display > Renderer). Without it the game runs on the legacy renderer only. Its first configure downloads glslang and SPIRV-Tools at their pinned commits. On Linux, see docs/76.tools/des/local.env.example to tools/des/local.env, set PS3_VFS_ROOT in it to the folder that holds PS3_GAME, and start the game with tools/des/play.sh. A direct start of des_boot.exe goes through setup instead, and keeps its saves in port/build/gamedata.Everything made from your copy of the game stays in work/ and gamedata/, which git ignores. Never share your build: it contains code converted from your game.
For developers
(DES_FPS). The same name works as an environment variable, which wins over the menu.-DDES_SPLIT=ON also builds the game the way setup does: des_host plus the game as a separate library (docs/57).-DDES_DEV=ON makes a developer build, with cheats and a Developer tab in Settings (docs/55). Never share one as a release.RSX_BACKEND=legacy runs the renderer from before it: retired, kept unchanged as a fallback, with no more fixes. A build has it when its ps3recomp is configured with PS3RECOMP_RSX_HAL=ON, as in the steps above and in the released Windows build.This project contains only its own code, scripts and documentation. It has no game code, no game files, no Sony firmware and no keys; you make those from your own copy (docs/05).
Demon's Souls is a trademark of Sony Interactive Entertainment. This project is not affiliated with or endorsed by Sony Interactive Entertainment, FromSoftware or Atlus.
Settings > About and port/ui/NOTICE.md list the menus' parts with their licences. The download's licenses folder holds the licences of the libraries shipped beside the program. The source of its LGPL libraries, FFmpeg and vkd3d, is on their own release.
MIT, for this repository's own code, scripts and documentation (LICENSE). ps3recomp is MIT-licensed by its authors.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|