From b1714b4e64fcd6e026f8218e4d4c7b3077478f51 Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Sun, 29 Jun 2025 13:29:38 -0400 Subject: [PATCH] Separate 3DS apt hook code + move cmake 3ds into ISLE_BUILD_APP --- CMakeLists.txt | 32 ++++++++++++++++---------------- ISLE/3ds/apthooks.cpp | 7 +++++++ ISLE/3ds/apthooks.h | 1 + ISLE/isleapp.cpp | 6 +----- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f287ebc9..2bd2450a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -520,6 +520,22 @@ if (ISLE_BUILD_APP) target_compile_definitions(isle PRIVATE "ISLE_EMSCRIPTEN_HOST=\"${ISLE_EMSCRIPTEN_HOST}\"") set_property(TARGET isle PROPERTY SUFFIX ".html") endif() + if(NINTENDO_3DS) + target_sources(isle PRIVATE + ISLE/3ds/apthooks.cpp + ISLE/3ds/filesystem.cpp + ) + ctr_generate_smdh(isle.smdh + NAME "LEGO Island" + TITLE "LEGO Island" + DESCRIPTION "LEGO Island for the Nintendo 3DS" + AUTHOR "isledecomp/isle-portable" + VERSION "${PROJECT_VERSION}" + ICON "ISLE/res/3ds/isle.png" + ) + + ctr_create_3dsx(isle SMDH isle.smdh) + endif() endif() if (ISLE_BUILD_CONFIG) @@ -645,22 +661,6 @@ endif() set(CPACK_PACKAGE_DIRECTORY "dist") set(CPACK_PACKAGE_FILE_NAME "isle-${PROJECT_VERSION}-${ISLE_PACKAGE_NAME}-${CMAKE_SYSTEM_PROCESSOR}") -if(NINTENDO_3DS) - target_sources(isle PRIVATE - ISLE/3ds/apthooks.cpp - ISLE/3ds/filesystem.cpp - ) - ctr_generate_smdh(isle.smdh - NAME "LEGO Island" - TITLE "LEGO Island" - DESCRIPTION "LEGO Island for the Nintendo 3DS" - AUTHOR "isledecomp/isle-portable" - VERSION "${PROJECT_VERSION}" - ICON "ISLE/res/3ds/isle.png" - ) - - ctr_create_3dsx(isle SMDH isle.smdh) -endif() if(MSVC) set(CPACK_GENERATOR ZIP) else() diff --git a/ISLE/3ds/apthooks.cpp b/ISLE/3ds/apthooks.cpp index e7ba95cf..3cd9c3e1 100644 --- a/ISLE/3ds/apthooks.cpp +++ b/ISLE/3ds/apthooks.cpp @@ -3,6 +3,8 @@ #include "legomain.h" #include "misc.h" +aptHookCookie g_aptCookie; + void N3DS_AptHookCallback(APT_HookType hookType, void* param) { switch (hookType) { @@ -21,3 +23,8 @@ void N3DS_AptHookCallback(APT_HookType hookType, void* param) break; } } + +void N3DS_SetupAptHooks() +{ + aptHook(&g_aptCookie, N3DS_AptHookCallback, NULL); +} diff --git a/ISLE/3ds/apthooks.h b/ISLE/3ds/apthooks.h index 66aeacfb..7bfa30f7 100644 --- a/ISLE/3ds/apthooks.h +++ b/ISLE/3ds/apthooks.h @@ -4,5 +4,6 @@ #include <3ds.h> void N3DS_AptHookCallback(APT_HookType hookType, void* param); +void N3DS_SetupAptHooks(); #endif // N3DS_APTHOOKS_H diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index acb6b40b..3369e74a 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -53,8 +53,6 @@ #ifdef __3DS__ #include "3ds/apthooks.h" #include "3ds/filesystem.h" - -aptHookCookie g_aptCookie; #endif DECOMP_SIZE_ASSERT(IsleApp, 0x8c) @@ -321,11 +319,9 @@ SDL_AppResult SDL_AppInit(void** appstate, int argc, char** argv) NULL ); #endif - #ifdef __3DS__ - aptHook(&g_aptCookie, N3DS_AptHookCallback, NULL); + N3DS_SetupAptHooks(); #endif - return SDL_APP_CONTINUE; }