[BCJS30022] 60fps Patch for Demon's Souls Japan version?
Started by onkeh




3 posts in this topic
onkeh
Member


0
50 posts 10 threads Joined: May 2020
05-04-2020, 03:58 AM -
#1
Hello all thank you for reading. I followed the instructions on the wiki here:

https://wiki.rpcs3.net/index.php?title=H....27s_Souls

And replaced PPU id with one from RPCS3.log and put it patch.yml like this:

Code:
PPU-60035666cb9c76c41bf9fe7cd76d2316a6755077: # BCJS30022
# Set 60FPS with no frameskip
# by Gibbed
  - [ be16, 0x25ed8, 0x981f ]

# delta time
# by Whatcookie
  - [ be32, 0x0001b964, 0x496ac2cd ] # jump to code cave

# get mftb
  - [ be32, 0x016c7c30, 0x7eac42e6 ] # mftb r21              // Move from timebase register (clock)

# get mftb delta
  - [ be32, 0x016c7c34, 0x3ec00185 ] # lis r22,0x0185        // load high bits of address
  - [ be32, 0x016c7c38, 0x3ad62608 ] # addi r22,r22,0x2608  // load low bits of address
  - [ be32, 0x016c7c3c, 0x7e96a02a ] # ldx r20,r22,r20      // load previous frames mftb reading
  - [ be32, 0x016c7c40, 0xfab60000 ] # std r21,0x0(r22)      // store this frames mftb reading
  - [ be32, 0x016c7c44, 0x7e74a850 ] # subf r19,r21,r20      // subtract previous mftb reading from this mftb frames reading

# mftb delta to float
  - [ be32, 0x016c7c48, 0xfa760018 ] # std r19,0x18(r22)    // store mftb delta (to be loaded into FPR)
  - [ be32, 0x016c7c4c, 0xcbd60018 ] # lfd f30,0x18(r22)    // load mftb delta into FPR
  - [ be32, 0x016c7c50, 0xffc0f69c ] # fcfid f30,f30        // convert integer to double
  - [ be32, 0x016c7c54, 0xffc0f018 ] # frsp f30,f30          // round to single precision

# mftb delta to seconds
  - [ be32, 0x016c7c58, 0x3e40016c ] # r18,0x16c            // load high bits constants pointer
  - [ be32, 0x016c7c5c, 0x3a527c30 ] # addi r18,r18,0x7c30  // load low bits of constants pointer
  - [ be32, 0x016c7c60, 0xc3b20054 ] # lfs f29,0x54(r18)    // load timebase frequency constant
  - [ be32, 0x016c7c64, 0xc3920058 ] # lfs f28,0x58(r18)    // load maximum timestep size
  - [ be32, 0x016c7c68, 0xeffee824 ] # fdivs f31,f30,f29    // divide timebase delta by timebase frequency

# check timestep size
  - [ be32, 0x016c7c6c, 0xff9fe000 ] # fcmpu cr7,f31,f28    // compare current delta time to maximum timestep
  - [ be32, 0x016c7c70, 0x419c0008 ] # blt +0x08            // don't return the maximum timestep size

# set maximum timestep
  - [ be32, 0x016c7c74, 0xffe0e090 ] # fmr f31,f28          // move maximum timestep to be returned

# cleanup
  - [ be32, 0x016c7c78, 0x7e94a278 ] # xor r20,r20,r20      // zero r20
  - [ be32, 0x016c7c7c, 0x7e94a278 ] # xor r19,r19,r19      // zero r19
  - [ be32, 0x016c7c80, 0x4e800020 ] # blr                  // return

# constants
  - [ be32, 0x016c7c84, 0x4c989680 ]  # timebase frequency as hexfloat (80mhz)
  - [ bef32, 0x016c7c88, 0.05000000 ] # maximum timestep size (50ms or 20FPS)

However the game still runs at 30fps cap. Does anyone have idea of what is wrong? I attached RPCS3 log. Thank you!


Attached Files
.7z   RPCS3.7z (Size: 596.35 KB / Downloads: 15)
Ani
Administrator
*******


16
4,390 posts 107 threads Joined: Aug 2017
05-04-2020, 07:57 PM -
#2
It means the EBOOT is different and a different patch is needed
    Desktop: Ryzen 7 5800X,   Radeon RX 6800 XT, 2x8G DDR4 3600MHz, Manjaro Linux
     Laptop: Ryzen 9 5900HX,  Radeon RX 6700M,   2x8G DDR4 3200MHz, Manjaro Linux
Old Desktop: AMD FX-8350,     Radeon R9 280X,    2x4G DDR3 1600MHz, Manjaro Linux
onkeh
Member


0
50 posts 10 threads Joined: May 2020
05-06-2020, 01:32 AM -
#3
I realize missing patch 1.04! Installed and updated PPU, now just white screen and emulation hangs on start up!

New PPU hash: PPU-68544b29e92609ccb2710f485ae7708e4cb35df1

Screenshot attached
This post was last modified: 05-06-2020, 01:34 AM by onkeh.


Attached Files Thumbnail(s)
   

.7z   RPCS3.7z (Size: 109.29 KB / Downloads: 14)
Ani
Administrator
*******


16
4,390 posts 107 threads Joined: Aug 2017
05-06-2020, 05:33 AM -
#4
Different executables have different memory locations, if you use a patch for one executable in a completely different executable you're going to patch a random area of the code and very likely break something completely at random
    Desktop: Ryzen 7 5800X,   Radeon RX 6800 XT, 2x8G DDR4 3600MHz, Manjaro Linux
     Laptop: Ryzen 9 5900HX,  Radeon RX 6700M,   2x8G DDR4 3200MHz, Manjaro Linux
Old Desktop: AMD FX-8350,     Radeon R9 280X,    2x4G DDR3 1600MHz, Manjaro Linux


Forum Jump:


Users browsing this thread: 3 Guest(s)