| Dark Souls | |
|---|---|
| GameID(s) | |
| Quick links | Check Compatibility Open Issues Search Google Wikipedia Page |
Configuration
Options that deviate from RPCS3's default settings and provide the best experience with this title are listed below.
GPU configuration
| Setting | Option | Notes |
|---|---|---|
| Renderer | Vulkan | Recommended to get the best performance. |
Known Issues
There are no reported issues with this title.
Special Notes
Anchors:
DS1_US_FPS: &DS1_US_FPS
# 60fps noskip
- [be32, 0x00146e40, 0x38800002 ] # li r4 0x2
- [be32, 0x00146e44, 0x989f070c ]
- [be32, 0x00146e48, 0x989f070d ]
# delta time
- [ be32, 0x001423e8, 0x494447e9 ] # jump to code cave
# get mftb
- [ be32, 0x01586bd0, 0x7eac42e6 ] # mftb r21 // Move from timebase register (clock)
# get mftb delta
- [ be32, 0x01586bd4, 0x3ec0017d ] # lis r22,0x017d // load high bits of address (0x017de3f8)
- [ be32, 0x01586bd8, 0x62d6e3f8 ] # ori r22,r22,0xe3f8 // load low bits of address
- [ be32, 0x01586bdc, 0x7e96a02a ] # ldx r20,r22,r20 // load previous frames mftb reading
- [ be32, 0x01586be0, 0xfab60000 ] # std r21,0x0(r22) // store this frames mftb reading
- [ be32, 0x01586be4, 0x7e74a850 ] # subf r19,r21,r20 // subtract previous mftb reading from this mftb frames reading
# mftb delta to float
- [ be32, 0x01586be8, 0xfa7600e0 ] # std r19,0xe0(r22) // store mftb delta (to be loaded into FPR)
- [ be32, 0x01586bec, 0xcbd600e0 ] # lfd f30,0xe0(r22) // load mftb delta into FPR
- [ be32, 0x01586bf0, 0xffc0f69c ] # fcfid f30,f30 // convert integer to double
- [ be32, 0x01586bf4, 0xffc0f018 ] # frsp f30,f30 // round to single precision
# mftb delta to seconds
- [ be32, 0x01586bf8, 0x3e400158 ] # r18,0x158 // load high bits constants pointer
- [ be32, 0x01586bfc, 0x62526bd0 ] # ori r18,r18,0x6bd0 // load low bits of constants pointer
- [ be32, 0x01586c00, 0xc3b20054 ] # lfs f29,0x54(r18) // load timebase frequency constant
- [ be32, 0x01586c04, 0xc3920058 ] # lfs f28,0x58(r18) // load maximum timestep size
- [ be32, 0x01586c08, 0xfffee824 ] # fdiv f31,f30,f29 // divide timebase delta by timebase frequency
# check timestep size
- [ be32, 0x01586c0c, 0xff9fe000 ] # fcmpu cr7,f31,f28 // compare current delta time to maximum timestep
- [ be32, 0x01586c10, 0x419c0008 ] # blt +0x08 // don't return the maximum timestep size
# set maximum timestep
- [ be32, 0x01586c14, 0xffe0e090 ] # fmr f31,f28 // move maximum timestep to be returned
# cleanup
- [ be32, 0x01586c18, 0x7e94a278 ] # xor r20,r20,r20 // zero r20
- [ be32, 0x01586c1c, 0x7e94a278 ] # xor r19,r19,r19 // zero r19
- [ be32, 0x01586c20, 0x4e800020 ] # blr // return
# constants
- [ be32, 0x01586c24, 0x4c989680 ] # timebase frequency as hexfloat (80mhz)
- [ bef32, 0x01586c28, 0.05000000 ] # maximum timestep size (50ms or 20fps)
PPU-3577a3e8efa233c68dedce81a3d0a63dab05dbed:
Unlock FPS:
Games:
"Dark Souls":
BLUS30782: [ 01.00 ]
Author: Whatcookie
Notes: For people who would like to play the unpatched version of Dark Souls at decent framerates (unpatched PC version is equivalent to 1.06 on consoles!)
Patch Version: 1.0
Patch:
- [ load, *DS1_US_FPS ]