Post Reply 
 
Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
I want to learn how to create 60FPS patches for PSP games that run at 30FPS correctly
10-06-2023, 10:38 AM
Post: #2
RE: I want to learn...
If you just need a quick answer about our "pointers" you asked in the end, skip to the bold text, spoiler - it's not really pointers.

You'll never be able to find a guide that holds your hand and allows you to create any game patch from just following it, that's because every game works differently and while some of them share similarities, especially when running on same engine what you really need is an open mind, curiosity to figure out how the game works, experience in low level programming(MIPS) and tools.

For tools, you really don't need anything else but PPSSPP, but you also need a functional debugger, so even with remote debugger android is pretty bad choice, but any PC platform is probably fine with best probably being windows, but the rest is all on you.

The code for Burnout Dominator isn't any more correct than the code for The Warriors. Some games requires patching just one opcode, others need to patch more functions or variables that correct some logic or physics if they are tied to FPS.
In some cases there's just too much to patch other than the FPS for the game to work correctly and it might not be worth the effort especially since most PSP games aren't fast paced nor competitive and at that point in time if a game doesn't have a functional FPS patch it's probably the latter, unless it's really rare and nobody even tried.


I can't tell how other people's work, but I can easily guess that if a cheat code changes some game code, the person most likely used PPSSPP disassembly and even through it also patches some variables, their addresses could also be found by following the game's code, althrough it's also an option to blindly search for it based on experience of commonly used values.

As for pointers... when creating cheats or patches it's really important to stop thinking about pointers. You need pointers like those nasty 0x6 cwcheat code types which nobody should ever care about to cover your ass when patching temporary variables stored in memory, nobody does that nowadays since it's inefficient and wasteful, I mean sure, some cheating tutorials online can teach it, but just look around, it's only used by newbies. Everyone else just patch the game code which sets those variables in the first place or the code that uses them to make things happen. Not only your cheat will look nicer, it'll also work better since it will never have to race against the game to do anything and pray no external factors like savestates or differences between emulator versions exist, patching the game to do all the work is always better. So instead of searching for pointers for temporary variables or even instead of being happy that some value is always stored at address X, you use disassembly and set a breakpoint at the memory that stores the value you found and find out which game function writes or reads that variable, then just modify it to do what you want to achieve instead. Pretty much the same thing applies to modern cheating in PC games althrough you then you're needing AMD64 instead of MIPS knowledge and for pc games you typically have to use a pattern scan even for game code, in PSP games it's much simpler as it loads in one place on boot and stays there so we only use a test code type to check for compatible game version and then simple 32 bit writes. There are some games that might load or unload modules, but it's not that interesting for neither cheats nor fps patches.

There are some other techniques like disabling JIT(due to it's tricks and optimizations) if you want to look through the game code through external tools, but that's just in the land of personal preference.


Either way if you're serious about learning, you should start by learning MIPS and afterwards observe and try to understand how games work as those are the basics. You can patch things quickly by luck and guessing, but unless you understand how something works, you can't change how it works properly and without some experience gained first hand you will not really do any guesswork either or at least spend much more time on it than needed.
As for resources for better guides, PC cheating scene surrounding Cheat Engine might be ideal as while the language differs (x86 or AMD64 in PC vs MIPS in PSP) the principals are the same, cheating PC games is often more complex as anti-cheat and anti-tamper code is common on PC, but it shares a lot of similarities which makes PSP cheating very easy afterwards.

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: I want to learn... - LunaMoo - 10-06-2023 10:38 AM

Forum Jump: