Post Reply 
 
Thread Rating:
  • 2 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
11-19-2016, 03:30 AM (This post was last modified: 05-17-2017 09:48 AM by Kabuto_Kun.)
Post: #1
God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Hey guys,
I have made some great performance improvements to God of War Chains of Olympus and Ghost of Sparta, something that was long needed for these games, but let's write some background info first, if you're interested to read them Big Grin .

Introduction.

Both God of War games are very special in how they run on a real PSP, and therefore on PPSSPP too. They always try to render the maximum number of frames possible, even when the game is already running at over 60 FPS.

For a real PSP this is not a problem, as the hardware can not actually reach 60FPS anywhere, but even if at some point it can do it, you wouldn't feel the extra frames because the PSP screen has a 60 HZ refresh rate.

This is the same situation that happens when, for example, you play a PC game at 100FPS using a monitor with a refresh rate of 60 HZ: you will not see any visual difference (you may only get better input response) because the refresh rate is lower than your actual FPS and you will be just burning processing power.

GoW PSP games had been very CPU demanding with emulators since the beginning, and this behavior is the main culprit. PPSSPP runs PSP games with a lot better internal performance than a real PSP, even while using the same PSP CPU speed, so both GoW games are almost always running at higher than 60 FPS in PPSSPP even if you see its green FPS counter always showing 60 FPS as max (this is a PPSSPP limitation).

This is why the option "Prevent FPS from exceeding 60 (speeds up GoW)" was implemented by PPSSPP devs, a workaround to avoid rendering useless frames above 60 FPS, so we can get much better emulation performance. The problem is that this option is not perfect.

Tests.

I can easily tell the difference between different FPS in games, that is why I like so much to play them at 60FPS when possible Tongue .

So while playing any GoW game on PPSSPP, I have always noticed that even when the emulator shows the game to be running at "60 FPS", the game feels like it's running at 40+ or 50+ FPS (like using some kind of forced frameskip), depending on what is happening in gameplay.

After some research about this, I found an address in RAM for both games where a continuously calculated internal FPS value gets stored as a float; the addresses are (in CW Cheat format):
- GoW Chains of Olympus: (UCUS-98653 @0x32D8C0), (NPUG-80325 @0x32FAD8), (NPEG-00023 @0x32FAE8), (UCET-00844/UCES-00842 @0x32D8D0), (UCED-00971 @0x29B390).
- GoW Ghost of Sparta: (UCUS-98737 @0x40EFC0), (UCES-01401/NPEG-00044 @0x410560), (UCES-01473 @0x410600), (NPEG-90035 @0x37ACC0).

Then I wrote a simple assembly code to show the internal FPS value instead of the ingame red orbs indicator, and while playing the game and monitoring the value I noticed some things:

- If you disable the Prevent FPS… option the game can run anywhere from 150+ FPS (ingame) to over 2000+ FPS!! (menus), which causes the bad performance I explained above; if you enable the option, the game is still running at 90+ FPS (ingame) and 300+ FPS (menus), so it is still rendering more frames than it should. The internal FPS you get depends on the CPU speed you have configured in PPSSPP options when you booted the game.

- But there is more, while playing the game with the Prevent FPS option enabled, the higher the internal FPS (the one I found) value is over 60 FPS, the choppier the game runs. So for example, when you play the same scene at 65 vs 85 internal FPS, the games run a lot smoother at the lower speed. This is the forced frameskip I complained above.

If you want to check this by yourself, you can change the PSP CPU speed to some value where the game stays close to 60 FPS but not higher (50+FPS, according to the green FPS counter in PPSSPP) and you will see that the game feels a lot better than the "fixed" 60 FPS you get with a higher CPU speed using normal settings. At this point, it's clear why I said the option is not perfect.

As alternative workarounds for "better" performance, people use PPSSPP frameskip option, which is not a good idea in practice; others just decrease the CPU speed in PPSSPP to ridiculous values (66, 33, even 15mhz Sad ) to make the game "playable", but the end result is just sad: a game randomly jumping anywhere from 10+ to 50+ FPS.

