-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Add Simulate UMD slow reading speed in UI #18369
Conversation
Could there be another issue if it need such a long delay just to open the file? |
There is the theory that Real PSP can in-game in CSO format rather than ISO format, decompression using real PSP's CPU should be much slower. edit: So the timing ~0.07 s = 70ms , much more than unknownbrackets measure |
I also give a fix for jpcsp emulator |
I hope this can help sengoku musou 3z to choose dlc costumes |
@IrfanH495 You can download this build of windows 64 bit in |
@sum2012 thank you, but unfortunately I don't have a PC/laptop to run it. |
@IrfanH495 |
@IrfanH495 confirm fixed the DLC |
@sum2012 Not long ago my save data was deleted, in this save state I created 9 characters, I think it's the same as the DLC costume |
@IrfanH495 unlucky not solve |
Also fix Sengoku Musou 3Z Special DLC
Also add setting in libretro
I force it also make delay as ForceUMDDelay . |
Last time I test wrong
400 or 500ms is still far off from 70ms, although access time could get worse due to scratches or damages on the disc, and gets faster due to cache. PS: If i'm not mistaken, Aces of War read the whole file on a single |
Update Jpcsptrace log: 00:04:03.139435 Load Thread - -> sceIoOpen 0x09F9ABB0('disc0:/PSP_GAME/USRDIR/UMAP/001.BIN'), 0x1, 0x0 = 0x0 00:04:03.194278 Load Thread - -> sceIoLseek 0x4, 0xDEADBEEF, 0x0 = 0x0 00:04:03.194424 Load Thread - -> sceIoLseek 0x4, 0xDEADBEEF, 0x0 = 0x0 too low value of compare sceIoLseek so that can ignore 00:04:03.194540 Load Thread - -> sceIoRead 0x4, 0x960B980, 0x416180 = 0x0 ~6.5 s = 6500 ms |
There's a few things here, but the measurements in PPSSPP are based on a high speed memory stick, and speeds of the memory stick could vary a lot (they had different price points.) It's also true that many CFW had slow CSO decompression (in part because they usually re-read the index data and would often read block by block, slowly. The timings in PPSSPP are just based on memory stick read timings, not based on any of these CFW drivers. But there's another problem: you're simply measuring when the thread calls sceIoOpen() to when the sceIoOpen() call finishes. While that may sound right, other threads are running on the device. If it starts processing some audio data or does some other processing on another better-priority thread, you could easily see a sceIoOpen() call take milliseconds or even seconds to "finish". It's necessary to look at the overall context of what's happening at the same time. That said, it can be more useful looking at averages. Often these won't have anything else happening. Also, I found, at least on the PSP-3000 and with actual UMDs, that there was clearly some kind of path cache. Opening files was pretty fast, but only after reading from it once. It could even be that this cache is stored in volatile memory and is lost when volatile memory is locked (but probably not, just saying that I don't know the specific rules around it.) I don't think this cache is in the PSP-2000+ cache RAM, though, because I saw this even running homebrew code that had the UMD cache RAM disabled.
If you are able to play multiple PSP games without the game sometimes hanging when a new sound effect or graphical effect has to show, you can be pretty sure you're not getting realistic timing. That was a common event on a real PSP: you'd cast a spell you hadn't used this play session, and suddenly the music would hang and all you could hear was the UMD drive spinning up (okay, I'm exaggerating slightly - most games were able to keep the music playing.) This might take 2-3 seconds at least. It obviously didn't happen in every game, but it did in many. If you don't experience that in PPSSPP, you can be sure the timings are very very unrealistic. -[Unknown] |
Test in Aces of War (Europe) and Sengoku Musou 3 Z Special
@unknownbrackets I have changed the timing on __IoRead ,do you agree ? |
I think something like this is OK to have as an option and compat setting, and the simplified version in your newest commits should be fine, that just adjusts the throughput of the reads. The name "UMD slow read speed" gets the point across I guess.. I'll see if I can come up with something better until tomorrow, then we'll get this in. |
@leoxxx System: IO Timing Method -> Simulate UMD slow reading speed" |
@hrydgard |
Yes, we force it on for some games using compat.ini. |
Fix #11062 fix #12512 fix #9993
A small note 400000 fail