Soulbrandt README

The project's README from github.com/JonathanDC64/Soulbrandt. As one markdown file: README.md.

Soulbrandt

Demon's Souls, running natively on PC.

release downloads Discord

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). This project includes no game files.

Status

0.1.1, 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.

Highlights

Features

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

Controls

HUD

Game

Online

The program

What you need

How to play

These steps are for the release download.

  1. Download the zip for Windows (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.
  2. Start Soulbrandt.exe (on Linux, Soulbrandt). Setup opens.
  3. Pick how setup gets your game's files:
    • Import from RPCS3: setup finds the game in RPCS3's list and has your RPCS3 unlock its files. It can bring your save, trophies and some settings across too.
    • I have decrypted files: your disc copy, plus the 27 files you decrypted yourself (EBOOT.elf and the .sdat files).
    • Show me how: step by step, with free tools only.
  4. Start the build. It runs on your PC and can take a while; setup shows an estimate first. You can stop it and carry on later. Setup builds in AppData on Windows (~/.local/share on Linux) and needs about 4 GB free there; to build on another drive, press Change next to Build folder first.
  5. Pick a preset: Original plays as on the PS3; Enhanced sets 60 fps, a resolution that fits your display, SMAA, 16x anisotropic filtering, fullscreen, and HDR when Windows has HDR on for your display. Then a few choices (HDR among them, on Windows) and your online name. You can change anything later in Settings.

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.

Linux

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.

Online play

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 the US and European versions 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.

Not supported yet

Problems

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.

Building from source

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

Steps

  1. Get this repository, and its runtime inside it:
    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.
  2. In RPCS3, decrypt 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.
  3. Convert the game's main code:
    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.
  4. Compile the runtime, then the game. On Windows:
    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.
  5. Copy 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

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.

Credits

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.

License

MIT, for this repository's own code, scripts and documentation (LICENSE). ps3recomp is MIT-licensed by its authors.

Soulbrandt (JonathanDC64/Soulbrandt)

Searching Database…