But… I didn't write this post as a complain, this is all about information and, of course, posting a solution Wink .

I managed to limit the internal FPS of both GoW games to a fixed/stable 60 or 30 FPS (your choice) by inserting vblanks (1 for 60FPS and 2 for 30FPS). I'm not totally sure if this was the best way to do it, but AFAIK this is what the game developers should have done in the first place, and it works great so far as you will see.

Performance comparison.

For the next performance comparison, I am running the first level from Chains of Olympus in the the exact same scene with the game paused (like when a hint appears, still running), unlimited emulator speed and using all the same emulator settings unless the changes specified:

[Image: YGnAdirt.png]
IMG1^ No cheat. Prevent FPS: OFF, Internal FPS: 161, CPU speed: 555Mhz, PPSSPP VPS/percentage: 66/108%
- - - - -
[Image: JmoYOEot.png]
IMG2^ No cheat. Prevent FPS: ON, Internal FPS: 87, CPU speed: 555Mhz, PPSSPP VPS/percentage: 117/193%
- - - - -
[Image: YXjGkqjt.png]
IMG3^ Fixed 60 FPS. Prevent FPS: OFF, Internal FPS: 60, CPU speed: 555Mhz, PPSSPP VPS/percentage: 162/270%
- - - - -
[Image: Ii9Tm6xt.png]
IMG4^ Fixed 60 FPS. Prevent FPS: ON, Internal FPS: 60, CPU speed: 555Mhz, PPSSPP VPS/percentage: 161/267%
- - - - -
[Image: ne47lgAt.png]
IMG5^ Fixed 60 FPS. Prevent FPS: OFF, Internal FPS: 60, CPU speed: 266Mhz, PPSSPP VPS/percentage: 158/262%
- - - - -
[Image: kogKvoht.png]
IMG6^ Fixed 30 FPS. Prevent FPS: ON, Internal FPS: 30, CPU speed: 555Mhz, PPSSPP VPS/percentage: 152/505%

Observations from the images:
- As you can see from pictures 1 and 2, PPSSPP shows 60 FPS as max even when the game is internally running higher than that.
- By comparing the picture 1 with the number 2, you can see the performance benefit of enabling the Prevent FPS option: 193% (option ON) vs 108% (option OFF).
- By comparing picture 2 with pictures 3-4-5 you can see the performance benefit of using the fixed 60 FPS cheat vs only enabling the Prevent FPS option: ~267% (fixed 60 FPS) vs 193% (Prevent FPS option OFF and fixed FPS cheat OFF).
- By comparing the pictures 3-4 with the number 5, you can see that there is no performance difference between 266 and 555 Mhz (or higher) in CPU speed when you're using the cheats and the game is already running at a fixed 30/60 FPS.
- Picture number 6 shows how easy should be to run the game on weak hardware with the 30 FPS cheat: 505% (fixed 30 FPS) vs 267% (fixed 60 FPS).

The higher the percentage is, the better/more efficient the game is running. You can expect the same performance gains in GoW Ghost of Sparta.

As a nice bonus, the use of either 30/60 FPS cheats completely fixes the sky flickering issue; it was caused by the unstable default framerate behavior.

Cheats.

Please, read the How to use from below before using the cheats.

