Browse Source

[Switch] Bundle assets directly in romfs

pull/5263/head
staphen 4 years ago committed by Anders Jenbo
parent
commit
a3e94d6b55
  1. 1
      CMake/platforms/switch.cmake
  2. 20
      CMakeLists.txt
  3. 4
      Source/init.cpp
  4. 2
      Source/utils/paths.cpp

1
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)

20
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)

4
Source/init.cpp

@ -95,8 +95,6 @@ std::vector<std::string> 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

2
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));

Loading…
Cancel
Save