Fix SPU Loop Detection

This commit is contained in:
Nekotekina 2019-06-20 04:32:19 +03:00
parent 3602d45cb7
commit b9b591bf02
3 changed files with 19 additions and 0 deletions

View file

@ -1534,8 +1534,17 @@ void spu_recompiler::RDCH(spu_opcode_t op)
const u32 out = _spu->ch_dec_value - static_cast<u32>(get_timebased_time() - _spu->ch_dec_start_timestamp);
if (out > 1500)
{
_spu->state += cpu_flag::wait;
std::this_thread::yield();
if (_spu->test_stopped())
{
_spu->pc += 4;
spu_runtime::g_escape(_spu);
}
}
*_res = v128::from32r(out);
};