From faf5162b60eab5402d3839330f985b84382df76c Mon Sep 17 00:00:00 2001 From: TuxSH <1922548+TuxSH@users.noreply.github.com> Date: Wed, 13 Mar 2024 19:24:54 +0100 Subject: [PATCH] Fix PTMSYSM_CheckNew3DS, closes #540 --- libctru/include/3ds/services/ptmsysm.h | 5 +++-- libctru/source/services/ptmsysm.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libctru/include/3ds/services/ptmsysm.h b/libctru/include/3ds/services/ptmsysm.h index 253ca3d5a..f65eab971 100644 --- a/libctru/include/3ds/services/ptmsysm.h +++ b/libctru/include/3ds/services/ptmsysm.h @@ -109,9 +109,10 @@ Result PTMSYSM_GetRtcTime(s64 *outMsY2k); Result PTMSYSM_SetRtcTime(s64 msY2k); /** - * @brief Returns 1 if it's a New 3DS, otherwise 0. + * @brief Checks whether the system is a New 3DS. + * @param[out] out Pointer to write the New 3DS flag to. */ -Result PTMSYSM_CheckNew3DS(void); +Result PTMSYSM_CheckNew3DS(bool *out); /** * @brief Configures the New 3DS' CPU clock speed and L2 cache. diff --git a/libctru/source/services/ptmsysm.c b/libctru/source/services/ptmsysm.c index f376f0d2d..f7a9938ed 100644 --- a/libctru/source/services/ptmsysm.c +++ b/libctru/source/services/ptmsysm.c @@ -98,13 +98,14 @@ Result PTMSYSM_Awaken(void) return (Result)cmdbuf[1]; } -Result PTMSYSM_CheckNew3DS(void) +Result PTMSYSM_CheckNew3DS(bool *out) { Result ret; u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = IPC_MakeHeader(0x040A,0,0); // 0x040A0000 - if(R_FAILED(ret = svcSendSyncRequest(ptmSysmHandle)))return 0; + if(R_FAILED(ret = svcSendSyncRequest(ptmSysmHandle)))return ret; + *out = (bool)cmdbuf[2]; // if cmdbuf[1] is != 0 then this is uninitialized (this is fine) return (Result)cmdbuf[1]; }