Post Reply 
 
Thread Rating:
  • 7 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Discussion] 60FPS patches for PSP games that run at 30FPS
04-13-2015, 06:00 AM (This post was last modified: 04-13-2015 06:07 AM by LunaMoo.)
Post: #440
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS
@Kabuto_Kun didn't tried FFCC yet, nor I knew it uses same engine, through that would explain why both of those games had the "fake 60 fps" modes. It probably can't be easily ported considering how different those games are, but likely the knowledge from one will be usefull in another.
I'll probably spend more time on FFT0 before even looking at it, since I still have problems improving or even finding some things, like for example the timed event that controls the character animation and camera at the very start of the game which might as well be one of a kind and can be skipped by pressing start/X, but looks pretty bad when allowed to run.


About speed modifiers, a slightly bigger list of some common values I see which might be worth to search for: 0x3F800000, 0x40000000, 0x41f00000, 0x42700000, 0x3d088888 and maybe also 0x3D08AB86.
However changing those in cheat engine might not do anything, since those values are often re-set or re-calculated every single frame in which case you can try changing the code that sets it. Using cheat engine for that is far from ideal, but still because it's usually done by lui opcode might be usefull. You can use aob scan to search for something like "xx xx ?? 3C" where xx xx is first 2 bytes of the values above reversed, ?? is a wildcard because we have no clue what registers it sets and 3C basically says it's an lui opcode. For example search for 80 3F ?? 3C then add all results where ?? is a small number to the cheat table, select all of those entries and change type from aob 4 bytes to aob 2 bytes which in this example would leave just 80 3F.
Then you can enter cheat menu, mass change those values in cheat engine to half(in case of 0x41f00000 and 0x42700000 you should actually try double instead since it's part of equations like 1/30, 2/60 where we want to make the result smaller) ie half of 80 3F would be 00 3F since it's just part of an opcode which would set a float value of 0x3F800000(1.0), and then leave cheat menu. The entering/leaving cheat menu is required to clear jit and make our change reach the game, however can be skipped if you do it with disabled jit.

Just a note that any blind search which includes mass search is not safe, game or even whole ppsspp might crash easily, also game is free to do whatever it wants and none of those might bring any result, through I don't know if there's much more to do with cheat engine itself.
Generally finding constants is all about trying to guess what game does so being open to crazy or even stupid ideas can help here. With a bit of asm and way around ppsspp disassembly we can do even more before running out of ideas, for example just observe fpu registers in random places and trace it back if we find a potentially interesting value being passed. Or instead of searching for constants, we can search for variables that can be affected in-game like for example character movement speed which is much easier and once we find it, checking what function changes or reads that value, even if by itself it could be pointless or just part of what we have to change in one of those more bothersome games, might as well find other value of interest being passed through this function as movement speed and animation speed are closely related if not often dependant of each other.

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
Post Reply 


Messages In This Thread
RE: [Discussion] 60FPS patches for PSP games that run at 30FPS - LunaMoo - 04-13-2015 06:00 AM

Forum Jump: