Shadow Man 2econd Coming seems to have all I/O done by its sound driver, even for reading game files.
What do you mean with "a patch for every game"? Nobody is going to debug Shadow Man 2 and the PS remake. It didn't happen so far for a reason.
Magic might happen, if you asked for it. But I'll do it, since people have been asking.
I doubt I can fix the PS remake because it is a runtime bug, something which seems to happen during rendering, likely as an indirect effect of reading. I have very little experience with debugging rendering and sound-playback issues.
I might need to understand how the game works, dump VRAM to see where it goes wrong and then create a patch. But that's too much work, when MIPS (and VU) assembly is the only thing that can represent the whole game.
If only 2 games can be fixed by lower the transfer rate by that much, then I would rather write game-specific fixes for them because the setting would be useless for nearly every other game.
Even if we cannot debug and solve the actual underlying problem, then an additional delay/additional configuration of mode 1's speed limit can be added like what Jimmikaelkael did for Kingdom Hearts 2. The user would hence have less settings to change, and it's possible to blacklist because we already know that these games have problems.
Worth mentioning that the CD-ROM speed in PS2 as it is widely-documented only applies to reading data from the centre continuously.
It has documentation for reading performance from both inner-most and outer-most tracks, but none of the rated speeds are that low.
However, due to seek times which can be very high if a game uses a ton small files (like SD textures), the timing becomes very tricky. Since we can't emulate the actual movement and data reading of a laser assembly,
Games have to be designed to reduce seeking, as seeking is documented very slow and so is the IOP, so I don't think it is really a problem. But if you can come up with a model for this and it actually helps, it can be done. Software is flexible.
BTW Castle Shikigami 2 needs Mode 1 to have BGM even for USB, but I don't know why?!
I mean normal Ifcaro OPL with transfer speed "set for DVD".
No other modes will helps this game to have BGM?!
It's because this game's sound driver monitors sceCdReadPos() to check for new progress in reading the audio stream.
So if it is either read too quickly or not updated incrementally, the sound driver fails to continue playback.
Other than limiting speed, accurate reads (mode 1) also:
- Imposes a 5000-us delay between the completion of a command and the interrupt callback. This is for compatibility for some games that were designed to assume that the callback does not occur immediately after the command is issued.
- Limits the transfer block size to 8 sectors. While I have no information on the CD/DVD's host controller capabilities, I think I came up with this number from the Sony CDVDFSV's buffer size.
This also solves performance problems in some games (i.e. Dragon Quest 8), due to them requesting a lot of data, which the HDD unit can satisfy quite quickly... causing the active thread to not sleep for extended periods of time. This mode solves that problem because it breaks up the long data transfers, allowing lower-priority threads to get CPU time.
This compatibility mode was originally intended to replace the user-setting of DMA modes, but it somehow did not help all games and I do not know why, so the DMA setting remained (indefinitely) as a stop-gap measure. The DMA modes affect the transfer rate between the PS2 and the HDD, but it was for device compatibility and not as a measure for software compatibility.
I turned on everything 1 to 8
Do not do this. Some modes were meant for specific types of games or specific uses.
For example, DVD-DL emulation was meant for flattened images. It will cause games on real DVD-DL images to malfunction.