diff --git a/src/xenia/kernel/xam_content.cc b/src/xenia/kernel/xam_content.cc index cdae8ba01..c5cdfe3a5 100644 --- a/src/xenia/kernel/xam_content.cc +++ b/src/xenia/kernel/xam_content.cc @@ -25,15 +25,22 @@ namespace kernel { SHIM_CALL XamContentGetLicenseMask_shim( PPCContext* ppc_state, KernelState* state) { - uint32_t unk0_ptr = SHIM_GET_ARG_32(0); - uint32_t unk1_ptr = SHIM_GET_ARG_32(1); + uint32_t mask_ptr = SHIM_GET_ARG_32(0); + uint32_t overlapped_ptr = SHIM_GET_ARG_32(1); XELOGD( "XamContentGetLicenseMask(%.8X, %.8X)", - unk0_ptr, - unk1_ptr); + mask_ptr, + overlapped_ptr); - SHIM_SET_RETURN(X_STATUS_NOT_IMPLEMENTED); + XEASSERTZERO(overlapped_ptr); + + // Arcade games seem to call this and check the result mask for random bits. + // If we fail, the games seem to use a hardcoded mask, which is likely trial. + // To be clever, let's just try setting all the bits. + SHIM_SET_MEM_32(mask_ptr, 0xFFFFFFFF); + + SHIM_SET_RETURN(X_ERROR_SUCCESS); }