Hey uli, I joined to post in this thread. I think people should know that changing the CPU to other stuff ratio - effectively underclocking the emulated CPU - may not just make the games slower but can cause them to fail altogether. If a game doesn't work people should try setting these numbers lower, although past a certain point lower values are guaranteed to make the game slower.
Having said that, I've been curious for a while about typical idle loops in PS1 games. I've asked zodttd to give me some logs before but he hasn't gotten back to me on this. Since you've done a new recompiler maybe you would be up to the task of looking into this? I mention it because idle loop detection is a preferable solution to underclocking the CPU. For games that use idle loops they would get just as many emulated cycles as they need, or only slightly more. They wouldn't get short changed and you wouldn't have to determine this value, and plus, it's a value that's highly dynamic anyway. It's easy for a game to need 100% CPU for a few frames at some point then go on using 10% CPU. Since most PS1 games have fixed framerates a lot are probably using typical idle loops. If they are as simple as polling a register or a memory location that's changed during IRQs then you will probably be able to easily detect them, and since you have a recompiler it can be done with little overhead or chance of missing them.