v God of War - Chains of Olympus [USA-UMD/EUR-UMD], UCUS98653.ini / UCES00842.ini
Code:
_S UCUS-98653 / UCES-00842
_G GoW CoO [USA/EUR]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00D0200 0x0001A378//Jump-0x10
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C16F9
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C16F9
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0010
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0020
_L 0x2001A388 0x0A200E01//Jump
_L 0x2001A38C 0x34040000//FPS
_L 0x2001A390 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00D0200 0x0001A378//Jump-0x10
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C16F9
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C16F9
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0010
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0020
_L 0x2001A388 0x0A200E01//Jump
_L 0x2001A38C 0x34040001//FPS
_L 0x2001A390 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x0001A388
_L 0x2001A388 0x8FBF0010
_L 0x2001A38C 0x03E00008
_L 0x2001A390 0x27BD0020
_L 0x10003800 0x00000000
v God of War - Chains of Olympus [USA-PSN], NPUG80325.ini
Code:
_S NPUG-80325
_G GoW CoO [USA-PSN]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00D1671 0x0001F690//vblank
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C1671
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C1671
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001A31C 0x0A200E01//Jump
_L 0x2001A320 0x34040000//FPS
_L 0x2001A324 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00D1671 0x0001F690//vblank
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C1671
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C1671
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001A31C 0x0A200E01//Jump
_L 0x2001A320 0x34040001//FPS
_L 0x2001A324 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x0001A31C
_L 0x2001A31C 0x8FBF0000
_L 0x2001A320 0x03E00008
_L 0x2001A324 0x27BD0010
_L 0x10003800 0x00000000
v God of War - Chains of Olympus [EUR-PSN], NPEG00023.ini
Code:
_S NPEG-00023
_G GoW CoO [EUR-PSN]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00D166F 0x0001F690//vblank
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C166F
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C166F
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001A31C 0x0A200E01//Jump
_L 0x2001A320 0x34040000//FPS
_L 0x2001A324 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00D166F 0x0001F690//vblank
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C166F
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C166F
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001A31C 0x0A200E01//Jump
_L 0x2001A320 0x34040001//FPS
_L 0x2001A324 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x0001A31C
_L 0x2001A31C 0x8FBF0000
_L 0x2001A320 0x03E00008
_L 0x2001A324 0x27BD0010
_L 0x10003800 0x00000000
v God of War - Chains of Olympus BETA [EUR], UCET00844.ini
Code:
_S UCET-00844
_G GoW CoO BETA [EUR]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00D0200 0x0001A378//Jump-0x10
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C16F8
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C16F8
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0010
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0020
_L 0x2001A388 0x0A200E01//Jump
_L 0x2001A38C 0x34040000//FPS
_L 0x2001A390 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00D0200 0x0001A378//Jump-0x10
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2C16F8
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2C16F8
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0010
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0020
_L 0x2001A388 0x0A200E01//Jump
_L 0x2001A38C 0x34040001//FPS
_L 0x2001A390 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x0001A388
_L 0x2001A388 0x8FBF0010
_L 0x2001A38C 0x03E00008
_L 0x2001A390 0x27BD0020
_L 0x10003800 0x00000000
v God of War - Chains of Olympus Demo [EUR], UCED00971.ini
Code:
_S UCED-00971
_G GoW CoO Demo [EUR]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00D0200 0x001A3D10//Jump-0x10
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2A034A
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2A034A
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0010
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0020
_L 0x201A3D20 0x0A200E01//Jump
_L 0x201A3D24 0x34040000//FPS
_L 0x201A3D28 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00D0200 0x001A3D10//Jump-0x10
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2A034A
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2A034A
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0010
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0020
_L 0x201A3D20 0x0A200E01//Jump
_L 0x201A3D24 0x34040001//FPS
_L 0x201A3D28 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x001A3D20
_L 0x201A3D20 0x8FBF0010
_L 0x201A3D24 0x03E00008
_L 0x201A3D28 0x27BD0020
_L 0x10003800 0x00000000

