Post Reply 
 
Thread Rating:
  • 7 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Discussion] 60FPS patches for PSP games that run at 30FPS
03-28-2015, 09:55 PM (This post was last modified: 11-21-2016 09:46 AM by Kabuto_Kun.)
Post: #406
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
Introduction.

After I found FPS unlocking cheats for some games, I noticed a pattern, probably derived from common practices from game developers. A lot of the games I tested have an address somewhere in RAM that sets the game FPS with only a single value, think about it like it's an internal frameskip, where if the game is running at 60 FPS the value of such address is 1 (60/1=60), 2 for 30 FPS (60/2=30), 3 for 20 FPS (60/3=20) and so on, so this is the first thing I try with a game to unlock its framerate. Another common pattern to consider is 0 as a value when the game is running at 60 FPS and 1 when it runs at 30 FPS, probably a boolean value for an ON/OFF framelimit.

The problem is that sometimes even when the games are unlocked, they run at double speed and need some extra fixes to be played at normal speed, like combining these FPS cheats with slowmotion/gamespeed codes, which generally are FLOAT values, like 1.0 (0x3F800000 as hex) or fractions (like 0.5, 0x3F000000 as hex) that we have already available for a lot of games, just search them on Google.

However, not all games need these extra speed fixes and just by finding this frameskip address we can perfectly unlock its FPS. I have even used this tutorial with games from other consoles (PS1, PS2, N64, Dreamcast, Gamecube, Wii) and it have worked with some games from each of them, so it's widely useful not just for PSP games if you know how to adapt this tutorial.

This is how I find the 60 FPS codes for these "easy" games, so let's call it "easy method"; for this specific example for the tutotial, I am using the PSP version of NFS Undercover in its EUR region (ULES-01145).

Tutorial.
Part 1: PPSSPP steps.

Run PPSSPP (x86 version is a LOT better option for this tutorial), go to options, set Show FPS counter to Both (to see the internal FPS as reported by PPSSPP), set the PSP model to PSP1000 and disable Fast memory (this change is very important, if you keep this option enabled PPSSPP will crash a lot while you use Cheat Engine).

Now the first thing we need is the PSP memory range for Cheat Engine. Boot the game you want to try and then quickly pause emulation (you can press F8), enable the PPSSPP debug console (you must enable debug logging to be able to use it) and one of the first lines you can see on its window looks like this:

Code:
20:34:158 MemMap.cpp:328 I[MM]: Memory system initialized. RAM at *08E20000* (mirror at 0 @ 10C00000, uncached @ 10C00000)

To that first RAM address I hightlighted with the *, add 800000 to it as hex (you can use any hexadecimal calculator for this, windows calculator can do it). For this example the result is: 08E20000 + 800000 = 09620000 (this is the PSP game memory start address for cheat engine). To this address then we add 1800000 (equivalent to 24MB, PSP1000 RAM size), now the result is: 09620000 + 1800000 = 0AE20000 (this is the PSP game memory end address, the stop address for cheat engine).

Keep PPSSPP open and now proceed to Cheat Engine.

Part 2: Cheat Engine steps.

Important: In Cheat Engine you must go to Edit > Settings > Scan settings, then enable the MEM_MAPPED option, otherwise the memory scans will not work with PPSSPP.

   

In Cheat Engine, select the PPSSPP process by clicking the red/green colored button (the one with a PC icon).

See closely the image of Cheat Engine above and read the next descriptions for each field according to the numbers shown on the screenshot:

1- We write here the value equivalent to the FPS that the game is running at the moment when we press the search button:
- For the internal frameskip pattern: 60(FPS)= 1 (< value for Cheat Engine), 30=2, 20=3 ...
- For the framelimit ON/OFF pattern: 60(FPS)= 0 (< value), 30= 1.
NFS Undercover uses the internal frameskip pattern, so as the game always runs at 30 FPS then it has a value of "2", we will search it.

2- We write the addresses we calculated above from PPSSPP, start and stop.

