Create 3DS default config overrides

This commit is contained in:
Joshua Peisach 2025-06-29 10:33:08 -04:00
parent 019f055b77
commit 2b7287452c
No known key found for this signature in database
GPG Key ID: 41C3D4189AFEDB5A
4 changed files with 49 additions and 0 deletions

View File

@ -646,6 +646,9 @@ 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/filesystem.cpp
)
ctr_generate_smdh(isle.smdh
NAME "LEGO Island"
TITLE "LEGO Island"

31
ISLE/3ds/filesystem.cpp Normal file
View File

@ -0,0 +1,31 @@
#include "filesystem.h"
#include <SDL3/SDL_log.h>
#include <iniparser.h>
void N3DS_SetupDefaultConfigOverrides(dictionary* p_dictionary)
{
SDL_Log("Overriding default config for 3DS");
// We are currently not bundling the assets into romfs.
// User must place assets in sdmc:/3ds/isle where
// sdmc:/3ds/isle/LEGO/SCRIPTS/CREDITS.si exists, for example.
iniparser_set(p_dictionary, "isle:diskpath", "sdmc:/3ds/isle/LEGO/disk");
iniparser_set(p_dictionary, "isle:cdpath", "sdmc:/3ds/isle");
// TODO: Save path: can we use libctru FS save data functions? Would be neat, especially for CIA install
// Extra / at the end causes some issues
iniparser_set(p_dictionary, "isle:savepath", "sdmc:/3ds/isle");
// We are currently just rendering to the touch screen
iniparser_set(p_dictionary, "isle:Full Screen", "true");
// Wide view angle takes more resources
iniparser_set(p_dictionary, "isle:Wide View Angle", "false");
// Set back buffers in video RAM
iniparser_set(p_dictionary, "isle:Back Buffers in Video RAM", "1");
// Use e_noAnimation/cut transition
iniparser_set(p_dictionary, "isle:Transition Type", "1");
}

8
ISLE/3ds/filesystem.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef N3DS_FILESYSTEM_H
#define N3DS_FILESYSTEM_H
#include "dictionary.h"
void N3DS_SetupDefaultConfigOverrides(dictionary* p_dictionary);
#endif // N3DS_FILESYSTEM_H

View File

@ -50,6 +50,10 @@
#include "emscripten/messagebox.h"
#endif
#ifdef __3DS__
#include "3ds/filesystem.h"
#endif
DECOMP_SIZE_ASSERT(IsleApp, 0x8c)
// GLOBAL: ISLE 0x410030
@ -824,6 +828,9 @@ bool IsleApp::LoadConfig()
iniparser_set(dict, "isle:Max Allowed Extras", SDL_itoa(m_maxAllowedExtras, buf, 10));
iniparser_set(dict, "isle:Transition Type", SDL_itoa(m_transitionType, buf, 10));
#ifdef __3DS__
N3DS_SetupDefaultConfigOverrides(dict);
#endif
iniparser_dump_ini(dict, iniFP);
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "New config written at '%s'", iniConfig);
fclose(iniFP);