v God of War - Ghost of Sparta [USA-UMD], UCUS98737.ini
Code:
_S UCUS-98737
_G GoW GoS [USA-UMD]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00DDC67 0x000205DC//vblank
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FDC67
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FDC67
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040000//FPS
_L 0x2001B114 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00DDC67 0x000205DC//vblank
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FDC67
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FDC67
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040001//FPS
_L 0x2001B114 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x1001B10C
_L 0x2001B10C 0x8FBF0000
_L 0x2001B110 0x03E00008
_L 0x2001B114 0x27BD0010
_L 0x10003800 0x00000000
v God of War - Ghost of Sparta [EUR-MULTI5-UMD], UCES01401.ini
Code:
_S UCES-01401
_G GoW GoS [EUR-MULTI5-UMD]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00DE13C 0x000205DC//vblank
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FE13C
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FE13C
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040000//FPS
_L 0x2001B114 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00DE13C 0x000205DC//vblank
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FE13C
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FE13C
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040001//FPS
_L 0x2001B114 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x1001B10C
_L 0x2001B10C 0x8FBF0000
_L 0x2001B110 0x03E00008
_L 0x2001B114 0x27BD0010
_L 0x10003800 0x00000000
v God of War - Ghost of Sparta [EUR-MULTI5-PSN], NPEG00044.ini
Code:
_S NPEG-00044
_G GoW GoS [EUR-MULTI5-PSN]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00DE14D 0x000205DC//vblank
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FE14D
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FE14D
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040000//FPS
_L 0x2001B114 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00DE14D 0x000205DC//vblank
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FE14D
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FE14D
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040001//FPS
_L 0x2001B114 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x1001B10C
_L 0x2001B10C 0x8FBF0000
_L 0x2001B110 0x03E00008
_L 0x2001B114 0x27BD0010
_L 0x10003800 0x00000000
v God of War - Ghost of Sparta [EUR-MULTI3-UMD], UCES01473.ini
Code:
_S UCES-01473
_G GoW GoS [EUR-MULTI3-UMD]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00DE173 0x000205DC//vblank
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FE173
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FE173
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040000//FPS
_L 0x2001B114 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00DE173 0x000205DC//vblank
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2FE173
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2FE173
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x2001B10C 0x0A200E01//Jump
_L 0x2001B110 0x34040001//FPS
_L 0x2001B114 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x1001B10C
_L 0x2001B10C 0x8FBF0000
_L 0x2001B110 0x03E00008
_L 0x2001B114 0x27BD0010
_L 0x10003800 0x00000000
v God of War - Ghost of Sparta Demo [EUR], NPEG90035.ini
Code:
_S NPEG-90035
_G GoW GoS Demo [EUR]
_C0 60 FPS [Fixed]
_L 0xE00E003C 0x10003800
_L 0xE00D0200 0x000182BC//Jump-0x10
_L 0x10003800 0x0000003C
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2D9AE4
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2D9AE4
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x200182CC 0x0A200E01//Jump
_L 0x200182D0 0x34040000//FPS
_L 0x200182D4 0x00000000
_C0 30 FPS [Fixed]
_L 0xE00E001E 0x10003800
_L 0xE00D0200 0x000182BC//Jump-0x10
_L 0x10003800 0x0000001E
_L 0x20003804 0x10800003
_L 0x20003808 0x00000000
_L 0x2000380C 0x0E2D9AE4
_L 0x20003810 0x00000000
_L 0x20003814 0x0E2D9AE4
_L 0x20003818 0x00000000
_L 0x2000381C 0x8FBF0000
_L 0x20003820 0x03E00008
_L 0x20003824 0x27BD0010
_L 0x200182CC 0x0A200E01//Jump
_L 0x200182D0 0x34040001//FPS
_L 0x200182D4 0x00000000
_C0 Unlimited FPS [Default]
_L 0xE0040E01 0x000182CC
_L 0x200182CC 0x8FBF0000
_L 0x200182D0 0x03E00008
_L 0x200182D4 0x27BD0010
_L 0x10003800 0x00000000

How to use:
- Before using the cheats (60/30FPS), you MUST increase the CPU speed in PPSSPP to a very high value (666 Mhz or higher is perfect), then reboot the game to make it effective. If you are already playing the game using savestates, save the game on a save point like in a real PSP, set the high CPU speed and reboot the game. Don't load anymore a savestate saved while having a lower CPU speed.
- You should disable the cheat after you see that it has already been applied to the game.