3- Let the game running (unpause it) and do your first search with "New Scan", then a few times more with "Next Scan" while playing the game for some minutes at different places so we can decrease the results (use Unchanged value as Scan type if the FPS keeps being the same while you search, like in the example for this tutorial; or use Changed value too when it changes to different FPS between searches). After some minutes, I finally decided to stop when I had 6170 results.
Now we select a bunch of these results, right click them and click "add selected addresses to the addresslist", then they will be in the address list (down). After this, we can delete the addresses from the upper list so we decrease the list size while testing.

4- I recommend to save a savestate for the game before you start testing and load it frequently if you notice the game starts showing any kind of problem, instability or graphical glitches. Now we start to change the values in groups but beware, the game may freeze with all the random value changes we are doing, that's why we must disable Fast memory in PPSSPP, but if it still freezes we need to know what addresses we changed to continue from there, read the Useful Tip if this happens to you, if not then just go to step 5 from here.

Useful Tip: PPSSPP has dynamic memory addresses so it changes the PSP RAM start address every time you boot a game. You can calculate an offset so when you need to close the emulator (or it freezes) you can continue later from there without having to start over, for example:

*Your start address is 0AD70000 (1st Cheat Engine start) at you first try with a game, then after some changes the game freezes and the last address you changed a value in CE was around 0B570201. When you start the game for a second time, after doing again the steps of the tutorial now your new initial start address is 09620000 (2nd time CE start); you can subtract the smaller start address from the larger: 0AD70000 – 09620000 = 1750000(this is the offset) and then you subtract this offset from the last address you changed before the freeze: 0B570201 - 1750000 = 09E20201 (this would be your start address for Cheat engine if you want to continue from where you were before the freeze, and your stop address would be the usual, 09620000+1800000, based on your 2nd time CE start).*

5- Keep changing the values from "2" (30FPS) to "1" (60FPS, see next image) until we see the green FPS counter in PPSSPP change to 60 FPS.

   

