hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.04k stars 2.15k forks source link

Aces of War (Europe) freezes up after chapter selection #11062

Closed benderscruffy closed 10 months ago

benderscruffy commented 6 years ago

PPSSPP v1.5.4-995-g373366911 Windows 64 bit choose mission mode then the chapter you want to play then choose a part of the story you want to play, after you choose it the game just freezes while music in the background plays ppsspplog.zip

ppmeis commented 6 years ago

Tested in latest Windows build 1.6, issue confirmed.

Anderanerin commented 4 years ago

Tested with the European and Japanese versions of the game in Windows V1.9.3, however this also occurs on actual PSP hardware running CFW as well as a PSVita using adrenaline. This particular game really doesn't seem to like being run from a disk image.

LunaMoo commented 4 years ago

So it's not a bug, however it still could be fixed by simulating UMD delays, maybe already is, since it's not activated by default.

Anderanerin commented 4 years ago

Just tested on Windows 1.9.3 with simulated UMD delay and all other settings default, still no joy. Are there any logs or dumps I could provide that might be helpful?

Panderner commented 4 years ago

Is this a anti piracy measure? It should detected on PSP and PS Vita running CFWs. And i mentioned the DJ Max Portable's copy protection.

LunaMoo commented 4 years ago

This isn't an anti copy protection, it's just the typical badly coded game that depends on exact hardware timing. It works from umd which is extremely slow, and bugs out from any faster medium. Since it was confirmed to happen on real PSP it's not a bug, but it can at some point in the future be solved by simulating real hardware slowness better.

hrydgard commented 4 years ago

Yeah our current simulated UMD delays are still far faster than real hardware. We need an extra mode with slower measured timings (though might be possible to just fake and hope, also...)

Panderner commented 4 years ago

Can you listed in #7647?

hrydgard commented 4 years ago

So does this actually work now on recent builds, or not, with the UMD I/O timings?

Anderanerin commented 4 years ago

Issue still appears to persist on Windows 64bit build v1.9.3-900-g79299e19f. Tried with otherwise default settings and with all I/O timing methods. It still hangs in the same spot. It is possible to get ingame on training missions regardless of the I/O timing settings (as I think was the case on the stable build), but trying to launch missions still produces the hang.

sum2012 commented 3 years ago

The gameid is ULES00590

Sukotto-1999 commented 1 year ago

Oh! It appears, the game itself, actually includes an anti-piracy measure! I analyzed the copy protection scheme itself and it turns out the game compares the loading times with the one that's being requested, if this check fails, the game will freeze while the background music still plays.

Panderner commented 1 year ago

Oh! It appears, the game itself, actually includes an anti-piracy measure! I analyzed the copy protection scheme itself and it turns out the game compares the loading times with the one that's being requested, if this check fails, the game will freeze while the background music still plays.

@Sukotto-1999 are you tested with your CFW PSP?

hrydgard commented 1 year ago

@Sukotto-1999 Really, got any more details? Is it timing a whole loading process or just individual reads, and if so, do you know the thresholds?

Sukotto-1999 commented 1 year ago

Unfortuanently, i am aware of risks of semi-bricking my PSP-3000. So, i may have to test on my CFW'ed PSP-1000 (Jap model) to verify.

Sukotto-1999 commented 1 year ago

Oh, and by the way, how about a new option that allows to set a delay that can allow bypassing the freeze.

Here how UMD detection works: The game calculates the requested milliseconds and compares them to the actual loading time itself.

Example:

When loading via UMD: same milliseconds compared to requested = Game loads fine When loading via Memory Stick: few milliseconds compared to requested one = Check fails, game freezes.

I'll upload a comparison later.

hrydgard commented 1 year ago

You say you analyzed it and found a copyright protection scheme, but are you really sure it is one? It could theretically also be that something else in PPSSPP is too fast or slow, causing a race condition that doesn't happen on the real hardware. Like, does it work on real hardware both from ISO and UMD? Those have very different timings...

Typical cases of that is the dialog functions, synchronizing with graphics rendering, and such things, but would need to step through (using "Next HLE" repeatedly in the PPSSPP disassembly window) during the specific time where it hangs to collect a list of candidate functions...

sum2012 commented 1 year ago

From https://www.youtube.com/watch?v=me3EAMu1QFU&lc=Ugyppxz9CArGT991dMx4AaABAg.8ffAiy398BO9N64wbWVelH I confirm convert to CSO format can play in REAL PSP of Memory strick. ISO format can NOT play in REAL PSP.

I don't know that change timing of CSO of coding in PPSSPP.

anr2me commented 1 year ago

From https://www.youtube.com/watch?v=me3EAMu1QFU&lc=Ugyppxz9CArGT991dMx4AaABAg.8ffAiy398BO9N64wbWVelH I confirm convert to CSO format can play in REAL PSP of Memory strick. ISO format can NOT play in REAL PSP.

I don't know that change timing of CSO of coding in PPSSPP.

decompression using PSP's CPU should be much slower than decompression on PPSSPP isn't? thus may affect the timing on real PSP, unless CSO also worked fine on PPSSPP while ISO didn't ... that would indeed be strange

