diff --git a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp index f53196c552..8c8679033d 100644 --- a/rpcs3/Emu/Cell/Modules/sys_libc_.cpp +++ b/rpcs3/Emu/Cell/Modules/sys_libc_.cpp @@ -97,9 +97,27 @@ s32 _sys_memcmp(vm::cptr buf1, vm::cptr buf2, u32 size) return std::memcmp(buf1.get_ptr(), buf2.get_ptr(), size); } -s32 _sys_memchr() +vm::ptr _sys_memchr(vm::ptr buf, u8 ch, s32 size) { - fmt::throw_exception("Unimplemented" HERE); + sysPrxForUser.trace("_sys_memchr(buf=*0x%x, ch=0x%x, size=0x%x)", buf, ch, size); + + if (!buf) + { + return vm::null; + } + + while (size > 0) + { + if (*buf == ch) + { + return buf; + } + + buf++; + size--; + } + + return vm::null; } vm::ptr _sys_memmove(vm::ptr dst, vm::cptr src, u32 size)