You can use the "Create a game config" option when you boot your GoW game, so this CPU speed (and other settings) will only work for this game.

Additional details:
The high PSP CPU speed is needed because of how the cheats I made work:
It's like enabling double buffered v-sync: it makes the game use an internal frameskip to previous "steps" in the FPS that the game can internally run with the available PSP CPU power (1 step less while using the fixed 60FPS cheat and 2 less while using the 30 FPS cheat), for example:
- 60 FPS cheat, if the game is internally running higher than 60 FPS, it will run at a fixed 60FPS.
- 60 FPS cheat, if the game is internally running lower than 60 FPS, it will run at a fixed 30FPS.
- 30 FPS cheat, if the game is internally running higher than 60 FPS, it will run at a fixed 30FPS.
- 30 FPS cheat, if the game is internally running lower than 60 FPS, it will run at a fixed 20FPS.

My test on a REAL PSP, which runs the games at lower speeds than PPSSPP, shows that:
- 60 FPS cheat, if the game is running lower than 60 FPS, it will run at a fixed 30FPS.
It's almost the same as with PPSSPP so you can imagine other variations, the difference is that the PSP can not always exceed the high FPS needed to avoid the "steps" to lower speeds.

I tested the cheats for some time looking for negative side effects and I did not get any problems in PPSSPP (game speed is perfect and there are no other issues). I got a crash once in a real PSP, but this cheat is not made to be used with it, this is only for emulators.

In case you have a highly clocked i7 CPU paired with a top of the line GPU (a powerful PC, you get the idea) and you think that you're already getting a smooth/constant 60FPS without these cheats: you're wrong. You should at least use the fixed 60 FPS cheat even with powerful hardware, this way you avoid the previously explained forced frameskip and can play these GoW games at a real silky smooth 60 FPS, and all by still using less hardware resources than without using the cheats.

In conclusion, you MUST use a high CPU speed value (like 666Mhz or higher) so the game is always running at FPS higher than 60FPS, this way you get both cheats (60/30 FPS) to run like they should. If you check the performance comparisons from above, you can see that while using the cheats, there is no performance difference between using 266 and 555 Mhz (or even 999Mhz) as CPU speed if the game is already running at 60FPS, but using 266Mhz will make the game run at a fixed 30 FPS at some points where it can't keep over 60 internal FPS so don't use low CPU speeds.

TL;DR: Grab the performance cheats in the Cheats section from above, but you MUST read the How to use section before you try to use them.

This is a long post, I will edit it later with random corrections and I have to port the cheats to other game regions/releases too, so please do not quote this whole post.
I have made other similar speed improvements/bug fixes to other PSP games too and I will post them at some point on a master list post or something.

If you have questions or feedback about this post, just post them here.
Enjoy. Big Grin

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
11-20-2016, 02:16 AM
Post: #2
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
This is amazing, my machine is pretty ancient and weak yet i'm playing ghost of sparta at a solid 30 frames, thank you!
Find all posts by this user
Quote this message in a reply
11-20-2016, 09:26 AM
Post: #3
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Amazing! When I played these games I thought "are 1000MHz not enough or what?". It wasn't smooth most of the time.

The European Chains of Olympus code works great Smile.

However, the Ghost of Sparta game I bought was the UK version with 3 languages (English, Russian and Polish). It is UCES01473. Using the UCES01401 code in the "UCES01473.ini" makes the game display a black screen at boot.

Can you please make a code for that version, or is it too much work?
Find all posts by this user
Quote this message in a reply
11-20-2016, 11:10 AM (This post was last modified: 11-20-2016 11:25 AM by Kabuto_Kun.)
Post: #4
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
@masterotaku
UCES01473 added to the post.