6- When you see the green FPS counter in PPSSPP changing to 60FPS while changing a group of values, keep testing them in smaller groups until you identify the exact address that is changing the game FPS. In this example it was the address 09EAC03C as shown in Cheat Engine. We decrease this one by the game memory start address: 09EAC03C - 09620000 = 0088C03C (this is the CW cheat address, which MUST be 8 characters long and if it's not, then add zeroes on the left until it is).

When we put this adjusted address on the .ini file for PPSSPP, we must replace the first of the 8 characters with a "2" (always this same number for 32bits/4 bytes writes, check CW CHEAT code types for more info), so in this case our final address is 2088C03C.

Now, this is how our final CW CHEAT .ini file should look like:
Code:
_S ULES-01145
_G Need For Speed Undercover [EUR]
_C0 60 FPS
_L 0x2088C03C 0x00000001
_C0 30 FPS [Default]
_L 0x2088C03C 0x00000002
_S: Game ID (optional line, but recommended).
_G: Game name (optional line, but recommended).
_C0: Cheat label/title.
_L: Cheat line. The first part is the address we calculated above and the second part is the value for it (1 for 60 FPS). Both parts MUST be 8 characters long so add zeroes on the left (if needed) until they both are.
You should include a cheat containing the original values too, so it can be used to disable the cheat anytime, which can be specially helpful with not so perfect codes.

That's all you need to do, not that hard right? Big Grin

Please don't quote this post, I will edit it later. I hope it is easy enough to understand, but if you have any questions just post them here.

goo.gl/kNOhTz : 60FPS master list, Mar. 2017 ; Reddit /u/Kabuto_Kun
forums.ppsspp.org/showthread.php?tid=4799&pid=105128#pid105128 : Unlock FPS in PSP games ("easy method")
forums.ppsspp.org/showthread.php?tid=4799&pid=123500#pid123500 : Permanently patch a PSP game with CW cheats.
Find all posts by this user
Quote this message in a reply
03-28-2015, 11:17 PM (This post was last modified: 03-28-2015 11:18 PM by GamerzHell9137.)
Post: #407
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@Kabuto_Kun

Thanks for that.
I tried it but it didn't work.

So i've dled 32 bit version and found in the debug console the RAM address.

[Image: 91ac86b2a9.png]

0A8D0000+800000=b0d0000 then b0d0000 + 1800000 = c8d0000

After which i un-pause the game and scan it with cheat engine. Thing it that it doesn't find anything. Any reason why?

[Image: c086720e24.png]
Find all posts by this user
Quote this message in a reply
03-29-2015, 02:14 AM (This post was last modified: 03-29-2015 02:18 AM by Kabuto_Kun.)
Post: #408
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
(03-28-2015 11:17 PM)GamerzHell9137 Wrote:  @Kabuto_Kun

Thanks for that.
I tried it but it didn't work.

So i've dled 32 bit version and found in the debug console the RAM address.

*IMG*

0A8D0000+800000=b0d0000 then b0d0000 + 1800000 = c8d0000

After which i un-pause the game and scan it with cheat engine. Thing it that it doesn't find anything. Any reason why?

*IMG*

I think it's unlikely that you did not get any results in the first search.

I forgot something important that may be related to your problem, in cheat engine you must go to edit > settings > scan settings, then enable the MEM_MAPPED option, otherwise it will not work with PPSSPP.

goo.gl/kNOhTz : 60FPS master list, Mar. 2017 ; Reddit /u/Kabuto_Kun
forums.ppsspp.org/showthread.php?tid=4799&pid=105128#pid105128 : Unlock FPS in PSP games ("easy method")
forums.ppsspp.org/showthread.php?tid=4799&pid=123500#pid123500 : Permanently patch a PSP game with CW cheats.
Find all posts by this user
Quote this message in a reply
03-29-2015, 02:57 PM (This post was last modified: 03-29-2015 04:47 PM by stranno.)
Post: #409
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
Thanks for the tutorial Kabuto_Kun, its crystal clear.

[Image: MhPfSVq.jpg]

I made a patch for Gangs of London (UCES00113).

Quote:_C1 Force 60 FPS
_L 0x2026F678 0x00000001
_C0 Force 30 FPS
_L 0x2026F678 0x00000002
_C0 Force 20 FPS
_L 0x2026F678 0x00000003

[Image: E0XNwHZ.jpg]

Another, Need for Speed Pro Street (ULES01019).

Quote:_C1 Force 60 FPS
_L 0x207BB79C 0x00000001
_C0 Force 30 FPS
_L 0x207BB79C 0x00000002
_C0 Force 20 FPS
_L 0x207BB79C 0x00000003

No luck with Shift atm, i will try later.

[Image: VQmTwvU.jpg]

Motorstorm Arctic Edge (UCES01250). Unfortunately it works too fast. I dont know if posting the value will help for a fix, but here is.

Quote:_C1 Force 60 FPS
_L 0x202794A8 0x00000001
_C0 Force 30 FPS
_L 0x202794A8 0x00000002
_C0 Force 20 FPS
_L 0x202794A8 0x00000003
Find all posts by this user
Quote this message in a reply
03-29-2015, 04:16 PM
Post: #410
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
Thanks, added to the Master List.
Ohh and i've tried with Gitaroo Man and it has like 3000 lines, that really IS a lot time consuming lol.
Find all posts by this user
Quote this message in a reply
03-29-2015, 04:43 PM
Post: #411
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@Kabuto_Kun, Thank you for the tutorial. I am trying it for Monster Hunter Portable 3rd(PSP version), but it doesn't seem be affected by one single address. And looking back at LunaMoo's patch for MHP3rd HD, it doesn't seem to be that simple.
I know it is a lot of work but hopefully you or @LunaMoo will create a patch for MHP3rd PSP version Smile
Find all posts by this user
Quote this message in a reply
03-29-2015, 10:32 PM (This post was last modified: 03-29-2015 10:35 PM by Kabuto_Kun.)
Post: #412
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
(03-29-2015 02:57 PM)stranno Wrote:  Motorstorm Arctic Edge (UCES01250). Unfortunately it works too fast. I dont know if posting the value will help for a fix, but here is.

Quote:_C1 Force 60 FPS
_L 0x202794A8 0x00000001
_C0 Force 30 FPS
_L 0x202794A8 0x00000002
_C0 Force 20 FPS
_L 0x202794A8 0x00000003

I don't have Motorstorm Arctic Edge now, but if the game is double speed at 60FPS, there are gamespeed/slowmotion cheats available for it (UCES01250). Please test the following cheat codes and change the values if is needed to slow down the game internally to 50%, then the game will run at 60 FPS with normal gameplay speed:

Quote:_S UCES-01250
_G Motorstorm Arctic Edge [EUR]
_C0 Even Quicker Game
_L 0x08A9EAB8 0x3D48AB86
_C0 Hyper Mode
_L 0x08A9EAB8 0x3D88AB86
_C0 Normal Speed
_L 0x08A9EAB8 0x3D08AB86
_C0 Quicker Game
_L 0x08A9EAB8 0x3D28AB86
_C0 Slow Motion
_L 0x08A9EAB8 0x3CC8AB86
_C0 Super Slow Motion
_L 0x08A9EAB8 0x3C88AB86

It's good to see interest in this, thank you guys for all your codes. Tongue

goo.gl/kNOhTz : 60FPS master list, Mar. 2017 ; Reddit /u/Kabuto_Kun
forums.ppsspp.org/showthread.php?tid=4799&pid=105128#pid105128 : Unlock FPS in PSP games ("easy method")
forums.ppsspp.org/showthread.php?tid=4799&pid=123500#pid123500 : Permanently patch a PSP game with CW cheats.
Find all posts by this user
Quote this message in a reply
03-29-2015, 10:55 PM (This post was last modified: 03-29-2015 11:08 PM by darkcloudl.)
Post: #413
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
Thanks for very much for the tutorial @Kabuto_Kun really works.
I use it for dissidia 012 (ULES01505) and i could find the direction to create a patch for this game.

Quote:_S ULES-01505
_G Dissidia 012 Final Fantasy [EUR]
_C1 Force 60 FPS
_L 0x20413aa4 0x00000001
_C0 Force 30 FPS
_L 0x20413aa4 0x00000002
_C0 Force 20 FPS
_L 0x20413aa4 0x00000003

This obviously needs more work but i dont have many spare time (and i want to try the 3rd birthday). If someone wants to improve the patch , feel free to do so.

In case of 60 fps patch there are some elements that go double speed like:

*in game menus and GUI in general
*assists
*summons((?) im not sure XD, the game in general needs more testing)
*EX Burst time counter(maybe the same as menus and GUI)
*maybe more

also the cg stutters(but sounds ok) and the aerial chase not working in some cases(i only test this with tifa's Moonsault Kick).

And sorry for my bad english, is not my native language.
Find all posts by this user
Quote this message in a reply
03-30-2015, 03:19 PM (This post was last modified: 03-30-2015 03:25 PM by stranno.)
Post: #414
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
(03-29-2015 10:32 PM)Kabuto_Kun Wrote:  I don't have Motorstorm Arctic Edge now, but if the game is double speed at 60FPS, there are gamespeed/slowmotion cheats available for it (UCES01250). Please test the following cheat codes and change the values if is needed to slow down the game internally to 50%, then the game will run at 60 FPS with normal gameplay speed:

Blue Screen of the Death on Playstation Portable (through PSTV) and no effect on PPSSPP.
Find all posts by this user
Quote this message in a reply
03-31-2015, 01:27 AM
Post: #415
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@stranno in those Motorstorm Arctic Edge speed cheats, change all _L 0x08A to _L 0x202 and they might work, since the address probably just wasn't in cw cheat format, if that doesn't work, because it's always possible that address in ppsspp is different, you can just search for 0x3D08AB86.

Althrough for me that value which is float 0.033367 doesn't look right and other cheats aren't even accurate multipliers of it.
I usually correct speed in the code by changing constants used in equations and when it's 1/30 the actual result should be 0.033333 which is 0x3D08882F, so for 1/60 = 0x3C88893B and for 1/20 it would be 0x3D4CCCCD, but then again the results itself are usually never written in memory just passed through registers, so those cheats might patch something else like a constant set by game devs. Would be better to set a memory breakpoint on 0x08A9EAB8 and just check what writes it and see if it is a result of some equation in which case just change that without messing with any small numbers, or at least bother to make them proper multipliers if exact speed matters in this game since even very small difference applied to every frame / 60 times per second might end up with quite noticeable differences after a minute or two.

http://forums.ppsspp.org/showthread.php?tid=6594 - Custom PPSSPP Shaders!
http://forums.ppsspp.org/showthread.php?tid=3590&pid=117172#pid117172 - simple CE scripts to help creating CWCheats,
https://github.com/LunaMoo/PPSSPP_workarounds - CWCheat workarounds.
Find all posts by this user
Quote this message in a reply
03-31-2015, 02:55 AM
Post: #416
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
I think 0.033367 is NTSC (which is what the PSP actually runs.) That is, the PSP doesn't run 60 fps, it actually runs 59.94 or so.

http://en.wikipedia.org/wiki/NTSC#Lines_...fresh_rate

If you round it to 1/60, it may work, but there may be occasional flicker. The best number would probably be 0.01668333333.

-[Unknown]
Find all posts by this user
Quote this message in a reply
03-31-2015, 04:13 AM (This post was last modified: 03-31-2015 10:19 AM by LunaMoo.)
Post: #417
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
Oh cool, so most games are actually a bit inaccurate by default.
Then "super slow motion" should be correct for 1.0/59.94 after fixing the address part.

Edit: two more, doesn't change the fact that those games aren't really playable yet, but whatever, maybe at some point they will;p
Code:
_S ULUS-10141
_G Medal of Honor Heroes
_C0 60 fps
_L 0xE001026C 0x0032DF74
_L 0x2032DF74 0x34050001
_C0 60 fps [Disable]
_L 0x2032DF74 0x8E05026C
Code:
_S ULUS-10310
_G Medal of Honor Heroes 2
_C0 60 fps
_L 0xE001026C 0x0033A2AC
_L 0x2033A2AC 0x34050001
_C0 60 fps [Disable]
_L 0x2033A2AC 0x8E05026C

http://forums.ppsspp.org/showthread.php?tid=6594 - Custom PPSSPP Shaders!
http://forums.ppsspp.org/showthread.php?tid=3590&pid=117172#pid117172 - simple CE scripts to help creating CWCheats,
https://github.com/LunaMoo/PPSSPP_workarounds - CWCheat workarounds.
Find all posts by this user
Quote this message in a reply
03-31-2015, 04:00 PM
Post: #418
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@Kabuto_Kun

You said to change the first number to 2.
The number i got is 4e4c90, so its gonna be 2e4c90?

I tried putting it but it didn't work

_L 0x2e4c90 0x00000001
Find all posts by this user
Quote this message in a reply
03-31-2015, 09:39 PM (This post was last modified: 03-31-2015 10:02 PM by Kabuto_Kun.)
Post: #419
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@GamerzHell9137

These addresses and their values must be 8 characters long. If you get an address that is shorter, you pad it with zeroes on the left. So the address you posted above really is 004e4c90 (it needed two extra zeroes), replace the first character with a 2 (you can read cw cheat documentation for more info) and it will be 204e4c90, this is the CW cheat for your code.

Also, I edited the NFS codes I posted before, please update the master list: POST HERE

goo.gl/kNOhTz : 60FPS master list, Mar. 2017 ; Reddit /u/Kabuto_Kun
forums.ppsspp.org/showthread.php?tid=4799&pid=105128#pid105128 : Unlock FPS in PSP games ("easy method")
forums.ppsspp.org/showthread.php?tid=4799&pid=123500#pid123500 : Permanently patch a PSP game with CW cheats.
Find all posts by this user
Quote this message in a reply
03-31-2015, 11:51 PM
Post: #420
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@Kabuto_Kun

Ohh i see, and sure, will do later today cause i should get some sleep.
Find all posts by this user
Quote this message in a reply
Post Reply 


Forum Jump: