diff --git a/CMake/vita_defs.cmake b/CMake/vita_defs.cmake index 334ad2295..b7f276c22 100644 --- a/CMake/vita_defs.cmake +++ b/CMake/vita_defs.cmake @@ -2,4 +2,4 @@ set(ASAN OFF) set(UBSAN OFF) set(NONET ON) set(PREFILL_PLAYER_NAME ON) - \ No newline at end of file +add_definitions("-DMO_LANG_DIR=\"app0:/\"") diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c529c4cf..331f419e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -786,6 +786,7 @@ endif() if (VITA) target_link_libraries(libdevilutionx PUBLIC ScePower_stub + SceAppUtil_stub freetype png z diff --git a/Source/options.cpp b/Source/options.cpp index b8bd14487..9db58a0a6 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -13,6 +13,11 @@ #include #endif +#ifdef __vita__ +#include +#include +#endif + #define SI_SUPPORT_IOSTREAMS #include @@ -292,6 +297,38 @@ void LoadOptions() env->DeleteLocalRef(jLocale); env->DeleteLocalRef(activity); env->DeleteLocalRef(clazz); +#elif defined(__vita__) + int32_t language; + const char* vita_locales[] = { + "ja_JP", + "en_US", + "fr_FR", + "es_ES", + "de_DE", + "it_IT", + "nl_NL", + "pt_PT", + "ru_RU", + "ko_KR", + "zh_TW", + "zh_CN", + "fi_FI", + "sv_SE", + "da_DK", + "no_NO", + "pl_PL", + "pt_BR", + "en_GB", + "tr_TR", + }; + SceAppUtilInitParam initParam; + SceAppUtilBootParam bootParam; + memset( &initParam, 0, sizeof(SceAppUtilInitParam) ); + memset( &bootParam, 0, sizeof(SceAppUtilBootParam) ); + sceAppUtilInit( &initParam, &bootParam ); + sceAppUtilSystemParamGetInt(SCE_SYSTEM_PARAM_ID_LANG, &language); + std::string locale = std::string(vita_locales[language]); + sceAppUtilShutdown(); #else std::string locale = std::locale("").name().substr(0, 5); #endif