If you guys experience any problem or unstability caused by the cheats, please let me know the details Wink

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
11-22-2016, 02:34 AM (This post was last modified: 11-22-2016 02:35 AM by flawless911.)
Post: #5
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
This is amazing bro.. Thank you so much for your efforts.. The USA Ghost of Sparta cheats worked perfectly for me.. And they also helped with the numerous glitches because now I don't need to downclock anymore ☺️
Find all posts by this user
Quote this message in a reply
11-27-2016, 06:03 AM (This post was last modified: 11-27-2016 12:57 PM by Thistle Blower.)
Post: #6
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Works flawlessly on PC. (GoS/USA/30fps cheat)
I'm using it on android though too and it added a ton of stability, I came up with a new config. I can't believe how solid it is.
Really great cheat.
Find all posts by this user
Quote this message in a reply
12-10-2016, 04:24 AM (This post was last modified: 12-10-2016 06:46 AM by pepodmc.)
Post: #7
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
you are a genius, AMAZING !!!!!!!

Really, thanks for this, smooth 60 fps on PC XD


In ppsspp version 1.0.1 this codes work perfect, but in recent builds this two games have some frameskip even with the codes, so if someone have any problem , use ppsspp version 1.0.1 instead of recent builds.

Does any other games have a problem like the two gow games?
Find all posts by this user
Quote this message in a reply
12-26-2016, 09:11 PM
Post: #8
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Was this a decision took by the developers while designing the games/engine?
Was there an actual reason to do this?
I mean, this basically sounds like the worst Con ever without a Pro, right?
In any case, really great job on finding this!
Find all posts by this user
Quote this message in a reply
12-26-2016, 09:39 PM
Post: #9
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
They weren't expecting people to play this game outside of official releases on their respective platforms, of course they wouldn't think of people playing it on an emulator.
Find all posts by this user
Quote this message in a reply
12-26-2016, 10:05 PM
Post: #10
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Very cool, nice work!
Find all posts by this user
Quote this message in a reply
12-29-2016, 02:02 AM (This post was last modified: 12-29-2016 02:03 AM by Efraim Lopes.)
Post: #11
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Thank you so much for this, I will be waiting fixed 30 FPS codes for others games like Soul Calibur [US] which runs at 60 FPS, forcing to 30 will help to play on my poor Android, thanks again. ♥
Find all posts by this user
Quote this message in a reply
12-30-2016, 05:48 PM
Post: #12
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Use frameskip and switch off buffered rendering
Find all posts by this user
Quote this message in a reply
04-24-2017, 01:38 AM
Post: #13
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Sorry for the bump, I'm looking for codes for this version of Chains of Olympus, NPUG-80325.
The only other cwcheat i've seen for this version has it listed as God of War: Chains of Olympus (PlayStation Store)[US].
Find all posts by this user
Quote this message in a reply
04-24-2017, 06:27 AM (This post was last modified: 05-15-2017 07:24 AM by Kabuto_Kun.)
Post: #14
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
(04-24-2017 01:38 AM)YukiHerz Wrote:  Sorry for the bump, I'm looking for codes for this version of Chains of Olympus, NPUG-80325.
The only other cwcheat i've seen for this version has it listed as God of War: Chains of Olympus (PlayStation Store)[US].

NPUG-80325 added to the post.
Not sure if the same cheat works with NPEG-00023, the EUR PSN release, will check later. I plan to add PSN releases for Ghost of Sparta later.

I slightly updated the conditional lines for all these GoW cheats in an effort to detect and avoid the use of a specific cheat on an incorrect game release/region. It works for Chains of Olympus, but for Ghost of Sparta the BIN files between releases have very little difference from each other yet they still have offsets in its functions. I also fixed some time ago the game freeze/crash while using the Default cheat.

Unrelated to this thread but in case you're interested I took a second look at Dante's Inferno, and I made a FPS unlock cheat for it so now there's no need to mess with its game files. I updated its original post, the one you linked before.

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
04-24-2017, 04:18 PM
Post: #15
RE: God of War Chains of Olympus/Ghost of Sparta - Performance improvements codes
Thanks! Really appreciated!
Find all posts by this user
Quote this message in a reply
Post Reply 


Forum Jump: