Post Reply 
 
Thread Rating:
  • 7 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Discussion] 60FPS patches for PSP games that run at 30FPS
03-20-2015, 02:08 PM (This post was last modified: 03-25-2015 01:18 AM by LunaMoo.)
Post: #366
RE: 60FPS patches for PSP games that run at 30FPS
@Goshorai well patches can be long because asm code just ends up visually long as it's very basic and when you don't have room to place your code inside game functions you also have to jump to a code cave(basically a part of memory which is always empty ~ I usually use 0x08800000-0x08804000) and return keeping opcode replaced with jump as well which makes it even longer. It's not a problem for the game, because what seems visually long is actually still very short and executed instantly, it might be a problem for ppsspp cheat engine which can cause random freeezes refreshing long asm codes but 0xE type code is there to avoid it by making sure it's patched only once.

Black screen, freezes, crashes, when you're experimenting with things instead of properly checking everything is pretty normal and experimenting is probably the only way until you learn a bit of mips assembly and learn what syscalls you're patching do and what parameters they might take(I don't think I mentioned that earlier other than linking to some pdf, but parameters are stored in "a" while return values in "v" registers), nopping stuff is not exactly safest way around;3.
Disassembly itself is not exactly an isle of stability, but your problem is not related to that, you either broke the way game displays graphics or pushed the code into an endless loop. You'll just have to find a different way.

Probably best way to understand what's happening is setting a breakpoint on the start of the function, or at least before the place we're interested and click "step into" while observing how instructions are executed and what happens with registers they're messing with. For simpler opcodes it might be easier way to learn what they do by observing that way than reading some documents which are usually written in very complex/scientific language. With time you start seeing things more naturally.

I didn't really thought about patching all my collection, don't really plan anything, if I see any more game which I can patch I will. And I don't want anyone to think game x is too hard because I or someone else was not able to do it, humans are just humans, what one misses can be obvious for another, just have to try.
Changing speed which is required in most games, might be sometimes a challange, maybe even like trying to find a needle in a haystack and I guess noone is interested in sitting there and manually tracing the code trying to find out everything he needs to patch it. But that's not the only way, we can always think about other ways, I didn't really gave up completely on any game, I just for the time being don't have any more ideas how to burn that hay or magnet out that needle in games like MH.:|



@cybercjt Sorry only E2, but if you tried and the patch doesn't work in E1, it's same game definitely differs less from E2 than VCIII from VCIITongue, so at worst it's probably just a slight difference in address, you could check those three addresses in disassembly: 0x08BA99B0, 0x08847CC0 and 0x08847FC0 and look up and down a few pages until you see same things as:
   
(decreased color pallete to keep size low as it's not important, you'll see different ones anyway)
Then just copy addresses of those lines you find in your and replace them in the cheat, values should be same except for disable code which if you want you'll have to right click on jal zz_sceDisplayWaitVblankStartCB and "copy instruction (hex)" then paste it instead of "0E32665A" in the disable code. Also after doing all of that you can remove "_L 0xE.." line completely, it shouldn't be needed for short cheats anyway, I just got used to it and add it automatically to all my cheats from some time;p.

Edit:
Code:
_S NPJH-50721
_G Frontier Gate Boost+ (v1.01)
_C0 60 fps
_L 0xE0010000 0x101202F0
_L 0x201202F0 0x00000000
//Will probably not work in non-updated game;3.
_C0 60 fps [Disable]
_L 0x201202F0 0x5660FFF6
Another Edit:
Code:
_S UCES-01327
_G Mod Nation Racers
_C0 60 fps
_L 0xE001001E 0x001B5F48
_L 0x201B5F48 0x00000000
_C0 60 fps [Disable]
_L 0x201B5F48 0x14C0001E


Next day edit:
Made it as a proof of concept, just to show that it is possible to patch any game to 60 fps and how much stuff has to be patched to make it for those mh games;c. Cannot be easily ported to other MH games except for the fps unlock itself because life happens it's also likely imperfect althrough playable and very smooth, for now I'm taking a break. Those games are really bothersome to patch, not sure if I repeat that, so I picked 2nd G as it has most content and was easier than 3rd HD from which I started and gaved up a few times earlier;p. Now nobody can say "it's impossible" so good luck patching other games:3.
Code:
_S ULJM-05500
_G Monster Hunter Portable 2nd G
_C0 60 fps
_L 0xE018DD18 0x000590C0
_L 0x200590C0 0x0A20080B
_L 0x200590C4 0x3C0808B5
_L 0x2000202C 0x8D095654
_L 0x20002030 0xAC64DD18
_L 0x20002034 0x51200002
_L 0x20002038 0x34030000
_L 0x2000203C 0x28830002
_L 0x20002040 0x0A216432
_L 0x2006DFC4 0x0A200800
_L 0x2006DFC8 0x00651823
_L 0x20002000 0x3C170880
_L 0x20002004 0x8EFB1FFC
_L 0x20002008 0x13600003
_L 0x2000200C 0x277B0001
_L 0x20002010 0x00651821
_L 0x20002014 0x277BFFFE
_L 0x20002018 0x04610002
_L 0x2000201C 0xAC830010
_L 0x20002020 0xAC800010
_L 0x20002024 0x0A21B7F5
_L 0x20002028 0xAEFB1FFC
_L 0x200D8740 0x3C023F80
_L 0x200871A0 0x2403FDC1
_L 0x200871A4 0x2403023F
_L 0xE0054000 0x012A9D68
_L 0x212A9D68 0x3C023F80
_L 0x212A5FC8 0x3C033FA0
_L 0x212A5FDC 0x3C033FA0
_L 0x212A9FC8 0x3C033F80
_L 0x212B7460 0x3C023F80
_L 0xE00E4000 0x0129E4C0
_L 0x2129E4C0 0x3C033F80
_L 0x2129E49C 0x3C033F80
_L 0x2129FD9C 0x3C033F80
_L 0x2129E4C4 0x3C033FD9
_L 0x2129FDA0 0x3C033FD9
_L 0x212612B0 0x3C023F80
_L 0x2126297C 0x3C033F80
_L 0x21299508 0x3C023FA0
_L 0x21299534 0x3C023FA0
_L 0x21299560 0x3C023FA0
_L 0x2126397C 0x3C033F80
_L 0x21270CD4 0x3C023F80
_L 0x21270CB4 0x3C023F80
_L 0x21270C9C 0x3C023F80
_L 0xE0054000 0x012C1968
_L 0x212C1968 0x3C033F80
_L 0x212C1C34 0x3C023F80
_L 0x212C1DC4 0x3C023F80
_L 0x212C6810 0x3C023F00
_L 0x212C6838 0x3C023F80
_L 0xE0101821 0x0126552C
_L 0x2126552C 0x0A200813
_L 0x21265530 0x00701821
_L 0x2000204C 0x3C1F0880
_L 0x20002050 0x8FFB2048
_L 0x20002054 0x2E1E0004
_L 0x20002058 0x17C00005
_L 0x2000205C 0x2E1EFFFC
_L 0x20002060 0x13C00003
_L 0x20002064 0xA623055A
_L 0x20002068 0x0A69954D
_L 0x2000206C 0xAFFB2048
_L 0x20002070 0x1360FFFC
_L 0x20002074 0x277B0001
_L 0x20002078 0x00701823
_L 0x2000207C 0x277BFFFE
_L 0x20002080 0x1000FFF8
_L 0xE00A0362 0x0129D8CC
_L 0x2129D8CC 0x0A200823
_L 0x2000208C 0x3C020880
_L 0x20002090 0x8C5B2088
_L 0x20002094 0x13600003
_L 0x20002098 0x277B0001
_L 0x2000209C 0x2463FFFF
_L 0x200020A0 0x277BFFFE
_L 0x200020A4 0xAC5B2088
_L 0x200020A8 0x0A6A7635
_L 0x200020AC 0x34020362
_L 0xE005400C 0x012AD2F4
_L 0x212AD2F4 0x3C033F8C
_L 0x212AD474 0x3C033F8C
_L 0x212AD548 0x3C023F80
_L 0x212AE180 0x3C023F80
_L 0x212AE474 0x3C043F80
_L 0xE0034000 0x013029CA
_L 0x213029C8 0x3F800000
_L 0x213029CC 0x3FC00000
_L 0x213029D0 0x40000000
_L 0xE0023FCC 0x01299FFC
_L 0x21299FFC 0x3C023F4C
_L 0x2129A010 0x3C023FA0
_L 0xE00D082C 0x100D8764
_L 0x200D8764 0x0A20082C
_L 0x200D8768 0x3C023F80
_L 0x200020B0 0x3C1B090B
_L 0x200020B4 0x8F63F21C
_L 0x200020B8 0x3C1B43FA
_L 0x200020BC 0x147B0002
_L 0x200020C4 0x3C024000
_L 0x200020C8 0x0A2361DB
_L 0x200020CC 0x44820800
_L 0x200D4584 0x2841003C
_L 0x200D458C 0x28410078
_L 0x200D459C 0x284100A0
_L 0x2006B3AC 0x240204B0
_L 0xE001005A 0x0139D274
_L 0x2139D274 0x240200B4
_L 0xE00C0005 0x012D8BF8
_L 0x212D8BF8 0x0A200835
_L 0x212D8BFC 0x3C1B0880
_L 0x200020D4 0x8F6420D0
_L 0x200020D8 0x10800003
_L 0x200020DC 0x24840001
_L 0x200020E0 0x24420001
_L 0x200020E4 0x2484FFFE
_L 0x200020E8 0xAF6420D0
_L 0x200020EC 0x18400003
_L 0x200020F0 0xAE220414
_L 0x200020F4 0x0A6B6300
_L 0x200020FC 0x0A6B6304
_C0 60 fps [Disable]
_L 0x200590C0 0xAC64DD18
_L 0x200590C4 0x28830002
_L 0x200D8764 0x3C024000
_L 0x2006DFC4 0x00651823
_L 0x2006DFC8 0x04610002
_L 0x200D8740 0x3C024000
_L 0x200871A0 0x2403FB82
_L 0x200871A4 0x2403047E
_L 0xE0053F80 0x012A9D68
_L 0x212A9D68 0x3C024000
_L 0x212A5FC8 0x3C034020
_L 0x212A5FDC 0x3C034020
_L 0x212A9FC8 0x3C034000
_L 0x212B7460 0x3C024000
_L 0xE00E3F80 0x0129E4C0
_L 0x2126297C 0x3C034000
_L 0x21299508 0x3C024020
_L 0x21299534 0x3C024020
_L 0x21299560 0x3C024020
_L 0x2126397C 0x3C034000
_L 0x21270CD4 0x3C024000
_L 0x21270CB4 0x3C024000
_L 0x21270C9C 0x3C024000
_L 0x2129E4C0 0x3C034000
_L 0x2129E49C 0x3C034000
_L 0x2129FD9C 0x3C034000
_L 0x2129E4C4 0x3C034059
_L 0x2129FDA0 0x3C034059
_L 0x212612B0 0x3C024000
_L 0xE0053F80 0x012C1968
_L 0x212C1968 0x3C034000
_L 0x212C1C34 0x3C024000
_L 0x212C1DC4 0x3C024000
_L 0x212C6810 0x3C023F80
_L 0x212C6838 0x3C024000
_L 0xE0020813 0x0126552C
_L 0x2126552C 0x00701821
_L 0x21265530 0xA623055A
_L 0xE0010823 0x0129D8CC
_L 0x2129D8CC 0x24020362
_L 0xE0053F8C 0x012AD2F4
_L 0x212AD2F4 0x3C03400C
_L 0x212AD474 0x3C03400C
_L 0x212AD548 0x3C024000
_L 0x212AE180 0x3C024000
_L 0x212AE474 0x3C044000
_L 0xE0033F80 0x013029CA
_L 0x213029C8 0x40000000
_L 0x213029CC 0x40400000
_L 0x213029D0 0x40800000
_L 0xE0023F4C 0x01299FFC
_L 0x21299FFC 0x3C023FCC
_L 0x2129A010 0x3C024020
_L 0xE0063F80 0x100D8764
_L 0x200D8764 0x3C023F80
_L 0x200D8768 0x44820800
_L 0x200D4584 0x2841001E
_L 0x200D458C 0x2841003C
_L 0x200D459C 0x28410050
_L 0x2006B3AC 0x24020258
_L 0xE00100B4 0x0139D274
_L 0x2139D274 0x2402005A
_L 0xE0020835 0x012D8BF8
_L 0x212D8BF8 0x18400005
_L 0x212D8BFC 0xAE220414
Tested only in few quests which I didn't even finish, just wanted to see monsters/bosses speed, felynes and npc's which all are hopefully ok. Also I used english patch for that one, doubt it changes anything that was patched, mentioning just in case since if it does affect it;3.
Edit: changelog - fixed lots of small activities which had double speed, stamina consumption/regen and camera control
Update: - fixed climbing speed, GS charge speed, also decided to force 2x speed in old cave during mining animation since for now it's the only way I could sync it, body disappearing timer and 20s to quest finish timer, I don't think I'll bother with correcting 2 minutes after quest ends since 1 minute is more than enough time.
Things left? Probably, because this game loves to piss me off with how it's doing everything, to the point I want to give up on 3rd completely, every time I patch something I notice something else while testingTongue. Most of the time it's not even hard, just bothersome and boring.

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: 60FPS patches for PSP games that run at 30FPS - LunaMoo - 03-20-2015 02:08 PM

Forum Jump: