diff --git a/installer/Makefile b/installer/Makefile index 099ff78..66436da 100644 --- a/installer/Makefile +++ b/installer/Makefile @@ -16,7 +16,7 @@ sd_loader_elf := ../sd_loader/sd_loader.elf CFLAGS += -DUSE_SD_LOADER ASFLAGS += -DUSE_SD_LOADER -all: clean setup main532 +all: clean setup main532 main500 sd_loader.h: $(sd_loader_elf) xxd -i $< | sed "s/unsigned/static const unsigned/g;s/loader/loader/g;s/build_//g" > $@ diff --git a/installer/kernel_patches.S b/installer/kernel_patches.S index e467c03..238fcb4 100644 --- a/installer/kernel_patches.S +++ b/installer/kernel_patches.S @@ -16,6 +16,17 @@ #elif ((VER == 500) || (VER == 510)) #define BAT_SETUP_HOOK_ADDR 0xFFF1D518 + + #define BAT_SET_NOP_ADDR_1 0xFFF0697C + #define BAT_SET_NOP_ADDR_2 0xFFF06A08 + #define BAT_SET_NOP_ADDR_3 0xFFF003C8 + #define BAT_SET_NOP_ADDR_4 0xFFF003CC + #define BAT_SET_NOP_ADDR_5 0xFFF1D600 + #define BAT_SET_NOP_ADDR_6 0xFFF1D61C + #define BAT_SET_NOP_ADDR_7 0xFFF1D720 + + #define BAT_SET_NOP_ADDR_8 0xFFEE10B8 + #define BAT_SET_NOP_ADDR_9 0xFFEE10BC #elif ( (VER == 400) || (VER == 410) ) #define BAT_SETUP_HOOK_ADDR 0xFFF1AD00 #else diff --git a/installer/launcher.c b/installer/launcher.c index 493ff1b..21c9aee 100644 --- a/installer/launcher.c +++ b/installer/launcher.c @@ -27,9 +27,11 @@ #define ADDRESS_OSTitle_main_entry_ptr 0x1005CB00 #define ADDRESS_main_entry_hook 0x0101C15C - #define KERN_SYSCALL_TBL_5 0xFFEA9520 // works with browser - - #define PREP_TITLE_HOOK_ADDR 0xFFF18534 + #define KERN_SYSCALL_TBL_1 0xFFE84C70 // unknown + #define KERN_SYSCALL_TBL_2 0xFFE85070 // works with games + #define KERN_SYSCALL_TBL_3 0xFFE85470 // works with loader + #define KERN_SYSCALL_TBL_4 0xFFEA9120 // works with home menu + #define KERN_SYSCALL_TBL_5 0xFFEA9520 // works with browser (previously KERN_SYSCALL_TBL) #elif ( (VER == 400) || (VER == 410) ) #define ADDRESS_OSTitle_main_entry_ptr 0x1005A8C0 #define ADDRESS_main_entry_hook 0x0101BD4C diff --git a/src/dynamic_libs/socket_functions.c b/src/dynamic_libs/socket_functions.c index 9b8c9b1..aac9e8d 100644 --- a/src/dynamic_libs/socket_functions.c +++ b/src/dynamic_libs/socket_functions.c @@ -47,17 +47,6 @@ void InitSocketFunctionPointers(void) unsigned int *funcPointer = 0; OSDynLoad_Acquire("nsysnet.rpl", &nsysnet_handle); - unsigned int nn_ac_handle; - int(*ACInitialize)(); - int(*ACGetStartupId) (unsigned int *id); - int(*ACConnectWithConfigId) (unsigned int id); - int(*ACGetAssignedAddress) (u32 * ip); - OSDynLoad_Acquire("nn_ac.rpl", &nn_ac_handle); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACInitialize", &ACInitialize); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACGetStartupId", &ACGetStartupId); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACConnectWithConfigId",&ACConnectWithConfigId); - OSDynLoad_FindExport(nn_ac_handle, 0, "ACGetAssignedAddress",&ACGetAssignedAddress); - OS_FIND_EXPORT(nsysnet_handle, socket_lib_init); OS_FIND_EXPORT(nsysnet_handle, socket); OS_FIND_EXPORT(nsysnet_handle, socketclose); @@ -73,12 +62,6 @@ void InitSocketFunctionPointers(void) OS_FIND_EXPORT(nsysnet_handle, inet_ntoa); OS_FIND_EXPORT(nsysnet_handle, inet_aton); - unsigned int nn_startupid; - ACInitialize(); - ACGetStartupId(&nn_startupid); - ACConnectWithConfigId(nn_startupid); - ACGetAssignedAddress(&hostIpAddress); - socket_lib_init(); } diff --git a/src/sounds/SoundHandler.cpp b/src/sounds/SoundHandler.cpp index c5ba819..60a55a6 100644 --- a/src/sounds/SoundHandler.cpp +++ b/src/sounds/SoundHandler.cpp @@ -25,6 +25,7 @@ ***************************************************************************/ #include #include +#include "common/common.h" #include "dynamic_libs/ax_functions.h" #include "fs/CFile.hpp" #include "SoundHandler.hpp" @@ -256,7 +257,15 @@ void SoundHandler::executeThread() AXRegisterFrameCallback(NULL); AXQuit(); - for(u32 i = 0; i < MAX_DECODERS; ++i) + // deleting the last voice from the decoder produced DSI errors on 5.0.0 so we skip it + // expecting same behaviour on every FW below 532 + u32 delete_skip = 0; + if(OS_FIRMWARE < 532) + { + delete_skip = 1; + } + + for(u32 i = 0; i < MAX_DECODERS - delete_skip; ++i) { delete voiceList[i]; voiceList[i] = NULL;