diff --git a/libctru/include/3ds.h b/libctru/include/3ds.h index 48e1bc8..be7a547 100644 --- a/libctru/include/3ds.h +++ b/libctru/include/3ds.h @@ -72,7 +72,6 @@ extern "C" { #include <3ds/services/loader.h> #include <3ds/services/y2r.h> #include <3ds/services/mcuhwc.h> -#include <3ds/services/hb.h> #include <3ds/gpu/gx.h> #include <3ds/gpu/gpu.h> diff --git a/libctru/include/3ds/services/hb.h b/libctru/include/3ds/services/hb.h deleted file mode 100644 index 6aefe96..0000000 --- a/libctru/include/3ds/services/hb.h +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @file hb.h - * @brief HB (Homebrew) service. - */ -#pragma once - -// WARNING ! THIS FILE PROVIDES AN INTERFACE TO A NON-OFFICIAL SERVICE PROVIDED BY NINJHAX -// BY USING COMMANDS FROM THIS SERVICE YOU WILL LIKELY MAKE YOUR APPLICATION INCOMPATIBLE WITH OTHER HOMEBREW LAUNCHING METHODS -// A GOOD WAY TO COPE WITH THIS IS TO CHECK THE OUTPUT OF hbInit FOR ERRORS - -#include <3ds/types.h> - -/// Initializes HB. -Result hbInit(void); - -/// Exits HB. -void hbExit(void); - -/// Flushes/invalidates the entire data/instruction cache. -Result HB_FlushInvalidateCache(void); - -/** - * @brief Fetches the address for Ninjhax 1.x bootloader addresses. - * @param load3dsx void (*callBootloader)(Handle hb, Handle file); - * @param setArgv void (*setArgs)(u32* src, u32 length); - */ -Result HB_GetBootloaderAddresses(void** load3dsx, void** setArgv); - -/** - * @brief Changes the permissions of a given number of pages at address addr to mode. - * Should it fail, the appropriate kernel error code will be returned and *reprotectedPages (if not NULL) - * will be set to the number of sequential pages which were successfully reprotected + 1 - * @param addr Address to reprotect. - * @param pages Number of pages to reprotect. - * @param mode Mode to reprotect to. - * @param reprotectedPages Number of successfully reprotected pages, on failure. - */ -Result HB_ReprotectMemory(u32* addr, u32 pages, u32 mode, u32* reprotectedPages); diff --git a/libctru/source/services/hb.c b/libctru/source/services/hb.c deleted file mode 100644 index 5344ddd..0000000 --- a/libctru/source/services/hb.c +++ /dev/null @@ -1,77 +0,0 @@ -#include <3ds/types.h> -#include <3ds/result.h> -#include <3ds/svc.h> -#include <3ds/srv.h> -#include <3ds/synchronization.h> -#include <3ds/env.h> -#include <3ds/ipc.h> - -static Handle hbHandle; -static int hbRefCount; - -Result hbInit(void) -{ - Result res=0; - if (AtomicPostIncrement(&hbRefCount)) return 0; - Handle temp = envGetHandle("hb:HB"); - res = temp ? svcDuplicateHandle(&hbHandle, temp) : MAKERESULT(RL_STATUS,RS_NOTFOUND,RM_APPLICATION,RD_NOT_FOUND); - if (R_FAILED(res)) AtomicDecrement(&hbRefCount); - return res; -} - -void hbExit(void) -{ - if (AtomicDecrement(&hbRefCount)) return; - svcCloseHandle(hbHandle); -} - -Result HB_FlushInvalidateCache(void) -{ - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); - - cmdbuf[0] = IPC_MakeHeader(0x1,1,2); // 0x10042 - cmdbuf[1] = 0x00000000; - cmdbuf[2] = IPC_Desc_SharedHandles(1); - cmdbuf[3] = CUR_PROCESS_HANDLE; - - if(R_FAILED(ret = svcSendSyncRequest(hbHandle))) return ret; - - return (Result)cmdbuf[1]; -} - -Result HB_GetBootloaderAddresses(void** load3dsx, void** setArgv) -{ - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); - - cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000 - - if(R_FAILED(ret = svcSendSyncRequest(hbHandle))) return ret; - - if(load3dsx)*load3dsx=(void*)cmdbuf[2]; - if(setArgv)*setArgv=(void*)cmdbuf[3]; - - return (Result)cmdbuf[1]; -} - -Result HB_ReprotectMemory(u32* addr, u32 pages, u32 mode, u32* reprotectedPages) -{ - Result ret = 0; - u32 *cmdbuf = getThreadCommandBuffer(); - - cmdbuf[0] = IPC_MakeHeader(0x9,3,0); // 0x900C0 - cmdbuf[1] = (u32)addr; - cmdbuf[2] = pages; - cmdbuf[3] = mode; - - if(R_FAILED(ret = svcSendSyncRequest(hbHandle))) return ret; - - if(reprotectedPages) - { - if(R_SUCCEEDED(ret))*reprotectedPages=(u32)cmdbuf[2]; - else *reprotectedPages=0; - } - - return (Result)cmdbuf[1]; -}