From a3e94d6b558893afd6f6fcae4582a6168ab67e53 Mon Sep 17 00:00:00 2001 From: staphen Date: Sat, 20 Aug 2022 23:58:15 -0400 Subject: [PATCH] [Switch] Bundle assets directly in romfs --- CMake/platforms/switch.cmake | 1 + CMakeLists.txt | 20 +------------------- Source/init.cpp | 4 +--- Source/utils/paths.cpp | 2 +- 4 files changed, 4 insertions(+), 23 deletions(-) diff --git a/CMake/platforms/switch.cmake b/CMake/platforms/switch.cmake index 440f81111..54380c7ee 100644 --- a/CMake/platforms/switch.cmake +++ b/CMake/platforms/switch.cmake @@ -3,6 +3,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/switch") set(ASAN OFF) set(UBSAN OFF) set(BUILD_TESTING OFF) +set(BUILD_ASSETS_MPQ OFF) set(DEVILUTIONX_SYSTEM_SDL_IMAGE OFF) set(DEVILUTIONX_SYSTEM_LIBSODIUM OFF) diff --git a/CMakeLists.txt b/CMakeLists.txt index f9928bcd2..94d50455b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -371,21 +371,6 @@ if(APPLE) endif() if(NINTENDO_SWITCH) - set(APP_ROMFS "${CMAKE_BINARY_DIR}/romfs") - - add_custom_target(romfs_directory - COMMAND ${CMAKE_COMMAND} -E make_directory ${APP_ROMFS}) - - add_custom_target(romfs_files - COMMAND ${CMAKE_COMMAND} -E copy ${DEVILUTIONX_MPQ} ${APP_ROMFS} - DEPENDS ${DEVILUTIONX_MPQ}) - - # the romfs_directory target will create this directory at build time, - # but the nx_create_nro function requires it to also exist at configure time - file(MAKE_DIRECTORY ${APP_ROMFS}) - - add_dependencies(romfs_files romfs_directory devilutionx_mpq) - nx_generate_nacp (${BIN_TARGET}.nacp NAME "DevilutionX" AUTHOR "Devilution Team" @@ -395,11 +380,8 @@ if(NINTENDO_SWITCH) nx_create_nro(${BIN_TARGET} NACP ${BIN_TARGET}.nacp ICON "${PROJECT_SOURCE_DIR}/Packaging/switch/icon.jpg" - ROMFS ${APP_ROMFS} + ROMFS ${DEVILUTIONX_ASSETS_OUTPUT_DIRECTORY} ) - - add_dependencies(${BIN_TARGET}_nro romfs_files) - endif() if(VITA) diff --git a/Source/init.cpp b/Source/init.cpp index 56764dfe3..3f3be7c15 100644 --- a/Source/init.cpp +++ b/Source/init.cpp @@ -95,8 +95,6 @@ std::vector GetMPQSearchPaths() #if defined(__unix__) && !defined(__ANDROID__) paths.emplace_back("/usr/share/diasurgical/devilutionx/"); paths.emplace_back("/usr/local/share/diasurgical/devilutionx/"); -#elif defined(__SWITCH__) - paths.emplace_back("romfs:/"); #elif defined(NXDK) paths.emplace_back("D:\\"); #elif (defined(_WIN64) || defined(_WIN32)) && !defined(__UWP__) && !defined(NXDK) @@ -152,7 +150,7 @@ void LoadCoreArchives() { auto paths = GetMPQSearchPaths(); -#if !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__3DS__) +#if !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__3DS__) && !defined(__SWITCH__) // Load devilutionx.mpq first to get the font file for error messages devilutionx_mpq = LoadMPQ(paths, "devilutionx.mpq"); #endif diff --git a/Source/utils/paths.cpp b/Source/utils/paths.cpp index b96786712..8186f147c 100644 --- a/Source/utils/paths.cpp +++ b/Source/utils/paths.cpp @@ -122,7 +122,7 @@ const std::string &AssetsPath() assetsPath.emplace("assets/"); #elif defined(NXDK) assetsPath.emplace("D:\\assets\\"); -#elif defined(__3DS__) +#elif defined(__3DS__) || defined(__SWITCH__) assetsPath.emplace("romfs:/"); #else assetsPath.emplace(FromSDL(SDL_GetBasePath()) + ("assets" DIRECTORY_SEPARATOR_STR));