From 31751e44af7dce86e289fb8aa02e801c09a467a3 Mon Sep 17 00:00:00 2001 From: TuxSH Date: Thu, 28 Mar 2019 00:08:04 +0100 Subject: [PATCH] LOADER_RegisterProgram: use FS_ProgramInfo --- libctru/include/3ds/services/loader.h | 8 +++----- libctru/source/services/loader.c | 12 ++++-------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/libctru/include/3ds/services/loader.h b/libctru/include/3ds/services/loader.h index d313166..d939e07 100644 --- a/libctru/include/3ds/services/loader.h +++ b/libctru/include/3ds/services/loader.h @@ -24,12 +24,10 @@ Result LOADER_LoadProcess(Handle* process, u64 programHandle); /** * @brief Registers a program (along with its update). * @param[out] programHandle Pointer to output the program handle to. - * @param titleId The program's title ID. - * @param mediaType The program's media type. - * @param updateTitleId The program update's title ID. - * @param updateMediaType The program update's media type. + * @param programInfo The program info. + * @param programInfo The program update info. */ -Result LOADER_RegisterProgram(u64* programHandle, u64 titleId, FS_MediaType mediaType, u64 updateTitleId, FS_MediaType updateMediaType); +Result LOADER_RegisterProgram(u64* programHandle, const FS_ProgramInfo *programInfo, const FS_ProgramInfo *programInfoUpdate); /** * @brief Unregisters a program (along with its update). diff --git a/libctru/source/services/loader.c b/libctru/source/services/loader.c index c2b1ed6..b006d13 100644 --- a/libctru/source/services/loader.c +++ b/libctru/source/services/loader.c @@ -1,3 +1,4 @@ +#include #include <3ds/services/loader.h> #include <3ds/result.h> #include <3ds/svc.h> @@ -39,19 +40,14 @@ Result LOADER_LoadProcess(Handle* process, u64 programHandle) return (Result)cmdbuf[1]; } -Result LOADER_RegisterProgram(u64* programHandle, u64 titleId, FS_MediaType mediaType, u64 updateTitleId, FS_MediaType updateMediaType) +Result LOADER_RegisterProgram(u64* programHandle, const FS_ProgramInfo *programInfo, const FS_ProgramInfo *programInfoUpdate) { Result ret = 0; u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = IPC_MakeHeader(2, 8, 0); // 0x20200 - cmdbuf[1] = (u32)titleId; - cmdbuf[2] = (u32)(titleId >> 32); - cmdbuf[3] = mediaType; - - cmdbuf[5] = (u32)updateTitleId; - cmdbuf[6] = (u32)(updateTitleId >> 32); - cmdbuf[7] = updateMediaType; + memcpy(&cmdbuf[1], programInfo, sizeof(FS_ProgramInfo)); + memcpy(&cmdbuf[5], programInfoUpdate, sizeof(FS_ProgramInfo)); if(R_FAILED(ret = svcSendSyncRequest(loaderHandle))) return ret;