From 9f1a3795b7a45dfcf25673ea35ef83398b9e8217 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Sat, 4 Jan 2014 23:57:39 -0800 Subject: [PATCH] Fixing up license stuff. --- src/xenia/kernel/xam_content.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) 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); }