diff --git a/.gitmodules b/.gitmodules index c3e59c5..4fd3f8a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "buildtools"] path = buildtools - url = git@github.com:Steveice10/buildtools.git + url = https://github.com/Steveice10/buildtools.git diff --git a/Makefile b/Makefile index 51e871a..f115e80 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ endif # COMMON CONFIGURATION # FONZD = 0 -PABLOMK7 = 0 +PABLOMK7 = 1 EXTENDEDMODE = 0 DEBUG = 0 @@ -42,7 +42,7 @@ LIBRARY_DIRS := $(PORTLIBS) $(CTRULIB) LIBRARIES := citro3d ctru png z m VERSION_MAJOR := 2 -VERSION_MINOR := 11 +VERSION_MINOR := 12 VERSION_MICRO := 0 @@ -79,7 +79,7 @@ endif # 3DS CONFIGURATION # ifeq ($(TARGET),3DS) - LIBRARY_DIRS += $(DEVKITPRO)/libctru $(DEVKITPRO)/portlibs/armv6k/ + LIBRARY_DIRS += $(DEVKITPRO)/libctru $(DEVKITPRO)/portlibs/3ds/ LIBRARIES += citro3d ctru png z m PRODUCT_CODE := CTR-P-BNTR diff --git a/buildtools b/buildtools index 29ab223..4524b3a 160000 --- a/buildtools +++ b/buildtools @@ -1 +1 @@ -Subproject commit 29ab2234e7376807d154a2a06b5d3d49ad50f631 +Subproject commit 4524b3a324ae8e9dcaf80c4fe3694bc63628de22 diff --git a/source/firmware.c b/source/firmware.c index 35fe27c..1af45a0 100644 --- a/source/firmware.c +++ b/source/firmware.c @@ -100,10 +100,13 @@ Result bnInitParamsByFirmware(void) bnConfig->FSPatchAddr = 0x0010F024; bnConfig->SMPatchAddr = 0x0010189C; } - else if (kernelVersion == SYSTEM_VERSION(2, 54, 0)) + else if (kernelVersion == SYSTEM_VERSION(2, 54, 0) || kernelVersion == SYSTEM_VERSION(2, 55, 0)) { - // old3ds 11.4.0 - ntrConfig->firmVersion = SYSTEM_VERSION(11, 4, 0); + // old3ds 11.4.0 and 11.8 + if (kernelVersion == SYSTEM_VERSION(2, 54, 0)) + ntrConfig->firmVersion = SYSTEM_VERSION(11, 4, 0); + else + ntrConfig->firmVersion = SYSTEM_VERSION(11, 8, 0); ntrConfig->PMSvcRunAddr = 0x00103154; ntrConfig->ControlMemoryPatchAddr1 = 0xDFF88514; ntrConfig->ControlMemoryPatchAddr2 = 0xDFF88518; @@ -230,10 +233,13 @@ Result bnInitParamsByFirmware(void) bnConfig->FSPatchAddr = 0x0010F024; bnConfig->SMPatchAddr = 0x0010189C; } - else if (kernelVersion == SYSTEM_VERSION(2, 54, 0)) + else if (kernelVersion == SYSTEM_VERSION(2, 54, 0) || kernelVersion == SYSTEM_VERSION(2, 55, 0)) { - // new3ds 11.4 - ntrConfig->firmVersion = SYSTEM_VERSION(11, 4, 0); + // new3ds 11.4 and 11.8 + if (kernelVersion == SYSTEM_VERSION(2, 54, 0)) + ntrConfig->firmVersion = SYSTEM_VERSION(11, 4, 0); + else + ntrConfig->firmVersion = SYSTEM_VERSION(11, 8, 0); ntrConfig->PMSvcRunAddr = 0x00103150; ntrConfig->ControlMemoryPatchAddr1 = 0xDFF8862C; ntrConfig->ControlMemoryPatchAddr2 = 0xDFF88630; diff --git a/source/kernel.c b/source/kernel.c index 5489dca..504beeb 100644 --- a/source/kernel.c +++ b/source/kernel.c @@ -104,6 +104,15 @@ dbgKernelCacheInterface cacheInterface_NEW114 = (void*)0xFFF20518 }; +dbgKernelCacheInterface cacheInterface_NEW118 = +{ + //for new 3ds 11.8 + (void*)0xFFF27480, + (void*)0xFFF1E1DC, + (void*)0xFFF1DE84, + (void*)0xFFF20518 +}; + dbgKernelCacheInterface cacheInterface_Old90 = { //for old 3ds 9.0 @@ -167,6 +176,15 @@ dbgKernelCacheInterface cacheInterface_Old114 = (void*)0xFFF1FF54 }; +dbgKernelCacheInterface cacheInterface_Old118 = +{ + //for old 3ds 11.8 + (void*)0xFFF257B4, + (void*)0xFFF1D9C0, + (void*)0xFFF1D758, + (void*)0xFFF1FEB8 +}; + void kernelCallback(void) { u32 svc_patch_addr = bnConfig->SvcPatchAddr; @@ -196,6 +214,8 @@ void kernelCallback(void) cache = &cacheInterface_NEW113; else if (firmVersion == SYSTEM_VERSION(11, 4, 0)) cache = &cacheInterface_NEW114; + else if (firmVersion == SYSTEM_VERSION(11, 8, 0)) + cache = &cacheInterface_NEW118; } else { @@ -213,6 +233,8 @@ void kernelCallback(void) cache = &cacheInterface_Old113; else if (firmVersion == SYSTEM_VERSION(11, 4, 0)) cache = &cacheInterface_Old114; + else if (firmVersion == SYSTEM_VERSION(11, 8, 0)) + cache = &cacheInterface_Old118; } *(int *)(svc_patch_addr + 8) = 0xE1A00000; //NOP *(int *)(svc_patch_addr) = 0xE1A00000; //NOP