mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
sceAmprCommandBufferWaitOnAddress took (address, reference, mask, compare) and WaitOnCounter (counter, reference, compare), and both read the compare value as WAIT_REG_MEM (0 always, 1 <, 2 <=, 3 ==, ...). ampr_emu, which replaces libSceAmpr for retail titles on the console, has (address, reference, compare, flush) and (counter, reference, compare, flush) with the SCE compare values (0 ==, 1 > unsigned, 2 < unsigned, 3 !=), so waits were decoded as other comparisons and could block forever or pass early. WriteAddressFromCounterPairOnCompletion takes one counter index, not two, and WriteKernelEventQueueOnCompletion an int id and no user data. Counter indices above 127, compare values above 3, flush values above 1 and misaligned wait addresses return EINVAL, as in ampr_emu. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>