Sukotto-1999 commented 1 year ago

Okay, instead of uploading a comparison, how about i wrote a comment about a comparison of booting ModNation Racers by either UMD or ISO. When loading ModNation Racers via a physical UMD copy, a loading ring icon appears before the warning screen. You cannot see the loading ring icon when using an ISO copy. If using "Simulate UMD delays" I/O setting on PPSSPP with ModNation Racers, You cannot see the loading ring icon. 2023-03-05 16-09-32 UMD Copy 2023-03-05 16-12-00 ISO Copy

anr2me commented 1 year ago

Hmm.. according to this post Pac Man World Rally also have freezing issue on certain levels, which also freezes on real PSP but works on Vita https://forums.ppsspp.org/showthread.php?tid=29262&pid=146290#pid146290 May be it have similar I/O timing issue with Aces of War.

sum2012 commented 11 months ago

I get 100 multiple times slower in reading data in-game !!! I will pull request next day night. 1 2

anr2me commented 11 months ago

I noticed that Crazy Taxi Fare Wars can sometimes stuck/freezes after selecting either Crazy Taxi or Crazy Taxi 2 (still showing the game selection screen while it stucks), where it usually checks the memstick/game saves, so may be that game also have issue with I/O too sometimes but rarely gets triggered (or may be because i use save state to skips the intro, but still rare to happen)

sum2012 commented 11 months ago

Hmm.. according to this post Pac Man World Rally also have freezing issue on certain levels, which also freezes on real PSP but works on Vita https://forums.ppsspp.org/showthread.php?tid=29262&pid=146290#pid146290 May be it have similar I/O timing issue with Aces of War.

Testing with adhoc is impossible for me ,I am testing in single player EDIT:Seem no problem

Sukotto-1999 commented 10 months ago

UPDATE: I tested the game either via no-UMD or UMD driver on CFW. and the game hangs when selecting a chapter (ISO) or crashes when starting a level (CSO).

Also, same for PPSSPP. I can't start a level. Sorry!

sum2012 commented 10 months ago

@Sukotto-1999 I am using Inferno Mode of PRO C2 CFW Anyway , if you are using windows , you can test this build https://github.com/hrydgard/ppsspp/actions/runs/6574857743#artifacts

Sukotto-1999 commented 10 months ago

Actually, i reduced the crashing by compressing the game with UMDGen to CSO by using compression level 7. Should work now on CFW on PSP.

Sukotto-1999 commented 10 months ago

Okay, here's how the checking process works, in Aces of War.

When selecting a mission or returning from the mission, the game checks the reading speed to ensure the game is running via the UMD copy. If it detects that the loading times are shorter than expected, it will softlock the game with the music still playing. Quitting the game after softlock still works.

To get pass the copy protection, i simply compressed the game with UMDGen by using compression 7. Should simulate the UMD loading times for Aces of War. The same method for Aces of War don't work on the DJMax games (example DJMax Fever Retail), but i really want to get DJMax Fever (UMD/Retail) to work as a backup, can someone send me the patched executable, not the actual game. The patch for the UMD version was now long gone. I can't find any.

anr2me commented 10 months ago

The same method for Aces of War don't work on the DJMax games (example DJMax Fever Retail), but i really want to get DJMax Fever (UMD/Retail) to work as a backup, can someone send me the patched executable, not the actual game. The patch for the UMD version was now long gone. I can't find any.

There are infos regarding DJMax Fever anti-piracy at https://tcrf.net/DJMax_Fever

The game performs two checks to detect if a game is being played on a real copy. upon startup, the game checks the directory ms0:/PSP/ISO (on modded PSP systems, this allows ISO games to be run) on the inserted Memory Stick regardless of owning a real copy of the game or not. If the directory is detected on the inserted Memory Stick, the game will refuse to start and therefore shuts off your PSP system, forcing you to reload the system.

As with most DJMAX Portable games in the series after DJMAX Portable International, In the retail version of the game, The game will perform an additional check on a real UMD drive to ensure if the game is present. if it is not present, Then after playing the game for a few minutes, the anti-piracy will; Add the crackles to the background music before becoming a distorted high pitched sound, randomize the playback speed of the keysounds and SFX audio, and flicker the graphics list to randomly skip drawing textures which causes the screen to flash rapidly. After attempting to change the song one or two times, It will lock up the game. This is completely absent in the PSN versions.

Sukotto-1999 commented 10 months ago

Well, i did document the anti-piracy on the TCRF. but someone can send me the patched executable for DJMax Fever [UMD VERSION, NOT PSN]? I said it's now long gone.

hrydgard commented 10 months ago

To get pass the copy protection, i simply compressed the game with UMDGen by using compression 7. Should simulate the UMD loading times for Aces of War. The same method for Aces of War don't work on the DJMax games (example DJMax Fever Retail), but i really want to get DJMax Fever (UMD/Retail) to work as a backup, can someone send me the patched executable, not the actual game. The patch for the UMD version was now long gone. I can't find any.

Setting a compression level and using host timing is not gonna work universally across devices with different speeds, so we're gonna need to do something different here.