From 183ce0e86f7c7796568607b5239035406ea448d2 Mon Sep 17 00:00:00 2001 From: robojumper Date: Sat, 27 Sep 2025 15:47:58 +0200 Subject: d_lang OK --- src/REL/d/d_s_boot.cpp | 18 +++++++++--------- src/d/d_dvd_drive_error.cpp | 9 ++++----- src/d/d_lang.cpp | 19 +++++++++++++++++++ src/d/d_message.cpp | 8 ++++---- src/d/lyt/d_lyt_auto_explain.cpp | 5 ++--- src/d/lyt/d_lyt_game_over.cpp | 9 ++++----- src/d/lyt/d_lyt_pause.cpp | 2 +- 7 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 src/d/d_lang.cpp (limited to 'src') diff --git a/src/REL/d/d_s_boot.cpp b/src/REL/d/d_s_boot.cpp index 349b46a1..e4189c29 100644 --- a/src/REL/d/d_s_boot.cpp +++ b/src/REL/d/d_s_boot.cpp @@ -10,6 +10,7 @@ #include "d/d_gfx.h" #include "d/d_hbm.h" #include "d/d_heap.h" +#include "d/d_lang.h" #include "d/d_message.h" #include "d/d_pad.h" #include "d/d_pad_manager.h" @@ -57,9 +58,6 @@ sFPhaseBase::sFPhaseState dScBoot_c::executeLoadPhase() { return mPhases.step(); } -extern "C" u8 getUsedLanguageNTSCNum(); -extern "C" u8 fn_80054F30(); - sFPhaseBase::sFPhaseState dScBoot_c::cb1() { LayoutArcManager::GetInstance()->loadLayoutArcFromDisk("cursor", mHeap::g_archiveHeap); LayoutArcManager::GetInstance()->loadLayoutArcFromDisk("CursorStick", mHeap::g_archiveHeap); @@ -134,12 +132,14 @@ sFPhaseBase::sFPhaseState dScBoot_c::cb6() { LayoutArcManager::GetInstance()->loadLayoutArcFromDisk("Main2D", nullptr); LayoutArcManager::GetInstance()->loadLayoutArcFromDisk("DoButton", nullptr); LayoutArcManager::GetInstance()->loadLayoutArcFromDisk("MenuHelp", nullptr); - u8 result = fn_80054F30(); + u8 result = getCurrentLanguage1(); s32 gameOverType; - if (result == 3) { + if (result == D_LANG_FR) { gameOverType = 1; + } else if (result == D_LANG_ES) { + gameOverType = 2; } else { - gameOverType = result == 4 ? 2 : 0; + gameOverType = 0; } if (gameOverType == 0) { @@ -336,13 +336,13 @@ void dScBoot_c::drawCallback() { dScBoot_c::strap_c::strap_c() { SizedString<8> str; - u8 langNum = getUsedLanguageNTSCNum(); + u8 langNum = getCurrentLanguage(); mArcName.empty(); mLytFileName.empty(); mAnimFileName.empty(); - if (langNum == 3) { + if (langNum == D_LANG_FR) { str = "F"; - } else if (langNum == 4) { + } else if (langNum == D_LANG_ES) { str = "S"; } else { str = "U"; diff --git a/src/d/d_dvd_drive_error.cpp b/src/d/d_dvd_drive_error.cpp index d27fdedc..461c98c4 100644 --- a/src/d/d_dvd_drive_error.cpp +++ b/src/d/d_dvd_drive_error.cpp @@ -2,6 +2,7 @@ #include "d/d_dvd_unk.h" #include "d/d_gfx.h" +#include "d/d_lang.h" #include "d/d_lyt_hio.h" #include "d/d_reset.h" #include "egg/gfx/eggDrawGX.h" @@ -64,8 +65,6 @@ static const wchar_t *sErrorsFr[] = { sErrFrDiskError, }; -extern "C" u8 fn_80054F30(); - void dDvdDriveError_c::draw() { EGG::Screen screen; screen.SetCanvasMode(EGG::Screen::CANVASMODE_0); @@ -105,11 +104,11 @@ void dDvdDriveError_c::draw() { idx = 2; } - u8 lang = fn_80054F30(); + u8 lang = getCurrentLanguage1(); const wchar_t *str; - if (lang == 3) { + if (lang == D_LANG_FR) { str = sErrorsFr[idx]; - } else if (lang == 4) { + } else if (lang == D_LANG_ES) { str = sErrorsEs[idx]; } else { str = sErrorsEn[idx]; diff --git a/src/d/d_lang.cpp b/src/d/d_lang.cpp new file mode 100644 index 00000000..80dd9e00 --- /dev/null +++ b/src/d/d_lang.cpp @@ -0,0 +1,19 @@ +#include "d/d_lang.h" + +#include "rvl/SC/scapi.h" + +u8 getCurrentLanguage1() { + return getCurrentLanguage2(); +} + +u8 getCurrentLanguage2() { + return getCurrentLanguage(); +} + +u8 getCurrentLanguage() { + u8 lang = SCGetLanguage(); + if (lang != SC_LANG_FR && lang != SC_LANG_SP) { + lang = SC_LANG_EN; + } + return lang; +} diff --git a/src/d/d_message.cpp b/src/d/d_message.cpp index 7dbb76c4..c4490b60 100644 --- a/src/d/d_message.cpp +++ b/src/d/d_message.cpp @@ -6,6 +6,7 @@ #include "d/a/d_a_itembase.h" #include "d/a/d_a_player.h" #include "d/d_base.h" +#include "d/d_lang.h" #include "d/d_light_env.h" #include "d/d_lyt_hio.h" #include "d/d_player.h" @@ -1776,13 +1777,12 @@ void dMessage_c::reset() { mMinigameTime = 0; } -extern "C" u8 fn_80054F30(); static SizedString<8> sCurrentLanguage; const char *dMessage_c::getLanguageIdentifier() { - u8 lang = fn_80054F30(); - if (lang == 3) { + u8 lang = getCurrentLanguage1(); + if (lang == D_LANG_FR) { sCurrentLanguage = "fr_US"; - } else if (lang == 4) { + } else if (lang == D_LANG_ES) { sCurrentLanguage = "es_US"; } else { sCurrentLanguage = "en_US"; diff --git a/src/d/lyt/d_lyt_auto_explain.cpp b/src/d/lyt/d_lyt_auto_explain.cpp index 4c3e87fd..946ff95d 100644 --- a/src/d/lyt/d_lyt_auto_explain.cpp +++ b/src/d/lyt/d_lyt_auto_explain.cpp @@ -1,6 +1,7 @@ #include "d/lyt/d_lyt_auto_explain.h" #include "common.h" +#include "d/d_lang.h" #include "d/d_tag_processor.h" #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_control_game.h" @@ -45,11 +46,9 @@ void dLytAutoExplain_c::executeState_Invisible() { } void dLytAutoExplain_c::finalizeState_Invisible() {} -extern "C" u8 fn_80054F30(); - void dLytAutoExplain_c::initializeState_In() { int numLines = mpTagProcessor->getNumLinesMaybe() - 1; - if (fn_80054F30() != 0 && numLines == 3) { + if (getCurrentLanguage1() != D_LANG_JP && numLines == 3) { numLines = 2; } diff --git a/src/d/lyt/d_lyt_game_over.cpp b/src/d/lyt/d_lyt_game_over.cpp index f50045fd..b3939590 100644 --- a/src/d/lyt/d_lyt_game_over.cpp +++ b/src/d/lyt/d_lyt_game_over.cpp @@ -3,6 +3,7 @@ #include "common.h" #include "d/d_base.h" #include "d/d_fader.h" +#include "d/d_lang.h" #include "d/d_message.h" #include "d/d_sc_game.h" #include "d/d_sc_title.h" @@ -62,14 +63,12 @@ dLytGameOver_c::dLytGameOver_c() : mStateMgr(*this) { init(); } -extern "C" u8 fn_80054F30(); - bool dLytGameOver_c::build() { - u8 lang = fn_80054F30(); + u8 lang = getCurrentLanguage1(); s32 variant; - if (lang == 3) { + if (lang == D_LANG_FR) { variant = 1; - } else if (lang == 4) { + } else if (lang == D_LANG_ES) { variant = 2; } else { variant = 0; diff --git a/src/d/lyt/d_lyt_pause.cpp b/src/d/lyt/d_lyt_pause.cpp index 926de978..aa6cc565 100644 --- a/src/d/lyt/d_lyt_pause.cpp +++ b/src/d/lyt/d_lyt_pause.cpp @@ -358,7 +358,7 @@ void dLytPauseMain_c::initializeState_Select() { mpPauseText->requestIn(); } } -extern "C" void fn_80059F40(void *); + void dLytPauseMain_c::executeState_Select() { switch (mStep) { case 0: { -- cgit v1.2.3