-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash Tag Team Racing reported stuck on memory stick screen #5468
Comments
Could be the same truncate issue as LittleBigPlanet. -[Unknown] |
Comment out the return ERROR code (of course may be wrong , just test it out) , the game goes in-game
|
Tried to log it , the status at that moment is SCE_UTILITY_STATUS_SHUTDOWN
|
Maybe it has shutdown too slowly. Can you post the debug log between sceUtilitySavedataShutdownStart() and the sceUtilitySavedataInitStart() that fails? -[Unknown] |
Yep you are right .It is shutdown delay , reduced to lower value let say 0 or 100 , it is okay const static int SAVEDATA_SHUTDOWN_DELAY_US = 100; Note : >= 120 is not gonna work |
Hmm, that is an extremely small number, much faster than anything I can reproduce. Would still be nice to see the log, maybe something else is expected to take more time but doesn't. -[Unknown] |
Sure let me grep it . |
These are the logs from them . 45:07:512 user_main W[UTIL]: HLE\sceUtility.cpp:126 00000000=sceUtilitySavedataInitStart(08e6c220) |
This is a debug log? Does that mean it does absolutely nothing (syscall wise) between the two calls? -[Unknown] |
This is the debug log that taken when stucks 09:12:365 user_main D[KERNEL]: hle\scekernelsemaphore.cpp:413 0=sceKernelWaitSema(295, 1, 0) |
Well, the reason I'm asking is this: Imagine there is a man. The man makes a purchase at store, and uses up all his money in his bank account doing so. The man then goes to the bank to deposit more money. The man then goes to a restaurant and when trying to pay, his card is declined. Dismayed, he complains to his bank, since he had deposited more money already. The above situation is exactly like what's happening in the game. Here's the important part I'm asking about: how long did it take the man to get to the restaurant after going to the bank? Did he go home and go to sleep, and go to the restaurant in the morning? Or did he go there, speeding at 100km/h, trying as best he could to make it there before the deposit was available on his card? So, that's why I'm asking: am I correct that it calls zero syscalls between sceUtilitySavedataShutdownStart() and sceUtilitySavedataInitStart()? Or was that just from a release log (because it looked like a release log, it's hard to believe it didn't call anything else in between.) I really don't care what it does after sceUtilitySavedataInitStart() fails, not unless it is meant to fail and the game is not recovering from the error properly due to a bug somewhere else. I don't think that's likely. -[Unknown] |
Okay, so as I thought, it's doing stuff:
It's quite likely that both of those ought to take longer than they are currently taking in PPSSPP. -[Unknown] |
Can we somehow set a lower delay here for shutdown ? |
But that's not what happens on the PSP. Maybe it's that locking the volatile RAM always takes a certain amount of time, or that the drawsync is completing too early (it says wait for completion, but apparently is not waiting.) The delays fixed games, games that were expecting the value to switch from 4 to 0 naturally and other games that were expecting it to stay at 4 for a while. If we decrease the delay, we'll just be having this conversation again about another game. -[Unknown] |
Yep , agreed. |
How about change SAVEDATA_SHUTDOWN_DELAY_US = 100 only for this game(for all region) ? |
I decided to simply have sceKernelVolatileMemLock eat some cycles, it fixes the problem for some reason. Needs proper testing, I really need to get my PSP testing setup up and running again... ce1d449 |
It's pretty easy to set up on newer OS's with the latest libusb32. If you have problems just hit me on irc. Last time I tried it, didn't even need to restart iirc. Have not tested it either but I would not be surprised as I said above if it did eat cycles. That said, could also be gpu or both. I think there was one game that was using (locking/unlocking) volatile mem a lot, but I can't remember which. But most games probably won't care if it takes a few more cycles. -[Unknown] |
Was the change in ce1d449 meant to have any detrimental performance effects? Some preliminary testing using the usual game suite indicated no performance changes at all. |
Most games that use the function only use it in initialization. If a game used it every frame the short delay would pretty much break timing though, but that seems very unlikely. |
Closing, let's reopen if it reappears due to some timing change or another, as the game seems rather sensitive. |
Most likely it's the gpu thing, a brief test seemed to indicate that sceKernelVolatileMemLock takes maybe around ~1200 cycles, not like ~200000. -[Unknown] |
On last android playstore rev, the issue reaappears on xperia Z1 compact. |
I wonder if the playstore version as of the last comment did not include the fix. Otherwise maybe the issue is region specific... -[Unknown] |
Does this happen still on Android? -[Unknown] |
I have no problem test on v1.2.2-821-geac1848 on asus zenfone 2 |
Having this issue with 1.3 (stable), Windows. |
v1.3-144-g5df685f windows 64 bit do not work |
I know now.I was set cpu clok 1000 to test a game. |
A workaround is disabling memstick before the checking memory stick screen appears, then add the memstick back in after the main menu. |
@ManDude Did you changed cpu clock or something ? |
OMG... simply found this thread by GOOGLE. At this point how i can fix or found a workaround ?? Ah.. all it's on Windows 10 X64............ i have also tryed to use the X86 but i obtain same result... |
Disable memstick before booting the game and enable it at the main menu. |
@ManDude it's workaround.... but it's unfixable ? |
goes ingame no problem |
This was solved by a pretty incorrect hack making sceKernelVolatileMemLock eating lots of cycles later changed to a slightly better compat.ini hack [DrawSyncEatCycles] which also solved issues in a bunch of other games pointing out that gpu timings should be improved, but yeah I guess this can be closed now. |
when I overclock this game above 266 MHz same happens |
Yeah well, don't expect things to function correctly when overclocking - not all games can handle it. |
Here's a log when I overclock the PSP CPU above 266 MHz:
|
Maybe we should have a compat.ini setting that disables the cpu clock changes in some games? -[Unknown] |
Yeah, that's reasonable. |
"After the android update crash tag team racing gets stuck at the memory stick screen. Any workaround for this?"
The text was updated successfully, but these errors were encountered: