From fafb83c24e33129bea54241dc4faf8bf80eed1bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 24 Jun 2022 17:17:38 -0500 Subject: [PATCH 01/25] Use separate language tables in different files --- .gitignore | 1 + include/message_data_static.h | 6 ++++-- roms/EUR_MQD/text/fra_message_data_static.cpp | 4 ++-- roms/EUR_MQD/text/ger_message_data_static.cpp | 4 ++-- roms/EUR_MQD/text/nes_message_data_static.cpp | 16 ++++++++++++++-- roms/PAL_1.0/text/fra_message_data_static.cpp | 4 ++-- roms/PAL_1.0/text/ger_message_data_static.cpp | 4 ++-- roms/PAL_1.0/text/nes_message_data_static.cpp | 16 ++++++++++++++-- setup.py | 5 ++++- src/code/z_message_PAL.cpp | 12 ++++++------ 10 files changed, 51 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index e65346bed..bf6812569 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,7 @@ vs/build *.obj *.mtl *.fbx +*.enc.h !*_custom* .extracted-assets.json assets/ diff --git a/include/message_data_static.h b/include/message_data_static.h index 292775e44..b4ddcf282 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -46,12 +46,14 @@ struct MessageTableEntry #undef DEFINE_MESSAGE +/*, spaMessage */ #define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ extern "C" const char _message_##textId##_nes[]; \ extern "C" const char _message_##textId##_ger[]; \ - extern "C" const char _message_##textId##_fra[]; + extern "C" const char _message_##textId##_fra[]; \ + //extern "C" const char _message_##textId##_spa[]; -#include "text/message_data.h" +#include "translations/message_data_en.h" extern "C" const char _message_0xFFFC_nes[73]; #undef DEFINE_MESSAGE diff --git a/roms/EUR_MQD/text/fra_message_data_static.cpp b/roms/EUR_MQD/text/fra_message_data_static.cpp index 728ec664b..ac7b9a828 100644 --- a/roms/EUR_MQD/text/fra_message_data_static.cpp +++ b/roms/EUR_MQD/text/fra_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, fraMessage) \ const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; -#include "text/message_data.enc.h" +#include "translations/message_data_fr.enc.h" diff --git a/roms/EUR_MQD/text/ger_message_data_static.cpp b/roms/EUR_MQD/text/ger_message_data_static.cpp index 4b3dddde2..a72b0a036 100644 --- a/roms/EUR_MQD/text/ger_message_data_static.cpp +++ b/roms/EUR_MQD/text/ger_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, gerMessage) \ const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; -#include "text/message_data.enc.h" +#include "translations/message_data_de.enc.h" diff --git a/roms/EUR_MQD/text/nes_message_data_static.cpp b/roms/EUR_MQD/text/nes_message_data_static.cpp index 1c4cff1e8..ae6fc46b1 100644 --- a/roms/EUR_MQD/text/nes_message_data_static.cpp +++ b/roms/EUR_MQD/text/nes_message_data_static.cpp @@ -3,12 +3,24 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage) \ const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; #define DEFINE_MESSAGE_FFFC -#include "text/message_data.enc.h" +#include "translations/message_data_en.enc.h" +#ifdef DEFINE_MESSAGE_FFFC +DEFINE_MESSAGE(0xFFFC, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, +"0123456789" +"ABCDEFGHIJKLMN" +"OPQRSTUVWXYZ" +"abcdefghijklmn" +"opqrstuvwxyz" +" -." +) +#endif + +DEFINE_MESSAGE(0xFFFD, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, "") #undef DEFINE_MESSAGE_FFFC diff --git a/roms/PAL_1.0/text/fra_message_data_static.cpp b/roms/PAL_1.0/text/fra_message_data_static.cpp index 728ec664b..ac7b9a828 100644 --- a/roms/PAL_1.0/text/fra_message_data_static.cpp +++ b/roms/PAL_1.0/text/fra_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, fraMessage) \ const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; -#include "text/message_data.enc.h" +#include "translations/message_data_fr.enc.h" diff --git a/roms/PAL_1.0/text/ger_message_data_static.cpp b/roms/PAL_1.0/text/ger_message_data_static.cpp index 4b3dddde2..a72b0a036 100644 --- a/roms/PAL_1.0/text/ger_message_data_static.cpp +++ b/roms/PAL_1.0/text/ger_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, gerMessage) \ const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; -#include "text/message_data.enc.h" +#include "translations/message_data_de.enc.h" diff --git a/roms/PAL_1.0/text/nes_message_data_static.cpp b/roms/PAL_1.0/text/nes_message_data_static.cpp index 1c4cff1e8..ae6fc46b1 100644 --- a/roms/PAL_1.0/text/nes_message_data_static.cpp +++ b/roms/PAL_1.0/text/nes_message_data_static.cpp @@ -3,12 +3,24 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage) \ const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; #define DEFINE_MESSAGE_FFFC -#include "text/message_data.enc.h" +#include "translations/message_data_en.enc.h" +#ifdef DEFINE_MESSAGE_FFFC +DEFINE_MESSAGE(0xFFFC, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, +"0123456789" +"ABCDEFGHIJKLMN" +"OPQRSTUVWXYZ" +"abcdefghijklmn" +"opqrstuvwxyz" +" -." +) +#endif + +DEFINE_MESSAGE(0xFFFD, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, "") #undef DEFINE_MESSAGE_FFFC diff --git a/setup.py b/setup.py index 26bde4c58..cea3cca9d 100755 --- a/setup.py +++ b/setup.py @@ -47,7 +47,10 @@ def build(): subprocess.check_call([sys.executable, str('tools/extract_z64_variables.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/convert_assets.py'), buildRom()]) mkdir(assetPath('text')) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data.h')), str(assetPath('text/message_data.enc.h')), buildRom()]) + //subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data.h')), str(assetPath('text/message_data.enc.h')), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) subprocess.check_call([sys.executable, str('tools/extract_missing_assets.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/create_luts.py'), buildRom()]) diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index ae1eb0b33..ad4af47f5 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -69,24 +69,24 @@ u16 sOcarinaSongBitFlags = 0; // ocarina bit flags #include "message_data_fmt.h" MessageTableEntry sNesMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_nes, sizeof(nesMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_nes, sizeof(nesMessage)}, #define DEFINE_MESSAGE_FFFC -#include "text/message_data.h" +#include "translations/message_data_en.h" #undef DEFINE_MESSAGE_FFFC #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sGerMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_ger, sizeof(gerMessage)}, -#include "text/message_data.h" +#define DEFINE_MESSAGE(textId, type, yPos, gerMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_ger, sizeof(gerMessage)}, +#include "translations/message_data_de.h" #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sFraMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_fra, sizeof(fraMessage)}, -#include "text/message_data.h" +#define DEFINE_MESSAGE(textId, type, yPos, fraMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_fra, sizeof(fraMessage)}, +#include "translations/message_data_fr.h" #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, }; From 467f3bf0f06d54d93716e47e50be1e70c4191a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 2 Sep 2022 22:44:09 -0500 Subject: [PATCH 02/25] Add the Spanish language again TODO: Add assets in Spanish --- include/message_data_static.h | 5 ++-- include/z64message.h | 1 + roms/EUR_MQD/text/charmap.txt | 12 +++++++++ roms/EUR_MQD/text/spa_message_data_static.cpp | 9 +++++++ roms/PAL_1.0/text/charmap.txt | 12 +++++++++ roms/PAL_1.0/text/spa_message_data_static.cpp | 9 +++++++ setup.py | 1 + src/code/z_message_PAL.cpp | 27 +++++++++++++++---- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 2 +- src/port/options.cpp | 12 +++++++++ src/port/window/sdl/window_sdl2.cpp | 5 ++++ tools/msgdis.py | 12 +++++++++ vs/OOT_Assets.vcxproj | 1 + 13 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 roms/EUR_MQD/text/spa_message_data_static.cpp create mode 100644 roms/PAL_1.0/text/spa_message_data_static.cpp diff --git a/include/message_data_static.h b/include/message_data_static.h index b4ddcf282..1b2513551 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -46,12 +46,11 @@ struct MessageTableEntry #undef DEFINE_MESSAGE -/*, spaMessage */ -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, spaMessage) \ extern "C" const char _message_##textId##_nes[]; \ extern "C" const char _message_##textId##_ger[]; \ extern "C" const char _message_##textId##_fra[]; \ - //extern "C" const char _message_##textId##_spa[]; + extern "C" const char _message_##textId##_spa[]; #include "translations/message_data_en.h" extern "C" const char _message_0xFFFC_nes[73]; diff --git a/include/z64message.h b/include/z64message.h index aee49230d..14b9cd0bd 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -17,6 +17,7 @@ enum Language LANGUAGE_ENG, LANGUAGE_GER, LANGUAGE_FRA, + LANGUAGE_SPA, LANGUAGE_MAX }; diff --git a/roms/EUR_MQD/text/charmap.txt b/roms/EUR_MQD/text/charmap.txt index e68a67228..dbe035240 100644 --- a/roms/EUR_MQD/text/charmap.txt +++ b/roms/EUR_MQD/text/charmap.txt @@ -1,6 +1,18 @@ { '\n' : 0x01, + 'Í' : 0xAC, + 'Ó' : 0xAD, + 'Ú' : 0xAE, + 'í' : 0xAF, + 'ó' : 0xB0, + 'ú' : 0xB1, + '¿' : 0xB2, + '¡' : 0xB3, + 'Á' : 0xB4, + 'Ñ' : 0xB5, + 'ñ' : 0xB6, + '‾' : 0x7F, 'À' : 0x80, 'î' : 0x81, diff --git a/roms/EUR_MQD/text/spa_message_data_static.cpp b/roms/EUR_MQD/text/spa_message_data_static.cpp new file mode 100644 index 000000000..7300584d2 --- /dev/null +++ b/roms/EUR_MQD/text/spa_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, spaMessage) \ + const char _message_##textId##_spa[sizeof(spaMessage END)] = { spaMessage END }; + +#include "translations/message_data_es.enc.h" diff --git a/roms/PAL_1.0/text/charmap.txt b/roms/PAL_1.0/text/charmap.txt index e68a67228..dbe035240 100644 --- a/roms/PAL_1.0/text/charmap.txt +++ b/roms/PAL_1.0/text/charmap.txt @@ -1,6 +1,18 @@ { '\n' : 0x01, + 'Í' : 0xAC, + 'Ó' : 0xAD, + 'Ú' : 0xAE, + 'í' : 0xAF, + 'ó' : 0xB0, + 'ú' : 0xB1, + '¿' : 0xB2, + '¡' : 0xB3, + 'Á' : 0xB4, + 'Ñ' : 0xB5, + 'ñ' : 0xB6, + '‾' : 0x7F, 'À' : 0x80, 'î' : 0x81, diff --git a/roms/PAL_1.0/text/spa_message_data_static.cpp b/roms/PAL_1.0/text/spa_message_data_static.cpp new file mode 100644 index 000000000..7300584d2 --- /dev/null +++ b/roms/PAL_1.0/text/spa_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, spaMessage) \ + const char _message_##textId##_spa[sizeof(spaMessage END)] = { spaMessage END }; + +#include "translations/message_data_es.enc.h" diff --git a/setup.py b/setup.py index cea3cca9d..2c7b97cfe 100755 --- a/setup.py +++ b/setup.py @@ -51,6 +51,7 @@ def build(): subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) subprocess.check_call([sys.executable, str('tools/extract_missing_assets.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/create_luts.py'), buildRom()]) diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index ad4af47f5..b1507deb7 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -91,6 +91,13 @@ MessageTableEntry sFraMessageEntryTable[] = { {0xFFFF, 0, NULL, 0}, }; +MessageTableEntry sSpaMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, spaMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_spa, sizeof(spaMessage)}, +#include "translations/message_data_es.h" +#undef DEFINE_MESSAGE + {0xFFFF, 0, NULL, 0}, +}; + MessageTableEntry sStaffMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff, sizeof(staffMessage)}, #include "text/message_data_staff.h" @@ -639,7 +646,7 @@ void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) } #define MESSAGE_SPACE_WIDTH 6 -f32 sFontWidths[144] = { +f32 sFontWidths[151] = { 8.0f, // ' ' 8.0f, // '!' 6.0f, // '"' @@ -780,10 +787,17 @@ f32 sFontWidths[144] = { 14.0f, // '▼' 14.0f, // '[Control-Pad]' 14.0f, // '[D-Pad]' - 14.0f, // ? - 14.0f, // ? - 14.0f, // ? - 14.0f, // ? + 4.0f, // 'Í' + 13.0f, // 'Ó' + 10.0f, // 'Ú' + 4.0f, // 'í' + 9.0f, // 'ó' + 9.0f, // 'ú' + 11.0f, // '¿' + 8.0f, // '¡' + 12.0f, // 'Á' + 11.0f, // 'Ñ' + 9.0f, // 'ñ' }; u16 Message_DrawItemIcon(GlobalContext* globalCtx, u16 itemId, Gfx** p, u16 i) @@ -3804,6 +3818,9 @@ void Message_SetTables(void) case LANGUAGE_FRA: sMessageEntryTablePtr = sFraMessageEntryTable; break; + case LANGUAGE_SPA: + sMessageEntryTablePtr = sSpaMessageEntryTable; + break; case LANGUAGE_ENG: default: sMessageEntryTablePtr = sNesMessageEntryTable; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index 4c5cb7c16..d90905ca8 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -34,7 +34,7 @@ static u8 noControllerFontIndexes_28[] = { }; static u8 pressStartFontIndexes_28[] = { - 0x19, 0x1B, 0x0E, 0x1C, 0x1C, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, + 0x19, 0x1E, 0x15, 0x1C, 0x0A, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, }; static void* effectMaskTextures_28[] = { diff --git a/src/port/options.cpp b/src/port/options.cpp index f53c10dfe..c9499aa60 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -24,6 +24,8 @@ std::string languageGetString(Language id) { case LANGUAGE_ENG: return "en"; + case LANGUAGE_SPA: + return "es"; case LANGUAGE_FRA: return "fr"; case LANGUAGE_GER: @@ -38,6 +40,10 @@ Language languageGetId(const std::string& s) { return LANGUAGE_ENG; } + else if(s == "es") + { + return LANGUAGE_SPA; + } else if(s == "fr") { return LANGUAGE_FRA; @@ -271,6 +277,9 @@ namespace oot setLanguage(LANGUAGE_GER); break; case LANGUAGE_FRA: + setLanguage(LANGUAGE_SPA); + break; + case LANGUAGE_SPA: setLanguage(LANGUAGE_ENG); break; case LANGUAGE_GER: @@ -287,6 +296,9 @@ namespace oot switch(m_language) { case LANGUAGE_ENG: + setLanguage(LANGUAGE_SPA); + break; + case LANGUAGE_SPA: setLanguage(LANGUAGE_FRA); break; case LANGUAGE_FRA: diff --git a/src/port/window/sdl/window_sdl2.cpp b/src/port/window/sdl/window_sdl2.cpp index 02b616289..7ca947fa2 100644 --- a/src/port/window/sdl/window_sdl2.cpp +++ b/src/port/window/sdl/window_sdl2.cpp @@ -267,6 +267,11 @@ namespace platform::window Set_Language(LANGUAGE_ENG); break; } + else if(strcmp(locale->language, "es") == 0) + { + Set_Language(LANGUAGE_SPA); + break; + } else if(strcmp(locale->language, "ge") == 0) { Set_Language(LANGUAGE_GER); diff --git a/tools/msgdis.py b/tools/msgdis.py index c93e03017..d4db32ba8 100644 --- a/tools/msgdis.py +++ b/tools/msgdis.py @@ -39,6 +39,18 @@ def segmented_to_physical(address): Special characters conversion """ extraction_charmap = { + 0xAC: 'Í', + 0xAD: 'Ó', + 0xAE: 'Ú', + 0xAF: 'í', + 0xB0: 'ó', + 0xB1: 'ú', + 0xB2: '¿', + 0xB3: '¡', + 0xB4: 'Á', + 0xB5: 'Ñ', + 0xB6: 'ñ', + 0x7F: '‾', 0x80: 'À', 0x81: 'î', diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index e06e7b4f4..c4fd720c5 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1026,6 +1026,7 @@ + From 14502e2e2c1036c8a4b6cd0d68fa3ce704fc4aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Wed, 7 Sep 2022 02:20:41 -0500 Subject: [PATCH 03/25] Use user language by default ("auto") --- include/z64message.h | 3 +- src/port/options.cpp | 55 +++++++++++++++++++++++++++-- src/port/options.h | 8 ++--- src/port/window/sdl/window_sdl2.cpp | 29 --------------- 4 files changed, 57 insertions(+), 38 deletions(-) diff --git a/include/z64message.h b/include/z64message.h index 14b9cd0bd..fa148d91d 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -18,7 +18,8 @@ enum Language LANGUAGE_GER, LANGUAGE_FRA, LANGUAGE_SPA, - LANGUAGE_MAX + LANGUAGE_MAX, + LANGUAGE_AUTO }; // TODO get these properties from the textures themselves diff --git a/src/port/options.cpp b/src/port/options.cpp index c9499aa60..5e1010aed 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -5,6 +5,7 @@ #include "json.h" #include "port/options.h" #include "xxhash64.h" +#include #ifdef __SWITCH__ #include "pc/nx.h" @@ -18,10 +19,25 @@ void Set_Language(u8 language_id); +std::string userLanguage() +{ + std::string lang = "en"; + SDL_Locale* locale = SDL_GetPreferredLocales(); + if(locale) + { + lang = locale->language; + SDL_free(locale); + } + + return lang; +} + std::string languageGetString(Language id) { switch(id) { + case LANGUAGE_AUTO: + return "auto"; case LANGUAGE_ENG: return "en"; case LANGUAGE_SPA: @@ -36,6 +52,10 @@ std::string languageGetString(Language id) Language languageGetId(const std::string& s) { + if(s == "auto") + { + return LANGUAGE_AUTO; + } if(s == "en") { return LANGUAGE_ENG; @@ -197,6 +217,8 @@ namespace oot } } + bool manualChangeLang; + Game::Game() { } @@ -220,7 +242,18 @@ namespace oot json::setU64(container, "pauseExitInputClearFrames", pauseExitInputClearFrames(), allocator); json::setU64(container, "textScrollSpeed", textScrollSpeed(), allocator); json::setU64(container, "fastForwardSpeed", fastForwardSpeed(), allocator); - json::set(container, "language", languageGetString(language()), allocator); + + std::string lang; + if(!manualChangeLang) + { + lang = languageGetString(LANGUAGE_AUTO); + } + else + { + lang = languageGetString(language()); + } + + json::set(container, "language", lang, allocator); json::setU64(container, "framerate", getMaxFramerate(), allocator); doc.AddMember(rapidjson::Value("game", allocator), container, allocator); @@ -263,9 +296,27 @@ namespace oot return getMaxFramerate(); } + Language Game::language() const + { + if(!manualChangeLang) + { + return languageGetId(userLanguage()); + } + return m_language; + } + void Game::setLanguage(Language id) { - m_language = (Language)(id % LANGUAGE_MAX); + if(id == LANGUAGE_AUTO) + { + m_language = languageGetId(userLanguage()); + manualChangeLang = false; + } + else + { + m_language = (Language)(id % LANGUAGE_MAX); + manualChangeLang = true; + } Set_Language(m_language); } diff --git a/src/port/options.h b/src/port/options.h index b2e8b6dfa..4ff492340 100644 --- a/src/port/options.h +++ b/src/port/options.h @@ -484,11 +484,7 @@ namespace oot return m_textScrollSpeed; } - const Language& language() const - { - return m_language; - } - + Language language() const; void setLanguage(Language id); void setNextLanguage(); void setPrevLanguage(); @@ -541,7 +537,7 @@ namespace oot bool m_enablDebugLevelSelect = false; u64 m_pauseExitInputClearFrames = 2; u64 m_textScrollSpeed = 1; - Language m_language = LANGUAGE_ENG; + Language m_language = LANGUAGE_AUTO; u64 m_fastForwardSpeed = 5; bool m_pauseOnLostFocus = true; bool m_restoreSaveConfirmation = true; diff --git a/src/port/window/sdl/window_sdl2.cpp b/src/port/window/sdl/window_sdl2.cpp index 7ca947fa2..f9f338489 100644 --- a/src/port/window/sdl/window_sdl2.cpp +++ b/src/port/window/sdl/window_sdl2.cpp @@ -21,7 +21,6 @@ #include "def/audioMgr.h" void quit(); -void Set_Language(u8 language_id); #ifndef _WIN32 void WindowsWGL_GrabWindow(void* wnd); #endif @@ -257,34 +256,6 @@ namespace platform::window set_refresh_interval(); resize(width(), height()); - - auto locale = SDL_GetPreferredLocales(); - - while(locale != nullptr) - { - if(strcmp(locale->language, "en") == 0) - { - Set_Language(LANGUAGE_ENG); - break; - } - else if(strcmp(locale->language, "es") == 0) - { - Set_Language(LANGUAGE_SPA); - break; - } - else if(strcmp(locale->language, "ge") == 0) - { - Set_Language(LANGUAGE_GER); - break; - } - else if(strcmp(locale->language, "fr") == 0) - { - Set_Language(LANGUAGE_FRA); - break; - } - - locale++; - } } void set_fullscreen(bool on, bool call_callback) From 8b2d20013d9cea9776c8bf7c4ebe6780acd25375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Wed, 7 Sep 2022 02:30:32 -0500 Subject: [PATCH 04/25] Set some fallbacks for offsets and textures --- src/code/z_construct.cpp | 42 ++++++++++--------- .../ovl_kaleido_scope/z_kaleido_scope_PAL.cpp | 5 +++ 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/code/z_construct.cpp b/src/code/z_construct.cpp index 36b982a46..4bd94d198 100644 --- a/src/code/z_construct.cpp +++ b/src/code/z_construct.cpp @@ -45,33 +45,35 @@ void func_801109B0(GlobalContext* globalCtx) interfaceCtx->parameterSegment = _parameter_staticSegmentRomStart; - if(gSaveContext.language == LANGUAGE_ENG) + switch(gSaveContext.language) { - doActionOffset = 0; - } - else if(gSaveContext.language == LANGUAGE_GER) - { - doActionOffset = 0x2B80; - } - else - { - doActionOffset = 0x5700; + case LANGUAGE_ENG: + default: + doActionOffset = 0; + break; + case LANGUAGE_GER: + doActionOffset = 0x2B80; + break; + case LANGUAGE_FRA: + doActionOffset = 0x5700; + break; } interfaceCtx->doActionSegment1 = (u8*)do_action_static_lut[doActionOffset / 0x180]; interfaceCtx->doActionSegment2 = (u8*)do_action_static_lut[(doActionOffset / 0x180) + 1]; - if(gSaveContext.language == LANGUAGE_ENG) - { - doActionOffset = 0x480; - } - else if(gSaveContext.language == LANGUAGE_GER) - { - doActionOffset = 0x3000; - } - else + switch(gSaveContext.language) { - doActionOffset = 0x5B80; + case LANGUAGE_ENG: + default: + doActionOffset = 0x480; + break; + case LANGUAGE_GER: + doActionOffset = 0x3000; + break; + case LANGUAGE_FRA: + doActionOffset = 0x5B80; + break; } interfaceCtx->doActionSegment3 = (u8*)do_action_static_lut[doActionOffset / 0x180]; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp index f9f7b82c3..7364018b2 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp @@ -383,6 +383,7 @@ namespace oot::pause switch(langId) { case LANGUAGE_ENG: + default: return gPauseToSelectItemENGTex; case LANGUAGE_GER: return gPauseToSelectItemGERTex; @@ -600,6 +601,7 @@ namespace oot::pause switch(langId) { case LANGUAGE_ENG: + default: return gPauseToMapENGTex; case LANGUAGE_GER: return gPauseToMapGERTex; @@ -689,6 +691,7 @@ namespace oot::pause switch(langId) { case LANGUAGE_ENG: + default: return gPauseToMapENGTex; case LANGUAGE_GER: return gPauseToMapGERTex; @@ -791,6 +794,7 @@ namespace oot::pause switch(langId) { case LANGUAGE_ENG: + default: return gPauseToQuestStatusENGTex; case LANGUAGE_GER: return gPauseToQuestStatusGERTex; @@ -925,6 +929,7 @@ namespace oot::pause switch(langId) { case LANGUAGE_ENG: + default: return gPauseToEquipmentENGTex; case LANGUAGE_GER: return gPauseToEquipmentGERTex; From be6b2b06ebadbc8dc730285ec39bfec663f8de1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Wed, 7 Sep 2022 15:14:50 -0500 Subject: [PATCH 05/25] Add "Run msgenc" as a separate setup.py argument --- setup.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index 2c7b97cfe..feff09dc4 100755 --- a/setup.py +++ b/setup.py @@ -35,6 +35,16 @@ def clean(): else: os.remove(path) +def generateEncMsgs(): + print("Starting message encoding") + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) + mkdir(assetPath('text')) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) + print("Finished message encoding") + def build(): print("Starting asset extraction and parsing") # sys.executable points to python executable @@ -46,13 +56,7 @@ def build(): subprocess.check_call([sys.executable, str('tools/extract_assets.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/extract_z64_variables.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/convert_assets.py'), buildRom()]) - mkdir(assetPath('text')) - //subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data.h')), str(assetPath('text/message_data.enc.h')), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) + generateEncMsgs() subprocess.check_call([sys.executable, str('tools/extract_missing_assets.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/create_luts.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/fix_mtx.py'), buildRom()]) @@ -71,7 +75,8 @@ def main(): parser.add_argument("--refresh-configs", help="Refreshes rom config files (do not use)", action="store_true", default=False) parser.add_argument("-o", "--organize-roms", help="Renames and moves roms to their proper location", action="store_true", default=False) parser.add_argument("-s", "--skip-organize-roms", help="Skip organizing roms", action="store_true", default=False) - + parser.add_argument("--run-msgenc", help="Run msgenc", action="store_true", default=False) + args = parser.parse_args() if args.refresh_configs: @@ -96,6 +101,10 @@ def main(): defines = [] defines.append('ENABLE_%sFPS' % args.framerate) + if args.run_msgenc: + generateEncMsgs() + exit(0) + if args.enable_mouse: defines.append('ENABLE_MOUSE') From 06676c745dfdf84a71d27da17cf8959084031c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Thu, 8 Sep 2022 19:05:00 -0500 Subject: [PATCH 06/25] Add English fallback for title screens textures So it should not crash while we prepare the new Spanish assets --- .../ovl_file_choose/z_file_choose.cpp | 211 +++++++++++++++--- .../ovl_file_choose/z_file_nameset_PAL.cpp | 49 +++- 2 files changed, 222 insertions(+), 38 deletions(-) diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp index 3e28b18e2..4a17db0f5 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp @@ -40,6 +40,22 @@ namespace oot::gamestate static s16 sScreenFillAlpha = 255; + static u16 GetLocalized(u16 array[]) + { + if(gSaveContext.language > 2) // up to fr + return (u16)array[0]; + else + return (u16)array[gSaveContext.language]; + } + + static void* GetLocalized(void* array[]) + { + if(gSaveContext.language > 2) // up to fr + return (void*)array[0]; + else + return (void*)array[gSaveContext.language]; + } + static Gfx sScreenFillSetupDL[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), @@ -898,32 +914,142 @@ namespace oot::gamestate gFileSelFileInfoBox1Tex, gFileSelFileInfoBox2Tex, gFileSelFileInfoBox3Tex, gFileSelFileInfoBox4Tex, gFileSelFileInfoBox5Tex, }; - static void* sTitleLabels[3][9] = { - {gFileSelPleaseSelectAFileENGTex, gFileSelOpenThisFileENGTex, gFileSelCopyWhichFileENGTex, gFileSelCopyToWhichFileENGTex, gFileSelAreYouSureENGTex, gFileSelFileCopiedENGTex, gFileSelEraseWhichFileENGTex, gFileSelAreYouSure2ENGTex, - gFileSelFileErasedENGTex}, - {gFileSelPleaseSelectAFileGERTex, gFileSelOpenThisFileGERTex, gFileSelWhichFile1GERTex, gFileSelCopyToWhichFileGERTex, gFileSelAreYouSureGERTex, gFileSelFileCopiedGERTex, gFileSelWhichFile2GERTex, gFileSelAreYouSure2GERTex, - gFileSelFileErasedGERTex}, - {gFileSelPleaseSelectAFileFRATex, gFileSelOpenThisFileFRATex, gFileSelCopyWhichFileFRATex, gFileSelCopyToWhichFileFRATex, gFileSelAreYouSureFRATex, gFileSelFileCopiedFRATex, gFileSelEraseWhichFileFRATex, gFileSelAreYouSure2FRATex, - gFileSelFileErasedFRATex}}; - - static void* sWarningLabels[3][5] = { - {gFileSelNoFileToCopyENGTex, gFileSelNoFileToEraseENGTex, gFileSelNoEmptyFileENGTex, gFileSelFileEmptyENGTex, gFileSelFileInUseENGTex}, - {gFileSelNoFileToCopyGERTex, gFileSelNoFileToEraseGERTex, gFileSelNoEmptyFileGERTex, gFileSelFileEmptyGERTex, gFileSelFileInUseGERTex}, - {gFileSelNoFileToCopyFRATex, gFileSelNoFileToEraseFRATex, gFileSelNoEmptyFileFRATex, gFileSelFileEmptyFRATex, gFileSelFileInUseFRATex}, + //sTitleLabels + + static void* sSelPleaseSelectAFile[] = { + gFileSelPleaseSelectAFileENGTex, + gFileSelPleaseSelectAFileGERTex, + gFileSelPleaseSelectAFileFRATex, + }; + + static void* sSelOpenThisFile[] = { + gFileSelOpenThisFileENGTex, + gFileSelOpenThisFileGERTex, + gFileSelOpenThisFileFRATex, }; - static void* sFileButtonTextures[3][3] = { - {gFileSelFile1ButtonENGTex, gFileSelFile2ButtonENGTex, gFileSelFile3ButtonENGTex}, - {gFileSelFile1ButtonGERTex, gFileSelFile2ButtonGERTex, gFileSelFile3ButtonGERTex}, - {gFileSelFile1ButtonFRATex, gFileSelFile2ButtonFRATex, gFileSelFile3ButtonFRATex}, + static void* sSelCopyWhichFile[] = { + gFileSelCopyWhichFileENGTex, + gFileSelWhichFile1GERTex, + gFileSelCopyWhichFileFRATex, }; - static void* sActionButtonTextures[3][4] = { - {gFileSelCopyButtonENGTex, gFileSelEraseButtonENGTex, gFileSelYesButtonENGTex, gFileSelQuitButtonENGTex}, - {gFileSelCopyButtonGERTex, gFileSelEraseButtonGERTex, gFileSelYesButtonGERTex, gFileSelQuitButtonGERTex}, - {gFileSelCopyButtonFRATex, gFileSelEraseButtonFRATex, gFileSelYesButtonFRATex, gFileSelQuitButtonFRATex}, + static void* sSelCopyToWhichFile[] = { + gFileSelCopyToWhichFileENGTex, + gFileSelCopyToWhichFileGERTex, + gFileSelCopyToWhichFileFRATex, }; + static void* sSelAreYouSure[] = { + gFileSelAreYouSureENGTex, + gFileSelAreYouSureGERTex, + gFileSelAreYouSureFRATex, + }; + + static void* sSelFileCopied[] = { + gFileSelFileCopiedENGTex, + gFileSelFileCopiedGERTex, + gFileSelFileCopiedFRATex, + }; + + static void* sSelEraseWhichFile[] = { + gFileSelEraseWhichFileENGTex, + gFileSelWhichFile2GERTex, + gFileSelEraseWhichFileFRATex, + }; + + static void* sSelAreYouSure2[] = { + gFileSelAreYouSure2ENGTex, + gFileSelAreYouSure2GERTex, + gFileSelAreYouSure2FRATex, + }; + + static void* sSelFileErased[] = { + gFileSelFileErasedENGTex, + gFileSelFileErasedGERTex, + gFileSelFileErasedFRATex, + }; + + //sWarningLabels + + static void* sSelNoFileToCopyTextures[] = { + gFileSelNoFileToCopyENGTex, + gFileSelNoFileToCopyGERTex, + gFileSelNoFileToCopyFRATex, + }; + + static void* sSelNoFileToEraseTextures[] = { + gFileSelNoFileToEraseENGTex, + gFileSelNoFileToEraseGERTex, + gFileSelNoFileToEraseFRATex, + }; + + static void* sSelNoEmptyFileTextures[] = { + gFileSelNoEmptyFileENGTex, + gFileSelNoEmptyFileGERTex, + gFileSelNoEmptyFileFRATex, + }; + + static void* sSelFileEmptyTextures[] = { + gFileSelFileEmptyENGTex, + gFileSelFileEmptyGERTex, + gFileSelFileEmptyFRATex, + }; + + static void* sSelFileInUseTextures[] = { + gFileSelFileInUseENGTex, + gFileSelFileInUseGERTex, + gFileSelFileInUseFRATex, + }; + + //sFileButtonTextures + + static void* sFile1ButtonTextures[] = { + gFileSelFile1ButtonENGTex, + gFileSelFile1ButtonGERTex, + gFileSelFile1ButtonFRATex, + }; + + static void* sFile2ButtonTextures[] = { + gFileSelFile2ButtonENGTex, + gFileSelFile2ButtonGERTex, + gFileSelFile2ButtonFRATex, + }; + + static void* sFile3ButtonTextures[] = { + gFileSelFile3ButtonENGTex, + gFileSelFile3ButtonGERTex, + gFileSelFile3ButtonFRATex, + }; + + //sActionButtonTextures + + static void* sCopyButtonTextures[] = { + gFileSelCopyButtonENGTex, + gFileSelCopyButtonGERTex, + gFileSelCopyButtonFRATex, + }; + + static void* sEraseButtonTextures[] = { + gFileSelEraseButtonENGTex, + gFileSelEraseButtonGERTex, + gFileSelEraseButtonFRATex, + }; + + static void* sYesButtonTextures[] = { + gFileSelYesButtonENGTex, + gFileSelYesButtonGERTex, + gFileSelYesButtonFRATex, + }; + + static void* sQuitButtonTextures[] = { + gFileSelQuitButtonENGTex, + gFileSelQuitButtonGERTex, + gFileSelQuitButtonFRATex, + }; + + // + static void* sOptionsButtonTextures[] = { gFileSelOptionsButtonENGTex, gFileSelOptionsButtonGERTex, @@ -946,19 +1072,30 @@ namespace oot::gamestate OPEN_DISPS(pthis->gfxCtx, "../z_file_choose.c", 1940); + void** sTitleLabels = new void*[9]; + sTitleLabels[0] = GetLocalized(sSelPleaseSelectAFile); + sTitleLabels[1] = GetLocalized(sSelOpenThisFile); + sTitleLabels[2] = GetLocalized(sSelCopyWhichFile); + sTitleLabels[3] = GetLocalized(sSelCopyToWhichFile); + sTitleLabels[4] = GetLocalized(sSelAreYouSure); + sTitleLabels[5] = GetLocalized(sSelFileCopied); + sTitleLabels[6] = GetLocalized(sSelEraseWhichFile); + sTitleLabels[7] = GetLocalized(sSelAreYouSure2); + sTitleLabels[8] = GetLocalized(sSelFileErased); + // draw title label gDPPipeSync(POLY_OPA_DISP++); gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pthis->titleAlpha[0]); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); gSPVertex(POLY_OPA_DISP++, pthis->windowContentVtx, 4, 0); - gDPLoadTextureBlock(POLY_OPA_DISP++, sTitleLabels[gSaveContext.language][pthis->titleLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, sTitleLabels[pthis->titleLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); // draw next title label gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pthis->titleAlpha[1]); - gDPLoadTextureBlock(POLY_OPA_DISP++, sTitleLabels[gSaveContext.language][pthis->nextTitleLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, sTitleLabels[pthis->nextTitleLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); temp = 4; @@ -987,8 +1124,13 @@ namespace oot::gamestate isActive = ((pthis->n64ddFlag == pthis->n64ddFlags[i]) || (pthis->nameBoxAlpha[i] == 0)) ? 0 : 1; + void** sFileButtonTextures = new void*[3]; + sFileButtonTextures[0] = GetLocalized(sFile1ButtonTextures); + sFileButtonTextures[1] = GetLocalized(sFile2ButtonTextures); + sFileButtonTextures[2] = GetLocalized(sFile3ButtonTextures); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[isActive][0], sWindowContentColors[isActive][1], sWindowContentColors[isActive][2], pthis->fileButtonAlpha[i]); - gDPLoadTextureBlock(POLY_OPA_DISP++, sFileButtonTextures[gSaveContext.language][i], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, sFileButtonTextures[i], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); // draw file name box @@ -1027,12 +1169,18 @@ namespace oot::gamestate gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); gSPVertex(POLY_OPA_DISP++, &pthis->windowContentVtx[0x274], 20, 0); + void** sActionButtonTextures = new void*[4]; + sActionButtonTextures[0] = GetLocalized(sCopyButtonTextures); + sActionButtonTextures[1] = GetLocalized(sEraseButtonTextures); + sActionButtonTextures[2] = GetLocalized(sYesButtonTextures); + sActionButtonTextures[3] = GetLocalized(sQuitButtonTextures); + // draw primary action buttons (copy/erase) for(quadVtxIndex = 0, i = 0; i < 2; i++, quadVtxIndex += 4) { gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, pthis->windowColor[0], pthis->windowColor[1], pthis->windowColor[2], pthis->actionButtonAlpha[i]); - gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[gSaveContext.language][i], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[i], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, quadVtxIndex, quadVtxIndex + 2, quadVtxIndex + 3, quadVtxIndex + 1, 0); } @@ -1044,14 +1192,14 @@ namespace oot::gamestate temp = pthis->confirmButtonTexIndices[i]; gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, pthis->windowColor[0], pthis->windowColor[1], pthis->windowColor[2], pthis->confirmButtonAlpha[i]); - gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[gSaveContext.language][temp], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[temp], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, quadVtxIndex, quadVtxIndex + 2, quadVtxIndex + 3, quadVtxIndex + 1, 0); } // draw options button gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, pthis->windowColor[0], pthis->windowColor[1], pthis->windowColor[2], pthis->optionButtonAlpha); - gDPLoadTextureBlock(POLY_OPA_DISP++, sOptionsButtonTextures[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, GetLocalized(sOptionsButtonTextures), G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0); // draw highlight over currently selected button @@ -1066,6 +1214,13 @@ namespace oot::gamestate gSP1Quadrangle(POLY_OPA_DISP++, 12, 14, 15, 13, 0); } + void** sWarningLabels = new void*[5]; + sWarningLabels[0] = GetLocalized(sSelNoFileToCopyTextures); + sWarningLabels[1] = GetLocalized(sSelNoFileToEraseTextures); + sWarningLabels[2] = GetLocalized(sSelNoEmptyFileTextures); + sWarningLabels[3] = GetLocalized(sSelFileEmptyTextures); + sWarningLabels[4] = GetLocalized(sSelFileInUseTextures); + // draw warning labels if(pthis->warningLabel > FS_WARNING_NONE) { @@ -1074,7 +1229,7 @@ namespace oot::gamestate gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pthis->emptyFileTextAlpha); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); gDPLoadTextureBlock( - POLY_OPA_DISP++, sWarningLabels[gSaveContext.language][pthis->warningLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + POLY_OPA_DISP++, sWarningLabels[pthis->warningLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 16, 18, 19, 17, 0); } @@ -1889,7 +2044,7 @@ namespace oot::gamestate gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 100, 255, 255, this->controlsAlpha); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); - gDPLoadTextureBlock(POLY_OPA_DISP++, controlsTextures[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, 144, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, GetLocalized(controlsTextures), G_IM_FMT_IA, G_IM_SIZ_8b, 144, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(POLY_OPA_DISP++, 0x0168, 0x0330, 0x03A8, 0x0370, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); } diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp index 8016ec6e8..9112b82b6 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp @@ -26,6 +26,22 @@ namespace oot::gamestate 0x0002, 0x0003, 0x0002, 0x0002, 0x0000, 0x0002, 0x0002, 0x0002, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0003, }; + static u16 GetLocalized(u16 array[]) + { + if(gSaveContext.language > 2) // up to fr + return (u16)array[0]; + else + return (u16)array[gSaveContext.language]; + } + + static void* GetLocalized(void* array[]) + { + if(gSaveContext.language > 2) // up to fr + return (void*)array[0]; + else + return (void*)array[gSaveContext.language]; + } + void FileChoose_DrawCharacter(GraphicsContext* gfxCtx, void* texture, s16 vtx) { OPEN_DISPS(gfxCtx, "../z_file_nameset_PAL.c", 110); @@ -90,12 +106,22 @@ namespace oot::gamestate static void* sNameLabelTextures[] = {gFileSelNameENGTex, gFileSelNameENGTex, gFileSelNameFRATex}; - static void* sBackspaceEndTextures[][2] = { - {gFileSelBackspaceButtonTex, gFileSelENDButtonENGTex}, - {gFileSelBackspaceButtonTex, gFileSelENDButtonGERTex}, - {gFileSelBackspaceButtonTex, gFileSelENDButtonFRATex}, + //sBackspaceEndTextures + + static void* sBackspaceTextures[] = { + gFileSelBackspaceButtonTex, + gFileSelBackspaceButtonTex, + gFileSelBackspaceButtonTex, }; + static void* sEndTextures[] = { + gFileSelENDButtonENGTex, + gFileSelENDButtonGERTex, + gFileSelENDButtonFRATex, + }; + + // + static u16 sBackspaceEndWidths[] = {28, 44}; static s16 D_808125EC[] = { @@ -133,7 +159,7 @@ namespace oot::gamestate gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pthis->titleAlpha[0]); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); gSPVertex(POLY_OPA_DISP++, D_80811BB0, 24, 0); - gDPLoadTextureBlock(POLY_OPA_DISP++, sNameLabelTextures[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, 56, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock(POLY_OPA_DISP++, GetLocalized(sNameLabelTextures), G_IM_FMT_IA, G_IM_SIZ_8b, 56, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); gDPPipeSync(POLY_OPA_DISP++); @@ -142,8 +168,11 @@ namespace oot::gamestate { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, pthis->windowColor[0], pthis->windowColor[1], pthis->windowColor[2], 255); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + void** sBackspaceEndTextures = new void*[2]; + sBackspaceEndTextures[0] = GetLocalized(sBackspaceTextures); + sBackspaceEndTextures[1] = GetLocalized(sEndTextures); gDPLoadTextureBlock( - POLY_OPA_DISP++, sBackspaceEndTextures[gSaveContext.language][phi_t1], G_IM_FMT_IA, G_IM_SIZ_16b, sBackspaceEndWidths[phi_t1], 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + POLY_OPA_DISP++, sBackspaceEndTextures[phi_t1], G_IM_FMT_IA, G_IM_SIZ_16b, sBackspaceEndWidths[phi_t1], 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, phi_s0, phi_s0 + 2, phi_s0 + 3, phi_s0 + 1, 0); } @@ -1053,7 +1082,7 @@ namespace oot::gamestate for(i = 0, vtx = 0; i < ARRAY_COUNT(gOptionsMenuHeaders); i++, vtx += 4) { gDPLoadTextureBlock( - POLY_OPA_DISP++, gOptionsMenuHeaders[i].texture[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, gOptionsMenuHeaders[i].width[gSaveContext.language], gOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, + POLY_OPA_DISP++, GetLocalized(gOptionsMenuHeaders[i].texture), G_IM_FMT_IA, G_IM_SIZ_8b, GetLocalized(gOptionsMenuHeaders[i].width), gOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } @@ -1101,7 +1130,7 @@ namespace oot::gamestate } gDPLoadTextureBlock( - POLY_OPA_DISP++, gOptionsMenuSettings[i].texture[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, gOptionsMenuSettings[i].width[gSaveContext.language], gOptionsMenuHeadersHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, + POLY_OPA_DISP++, GetLocalized(gOptionsMenuSettings[i].texture), G_IM_FMT_IA, G_IM_SIZ_8b, GetLocalized(gOptionsMenuSettings[i].width), gOptionsMenuHeadersHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } @@ -1130,7 +1159,7 @@ namespace oot::gamestate } gDPLoadTextureBlock( - POLY_OPA_DISP++, gOptionsMenuSettings[i].texture[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, gOptionsMenuSettings[i].width[gSaveContext.language], gOptionsMenuHeadersHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, + POLY_OPA_DISP++, GetLocalized(gOptionsMenuSettings[i].texture), G_IM_FMT_IA, G_IM_SIZ_8b, GetLocalized(gOptionsMenuSettings[i].width), gOptionsMenuHeadersHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } @@ -1165,7 +1194,7 @@ namespace oot::gamestate } gDPLoadTextureBlock( - POLY_OPA_DISP++, gOptionsMenuSettings[i].texture[gSaveContext.language], G_IM_FMT_IA, G_IM_SIZ_8b, gOptionsMenuSettings[i].width[gSaveContext.language], gOptionsMenuHeadersHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, + POLY_OPA_DISP++, GetLocalized(gOptionsMenuSettings[i].texture), G_IM_FMT_IA, G_IM_SIZ_8b, GetLocalized(gOptionsMenuSettings[i].width), gOptionsMenuHeadersHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); } From 65dfdf4fc7e6a96311009550ca4b868c77b903df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 9 Sep 2022 22:11:45 -0500 Subject: [PATCH 07/25] Complete adding fallbacks It should now only crash when trying to display the additional Latin characters (because they are not found) when the game is set to Spanish --- src/code/z_actor.cpp | 11 +- src/code/z_message_PAL.cpp | 16 +- src/code/z_parameter.cpp | 39 +++-- .../ovl_file_choose/z_file_choose.cpp | 4 +- .../ovl_file_choose/z_file_nameset_PAL.cpp | 4 +- .../ovl_kaleido_scope/z_kaleido_map_PAL.cpp | 10 +- .../ovl_kaleido_scope/z_kaleido_scope_PAL.cpp | 152 ++++++++++-------- 7 files changed, 141 insertions(+), 95 deletions(-) diff --git a/src/code/z_actor.cpp b/src/code/z_actor.cpp index 67d10e18e..088514f3b 100644 --- a/src/code/z_actor.cpp +++ b/src/code/z_actor.cpp @@ -867,6 +867,15 @@ void TitleCard_Update(GlobalContext* globalCtx, TitleCardContext* titleCtx) } } +// test +static int GetLanguageIndex(int maxLang = LANGUAGE_FRA) +{ + if(gSaveContext.language > maxLang) + return 0; + else + return gSaveContext.language; +} + void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) { s32 spCC; @@ -888,7 +897,7 @@ void TitleCard_Draw(GlobalContext* globalCtx, TitleCardContext* titleCtx) OPEN_DISPS(globalCtx->gfxCtx, "../z_actor.c", 2824); - spB0 = spCC * spC8 * gSaveContext.language; + spB0 = spCC * spC8 * GetLanguageIndex(); spC8 = (spCC * spC8 > 0x1000) ? 0x1000 / spCC : spC8; spB4 = spB8 + (spC8 * 4); diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index b1507deb7..69ab38877 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -1271,10 +1271,18 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) } } +static s16 GetLocalized(s16 array[]) +{ + if(gSaveContext.language > LANGUAGE_SPA) + return (s16)array[0]; + else + return (s16)array[gSaveContext.language]; +} + void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) { - static s16 sIconItem32XOffsets[] = {74, 74, 74}; - static s16 sIconItem24XOffsets[] = {72, 72, 72}; + static s16 sIconItem32XOffsets[] = {74, 74, 74, 74}; + static s16 sIconItem24XOffsets[] = {72, 72, 72, 72}; MessageContext* msgCtx = &globalCtx->msgCtx; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -1285,7 +1293,7 @@ void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) } if(itemId < ITEM_MEDALLION_FOREST) { - R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem32XOffsets[gSaveContext.language]; + R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - GetLocalized(sIconItem32XOffsets); R_TEXTBOX_ICON_YPOS = y + 6; R_TEXTBOX_ICON_SIZE = 32; DmaMgr_SendRequest1(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), icon_item_static_lut[itemId], 0x1000, "../z_message_PAL.c", 1473); @@ -1294,7 +1302,7 @@ void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) } else { - R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem24XOffsets[gSaveContext.language]; + R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - GetLocalized(sIconItem24XOffsets); R_TEXTBOX_ICON_YPOS = y + 10; R_TEXTBOX_ICON_SIZE = 24; DmaMgr_SendRequest1(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), icon_item_24_static_lut[itemId - ITEM_MEDALLION_FOREST], 0x900, "../z_message_PAL.c", 1482); diff --git a/src/code/z_parameter.cpp b/src/code/z_parameter.cpp index 98eee05de..d2dc6da39 100644 --- a/src/code/z_parameter.cpp +++ b/src/code/z_parameter.cpp @@ -202,6 +202,15 @@ void Interface_ChangeAlpha(u16 alphaType) } } +// test +static int GetLanguageIndex(int maxLang = LANGUAGE_FRA) +{ + if(gSaveContext.language > maxLang) + return 0; + else + return gSaveContext.language; +} + void func_80082644(GlobalContext* globalCtx, s16 alpha) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -2700,12 +2709,12 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l action = DO_ACTION_NONE; } - if(gSaveContext.language != LANGUAGE_ENG) + if(GetLanguageIndex() != LANGUAGE_ENG) { action += DO_ACTION_MAX; } - if(gSaveContext.language == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FRA) { action += DO_ACTION_MAX; } @@ -2787,12 +2796,12 @@ void Interface_LoadActionLabelB(GlobalContext* globalCtx, u16 action) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - if(gSaveContext.language != LANGUAGE_ENG) + if(GetLanguageIndex() != LANGUAGE_ENG) { action += DO_ACTION_MAX; } - if(gSaveContext.language == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FRA) { action += DO_ACTION_MAX; } @@ -3495,7 +3504,7 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) // Start Button Texture, Color & Label gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 200, 0, 0, interfaceCtx->startAlpha); - gSPTextureRectangle(OVERLAY_DISP++, GFX_ALIGN_RIGHT(startButtonLeftPos[gSaveContext.language]) << 2, 68, (GFX_ALIGN_RIGHT(startButtonLeftPos[gSaveContext.language]) + 22) << 2, 156, G_TX_RENDERTILE, 0, 0, 1462, 1462); + gSPTextureRectangle(OVERLAY_DISP++, GFX_ALIGN_RIGHT(startButtonLeftPos[GetLanguageIndex()]) << 2, 68, (GFX_ALIGN_RIGHT(startButtonLeftPos[GetLanguageIndex()]) + 22) << 2, 156, G_TX_RENDERTILE, 0, 0, 1462, 1462); gDPPipeSync(OVERLAY_DISP++); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->startAlpha); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); @@ -3504,12 +3513,12 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) gDPLoadTextureBlock_4b( OVERLAY_DISP++, interfaceCtx->doActionSegment3, G_IM_FMT_IA, DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - dxdy = (1 << 10) / (R_START_LABEL_DD(gSaveContext.language) / 100.0f); - width = DO_ACTION_TEX_WIDTH / (R_START_LABEL_DD(gSaveContext.language) / 100.0f); - height = DO_ACTION_TEX_HEIGHT / (R_START_LABEL_DD(gSaveContext.language) / 100.0f); + dxdy = (1 << 10) / (R_START_LABEL_DD(GetLanguageIndex()) / 100.0f); + width = DO_ACTION_TEX_WIDTH / (R_START_LABEL_DD(GetLanguageIndex()) / 100.0f); + height = DO_ACTION_TEX_HEIGHT / (R_START_LABEL_DD(GetLanguageIndex()) / 100.0f); gSPTextureRectangle( - OVERLAY_DISP++, GFX_ALIGN_RIGHT(R_START_LABEL_X(gSaveContext.language)) << 2, R_START_LABEL_Y(gSaveContext.language) << 2, (GFX_ALIGN_RIGHT(R_START_LABEL_X(gSaveContext.language)) + width) << 2, - (R_START_LABEL_Y(gSaveContext.language) + height) << 2, G_TX_RENDERTILE, 0, 0, dxdy, dxdy); + OVERLAY_DISP++, GFX_ALIGN_RIGHT(R_START_LABEL_X(GetLanguageIndex())) << 2, R_START_LABEL_Y(GetLanguageIndex()) << 2, (GFX_ALIGN_RIGHT(R_START_LABEL_X(GetLanguageIndex())) + width) << 2, + (R_START_LABEL_Y(GetLanguageIndex()) + height) << 2, G_TX_RENDERTILE, 0, 0, dxdy, dxdy); } } @@ -3541,7 +3550,7 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); - gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[gSaveContext.language], G_IM_FMT_IA, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[GetLanguageIndex()], G_IM_FMT_IA, 32, 8, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(OVERLAY_DISP++, GFX_ALIGN_RIGHT(R_C_UP_ICON_X) << 2, R_C_UP_ICON_Y << 2, (GFX_ALIGN_RIGHT(R_C_UP_ICON_X) + 32) << 2, (R_C_UP_ICON_Y + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); } @@ -3986,10 +3995,10 @@ void Interface_Draw(GlobalContext* globalCtx) gDPLoadTextureBlock_4b( OVERLAY_DISP++, interfaceCtx->doActionSegment2, G_IM_FMT_IA, DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - R_B_LABEL_DD = (1 << 10) / (WREG(37 + gSaveContext.language) / 100.0f); + R_B_LABEL_DD = (1 << 10) / (WREG(37 + GetLanguageIndex()) / 100.0f); gSPTextureRectangle( - OVERLAY_DISP++, GFX_ALIGN_RIGHT(R_B_LABEL_X(gSaveContext.language)) << 2, R_B_LABEL_Y(gSaveContext.language) << 2, (GFX_ALIGN_RIGHT(R_B_LABEL_X(gSaveContext.language)) + DO_ACTION_TEX_WIDTH) << 2, - (R_B_LABEL_Y(gSaveContext.language) + DO_ACTION_TEX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0, R_B_LABEL_DD, R_B_LABEL_DD); + OVERLAY_DISP++, GFX_ALIGN_RIGHT(R_B_LABEL_X(GetLanguageIndex())) << 2, R_B_LABEL_Y(GetLanguageIndex()) << 2, (GFX_ALIGN_RIGHT(R_B_LABEL_X(GetLanguageIndex())) + DO_ACTION_TEX_WIDTH) << 2, + (R_B_LABEL_Y(GetLanguageIndex()) + DO_ACTION_TEX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0, R_B_LABEL_DD, R_B_LABEL_DD); } gDPPipeSync(OVERLAY_DISP++); @@ -4044,7 +4053,7 @@ void Interface_Draw(GlobalContext* globalCtx) gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, interfaceCtx->aAlpha); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0); - Matrix_Translate(0.0f, 0.0f, WREG(46 + gSaveContext.language) / 10.0f, MTXMODE_NEW); + Matrix_Translate(0.0f, 0.0f, WREG(46 + GetLanguageIndex()) / 10.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_RotateX(interfaceCtx->unk_1F4 / 10000.0f * FRAMERATE_SCALER, MTXMODE_APPLY); gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->gfxCtx, "../z_parameter.c", 3701), G_MTX_MODELVIEW | G_MTX_LOAD); diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp index 4a17db0f5..33904a443 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp @@ -42,7 +42,7 @@ namespace oot::gamestate static u16 GetLocalized(u16 array[]) { - if(gSaveContext.language > 2) // up to fr + if(gSaveContext.language > LANGUAGE_FRA) return (u16)array[0]; else return (u16)array[gSaveContext.language]; @@ -50,7 +50,7 @@ namespace oot::gamestate static void* GetLocalized(void* array[]) { - if(gSaveContext.language > 2) // up to fr + if(gSaveContext.language > LANGUAGE_FRA) return (void*)array[0]; else return (void*)array[gSaveContext.language]; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp index 9112b82b6..4bc97f11e 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp @@ -28,7 +28,7 @@ namespace oot::gamestate static u16 GetLocalized(u16 array[]) { - if(gSaveContext.language > 2) // up to fr + if(gSaveContext.language > LANGUAGE_FRA) return (u16)array[0]; else return (u16)array[gSaveContext.language]; @@ -36,7 +36,7 @@ namespace oot::gamestate static void* GetLocalized(void* array[]) { - if(gSaveContext.language > 2) // up to fr + if(gSaveContext.language > LANGUAGE_FRA) return (void*)array[0]; else return (void*)array[gSaveContext.language]; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp index 19c9ea88d..ce8cc64ed 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp @@ -386,6 +386,14 @@ void KaleidoScope_DrawDungeonMap(GlobalContext* globalCtx, GraphicsContext* gfxC CLOSE_DISPS(gfxCtx, "../z_kaleido_map_PAL.c", 388); } +static void* GetLocalized(void* array[]) +{ + if(gSaveContext.language > LANGUAGE_FRA) + return (void*)array[0]; + else + return (void*)array[gSaveContext.language]; +} + void KaleidoScope_DrawWorldMap(GlobalContext* globalCtx, GraphicsContext* gfxCtx, oot::pause::Page* page) { auto mapPageVtx = page->pageVtx(); @@ -790,7 +798,7 @@ void KaleidoScope_DrawWorldMap(GlobalContext* globalCtx, GraphicsContext* gfxCtx gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 0, pauseCtx->alpha); - gDPLoadTextureBlock_4b(POLY_OPA_DISP++, currentPosTitleTexs[gSaveContext.language], G_IM_FMT_I, 64, 8, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, GetLocalized(currentPosTitleTexs), G_IM_FMT_I, 64, 8, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0); diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp index 7364018b2..642975915 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp @@ -53,6 +53,15 @@ static_assert((int)(DEGTORAD(180) * 100) == 314, "DEGTORAD assert failed"); Gfx* KaleidoScope_DrawPageSections(Gfx* gfx, Vtx* vertices, void** textures); s16 KaleidoScope_SetPageVertices(GlobalContext* globalCtx, Vtx* vtx, s16 pageId, s16 arg3); +// test +static int GetLanguageIndex(int maxLang = LANGUAGE_FRA) +{ + if(gSaveContext.language > maxLang) + return 0; + else + return gSaveContext.language; +} + static s16 gUknItemVtxIndexLUT[] = {0, 4, 8, 12, 24, 32, 56}; static s16 D_8082B12C[] = {-114, 12, 44, 76}; @@ -524,7 +533,7 @@ namespace oot::pause void postDraw(GlobalContext* globalCtx, GraphicsContext* __gfxCtx, float inRadius, bool active) override { - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sSelectItemTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sSelectItemTexs[GetLanguageIndex()]); KaleidoScope_DrawItemSelect(globalCtx, this); } @@ -664,7 +673,7 @@ namespace oot::pause void postDraw(GlobalContext* globalCtx, GraphicsContext* __gfxCtx, float inRadius, bool active) override { - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sMapTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sMapTexs[GetLanguageIndex()]); KaleidoScope_DrawWorldMap(globalCtx, __gfxCtx, this); } }; @@ -720,7 +729,7 @@ namespace oot::pause void postDraw(GlobalContext* globalCtx, GraphicsContext* __gfxCtx, float inRadius, bool active) override { PauseContext* pauseCtx = &globalCtx->pauseCtx; - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sMapTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sMapTexs[GetLanguageIndex()]); KaleidoScope_DrawDungeonMap(globalCtx, __gfxCtx, this); func_800949A8(__gfxCtx); @@ -895,7 +904,7 @@ namespace oot::pause void postDraw(GlobalContext* globalCtx, GraphicsContext* __gfxCtx, float inRadius, bool active) override { PauseContext* pauseCtx = &globalCtx->pauseCtx; - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sQuestStatusTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sQuestStatusTexs[GetLanguageIndex()]); KaleidoScope_DrawQuestStatus(globalCtx, __gfxCtx, this); if(active && pauseCtx->cursorSpecialPos == 0) @@ -1064,7 +1073,7 @@ namespace oot::pause void postDraw(GlobalContext* globalCtx, GraphicsContext* __gfxCtx, float inRadius, bool active) override { PauseContext* pauseCtx = &globalCtx->pauseCtx; - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sEquipmentTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, m_pageVtx.get(), (void**)sEquipmentTexs[GetLanguageIndex()]); KaleidoScope_DrawEquipment(globalCtx, this); if(active && pauseCtx->cursorSpecialPos == 0) @@ -1891,14 +1900,14 @@ void KaleidoScope_DrawPages(GlobalContext* globalCtx, GraphicsContext* gfxCtx) } else { - POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, (void**)sSaveTexs[gSaveContext.language]); + POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, (void**)sSaveTexs[GetLanguageIndex()]); } gSPVertex(POLY_OPA_DISP++, &pauseCtx->saveVtx[60], 32, 0); if(((pauseCtx->state == 7) && (pauseCtx->unk_1EC < 4)) || (pauseCtx->state == 0xE)) { - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sSavePromptTexs[gSaveContext.language], 152, 16, 0); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sSavePromptTexs[GetLanguageIndex()], 152, 16, 0); gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 100, 100, 255, VREG(61)); @@ -1916,9 +1925,9 @@ void KaleidoScope_DrawPages(GlobalContext* globalCtx, GraphicsContext* gfxCtx) gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[gSaveContext.language][0], 48, 16, 12); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[GetLanguageIndex()][0], 48, 16, 12); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[gSaveContext.language][1], 48, 16, 16); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[GetLanguageIndex()][1], 48, 16, 16); } else if(((pauseCtx->state == 7 && pauseCtx->unk_1EC >= 4) || pauseCtx->state == 0xF) && oot::config().game().restoreSaveConfirmation()) { @@ -1928,7 +1937,7 @@ void KaleidoScope_DrawPages(GlobalContext* globalCtx, GraphicsContext* gfxCtx) { if((pauseCtx->state != 0xF) && ((pauseCtx->state == 0x10) || (pauseCtx->state == 0x11))) { - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sContinuePromptTexs[gSaveContext.language], 152, 16, 0); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sContinuePromptTexs[GetLanguageIndex()], 152, 16, 0); gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 100, 100, 255, VREG(61)); @@ -1946,9 +1955,9 @@ void KaleidoScope_DrawPages(GlobalContext* globalCtx, GraphicsContext* gfxCtx) gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA, G_CC_MODULATEIA); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[gSaveContext.language][0], 48, 16, 12); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[GetLanguageIndex()][0], 48, 16, 12); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[gSaveContext.language][1], 48, 16, 16); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sPromptChoiceTexs[GetLanguageIndex()][1], 48, 16, 16); } } @@ -2266,24 +2275,24 @@ void KaleidoScope_DrawInfoPanel(GlobalContext* globalCtx) if(pauseCtx->state == 7) { - pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(61 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(61 + GetLanguageIndex()); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 24; - pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + gSaveContext.language); + pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + GetLanguageIndex()); - pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADE0[gSaveContext.language]; + pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADE0[GetLanguageIndex()]; pauseCtx->infoPanelVtx[17].v.tc[0] = pauseCtx->infoPanelVtx[19].v.tc[0] = 0x300; - pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADE0[gSaveContext.language] << 5; + pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADE0[GetLanguageIndex()] << 5; gSPDisplayList(POLY_OPA_DISP++, gAButtonIconDL); gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD60[gSaveContext.language], D_8082ADE0[gSaveContext.language], 16, 4); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD60[GetLanguageIndex()], D_8082ADE0[GetLanguageIndex()], 16, 4); } else if(pauseCtx->cursorSpecialPos != 0) { @@ -2302,11 +2311,11 @@ void KaleidoScope_DrawInfoPanel(GlobalContext* globalCtx) if(pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) { - tex = gPages.prev(pauseCtx->pageIndex)->infoPanelTexture(gSaveContext.language); + tex = gPages.prev(pauseCtx->pageIndex)->infoPanelTexture(GetLanguageIndex()); } else { - tex = gPages.next(pauseCtx->pageIndex)->infoPanelTexture(gSaveContext.language); + tex = gPages.next(pauseCtx->pageIndex)->infoPanelTexture(GetLanguageIndex()); } if(tex) @@ -2321,24 +2330,24 @@ void KaleidoScope_DrawInfoPanel(GlobalContext* globalCtx) if(current->id() == PAUSE_ITEM) { - pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(49 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(49 + GetLanguageIndex()); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 48; - pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(58 + gSaveContext.language); + pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(58 + GetLanguageIndex()); - pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADD8[gSaveContext.language]; + pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADD8[GetLanguageIndex()]; pauseCtx->infoPanelVtx[17].v.tc[0] = pauseCtx->infoPanelVtx[19].v.tc[0] = 0x600; - pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADD8[gSaveContext.language] << 5; + pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADD8[GetLanguageIndex()] << 5; gSPDisplayList(POLY_OPA_DISP++, gCButtonIconsDL); gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD54[gSaveContext.language], D_8082ADD8[gSaveContext.language], 16, 4); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD54[GetLanguageIndex()], D_8082ADD8[GetLanguageIndex()], 16, 4); } else if((current->id() == PAUSE_MAP) && sInDungeonScene) { @@ -2347,51 +2356,51 @@ void KaleidoScope_DrawInfoPanel(GlobalContext* globalCtx) { if(pauseCtx->namedItem != PAUSE_ITEM_NONE) { - pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(55 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(55 + GetLanguageIndex()); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 24; - pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + gSaveContext.language); + pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + GetLanguageIndex()); - if(gSaveContext.language == LANGUAGE_GER) + if(GetLanguageIndex() == LANGUAGE_GER) { pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] - 99; } - pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADE8[gSaveContext.language]; + pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADE8[GetLanguageIndex()]; pauseCtx->infoPanelVtx[17].v.tc[0] = pauseCtx->infoPanelVtx[19].v.tc[0] = 0x300; - pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADE8[gSaveContext.language] << 5; + pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADE8[GetLanguageIndex()] << 5; gSPDisplayList(POLY_OPA_DISP++, gAButtonIconDL); gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD6C[gSaveContext.language], D_8082ADE8[gSaveContext.language], 16, 4); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD6C[GetLanguageIndex()], D_8082ADE8[GetLanguageIndex()], 16, 4); } } else if(current->id() == PAUSE_EQUIP) { - pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(64 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(64 + GetLanguageIndex()); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 24; - pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + gSaveContext.language); + pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + GetLanguageIndex()); - pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADD8[gSaveContext.language]; + pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADD8[GetLanguageIndex()]; pauseCtx->infoPanelVtx[17].v.tc[0] = pauseCtx->infoPanelVtx[19].v.tc[0] = 0x300; - pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADD8[gSaveContext.language] << 5; + pauseCtx->infoPanelVtx[21].v.tc[0] = pauseCtx->infoPanelVtx[23].v.tc[0] = D_8082ADD8[GetLanguageIndex()] << 5; gSPDisplayList(POLY_OPA_DISP++, gAButtonIconDL); gDPPipeSync(POLY_OPA_DISP++); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD54[gSaveContext.language], D_8082ADD8[gSaveContext.language], 16, 4); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, D_8082AD54[GetLanguageIndex()], D_8082ADD8[GetLanguageIndex()], 16, 4); } } } @@ -2418,11 +2427,11 @@ void KaleidoScope_UpdateNamePanel(GlobalContext* globalCtx) { if((current->id() == PAUSE_MAP) && !sInDungeonScene) { - if(gSaveContext.language) + if(GetLanguageIndex()) { sp2A += 12; } - if(gSaveContext.language == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FRA) { sp2A += 12; } @@ -2436,16 +2445,16 @@ void KaleidoScope_UpdateNamePanel(GlobalContext* globalCtx) { osSyncPrintf("zoom_name=%d\n", pauseCtx->namedItem); - if(gSaveContext.language) + if(GetLanguageIndex()) { sp2A += 123; } - if(gSaveContext.language == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FRA) { sp2A += 123; } - osSyncPrintf("J_N=%d point=%d\n", gSaveContext.language, sp2A); + osSyncPrintf("J_N=%d point=%d\n", GetLanguageIndex(), sp2A); pauseCtx->nameSegment = (u8*)item_name_static_lut[sp2A]; } @@ -3292,34 +3301,36 @@ void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) break; } - if(gSaveContext.language == LANGUAGE_ENG) - { - pauseCtx->iconItemLangSegment = _icon_item_nes_staticSegmentRomStart; - } - else if(gSaveContext.language == LANGUAGE_GER) + switch(gSaveContext.language) { - pauseCtx->iconItemLangSegment = _icon_item_ger_staticSegmentRomStart; - } - else - { - pauseCtx->iconItemLangSegment = _icon_item_fra_staticSegmentRomStart; + case LANGUAGE_ENG: + default: + pauseCtx->iconItemLangSegment = _icon_item_nes_staticSegmentRomStart; + break; + case LANGUAGE_GER: + pauseCtx->iconItemLangSegment = _icon_item_ger_staticSegmentRomStart; + break; + case LANGUAGE_FRA: + pauseCtx->iconItemLangSegment = _icon_item_fra_staticSegmentRomStart; + break; } Interface_SetDoAction(globalCtx, DO_ACTION_DECIDE); if(((void)0, gSaveContext.worldMapArea) < 22) { - if(gSaveContext.language == LANGUAGE_ENG) - { - pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36]; - } - else if(gSaveContext.language == LANGUAGE_GER) - { - pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36 + 22]; - } - else + switch(gSaveContext.language) { - pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36 + 22 + 22]; + case LANGUAGE_ENG: + default: + pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36]; + break; + case LANGUAGE_GER: + pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36 + 22]; + break; + case LANGUAGE_FRA: + pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36 + 22 + 22]; + break; } } @@ -3915,17 +3926,18 @@ void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) pauseCtx->iconItem24Segment = _icon_item_24_staticSegmentRomStart; pauseCtx->iconItemAltSegment = _icon_item_gameover_staticSegmentRomStart; - if(gSaveContext.language == LANGUAGE_ENG) - { - pauseCtx->iconItemLangSegment = _icon_item_nes_staticSegmentRomStart; - } - else if(gSaveContext.language == LANGUAGE_GER) + switch(gSaveContext.language) { - pauseCtx->iconItemLangSegment = _icon_item_ger_staticSegmentRomStart; - } - else - { - pauseCtx->iconItemLangSegment = _icon_item_fra_staticSegmentRomStart; + case LANGUAGE_ENG: + default: + pauseCtx->iconItemLangSegment = _icon_item_nes_staticSegmentRomStart; + break; + case LANGUAGE_GER: + pauseCtx->iconItemLangSegment = _icon_item_ger_staticSegmentRomStart; + break; + case LANGUAGE_FRA: + pauseCtx->iconItemLangSegment = _icon_item_fra_staticSegmentRomStart; + break; } D_8082AB8C = 255; From 2d2500f796d9821acf686d7bfb29bd37099ed14f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 10 Sep 2022 01:02:53 -0500 Subject: [PATCH 08/25] Add extra Latin characters This should already work for EUR_MQD, minor adjustments may have to be made to make it work well for PAL_1.0 --- .../add1_to.nes_font_static.h.txt | 13 ++++++ .../add2_to.nes_font_static.h.txt | 13 ++++++ .../add_to.nes_font_static.cpp.txt | 43 +++++++++++++++++++ ...latin_capital_letter_i_with_acute.i4.inc.c | 5 +++ ...latin_capital_letter_o_with_acute.i4.inc.c | 5 +++ ...latin_capital_letter_u_with_acute.i4.inc.c | 5 +++ ...f_latin_small_letter_i_with_acute.i4.inc.c | 5 +++ ...0_latin_small_letter_o_with_acute.i4.inc.c | 5 +++ ...1_latin_small_letter_u_with_acute.i4.inc.c | 5 +++ ...sg_char_b2_inverted_question_mark.i4.inc.c | 5 +++ ...char_b3_inverted_exclamation_mark.i4.inc.c | 5 +++ ...latin_capital_letter_a_with_acute.i4.inc.c | 5 +++ ...latin_capital_letter_n_with_tilde.i4.inc.c | 5 +++ ...6_latin_small_letter_n_with_tilde.i4.inc.c | 5 +++ setup.py | 26 +++++++++++ 15 files changed, 150 insertions(+) create mode 100644 include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt create mode 100644 include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt create mode 100644 include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt create mode 100644 include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c create mode 100644 include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c diff --git a/include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt b/include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt new file mode 100644 index 000000000..75a7f2c8e --- /dev/null +++ b/include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt @@ -0,0 +1,13 @@ +extern u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[]; +extern u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[]; +extern u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[]; +extern u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[]; +extern u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[]; +extern u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[]; +extern u8 gMsgCharB2InvertedQuestionMarkTex[]; +extern u8 gMsgCharB3InvertedExclamationMarkTex[]; +extern u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[]; +extern u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[]; +extern u8 gMsgCharB6LatinSmallLetterNWithTildeTex[]; + +static void* nes_font_static_lut[] = { \ No newline at end of file diff --git a/include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt b/include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt new file mode 100644 index 000000000..69325e2a3 --- /dev/null +++ b/include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt @@ -0,0 +1,13 @@ +, +gMsgCharACLatinCapitalLetterIWithAcuteTex, +gMsgCharADLatinCapitalLetterOWithAcuteTex, +gMsgCharAELatinCapitalLetterUWithAcuteTex, +gMsgCharAFLatinSmallLetterIWithAcuteTex, +gMsgCharB0LatinSmallLetterOWithAcuteTex, +gMsgCharB1LatinSmallLetterUWithAcuteTex, +gMsgCharB2InvertedQuestionMarkTex, +gMsgCharB3InvertedExclamationMarkTex, +gMsgCharB4LatinCapitalLetterAWithAcuteTex, +gMsgCharB5LatinCapitalLetterNWithTildeTex, +gMsgCharB6LatinSmallLetterNWithTildeTex +}; \ No newline at end of file diff --git a/include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt b/include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt new file mode 100644 index 000000000..df05bfdcb --- /dev/null +++ b/include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt @@ -0,0 +1,43 @@ +u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c" +}; + +u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c" +}; + +u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c" +}; + +u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c" +}; + +u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c" +}; + +u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c" +}; + +u8 gMsgCharB2InvertedQuestionMarkTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c" +}; + +u8 gMsgCharB3InvertedExclamationMarkTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c" +}; + +u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c" +}; + +u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c" +}; + +u8 gMsgCharB6LatinSmallLetterNWithTildeTex[] = { +#include "translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c" +}; \ No newline at end of file diff --git a/include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c new file mode 100644 index 000000000..9f846573a --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // 0x000000 +0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000020 +0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000040 +0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c new file mode 100644 index 000000000..bf0157592 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x09, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x03, 0x88, 0x87, 0x20, 0x00, 0x00, 0x00, 0x01, 0xBF, 0x84, 0x5C, 0xF6, 0x00, 0x00, 0x00, 0x08, 0xF7, 0x00, 0x01, 0xEF, 0x40, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x8F, 0x90, 0x00, 0x00, 0x3F, // 0x000020 +0xF0, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x00, 0x0E, 0xF5, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xFC, 0x10, 0x01, 0xDE, 0x20, 0x00, 0x00, 0x00, // 0x000040 +0x7E, 0xD8, 0x8D, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c new file mode 100644 index 000000000..d7a87c628 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, // 0x000000 +0x60, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, // 0x000020 +0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x2F, 0xD0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x0E, 0xF3, 0x00, 0x3F, 0x10, 0x00, 0x00, 0x00, 0x03, // 0x000040 +0xDE, 0x99, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c new file mode 100644 index 000000000..ca6c4b617 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000020 +0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000040 +0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c new file mode 100644 index 000000000..a5e7873ab --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xBD, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x09, 0xF2, 0x0B, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000020 +0xB0, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xB0, 0x04, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD0, 0x04, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xF4, 0x08, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x02, // 0x000040 +0xCC, 0x8E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c new file mode 100644 index 000000000..f754a0046 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000020 +0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD0, 0x5F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0B, // 0x000040 +0xFC, 0xDF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x14, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c new file mode 100644 index 000000000..d36b03f86 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x00, 0x7D, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAD, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000020 +0x6F, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xED, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF9, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0xFB, 0x00, 0x06, 0xC1, 0x00, 0x00, 0x00, 0x00, // 0x000040 +0x8F, 0x83, 0x6C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0x98, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c new file mode 100644 index 000000000..4fd427369 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x02, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000020 +0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000040 +0xBF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c new file mode 100644 index 000000000..2c6e2192c --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xB1, 0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, // 0x000020 +0x0D, 0x60, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x88, 0x9F, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x44, 0x4B, 0xF9, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x04, 0xFF, 0x20, 0x00, 0x00, 0x0B, // 0x000040 +0x80, 0x00, 0x00, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c new file mode 100644 index 000000000..59b8f66c9 --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x1E, 0xF1, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x1E, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, // 0x000000 +0xA5, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0x40, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x1C, 0x8F, 0xE3, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x1C, 0x17, 0xFD, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x1C, // 0x000020 +0x10, 0x9F, 0xB0, 0xE7, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x1B, 0xF9, 0xE6, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x02, 0xDF, 0xE6, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x3E, 0xF6, 0x00, 0x00, 0x00, 0x1C, // 0x000040 +0x30, 0x00, 0x05, 0xE6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c new file mode 100644 index 000000000..eb51edbef --- /dev/null +++ b/include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c @@ -0,0 +1,5 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xC5, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, // 0x000000 +0x97, 0x9D, 0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x63, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCD, 0xAB, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x41, 0xCF, 0x40, 0x00, 0x00, 0x00, 0x01, // 0x000020 +0xED, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, 0xED, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, 0xED, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, 0xFD, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, // 0x000040 +0xDB, 0x00, 0x8E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/setup.py b/setup.py index feff09dc4..f3be0505c 100755 --- a/setup.py +++ b/setup.py @@ -45,6 +45,26 @@ def generateEncMsgs(): subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) print("Finished message encoding") +def addAdditionalLatinChars(): + fontcppfile = str(assetPath('textures/nes_font_static/nes_font_static.cpp')) + fontheaderfile = str(assetPath('textures/nes_font_static/nes_font_static.h')) + tocppfile = str('include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt') + toheaderfile1 = str('include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt') + toheaderfile2 = str('include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt') + foundtex = 'gMsgCharACLatinCapitalLetterIWithAcuteTex' + + with open(fontcppfile, 'r+') as fontcpp: + if not foundtex in fontcpp.read(): + fontcpp.write(open(tocppfile, 'r').read()) + + with open(fontheaderfile, 'r') as fontheader: + headertext = fontheader.read() + if not foundtex in headertext: + headertext = headertext.replace('static void* nes_font_static_lut[] = {', open(toheaderfile1, 'r').read()) + headertext = headertext.replace('};', open(toheaderfile2, 'r').read()) + with open(fontheaderfile, 'w') as fontheader: + fontheader.write(headertext) + def build(): print("Starting asset extraction and parsing") # sys.executable points to python executable @@ -60,6 +80,7 @@ def build(): subprocess.check_call([sys.executable, str('tools/extract_missing_assets.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/create_luts.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/fix_mtx.py'), buildRom()]) + addAdditionalLatinChars() print("Finished asset extraction and parsing") @@ -76,6 +97,7 @@ def main(): parser.add_argument("-o", "--organize-roms", help="Renames and moves roms to their proper location", action="store_true", default=False) parser.add_argument("-s", "--skip-organize-roms", help="Skip organizing roms", action="store_true", default=False) parser.add_argument("--run-msgenc", help="Run msgenc", action="store_true", default=False) + parser.add_argument("--add-extra-chars", help="Adds new Latin characters", action="store_true", default=False) args = parser.parse_args() @@ -105,6 +127,10 @@ def main(): generateEncMsgs() exit(0) + if args.add_extra_chars: + addAdditionalLatinChars() + exit(0) + if args.enable_mouse: defines.append('ENABLE_MOUSE') From 84ac2bfe7882cb1c2faadf6b9ce326d540705c76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 3 Sep 2022 02:32:18 -0500 Subject: [PATCH 09/25] Add multilingual "PRESS START" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TODO: Add Ü to 0xFFFC? Add to options --- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 49 +++++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index d90905ca8..12187ba6b 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -33,7 +33,19 @@ static u8 noControllerFontIndexes_28[] = { 0x17, 0x18, 0x0C, 0x18, 0x17, 0x1D, 0x1B, 0x18, 0x15, 0x15, 0x0E, 0x1B, }; -static u8 pressStartFontIndexes_28[] = { +static u8 pressStartFontIndexes_ENG[] = { + 0x19, 0x1B, 0x0E, 0x1C, 0x1C, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, +}; + +static u8 pressStartFontIndexes_GER[] = { + 0x0D, 0x1B, 0x1E, 0x0C, 0x14, 0x0E, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, +}; + +static u8 pressStartFontIndexes_FRA[] = { + 0x0A, 0x19, 0x19, 0x1E, 0x22, 0x0E, 0x23, 0x1C, 0x1E, 0x1B, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, +}; + +static u8 pressStartFontIndexes_SPA[] = { 0x19, 0x1E, 0x15, 0x1C, 0x0A, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, }; @@ -601,6 +613,25 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) } else if(pthis->copyrightAlpha >= 200.0f) { + // int lang = LANGUAGE_ENG; + int lang = gSaveContext.language; + + // FontIndexesLanguage + static u8* pressStartFontIndexes[4] = { + {pressStartFontIndexes_ENG}, + {pressStartFontIndexes_GER}, + {pressStartFontIndexes_FRA}, + {pressStartFontIndexes_SPA} + }; + + // Count, Left, SpaceIndex, StartIndex + static int pressStartInfo[4][4] = { + {10, 0, 4, 4}, + {11, -3, 5, 5}, + {15, -15, 6, 9}, + {10, 0, 4, 4} + }; + // Draw "PRESS START" Text textAlpha_28 = textFadeTimer_28 * 10; if(textAlpha_28 >= 255) @@ -613,12 +644,12 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha_28); - rectLeft = YREG(7) + 1; - for(i = 0; i < ARRAY_COUNT(pressStartFontIndexes_28); i++) + rectLeft = YREG(7) + 1 + pressStartInfo[lang][1]; + for(i = 0; i < pressStartInfo[lang][0]; i++) { - EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndexes_28[i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 172); + EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndexes[lang][i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 172); rectLeft += YREG(8); - if(i == 4) + if((i == pressStartInfo[lang][2]) || (i == pressStartInfo[lang][3])) { rectLeft += YREG(9); } @@ -628,12 +659,12 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) gDPPipeSync(gfx++); gDPSetPrimColor(gfx++, 0, 0, YREG(4), YREG(5), YREG(6), textAlpha_28); - rectLeft = YREG(7); - for(i = 0; i < ARRAY_COUNT(pressStartFontIndexes_28); i++) + rectLeft = YREG(7) + pressStartInfo[lang][1]; + for(i = 0; i < pressStartInfo[lang][0]; i++) { - EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndexes_28[i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 171); + EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndexes[lang][i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 171); rectLeft += YREG(8); - if(i == 4) + if((i == pressStartInfo[lang][2]) || (i == pressStartInfo[lang][3])) { rectLeft += YREG(9); } From 735fdb06f8c333abdc6f97c8e6be49c44b3fe430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Mon, 16 May 2022 05:58:32 -0500 Subject: [PATCH 10/25] Update Spanish JSON translations --- include/translations/item_name_static_es.json | 16 ++++++++-------- include/translations/title_card_es.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/translations/item_name_static_es.json b/include/translations/item_name_static_es.json index 8234a422a..0d887e509 100644 --- a/include/translations/item_name_static_es.json +++ b/include/translations/item_name_static_es.json @@ -13,8 +13,8 @@ "bomb_item_name": "Bomba", "boomerang_item_name": "Bumerán", "bottled_fairy_item_name": "Hada embotellada", - "broken_giants_knife_item_name": "Cuchillo de Gigante (roto)", - "broken_gorons_sword_item_name": "Espada Goron (rota)", + "broken_giants_knife_item_name": "Cuchillo gigante (quebrado)", + "broken_gorons_sword_item_name": "Espada Goron rota", "bug_item_name": "Bicho", "bullet_bag_30_item_name": "Bolsa de semillas (30)", "bullet_bag_40_item_name": "Bolsa de semillas (40)", @@ -44,7 +44,7 @@ "full_milk_item_name": "Leche Lon Lon", "gerudos_card_item_name": "Pase Gerudo", "gerudo_mask_item_name": "Máscara Gerudo", - "giants_knife_item_name": "Cuchillo de Gigante", + "giants_knife_item_name": "Cuchillo gigante", "golden_gauntlets_item_name": "Guantes de Oro", "golden_scale_item_name": "Escama de Oro", "gold_skulltula_item_name": "Skulltula dorada", @@ -56,7 +56,7 @@ "half_milk_item_name": "Leche Lon Lon (mitad)", "hookshot_item_name": "Gancho", "hover_boots_item_name": "Botas flotantes", - "hylian_shield_item_name": "Escudo Hylian", + "hylian_shield_item_name": "Escudo Hyliano", "icearrow_item_name": "Flecha de hielo (2PM)", "iron_boots_item_name": "Botas de hierro", "keaton_mask_item_name": "Máscara Keaton", @@ -69,7 +69,7 @@ "light_medallion_item_name": "Medallón de la Luz", "longshot_item_name": "Gancho largo", "magic_beans_item_name": "Frijoles mágicos", - "mask_of_truth_item_name": "Máscara de la verdad", + "mask_of_truth_item_name": "Máscara de la Verdad", "master_sword_item_name": "Espada Maestra", "megaton_hammer_item_name": "Martillo Megatón", "minuet_of_forest_item_name": "Minueto del bosque", @@ -77,10 +77,10 @@ "nayrus_love_item_name": "Amor de Nayru (12PM)", "nocturne_of_shadow_item_name": "Nocturno de la sombra", "ocarina_of_time_item_name": "Ocarina del Tiempo", - "odd_mushroom_item_name": "Hongo extraño", - "odd_potion_item_name": "Poción extraña", + "odd_mushroom_item_name": "Seta rara", + "odd_potion_item_name": "Medicina rara", "piece_of_heart_item_name": "Pieza de corazón", - "poachers_saw_item_name": "Sierra del cazador", + "poachers_saw_item_name": "Sierra del furtivo", "pocket_cucco_item_name": "Cuco de bolsillo", "pocket_egg_item_name": "Huevo de bolsillo", "poe_item_name": "Poe", diff --git a/include/translations/title_card_es.json b/include/translations/title_card_es.json index 4f68dc2a0..57a095fdc 100644 --- a/include/translations/title_card_es.json +++ b/include/translations/title_card_es.json @@ -1,7 +1,7 @@ [ { "barinade_title_card": "Anémona bioeléctrica\nBARINADE", - "bongo_title_card": "Fantasma bestial de la oscuridad\nBONGO BONGO", + "bongo_title_card": "Bestia espectral de las sombras\nBONGO BONGO", "ganondorf_title_card": "Gran Rey Demonio\nGANONDORF", "ganon_title_card": "GANON", "gohma_title_card": "Arácnido parásito acorazado\nGOHMA", From 372035068bfd0686b9954e9bc6dd602281c8cf4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 21 Apr 2023 23:29:19 -0500 Subject: [PATCH 11/25] Add Portuguese language support Still missing assets! May crash if any character of the messages in Portuguese is not found. --- include/message_data_static.h | 11 ++++++----- include/z64message.h | 1 + roms/EUR_MQD/text/pt_message_data_static.cpp | 9 +++++++++ roms/PAL_1.0/text/pt_message_data_static.cpp | 9 +++++++++ setup.py | 1 + src/code/z_message_PAL.cpp | 10 ++++++++++ src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 14 ++++++++++---- src/port/options.cpp | 12 ++++++++++++ vs/OOT_Assets.vcxproj | 1 + 9 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 roms/EUR_MQD/text/pt_message_data_static.cpp create mode 100644 roms/PAL_1.0/text/pt_message_data_static.cpp diff --git a/include/message_data_static.h b/include/message_data_static.h index 1b2513551..de954661d 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -46,11 +46,12 @@ struct MessageTableEntry #undef DEFINE_MESSAGE -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, spaMessage) \ - extern "C" const char _message_##textId##_nes[]; \ - extern "C" const char _message_##textId##_ger[]; \ - extern "C" const char _message_##textId##_fra[]; \ - extern "C" const char _message_##textId##_spa[]; +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, spaMessage, ptMessage) \ + extern "C" const char _message_##textId##_nes[]; \ + extern "C" const char _message_##textId##_ger[]; \ + extern "C" const char _message_##textId##_fra[]; \ + extern "C" const char _message_##textId##_spa[]; \ + extern "C" const char _message_##textId##_pt[]; #include "translations/message_data_en.h" extern "C" const char _message_0xFFFC_nes[73]; diff --git a/include/z64message.h b/include/z64message.h index fa148d91d..de2f5923b 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -18,6 +18,7 @@ enum Language LANGUAGE_GER, LANGUAGE_FRA, LANGUAGE_SPA, + LANGUAGE_PT, LANGUAGE_MAX, LANGUAGE_AUTO }; diff --git a/roms/EUR_MQD/text/pt_message_data_static.cpp b/roms/EUR_MQD/text/pt_message_data_static.cpp new file mode 100644 index 000000000..c08fa72e3 --- /dev/null +++ b/roms/EUR_MQD/text/pt_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, ptMessage) \ + const char _message_##textId##_pt[sizeof(ptMessage END)] = { ptMessage END }; + +#include "translations/message_data_pt.enc.h" diff --git a/roms/PAL_1.0/text/pt_message_data_static.cpp b/roms/PAL_1.0/text/pt_message_data_static.cpp new file mode 100644 index 000000000..c08fa72e3 --- /dev/null +++ b/roms/PAL_1.0/text/pt_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, ptMessage) \ + const char _message_##textId##_pt[sizeof(ptMessage END)] = { ptMessage END }; + +#include "translations/message_data_pt.enc.h" diff --git a/setup.py b/setup.py index f3be0505c..4b1cad7cd 100755 --- a/setup.py +++ b/setup.py @@ -41,6 +41,7 @@ def generateEncMsgs(): subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_pt.h'), str('include/translations/message_data_pt.enc.h'), buildRom()]) mkdir(assetPath('text')) subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) print("Finished message encoding") diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 69ab38877..8955daefd 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -98,6 +98,13 @@ MessageTableEntry sSpaMessageEntryTable[] = { {0xFFFF, 0, NULL, 0}, }; +MessageTableEntry sPtMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, ptMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_pt, sizeof(ptMessage)}, +#include "translations/message_data_pt.h" +#undef DEFINE_MESSAGE + {0xFFFF, 0, NULL, 0}, +}; + MessageTableEntry sStaffMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff, sizeof(staffMessage)}, #include "text/message_data_staff.h" @@ -3829,6 +3836,9 @@ void Message_SetTables(void) case LANGUAGE_SPA: sMessageEntryTablePtr = sSpaMessageEntryTable; break; + case LANGUAGE_PT: + sMessageEntryTablePtr = sPtMessageEntryTable; + break; case LANGUAGE_ENG: default: sMessageEntryTablePtr = sNesMessageEntryTable; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index 12187ba6b..ca9abd6a7 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -49,6 +49,10 @@ static u8 pressStartFontIndexes_SPA[] = { 0x19, 0x1E, 0x15, 0x1C, 0x0A, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, }; +static u8 pressStartFontIndexes_PT[] = { + 0x0A, 0x19, 0x0E, 0x1B, 0x1D, 0x0E, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, +}; + static void* effectMaskTextures_28[] = { gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex, gTitleEffectMask10Tex, gTitleEffectMask11Tex, gTitleEffectMask12Tex, gTitleEffectMask20Tex, gTitleEffectMask21Tex, gTitleEffectMask22Tex, }; @@ -617,19 +621,21 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) int lang = gSaveContext.language; // FontIndexesLanguage - static u8* pressStartFontIndexes[4] = { + static u8* pressStartFontIndexes[5] = { {pressStartFontIndexes_ENG}, {pressStartFontIndexes_GER}, {pressStartFontIndexes_FRA}, - {pressStartFontIndexes_SPA} + {pressStartFontIndexes_SPA}, + {pressStartFontIndexes_PT} }; // Count, Left, SpaceIndex, StartIndex - static int pressStartInfo[4][4] = { + static int pressStartInfo[5][4] = { {10, 0, 4, 4}, {11, -3, 5, 5}, {15, -15, 6, 9}, - {10, 0, 4, 4} + {10, 0, 4, 4}, + {11, -3, 5, 5} }; // Draw "PRESS START" Text diff --git a/src/port/options.cpp b/src/port/options.cpp index 5e1010aed..395ff996b 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -46,6 +46,8 @@ std::string languageGetString(Language id) return "fr"; case LANGUAGE_GER: return "de"; + case LANGUAGE_PT: + return "pt"; } return "en"; } @@ -72,6 +74,10 @@ Language languageGetId(const std::string& s) { return LANGUAGE_GER; } + else if(s == "pt") + { + return LANGUAGE_PT; + } return LANGUAGE_ENG; } @@ -331,6 +337,9 @@ namespace oot setLanguage(LANGUAGE_SPA); break; case LANGUAGE_SPA: + setLanguage(LANGUAGE_PT); + break; + case LANGUAGE_PT: setLanguage(LANGUAGE_ENG); break; case LANGUAGE_GER: @@ -347,6 +356,9 @@ namespace oot switch(m_language) { case LANGUAGE_ENG: + setLanguage(LANGUAGE_PT); + break; + case LANGUAGE_PT: setLanguage(LANGUAGE_SPA); break; case LANGUAGE_SPA: diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index c4fd720c5..50bc0552c 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1027,6 +1027,7 @@ + From e0a68c989a1695622744f8183277ace45a8515dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 28 Apr 2023 14:47:17 -0500 Subject: [PATCH 12/25] Use png extra characters, move to ALL assets --- .gitignore | 6 +- {roms/EUR_MQD => assets/ALL}/text/charmap.txt | 4 + .../ALL}/text/pt_message_data_static.cpp | 0 .../ALL}/text/spa_message_data_static.cpp | 0 .../msg_char_ab_control_pad.i4.png | Bin 0 -> 129 bytes ...c_latin_capital_letter_i_with_acute.i4.png | Bin 0 -> 129 bytes ...d_latin_capital_letter_o_with_acute.i4.png | Bin 0 -> 234 bytes ...e_latin_capital_letter_u_with_acute.i4.png | Bin 0 -> 192 bytes ..._af_latin_small_letter_i_with_acute.i4.png | Bin 0 -> 134 bytes ..._b0_latin_small_letter_o_with_acute.i4.png | Bin 0 -> 206 bytes ..._b1_latin_small_letter_u_with_acute.i4.png | Bin 0 -> 164 bytes .../msg_char_b2_inverted_question_mark.i4.png | Bin 0 -> 213 bytes ...g_char_b3_inverted_exclamation_mark.i4.png | Bin 0 -> 178 bytes ...4_latin_capital_letter_a_with_acute.i4.png | Bin 0 -> 194 bytes ...5_latin_capital_letter_n_with_tilde.i4.png | Bin 0 -> 244 bytes ..._b6_latin_small_letter_n_with_tilde.i4.png | Bin 0 -> 208 bytes ...7_latin_capital_letter_a_with_tilde.i4.png | Bin 0 -> 230 bytes ...8_latin_capital_letter_o_with_tilde.i4.png | Bin 0 -> 266 bytes ..._b9_latin_small_letter_a_with_tilde.i4.png | Bin 0 -> 216 bytes ..._ba_latin_small_letter_o_with_tilde.i4.png | Bin 0 -> 228 bytes .../nes_font_static/nes_font_static.cpp | 630 ++++++++++++++++++ .../nes_font_static/nes_font_static.h | 323 +++++++++ .../add1_to.nes_font_static.h.txt | 13 - .../add2_to.nes_font_static.h.txt | 13 - .../add_to.nes_font_static.cpp.txt | 43 -- ...latin_capital_letter_i_with_acute.i4.inc.c | 5 - ...latin_capital_letter_o_with_acute.i4.inc.c | 5 - ...latin_capital_letter_u_with_acute.i4.inc.c | 5 - ...f_latin_small_letter_i_with_acute.i4.inc.c | 5 - ...0_latin_small_letter_o_with_acute.i4.inc.c | 5 - ...1_latin_small_letter_u_with_acute.i4.inc.c | 5 - ...sg_char_b2_inverted_question_mark.i4.inc.c | 5 - ...char_b3_inverted_exclamation_mark.i4.inc.c | 5 - ...latin_capital_letter_a_with_acute.i4.inc.c | 5 - ...latin_capital_letter_n_with_tilde.i4.inc.c | 5 - ...6_latin_small_letter_n_with_tilde.i4.inc.c | 5 - meson.build | 2 +- roms/PAL_1.0/text/charmap.txt | 62 -- roms/PAL_1.0/text/pt_message_data_static.cpp | 9 - roms/PAL_1.0/text/spa_message_data_static.cpp | 9 - setup.py | 49 +- src/code/z_message_PAL.cpp | 6 +- tools/msgdis.py | 4 + vs/OOT_Assets.vcxproj | 6 +- vs/OOT_Assets.vcxproj.filters | 8 +- vs/oot.props.src | 2 +- 46 files changed, 1004 insertions(+), 240 deletions(-) rename {roms/EUR_MQD => assets/ALL}/text/charmap.txt (93%) rename {roms/EUR_MQD => assets/ALL}/text/pt_message_data_static.cpp (100%) rename {roms/EUR_MQD => assets/ALL}/text/spa_message_data_static.cpp (100%) create mode 100644 assets/ALL/textures/nes_font_static/msg_char_ab_control_pad.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_ac_latin_capital_letter_i_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_ad_latin_capital_letter_o_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_ae_latin_capital_letter_u_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_af_latin_small_letter_i_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b0_latin_small_letter_o_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b1_latin_small_letter_u_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b2_inverted_question_mark.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b3_inverted_exclamation_mark.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b4_latin_capital_letter_a_with_acute.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b5_latin_capital_letter_n_with_tilde.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b6_latin_small_letter_n_with_tilde.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b7_latin_capital_letter_a_with_tilde.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b8_latin_capital_letter_o_with_tilde.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_b9_latin_small_letter_a_with_tilde.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_ba_latin_small_letter_o_with_tilde.i4.png create mode 100644 assets/ALL/textures/nes_font_static/nes_font_static.cpp create mode 100644 assets/ALL/textures/nes_font_static/nes_font_static.h delete mode 100644 include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt delete mode 100644 include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt delete mode 100644 include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt delete mode 100644 include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c delete mode 100644 include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c delete mode 100644 roms/PAL_1.0/text/charmap.txt delete mode 100644 roms/PAL_1.0/text/pt_message_data_static.cpp delete mode 100644 roms/PAL_1.0/text/spa_message_data_static.cpp diff --git a/.gitignore b/.gitignore index bf6812569..16a5eb222 100644 --- a/.gitignore +++ b/.gitignore @@ -62,7 +62,11 @@ vs/build *.enc.h !*_custom* .extracted-assets.json -assets/ +assets/* +build/assets/* +!assets/ALL/ +!assets/ALL/textures/**/*.png +generated/ # Docs !docs/tutorial/ diff --git a/roms/EUR_MQD/text/charmap.txt b/assets/ALL/text/charmap.txt similarity index 93% rename from roms/EUR_MQD/text/charmap.txt rename to assets/ALL/text/charmap.txt index dbe035240..80f80a7b5 100644 --- a/roms/EUR_MQD/text/charmap.txt +++ b/assets/ALL/text/charmap.txt @@ -12,6 +12,10 @@ 'Á' : 0xB4, 'Ñ' : 0xB5, 'ñ' : 0xB6, + 'Ã' : 0xB7, + 'Õ' : 0xB8, + 'ã' : 0xB9, + 'õ' : 0xBA, '‾' : 0x7F, 'À' : 0x80, diff --git a/roms/EUR_MQD/text/pt_message_data_static.cpp b/assets/ALL/text/pt_message_data_static.cpp similarity index 100% rename from roms/EUR_MQD/text/pt_message_data_static.cpp rename to assets/ALL/text/pt_message_data_static.cpp diff --git a/roms/EUR_MQD/text/spa_message_data_static.cpp b/assets/ALL/text/spa_message_data_static.cpp similarity index 100% rename from roms/EUR_MQD/text/spa_message_data_static.cpp rename to assets/ALL/text/spa_message_data_static.cpp diff --git a/assets/ALL/textures/nes_font_static/msg_char_ab_control_pad.i4.png b/assets/ALL/textures/nes_font_static/msg_char_ab_control_pad.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..88d375d39397c948630caed0660c0c825bfb5909 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5M?jcysy3fAP|(=Z z#W6(Vd~(790U3*e2h0)-k}jD)8d%r@nD5-(!LX~|V5wp60w3m+eo`$5y#g;uurM$z XFuUdW>B^-lpmqjNS3j3^P6pjb>(q9_4zd66*S{{2+&#@V*q1khb()aHCp{b zNvGkWE8{&8$xx0Dz6{THr0f;zG`X(8k=B3q!>yk=Yeg47ExLH2&E)?=K7scS-`{CW de>HytbJ3z^@z|#Lf7gW*l_dx?ri;h6{TSwCZFZ$~%3p@yq`&%N?9=2nZTK z=25@#WXo?>&863()|Q%2{Bgc9h|B!t-uG%k|MxT2H8-r9$Cl9JsP=r13ainv7i=#Q nm<(qI+`0D1F74sEH>+d*PfE@@uy=+U&~^q-S3j3^P64F}>VGri##N0Do}MRf+?c`gouT*s-s3JVo= c<=B8m9A_~3e^l$^dY~B$p00i_>zopr0J?f8<^TWy literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b0_latin_small_letter_o_with_acute.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b0_latin_small_letter_o_with_acute.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..37ad721830e3dbc68d398150c4a05788a0937453 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP_V(% z#W6(V{MiYPybOvwEE^kGbrKdvZ2(dWSh=?XsV` literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b1_latin_small_letter_u_with_acute.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b1_latin_small_letter_u_with_acute.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..5b969207bdc60b6b7309d18078bfaba5b6a6328a GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP%zBX z#W6(Vd~(79?HQKE&;I}a->4F}>VGri##OAWtPgWkRaFnAy}!3t`b0rtVdG}^hPK`1 z@0lbQE?nr6$*_uHm38qmo&f1UDTO{pri2^@&*bFfHbqtj=B24j&l`_O0&QUMboFyt I=akR{02m!ID*ylh literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b2_inverted_question_mark.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b2_inverted_question_mark.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..32b441fc8fa1a641af947f3c18186e71a2dd8f59 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5M?jcysy3fAP_W(8 z#W6(Vd~(7977h*$3kwSd&m>b56O)=B9~2c88zXpGSy{#PVt{fA2Sd5IxR(56e4&-} zHz6TmL&8C(1(Q2AvAhUeP|h!7;V^~0A+O@Y1I7zELNd%Ib%$CwGn#%lv8_lv+{SxC zkHw0Ae(MAc=1C6CimMt6oem@(aA7P7WtMnQeEtD5gIQ z#W6(Vd~(7976}On4GoP63w|AL=a)9iQ3zwc@P=DlPbXqS1B?2^2XY;++S=HJOjuZ0 zCOlwNm|>8}lqtvXOJYU)76a9T{H(034!jPNB6uC%GnuNWs7w%Warn+4d(41^kzu8j WcHkrRg^fV_7(8A5T-G@yGywpb87|-e literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b4_latin_capital_letter_a_with_acute.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b4_latin_capital_letter_a_with_acute.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..bfcee7d6c7bb1b800f07b9afee2efdd80dd891b4 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5M?jcysy3fAP_V?) z#W6(Vd~(782IKT|fByfspOB)!_J^H0DReTk)q#eHtC^XZ0_vKYnu1FozPr17b=X>^ zYy1w6%irJA)zJ9y?ymJB9Y!hsE6zC^cJ0`~AnI7dbJ5{|(1PR!uh;~J6GziI16VKI oogwyU3rmvCvgsKzPnp>nUQEw8{pF0GH_(0tPgg&ebxsLQ0PjjedH?_b literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b5_latin_capital_letter_n_with_tilde.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b5_latin_capital_letter_n_with_tilde.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..032568e37d0128b5522bf1b599d7769533d80571 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5M?jcysy3fAP;i;2 zi(`n!`LmO}d07+%ST{DbZf#)INnqrTIKU*f0m95_^*bSxw(R?k_YPJ|UVmlpxw+}u zIm_!&EORW=KkH2j@@m?8jYH%>o?y+kDLH$x*DAKWR$aR1`}cc$zi%x)%W&X@V1gIJ zq&dax9fo#HbABA`F-&1w+T;`C)tKmQrLgWu%3%jB-MOJc7p9*1EZi_7I_@v8#c9Eh lYW<=|K79-Nuke4Ne&6m^j}v;9r-3eJ@O1TaS?83{1OT|%T)O}O literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b6_latin_small_letter_n_with_tilde.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b6_latin_small_letter_n_with_tilde.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..921c56813d834280ac3f67f857113ee70444f882 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5M?jcysy3fAP_W6< z#W6(Vd~$+Vu@Le&FL=9#uC3=ErhWuK_{sFeV84TGnvpUXO@geCym CLPPif literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b7_latin_capital_letter_a_with_tilde.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b7_latin_capital_letter_a_with_tilde.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2f0f00097d6c73e078b19ffc300ad7e2f00fc6 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx_Ko z7sn8b(^rEWc@HS?9AOgM(7?K70V{XJ0j4M*b6T<{&$gCLDg6^;g1oBtPUBK^QOsD& zE&IN9VvyNyDf5N#&s^L-d3+EmUtYZKk!a)AZ70LM-U=_7;>FQ;`@cuSE5l<}N9GuZ zAB~Vz*$`O!TD-^5w2{q&g-3Kb<4X?~K}Nf4N{SM;=lhprEnE~{&vhV1Ov~=Zk$ORy Y_bZEM@A?qn2XrHYr>mdKI;Vst0Ly?;$N&HU literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b8_latin_capital_letter_o_with_tilde.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b8_latin_capital_letter_o_with_tilde.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..072ad5b88192d61fc4071db44050a43e44594edf GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx_=) z7sn8b(?=)q@*Y+YY1tUSy|sZ=Ct;!3h5+t}159EYfV>SgD(mgnyxpaHI*<_|VW%R7Pc57Bp zR<=Z}l!BF#QTLqU-|a6~I%+PRDDZ{FXQjZQosCxn8|SW+c+AiHWFF5tb)U;$wD?zX zYA)M1m)SP^%!@~s*XJq}Nu6Z0-BHo_T*XODV9oYPKT4Hb5{2@gU1Ftfc{|c MboFyt=akR{09deT0ssI2 literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_b9_latin_small_letter_a_with_tilde.i4.png b/assets/ALL/textures/nes_font_static/msg_char_b9_latin_small_letter_a_with_tilde.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..b9a37f5083d6c930636e98c8a01e8df9b4a2e845 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkSA$ zi(`nz>7$bac@HS?xMVYOM;u_9x1oV`O9F`LG+p`SrnlY6-q)Tu)&DBG&L${WyON(l zk!7pa(iO$;-b`mW@0j#M?qIdOtGkEhO9|)fwV&VaHCC8emfVwN5OQv2KLbaC2}5{8 zZU%S4;T=pd7Z^gabL-h}>~nnZgexXaX^pd3v(@AO^I!JzO>oOvvZv^o0?<_qp00i_ I>zopr0Lpz$yZ`_I literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_ba_latin_small_letter_o_with_tilde.i4.png b/assets/ALL/textures/nes_font_static/msg_char_ba_latin_small_letter_o_with_tilde.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8f1fe7c1ddf496688fa9bbf3f38cbca0add913 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx`u5 z7sn8b(?=)gavo3+Xj_}WsvU7qCv9U>e0j)a%=XDtt%z7&(FfC}wR<*5RFZX))1oAJ4Ib>O`)+ngR@|UMT z&ht*^lu2?8uRR{^d6vicWiQhe(KWWpcV;n0C$Qx(8eY}7`@FnCIX&m`?)@LMA22+* Xm{qtq?(%b>3mH6J{an^LB{Ts5mJnFu literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/nes_font_static.cpp b/assets/ALL/textures/nes_font_static/nes_font_static.cpp new file mode 100644 index 000000000..597064978 --- /dev/null +++ b/assets/ALL/textures/nes_font_static/nes_font_static.cpp @@ -0,0 +1,630 @@ +#include "z64.h" +#include "nes_font_static.h" + +u8 gMsgChar20SpaceTex[] = { +#include "textures/nes_font_static/msg_char_20_space.i4.inc.c" +}; + +u8 gMsgChar21ExclamationMarkTex[] = { +#include "textures/nes_font_static/msg_char_21_exclamation_mark.i4.inc.c" +}; + +u8 gMsgChar22QuotationMarkTex[] = { +#include "textures/nes_font_static/msg_char_22_quotation_mark.i4.inc.c" +}; + +u8 gMsgChar23NumberSignTex[] = { +#include "textures/nes_font_static/msg_char_23_number_sign.i4.inc.c" +}; + +u8 gMsgChar24DollarSignTex[] = { +#include "textures/nes_font_static/msg_char_24_dollar_sign.i4.inc.c" +}; + +u8 gMsgChar25PercentSignTex[] = { +#include "textures/nes_font_static/msg_char_25_percent_sign.i4.inc.c" +}; + +u8 gMsgChar26AmpersandTex[] = { +#include "textures/nes_font_static/msg_char_26_ampersand.i4.inc.c" +}; + +u8 gMsgChar27ApostropheTex[] = { +#include "textures/nes_font_static/msg_char_27_apostrophe.i4.inc.c" +}; + +u8 gMsgChar28LeftParenthesesTex[] = { +#include "textures/nes_font_static/msg_char_28_left_parentheses.i4.inc.c" +}; + +u8 gMsgChar29RightParenthesesTex[] = { +#include "textures/nes_font_static/msg_char_29_right_parentheses.i4.inc.c" +}; + +u8 gMsgChar2AAsteriskTex[] = { +#include "textures/nes_font_static/msg_char_2a_asterisk.i4.inc.c" +}; + +u8 gMsgChar2BPlusSignTex[] = { +#include "textures/nes_font_static/msg_char_2b_plus_sign.i4.inc.c" +}; + +u8 gMsgChar2CCommaTex[] = { +#include "textures/nes_font_static/msg_char_2c_comma.i4.inc.c" +}; + +u8 gMsgChar2DHyphenMinusTex[] = { +#include "textures/nes_font_static/msg_char_2d_hyphen_minus.i4.inc.c" +}; + +u8 gMsgChar2EFullStopTex[] = { +#include "textures/nes_font_static/msg_char_2e_full_stop.i4.inc.c" +}; + +u8 gMsgChar2FSolidusTex[] = { +#include "textures/nes_font_static/msg_char_2f_solidus.i4.inc.c" +}; + +u8 gMsgChar30Digit0Tex[] = { +#include "textures/nes_font_static/msg_char_30_digit_0.i4.inc.c" +}; + +u8 gMsgChar31Digit1Tex[] = { +#include "textures/nes_font_static/msg_char_31_digit_1.i4.inc.c" +}; + +u8 gMsgChar32Digit2Tex[] = { +#include "textures/nes_font_static/msg_char_32_digit_2.i4.inc.c" +}; + +u8 gMsgChar33Digit3Tex[] = { +#include "textures/nes_font_static/msg_char_33_digit_3.i4.inc.c" +}; + +u8 gMsgChar34Digit4Tex[] = { +#include "textures/nes_font_static/msg_char_34_digit_4.i4.inc.c" +}; + +u8 gMsgChar35Digit5Tex[] = { +#include "textures/nes_font_static/msg_char_35_digit_5.i4.inc.c" +}; + +u8 gMsgChar36Digit6Tex[] = { +#include "textures/nes_font_static/msg_char_36_digit_6.i4.inc.c" +}; + +u8 gMsgChar37Digit7Tex[] = { +#include "textures/nes_font_static/msg_char_37_digit_7.i4.inc.c" +}; + +u8 gMsgChar38Digit8Tex[] = { +#include "textures/nes_font_static/msg_char_38_digit_8.i4.inc.c" +}; + +u8 gMsgChar39Digit9Tex[] = { +#include "textures/nes_font_static/msg_char_39_digit_9.i4.inc.c" +}; + +u8 gMsgChar3AColonTex[] = { +#include "textures/nes_font_static/msg_char_3a_colon.i4.inc.c" +}; + +u8 gMsgChar3BSemicolonTex[] = { +#include "textures/nes_font_static/msg_char_3b_semicolon.i4.inc.c" +}; + +u8 gMsgChar3CLessThanSignTex[] = { +#include "textures/nes_font_static/msg_char_3c_less_than_sign.i4.inc.c" +}; + +u8 gMsgChar3DEqualsSignTex[] = { +#include "textures/nes_font_static/msg_char_3d_equals_sign.i4.inc.c" +}; + +u8 gMsgChar3EGreaterThanSignTex[] = { +#include "textures/nes_font_static/msg_char_3e_greater_than_sign.i4.inc.c" +}; + +u8 gMsgChar3FQuestionMarkTex[] = { +#include "textures/nes_font_static/msg_char_3f_question_mark.i4.inc.c" +}; + +u8 gMsgChar40CommercialAtTex[] = { +#include "textures/nes_font_static/msg_char_40_commercial_at.i4.inc.c" +}; + +u8 gMsgChar41LatinCapitalLetterATex[] = { +#include "textures/nes_font_static/msg_char_41_latin_capital_letter_a.i4.inc.c" +}; + +u8 gMsgChar42LatinCapitalLetterBTex[] = { +#include "textures/nes_font_static/msg_char_42_latin_capital_letter_b.i4.inc.c" +}; + +u8 gMsgChar43LatinCapitalLetterCTex[] = { +#include "textures/nes_font_static/msg_char_43_latin_capital_letter_c.i4.inc.c" +}; + +u8 gMsgChar44LatinCapitalLetterDTex[] = { +#include "textures/nes_font_static/msg_char_44_latin_capital_letter_d.i4.inc.c" +}; + +u8 gMsgChar45LatinCapitalLetterETex[] = { +#include "textures/nes_font_static/msg_char_45_latin_capital_letter_e.i4.inc.c" +}; + +u8 gMsgChar46LatinCapitalLetterFTex[] = { +#include "textures/nes_font_static/msg_char_46_latin_capital_letter_f.i4.inc.c" +}; + +u8 gMsgChar47LatinCapitalLetterGTex[] = { +#include "textures/nes_font_static/msg_char_47_latin_capital_letter_g.i4.inc.c" +}; + +u8 gMsgChar48LatinCapitalLetterHTex[] = { +#include "textures/nes_font_static/msg_char_48_latin_capital_letter_h.i4.inc.c" +}; + +u8 gMsgChar49LatinCapitalLetterITex[] = { +#include "textures/nes_font_static/msg_char_49_latin_capital_letter_i.i4.inc.c" +}; + +u8 gMsgChar4ALatinCapitalLetterJTex[] = { +#include "textures/nes_font_static/msg_char_4a_latin_capital_letter_j.i4.inc.c" +}; + +u8 gMsgChar4BLatinCapitalLetterKTex[] = { +#include "textures/nes_font_static/msg_char_4b_latin_capital_letter_k.i4.inc.c" +}; + +u8 gMsgChar4CLatinCapitalLetterLTex[] = { +#include "textures/nes_font_static/msg_char_4c_latin_capital_letter_l.i4.inc.c" +}; + +u8 gMsgChar4DLatinCapitalLetterMTex[] = { +#include "textures/nes_font_static/msg_char_4d_latin_capital_letter_m.i4.inc.c" +}; + +u8 gMsgChar4ELatinCapitalLetterNTex[] = { +#include "textures/nes_font_static/msg_char_4e_latin_capital_letter_n.i4.inc.c" +}; + +u8 gMsgChar4FLatinCapitalLetterOTex[] = { +#include "textures/nes_font_static/msg_char_4f_latin_capital_letter_o.i4.inc.c" +}; + +u8 gMsgChar50LatinCapitalLetterPTex[] = { +#include "textures/nes_font_static/msg_char_50_latin_capital_letter_p.i4.inc.c" +}; + +u8 gMsgChar51LatinCapitalLetterQTex[] = { +#include "textures/nes_font_static/msg_char_51_latin_capital_letter_q.i4.inc.c" +}; + +u8 gMsgChar52LatinCapitalLetterRTex[] = { +#include "textures/nes_font_static/msg_char_52_latin_capital_letter_r.i4.inc.c" +}; + +u8 gMsgChar53LatinCapitalLetterSTex[] = { +#include "textures/nes_font_static/msg_char_53_latin_capital_letter_s.i4.inc.c" +}; + +u8 gMsgChar54LatinCapitalLetterTTex[] = { +#include "textures/nes_font_static/msg_char_54_latin_capital_letter_t.i4.inc.c" +}; + +u8 gMsgChar55LatinCapitalLetterUTex[] = { +#include "textures/nes_font_static/msg_char_55_latin_capital_letter_u.i4.inc.c" +}; + +u8 gMsgChar56LatinCapitalLetterVTex[] = { +#include "textures/nes_font_static/msg_char_56_latin_capital_letter_v.i4.inc.c" +}; + +u8 gMsgChar57LatinCapitalLetterWTex[] = { +#include "textures/nes_font_static/msg_char_57_latin_capital_letter_w.i4.inc.c" +}; + +u8 gMsgChar58LatinCapitalLetterXTex[] = { +#include "textures/nes_font_static/msg_char_58_latin_capital_letter_x.i4.inc.c" +}; + +u8 gMsgChar59LatinCapitalLetterYTex[] = { +#include "textures/nes_font_static/msg_char_59_latin_capital_letter_y.i4.inc.c" +}; + +u8 gMsgChar5ALatinCapitalLetterZTex[] = { +#include "textures/nes_font_static/msg_char_5a_latin_capital_letter_z.i4.inc.c" +}; + +u8 gMsgChar5BLeftSquareBracketTex[] = { +#include "textures/nes_font_static/msg_char_5b_left_square_bracket.i4.inc.c" +}; + +u8 gMsgChar5CYenSignTex[] = { +#include "textures/nes_font_static/msg_char_5c_yen_sign.i4.inc.c" +}; + +u8 gMsgChar5DRightSquareBracketTex[] = { +#include "textures/nes_font_static/msg_char_5d_right_square_bracket.i4.inc.c" +}; + +u8 gMsgChar5ECircumflexAccentTex[] = { +#include "textures/nes_font_static/msg_char_5e_circumflex_accent.i4.inc.c" +}; + +u8 gMsgChar5FLowLineTex[] = { +#include "textures/nes_font_static/msg_char_5f_low_line.i4.inc.c" +}; + +u8 gMsgChar60GraveAccentTex[] = { +#include "textures/nes_font_static/msg_char_60_grave_accent.i4.inc.c" +}; + +u8 gMsgChar61LatinSmallLetterATex[] = { +#include "textures/nes_font_static/msg_char_61_latin_small_letter_a.i4.inc.c" +}; + +u8 gMsgChar62LatinSmallLetterBTex[] = { +#include "textures/nes_font_static/msg_char_62_latin_small_letter_b.i4.inc.c" +}; + +u8 gMsgChar63LatinSmallLetterCTex[] = { +#include "textures/nes_font_static/msg_char_63_latin_small_letter_c.i4.inc.c" +}; + +u8 gMsgChar64LatinSmallLetterDTex[] = { +#include "textures/nes_font_static/msg_char_64_latin_small_letter_d.i4.inc.c" +}; + +u8 gMsgChar65LatinSmallLetterETex[] = { +#include "textures/nes_font_static/msg_char_65_latin_small_letter_e.i4.inc.c" +}; + +u8 gMsgChar66LatinSmallLetterFTex[] = { +#include "textures/nes_font_static/msg_char_66_latin_small_letter_f.i4.inc.c" +}; + +u8 gMsgChar67LatinSmallLetterGTex[] = { +#include "textures/nes_font_static/msg_char_67_latin_small_letter_g.i4.inc.c" +}; + +u8 gMsgChar68LatinSmallLetterHTex[] = { +#include "textures/nes_font_static/msg_char_68_latin_small_letter_h.i4.inc.c" +}; + +u8 gMsgChar69LatinSmallLetterITex[] = { +#include "textures/nes_font_static/msg_char_69_latin_small_letter_i.i4.inc.c" +}; + +u8 gMsgChar6ALatinSmallLetterJTex[] = { +#include "textures/nes_font_static/msg_char_6a_latin_small_letter_j.i4.inc.c" +}; + +u8 gMsgChar6BLatinSmallLetterKTex[] = { +#include "textures/nes_font_static/msg_char_6b_latin_small_letter_k.i4.inc.c" +}; + +u8 gMsgChar6CLatinSmallLetterLTex[] = { +#include "textures/nes_font_static/msg_char_6c_latin_small_letter_l.i4.inc.c" +}; + +u8 gMsgChar6DLatinSmallLetterMTex[] = { +#include "textures/nes_font_static/msg_char_6d_latin_small_letter_m.i4.inc.c" +}; + +u8 gMsgChar6ELatinSmallLetterNTex[] = { +#include "textures/nes_font_static/msg_char_6e_latin_small_letter_n.i4.inc.c" +}; + +u8 gMsgChar6FLatinSmallLetterOTex[] = { +#include "textures/nes_font_static/msg_char_6f_latin_small_letter_o.i4.inc.c" +}; + +u8 gMsgChar70LatinSmallLetterPTex[] = { +#include "textures/nes_font_static/msg_char_70_latin_small_letter_p.i4.inc.c" +}; + +u8 gMsgChar71LatinSmallLetterQTex[] = { +#include "textures/nes_font_static/msg_char_71_latin_small_letter_q.i4.inc.c" +}; + +u8 gMsgChar72LatinSmallLetterRTex[] = { +#include "textures/nes_font_static/msg_char_72_latin_small_letter_r.i4.inc.c" +}; + +u8 gMsgChar73LatinSmallLetterSTex[] = { +#include "textures/nes_font_static/msg_char_73_latin_small_letter_s.i4.inc.c" +}; + +u8 gMsgChar74LatinSmallLetterTTex[] = { +#include "textures/nes_font_static/msg_char_74_latin_small_letter_t.i4.inc.c" +}; + +u8 gMsgChar75LatinSmallLetterUTex[] = { +#include "textures/nes_font_static/msg_char_75_latin_small_letter_u.i4.inc.c" +}; + +u8 gMsgChar76LatinSmallLetterVTex[] = { +#include "textures/nes_font_static/msg_char_76_latin_small_letter_v.i4.inc.c" +}; + +u8 gMsgChar77LatinSmallLetterWTex[] = { +#include "textures/nes_font_static/msg_char_77_latin_small_letter_w.i4.inc.c" +}; + +u8 gMsgChar78LatinSmallLetterXTex[] = { +#include "textures/nes_font_static/msg_char_78_latin_small_letter_x.i4.inc.c" +}; + +u8 gMsgChar79LatinSmallLetterYTex[] = { +#include "textures/nes_font_static/msg_char_79_latin_small_letter_y.i4.inc.c" +}; + +u8 gMsgChar7ALatinSmallLetterZTex[] = { +#include "textures/nes_font_static/msg_char_7a_latin_small_letter_z.i4.inc.c" +}; + +u8 gMsgChar7BLeftCurlyBracketTex[] = { +#include "textures/nes_font_static/msg_char_7b_left_curly_bracket.i4.inc.c" +}; + +u8 gMsgChar7CVerticalLineTex[] = { +#include "textures/nes_font_static/msg_char_7c_vertical_line.i4.inc.c" +}; + +u8 gMsgChar7DRightCurlyBracketTex[] = { +#include "textures/nes_font_static/msg_char_7d_right_curly_bracket.i4.inc.c" +}; + +u8 gMsgChar7ETildeTex[] = { +#include "textures/nes_font_static/msg_char_7e_tilde.i4.inc.c" +}; + +u8 gMsgChar7FBlankTex[] = { +#include "textures/nes_font_static/msg_char_7f_blank.i4.inc.c" +}; + +u8 gMsgChar80LatinCapitalLetterAWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_80_latin_capital_letter_a_with_grave.i4.inc.c" +}; + +u8 gMsgChar81LatinCapitalLetterIWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_81_latin_capital_letter_i_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar82LatinCapitalLetterAWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_82_latin_capital_letter_a_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar83LatinCapitalLetterAWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_83_latin_capital_letter_a_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar84LatinCapitalLetterCWithCedillaTex[] = { +#include "textures/nes_font_static/msg_char_84_latin_capital_letter_c_with_cedilla.i4.inc.c" +}; + +u8 gMsgChar85LatinCapitalLetterEWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_85_latin_capital_letter_e_with_grave.i4.inc.c" +}; + +u8 gMsgChar86LatinCapitalLetterEWithAcuteTex[] = { +#include "textures/nes_font_static/msg_char_86_latin_capital_letter_e_with_acute.i4.inc.c" +}; + +u8 gMsgChar87LatinCapitalLetterEWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_87_latin_capital_letter_e_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar88LatinCapitalLetterEWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_88_latin_capital_letter_e_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar89LatinCapitalLetterIWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_89_latin_capital_letter_i_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar8ALatinCapitalLetterOWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_8a_latin_capital_letter_o_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar8BLatinCapitalLetterOWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_8b_latin_capital_letter_o_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar8CLatinCapitalLetterUWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_8c_latin_capital_letter_u_with_grave.i4.inc.c" +}; + +u8 gMsgChar8DLatinCapitalLetterUWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_8d_latin_capital_letter_u_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar8ELatinCapitalLetterUWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_8e_latin_capital_letter_u_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar8FLatinSmallLetterSharpSTex[] = { +#include "textures/nes_font_static/msg_char_8f_latin_small_letter_sharp_s.i4.inc.c" +}; + +u8 gMsgChar90LatinSmallLetterAWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_90_latin_small_letter_a_with_grave.i4.inc.c" +}; + +u8 gMsgChar91LatinSmallLetterAWithAcuteTex[] = { +#include "textures/nes_font_static/msg_char_91_latin_small_letter_a_with_acute.i4.inc.c" +}; + +u8 gMsgChar92LatinSmallLetterAWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_92_latin_small_letter_a_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar93LatinSmallLetterAWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_93_latin_small_letter_a_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar94LatinSmallLetterCWithCedillaTex[] = { +#include "textures/nes_font_static/msg_char_94_latin_small_letter_c_with_cedilla.i4.inc.c" +}; + +u8 gMsgChar95LatinSmallLetterEWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_95_latin_small_letter_e_with_grave.i4.inc.c" +}; + +u8 gMsgChar96LatinSmallLetterEWithAcuteTex[] = { +#include "textures/nes_font_static/msg_char_96_latin_small_letter_e_with_acute.i4.inc.c" +}; + +u8 gMsgChar97LatinSmallLetterEWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_97_latin_small_letter_e_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar98LatinSmallLetterEWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_98_latin_small_letter_e_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar99LatinSmallLetterIWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_99_latin_small_letter_i_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar9ALatinSmallLetterOWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_9a_latin_small_letter_o_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar9BLatinSmallLetterOWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_9b_latin_small_letter_o_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar9CLatinSmallLetterUWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_9c_latin_small_letter_u_with_grave.i4.inc.c" +}; + +u8 gMsgChar9DLatinSmallLetterUWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_9d_latin_small_letter_u_with_circumflex.i4.inc.c" +}; + +u8 gMsgChar9ELatinSmallLetterUWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_9e_latin_small_letter_u_with_diaeresis.i4.inc.c" +}; + +u8 gMsgChar9FButtonATex[] = { +#include "textures/nes_font_static/msg_char_9f_button_a.i4.inc.c" +}; + +u8 gMsgCharA0ButtonBTex[] = { +#include "textures/nes_font_static/msg_char_a0_button_b.i4.inc.c" +}; + +u8 gMsgCharA1ButtonCTex[] = { +#include "textures/nes_font_static/msg_char_a1_button_c.i4.inc.c" +}; + +u8 gMsgCharA2ButtonLTex[] = { +#include "textures/nes_font_static/msg_char_a2_button_l.i4.inc.c" +}; + +u8 gMsgCharA3ButtonRTex[] = { +#include "textures/nes_font_static/msg_char_a3_button_r.i4.inc.c" +}; + +u8 gMsgCharA4ButtonZTex[] = { +#include "textures/nes_font_static/msg_char_a4_button_z.i4.inc.c" +}; + +u8 gMsgCharA5ButtonCUpTex[] = { +#include "textures/nes_font_static/msg_char_a5_button_c_up.i4.inc.c" +}; + +u8 gMsgCharA6ButtonCDownTex[] = { +#include "textures/nes_font_static/msg_char_a6_button_c_down.i4.inc.c" +}; + +u8 gMsgCharA7ButtonCLeftTex[] = { +#include "textures/nes_font_static/msg_char_a7_button_c_left.i4.inc.c" +}; + +u8 gMsgCharA8ButtonCRightTex[] = { +#include "textures/nes_font_static/msg_char_a8_button_c_right.i4.inc.c" +}; + +u8 gMsgCharA9ZTargetSignTex[] = { +#include "textures/nes_font_static/msg_char_a9_z_target_sign.i4.inc.c" +}; + +u8 gMsgCharAAControlStickTex[] = { +#include "textures/nes_font_static/msg_char_aa_control_stick.i4.inc.c" +}; + +u8 gMsgCharABControlPadTex[] = { +#ifndef RETAIL + #include "textures/nes_font_static/msg_char_ab_control_pad.i4.inc.c" +#else + #include "textures/nes_font_static/generated/msg_char_ab_control_pad.i4.inc.c" +#endif +}; + +// Additional chars + +u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c" +}; + +u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c" +}; + +u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c" +}; + +u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c" +}; + +u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c" +}; + +u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c" +}; + +u8 gMsgCharB2InvertedQuestionMarkTex[] = { +#include "textures/nes_font_static/generated/msg_char_b2_inverted_question_mark.i4.inc.c" +}; + +u8 gMsgCharB3InvertedExclamationMarkTex[] = { +#include "textures/nes_font_static/generated/msg_char_b3_inverted_exclamation_mark.i4.inc.c" +}; + +u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c" +}; + +u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c" +}; + +u8 gMsgCharB6LatinSmallLetterNWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c" +}; + +u8 gMsgCharB7LatinCapitalLetterAWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b7_latin_capital_letter_a_with_tilde.i4.inc.c" +}; + +u8 gMsgCharB8LatinCapitalLetterOWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b8_latin_capital_letter_o_with_tilde.i4.inc.c" +}; + +u8 gMsgCharB9LatinSmallLetterAWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b9_latin_small_letter_a_with_tilde.i4.inc.c" +}; + +u8 gMsgCharBALatinSmallLetterOWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_ba_latin_small_letter_o_with_tilde.i4.inc.c" +}; + +u8 _nes_font_staticSegmentRomLastSymbol = 0; \ No newline at end of file diff --git a/assets/ALL/textures/nes_font_static/nes_font_static.h b/assets/ALL/textures/nes_font_static/nes_font_static.h new file mode 100644 index 000000000..634126d07 --- /dev/null +++ b/assets/ALL/textures/nes_font_static/nes_font_static.h @@ -0,0 +1,323 @@ +#pragma once +extern u8 gMsgChar20SpaceTex[]; +extern u8 gMsgChar21ExclamationMarkTex[]; +extern u8 gMsgChar22QuotationMarkTex[]; +extern u8 gMsgChar23NumberSignTex[]; +extern u8 gMsgChar24DollarSignTex[]; +extern u8 gMsgChar25PercentSignTex[]; +extern u8 gMsgChar26AmpersandTex[]; +extern u8 gMsgChar27ApostropheTex[]; +extern u8 gMsgChar28LeftParenthesesTex[]; +extern u8 gMsgChar29RightParenthesesTex[]; +extern u8 gMsgChar2AAsteriskTex[]; +extern u8 gMsgChar2BPlusSignTex[]; +extern u8 gMsgChar2CCommaTex[]; +extern u8 gMsgChar2DHyphenMinusTex[]; +extern u8 gMsgChar2EFullStopTex[]; +extern u8 gMsgChar2FSolidusTex[]; +extern u8 gMsgChar30Digit0Tex[]; +extern u8 gMsgChar31Digit1Tex[]; +extern u8 gMsgChar32Digit2Tex[]; +extern u8 gMsgChar33Digit3Tex[]; +extern u8 gMsgChar34Digit4Tex[]; +extern u8 gMsgChar35Digit5Tex[]; +extern u8 gMsgChar36Digit6Tex[]; +extern u8 gMsgChar37Digit7Tex[]; +extern u8 gMsgChar38Digit8Tex[]; +extern u8 gMsgChar39Digit9Tex[]; +extern u8 gMsgChar3AColonTex[]; +extern u8 gMsgChar3BSemicolonTex[]; +extern u8 gMsgChar3CLessThanSignTex[]; +extern u8 gMsgChar3DEqualsSignTex[]; +extern u8 gMsgChar3EGreaterThanSignTex[]; +extern u8 gMsgChar3FQuestionMarkTex[]; +extern u8 gMsgChar40CommercialAtTex[]; +extern u8 gMsgChar41LatinCapitalLetterATex[]; +extern u8 gMsgChar42LatinCapitalLetterBTex[]; +extern u8 gMsgChar43LatinCapitalLetterCTex[]; +extern u8 gMsgChar44LatinCapitalLetterDTex[]; +extern u8 gMsgChar45LatinCapitalLetterETex[]; +extern u8 gMsgChar46LatinCapitalLetterFTex[]; +extern u8 gMsgChar47LatinCapitalLetterGTex[]; +extern u8 gMsgChar48LatinCapitalLetterHTex[]; +extern u8 gMsgChar49LatinCapitalLetterITex[]; +extern u8 gMsgChar4ALatinCapitalLetterJTex[]; +extern u8 gMsgChar4BLatinCapitalLetterKTex[]; +extern u8 gMsgChar4CLatinCapitalLetterLTex[]; +extern u8 gMsgChar4DLatinCapitalLetterMTex[]; +extern u8 gMsgChar4ELatinCapitalLetterNTex[]; +extern u8 gMsgChar4FLatinCapitalLetterOTex[]; +extern u8 gMsgChar50LatinCapitalLetterPTex[]; +extern u8 gMsgChar51LatinCapitalLetterQTex[]; +extern u8 gMsgChar52LatinCapitalLetterRTex[]; +extern u8 gMsgChar53LatinCapitalLetterSTex[]; +extern u8 gMsgChar54LatinCapitalLetterTTex[]; +extern u8 gMsgChar55LatinCapitalLetterUTex[]; +extern u8 gMsgChar56LatinCapitalLetterVTex[]; +extern u8 gMsgChar57LatinCapitalLetterWTex[]; +extern u8 gMsgChar58LatinCapitalLetterXTex[]; +extern u8 gMsgChar59LatinCapitalLetterYTex[]; +extern u8 gMsgChar5ALatinCapitalLetterZTex[]; +extern u8 gMsgChar5BLeftSquareBracketTex[]; +extern u8 gMsgChar5CYenSignTex[]; +extern u8 gMsgChar5DRightSquareBracketTex[]; +extern u8 gMsgChar5ECircumflexAccentTex[]; +extern u8 gMsgChar5FLowLineTex[]; +extern u8 gMsgChar60GraveAccentTex[]; +extern u8 gMsgChar61LatinSmallLetterATex[]; +extern u8 gMsgChar62LatinSmallLetterBTex[]; +extern u8 gMsgChar63LatinSmallLetterCTex[]; +extern u8 gMsgChar64LatinSmallLetterDTex[]; +extern u8 gMsgChar65LatinSmallLetterETex[]; +extern u8 gMsgChar66LatinSmallLetterFTex[]; +extern u8 gMsgChar67LatinSmallLetterGTex[]; +extern u8 gMsgChar68LatinSmallLetterHTex[]; +extern u8 gMsgChar69LatinSmallLetterITex[]; +extern u8 gMsgChar6ALatinSmallLetterJTex[]; +extern u8 gMsgChar6BLatinSmallLetterKTex[]; +extern u8 gMsgChar6CLatinSmallLetterLTex[]; +extern u8 gMsgChar6DLatinSmallLetterMTex[]; +extern u8 gMsgChar6ELatinSmallLetterNTex[]; +extern u8 gMsgChar6FLatinSmallLetterOTex[]; +extern u8 gMsgChar70LatinSmallLetterPTex[]; +extern u8 gMsgChar71LatinSmallLetterQTex[]; +extern u8 gMsgChar72LatinSmallLetterRTex[]; +extern u8 gMsgChar73LatinSmallLetterSTex[]; +extern u8 gMsgChar74LatinSmallLetterTTex[]; +extern u8 gMsgChar75LatinSmallLetterUTex[]; +extern u8 gMsgChar76LatinSmallLetterVTex[]; +extern u8 gMsgChar77LatinSmallLetterWTex[]; +extern u8 gMsgChar78LatinSmallLetterXTex[]; +extern u8 gMsgChar79LatinSmallLetterYTex[]; +extern u8 gMsgChar7ALatinSmallLetterZTex[]; +extern u8 gMsgChar7BLeftCurlyBracketTex[]; +extern u8 gMsgChar7CVerticalLineTex[]; +extern u8 gMsgChar7DRightCurlyBracketTex[]; +extern u8 gMsgChar7ETildeTex[]; +extern u8 gMsgChar7FBlankTex[]; +extern u8 gMsgChar80LatinCapitalLetterAWithGraveTex[]; +extern u8 gMsgChar81LatinCapitalLetterIWithCircumflexTex[]; +extern u8 gMsgChar82LatinCapitalLetterAWithCircumflexTex[]; +extern u8 gMsgChar83LatinCapitalLetterAWithDiaeresisTex[]; +extern u8 gMsgChar84LatinCapitalLetterCWithCedillaTex[]; +extern u8 gMsgChar85LatinCapitalLetterEWithGraveTex[]; +extern u8 gMsgChar86LatinCapitalLetterEWithAcuteTex[]; +extern u8 gMsgChar87LatinCapitalLetterEWithCircumflexTex[]; +extern u8 gMsgChar88LatinCapitalLetterEWithDiaeresisTex[]; +extern u8 gMsgChar89LatinCapitalLetterIWithDiaeresisTex[]; +extern u8 gMsgChar8ALatinCapitalLetterOWithCircumflexTex[]; +extern u8 gMsgChar8BLatinCapitalLetterOWithDiaeresisTex[]; +extern u8 gMsgChar8CLatinCapitalLetterUWithGraveTex[]; +extern u8 gMsgChar8DLatinCapitalLetterUWithCircumflexTex[]; +extern u8 gMsgChar8ELatinCapitalLetterUWithDiaeresisTex[]; +extern u8 gMsgChar8FLatinSmallLetterSharpSTex[]; +extern u8 gMsgChar90LatinSmallLetterAWithGraveTex[]; +extern u8 gMsgChar91LatinSmallLetterAWithAcuteTex[]; +extern u8 gMsgChar92LatinSmallLetterAWithCircumflexTex[]; +extern u8 gMsgChar93LatinSmallLetterAWithDiaeresisTex[]; +extern u8 gMsgChar94LatinSmallLetterCWithCedillaTex[]; +extern u8 gMsgChar95LatinSmallLetterEWithGraveTex[]; +extern u8 gMsgChar96LatinSmallLetterEWithAcuteTex[]; +extern u8 gMsgChar97LatinSmallLetterEWithCircumflexTex[]; +extern u8 gMsgChar98LatinSmallLetterEWithDiaeresisTex[]; +extern u8 gMsgChar99LatinSmallLetterIWithDiaeresisTex[]; +extern u8 gMsgChar9ALatinSmallLetterOWithCircumflexTex[]; +extern u8 gMsgChar9BLatinSmallLetterOWithDiaeresisTex[]; +extern u8 gMsgChar9CLatinSmallLetterUWithGraveTex[]; +extern u8 gMsgChar9DLatinSmallLetterUWithCircumflexTex[]; +extern u8 gMsgChar9ELatinSmallLetterUWithDiaeresisTex[]; +extern u8 gMsgChar9FButtonATex[]; +extern u8 gMsgCharA0ButtonBTex[]; +extern u8 gMsgCharA1ButtonCTex[]; +extern u8 gMsgCharA2ButtonLTex[]; +extern u8 gMsgCharA3ButtonRTex[]; +extern u8 gMsgCharA4ButtonZTex[]; +extern u8 gMsgCharA5ButtonCUpTex[]; +extern u8 gMsgCharA6ButtonCDownTex[]; +extern u8 gMsgCharA7ButtonCLeftTex[]; +extern u8 gMsgCharA8ButtonCRightTex[]; +extern u8 gMsgCharA9ZTargetSignTex[]; +extern u8 gMsgCharAAControlStickTex[]; +extern u8 gMsgCharABControlPadTex[]; + +// Additional chars + +extern u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[]; +extern u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[]; +extern u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[]; +extern u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[]; +extern u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[]; +extern u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[]; +extern u8 gMsgCharB2InvertedQuestionMarkTex[]; +extern u8 gMsgCharB3InvertedExclamationMarkTex[]; +extern u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[]; +extern u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[]; +extern u8 gMsgCharB6LatinSmallLetterNWithTildeTex[]; +extern u8 gMsgCharB7LatinCapitalLetterAWithTildeTex[]; +extern u8 gMsgCharB8LatinCapitalLetterOWithTildeTex[]; +extern u8 gMsgCharB9LatinSmallLetterAWithTildeTex[]; +extern u8 gMsgCharBALatinSmallLetterOWithTildeTex[]; + +static void* nes_font_static_lut[] = { +gMsgChar20SpaceTex, +gMsgChar21ExclamationMarkTex, +gMsgChar22QuotationMarkTex, +gMsgChar23NumberSignTex, +gMsgChar24DollarSignTex, +gMsgChar25PercentSignTex, +gMsgChar26AmpersandTex, +gMsgChar27ApostropheTex, +gMsgChar28LeftParenthesesTex, +gMsgChar29RightParenthesesTex, +gMsgChar2AAsteriskTex, +gMsgChar2BPlusSignTex, +gMsgChar2CCommaTex, +gMsgChar2DHyphenMinusTex, +gMsgChar2EFullStopTex, +gMsgChar2FSolidusTex, +gMsgChar30Digit0Tex, +gMsgChar31Digit1Tex, +gMsgChar32Digit2Tex, +gMsgChar33Digit3Tex, +gMsgChar34Digit4Tex, +gMsgChar35Digit5Tex, +gMsgChar36Digit6Tex, +gMsgChar37Digit7Tex, +gMsgChar38Digit8Tex, +gMsgChar39Digit9Tex, +gMsgChar3AColonTex, +gMsgChar3BSemicolonTex, +gMsgChar3CLessThanSignTex, +gMsgChar3DEqualsSignTex, +gMsgChar3EGreaterThanSignTex, +gMsgChar3FQuestionMarkTex, +gMsgChar40CommercialAtTex, +gMsgChar41LatinCapitalLetterATex, +gMsgChar42LatinCapitalLetterBTex, +gMsgChar43LatinCapitalLetterCTex, +gMsgChar44LatinCapitalLetterDTex, +gMsgChar45LatinCapitalLetterETex, +gMsgChar46LatinCapitalLetterFTex, +gMsgChar47LatinCapitalLetterGTex, +gMsgChar48LatinCapitalLetterHTex, +gMsgChar49LatinCapitalLetterITex, +gMsgChar4ALatinCapitalLetterJTex, +gMsgChar4BLatinCapitalLetterKTex, +gMsgChar4CLatinCapitalLetterLTex, +gMsgChar4DLatinCapitalLetterMTex, +gMsgChar4ELatinCapitalLetterNTex, +gMsgChar4FLatinCapitalLetterOTex, +gMsgChar50LatinCapitalLetterPTex, +gMsgChar51LatinCapitalLetterQTex, +gMsgChar52LatinCapitalLetterRTex, +gMsgChar53LatinCapitalLetterSTex, +gMsgChar54LatinCapitalLetterTTex, +gMsgChar55LatinCapitalLetterUTex, +gMsgChar56LatinCapitalLetterVTex, +gMsgChar57LatinCapitalLetterWTex, +gMsgChar58LatinCapitalLetterXTex, +gMsgChar59LatinCapitalLetterYTex, +gMsgChar5ALatinCapitalLetterZTex, +gMsgChar5BLeftSquareBracketTex, +gMsgChar5CYenSignTex, +gMsgChar5DRightSquareBracketTex, +gMsgChar5ECircumflexAccentTex, +gMsgChar5FLowLineTex, +gMsgChar60GraveAccentTex, +gMsgChar61LatinSmallLetterATex, +gMsgChar62LatinSmallLetterBTex, +gMsgChar63LatinSmallLetterCTex, +gMsgChar64LatinSmallLetterDTex, +gMsgChar65LatinSmallLetterETex, +gMsgChar66LatinSmallLetterFTex, +gMsgChar67LatinSmallLetterGTex, +gMsgChar68LatinSmallLetterHTex, +gMsgChar69LatinSmallLetterITex, +gMsgChar6ALatinSmallLetterJTex, +gMsgChar6BLatinSmallLetterKTex, +gMsgChar6CLatinSmallLetterLTex, +gMsgChar6DLatinSmallLetterMTex, +gMsgChar6ELatinSmallLetterNTex, +gMsgChar6FLatinSmallLetterOTex, +gMsgChar70LatinSmallLetterPTex, +gMsgChar71LatinSmallLetterQTex, +gMsgChar72LatinSmallLetterRTex, +gMsgChar73LatinSmallLetterSTex, +gMsgChar74LatinSmallLetterTTex, +gMsgChar75LatinSmallLetterUTex, +gMsgChar76LatinSmallLetterVTex, +gMsgChar77LatinSmallLetterWTex, +gMsgChar78LatinSmallLetterXTex, +gMsgChar79LatinSmallLetterYTex, +gMsgChar7ALatinSmallLetterZTex, +gMsgChar7BLeftCurlyBracketTex, +gMsgChar7CVerticalLineTex, +gMsgChar7DRightCurlyBracketTex, +gMsgChar7ETildeTex, +gMsgChar7FBlankTex, +gMsgChar80LatinCapitalLetterAWithGraveTex, +gMsgChar81LatinCapitalLetterIWithCircumflexTex, +gMsgChar82LatinCapitalLetterAWithCircumflexTex, +gMsgChar83LatinCapitalLetterAWithDiaeresisTex, +gMsgChar84LatinCapitalLetterCWithCedillaTex, +gMsgChar85LatinCapitalLetterEWithGraveTex, +gMsgChar86LatinCapitalLetterEWithAcuteTex, +gMsgChar87LatinCapitalLetterEWithCircumflexTex, +gMsgChar88LatinCapitalLetterEWithDiaeresisTex, +gMsgChar89LatinCapitalLetterIWithDiaeresisTex, +gMsgChar8ALatinCapitalLetterOWithCircumflexTex, +gMsgChar8BLatinCapitalLetterOWithDiaeresisTex, +gMsgChar8CLatinCapitalLetterUWithGraveTex, +gMsgChar8DLatinCapitalLetterUWithCircumflexTex, +gMsgChar8ELatinCapitalLetterUWithDiaeresisTex, +gMsgChar8FLatinSmallLetterSharpSTex, +gMsgChar90LatinSmallLetterAWithGraveTex, +gMsgChar91LatinSmallLetterAWithAcuteTex, +gMsgChar92LatinSmallLetterAWithCircumflexTex, +gMsgChar93LatinSmallLetterAWithDiaeresisTex, +gMsgChar94LatinSmallLetterCWithCedillaTex, +gMsgChar95LatinSmallLetterEWithGraveTex, +gMsgChar96LatinSmallLetterEWithAcuteTex, +gMsgChar97LatinSmallLetterEWithCircumflexTex, +gMsgChar98LatinSmallLetterEWithDiaeresisTex, +gMsgChar99LatinSmallLetterIWithDiaeresisTex, +gMsgChar9ALatinSmallLetterOWithCircumflexTex, +gMsgChar9BLatinSmallLetterOWithDiaeresisTex, +gMsgChar9CLatinSmallLetterUWithGraveTex, +gMsgChar9DLatinSmallLetterUWithCircumflexTex, +gMsgChar9ELatinSmallLetterUWithDiaeresisTex, +gMsgChar9FButtonATex, +gMsgCharA0ButtonBTex, +gMsgCharA1ButtonCTex, +gMsgCharA2ButtonLTex, +gMsgCharA3ButtonRTex, +gMsgCharA4ButtonZTex, +gMsgCharA5ButtonCUpTex, +gMsgCharA6ButtonCDownTex, +gMsgCharA7ButtonCLeftTex, +gMsgCharA8ButtonCRightTex, +gMsgCharA9ZTargetSignTex, +gMsgCharAAControlStickTex, +gMsgCharABControlPadTex, // Added if not available + +// Additional chars +gMsgCharACLatinCapitalLetterIWithAcuteTex, +gMsgCharADLatinCapitalLetterOWithAcuteTex, +gMsgCharAELatinCapitalLetterUWithAcuteTex, +gMsgCharAFLatinSmallLetterIWithAcuteTex, +gMsgCharB0LatinSmallLetterOWithAcuteTex, +gMsgCharB1LatinSmallLetterUWithAcuteTex, +gMsgCharB2InvertedQuestionMarkTex, +gMsgCharB3InvertedExclamationMarkTex, +gMsgCharB4LatinCapitalLetterAWithAcuteTex, +gMsgCharB5LatinCapitalLetterNWithTildeTex, +gMsgCharB6LatinSmallLetterNWithTildeTex, +gMsgCharB7LatinCapitalLetterAWithTildeTex, +gMsgCharB8LatinCapitalLetterOWithTildeTex, +gMsgCharB9LatinSmallLetterAWithTildeTex, +gMsgCharBALatinSmallLetterOWithTildeTex +}; + +extern u8 _nes_font_staticSegmentRomLastSymbol; +#define _nes_font_staticSegmentRomStart ((u8*)gMsgChar20SpaceTex) +#define _nes_font_staticSegmentRomEnd ((u8*)&_nes_font_staticSegmentRomLastSymbol) diff --git a/include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt b/include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt deleted file mode 100644 index 75a7f2c8e..000000000 --- a/include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt +++ /dev/null @@ -1,13 +0,0 @@ -extern u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[]; -extern u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[]; -extern u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[]; -extern u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[]; -extern u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[]; -extern u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[]; -extern u8 gMsgCharB2InvertedQuestionMarkTex[]; -extern u8 gMsgCharB3InvertedExclamationMarkTex[]; -extern u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[]; -extern u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[]; -extern u8 gMsgCharB6LatinSmallLetterNWithTildeTex[]; - -static void* nes_font_static_lut[] = { \ No newline at end of file diff --git a/include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt b/include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt deleted file mode 100644 index 69325e2a3..000000000 --- a/include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt +++ /dev/null @@ -1,13 +0,0 @@ -, -gMsgCharACLatinCapitalLetterIWithAcuteTex, -gMsgCharADLatinCapitalLetterOWithAcuteTex, -gMsgCharAELatinCapitalLetterUWithAcuteTex, -gMsgCharAFLatinSmallLetterIWithAcuteTex, -gMsgCharB0LatinSmallLetterOWithAcuteTex, -gMsgCharB1LatinSmallLetterUWithAcuteTex, -gMsgCharB2InvertedQuestionMarkTex, -gMsgCharB3InvertedExclamationMarkTex, -gMsgCharB4LatinCapitalLetterAWithAcuteTex, -gMsgCharB5LatinCapitalLetterNWithTildeTex, -gMsgCharB6LatinSmallLetterNWithTildeTex -}; \ No newline at end of file diff --git a/include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt b/include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt deleted file mode 100644 index df05bfdcb..000000000 --- a/include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt +++ /dev/null @@ -1,43 +0,0 @@ -u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c" -}; - -u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c" -}; - -u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c" -}; - -u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c" -}; - -u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c" -}; - -u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c" -}; - -u8 gMsgCharB2InvertedQuestionMarkTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c" -}; - -u8 gMsgCharB3InvertedExclamationMarkTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c" -}; - -u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c" -}; - -u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c" -}; - -u8 gMsgCharB6LatinSmallLetterNWithTildeTex[] = { -#include "translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c" -}; \ No newline at end of file diff --git a/include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c deleted file mode 100644 index 9f846573a..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // 0x000000 -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000020 -0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000040 -0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c deleted file mode 100644 index bf0157592..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x09, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x03, 0x88, 0x87, 0x20, 0x00, 0x00, 0x00, 0x01, 0xBF, 0x84, 0x5C, 0xF6, 0x00, 0x00, 0x00, 0x08, 0xF7, 0x00, 0x01, 0xEF, 0x40, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x8F, 0x90, 0x00, 0x00, 0x3F, // 0x000020 -0xF0, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x00, 0x0E, 0xF5, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xFC, 0x10, 0x01, 0xDE, 0x20, 0x00, 0x00, 0x00, // 0x000040 -0x7E, 0xD8, 0x8D, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c deleted file mode 100644 index d7a87c628..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, // 0x000000 -0x60, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, // 0x000020 -0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x4F, 0xB0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x2F, 0xD0, 0x00, 0x0B, 0x40, 0x00, 0x00, 0x00, 0x0E, 0xF3, 0x00, 0x3F, 0x10, 0x00, 0x00, 0x00, 0x03, // 0x000040 -0xDE, 0x99, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c deleted file mode 100644 index ca6c4b617..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000020 -0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000040 -0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c deleted file mode 100644 index a5e7873ab..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xBD, 0xCE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x09, 0xF2, 0x0B, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000020 -0xB0, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xB0, 0x04, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD0, 0x04, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xF4, 0x08, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x02, // 0x000040 -0xCC, 0x8E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c deleted file mode 100644 index f754a0046..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, // 0x000020 -0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xB0, 0x4F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD0, 0x5F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0B, // 0x000040 -0xFC, 0xDF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x14, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c deleted file mode 100644 index d36b03f86..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b2_inverted_question_mark.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x00, 0x7D, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xAD, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000020 -0x6F, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xED, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF9, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0xFB, 0x00, 0x06, 0xC1, 0x00, 0x00, 0x00, 0x00, // 0x000040 -0x8F, 0x83, 0x6C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x04, 0x98, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c deleted file mode 100644 index 4fd427369..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b3_inverted_exclamation_mark.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x02, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000020 -0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000040 -0xBF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c deleted file mode 100644 index 2c6e2192c..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xB1, 0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, // 0x000020 -0x0D, 0x60, 0x9F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x88, 0x9F, 0xF2, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x44, 0x4B, 0xF9, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x04, 0xFF, 0x20, 0x00, 0x00, 0x0B, // 0x000040 -0x80, 0x00, 0x00, 0xDF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c deleted file mode 100644 index 59b8f66c9..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x1E, 0xF1, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x1E, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, // 0x000000 -0xA5, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0x40, 0x00, 0xE7, 0x00, 0x00, 0x00, 0x1C, 0x8F, 0xE3, 0x00, 0xE6, 0x00, 0x00, 0x00, 0x1C, 0x17, 0xFD, 0x20, 0xE7, 0x00, 0x00, 0x00, 0x1C, // 0x000020 -0x10, 0x9F, 0xB0, 0xE7, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x1B, 0xF9, 0xE6, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x02, 0xDF, 0xE6, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x3E, 0xF6, 0x00, 0x00, 0x00, 0x1C, // 0x000040 -0x30, 0x00, 0x05, 0xE6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c b/include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c deleted file mode 100644 index eb51edbef..000000000 --- a/include/translations/res/additional_latin_chars/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c +++ /dev/null @@ -1,5 +0,0 @@ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xC5, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, // 0x000000 -0x97, 0x9D, 0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x63, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCD, 0xAB, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x41, 0xCF, 0x40, 0x00, 0x00, 0x00, 0x01, // 0x000020 -0xED, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, 0xED, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, 0xED, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, 0xFD, 0x00, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x01, // 0x000040 -0xDB, 0x00, 0x8E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x000060 -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/meson.build b/meson.build index 8a99a6bfd..76cd22669 100644 --- a/meson.build +++ b/meson.build @@ -1180,7 +1180,7 @@ assets_objects = [ # Unused currently but will keep # assets_overlays = [ 'assets/EUR_MQD/overlays/ovl_En_Ssh/ovl_En_Ssh.cpp', 'assets/EUR_MQD/overlays/ovl_Boss_Sst/ovl_Boss_Sst.cpp', 'assets/EUR_MQD/overlays/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka.cpp', 'assets/EUR_MQD/overlays/ovl_En_Sda/ovl_En_Sda.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Spot/ovl_Oceff_Spot.cpp', 'assets/EUR_MQD/overlays/ovl_Demo_Shd/ovl_Demo_Shd.cpp', 'assets/EUR_MQD/overlays/ovl_En_Bili/ovl_En_Bili.cpp', 'assets/EUR_MQD/overlays/ovl_Magic_Wind/ovl_Magic_Wind.cpp', 'assets/EUR_MQD/overlays/ovl_End_Title/ovl_End_Title.cpp', 'assets/EUR_MQD/overlays/ovl_Magic_Dark/ovl_Magic_Dark.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4.cpp', 'assets/EUR_MQD/overlays/ovl_Arrow_Fire/ovl_Arrow_Fire.cpp', 'assets/EUR_MQD/overlays/ovl_En_Clear_Tag/ovl_En_Clear_Tag.cpp', 'assets/EUR_MQD/overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.cpp', 'assets/EUR_MQD/overlays/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ.cpp', 'assets/EUR_MQD/overlays/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant.cpp', 'assets/EUR_MQD/overlays/ovl_Elf_Msg/ovl_Elf_Msg.cpp', 'assets/EUR_MQD/overlays/ovl_En_Kanban/ovl_En_Kanban.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Storm/ovl_Oceff_Storm.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe/ovl_Oceff_Wipe.cpp', 'assets/EUR_MQD/overlays/ovl_Arrow_Light/ovl_Arrow_Light.cpp', 'assets/EUR_MQD/overlays/ovl_En_St/ovl_En_St.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3.cpp', 'assets/EUR_MQD/overlays/ovl_En_Jsjutan/ovl_En_Jsjutan.cpp', 'assets/EUR_MQD/overlays/ovl_Arrow_Ice/ovl_Arrow_Ice.cpp', 'assets/EUR_MQD/overlays/ovl_Elf_Msg2/ovl_Elf_Msg2.cpp', 'assets/EUR_MQD/overlays/ovl_En_Holl/ovl_En_Holl.cpp', 'assets/EUR_MQD/overlays/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra.cpp', 'assets/EUR_MQD/overlays/ovl_Magic_Fire/ovl_Magic_Fire.cpp', 'assets/EUR_MQD/overlays/ovl_En_Sth/ovl_En_Sth.cpp' ] assets_scenes = [ 'assets/EUR_MQD/scenes/overworld/spot12/spot12_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot12/spot12_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot12/spot12_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot13/spot13_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot13/spot13_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot13/spot13_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_3.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_4.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_5.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_6.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_7.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_8.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_9.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot05/spot05_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot05/spot05_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot15/spot15_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot15/spot15_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_3.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot00/spot00_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot00/spot00_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot11/spot11_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot11/spot11_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot17/spot17_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot17/spot17_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot17/spot17_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot01/spot01_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot01/spot01_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot09/spot09_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot09/spot09_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot06/spot06_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot06/spot06_scene.cpp', 'assets/EUR_MQD/scenes/overworld/entra/entra_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/entra/entra_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot20/spot20_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot20/spot20_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot07/spot07_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot07/spot07_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot07/spot07_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot02/spot02_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot02/spot02_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot02/spot02_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot16/spot16_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot16/spot16_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot03/spot03_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot03/spot03_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot03/spot03_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot08/spot08_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot08/spot08_scene.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_scene.cpp', 'assets/EUR_MQD/scenes/misc/shrine_r/shrine_r_room_0.cpp', 'assets/EUR_MQD/scenes/misc/shrine_r/shrine_r_scene.cpp', 'assets/EUR_MQD/scenes/misc/hakaana2/hakaana2_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hakaana2/hakaana2_scene.cpp', 'assets/EUR_MQD/scenes/misc/hakaana/hakaana_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hakaana/hakaana_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_night/market_night_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_night/market_night_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_ruins/market_ruins_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_ruins/market_ruins_scene.cpp', 'assets/EUR_MQD/scenes/misc/hiral_demo/hiral_demo_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hiral_demo/hiral_demo_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_alley/market_alley_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_alley/market_alley_scene.cpp', 'assets/EUR_MQD/scenes/misc/shrine_n/shrine_n_room_0.cpp', 'assets/EUR_MQD/scenes/misc/shrine_n/shrine_n_scene.cpp', 'assets/EUR_MQD/scenes/misc/kinsuta/kinsuta_room_0.cpp', 'assets/EUR_MQD/scenes/misc/kinsuta/kinsuta_scene.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_0.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_10.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_11.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_12.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_13.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_1.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_2.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_3.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_4.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_5.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_6.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_7.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_8.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_9.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_scene.cpp', 'assets/EUR_MQD/scenes/misc/shrine/shrine_room_0.cpp', 'assets/EUR_MQD/scenes/misc/shrine/shrine_scene.cpp', 'assets/EUR_MQD/scenes/misc/enrui/enrui_room_0.cpp', 'assets/EUR_MQD/scenes/misc/enrui/enrui_scene.cpp', 'assets/EUR_MQD/scenes/misc/turibori/turibori_room_0.cpp', 'assets/EUR_MQD/scenes/misc/turibori/turibori_scene.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_room_1.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_room_2.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_scene.cpp', 'assets/EUR_MQD/scenes/misc/kakariko3/kakariko3_room_0.cpp', 'assets/EUR_MQD/scenes/misc/kakariko3/kakariko3_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_alley_n/market_alley_n_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_alley_n/market_alley_n_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_day/market_day_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_day/market_day_scene.cpp', 'assets/EUR_MQD/scenes/misc/entra_n/entra_n_room_0.cpp', 'assets/EUR_MQD/scenes/misc/entra_n/entra_n_scene.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa2/hairal_niwa2_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa2/hairal_niwa2_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home3/kokiri_home3_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home3/kokiri_home3_scene.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kenjyanoma/kenjyanoma_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kenjyanoma/kenjyanoma_scene.cpp', 'assets/EUR_MQD/scenes/indoors/labo/labo_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/labo/labo_scene.cpp', 'assets/EUR_MQD/scenes/indoors/malon_stable/malon_stable_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/malon_stable/malon_stable_scene.cpp', 'assets/EUR_MQD/scenes/indoors/tokinoma/tokinoma_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/tokinoma/tokinoma_room_1.cpp', 'assets/EUR_MQD/scenes/indoors/tokinoma/tokinoma_scene.cpp', 'assets/EUR_MQD/scenes/indoors/mahouya/mahouya_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/mahouya/mahouya_scene.cpp', 'assets/EUR_MQD/scenes/indoors/link_home/link_home_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/link_home/link_home_scene.cpp', 'assets/EUR_MQD/scenes/indoors/nakaniwa/nakaniwa_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/nakaniwa/nakaniwa_scene.cpp', 'assets/EUR_MQD/scenes/indoors/impa/impa_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/impa/impa_scene.cpp', 'assets/EUR_MQD/scenes/indoors/syatekijyou/syatekijyou_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/syatekijyou/syatekijyou_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kakariko/kakariko_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kakariko/kakariko_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home/kokiri_home_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home/kokiri_home_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home5/kokiri_home5_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home5/kokiri_home5_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home4/kokiri_home4_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home4/kokiri_home4_scene.cpp', 'assets/EUR_MQD/scenes/indoors/miharigoya/miharigoya_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/miharigoya/miharigoya_scene.cpp', 'assets/EUR_MQD/scenes/indoors/daiyousei_izumi/daiyousei_izumi_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hut/hut_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hut/hut_scene.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_1.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_2.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_3.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_4.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_5.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_6.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hylia_labo/hylia_labo_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hylia_labo/hylia_labo_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa/hairal_niwa_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa/hairal_niwa_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa_n/hairal_niwa_n_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa_n/hairal_niwa_n_scene.cpp', 'assets/EUR_MQD/scenes/indoors/tent/tent_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/tent/tent_scene.cpp', 'assets/EUR_MQD/scenes/indoors/bowling/bowling_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/bowling/bowling_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_1.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_2.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_3.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_4.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_5.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_6.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes/syotes_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes/syotes_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/depth_test/depth_test_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/depth_test/depth_test_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_1.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_2.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_3.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_4.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes2/syotes2_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes2/syotes2_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/besitu/besitu_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/besitu/besitu_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/sutaru/sutaru_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/sutaru/sutaru_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/sasatest/sasatest_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/sasatest/sasatest_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/test01/test01_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/test01/test01_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_23.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_24.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_25.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_26.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_27.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_28.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan_boss/ydan_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan_boss/ydan_boss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan_boss/ydan_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan_boss/bdan_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan_boss/bdan_boss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan_boss/bdan_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontikasonogo/ganontikasonogo_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_final/ganon_final_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_final/ganon_final_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_boss/ganon_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_boss/ganon_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan_boss/ddan_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan_boss/ddan_boss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan_boss/ddan_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_demo/ganon_demo_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_demo/ganon_demo_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/moribossroom/moribossroom_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/moribossroom/moribossroom_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/moribossroom/moribossroom_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_23.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_24.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_25.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_26.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/FIRE_bs/FIRE_bs_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/FIRE_bs/FIRE_bs_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/FIRE_bs/FIRE_bs_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_tou/ganon_tou_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_tou/ganon_tou_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_scene.cpp', 'assets/EUR_MQD/scenes/shops/kokiri_shop/kokiri_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/kokiri_shop/kokiri_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/face_shop/face_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/face_shop/face_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/shop1/shop1_room_0.cpp', 'assets/EUR_MQD/scenes/shops/shop1/shop1_scene.cpp', 'assets/EUR_MQD/scenes/shops/drag/drag_room_0.cpp', 'assets/EUR_MQD/scenes/shops/drag/drag_scene.cpp', 'assets/EUR_MQD/scenes/shops/night_shop/night_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/night_shop/night_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/alley_shop/alley_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/alley_shop/alley_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/golon/golon_room_0.cpp', 'assets/EUR_MQD/scenes/shops/golon/golon_scene.cpp', 'assets/EUR_MQD/scenes/shops/zoora/zoora_room_0.cpp', 'assets/EUR_MQD/scenes/shops/zoora/zoora_scene.cpp' ] -assets_textures = [ 'assets/EUR_MQD/textures/item_name_static/item_name_static.cpp', 'assets/EUR_MQD/textures/icon_item_dungeon_static/icon_item_dungeon_static.cpp', 'assets/EUR_MQD/textures/icon_item_static/icon_item_static.cpp', 'assets/EUR_MQD/textures/icon_item_field_static/icon_item_field_static.cpp', 'assets/EUR_MQD/textures/nintendo_rogo_static/nintendo_rogo_static.cpp', 'assets/EUR_MQD/textures/nes_font_static/nes_font_static.cpp', 'assets/EUR_MQD/textures/map_name_static/map_name_static.cpp', 'assets/EUR_MQD/textures/map_i_static/map_i_static.cpp', 'assets/EUR_MQD/textures/message_static/message_static.cpp', 'assets/EUR_MQD/textures/icon_item_24_static/icon_item_24_static.cpp', 'assets/EUR_MQD/textures/message_texture_static/message_texture_static.cpp', 'assets/EUR_MQD/textures/title_static/title_static.cpp', 'assets/EUR_MQD/textures/icon_item_fra_static/icon_item_fra_static.cpp', 'assets/EUR_MQD/textures/parameter_static/parameter_static.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_01.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_02.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_03.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_04.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_05.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_06.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_07.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_08.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_09.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_10.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_11.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_12.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_13.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_14.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_15.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_16.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_17.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_18.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_19.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_20.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_21.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_22.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_23.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_24.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_25.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_26.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_27.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_28.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_29.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_30.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_31.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_32.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_33.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_34.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_35.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_36.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_37.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_38.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_39.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_40.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_41.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_42.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_43.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_44.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_45.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_46.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_47.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_48.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_49.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_50.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_51.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_52.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_53.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_54.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_55.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_56.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_57.cpp', 'assets/EUR_MQD/textures/map_grand_static/map_grand_static.cpp', 'assets/EUR_MQD/textures/icon_item_nes_static/icon_item_nes_static.cpp', 'assets/EUR_MQD/textures/do_action_static/do_action_static.cpp', 'assets/EUR_MQD/textures/map_48x85_static/map_48x85_static.cpp', 'assets/EUR_MQD/textures/icon_item_gameover_static/icon_item_gameover_static.cpp', 'assets/EUR_MQD/textures/icon_item_ger_static/icon_item_ger_static.cpp' ] +assets_textures = [ 'assets/EUR_MQD/textures/item_name_static/item_name_static.cpp', 'assets/EUR_MQD/textures/icon_item_dungeon_static/icon_item_dungeon_static.cpp', 'assets/EUR_MQD/textures/icon_item_static/icon_item_static.cpp', 'assets/EUR_MQD/textures/icon_item_field_static/icon_item_field_static.cpp', 'assets/EUR_MQD/textures/nintendo_rogo_static/nintendo_rogo_static.cpp', 'assets/ALL/textures/nes_font_static/nes_font_static.cpp', 'assets/EUR_MQD/textures/map_name_static/map_name_static.cpp', 'assets/EUR_MQD/textures/map_i_static/map_i_static.cpp', 'assets/EUR_MQD/textures/message_static/message_static.cpp', 'assets/EUR_MQD/textures/icon_item_24_static/icon_item_24_static.cpp', 'assets/EUR_MQD/textures/message_texture_static/message_texture_static.cpp', 'assets/EUR_MQD/textures/title_static/title_static.cpp', 'assets/EUR_MQD/textures/icon_item_fra_static/icon_item_fra_static.cpp', 'assets/EUR_MQD/textures/parameter_static/parameter_static.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_01.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_02.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_03.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_04.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_05.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_06.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_07.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_08.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_09.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_10.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_11.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_12.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_13.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_14.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_15.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_16.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_17.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_18.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_19.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_20.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_21.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_22.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_23.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_24.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_25.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_26.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_27.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_28.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_29.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_30.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_31.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_32.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_33.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_34.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_35.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_36.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_37.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_38.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_39.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_40.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_41.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_42.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_43.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_44.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_45.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_46.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_47.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_48.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_49.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_50.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_51.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_52.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_53.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_54.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_55.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_56.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_57.cpp', 'assets/EUR_MQD/textures/map_grand_static/map_grand_static.cpp', 'assets/EUR_MQD/textures/icon_item_nes_static/icon_item_nes_static.cpp', 'assets/EUR_MQD/textures/do_action_static/do_action_static.cpp', 'assets/EUR_MQD/textures/map_48x85_static/map_48x85_static.cpp', 'assets/EUR_MQD/textures/icon_item_gameover_static/icon_item_gameover_static.cpp', 'assets/EUR_MQD/textures/icon_item_ger_static/icon_item_ger_static.cpp' ] assets_text = [ 'roms/EUR_MQD/text/fra_message_data_static.cpp', diff --git a/roms/PAL_1.0/text/charmap.txt b/roms/PAL_1.0/text/charmap.txt deleted file mode 100644 index dbe035240..000000000 --- a/roms/PAL_1.0/text/charmap.txt +++ /dev/null @@ -1,62 +0,0 @@ -{ - '\n' : 0x01, - - 'Í' : 0xAC, - 'Ó' : 0xAD, - 'Ú' : 0xAE, - 'í' : 0xAF, - 'ó' : 0xB0, - 'ú' : 0xB1, - '¿' : 0xB2, - '¡' : 0xB3, - 'Á' : 0xB4, - 'Ñ' : 0xB5, - 'ñ' : 0xB6, - - '‾' : 0x7F, - 'À' : 0x80, - 'î' : 0x81, - 'Â' : 0x82, - 'Ä' : 0x83, - 'Ç' : 0x84, - 'È' : 0x85, - 'É' : 0x86, - 'Ê' : 0x87, - 'Ë' : 0x88, - 'Ï' : 0x89, - 'Ô' : 0x8A, - 'Ö' : 0x8B, - 'Ù' : 0x8C, - 'Û' : 0x8D, - 'Ü' : 0x8E, - 'ß' : 0x8F, - 'à' : 0x90, - 'á' : 0x91, - 'â' : 0x92, - 'ä' : 0x93, - 'ç' : 0x94, - 'è' : 0x95, - 'é' : 0x96, - 'ê' : 0x97, - 'ë' : 0x98, - 'ï' : 0x99, - 'ô' : 0x9A, - 'ö' : 0x9B, - 'ù' : 0x9C, - 'û' : 0x9D, - 'ü' : 0x9E, - - '[A]' : 0x9F, - '[B]' : 0xA0, - '[C]' : 0xA1, - '[L]' : 0xA2, - '[R]' : 0xA3, - '[Z]' : 0xA4, - '[C-Up]' : 0xA5, - '[C-Down]' : 0xA6, - '[C-Left]' : 0xA7, - '[C-Right]' : 0xA8, - '▼' : 0xA9, - '[Control-Pad]' : 0xAA, - '[D-Pad]' : 0xAB, -} diff --git a/roms/PAL_1.0/text/pt_message_data_static.cpp b/roms/PAL_1.0/text/pt_message_data_static.cpp deleted file mode 100644 index c08fa72e3..000000000 --- a/roms/PAL_1.0/text/pt_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, ptMessage) \ - const char _message_##textId##_pt[sizeof(ptMessage END)] = { ptMessage END }; - -#include "translations/message_data_pt.enc.h" diff --git a/roms/PAL_1.0/text/spa_message_data_static.cpp b/roms/PAL_1.0/text/spa_message_data_static.cpp deleted file mode 100644 index 7300584d2..000000000 --- a/roms/PAL_1.0/text/spa_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, spaMessage) \ - const char _message_##textId##_spa[sizeof(spaMessage END)] = { spaMessage END }; - -#include "translations/message_data_es.enc.h" diff --git a/setup.py b/setup.py index 4b1cad7cd..3f9128271 100755 --- a/setup.py +++ b/setup.py @@ -37,34 +37,27 @@ def clean(): def generateEncMsgs(): print("Starting message encoding") - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str('include/translations/message_data_pt.h'), str('include/translations/message_data_pt.enc.h'), buildRom()]) + charmap = str('assets/ALL/text/charmap.txt') + subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_pt.h'), str('include/translations/message_data_pt.enc.h'), buildRom()]) mkdir(assetPath('text')) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), str(romPath('text/charmap.txt')), str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) + subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) print("Finished message encoding") -def addAdditionalLatinChars(): - fontcppfile = str(assetPath('textures/nes_font_static/nes_font_static.cpp')) - fontheaderfile = str(assetPath('textures/nes_font_static/nes_font_static.h')) - tocppfile = str('include/translations/res/additional_latin_chars/add_to.nes_font_static.cpp.txt') - toheaderfile1 = str('include/translations/res/additional_latin_chars/add1_to.nes_font_static.h.txt') - toheaderfile2 = str('include/translations/res/additional_latin_chars/add2_to.nes_font_static.h.txt') - foundtex = 'gMsgCharACLatinCapitalLetterIWithAcuteTex' - - with open(fontcppfile, 'r+') as fontcpp: - if not foundtex in fontcpp.read(): - fontcpp.write(open(tocppfile, 'r').read()) - - with open(fontheaderfile, 'r') as fontheader: - headertext = fontheader.read() - if not foundtex in headertext: - headertext = headertext.replace('static void* nes_font_static_lut[] = {', open(toheaderfile1, 'r').read()) - headertext = headertext.replace('};', open(toheaderfile2, 'r').read()) - with open(fontheaderfile, 'w') as fontheader: - fontheader.write(headertext) +def addAdditionalChars(): + zapd = Path(zapdBinary()) + chars = [] + charsdir = str('assets/ALL/textures/nes_font_static') + chars.extend(Path(charsdir).glob('*.i4.png')) + mkdir(charsdir + '/generated') + for char in chars: + input_path = os.path.abspath(char) + output_path = os.path.abspath(f"{charsdir}/generated/{os.path.splitext(os.path.basename(char))[0]}.inc.c") + command = f"{zapd} btex -tt i4 -i {input_path} -o {output_path}" + os.system(command) def build(): print("Starting asset extraction and parsing") @@ -81,7 +74,7 @@ def build(): subprocess.check_call([sys.executable, str('tools/extract_missing_assets.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/create_luts.py'), buildRom()]) subprocess.check_call([sys.executable, str('tools/fix_mtx.py'), buildRom()]) - addAdditionalLatinChars() + addAdditionalChars() print("Finished asset extraction and parsing") @@ -98,7 +91,7 @@ def main(): parser.add_argument("-o", "--organize-roms", help="Renames and moves roms to their proper location", action="store_true", default=False) parser.add_argument("-s", "--skip-organize-roms", help="Skip organizing roms", action="store_true", default=False) parser.add_argument("--run-msgenc", help="Run msgenc", action="store_true", default=False) - parser.add_argument("--add-extra-chars", help="Adds new Latin characters", action="store_true", default=False) + parser.add_argument("--add-extra-chars", help="Adds new characters", action="store_true", default=False) args = parser.parse_args() @@ -129,7 +122,7 @@ def main(): exit(0) if args.add_extra_chars: - addAdditionalLatinChars() + addAdditionalChars() exit(0) if args.enable_mouse: diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 8955daefd..3f19a685c 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -653,7 +653,7 @@ void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) } #define MESSAGE_SPACE_WIDTH 6 -f32 sFontWidths[151] = { +f32 sFontWidths[155] = { 8.0f, // ' ' 8.0f, // '!' 6.0f, // '"' @@ -805,6 +805,10 @@ f32 sFontWidths[151] = { 12.0f, // 'Á' 11.0f, // 'Ñ' 9.0f, // 'ñ' + 12.0f, // 'Ã' + 13.0f, // 'Õ' + 8.0f, // 'ã' + 9.0f, // 'õ' }; u16 Message_DrawItemIcon(GlobalContext* globalCtx, u16 itemId, Gfx** p, u16 i) diff --git a/tools/msgdis.py b/tools/msgdis.py index d4db32ba8..19a361c76 100644 --- a/tools/msgdis.py +++ b/tools/msgdis.py @@ -50,6 +50,10 @@ def segmented_to_physical(address): 0xB4: 'Á', 0xB5: 'Ñ', 0xB6: 'ñ', + 0xB7: 'Ã', + 0xB8: 'Õ', + 0xB9: 'ã', + 0xBA: 'õ', 0x7F: '‾', 0x80: 'À', diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index 50bc0552c..b28b76441 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -965,7 +965,7 @@ - + @@ -1026,8 +1026,8 @@ - - + + diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index 36a9b59e0..4849e963c 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2662,7 +2662,7 @@ textures - + textures @@ -2911,6 +2911,12 @@ scenes + + text + + + text + text diff --git a/vs/oot.props.src b/vs/oot.props.src index c6ecaa82f..6b7d7c3df 100644 --- a/vs/oot.props.src +++ b/vs/oot.props.src @@ -8,7 +8,7 @@ Application $(DefaultPlatformToolset) Unicode - $(VC_IncludePath);$(WindowsSDK_IncludePath);../include;../src;../assets/$(buildrom)/;../build;../;../external/include;%(IncludePath) + $(VC_IncludePath);$(WindowsSDK_IncludePath);../include;../src;../assets/$(buildrom)/;../assets/ALL/;../build;../build/assets/$(buildrom)/;../;../external/include;%(IncludePath) $(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);../external/Win32;%(LibraryPath) From 49fa0b37941ecb3854c8f7bc8d5166f495d23044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 28 Apr 2023 17:22:34 -0500 Subject: [PATCH 13/25] Change the language identifier from Spa to Es --- assets/ALL/text/es_message_data_static.cpp | 9 +++++++++ assets/ALL/text/spa_message_data_static.cpp | 9 --------- include/message_data_static.h | 4 ++-- include/z64message.h | 2 +- src/code/z_message_PAL.cpp | 10 +++++----- src/port/options.cpp | 12 ++++++------ vs/OOT_Assets.vcxproj | 2 +- vs/OOT_Assets.vcxproj.filters | 2 +- 8 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 assets/ALL/text/es_message_data_static.cpp delete mode 100644 assets/ALL/text/spa_message_data_static.cpp diff --git a/assets/ALL/text/es_message_data_static.cpp b/assets/ALL/text/es_message_data_static.cpp new file mode 100644 index 000000000..d79fcde2d --- /dev/null +++ b/assets/ALL/text/es_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, esMessage) \ + const char _message_##textId##_es[sizeof(esMessage END)] = { esMessage END }; + +#include "translations/message_data_es.enc.h" diff --git a/assets/ALL/text/spa_message_data_static.cpp b/assets/ALL/text/spa_message_data_static.cpp deleted file mode 100644 index 7300584d2..000000000 --- a/assets/ALL/text/spa_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, spaMessage) \ - const char _message_##textId##_spa[sizeof(spaMessage END)] = { spaMessage END }; - -#include "translations/message_data_es.enc.h" diff --git a/include/message_data_static.h b/include/message_data_static.h index de954661d..305b5bfeb 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -46,11 +46,11 @@ struct MessageTableEntry #undef DEFINE_MESSAGE -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, spaMessage, ptMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, esMessage, ptMessage) \ extern "C" const char _message_##textId##_nes[]; \ extern "C" const char _message_##textId##_ger[]; \ extern "C" const char _message_##textId##_fra[]; \ - extern "C" const char _message_##textId##_spa[]; \ + extern "C" const char _message_##textId##_es[]; \ extern "C" const char _message_##textId##_pt[]; #include "translations/message_data_en.h" diff --git a/include/z64message.h b/include/z64message.h index de2f5923b..1a9e03c01 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -17,7 +17,7 @@ enum Language LANGUAGE_ENG, LANGUAGE_GER, LANGUAGE_FRA, - LANGUAGE_SPA, + LANGUAGE_ES, LANGUAGE_PT, LANGUAGE_MAX, LANGUAGE_AUTO diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 3f19a685c..956a4ca11 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -91,8 +91,8 @@ MessageTableEntry sFraMessageEntryTable[] = { {0xFFFF, 0, NULL, 0}, }; -MessageTableEntry sSpaMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, spaMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_spa, sizeof(spaMessage)}, +MessageTableEntry sEsMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, esMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_es, sizeof(esMessage)}, #include "translations/message_data_es.h" #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, @@ -1284,7 +1284,7 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) static s16 GetLocalized(s16 array[]) { - if(gSaveContext.language > LANGUAGE_SPA) + if(gSaveContext.language > LANGUAGE_ES) return (s16)array[0]; else return (s16)array[gSaveContext.language]; @@ -3837,8 +3837,8 @@ void Message_SetTables(void) case LANGUAGE_FRA: sMessageEntryTablePtr = sFraMessageEntryTable; break; - case LANGUAGE_SPA: - sMessageEntryTablePtr = sSpaMessageEntryTable; + case LANGUAGE_ES: + sMessageEntryTablePtr = sEsMessageEntryTable; break; case LANGUAGE_PT: sMessageEntryTablePtr = sPtMessageEntryTable; diff --git a/src/port/options.cpp b/src/port/options.cpp index 395ff996b..ea74513e5 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -40,7 +40,7 @@ std::string languageGetString(Language id) return "auto"; case LANGUAGE_ENG: return "en"; - case LANGUAGE_SPA: + case LANGUAGE_ES: return "es"; case LANGUAGE_FRA: return "fr"; @@ -64,7 +64,7 @@ Language languageGetId(const std::string& s) } else if(s == "es") { - return LANGUAGE_SPA; + return LANGUAGE_ES; } else if(s == "fr") { @@ -334,9 +334,9 @@ namespace oot setLanguage(LANGUAGE_GER); break; case LANGUAGE_FRA: - setLanguage(LANGUAGE_SPA); + setLanguage(LANGUAGE_ES); break; - case LANGUAGE_SPA: + case LANGUAGE_ES: setLanguage(LANGUAGE_PT); break; case LANGUAGE_PT: @@ -359,9 +359,9 @@ namespace oot setLanguage(LANGUAGE_PT); break; case LANGUAGE_PT: - setLanguage(LANGUAGE_SPA); + setLanguage(LANGUAGE_ES); break; - case LANGUAGE_SPA: + case LANGUAGE_ES: setLanguage(LANGUAGE_FRA); break; case LANGUAGE_FRA: diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index b28b76441..ad2a9b881 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1026,7 +1026,7 @@ - + diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index 4849e963c..dcdfd508e 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2911,7 +2911,7 @@ scenes - + text From 978731bd66b2617f639b4cd225fb4f793597749c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 29 Apr 2023 03:05:14 -0500 Subject: [PATCH 14/25] Add Brazilian Portuguese language support --- assets/ALL/text/pt-BR_message_data_static.cpp | 9 ++ include/message_data_static.h | 5 +- include/z64message.h | 1 + src/code/z_message_PAL.cpp | 10 ++ src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 6 +- src/port/options.cpp | 109 ++++++------------ vs/OOT_Assets.vcxproj | 1 + vs/OOT_Assets.vcxproj.filters | 3 + 8 files changed, 65 insertions(+), 79 deletions(-) create mode 100644 assets/ALL/text/pt-BR_message_data_static.cpp diff --git a/assets/ALL/text/pt-BR_message_data_static.cpp b/assets/ALL/text/pt-BR_message_data_static.cpp new file mode 100644 index 000000000..c769d4bfb --- /dev/null +++ b/assets/ALL/text/pt-BR_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, brMessage) \ + const char _message_##textId##_br[sizeof(brMessage END)] = { brMessage END }; + +#include "translations/message_data_pt-BR.enc.h" diff --git a/include/message_data_static.h b/include/message_data_static.h index 305b5bfeb..4712a38da 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -46,12 +46,13 @@ struct MessageTableEntry #undef DEFINE_MESSAGE -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, esMessage, ptMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, esMessage, ptMessage, brMessage) \ extern "C" const char _message_##textId##_nes[]; \ extern "C" const char _message_##textId##_ger[]; \ extern "C" const char _message_##textId##_fra[]; \ extern "C" const char _message_##textId##_es[]; \ - extern "C" const char _message_##textId##_pt[]; + extern "C" const char _message_##textId##_pt[]; \ + extern "C" const char _message_##textId##_br[]; #include "translations/message_data_en.h" extern "C" const char _message_0xFFFC_nes[73]; diff --git a/include/z64message.h b/include/z64message.h index 1a9e03c01..7398a380a 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -19,6 +19,7 @@ enum Language LANGUAGE_FRA, LANGUAGE_ES, LANGUAGE_PT, + LANGUAGE_PT_BR, LANGUAGE_MAX, LANGUAGE_AUTO }; diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 956a4ca11..14a74df4c 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -105,6 +105,13 @@ MessageTableEntry sPtMessageEntryTable[] = { {0xFFFF, 0, NULL, 0}, }; +MessageTableEntry sPtBrMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, brMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_br, sizeof(brMessage)}, +#include "translations/message_data_pt-BR.h" +#undef DEFINE_MESSAGE + {0xFFFF, 0, NULL, 0}, +}; + MessageTableEntry sStaffMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff, sizeof(staffMessage)}, #include "text/message_data_staff.h" @@ -3843,6 +3850,9 @@ void Message_SetTables(void) case LANGUAGE_PT: sMessageEntryTablePtr = sPtMessageEntryTable; break; + case LANGUAGE_PT_BR: + sMessageEntryTablePtr = sPtBrMessageEntryTable; + break; case LANGUAGE_ENG: default: sMessageEntryTablePtr = sNesMessageEntryTable; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index ca9abd6a7..d7aaa7d1b 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -621,20 +621,22 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) int lang = gSaveContext.language; // FontIndexesLanguage - static u8* pressStartFontIndexes[5] = { + static u8* pressStartFontIndexes[6] = { {pressStartFontIndexes_ENG}, {pressStartFontIndexes_GER}, {pressStartFontIndexes_FRA}, {pressStartFontIndexes_SPA}, + {pressStartFontIndexes_PT}, {pressStartFontIndexes_PT} }; // Count, Left, SpaceIndex, StartIndex - static int pressStartInfo[5][4] = { + static int pressStartInfo[6][4] = { {10, 0, 4, 4}, {11, -3, 5, 5}, {15, -15, 6, 9}, {10, 0, 4, 4}, + {11, -3, 5, 5}, {11, -3, 5, 5} }; diff --git a/src/port/options.cpp b/src/port/options.cpp index ea74513e5..9932ca957 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -6,6 +6,7 @@ #include "port/options.h" #include "xxhash64.h" #include +#include #ifdef __SWITCH__ #include "pc/nx.h" @@ -25,60 +26,56 @@ std::string userLanguage() SDL_Locale* locale = SDL_GetPreferredLocales(); if(locale) { - lang = locale->language; + lang = std::string(locale->language) + "_" + std::string(locale->country); SDL_free(locale); } return lang; } +// FIXME: This is too complex, I rather use some struct with the lang data +static const std::unordered_map languageMap = { + {LANGUAGE_AUTO, "auto"}, + {LANGUAGE_ENG, "en"}, + {LANGUAGE_ES, "es"}, + {LANGUAGE_FRA, "fr"}, + {LANGUAGE_GER, "de"}, + {LANGUAGE_PT, "pt"}, + {LANGUAGE_PT_BR, "pt_BR"} +}; + std::string languageGetString(Language id) { - switch(id) + auto it = languageMap.find(id); + if(it != languageMap.end()) { - case LANGUAGE_AUTO: - return "auto"; - case LANGUAGE_ENG: - return "en"; - case LANGUAGE_ES: - return "es"; - case LANGUAGE_FRA: - return "fr"; - case LANGUAGE_GER: - return "de"; - case LANGUAGE_PT: - return "pt"; + return it->second; } + return "en"; } Language languageGetId(const std::string& s) { - if(s == "auto") - { - return LANGUAGE_AUTO; - } - if(s == "en") - { - return LANGUAGE_ENG; - } - else if(s == "es") - { - return LANGUAGE_ES; - } - else if(s == "fr") - { - return LANGUAGE_FRA; - } - else if(s == "de") + auto it = std::find_if( + languageMap.begin(), languageMap.end(), // is full lang? + [&s](const std::pair& pair) { return pair.second == s; }); + + if(it != languageMap.end()) { - return LANGUAGE_GER; + return (Language)it->first; } - else if(s == "pt") + + it = std::find_if( + languageMap.begin(), languageMap.end(), // is base lang? + [&s](const std::pair& pair) { return pair.second == s.substr(0, 2); }); + + if(it != languageMap.end()) { - return LANGUAGE_PT; + return (Language)it->first; } - return LANGUAGE_ENG; + + return LANGUAGE_ENG; // Fallback! } namespace oot @@ -328,51 +325,13 @@ namespace oot void Game::setNextLanguage() { - switch(m_language) - { - case LANGUAGE_ENG: - setLanguage(LANGUAGE_GER); - break; - case LANGUAGE_FRA: - setLanguage(LANGUAGE_ES); - break; - case LANGUAGE_ES: - setLanguage(LANGUAGE_PT); - break; - case LANGUAGE_PT: - setLanguage(LANGUAGE_ENG); - break; - case LANGUAGE_GER: - setLanguage(LANGUAGE_FRA); - break; - default: - setLanguage(LANGUAGE_ENG); - } + setLanguage((Language)((m_language + 1) % LANGUAGE_MAX)); config().save(); } void Game::setPrevLanguage() { - switch(m_language) - { - case LANGUAGE_ENG: - setLanguage(LANGUAGE_PT); - break; - case LANGUAGE_PT: - setLanguage(LANGUAGE_ES); - break; - case LANGUAGE_ES: - setLanguage(LANGUAGE_FRA); - break; - case LANGUAGE_FRA: - setLanguage(LANGUAGE_GER); - break; - case LANGUAGE_GER: - setLanguage(LANGUAGE_ENG); - break; - default: - setLanguage(LANGUAGE_ENG); - } + setLanguage((Language)((m_language + LANGUAGE_MAX - 1) % LANGUAGE_MAX)); config().save(); } diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index ad2a9b881..b78851691 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1028,6 +1028,7 @@ + diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index dcdfd508e..5a459db94 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2917,6 +2917,9 @@ text + + text + text From b6f7d493fa0672e92c2185ec1041181978d113d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 29 Apr 2023 16:34:57 -0500 Subject: [PATCH 15/25] Add Italian language support --- assets/ALL/text/it_message_data_static.cpp | 9 +++++++++ include/message_data_static.h | 5 +++-- include/z64message.h | 1 + setup.py | 15 +++++++++------ src/code/z_message_PAL.cpp | 10 ++++++++++ src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 14 ++++++++++---- src/port/options.cpp | 3 ++- vs/OOT_Assets.vcxproj | 4 +--- vs/OOT_Assets.vcxproj.filters | 8 +------- 9 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 assets/ALL/text/it_message_data_static.cpp diff --git a/assets/ALL/text/it_message_data_static.cpp b/assets/ALL/text/it_message_data_static.cpp new file mode 100644 index 000000000..9c824b19e --- /dev/null +++ b/assets/ALL/text/it_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, itMessage) \ + const char _message_##textId##_it[sizeof(itMessage END)] = { itMessage END }; + +#include "translations/message_data_it.enc.h" diff --git a/include/message_data_static.h b/include/message_data_static.h index 4712a38da..d821e29d0 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -46,13 +46,14 @@ struct MessageTableEntry #undef DEFINE_MESSAGE -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, esMessage, ptMessage, brMessage) \ +#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, esMessage, ptMessage, brMessage, itMessage) \ extern "C" const char _message_##textId##_nes[]; \ extern "C" const char _message_##textId##_ger[]; \ extern "C" const char _message_##textId##_fra[]; \ extern "C" const char _message_##textId##_es[]; \ extern "C" const char _message_##textId##_pt[]; \ - extern "C" const char _message_##textId##_br[]; + extern "C" const char _message_##textId##_br[]; \ + extern "C" const char _message_##textId##_it[]; #include "translations/message_data_en.h" extern "C" const char _message_0xFFFC_nes[73]; diff --git a/include/z64message.h b/include/z64message.h index 7398a380a..3b1dbd6ea 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -20,6 +20,7 @@ enum Language LANGUAGE_ES, LANGUAGE_PT, LANGUAGE_PT_BR, + LANGUAGE_IT, LANGUAGE_MAX, LANGUAGE_AUTO }; diff --git a/setup.py b/setup.py index 3f9128271..d532326a6 100755 --- a/setup.py +++ b/setup.py @@ -38,13 +38,16 @@ def clean(): def generateEncMsgs(): print("Starting message encoding") charmap = str('assets/ALL/text/charmap.txt') - subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str('include/translations/message_data_pt.h'), str('include/translations/message_data_pt.enc.h'), buildRom()]) + msgenc = str('tools/msgenc.py') + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_pt.h'), str('include/translations/message_data_pt.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_pt-BR.h'), str('include/translations/message_data_pt-BR.enc.h'), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_it.h'), str('include/translations/message_data_it.enc.h'), buildRom()]) mkdir(assetPath('text')) - subprocess.check_call([sys.executable, str('tools/msgenc.py'), charmap, str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) + subprocess.check_call([sys.executable, msgenc, charmap, str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) print("Finished message encoding") def addAdditionalChars(): diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 14a74df4c..ebfd63578 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -112,6 +112,13 @@ MessageTableEntry sPtBrMessageEntryTable[] = { {0xFFFF, 0, NULL, 0}, }; +MessageTableEntry sItMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, itMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_it, sizeof(itMessage)}, +#include "translations/message_data_it.h" +#undef DEFINE_MESSAGE + {0xFFFF, 0, NULL, 0}, +}; + MessageTableEntry sStaffMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff, sizeof(staffMessage)}, #include "text/message_data_staff.h" @@ -3853,6 +3860,9 @@ void Message_SetTables(void) case LANGUAGE_PT_BR: sMessageEntryTablePtr = sPtBrMessageEntryTable; break; + case LANGUAGE_IT: + sMessageEntryTablePtr = sItMessageEntryTable; + break; case LANGUAGE_ENG: default: sMessageEntryTablePtr = sNesMessageEntryTable; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index d7aaa7d1b..b3267d88f 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -53,6 +53,10 @@ static u8 pressStartFontIndexes_PT[] = { 0x0A, 0x19, 0x0E, 0x1B, 0x1D, 0x0E, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, }; +static u8 pressStartFontIndexes_IT[] = { + 0x19, 0x1B, 0x0E, 0x16, 0x12, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, +}; + static void* effectMaskTextures_28[] = { gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex, gTitleEffectMask10Tex, gTitleEffectMask11Tex, gTitleEffectMask12Tex, gTitleEffectMask20Tex, gTitleEffectMask21Tex, gTitleEffectMask22Tex, }; @@ -621,23 +625,25 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) int lang = gSaveContext.language; // FontIndexesLanguage - static u8* pressStartFontIndexes[6] = { + static u8* pressStartFontIndexes[7] = { {pressStartFontIndexes_ENG}, {pressStartFontIndexes_GER}, {pressStartFontIndexes_FRA}, {pressStartFontIndexes_SPA}, {pressStartFontIndexes_PT}, - {pressStartFontIndexes_PT} + {pressStartFontIndexes_PT}, + {pressStartFontIndexes_IT} }; // Count, Left, SpaceIndex, StartIndex - static int pressStartInfo[6][4] = { + static int pressStartInfo[7][4] = { {10, 0, 4, 4}, {11, -3, 5, 5}, {15, -15, 6, 9}, {10, 0, 4, 4}, {11, -3, 5, 5}, - {11, -3, 5, 5} + {11, -3, 5, 5}, + {10, 0, 4, 4}, }; // Draw "PRESS START" Text diff --git a/src/port/options.cpp b/src/port/options.cpp index 9932ca957..93d5d0000 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -41,7 +41,8 @@ static const std::unordered_map languageMap = { {LANGUAGE_FRA, "fr"}, {LANGUAGE_GER, "de"}, {LANGUAGE_PT, "pt"}, - {LANGUAGE_PT_BR, "pt_BR"} + {LANGUAGE_PT_BR, "pt_BR"}, + {LANGUAGE_IT, "it"} }; std::string languageGetString(Language id) diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index b78851691..05d1870b5 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1026,9 +1026,7 @@ - - - + diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index 5a459db94..9809ef666 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2911,13 +2911,7 @@ scenes - - text - - - text - - + text From 58bbf047670604779915ed7d66364dcac3452853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 29 Apr 2023 21:31:05 -0500 Subject: [PATCH 16/25] Fix missing fallback in save confirmation screen --- src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp index 642975915..5686a6c1d 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp @@ -1931,7 +1931,7 @@ void KaleidoScope_DrawPages(GlobalContext* globalCtx, GraphicsContext* gfxCtx) } else if(((pauseCtx->state == 7 && pauseCtx->unk_1EC >= 4) || pauseCtx->state == 0xF) && oot::config().game().restoreSaveConfirmation()) { - POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sSaveConfirmationTexs[gSaveContext.language], 152, 16, 0); + POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sSaveConfirmationTexs[GetLanguageIndex()], 152, 16, 0); } else if((pauseCtx->state != 7) || (pauseCtx->unk_1EC < 4)) { From 44c297863dd6680dc86a25a86a00856a2ceb4ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Mon, 1 May 2023 14:37:18 -0500 Subject: [PATCH 17/25] Simplify msgenc.py, remove ROM nes_font_static.* --- setup.py | 32 +++++++++++++++++--------------- tools/msgenc.py | 26 +++++++++++++------------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/setup.py b/setup.py index d532326a6..20adf3435 100755 --- a/setup.py +++ b/setup.py @@ -31,23 +31,21 @@ def clean(): if path.exists() == False: continue elif path.is_dir(): - shutil.rmtree(path) + for sp in path.glob('*'): + if sp.name != 'ALL': shutil.rmtree(sp) else: os.remove(path) def generateEncMsgs(): print("Starting message encoding") - charmap = str('assets/ALL/text/charmap.txt') - msgenc = str('tools/msgenc.py') - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_en.h'), str('include/translations/message_data_en.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_de.h'), str('include/translations/message_data_de.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_fr.h'), str('include/translations/message_data_fr.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_es-SV.h'), str('include/translations/message_data_es.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_pt.h'), str('include/translations/message_data_pt.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_pt-BR.h'), str('include/translations/message_data_pt-BR.enc.h'), buildRom()]) - subprocess.check_call([sys.executable, msgenc, charmap, str('include/translations/message_data_it.h'), str('include/translations/message_data_it.enc.h'), buildRom()]) - mkdir(assetPath('text')) - subprocess.check_call([sys.executable, msgenc, charmap, str(assetPath('text/message_data_staff.h')), str(assetPath('text/message_data_staff.enc.h')), buildRom()]) + charmap = 'assets/ALL/text/charmap.txt' + from tools import msgenc + for code in {'en', 'de', 'fr', 'es-SV', 'pt', 'pt-BR', 'it'}: + input_h = f'include/translations/message_data_{code}.h' + if code == 'es-SV': code = 'es' + output_h = f'include/translations/message_data_{code}.enc.h' + msgenc.do_enc(charmap, input_h, output_h) + msgenc.do_enc(charmap, assetPath('text/message_data_staff.h'), assetPath('text/message_data_staff.enc.h')) print("Finished message encoding") def addAdditionalChars(): @@ -58,9 +56,13 @@ def addAdditionalChars(): mkdir(charsdir + '/generated') for char in chars: input_path = os.path.abspath(char) - output_path = os.path.abspath(f"{charsdir}/generated/{os.path.splitext(os.path.basename(char))[0]}.inc.c") - command = f"{zapd} btex -tt i4 -i {input_path} -o {output_path}" - os.system(command) + output_path = os.path.abspath(f'{charsdir}/generated/{os.path.splitext(os.path.basename(char))[0]}.inc.c') + os.system(f'{zapd} btex -tt i4 -i {input_path} -o {output_path}') + nes_remove = [] # Delete conflicting files + nes_remove.extend(Path(assetPath('textures/nes_font_static')).glob('nes_font_static.*')) + for file in nes_remove: + try: os.remove(file) + except OSError: pass def build(): print("Starting asset extraction and parsing") diff --git a/tools/msgenc.py b/tools/msgenc.py index a07325a49..4632af1be 100644 --- a/tools/msgenc.py +++ b/tools/msgenc.py @@ -4,7 +4,6 @@ # import argparse, ast, re -from oot import * charmap = {} @@ -27,22 +26,23 @@ def cvt_str(m): return string -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Encode message_data_static text headers") - parser.add_argument("charmap", help="path to charmap file specifying custom encoding elements") - parser.add_argument("input", help="path to file to be encoded") - parser.add_argument("output", help="encoded file") - parser.add_argument("buildRom", help="encoded file") - args = parser.parse_args() - setBuildRom(args.buildRom) - - read_charmap(args.charmap) +def do_enc(charmap, input, output): + read_charmap(charmap) contents = "" - with open(args.input, "r", encoding='UTF8') as infile: + with open(input, "r", encoding='UTF8') as infile: contents = infile.read() contents = re.sub(string_regex, cvt_str, contents) - with open(args.output, "w", encoding="raw_unicode_escape") as outfile: + with open(output, "w", encoding="raw_unicode_escape") as outfile: outfile.write(contents) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Encode message_data_static text headers") + parser.add_argument("charmap", help="path to charmap file specifying custom encoding elements") + parser.add_argument("input", help="path to file to be encoded") + parser.add_argument("output", help="encoded file") + args = parser.parse_args() + do_enc(args.charmap, args.input, args.output) + From 8b40429cf813997b6ec0df3a3f5bd1abef2a158e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 6 May 2023 10:07:37 -0500 Subject: [PATCH 18/25] Add Swedish (Sweden) language support --- assets/ALL/text/charmap.txt | 2 ++ assets/ALL/text/sv-SE_message_data_static.cpp | 9 +++++++++ ...atin_capital_letter_a_with_ring_above.i4.png | Bin 0 -> 230 bytes ..._latin_small_letter_a_with_ring_above.i4.png | Bin 0 -> 216 bytes .../nes_font_static/nes_font_static.cpp | 8 ++++++++ .../textures/nes_font_static/nes_font_static.h | 6 +++++- include/message_data_static.h | 5 +++-- include/translations/message_data_sv-SE.h | 8 -------- include/z64message.h | 1 + setup.py | 2 +- src/code/z_message_PAL.cpp | 14 +++++++++++++- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 12 +++++++++--- src/port/options.cpp | 3 ++- tools/msgdis.py | 16 ---------------- 14 files changed, 53 insertions(+), 33 deletions(-) create mode 100644 assets/ALL/text/sv-SE_message_data_static.cpp create mode 100644 assets/ALL/textures/nes_font_static/msg_char_bb_latin_capital_letter_a_with_ring_above.i4.png create mode 100644 assets/ALL/textures/nes_font_static/msg_char_bc_latin_small_letter_a_with_ring_above.i4.png diff --git a/assets/ALL/text/charmap.txt b/assets/ALL/text/charmap.txt index 80f80a7b5..899c3a4a8 100644 --- a/assets/ALL/text/charmap.txt +++ b/assets/ALL/text/charmap.txt @@ -16,6 +16,8 @@ 'Õ' : 0xB8, 'ã' : 0xB9, 'õ' : 0xBA, + 'Å' : 0xBB, + 'å' : 0xBC, '‾' : 0x7F, 'À' : 0x80, diff --git a/assets/ALL/text/sv-SE_message_data_static.cpp b/assets/ALL/text/sv-SE_message_data_static.cpp new file mode 100644 index 000000000..fb3ed25ab --- /dev/null +++ b/assets/ALL/text/sv-SE_message_data_static.cpp @@ -0,0 +1,9 @@ +#define MESSAGE_DATA_STATIC + +#include "message_data_fmt.h" +#include "message_data_static.h" + +#define DEFINE_MESSAGE(textId, type, yPos, seMessage) \ + const char _message_##textId##_se[sizeof(seMessage END)] = { seMessage END }; + +#include "translations/message_data_sv-SE.enc.h" diff --git a/assets/ALL/textures/nes_font_static/msg_char_bb_latin_capital_letter_a_with_ring_above.i4.png b/assets/ALL/textures/nes_font_static/msg_char_bb_latin_capital_letter_a_with_ring_above.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cea86f2f222c94eca5aff56f7cf9bb467ce16b GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx_Ko z7sn8b(^n^-<~*Pv;If@HdV^T@M!x=S3EbNr9Cgcae3NikLybf6qRMm*=I$4>Bkf&W z{scX43F`Xou$QO9aFgLOuCGQ6T1!K0vmCScZdX_u!@gw7jp}&Db308L?l^Pkv^<#e zIj8HQtiY9m`96km^S5qW#jF;zh3Vo(!3BC}e3xXrd-3yCVC)i$JLkn7#N-9l{1N}h beuH7QaW+dW*U1E+8yP%Z{an^LB{Ts5T`5-F literal 0 HcmV?d00001 diff --git a/assets/ALL/textures/nes_font_static/msg_char_bc_latin_small_letter_a_with_ring_above.i4.png b/assets/ALL/textures/nes_font_static/msg_char_bc_latin_small_letter_a_with_ring_above.i4.png new file mode 100644 index 0000000000000000000000000000000000000000..bd9c1e038fc6be703179271923cfca7b88d6b7e0 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9F5M?jcysy3fAP_WC> z#W6(V{MiYPf(I0MSSB{Gs3~!(znxnmzqbe|_%d9)XC3}=3#Wn? zhtKmUhN|uBIGfY8TjQ@rDZBHxXF7Xjek|;nxUh*MKkB9VF2=0*#M`%dpRxm8#o+1c K=d#Wzp$P!sib languageMap = { {LANGUAGE_GER, "de"}, {LANGUAGE_PT, "pt"}, {LANGUAGE_PT_BR, "pt_BR"}, - {LANGUAGE_IT, "it"} + {LANGUAGE_IT, "it"}, + {LANGUAGE_SV_SE, "sv-SE"}, }; std::string languageGetString(Language id) diff --git a/tools/msgdis.py b/tools/msgdis.py index 19a361c76..c93e03017 100644 --- a/tools/msgdis.py +++ b/tools/msgdis.py @@ -39,22 +39,6 @@ def segmented_to_physical(address): Special characters conversion """ extraction_charmap = { - 0xAC: 'Í', - 0xAD: 'Ó', - 0xAE: 'Ú', - 0xAF: 'í', - 0xB0: 'ó', - 0xB1: 'ú', - 0xB2: '¿', - 0xB3: '¡', - 0xB4: 'Á', - 0xB5: 'Ñ', - 0xB6: 'ñ', - 0xB7: 'Ã', - 0xB8: 'Õ', - 0xB9: 'ã', - 0xBA: 'õ', - 0x7F: '‾', 0x80: 'À', 0x81: 'î', From 3be01b6bf67d27153cd3422a8cc3a0c5192ad8d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 6 May 2023 20:14:36 -0500 Subject: [PATCH 19/25] Use full charset for title screen --- include/message_data_static.h | 1 - src/code/z_kanfont.cpp | 29 +-- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 165 ++++++------------ .../ovl_file_choose/z_file_choose.cpp | 5 +- .../ovl_file_choose/z_file_nameset_PAL.cpp | 9 +- src/port/generic.cpp | 19 ++ src/port/generic.h | 1 + vs/OOT.vcxproj | 1 + vs/OOT.vcxproj.filters | 3 + 9 files changed, 94 insertions(+), 139 deletions(-) create mode 100644 src/port/generic.cpp create mode 100644 src/port/generic.h diff --git a/include/message_data_static.h b/include/message_data_static.h index e40a7560d..e9b594d87 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -57,7 +57,6 @@ struct MessageTableEntry extern "C" const char _message_##textId##_se[]; #include "translations/message_data_en.h" -extern "C" const char _message_0xFFFC_nes[73]; #undef DEFINE_MESSAGE diff --git a/src/code/z_kanfont.cpp b/src/code/z_kanfont.cpp index 8b0756189..574dfdc08 100644 --- a/src/code/z_kanfont.cpp +++ b/src/code/z_kanfont.cpp @@ -32,34 +32,13 @@ void Font_LoadMessageBoxIcon(Font* font, u16 icon) } /** - * Loads a full set of character textures based on their ordering in the message with text id 0xFFFC into - * the font buffer. + * Loads a full set of character textures based on their ordering in nes_font_static_lut into the font buffer. */ void Font_LoadOrderedFont(Font* font) { - void* fontBuf; - uintptr_t codePointIndex; - uintptr_t fontBufIndex; - uintptr_t offset; - - font->msgOffset = 0; - - DmaMgr_SendRequest1(font->msgBuf, (char*)_message_0xFFFC_nes, sizeof(_message_0xFFFC_nes), "../z_kanfont.c", 122); - - for(fontBufIndex = 0, codePointIndex = 0; font->msgBuf[codePointIndex] != MESSAGE_END; codePointIndex++) + int i; + for(i = 0; i < sizeof(nes_font_static_lut) / sizeof(char*); i++) { - if(codePointIndex > sizeof(_message_0xFFFC_nes)) - { - osSyncPrintf("ERROR!! エラー!!! error───!!!!\n"); - return; - } - - if(font->msgBuf[codePointIndex] != MESSAGE_NEWLINE) - { - fontBuf = font->fontBuf + fontBufIndex * 8; - - DmaMgr_SendRequest1(fontBuf, nes_font_static_lut[font->msgBuf[codePointIndex] - '\x20'], FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 134); - fontBufIndex += FONT_CHAR_TEX_SIZE / 8; - } + memcpy(font->fontBuf + (FONT_CHAR_TEX_SIZE * (i + 0x20)), nes_font_static_lut[i], FONT_CHAR_TEX_SIZE); } } diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index d526cd0f4..d53bf884d 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -14,6 +14,7 @@ #include "def/z_kanfont.h" #include "def/z_rcp.h" #include "objects/object_mag/object_mag.h" +#include #define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5) @@ -29,44 +30,12 @@ static s16 textFadeDirection_28 = 0; static Counter textFadeTimer_28 = 0; -static u8 noControllerFontIndexes_28[] = { - 0x17, 0x18, 0x0C, 0x18, 0x17, 0x1D, 0x1B, 0x18, 0x15, 0x15, 0x0E, 0x1B, -}; - -static u8 pressStartFontIndexes_ENG[] = { - 0x19, 0x1B, 0x0E, 0x1C, 0x1C, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, -}; - -static u8 pressStartFontIndexes_GER[] = { - 0x0D, 0x1B, 0x1E, 0x0C, 0x14, 0x0E, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, -}; - -static u8 pressStartFontIndexes_FRA[] = { - 0x0A, 0x19, 0x19, 0x1E, 0x22, 0x0E, 0x23, 0x1C, 0x1E, 0x1B, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, -}; - -static u8 pressStartFontIndexes_SPA[] = { - 0x19, 0x1E, 0x15, 0x1C, 0x0A, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, -}; - -static u8 pressStartFontIndexes_PT[] = { - 0x0A, 0x19, 0x0E, 0x1B, 0x1D, 0x0E, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, -}; - -static u8 pressStartFontIndexes_IT[] = { - 0x19, 0x1B, 0x0E, 0x16, 0x12, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D, -}; - -static u8 pressStartFontIndexes_SV[] = { // TODO - 0x17, 0x18, 0x0C, 0x18, 0x17, 0x1D, 0x1B, 0x18, 0x15, 0x15, 0x0E, 0x1B, -}; - static void* effectMaskTextures_28[] = { - gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex, gTitleEffectMask10Tex, gTitleEffectMask11Tex, gTitleEffectMask12Tex, gTitleEffectMask20Tex, gTitleEffectMask21Tex, gTitleEffectMask22Tex, + gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex, gTitleEffectMask10Tex, gTitleEffectMask11Tex, gTitleEffectMask12Tex, gTitleEffectMask20Tex, gTitleEffectMask21Tex, gTitleEffectMask22Tex, }; ActorInit En_Mag_InitVars = { - ACTOR_EN_MAG, ACTORCAT_PROP, FLAGS, OBJECT_MAG, ACTOR_FACTORY(EnMag), (ActorFunc)EnMag_Init, (ActorFunc)EnMag_Destroy, (ActorFunc)EnMag_Update, (ActorFunc)EnMag_Draw, (ActorFunc)EnMag_Reset, + ACTOR_EN_MAG, ACTORCAT_PROP, FLAGS, OBJECT_MAG, ACTOR_FACTORY(EnMag), (ActorFunc)EnMag_Init, (ActorFunc)EnMag_Destroy, (ActorFunc)EnMag_Update, (ActorFunc)EnMag_Draw, (ActorFunc)EnMag_Reset, }; static Timer sDelayTimer = 0; @@ -381,7 +350,7 @@ void EnMag_DrawTextureI8(Gfx** gfxp, void* texture, s16 texWidth, s16 texHeight, } void EnMag_DrawEffectTextures( - Gfx** gfxp, void* maskTex, void* effectTex, s16 maskWidth, s16 maskHeight, s16 effectWidth, s16 effectHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, u16 shifts, u16 shiftt, u16 flag, EnMag* pthis) + Gfx** gfxp, void* maskTex, void* effectTex, s16 maskWidth, s16 maskHeight, s16 effectWidth, s16 effectHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy, u16 shifts, u16 shiftt, u16 flag, EnMag* pthis) { Gfx* gfx = *gfxp; @@ -484,6 +453,39 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) u16 i, j, k; u16 rectLeft; u16 rectTop; + std::string ps = "PRESS START"; + std::string nc = "NO CONTROLLER"; + switch(gSaveContext.language) + { + case LANGUAGE_GER: + ps = "DR\x8E""CKE START"; /* */ + nc = "CONTROLLER FEHLT"; + break; + case LANGUAGE_FRA: + ps = "APPUYEZ SUR START"; + nc = "MANETTE D\x86""BRANCH\x86""E"; /* */ + break; + case LANGUAGE_ES: + ps = "PULSA START"; + nc = "SIN MANDO"; + break; + case LANGUAGE_PT: + ps = "PRESSIONA START"; + nc = "SEM CONTROLADOR"; + break; + case LANGUAGE_PT_BR: + ps = "APERTE START"; + nc = "NENHUM CONTROLADOR"; + break; + case LANGUAGE_IT: + ps = "PREMI START"; + nc = "NESSUN CONTROLLER"; + break; + case LANGUAGE_SV_SE: + ps = "TRYCK P\xBB"" START"; /* */ + nc = "INGEN HANDKONTROLL"; + break; + } gSPSegment(gfx++, 0x06, gObjectTable[pthis->actor.objBankIndex].vromStart.get()); @@ -591,102 +593,51 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) { textAlpha_28 = 255; } - - // Text Shadow + u8 length = nc.length(); gDPPipeSync(gfx++); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha_28); - - rectLeft = VREG(19) + 1; - for(i = 0; i < ARRAY_COUNT(noControllerFontIndexes_28); i++) + rectLeft = VREG(19) + 1 + ((length - 13) * -3); + for(int j = 0; j < 2; j++) { - EnMag_DrawCharTexture(&gfx, font->fontBuf + noControllerFontIndexes_28[i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 172); - rectLeft += VREG(21); - if(i == 1) + if(j == 1) { - rectLeft += VREG(23); + gDPSetPrimColor(gfx++, 0, 0, 100, 255, 255, textAlpha_28); + rectLeft = VREG(19) + ((length - 13) * -3); } - } - - // Actual Text - gDPPipeSync(gfx++); - gDPSetPrimColor(gfx++, 0, 0, 100, 255, 255, textAlpha_28); - - rectLeft = VREG(19); - for(i = 0; i < ARRAY_COUNT(noControllerFontIndexes_28); i++) - { - EnMag_DrawCharTexture(&gfx, font->fontBuf + noControllerFontIndexes_28[i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 171); - rectLeft += VREG(21); - if(i == 1) + for(i = 0; i < length; i++) { - rectLeft += VREG(23); + unsigned char c = nc[i]; + EnMag_DrawCharTexture(&gfx, font->fontBuf + c * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + ((j == 0) ? 172 : 171)); + rectLeft += (c == ' ') ? VREG(23) : VREG(21); } } } else if(pthis->copyrightAlpha >= 200.0f) { - // int lang = LANGUAGE_ENG; - int lang = gSaveContext.language; - - // FontIndexesLanguage - static u8* pressStartFontIndexes[8] = { - {pressStartFontIndexes_ENG}, - {pressStartFontIndexes_GER}, - {pressStartFontIndexes_FRA}, - {pressStartFontIndexes_SPA}, - {pressStartFontIndexes_PT}, - {pressStartFontIndexes_PT}, - {pressStartFontIndexes_IT}, - {pressStartFontIndexes_SV}, - }; - - // Count, Left, SpaceIndex, StartIndex - static int pressStartInfo[8][4] = { - {10, 0, 4, 4}, - {11, -3, 5, 5}, - {15, -15, 6, 9}, - {10, 0, 4, 4}, - {11, -3, 5, 5}, - {11, -3, 5, 5}, - {10, 0, 4, 4}, - {10, 0, 4, 4}, - }; - // Draw "PRESS START" Text textAlpha_28 = textFadeTimer_28 * 10; if(textAlpha_28 >= 255) { textAlpha_28 = 255; } - - // Text Shadow + u8 length = ps.length(); gDPPipeSync(gfx++); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha_28); - - rectLeft = YREG(7) + 1 + pressStartInfo[lang][1]; - for(i = 0; i < pressStartInfo[lang][0]; i++) + rectLeft = YREG(7) + 1 + ((length - 11) * -3); + for(int j = 0; j < 2; j++) { - EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndexes[lang][i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 172); - rectLeft += YREG(8); - if((i == pressStartInfo[lang][2]) || (i == pressStartInfo[lang][3])) + if(j == 1) { - rectLeft += YREG(9); + gDPSetPrimColor(gfx++, 0, 0, YREG(4), YREG(5), YREG(6), textAlpha_28); + rectLeft = YREG(7) + ((length - 11) * -3); } - } - - // Actual Text - gDPPipeSync(gfx++); - gDPSetPrimColor(gfx++, 0, 0, YREG(4), YREG(5), YREG(6), textAlpha_28); - - rectLeft = YREG(7) + pressStartInfo[lang][1]; - for(i = 0; i < pressStartInfo[lang][0]; i++) - { - EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndexes[lang][i] * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + 171); - rectLeft += YREG(8); - if((i == pressStartInfo[lang][2]) || (i == pressStartInfo[lang][3])) + for(i = 0; i < length; i++) { - rectLeft += YREG(9); + unsigned char c = ps[i]; + EnMag_DrawCharTexture(&gfx, font->fontBuf + c * FONT_CHAR_TEX_SIZE, rectLeft, YREG(10) + ((j == 0) ? 172 : 171)); + rectLeft += (c == ' ') ? YREG(9) : YREG(8); } } } @@ -739,7 +690,7 @@ void EnMag_Reset(Actor* pthisx, GlobalContext* globalCtx) textFadeTimer_28 = 0; En_Mag_InitVars = { - ACTOR_EN_MAG, ACTORCAT_PROP, FLAGS, OBJECT_MAG, ACTOR_FACTORY(EnMag), (ActorFunc)EnMag_Init, (ActorFunc)EnMag_Destroy, (ActorFunc)EnMag_Update, (ActorFunc)EnMag_Draw, (ActorFunc)EnMag_Reset, + ACTOR_EN_MAG, ACTORCAT_PROP, FLAGS, OBJECT_MAG, ACTOR_FACTORY(EnMag), (ActorFunc)EnMag_Init, (ActorFunc)EnMag_Destroy, (ActorFunc)EnMag_Update, (ActorFunc)EnMag_Draw, (ActorFunc)EnMag_Reset, }; sDelayTimer = 0; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp index 33904a443..f2927a5bd 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp @@ -3,6 +3,7 @@ #include "actor_common.h" #include "file_choose.h" #include "framerate.h" +#include "port/generic.h" #include "port/options.h" #include "segment_symbols.h" #include "textures/parameter_static/parameter_static.h" @@ -844,7 +845,7 @@ namespace oot::gamestate for(i = 0, vtxOffset = 0; vtxOffset < 0x20; i++, vtxOffset += 4) { - FileChoose_DrawCharacter(pthis->gfxCtx, sp54->fontBuf + pthis->fileNames[fileIndex][i] * FONT_CHAR_TEX_SIZE, vtxOffset); + FileChoose_DrawCharacter(pthis->gfxCtx, sp54->fontBuf + ToASCII(pthis->fileNames[fileIndex][i]) * FONT_CHAR_TEX_SIZE, vtxOffset); } } @@ -860,7 +861,7 @@ namespace oot::gamestate // draw death count for(i = 0, vtxOffset = 0; i < 3; i++, vtxOffset += 4) { - FileChoose_DrawCharacter(pthis->gfxCtx, sp54->fontBuf + deathCountSplit[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + FileChoose_DrawCharacter(pthis->gfxCtx, sp54->fontBuf + ToASCII(deathCountSplit[i]) * FONT_CHAR_TEX_SIZE, vtxOffset); } gDPPipeSync(POLY_OPA_DISP++); diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp index 4bc97f11e..5cec6d20d 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp @@ -2,6 +2,7 @@ #include "actor_common.h" #include "file_choose.h" #include "overlays/ovl_File_Choose/ovl_file_choose.h" +#include "port/generic.h" #include "port/options.h" #include "textures/title_static/title_static.h" #include "def/z_file_choose.h" @@ -231,7 +232,7 @@ namespace oot::gamestate for(phi_v0 = 0, phi_s0 = 0; phi_s0 < 0x20; phi_s0 += 4, phi_v0++) { - FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + pthis->fileNames[pthis->buttonIndex][phi_v0] * FONT_CHAR_TEX_SIZE, phi_s0); + FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + ToASCII(pthis->fileNames[pthis->buttonIndex][phi_v0]) * FONT_CHAR_TEX_SIZE, phi_s0); } pthis->nameEntryVtx[0x25].v.tc[0] = pthis->nameEntryVtx[0x26].v.tc[1] = pthis->nameEntryVtx[0x27].v.tc[0] = pthis->nameEntryVtx[0x27].v.tc[1] = pthis->nameEntryVtx[0x29].v.tc[0] = pthis->nameEntryVtx[0x2A].v.tc[1] = @@ -271,14 +272,14 @@ namespace oot::gamestate for(tmp = 0; tmp < 32; i++, tmp += 4) { - FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + D_808123F0[i] * FONT_CHAR_TEX_SIZE, tmp); + FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + ToASCII(D_808123F0[i]) * FONT_CHAR_TEX_SIZE, tmp); } vtx += 32; } gSPVertex(POLY_OPA_DISP++, &pthis->keyboardVtx[0x100], 4, 0); - FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + D_808123F0[i] * FONT_CHAR_TEX_SIZE, 0); + FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + ToASCII(D_808123F0[i]) * FONT_CHAR_TEX_SIZE, 0); CLOSE_DISPS(pthis->gfxCtx, "../z_file_nameset_PAL.c", 347); } @@ -416,7 +417,7 @@ namespace oot::gamestate gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 0, 255); gSPVertex(POLY_OPA_DISP++, &pthis->keyboardVtx[pthis->charIndex * 4], 4, 0); - FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + D_808123F0[pthis->charIndex] * FONT_CHAR_TEX_SIZE, 0); + FileChoose_DrawCharacter(pthis->gfxCtx, font->fontBuf + ToASCII(D_808123F0[pthis->charIndex]) * FONT_CHAR_TEX_SIZE, 0); if(CHECK_BTN_ALL(input->press.button, BTN_A)) { diff --git a/src/port/generic.cpp b/src/port/generic.cpp new file mode 100644 index 000000000..1374c1250 --- /dev/null +++ b/src/port/generic.cpp @@ -0,0 +1,19 @@ +#include "generic.h" + +/* Game charset */ +char ToASCII(const int code) +{ + static const char asciiTable[] = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + ' ', '-', '.', + }; + + if (code >= 0 && code <= 64) + return asciiTable[code]; + + return ' '; +} \ No newline at end of file diff --git a/src/port/generic.h b/src/port/generic.h new file mode 100644 index 000000000..efb06ea87 --- /dev/null +++ b/src/port/generic.h @@ -0,0 +1 @@ +char ToASCII(const int code); diff --git a/vs/OOT.vcxproj b/vs/OOT.vcxproj index d276c334f..7f60062da 100644 --- a/vs/OOT.vcxproj +++ b/vs/OOT.vcxproj @@ -789,6 +789,7 @@ + diff --git a/vs/OOT.vcxproj.filters b/vs/OOT.vcxproj.filters index 8086ddb80..1d4584275 100644 --- a/vs/OOT.vcxproj.filters +++ b/vs/OOT.vcxproj.filters @@ -2139,6 +2139,9 @@ Source Files\port + + Source Files\port + Source Files\port\controller From 46379c3c1c2beac87eb8878e4b6594c524186e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Tue, 9 May 2023 15:19:27 -0500 Subject: [PATCH 20/25] Title and Wipe upstream update --- include/z64save.h | 4 +- include/z64transition.h | 2 +- src/code/z_fbdemo_wipe1.cpp | 142 ++++++++++---------- src/code/z_play.cpp | 4 +- src/code/z_sram.cpp | 4 +- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 61 ++++----- 6 files changed, 107 insertions(+), 110 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index 40a8f977d..110a84cf9 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -217,7 +217,7 @@ namespace oot::save /* 0x1415 */ u8 chamberCutsceneNum; /* 0x1416 */ u16 nextDayTime; // "next_zelda_time" /* 0x1418 */ u8 fadeDuration; - /* 0x1419 */ u8 unk_1419; // transition related + /* 0x1419 */ u8 wipeSpeed; // transition related /* 0x141A */ u16 skyboxTime; /* 0x141C */ u8 dogIsLost; /* 0x141D */ u8 nextTransition; @@ -379,7 +379,7 @@ namespace oot::save /* 0x1415 */ u8 chamberCutsceneNum; /* 0x1416 */ u16 nextDayTime; // "next_zelda_time" /* 0x1418 */ u8 fadeDuration; - /* 0x1419 */ u8 unk_1419; // transition related + /* 0x1419 */ u8 wipeSpeed; // transition related /* 0x141A */ TimerU16 skyboxTime; /* 0x141C */ u8 dogIsLost; /* 0x141D */ u8 nextTransition; diff --git a/include/z64transition.h b/include/z64transition.h index e76a4885c..10ce4724e 100644 --- a/include/z64transition.h +++ b/include/z64transition.h @@ -28,7 +28,7 @@ struct TransitionUnk struct TransitionWipe { /* 0x000 */ Color_RGBA8 color; - /* 0x004 */ Color_RGBA8 envColor; + /* 0x004 */ Color_RGBA8 altColor; /* 0x008 */ u8 direction; /* 0x009 */ u8 frame; /* 0x00A */ u8 isDone; diff --git a/src/code/z_fbdemo_wipe1.cpp b/src/code/z_fbdemo_wipe1.cpp index c643b3c68..50d17be39 100644 --- a/src/code/z_fbdemo_wipe1.cpp +++ b/src/code/z_fbdemo_wipe1.cpp @@ -1,5 +1,12 @@ #define INTERNAL_SRC_CODE_Z_FBDEMO_WIPE1_C #include "global.h" + +typedef enum +{ + /* 0 */ TRANS_WIPE_DIR_IN, + /* 1 */ TRANS_WIPE_DIR_OUT +} TransitionWipeDirection; + #include "code/fbdemo_wipe1/z_fbdemo_wipe1.cpp" #include "z64save.h" #include "z64transition.h" @@ -12,46 +19,46 @@ #include "def/z_rcp.h" Gfx sWipeDList[] = { - gsDPPipeSync(), - gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), - gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), - gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_1PRIMITIVE, G_AC_NONE | G_ZS_PRIM | G_RM_PASS | G_RM_AA_ZB_TEX_EDGE2), - gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0), - gsDPSetPrimDepth(0, 0), - gsDPLoadTextureBlock_4b(sWipe1Tex, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 6, 6, 11, G_TX_NOLOD), - gsDPLoadMultiBlock_4b(sWipe1Tex, 0x0100, 1, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 6, 6, 11, 1), - gsDPSetTextureLUT(G_TT_NONE), - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), - gsSPDisplayListSEG(SEGMENT_ADDRESS(0x08000000)), - gsSPVertex(sWipe1Vtx, 25, 0), - gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0), - gsSP2Triangles(5, 6, 7, 0, 6, 8, 9, 0), - gsSP2Triangles(8, 10, 11, 0, 10, 12, 13, 0), - gsSP2Triangles(12, 14, 15, 0, 14, 16, 17, 0), - gsSP2Triangles(16, 18, 19, 0, 18, 20, 21, 0), - gsSP2Triangles(20, 22, 23, 0, 22, 0, 24, 0), - gsSPEndDisplayList(), + gsDPPipeSync(), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_1PRIMITIVE, G_AC_NONE | G_ZS_PRIM | G_RM_PASS | G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0), + gsDPSetPrimDepth(0, 0), + gsDPLoadTextureBlock_4b(sWipe1Tex, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 6, 6, 11, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(sWipe1Tex, 0x0100, 1, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 6, 6, 11, 1), + gsDPSetTextureLUT(G_TT_NONE), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsSPDisplayListSEG(SEGMENT_ADDRESS(0x08000000)), + gsSPVertex(sWipe1Vtx, 25, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 6, 8, 9, 0), + gsSP2Triangles(8, 10, 11, 0, 10, 12, 13, 0), + gsSP2Triangles(12, 14, 15, 0, 14, 16, 17, 0), + gsSP2Triangles(16, 18, 19, 0, 18, 20, 21, 0), + gsSP2Triangles(20, 22, 23, 0, 22, 0, 24, 0), + gsSPEndDisplayList(), }; // unused. Gfx sWipeSyncDList[] = { - gsDPPipeSync(), - gsSPEndDisplayList(), + gsDPPipeSync(), + gsSPEndDisplayList(), }; void TransitionWipe_Start(void* pthisx) { TransitionWipe* pthis = (TransitionWipe*)pthisx; - pthis->isDone = 0; + pthis->isDone = false; - if(pthis->direction) + if(pthis->direction != TRANS_WIPE_DIR_IN) { - pthis->texY = 0x14D; + pthis->texY = (s32)(83.25f * (1 << 2)); } else { - pthis->texY = 0x264; + pthis->texY = (s32)(153.0f * (1 << 2)); } guPerspective(&pthis->projection, &pthis->normal, 60.0f, (4.0 / 3.0f), 10.0f, 12800.0f, 1.0f); @@ -73,57 +80,54 @@ void TransitionWipe_Destroy(void* pthisx) void TransitionWipe_Update(void* pthisx, s32 updateRate) { TransitionWipe* pthis = (TransitionWipe*)pthisx; - u8 unk1419; - if(pthis->direction != 0) + if(pthis->direction != TRANS_WIPE_DIR_IN) { - unk1419 = gSaveContext.unk_1419; - pthis->texY += (unk1419 * 3) / updateRate; - if(pthis->texY >= 0x264) + pthis->texY += (((void)0, gSaveContext.wipeSpeed) * 3) / updateRate; + if(pthis->texY >= (s32)(153.0f * (1 << 2))) { - pthis->texY = 0x264; - pthis->isDone = 1; + pthis->texY = (s32)(153.0f * (1 << 2)); + pthis->isDone = true; } } else { - unk1419 = gSaveContext.unk_1419; - pthis->texY -= (unk1419 * 3) / updateRate; - if(pthis->texY < 0x14E) + pthis->texY -= (((void)0, gSaveContext.wipeSpeed) * 3) / updateRate; + if(pthis->texY <= (s32)(83.25f * (1 << 2))) { - pthis->texY = 0x14D; - pthis->isDone = 1; + pthis->texY = (s32)(83.25f * (1 << 2)); + pthis->isDone = true; } } } void TransitionWipe_Draw(void* pthisx, Gfx** gfxP) { - Gfx* gfx = *gfxP; - Mtx* modelView; - TransitionWipe* pthis = (TransitionWipe*)pthisx; - s32 pad[4]; - Gfx* tex; - - modelView = pthis->modelView[pthis->frame]; - - pthis->frame ^= 1; - guScale(&modelView[0], 0.56f, 0.56f, 1.0f); - guRotate(&modelView[1], 0.0f, 0.0f, 0.0f, 1.0f); - guTranslate(&modelView[2], 0.0f, 0.0f, 0.0f); - gDPPipeSync(gfx++); - tex = Gfx_BranchTexScroll(&gfx, pthis->texX, pthis->texY, 0, 0); - gSPSegment(gfx++, 8, tex); - gDPSetPrimColor(gfx++, 0, 0x80, pthis->color.r, pthis->color.g, pthis->color.b, 255); - gSPMatrix(gfx++, &pthis->projection, G_MTX_LOAD | G_MTX_PROJECTION); - gSPPerspNormalize(gfx++, pthis->normal); - gSPMatrix(gfx++, &pthis->lookAt, G_MTX_MUL | G_MTX_PROJECTION); - gSPMatrix(gfx++, &modelView[0], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPMatrix(gfx++, &modelView[1], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - gSPMatrix(gfx++, &modelView[2], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, sWipeDList); - gDPPipeSync(gfx++); - *gfxP = gfx; + Gfx* gfx = *gfxP; + Mtx* modelView; + TransitionWipe* pthis = (TransitionWipe*)pthisx; + s32 pad[4]; + Gfx* texScroll; + + modelView = pthis->modelView[pthis->frame]; + pthis->frame ^= 1; + + guScale(&modelView[0], 0.56f, 0.56f, 1.0f); + guRotate(&modelView[1], 0.0f, 0.0f, 0.0f, 1.0f); + guTranslate(&modelView[2], 0.0f, 0.0f, 0.0f); + gDPPipeSync(gfx++); + texScroll = Gfx_BranchTexScroll(&gfx, pthis->texX, pthis->texY, 0, 0); + gSPSegment(gfx++, 8, texScroll); + gDPSetPrimColor(gfx++, 0, 0x80, pthis->color.r, pthis->color.g, pthis->color.b, 255); + gSPMatrix(gfx++, &pthis->projection, G_MTX_LOAD | G_MTX_PROJECTION); + gSPPerspNormalize(gfx++, pthis->normal); + gSPMatrix(gfx++, &pthis->lookAt, G_MTX_MUL | G_MTX_PROJECTION); + gSPMatrix(gfx++, &modelView[0], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gfx++, &modelView[1], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPMatrix(gfx++, &modelView[2], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, sWipeDList); + gDPPipeSync(gfx++); + *gfxP = gfx; } s32 TransitionWipe_IsDone(void* pthisx) @@ -139,20 +143,20 @@ void TransitionWipe_SetType(void* pthisx, s32 type) if(type == 1) { - pthis->direction = 1; + pthis->direction = TRANS_WIPE_DIR_OUT; } else { - pthis->direction = 0; + pthis->direction = TRANS_WIPE_DIR_IN; } - if(pthis->direction != 0) + if(pthis->direction != TRANS_WIPE_DIR_IN) { - pthis->texY = 0x14D; + pthis->texY = (s32)(83.25f * (1 << 2)); } else { - pthis->texY = 0x264; + pthis->texY = (s32)(153.0f * (1 << 2)); } } @@ -163,9 +167,9 @@ void TransitionWipe_SetColor(void* pthisx, Color_RGBA8 color) pthis->color = color; } -void TransitionWipe_SetEnvColor(void* pthisx, Color_RGBA8 color) +void TransitionWipe_SetAltColor(void* pthisx, Color_RGBA8 color) { TransitionWipe* pthis = (TransitionWipe*)pthisx; - pthis->envColor = color; + pthis->altColor = color; } diff --git a/src/code/z_play.cpp b/src/code/z_play.cpp index e41fd47d6..de5ca91d1 100644 --- a/src/code/z_play.cpp +++ b/src/code/z_play.cpp @@ -666,10 +666,10 @@ void Gameplay_Update(GlobalContext* globalCtx) globalCtx->transitionCtx.setType(&globalCtx->transitionCtx.data, globalCtx->transitionCtx.transitionType | 0x80); } - gSaveContext.unk_1419 = 14; + gSaveContext.wipeSpeed = 14; if((globalCtx->transitionCtx.transitionType == 8) || (globalCtx->transitionCtx.transitionType == 9)) { - gSaveContext.unk_1419 = 28; + gSaveContext.wipeSpeed = 28; } gSaveContext.fadeDuration = 60; diff --git a/src/code/z_sram.cpp b/src/code/z_sram.cpp index 56821ea8b..1938f87af 100644 --- a/src/code/z_sram.cpp +++ b/src/code/z_sram.cpp @@ -781,7 +781,7 @@ namespace oot::save s.chamberCutsceneNum = this->chamberCutsceneNum; s.nextDayTime = this->nextDayTime; s.fadeDuration = this->fadeDuration; - s.unk_1419 = this->unk_1419; + s.wipeSpeed = this->wipeSpeed; s.skyboxTime = this->skyboxTime; s.dogIsLost = this->dogIsLost; s.nextTransition = this->nextTransition; @@ -917,7 +917,7 @@ namespace oot::save this->chamberCutsceneNum = s.chamberCutsceneNum; this->nextDayTime = s.nextDayTime; this->fadeDuration = s.fadeDuration; - this->unk_1419 = s.unk_1419; + this->wipeSpeed = s.wipeSpeed; this->skyboxTime = s.skyboxTime; this->dogIsLost = s.dogIsLost; this->nextTransition = s.nextTransition; diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index d53bf884d..8abf9d811 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -10,7 +10,6 @@ #include "def/audio.h" #include "def/audio_bank.h" #include "def/environment_flags.h" -#include "def/graph.h" #include "def/z_kanfont.h" #include "def/z_rcp.h" #include "objects/object_mag/object_mag.h" @@ -24,11 +23,9 @@ void EnMag_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnMag_Update(Actor* thisx, GlobalContext* globalCtx); void EnMag_Draw(Actor* thisx, GlobalContext* globalCtx); -static s16 textAlpha_28 = 0; - -static s16 textFadeDirection_28 = 0; - -static Counter textFadeTimer_28 = 0; +static s16 textAlpha = 0; +static s16 textFadeDirection = 0; +static Counter textFadeCounter = 0; static void* effectMaskTextures_28[] = { gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex, gTitleEffectMask10Tex, gTitleEffectMask11Tex, gTitleEffectMask12Tex, gTitleEffectMask20Tex, gTitleEffectMask21Tex, gTitleEffectMask22Tex, @@ -80,7 +77,7 @@ void EnMag_Init(Actor* thisx, GlobalContext* globalCtx) pthis->effectFadeInState = pthis->effectPrimLodFrac = pthis->globalState = pthis->effectAlpha = pthis->mainAlpha = pthis->subAlpha = pthis->copyrightAlpha = 0.0f; - if(gSaveContext.startDemo != 0) + if(gSaveContext.startDemo) { pthis->mainAlpha = 210; pthis->subAlpha = 255; @@ -109,7 +106,7 @@ void EnMag_Init(Actor* thisx, GlobalContext* globalCtx) pthis->globalState = MAG_STATE_DISPLAY; sDelayTimer = 20; gSaveContext.fadeDuration = 1; - gSaveContext.unk_1419 = 255; + gSaveContext.wipeSpeed = 255; } Font_LoadOrderedFont(&pthis->font); @@ -163,12 +160,12 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) pthis->globalState = MAG_STATE_DISPLAY; sDelayTimer = 20; gSaveContext.fadeDuration = 1; - gSaveContext.unk_1419 = 255; + gSaveContext.wipeSpeed = 255; } } else if(pthis->globalState >= MAG_STATE_DISPLAY) { - if(sDelayTimer == 0) + if(!sDelayTimer) { if(CHECK_BTN_ALL(globalCtx->input[0].press.button, BTN_START) || CHECK_BTN_ALL(globalCtx->input[0].press.button, BTN_A) || CHECK_BTN_ALL(globalCtx->input[0].press.button, BTN_B)) { @@ -197,7 +194,7 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) if(pthis->globalState == MAG_STATE_FADE_IN) { - if(pthis->effectFadeInState == 0) + if(!pthis->effectFadeInState) { pthis->effectAlpha += 6.375f * FRAMERATE_SCALER; pthis->effectPrimLodFrac += 0.8f * FRAMERATE_SCALER; @@ -218,7 +215,7 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) pthis->effectFadeInTimer--; - if(pthis->effectFadeInTimer == 0) + if(!pthis->effectFadeInTimer) { pthis->effectPrimLodFrac = 32.0f; pthis->effectAlpha = 255.0f; @@ -588,21 +585,21 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) if(gSaveContext.fileNum == 0xFEDC) { // Draw "NO CONTROLLER" Text - textAlpha_28 = textFadeTimer_28 * 10; - if(textAlpha_28 >= 255) + textAlpha = textFadeCounter * 10; + if(textAlpha >= 255) { - textAlpha_28 = 255; + textAlpha = 255; } u8 length = nc.length(); gDPPipeSync(gfx++); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha_28); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha); rectLeft = VREG(19) + 1 + ((length - 13) * -3); for(int j = 0; j < 2; j++) { if(j == 1) { - gDPSetPrimColor(gfx++, 0, 0, 100, 255, 255, textAlpha_28); + gDPSetPrimColor(gfx++, 0, 0, 100, 255, 255, textAlpha); rectLeft = VREG(19) + ((length - 13) * -3); } for(i = 0; i < length; i++) @@ -616,21 +613,21 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) else if(pthis->copyrightAlpha >= 200.0f) { // Draw "PRESS START" Text - textAlpha_28 = textFadeTimer_28 * 10; - if(textAlpha_28 >= 255) + textAlpha = textFadeCounter * 10; + if(textAlpha >= 255) { - textAlpha_28 = 255; + textAlpha = 255; } u8 length = ps.length(); gDPPipeSync(gfx++); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha_28); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha); rectLeft = YREG(7) + 1 + ((length - 11) * -3); for(int j = 0; j < 2; j++) { if(j == 1) { - gDPSetPrimColor(gfx++, 0, 0, YREG(4), YREG(5), YREG(6), textAlpha_28); + gDPSetPrimColor(gfx++, 0, 0, YREG(4), YREG(5), YREG(6), textAlpha); rectLeft = YREG(7) + ((length - 11) * -3); } for(i = 0; i < length; i++) @@ -642,19 +639,15 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) } } - if(textFadeDirection_28 != 0) + if(textFadeDirection) { - if(--textFadeTimer_28 == 0) - { - textFadeDirection_28 = 0; - } + if(--textFadeCounter == 0) + textFadeDirection = 0; } else { - if(++textFadeTimer_28 >= 26) - { - textFadeDirection_28 = 1; - } + if(++textFadeCounter >= 26) + textFadeDirection = 1; } *gfxp = gfx; @@ -683,11 +676,11 @@ void EnMag_Draw(Actor* thisx, GlobalContext* globalCtx) void EnMag_Reset(Actor* pthisx, GlobalContext* globalCtx) { - textAlpha_28 = 0; + textAlpha = 0; - textFadeDirection_28 = 0; + textFadeDirection = 0; - textFadeTimer_28 = 0; + textFadeCounter = 0; En_Mag_InitVars = { ACTOR_EN_MAG, ACTORCAT_PROP, FLAGS, OBJECT_MAG, ACTOR_FACTORY(EnMag), (ActorFunc)EnMag_Init, (ActorFunc)EnMag_Destroy, (ActorFunc)EnMag_Update, (ActorFunc)EnMag_Draw, (ActorFunc)EnMag_Reset, From 59d3d6afed453328e623850977d90cecb47a0909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Wed, 10 May 2023 03:08:48 -0500 Subject: [PATCH 21/25] Use UTF-8 when compiling --- vs/OOT.vcxproj | 1 + vs/OOT_Assets.vcxproj | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/vs/OOT.vcxproj b/vs/OOT.vcxproj index 7f60062da..0ba1b0151 100644 --- a/vs/OOT.vcxproj +++ b/vs/OOT.vcxproj @@ -77,6 +77,7 @@ $(SolutionDir)..\RaphnetAdapter\hidapi-win\include + /utf-8 %(AdditionalOptions) $(SolutionDir)..\RaphnetAdapter\hidapi-win\include diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index 05d1870b5..5e3cd1cf9 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -76,6 +76,11 @@ oot_assets false + + + /utf-8 %(AdditionalOptions) + + From 1b30845298a0549447e7617f393943d27b00aa98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Fri, 12 May 2023 04:14:48 -0500 Subject: [PATCH 22/25] Add Unicode Support (1) --- .../nes_font_static/nes_font_static.cpp | 638 ---------- .../nes_font_static/nes_font_static.h | 1127 ++++++++++++----- include/def/z_kanfont.h | 1 + include/def/z_std_dma.h | 1 + include/z64message.h | 16 +- meson.build | 2 +- roms/EUR_MQD/text/fra_message_data_static.cpp | 2 +- roms/EUR_MQD/text/ger_message_data_static.cpp | 2 +- roms/EUR_MQD/text/nes_message_data_static.cpp | 19 +- .../text/staff_message_data_static.cpp | 3 +- roms/PAL_1.0/text/fra_message_data_static.cpp | 2 +- roms/PAL_1.0/text/ger_message_data_static.cpp | 2 +- roms/PAL_1.0/text/nes_message_data_static.cpp | 19 +- .../text/staff_message_data_static.cpp | 3 +- src/boot/z_std_dma.cpp | 1 + src/code/z_kanfont.cpp | 35 +- src/code/z_message_PAL.cpp | 319 ++--- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 6 +- vs/OOT_Assets.vcxproj | 1 - vs/OOT_Assets.vcxproj.filters | 3 - 20 files changed, 931 insertions(+), 1271 deletions(-) delete mode 100644 assets/ALL/textures/nes_font_static/nes_font_static.cpp diff --git a/assets/ALL/textures/nes_font_static/nes_font_static.cpp b/assets/ALL/textures/nes_font_static/nes_font_static.cpp deleted file mode 100644 index c63a6f2ac..000000000 --- a/assets/ALL/textures/nes_font_static/nes_font_static.cpp +++ /dev/null @@ -1,638 +0,0 @@ -#include "z64.h" -#include "nes_font_static.h" - -u8 gMsgChar20SpaceTex[] = { -#include "textures/nes_font_static/msg_char_20_space.i4.inc.c" -}; - -u8 gMsgChar21ExclamationMarkTex[] = { -#include "textures/nes_font_static/msg_char_21_exclamation_mark.i4.inc.c" -}; - -u8 gMsgChar22QuotationMarkTex[] = { -#include "textures/nes_font_static/msg_char_22_quotation_mark.i4.inc.c" -}; - -u8 gMsgChar23NumberSignTex[] = { -#include "textures/nes_font_static/msg_char_23_number_sign.i4.inc.c" -}; - -u8 gMsgChar24DollarSignTex[] = { -#include "textures/nes_font_static/msg_char_24_dollar_sign.i4.inc.c" -}; - -u8 gMsgChar25PercentSignTex[] = { -#include "textures/nes_font_static/msg_char_25_percent_sign.i4.inc.c" -}; - -u8 gMsgChar26AmpersandTex[] = { -#include "textures/nes_font_static/msg_char_26_ampersand.i4.inc.c" -}; - -u8 gMsgChar27ApostropheTex[] = { -#include "textures/nes_font_static/msg_char_27_apostrophe.i4.inc.c" -}; - -u8 gMsgChar28LeftParenthesesTex[] = { -#include "textures/nes_font_static/msg_char_28_left_parentheses.i4.inc.c" -}; - -u8 gMsgChar29RightParenthesesTex[] = { -#include "textures/nes_font_static/msg_char_29_right_parentheses.i4.inc.c" -}; - -u8 gMsgChar2AAsteriskTex[] = { -#include "textures/nes_font_static/msg_char_2a_asterisk.i4.inc.c" -}; - -u8 gMsgChar2BPlusSignTex[] = { -#include "textures/nes_font_static/msg_char_2b_plus_sign.i4.inc.c" -}; - -u8 gMsgChar2CCommaTex[] = { -#include "textures/nes_font_static/msg_char_2c_comma.i4.inc.c" -}; - -u8 gMsgChar2DHyphenMinusTex[] = { -#include "textures/nes_font_static/msg_char_2d_hyphen_minus.i4.inc.c" -}; - -u8 gMsgChar2EFullStopTex[] = { -#include "textures/nes_font_static/msg_char_2e_full_stop.i4.inc.c" -}; - -u8 gMsgChar2FSolidusTex[] = { -#include "textures/nes_font_static/msg_char_2f_solidus.i4.inc.c" -}; - -u8 gMsgChar30Digit0Tex[] = { -#include "textures/nes_font_static/msg_char_30_digit_0.i4.inc.c" -}; - -u8 gMsgChar31Digit1Tex[] = { -#include "textures/nes_font_static/msg_char_31_digit_1.i4.inc.c" -}; - -u8 gMsgChar32Digit2Tex[] = { -#include "textures/nes_font_static/msg_char_32_digit_2.i4.inc.c" -}; - -u8 gMsgChar33Digit3Tex[] = { -#include "textures/nes_font_static/msg_char_33_digit_3.i4.inc.c" -}; - -u8 gMsgChar34Digit4Tex[] = { -#include "textures/nes_font_static/msg_char_34_digit_4.i4.inc.c" -}; - -u8 gMsgChar35Digit5Tex[] = { -#include "textures/nes_font_static/msg_char_35_digit_5.i4.inc.c" -}; - -u8 gMsgChar36Digit6Tex[] = { -#include "textures/nes_font_static/msg_char_36_digit_6.i4.inc.c" -}; - -u8 gMsgChar37Digit7Tex[] = { -#include "textures/nes_font_static/msg_char_37_digit_7.i4.inc.c" -}; - -u8 gMsgChar38Digit8Tex[] = { -#include "textures/nes_font_static/msg_char_38_digit_8.i4.inc.c" -}; - -u8 gMsgChar39Digit9Tex[] = { -#include "textures/nes_font_static/msg_char_39_digit_9.i4.inc.c" -}; - -u8 gMsgChar3AColonTex[] = { -#include "textures/nes_font_static/msg_char_3a_colon.i4.inc.c" -}; - -u8 gMsgChar3BSemicolonTex[] = { -#include "textures/nes_font_static/msg_char_3b_semicolon.i4.inc.c" -}; - -u8 gMsgChar3CLessThanSignTex[] = { -#include "textures/nes_font_static/msg_char_3c_less_than_sign.i4.inc.c" -}; - -u8 gMsgChar3DEqualsSignTex[] = { -#include "textures/nes_font_static/msg_char_3d_equals_sign.i4.inc.c" -}; - -u8 gMsgChar3EGreaterThanSignTex[] = { -#include "textures/nes_font_static/msg_char_3e_greater_than_sign.i4.inc.c" -}; - -u8 gMsgChar3FQuestionMarkTex[] = { -#include "textures/nes_font_static/msg_char_3f_question_mark.i4.inc.c" -}; - -u8 gMsgChar40CommercialAtTex[] = { -#include "textures/nes_font_static/msg_char_40_commercial_at.i4.inc.c" -}; - -u8 gMsgChar41LatinCapitalLetterATex[] = { -#include "textures/nes_font_static/msg_char_41_latin_capital_letter_a.i4.inc.c" -}; - -u8 gMsgChar42LatinCapitalLetterBTex[] = { -#include "textures/nes_font_static/msg_char_42_latin_capital_letter_b.i4.inc.c" -}; - -u8 gMsgChar43LatinCapitalLetterCTex[] = { -#include "textures/nes_font_static/msg_char_43_latin_capital_letter_c.i4.inc.c" -}; - -u8 gMsgChar44LatinCapitalLetterDTex[] = { -#include "textures/nes_font_static/msg_char_44_latin_capital_letter_d.i4.inc.c" -}; - -u8 gMsgChar45LatinCapitalLetterETex[] = { -#include "textures/nes_font_static/msg_char_45_latin_capital_letter_e.i4.inc.c" -}; - -u8 gMsgChar46LatinCapitalLetterFTex[] = { -#include "textures/nes_font_static/msg_char_46_latin_capital_letter_f.i4.inc.c" -}; - -u8 gMsgChar47LatinCapitalLetterGTex[] = { -#include "textures/nes_font_static/msg_char_47_latin_capital_letter_g.i4.inc.c" -}; - -u8 gMsgChar48LatinCapitalLetterHTex[] = { -#include "textures/nes_font_static/msg_char_48_latin_capital_letter_h.i4.inc.c" -}; - -u8 gMsgChar49LatinCapitalLetterITex[] = { -#include "textures/nes_font_static/msg_char_49_latin_capital_letter_i.i4.inc.c" -}; - -u8 gMsgChar4ALatinCapitalLetterJTex[] = { -#include "textures/nes_font_static/msg_char_4a_latin_capital_letter_j.i4.inc.c" -}; - -u8 gMsgChar4BLatinCapitalLetterKTex[] = { -#include "textures/nes_font_static/msg_char_4b_latin_capital_letter_k.i4.inc.c" -}; - -u8 gMsgChar4CLatinCapitalLetterLTex[] = { -#include "textures/nes_font_static/msg_char_4c_latin_capital_letter_l.i4.inc.c" -}; - -u8 gMsgChar4DLatinCapitalLetterMTex[] = { -#include "textures/nes_font_static/msg_char_4d_latin_capital_letter_m.i4.inc.c" -}; - -u8 gMsgChar4ELatinCapitalLetterNTex[] = { -#include "textures/nes_font_static/msg_char_4e_latin_capital_letter_n.i4.inc.c" -}; - -u8 gMsgChar4FLatinCapitalLetterOTex[] = { -#include "textures/nes_font_static/msg_char_4f_latin_capital_letter_o.i4.inc.c" -}; - -u8 gMsgChar50LatinCapitalLetterPTex[] = { -#include "textures/nes_font_static/msg_char_50_latin_capital_letter_p.i4.inc.c" -}; - -u8 gMsgChar51LatinCapitalLetterQTex[] = { -#include "textures/nes_font_static/msg_char_51_latin_capital_letter_q.i4.inc.c" -}; - -u8 gMsgChar52LatinCapitalLetterRTex[] = { -#include "textures/nes_font_static/msg_char_52_latin_capital_letter_r.i4.inc.c" -}; - -u8 gMsgChar53LatinCapitalLetterSTex[] = { -#include "textures/nes_font_static/msg_char_53_latin_capital_letter_s.i4.inc.c" -}; - -u8 gMsgChar54LatinCapitalLetterTTex[] = { -#include "textures/nes_font_static/msg_char_54_latin_capital_letter_t.i4.inc.c" -}; - -u8 gMsgChar55LatinCapitalLetterUTex[] = { -#include "textures/nes_font_static/msg_char_55_latin_capital_letter_u.i4.inc.c" -}; - -u8 gMsgChar56LatinCapitalLetterVTex[] = { -#include "textures/nes_font_static/msg_char_56_latin_capital_letter_v.i4.inc.c" -}; - -u8 gMsgChar57LatinCapitalLetterWTex[] = { -#include "textures/nes_font_static/msg_char_57_latin_capital_letter_w.i4.inc.c" -}; - -u8 gMsgChar58LatinCapitalLetterXTex[] = { -#include "textures/nes_font_static/msg_char_58_latin_capital_letter_x.i4.inc.c" -}; - -u8 gMsgChar59LatinCapitalLetterYTex[] = { -#include "textures/nes_font_static/msg_char_59_latin_capital_letter_y.i4.inc.c" -}; - -u8 gMsgChar5ALatinCapitalLetterZTex[] = { -#include "textures/nes_font_static/msg_char_5a_latin_capital_letter_z.i4.inc.c" -}; - -u8 gMsgChar5BLeftSquareBracketTex[] = { -#include "textures/nes_font_static/msg_char_5b_left_square_bracket.i4.inc.c" -}; - -u8 gMsgChar5CYenSignTex[] = { -#include "textures/nes_font_static/msg_char_5c_yen_sign.i4.inc.c" -}; - -u8 gMsgChar5DRightSquareBracketTex[] = { -#include "textures/nes_font_static/msg_char_5d_right_square_bracket.i4.inc.c" -}; - -u8 gMsgChar5ECircumflexAccentTex[] = { -#include "textures/nes_font_static/msg_char_5e_circumflex_accent.i4.inc.c" -}; - -u8 gMsgChar5FLowLineTex[] = { -#include "textures/nes_font_static/msg_char_5f_low_line.i4.inc.c" -}; - -u8 gMsgChar60GraveAccentTex[] = { -#include "textures/nes_font_static/msg_char_60_grave_accent.i4.inc.c" -}; - -u8 gMsgChar61LatinSmallLetterATex[] = { -#include "textures/nes_font_static/msg_char_61_latin_small_letter_a.i4.inc.c" -}; - -u8 gMsgChar62LatinSmallLetterBTex[] = { -#include "textures/nes_font_static/msg_char_62_latin_small_letter_b.i4.inc.c" -}; - -u8 gMsgChar63LatinSmallLetterCTex[] = { -#include "textures/nes_font_static/msg_char_63_latin_small_letter_c.i4.inc.c" -}; - -u8 gMsgChar64LatinSmallLetterDTex[] = { -#include "textures/nes_font_static/msg_char_64_latin_small_letter_d.i4.inc.c" -}; - -u8 gMsgChar65LatinSmallLetterETex[] = { -#include "textures/nes_font_static/msg_char_65_latin_small_letter_e.i4.inc.c" -}; - -u8 gMsgChar66LatinSmallLetterFTex[] = { -#include "textures/nes_font_static/msg_char_66_latin_small_letter_f.i4.inc.c" -}; - -u8 gMsgChar67LatinSmallLetterGTex[] = { -#include "textures/nes_font_static/msg_char_67_latin_small_letter_g.i4.inc.c" -}; - -u8 gMsgChar68LatinSmallLetterHTex[] = { -#include "textures/nes_font_static/msg_char_68_latin_small_letter_h.i4.inc.c" -}; - -u8 gMsgChar69LatinSmallLetterITex[] = { -#include "textures/nes_font_static/msg_char_69_latin_small_letter_i.i4.inc.c" -}; - -u8 gMsgChar6ALatinSmallLetterJTex[] = { -#include "textures/nes_font_static/msg_char_6a_latin_small_letter_j.i4.inc.c" -}; - -u8 gMsgChar6BLatinSmallLetterKTex[] = { -#include "textures/nes_font_static/msg_char_6b_latin_small_letter_k.i4.inc.c" -}; - -u8 gMsgChar6CLatinSmallLetterLTex[] = { -#include "textures/nes_font_static/msg_char_6c_latin_small_letter_l.i4.inc.c" -}; - -u8 gMsgChar6DLatinSmallLetterMTex[] = { -#include "textures/nes_font_static/msg_char_6d_latin_small_letter_m.i4.inc.c" -}; - -u8 gMsgChar6ELatinSmallLetterNTex[] = { -#include "textures/nes_font_static/msg_char_6e_latin_small_letter_n.i4.inc.c" -}; - -u8 gMsgChar6FLatinSmallLetterOTex[] = { -#include "textures/nes_font_static/msg_char_6f_latin_small_letter_o.i4.inc.c" -}; - -u8 gMsgChar70LatinSmallLetterPTex[] = { -#include "textures/nes_font_static/msg_char_70_latin_small_letter_p.i4.inc.c" -}; - -u8 gMsgChar71LatinSmallLetterQTex[] = { -#include "textures/nes_font_static/msg_char_71_latin_small_letter_q.i4.inc.c" -}; - -u8 gMsgChar72LatinSmallLetterRTex[] = { -#include "textures/nes_font_static/msg_char_72_latin_small_letter_r.i4.inc.c" -}; - -u8 gMsgChar73LatinSmallLetterSTex[] = { -#include "textures/nes_font_static/msg_char_73_latin_small_letter_s.i4.inc.c" -}; - -u8 gMsgChar74LatinSmallLetterTTex[] = { -#include "textures/nes_font_static/msg_char_74_latin_small_letter_t.i4.inc.c" -}; - -u8 gMsgChar75LatinSmallLetterUTex[] = { -#include "textures/nes_font_static/msg_char_75_latin_small_letter_u.i4.inc.c" -}; - -u8 gMsgChar76LatinSmallLetterVTex[] = { -#include "textures/nes_font_static/msg_char_76_latin_small_letter_v.i4.inc.c" -}; - -u8 gMsgChar77LatinSmallLetterWTex[] = { -#include "textures/nes_font_static/msg_char_77_latin_small_letter_w.i4.inc.c" -}; - -u8 gMsgChar78LatinSmallLetterXTex[] = { -#include "textures/nes_font_static/msg_char_78_latin_small_letter_x.i4.inc.c" -}; - -u8 gMsgChar79LatinSmallLetterYTex[] = { -#include "textures/nes_font_static/msg_char_79_latin_small_letter_y.i4.inc.c" -}; - -u8 gMsgChar7ALatinSmallLetterZTex[] = { -#include "textures/nes_font_static/msg_char_7a_latin_small_letter_z.i4.inc.c" -}; - -u8 gMsgChar7BLeftCurlyBracketTex[] = { -#include "textures/nes_font_static/msg_char_7b_left_curly_bracket.i4.inc.c" -}; - -u8 gMsgChar7CVerticalLineTex[] = { -#include "textures/nes_font_static/msg_char_7c_vertical_line.i4.inc.c" -}; - -u8 gMsgChar7DRightCurlyBracketTex[] = { -#include "textures/nes_font_static/msg_char_7d_right_curly_bracket.i4.inc.c" -}; - -u8 gMsgChar7ETildeTex[] = { -#include "textures/nes_font_static/msg_char_7e_tilde.i4.inc.c" -}; - -u8 gMsgChar7FBlankTex[] = { -#include "textures/nes_font_static/msg_char_7f_blank.i4.inc.c" -}; - -u8 gMsgChar80LatinCapitalLetterAWithGraveTex[] = { -#include "textures/nes_font_static/msg_char_80_latin_capital_letter_a_with_grave.i4.inc.c" -}; - -u8 gMsgChar81LatinCapitalLetterIWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_81_latin_capital_letter_i_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar82LatinCapitalLetterAWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_82_latin_capital_letter_a_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar83LatinCapitalLetterAWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_83_latin_capital_letter_a_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar84LatinCapitalLetterCWithCedillaTex[] = { -#include "textures/nes_font_static/msg_char_84_latin_capital_letter_c_with_cedilla.i4.inc.c" -}; - -u8 gMsgChar85LatinCapitalLetterEWithGraveTex[] = { -#include "textures/nes_font_static/msg_char_85_latin_capital_letter_e_with_grave.i4.inc.c" -}; - -u8 gMsgChar86LatinCapitalLetterEWithAcuteTex[] = { -#include "textures/nes_font_static/msg_char_86_latin_capital_letter_e_with_acute.i4.inc.c" -}; - -u8 gMsgChar87LatinCapitalLetterEWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_87_latin_capital_letter_e_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar88LatinCapitalLetterEWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_88_latin_capital_letter_e_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar89LatinCapitalLetterIWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_89_latin_capital_letter_i_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar8ALatinCapitalLetterOWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_8a_latin_capital_letter_o_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar8BLatinCapitalLetterOWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_8b_latin_capital_letter_o_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar8CLatinCapitalLetterUWithGraveTex[] = { -#include "textures/nes_font_static/msg_char_8c_latin_capital_letter_u_with_grave.i4.inc.c" -}; - -u8 gMsgChar8DLatinCapitalLetterUWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_8d_latin_capital_letter_u_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar8ELatinCapitalLetterUWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_8e_latin_capital_letter_u_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar8FLatinSmallLetterSharpSTex[] = { -#include "textures/nes_font_static/msg_char_8f_latin_small_letter_sharp_s.i4.inc.c" -}; - -u8 gMsgChar90LatinSmallLetterAWithGraveTex[] = { -#include "textures/nes_font_static/msg_char_90_latin_small_letter_a_with_grave.i4.inc.c" -}; - -u8 gMsgChar91LatinSmallLetterAWithAcuteTex[] = { -#include "textures/nes_font_static/msg_char_91_latin_small_letter_a_with_acute.i4.inc.c" -}; - -u8 gMsgChar92LatinSmallLetterAWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_92_latin_small_letter_a_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar93LatinSmallLetterAWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_93_latin_small_letter_a_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar94LatinSmallLetterCWithCedillaTex[] = { -#include "textures/nes_font_static/msg_char_94_latin_small_letter_c_with_cedilla.i4.inc.c" -}; - -u8 gMsgChar95LatinSmallLetterEWithGraveTex[] = { -#include "textures/nes_font_static/msg_char_95_latin_small_letter_e_with_grave.i4.inc.c" -}; - -u8 gMsgChar96LatinSmallLetterEWithAcuteTex[] = { -#include "textures/nes_font_static/msg_char_96_latin_small_letter_e_with_acute.i4.inc.c" -}; - -u8 gMsgChar97LatinSmallLetterEWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_97_latin_small_letter_e_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar98LatinSmallLetterEWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_98_latin_small_letter_e_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar99LatinSmallLetterIWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_99_latin_small_letter_i_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar9ALatinSmallLetterOWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_9a_latin_small_letter_o_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar9BLatinSmallLetterOWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_9b_latin_small_letter_o_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar9CLatinSmallLetterUWithGraveTex[] = { -#include "textures/nes_font_static/msg_char_9c_latin_small_letter_u_with_grave.i4.inc.c" -}; - -u8 gMsgChar9DLatinSmallLetterUWithCircumflexTex[] = { -#include "textures/nes_font_static/msg_char_9d_latin_small_letter_u_with_circumflex.i4.inc.c" -}; - -u8 gMsgChar9ELatinSmallLetterUWithDiaeresisTex[] = { -#include "textures/nes_font_static/msg_char_9e_latin_small_letter_u_with_diaeresis.i4.inc.c" -}; - -u8 gMsgChar9FButtonATex[] = { -#include "textures/nes_font_static/msg_char_9f_button_a.i4.inc.c" -}; - -u8 gMsgCharA0ButtonBTex[] = { -#include "textures/nes_font_static/msg_char_a0_button_b.i4.inc.c" -}; - -u8 gMsgCharA1ButtonCTex[] = { -#include "textures/nes_font_static/msg_char_a1_button_c.i4.inc.c" -}; - -u8 gMsgCharA2ButtonLTex[] = { -#include "textures/nes_font_static/msg_char_a2_button_l.i4.inc.c" -}; - -u8 gMsgCharA3ButtonRTex[] = { -#include "textures/nes_font_static/msg_char_a3_button_r.i4.inc.c" -}; - -u8 gMsgCharA4ButtonZTex[] = { -#include "textures/nes_font_static/msg_char_a4_button_z.i4.inc.c" -}; - -u8 gMsgCharA5ButtonCUpTex[] = { -#include "textures/nes_font_static/msg_char_a5_button_c_up.i4.inc.c" -}; - -u8 gMsgCharA6ButtonCDownTex[] = { -#include "textures/nes_font_static/msg_char_a6_button_c_down.i4.inc.c" -}; - -u8 gMsgCharA7ButtonCLeftTex[] = { -#include "textures/nes_font_static/msg_char_a7_button_c_left.i4.inc.c" -}; - -u8 gMsgCharA8ButtonCRightTex[] = { -#include "textures/nes_font_static/msg_char_a8_button_c_right.i4.inc.c" -}; - -u8 gMsgCharA9ZTargetSignTex[] = { -#include "textures/nes_font_static/msg_char_a9_z_target_sign.i4.inc.c" -}; - -u8 gMsgCharAAControlStickTex[] = { -#include "textures/nes_font_static/msg_char_aa_control_stick.i4.inc.c" -}; - -u8 gMsgCharABControlPadTex[] = { -#ifndef RETAIL - #include "textures/nes_font_static/msg_char_ab_control_pad.i4.inc.c" -#else - #include "textures/nes_font_static/generated/msg_char_ab_control_pad.i4.inc.c" -#endif -}; - -// Additional chars - -u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c" -}; - -u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c" -}; - -u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c" -}; - -u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c" -}; - -u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c" -}; - -u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c" -}; - -u8 gMsgCharB2InvertedQuestionMarkTex[] = { -#include "textures/nes_font_static/generated/msg_char_b2_inverted_question_mark.i4.inc.c" -}; - -u8 gMsgCharB3InvertedExclamationMarkTex[] = { -#include "textures/nes_font_static/generated/msg_char_b3_inverted_exclamation_mark.i4.inc.c" -}; - -u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[] = { -#include "textures/nes_font_static/generated/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c" -}; - -u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[] = { -#include "textures/nes_font_static/generated/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c" -}; - -u8 gMsgCharB6LatinSmallLetterNWithTildeTex[] = { -#include "textures/nes_font_static/generated/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c" -}; - -u8 gMsgCharB7LatinCapitalLetterAWithTildeTex[] = { -#include "textures/nes_font_static/generated/msg_char_b7_latin_capital_letter_a_with_tilde.i4.inc.c" -}; - -u8 gMsgCharB8LatinCapitalLetterOWithTildeTex[] = { -#include "textures/nes_font_static/generated/msg_char_b8_latin_capital_letter_o_with_tilde.i4.inc.c" -}; - -u8 gMsgCharB9LatinSmallLetterAWithTildeTex[] = { -#include "textures/nes_font_static/generated/msg_char_b9_latin_small_letter_a_with_tilde.i4.inc.c" -}; - -u8 gMsgCharBALatinSmallLetterOWithTildeTex[] = { -#include "textures/nes_font_static/generated/msg_char_ba_latin_small_letter_o_with_tilde.i4.inc.c" -}; - -u8 gMsgCharBBLatinCapitalLetterAWithRingAbove[] = { -#include "textures/nes_font_static/generated/msg_char_bb_latin_capital_letter_a_with_ring_above.i4.inc.c" -}; - -u8 gMsgCharBCLatinSmallLetterAWithRingAbove[] = { -#include "textures/nes_font_static/generated/msg_char_bc_latin_small_letter_a_with_ring_above.i4.inc.c" -}; - -u8 _nes_font_staticSegmentRomLastSymbol = 0; \ No newline at end of file diff --git a/assets/ALL/textures/nes_font_static/nes_font_static.h b/assets/ALL/textures/nes_font_static/nes_font_static.h index fb568f1c6..c354414f0 100644 --- a/assets/ALL/textures/nes_font_static/nes_font_static.h +++ b/assets/ALL/textures/nes_font_static/nes_font_static.h @@ -1,327 +1,802 @@ #pragma once -extern u8 gMsgChar20SpaceTex[]; -extern u8 gMsgChar21ExclamationMarkTex[]; -extern u8 gMsgChar22QuotationMarkTex[]; -extern u8 gMsgChar23NumberSignTex[]; -extern u8 gMsgChar24DollarSignTex[]; -extern u8 gMsgChar25PercentSignTex[]; -extern u8 gMsgChar26AmpersandTex[]; -extern u8 gMsgChar27ApostropheTex[]; -extern u8 gMsgChar28LeftParenthesesTex[]; -extern u8 gMsgChar29RightParenthesesTex[]; -extern u8 gMsgChar2AAsteriskTex[]; -extern u8 gMsgChar2BPlusSignTex[]; -extern u8 gMsgChar2CCommaTex[]; -extern u8 gMsgChar2DHyphenMinusTex[]; -extern u8 gMsgChar2EFullStopTex[]; -extern u8 gMsgChar2FSolidusTex[]; -extern u8 gMsgChar30Digit0Tex[]; -extern u8 gMsgChar31Digit1Tex[]; -extern u8 gMsgChar32Digit2Tex[]; -extern u8 gMsgChar33Digit3Tex[]; -extern u8 gMsgChar34Digit4Tex[]; -extern u8 gMsgChar35Digit5Tex[]; -extern u8 gMsgChar36Digit6Tex[]; -extern u8 gMsgChar37Digit7Tex[]; -extern u8 gMsgChar38Digit8Tex[]; -extern u8 gMsgChar39Digit9Tex[]; -extern u8 gMsgChar3AColonTex[]; -extern u8 gMsgChar3BSemicolonTex[]; -extern u8 gMsgChar3CLessThanSignTex[]; -extern u8 gMsgChar3DEqualsSignTex[]; -extern u8 gMsgChar3EGreaterThanSignTex[]; -extern u8 gMsgChar3FQuestionMarkTex[]; -extern u8 gMsgChar40CommercialAtTex[]; -extern u8 gMsgChar41LatinCapitalLetterATex[]; -extern u8 gMsgChar42LatinCapitalLetterBTex[]; -extern u8 gMsgChar43LatinCapitalLetterCTex[]; -extern u8 gMsgChar44LatinCapitalLetterDTex[]; -extern u8 gMsgChar45LatinCapitalLetterETex[]; -extern u8 gMsgChar46LatinCapitalLetterFTex[]; -extern u8 gMsgChar47LatinCapitalLetterGTex[]; -extern u8 gMsgChar48LatinCapitalLetterHTex[]; -extern u8 gMsgChar49LatinCapitalLetterITex[]; -extern u8 gMsgChar4ALatinCapitalLetterJTex[]; -extern u8 gMsgChar4BLatinCapitalLetterKTex[]; -extern u8 gMsgChar4CLatinCapitalLetterLTex[]; -extern u8 gMsgChar4DLatinCapitalLetterMTex[]; -extern u8 gMsgChar4ELatinCapitalLetterNTex[]; -extern u8 gMsgChar4FLatinCapitalLetterOTex[]; -extern u8 gMsgChar50LatinCapitalLetterPTex[]; -extern u8 gMsgChar51LatinCapitalLetterQTex[]; -extern u8 gMsgChar52LatinCapitalLetterRTex[]; -extern u8 gMsgChar53LatinCapitalLetterSTex[]; -extern u8 gMsgChar54LatinCapitalLetterTTex[]; -extern u8 gMsgChar55LatinCapitalLetterUTex[]; -extern u8 gMsgChar56LatinCapitalLetterVTex[]; -extern u8 gMsgChar57LatinCapitalLetterWTex[]; -extern u8 gMsgChar58LatinCapitalLetterXTex[]; -extern u8 gMsgChar59LatinCapitalLetterYTex[]; -extern u8 gMsgChar5ALatinCapitalLetterZTex[]; -extern u8 gMsgChar5BLeftSquareBracketTex[]; -extern u8 gMsgChar5CYenSignTex[]; -extern u8 gMsgChar5DRightSquareBracketTex[]; -extern u8 gMsgChar5ECircumflexAccentTex[]; -extern u8 gMsgChar5FLowLineTex[]; -extern u8 gMsgChar60GraveAccentTex[]; -extern u8 gMsgChar61LatinSmallLetterATex[]; -extern u8 gMsgChar62LatinSmallLetterBTex[]; -extern u8 gMsgChar63LatinSmallLetterCTex[]; -extern u8 gMsgChar64LatinSmallLetterDTex[]; -extern u8 gMsgChar65LatinSmallLetterETex[]; -extern u8 gMsgChar66LatinSmallLetterFTex[]; -extern u8 gMsgChar67LatinSmallLetterGTex[]; -extern u8 gMsgChar68LatinSmallLetterHTex[]; -extern u8 gMsgChar69LatinSmallLetterITex[]; -extern u8 gMsgChar6ALatinSmallLetterJTex[]; -extern u8 gMsgChar6BLatinSmallLetterKTex[]; -extern u8 gMsgChar6CLatinSmallLetterLTex[]; -extern u8 gMsgChar6DLatinSmallLetterMTex[]; -extern u8 gMsgChar6ELatinSmallLetterNTex[]; -extern u8 gMsgChar6FLatinSmallLetterOTex[]; -extern u8 gMsgChar70LatinSmallLetterPTex[]; -extern u8 gMsgChar71LatinSmallLetterQTex[]; -extern u8 gMsgChar72LatinSmallLetterRTex[]; -extern u8 gMsgChar73LatinSmallLetterSTex[]; -extern u8 gMsgChar74LatinSmallLetterTTex[]; -extern u8 gMsgChar75LatinSmallLetterUTex[]; -extern u8 gMsgChar76LatinSmallLetterVTex[]; -extern u8 gMsgChar77LatinSmallLetterWTex[]; -extern u8 gMsgChar78LatinSmallLetterXTex[]; -extern u8 gMsgChar79LatinSmallLetterYTex[]; -extern u8 gMsgChar7ALatinSmallLetterZTex[]; -extern u8 gMsgChar7BLeftCurlyBracketTex[]; -extern u8 gMsgChar7CVerticalLineTex[]; -extern u8 gMsgChar7DRightCurlyBracketTex[]; -extern u8 gMsgChar7ETildeTex[]; -extern u8 gMsgChar7FBlankTex[]; -extern u8 gMsgChar80LatinCapitalLetterAWithGraveTex[]; -extern u8 gMsgChar81LatinCapitalLetterIWithCircumflexTex[]; -extern u8 gMsgChar82LatinCapitalLetterAWithCircumflexTex[]; -extern u8 gMsgChar83LatinCapitalLetterAWithDiaeresisTex[]; -extern u8 gMsgChar84LatinCapitalLetterCWithCedillaTex[]; -extern u8 gMsgChar85LatinCapitalLetterEWithGraveTex[]; -extern u8 gMsgChar86LatinCapitalLetterEWithAcuteTex[]; -extern u8 gMsgChar87LatinCapitalLetterEWithCircumflexTex[]; -extern u8 gMsgChar88LatinCapitalLetterEWithDiaeresisTex[]; -extern u8 gMsgChar89LatinCapitalLetterIWithDiaeresisTex[]; -extern u8 gMsgChar8ALatinCapitalLetterOWithCircumflexTex[]; -extern u8 gMsgChar8BLatinCapitalLetterOWithDiaeresisTex[]; -extern u8 gMsgChar8CLatinCapitalLetterUWithGraveTex[]; -extern u8 gMsgChar8DLatinCapitalLetterUWithCircumflexTex[]; -extern u8 gMsgChar8ELatinCapitalLetterUWithDiaeresisTex[]; -extern u8 gMsgChar8FLatinSmallLetterSharpSTex[]; -extern u8 gMsgChar90LatinSmallLetterAWithGraveTex[]; -extern u8 gMsgChar91LatinSmallLetterAWithAcuteTex[]; -extern u8 gMsgChar92LatinSmallLetterAWithCircumflexTex[]; -extern u8 gMsgChar93LatinSmallLetterAWithDiaeresisTex[]; -extern u8 gMsgChar94LatinSmallLetterCWithCedillaTex[]; -extern u8 gMsgChar95LatinSmallLetterEWithGraveTex[]; -extern u8 gMsgChar96LatinSmallLetterEWithAcuteTex[]; -extern u8 gMsgChar97LatinSmallLetterEWithCircumflexTex[]; -extern u8 gMsgChar98LatinSmallLetterEWithDiaeresisTex[]; -extern u8 gMsgChar99LatinSmallLetterIWithDiaeresisTex[]; -extern u8 gMsgChar9ALatinSmallLetterOWithCircumflexTex[]; -extern u8 gMsgChar9BLatinSmallLetterOWithDiaeresisTex[]; -extern u8 gMsgChar9CLatinSmallLetterUWithGraveTex[]; -extern u8 gMsgChar9DLatinSmallLetterUWithCircumflexTex[]; -extern u8 gMsgChar9ELatinSmallLetterUWithDiaeresisTex[]; -extern u8 gMsgChar9FButtonATex[]; -extern u8 gMsgCharA0ButtonBTex[]; -extern u8 gMsgCharA1ButtonCTex[]; -extern u8 gMsgCharA2ButtonLTex[]; -extern u8 gMsgCharA3ButtonRTex[]; -extern u8 gMsgCharA4ButtonZTex[]; -extern u8 gMsgCharA5ButtonCUpTex[]; -extern u8 gMsgCharA6ButtonCDownTex[]; -extern u8 gMsgCharA7ButtonCLeftTex[]; -extern u8 gMsgCharA8ButtonCRightTex[]; -extern u8 gMsgCharA9ZTargetSignTex[]; -extern u8 gMsgCharAAControlStickTex[]; -extern u8 gMsgCharABControlPadTex[]; - -// Additional chars - -extern u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[]; -extern u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[]; -extern u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[]; -extern u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[]; -extern u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[]; -extern u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[]; -extern u8 gMsgCharB2InvertedQuestionMarkTex[]; -extern u8 gMsgCharB3InvertedExclamationMarkTex[]; -extern u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[]; -extern u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[]; -extern u8 gMsgCharB6LatinSmallLetterNWithTildeTex[]; -extern u8 gMsgCharB7LatinCapitalLetterAWithTildeTex[]; -extern u8 gMsgCharB8LatinCapitalLetterOWithTildeTex[]; -extern u8 gMsgCharB9LatinSmallLetterAWithTildeTex[]; -extern u8 gMsgCharBALatinSmallLetterOWithTildeTex[]; -extern u8 gMsgCharBBLatinCapitalLetterAWithRingAbove[]; -extern u8 gMsgCharBCLatinSmallLetterAWithRingAbove[]; - -static void* nes_font_static_lut[] = { -gMsgChar20SpaceTex, -gMsgChar21ExclamationMarkTex, -gMsgChar22QuotationMarkTex, -gMsgChar23NumberSignTex, -gMsgChar24DollarSignTex, -gMsgChar25PercentSignTex, -gMsgChar26AmpersandTex, -gMsgChar27ApostropheTex, -gMsgChar28LeftParenthesesTex, -gMsgChar29RightParenthesesTex, -gMsgChar2AAsteriskTex, -gMsgChar2BPlusSignTex, -gMsgChar2CCommaTex, -gMsgChar2DHyphenMinusTex, -gMsgChar2EFullStopTex, -gMsgChar2FSolidusTex, -gMsgChar30Digit0Tex, -gMsgChar31Digit1Tex, -gMsgChar32Digit2Tex, -gMsgChar33Digit3Tex, -gMsgChar34Digit4Tex, -gMsgChar35Digit5Tex, -gMsgChar36Digit6Tex, -gMsgChar37Digit7Tex, -gMsgChar38Digit8Tex, -gMsgChar39Digit9Tex, -gMsgChar3AColonTex, -gMsgChar3BSemicolonTex, -gMsgChar3CLessThanSignTex, -gMsgChar3DEqualsSignTex, -gMsgChar3EGreaterThanSignTex, -gMsgChar3FQuestionMarkTex, -gMsgChar40CommercialAtTex, -gMsgChar41LatinCapitalLetterATex, -gMsgChar42LatinCapitalLetterBTex, -gMsgChar43LatinCapitalLetterCTex, -gMsgChar44LatinCapitalLetterDTex, -gMsgChar45LatinCapitalLetterETex, -gMsgChar46LatinCapitalLetterFTex, -gMsgChar47LatinCapitalLetterGTex, -gMsgChar48LatinCapitalLetterHTex, -gMsgChar49LatinCapitalLetterITex, -gMsgChar4ALatinCapitalLetterJTex, -gMsgChar4BLatinCapitalLetterKTex, -gMsgChar4CLatinCapitalLetterLTex, -gMsgChar4DLatinCapitalLetterMTex, -gMsgChar4ELatinCapitalLetterNTex, -gMsgChar4FLatinCapitalLetterOTex, -gMsgChar50LatinCapitalLetterPTex, -gMsgChar51LatinCapitalLetterQTex, -gMsgChar52LatinCapitalLetterRTex, -gMsgChar53LatinCapitalLetterSTex, -gMsgChar54LatinCapitalLetterTTex, -gMsgChar55LatinCapitalLetterUTex, -gMsgChar56LatinCapitalLetterVTex, -gMsgChar57LatinCapitalLetterWTex, -gMsgChar58LatinCapitalLetterXTex, -gMsgChar59LatinCapitalLetterYTex, -gMsgChar5ALatinCapitalLetterZTex, -gMsgChar5BLeftSquareBracketTex, -gMsgChar5CYenSignTex, -gMsgChar5DRightSquareBracketTex, -gMsgChar5ECircumflexAccentTex, -gMsgChar5FLowLineTex, -gMsgChar60GraveAccentTex, -gMsgChar61LatinSmallLetterATex, -gMsgChar62LatinSmallLetterBTex, -gMsgChar63LatinSmallLetterCTex, -gMsgChar64LatinSmallLetterDTex, -gMsgChar65LatinSmallLetterETex, -gMsgChar66LatinSmallLetterFTex, -gMsgChar67LatinSmallLetterGTex, -gMsgChar68LatinSmallLetterHTex, -gMsgChar69LatinSmallLetterITex, -gMsgChar6ALatinSmallLetterJTex, -gMsgChar6BLatinSmallLetterKTex, -gMsgChar6CLatinSmallLetterLTex, -gMsgChar6DLatinSmallLetterMTex, -gMsgChar6ELatinSmallLetterNTex, -gMsgChar6FLatinSmallLetterOTex, -gMsgChar70LatinSmallLetterPTex, -gMsgChar71LatinSmallLetterQTex, -gMsgChar72LatinSmallLetterRTex, -gMsgChar73LatinSmallLetterSTex, -gMsgChar74LatinSmallLetterTTex, -gMsgChar75LatinSmallLetterUTex, -gMsgChar76LatinSmallLetterVTex, -gMsgChar77LatinSmallLetterWTex, -gMsgChar78LatinSmallLetterXTex, -gMsgChar79LatinSmallLetterYTex, -gMsgChar7ALatinSmallLetterZTex, -gMsgChar7BLeftCurlyBracketTex, -gMsgChar7CVerticalLineTex, -gMsgChar7DRightCurlyBracketTex, -gMsgChar7ETildeTex, -gMsgChar7FBlankTex, -gMsgChar80LatinCapitalLetterAWithGraveTex, -gMsgChar81LatinCapitalLetterIWithCircumflexTex, -gMsgChar82LatinCapitalLetterAWithCircumflexTex, -gMsgChar83LatinCapitalLetterAWithDiaeresisTex, -gMsgChar84LatinCapitalLetterCWithCedillaTex, -gMsgChar85LatinCapitalLetterEWithGraveTex, -gMsgChar86LatinCapitalLetterEWithAcuteTex, -gMsgChar87LatinCapitalLetterEWithCircumflexTex, -gMsgChar88LatinCapitalLetterEWithDiaeresisTex, -gMsgChar89LatinCapitalLetterIWithDiaeresisTex, -gMsgChar8ALatinCapitalLetterOWithCircumflexTex, -gMsgChar8BLatinCapitalLetterOWithDiaeresisTex, -gMsgChar8CLatinCapitalLetterUWithGraveTex, -gMsgChar8DLatinCapitalLetterUWithCircumflexTex, -gMsgChar8ELatinCapitalLetterUWithDiaeresisTex, -gMsgChar8FLatinSmallLetterSharpSTex, -gMsgChar90LatinSmallLetterAWithGraveTex, -gMsgChar91LatinSmallLetterAWithAcuteTex, -gMsgChar92LatinSmallLetterAWithCircumflexTex, -gMsgChar93LatinSmallLetterAWithDiaeresisTex, -gMsgChar94LatinSmallLetterCWithCedillaTex, -gMsgChar95LatinSmallLetterEWithGraveTex, -gMsgChar96LatinSmallLetterEWithAcuteTex, -gMsgChar97LatinSmallLetterEWithCircumflexTex, -gMsgChar98LatinSmallLetterEWithDiaeresisTex, -gMsgChar99LatinSmallLetterIWithDiaeresisTex, -gMsgChar9ALatinSmallLetterOWithCircumflexTex, -gMsgChar9BLatinSmallLetterOWithDiaeresisTex, -gMsgChar9CLatinSmallLetterUWithGraveTex, -gMsgChar9DLatinSmallLetterUWithCircumflexTex, -gMsgChar9ELatinSmallLetterUWithDiaeresisTex, -gMsgChar9FButtonATex, -gMsgCharA0ButtonBTex, -gMsgCharA1ButtonCTex, -gMsgCharA2ButtonLTex, -gMsgCharA3ButtonRTex, -gMsgCharA4ButtonZTex, -gMsgCharA5ButtonCUpTex, -gMsgCharA6ButtonCDownTex, -gMsgCharA7ButtonCLeftTex, -gMsgCharA8ButtonCRightTex, -gMsgCharA9ZTargetSignTex, -gMsgCharAAControlStickTex, -gMsgCharABControlPadTex, // Added if not available - -// Additional chars -gMsgCharACLatinCapitalLetterIWithAcuteTex, -gMsgCharADLatinCapitalLetterOWithAcuteTex, -gMsgCharAELatinCapitalLetterUWithAcuteTex, -gMsgCharAFLatinSmallLetterIWithAcuteTex, -gMsgCharB0LatinSmallLetterOWithAcuteTex, -gMsgCharB1LatinSmallLetterUWithAcuteTex, -gMsgCharB2InvertedQuestionMarkTex, -gMsgCharB3InvertedExclamationMarkTex, -gMsgCharB4LatinCapitalLetterAWithAcuteTex, -gMsgCharB5LatinCapitalLetterNWithTildeTex, -gMsgCharB6LatinSmallLetterNWithTildeTex, -gMsgCharB7LatinCapitalLetterAWithTildeTex, -gMsgCharB8LatinCapitalLetterOWithTildeTex, -gMsgCharB9LatinSmallLetterAWithTildeTex, -gMsgCharBALatinSmallLetterOWithTildeTex, -gMsgCharBBLatinCapitalLetterAWithRingAbove, -gMsgCharBCLatinSmallLetterAWithRingAbove -}; - -extern u8 _nes_font_staticSegmentRomLastSymbol; -#define _nes_font_staticSegmentRomStart ((u8*)gMsgChar20SpaceTex) -#define _nes_font_staticSegmentRomEnd ((u8*)&_nes_font_staticSegmentRomLastSymbol) +extern u8 gMsgChar20SpaceTex[] = { +#include "textures/nes_font_static/msg_char_20_space.i4.inc.c" +}; + +extern u8 gMsgChar21ExclamationMarkTex[] = { +#include "textures/nes_font_static/msg_char_21_exclamation_mark.i4.inc.c" +}; + +extern u8 gMsgChar22QuotationMarkTex[] = { +#include "textures/nes_font_static/msg_char_22_quotation_mark.i4.inc.c" +}; + +extern u8 gMsgChar23NumberSignTex[] = { +#include "textures/nes_font_static/msg_char_23_number_sign.i4.inc.c" +}; + +extern u8 gMsgChar24DollarSignTex[] = { +#include "textures/nes_font_static/msg_char_24_dollar_sign.i4.inc.c" +}; + +extern u8 gMsgChar25PercentSignTex[] = { +#include "textures/nes_font_static/msg_char_25_percent_sign.i4.inc.c" +}; + +extern u8 gMsgChar26AmpersandTex[] = { +#include "textures/nes_font_static/msg_char_26_ampersand.i4.inc.c" +}; + +extern u8 gMsgChar27ApostropheTex[] = { +#include "textures/nes_font_static/msg_char_27_apostrophe.i4.inc.c" +}; + +extern u8 gMsgChar28LeftParenthesesTex[] = { +#include "textures/nes_font_static/msg_char_28_left_parentheses.i4.inc.c" +}; + +extern u8 gMsgChar29RightParenthesesTex[] = { +#include "textures/nes_font_static/msg_char_29_right_parentheses.i4.inc.c" +}; + +extern u8 gMsgChar2AAsteriskTex[] = { +#include "textures/nes_font_static/msg_char_2a_asterisk.i4.inc.c" +}; + +extern u8 gMsgChar2BPlusSignTex[] = { +#include "textures/nes_font_static/msg_char_2b_plus_sign.i4.inc.c" +}; + +extern u8 gMsgChar2CCommaTex[] = { +#include "textures/nes_font_static/msg_char_2c_comma.i4.inc.c" +}; + +extern u8 gMsgChar2DHyphenMinusTex[] = { +#include "textures/nes_font_static/msg_char_2d_hyphen_minus.i4.inc.c" +}; + +extern u8 gMsgChar2EFullStopTex[] = { +#include "textures/nes_font_static/msg_char_2e_full_stop.i4.inc.c" +}; + +extern u8 gMsgChar2FSolidusTex[] = { +#include "textures/nes_font_static/msg_char_2f_solidus.i4.inc.c" +}; + +extern u8 gMsgChar30Digit0Tex[] = { +#include "textures/nes_font_static/msg_char_30_digit_0.i4.inc.c" +}; + +extern u8 gMsgChar31Digit1Tex[] = { +#include "textures/nes_font_static/msg_char_31_digit_1.i4.inc.c" +}; + +extern u8 gMsgChar32Digit2Tex[] = { +#include "textures/nes_font_static/msg_char_32_digit_2.i4.inc.c" +}; + +extern u8 gMsgChar33Digit3Tex[] = { +#include "textures/nes_font_static/msg_char_33_digit_3.i4.inc.c" +}; + +extern u8 gMsgChar34Digit4Tex[] = { +#include "textures/nes_font_static/msg_char_34_digit_4.i4.inc.c" +}; + +extern u8 gMsgChar35Digit5Tex[] = { +#include "textures/nes_font_static/msg_char_35_digit_5.i4.inc.c" +}; + +extern u8 gMsgChar36Digit6Tex[] = { +#include "textures/nes_font_static/msg_char_36_digit_6.i4.inc.c" +}; + +extern u8 gMsgChar37Digit7Tex[] = { +#include "textures/nes_font_static/msg_char_37_digit_7.i4.inc.c" +}; + +extern u8 gMsgChar38Digit8Tex[] = { +#include "textures/nes_font_static/msg_char_38_digit_8.i4.inc.c" +}; + +extern u8 gMsgChar39Digit9Tex[] = { +#include "textures/nes_font_static/msg_char_39_digit_9.i4.inc.c" +}; + +extern u8 gMsgChar3AColonTex[] = { +#include "textures/nes_font_static/msg_char_3a_colon.i4.inc.c" +}; + +extern u8 gMsgChar3BSemicolonTex[] = { +#include "textures/nes_font_static/msg_char_3b_semicolon.i4.inc.c" +}; + +extern u8 gMsgChar3CLessThanSignTex[] = { +#include "textures/nes_font_static/msg_char_3c_less_than_sign.i4.inc.c" +}; + +extern u8 gMsgChar3DEqualsSignTex[] = { +#include "textures/nes_font_static/msg_char_3d_equals_sign.i4.inc.c" +}; + +extern u8 gMsgChar3EGreaterThanSignTex[] = { +#include "textures/nes_font_static/msg_char_3e_greater_than_sign.i4.inc.c" +}; + +extern u8 gMsgChar3FQuestionMarkTex[] = { +#include "textures/nes_font_static/msg_char_3f_question_mark.i4.inc.c" +}; + +extern u8 gMsgChar40CommercialAtTex[] = { +#include "textures/nes_font_static/msg_char_40_commercial_at.i4.inc.c" +}; + +extern u8 gMsgChar41LatinCapitalLetterATex[] = { +#include "textures/nes_font_static/msg_char_41_latin_capital_letter_a.i4.inc.c" +}; + +extern u8 gMsgChar42LatinCapitalLetterBTex[] = { +#include "textures/nes_font_static/msg_char_42_latin_capital_letter_b.i4.inc.c" +}; + +extern u8 gMsgChar43LatinCapitalLetterCTex[] = { +#include "textures/nes_font_static/msg_char_43_latin_capital_letter_c.i4.inc.c" +}; + +extern u8 gMsgChar44LatinCapitalLetterDTex[] = { +#include "textures/nes_font_static/msg_char_44_latin_capital_letter_d.i4.inc.c" +}; + +extern u8 gMsgChar45LatinCapitalLetterETex[] = { +#include "textures/nes_font_static/msg_char_45_latin_capital_letter_e.i4.inc.c" +}; + +extern u8 gMsgChar46LatinCapitalLetterFTex[] = { +#include "textures/nes_font_static/msg_char_46_latin_capital_letter_f.i4.inc.c" +}; + +extern u8 gMsgChar47LatinCapitalLetterGTex[] = { +#include "textures/nes_font_static/msg_char_47_latin_capital_letter_g.i4.inc.c" +}; + +extern u8 gMsgChar48LatinCapitalLetterHTex[] = { +#include "textures/nes_font_static/msg_char_48_latin_capital_letter_h.i4.inc.c" +}; + +extern u8 gMsgChar49LatinCapitalLetterITex[] = { +#include "textures/nes_font_static/msg_char_49_latin_capital_letter_i.i4.inc.c" +}; + +extern u8 gMsgChar4ALatinCapitalLetterJTex[] = { +#include "textures/nes_font_static/msg_char_4a_latin_capital_letter_j.i4.inc.c" +}; + +extern u8 gMsgChar4BLatinCapitalLetterKTex[] = { +#include "textures/nes_font_static/msg_char_4b_latin_capital_letter_k.i4.inc.c" +}; + +extern u8 gMsgChar4CLatinCapitalLetterLTex[] = { +#include "textures/nes_font_static/msg_char_4c_latin_capital_letter_l.i4.inc.c" +}; + +extern u8 gMsgChar4DLatinCapitalLetterMTex[] = { +#include "textures/nes_font_static/msg_char_4d_latin_capital_letter_m.i4.inc.c" +}; + +extern u8 gMsgChar4ELatinCapitalLetterNTex[] = { +#include "textures/nes_font_static/msg_char_4e_latin_capital_letter_n.i4.inc.c" +}; + +extern u8 gMsgChar4FLatinCapitalLetterOTex[] = { +#include "textures/nes_font_static/msg_char_4f_latin_capital_letter_o.i4.inc.c" +}; + +extern u8 gMsgChar50LatinCapitalLetterPTex[] = { +#include "textures/nes_font_static/msg_char_50_latin_capital_letter_p.i4.inc.c" +}; + +extern u8 gMsgChar51LatinCapitalLetterQTex[] = { +#include "textures/nes_font_static/msg_char_51_latin_capital_letter_q.i4.inc.c" +}; + +extern u8 gMsgChar52LatinCapitalLetterRTex[] = { +#include "textures/nes_font_static/msg_char_52_latin_capital_letter_r.i4.inc.c" +}; + +extern u8 gMsgChar53LatinCapitalLetterSTex[] = { +#include "textures/nes_font_static/msg_char_53_latin_capital_letter_s.i4.inc.c" +}; + +extern u8 gMsgChar54LatinCapitalLetterTTex[] = { +#include "textures/nes_font_static/msg_char_54_latin_capital_letter_t.i4.inc.c" +}; + +extern u8 gMsgChar55LatinCapitalLetterUTex[] = { +#include "textures/nes_font_static/msg_char_55_latin_capital_letter_u.i4.inc.c" +}; + +extern u8 gMsgChar56LatinCapitalLetterVTex[] = { +#include "textures/nes_font_static/msg_char_56_latin_capital_letter_v.i4.inc.c" +}; + +extern u8 gMsgChar57LatinCapitalLetterWTex[] = { +#include "textures/nes_font_static/msg_char_57_latin_capital_letter_w.i4.inc.c" +}; + +extern u8 gMsgChar58LatinCapitalLetterXTex[] = { +#include "textures/nes_font_static/msg_char_58_latin_capital_letter_x.i4.inc.c" +}; + +extern u8 gMsgChar59LatinCapitalLetterYTex[] = { +#include "textures/nes_font_static/msg_char_59_latin_capital_letter_y.i4.inc.c" +}; + +extern u8 gMsgChar5ALatinCapitalLetterZTex[] = { +#include "textures/nes_font_static/msg_char_5a_latin_capital_letter_z.i4.inc.c" +}; + +extern u8 gMsgChar5BLeftSquareBracketTex[] = { +#include "textures/nes_font_static/msg_char_5b_left_square_bracket.i4.inc.c" +}; + +extern u8 gMsgChar5CYenSignTex[] = { +#include "textures/nes_font_static/msg_char_5c_yen_sign.i4.inc.c" +}; + +extern u8 gMsgChar5DRightSquareBracketTex[] = { +#include "textures/nes_font_static/msg_char_5d_right_square_bracket.i4.inc.c" +}; + +extern u8 gMsgChar5ECircumflexAccentTex[] = { +#include "textures/nes_font_static/msg_char_5e_circumflex_accent.i4.inc.c" +}; + +extern u8 gMsgChar5FLowLineTex[] = { +#include "textures/nes_font_static/msg_char_5f_low_line.i4.inc.c" +}; + +extern u8 gMsgChar60GraveAccentTex[] = { +#include "textures/nes_font_static/msg_char_60_grave_accent.i4.inc.c" +}; + +extern u8 gMsgChar61LatinSmallLetterATex[] = { +#include "textures/nes_font_static/msg_char_61_latin_small_letter_a.i4.inc.c" +}; + +extern u8 gMsgChar62LatinSmallLetterBTex[] = { +#include "textures/nes_font_static/msg_char_62_latin_small_letter_b.i4.inc.c" +}; + +extern u8 gMsgChar63LatinSmallLetterCTex[] = { +#include "textures/nes_font_static/msg_char_63_latin_small_letter_c.i4.inc.c" +}; + +extern u8 gMsgChar64LatinSmallLetterDTex[] = { +#include "textures/nes_font_static/msg_char_64_latin_small_letter_d.i4.inc.c" +}; + +extern u8 gMsgChar65LatinSmallLetterETex[] = { +#include "textures/nes_font_static/msg_char_65_latin_small_letter_e.i4.inc.c" +}; + +extern u8 gMsgChar66LatinSmallLetterFTex[] = { +#include "textures/nes_font_static/msg_char_66_latin_small_letter_f.i4.inc.c" +}; + +extern u8 gMsgChar67LatinSmallLetterGTex[] = { +#include "textures/nes_font_static/msg_char_67_latin_small_letter_g.i4.inc.c" +}; + +extern u8 gMsgChar68LatinSmallLetterHTex[] = { +#include "textures/nes_font_static/msg_char_68_latin_small_letter_h.i4.inc.c" +}; + +extern u8 gMsgChar69LatinSmallLetterITex[] = { +#include "textures/nes_font_static/msg_char_69_latin_small_letter_i.i4.inc.c" +}; + +extern u8 gMsgChar6ALatinSmallLetterJTex[] = { +#include "textures/nes_font_static/msg_char_6a_latin_small_letter_j.i4.inc.c" +}; + +extern u8 gMsgChar6BLatinSmallLetterKTex[] = { +#include "textures/nes_font_static/msg_char_6b_latin_small_letter_k.i4.inc.c" +}; + +extern u8 gMsgChar6CLatinSmallLetterLTex[] = { +#include "textures/nes_font_static/msg_char_6c_latin_small_letter_l.i4.inc.c" +}; + +extern u8 gMsgChar6DLatinSmallLetterMTex[] = { +#include "textures/nes_font_static/msg_char_6d_latin_small_letter_m.i4.inc.c" +}; + +extern u8 gMsgChar6ELatinSmallLetterNTex[] = { +#include "textures/nes_font_static/msg_char_6e_latin_small_letter_n.i4.inc.c" +}; + +extern u8 gMsgChar6FLatinSmallLetterOTex[] = { +#include "textures/nes_font_static/msg_char_6f_latin_small_letter_o.i4.inc.c" +}; + +extern u8 gMsgChar70LatinSmallLetterPTex[] = { +#include "textures/nes_font_static/msg_char_70_latin_small_letter_p.i4.inc.c" +}; + +extern u8 gMsgChar71LatinSmallLetterQTex[] = { +#include "textures/nes_font_static/msg_char_71_latin_small_letter_q.i4.inc.c" +}; + +extern u8 gMsgChar72LatinSmallLetterRTex[] = { +#include "textures/nes_font_static/msg_char_72_latin_small_letter_r.i4.inc.c" +}; + +extern u8 gMsgChar73LatinSmallLetterSTex[] = { +#include "textures/nes_font_static/msg_char_73_latin_small_letter_s.i4.inc.c" +}; + +extern u8 gMsgChar74LatinSmallLetterTTex[] = { +#include "textures/nes_font_static/msg_char_74_latin_small_letter_t.i4.inc.c" +}; + +extern u8 gMsgChar75LatinSmallLetterUTex[] = { +#include "textures/nes_font_static/msg_char_75_latin_small_letter_u.i4.inc.c" +}; + +extern u8 gMsgChar76LatinSmallLetterVTex[] = { +#include "textures/nes_font_static/msg_char_76_latin_small_letter_v.i4.inc.c" +}; + +extern u8 gMsgChar77LatinSmallLetterWTex[] = { +#include "textures/nes_font_static/msg_char_77_latin_small_letter_w.i4.inc.c" +}; + +extern u8 gMsgChar78LatinSmallLetterXTex[] = { +#include "textures/nes_font_static/msg_char_78_latin_small_letter_x.i4.inc.c" +}; + +extern u8 gMsgChar79LatinSmallLetterYTex[] = { +#include "textures/nes_font_static/msg_char_79_latin_small_letter_y.i4.inc.c" +}; + +extern u8 gMsgChar7ALatinSmallLetterZTex[] = { +#include "textures/nes_font_static/msg_char_7a_latin_small_letter_z.i4.inc.c" +}; + +extern u8 gMsgChar7BLeftCurlyBracketTex[] = { +#include "textures/nes_font_static/msg_char_7b_left_curly_bracket.i4.inc.c" +}; + +extern u8 gMsgChar7CVerticalLineTex[] = { +#include "textures/nes_font_static/msg_char_7c_vertical_line.i4.inc.c" +}; + +extern u8 gMsgChar7DRightCurlyBracketTex[] = { +#include "textures/nes_font_static/msg_char_7d_right_curly_bracket.i4.inc.c" +}; + +extern u8 gMsgChar7ETildeTex[] = { +#include "textures/nes_font_static/msg_char_7e_tilde.i4.inc.c" +}; + +extern u8 gMsgChar7FBlankTex[] = { +#include "textures/nes_font_static/msg_char_7f_blank.i4.inc.c" +}; + +extern u8 gMsgChar80LatinCapitalLetterAWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_80_latin_capital_letter_a_with_grave.i4.inc.c" +}; + +extern u8 gMsgChar81LatinCapitalLetterIWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_81_latin_capital_letter_i_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar82LatinCapitalLetterAWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_82_latin_capital_letter_a_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar83LatinCapitalLetterAWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_83_latin_capital_letter_a_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar84LatinCapitalLetterCWithCedillaTex[] = { +#include "textures/nes_font_static/msg_char_84_latin_capital_letter_c_with_cedilla.i4.inc.c" +}; + +extern u8 gMsgChar85LatinCapitalLetterEWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_85_latin_capital_letter_e_with_grave.i4.inc.c" +}; + +extern u8 gMsgChar86LatinCapitalLetterEWithAcuteTex[] = { +#include "textures/nes_font_static/msg_char_86_latin_capital_letter_e_with_acute.i4.inc.c" +}; + +extern u8 gMsgChar87LatinCapitalLetterEWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_87_latin_capital_letter_e_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar88LatinCapitalLetterEWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_88_latin_capital_letter_e_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar89LatinCapitalLetterIWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_89_latin_capital_letter_i_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar8ALatinCapitalLetterOWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_8a_latin_capital_letter_o_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar8BLatinCapitalLetterOWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_8b_latin_capital_letter_o_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar8CLatinCapitalLetterUWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_8c_latin_capital_letter_u_with_grave.i4.inc.c" +}; + +extern u8 gMsgChar8DLatinCapitalLetterUWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_8d_latin_capital_letter_u_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar8ELatinCapitalLetterUWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_8e_latin_capital_letter_u_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar8FLatinSmallLetterSharpSTex[] = { +#include "textures/nes_font_static/msg_char_8f_latin_small_letter_sharp_s.i4.inc.c" +}; + +extern u8 gMsgChar90LatinSmallLetterAWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_90_latin_small_letter_a_with_grave.i4.inc.c" +}; + +extern u8 gMsgChar91LatinSmallLetterAWithAcuteTex[] = { +#include "textures/nes_font_static/msg_char_91_latin_small_letter_a_with_acute.i4.inc.c" +}; + +extern u8 gMsgChar92LatinSmallLetterAWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_92_latin_small_letter_a_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar93LatinSmallLetterAWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_93_latin_small_letter_a_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar94LatinSmallLetterCWithCedillaTex[] = { +#include "textures/nes_font_static/msg_char_94_latin_small_letter_c_with_cedilla.i4.inc.c" +}; + +extern u8 gMsgChar95LatinSmallLetterEWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_95_latin_small_letter_e_with_grave.i4.inc.c" +}; + +extern u8 gMsgChar96LatinSmallLetterEWithAcuteTex[] = { +#include "textures/nes_font_static/msg_char_96_latin_small_letter_e_with_acute.i4.inc.c" +}; + +extern u8 gMsgChar97LatinSmallLetterEWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_97_latin_small_letter_e_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar98LatinSmallLetterEWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_98_latin_small_letter_e_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar99LatinSmallLetterIWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_99_latin_small_letter_i_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar9ALatinSmallLetterOWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_9a_latin_small_letter_o_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar9BLatinSmallLetterOWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_9b_latin_small_letter_o_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar9CLatinSmallLetterUWithGraveTex[] = { +#include "textures/nes_font_static/msg_char_9c_latin_small_letter_u_with_grave.i4.inc.c" +}; + +extern u8 gMsgChar9DLatinSmallLetterUWithCircumflexTex[] = { +#include "textures/nes_font_static/msg_char_9d_latin_small_letter_u_with_circumflex.i4.inc.c" +}; + +extern u8 gMsgChar9ELatinSmallLetterUWithDiaeresisTex[] = { +#include "textures/nes_font_static/msg_char_9e_latin_small_letter_u_with_diaeresis.i4.inc.c" +}; + +extern u8 gMsgChar9FButtonATex[] = { +#include "textures/nes_font_static/msg_char_9f_button_a.i4.inc.c" +}; + +extern u8 gMsgCharA0ButtonBTex[] = { +#include "textures/nes_font_static/msg_char_a0_button_b.i4.inc.c" +}; + +extern u8 gMsgCharA1ButtonCTex[] = { +#include "textures/nes_font_static/msg_char_a1_button_c.i4.inc.c" +}; + +extern u8 gMsgCharA2ButtonLTex[] = { +#include "textures/nes_font_static/msg_char_a2_button_l.i4.inc.c" +}; + +extern u8 gMsgCharA3ButtonRTex[] = { +#include "textures/nes_font_static/msg_char_a3_button_r.i4.inc.c" +}; + +extern u8 gMsgCharA4ButtonZTex[] = { +#include "textures/nes_font_static/msg_char_a4_button_z.i4.inc.c" +}; + +extern u8 gMsgCharA5ButtonCUpTex[] = { +#include "textures/nes_font_static/msg_char_a5_button_c_up.i4.inc.c" +}; + +extern u8 gMsgCharA6ButtonCDownTex[] = { +#include "textures/nes_font_static/msg_char_a6_button_c_down.i4.inc.c" +}; + +extern u8 gMsgCharA7ButtonCLeftTex[] = { +#include "textures/nes_font_static/msg_char_a7_button_c_left.i4.inc.c" +}; + +extern u8 gMsgCharA8ButtonCRightTex[] = { +#include "textures/nes_font_static/msg_char_a8_button_c_right.i4.inc.c" +}; + +extern u8 gMsgCharA9ZTargetSignTex[] = { +#include "textures/nes_font_static/msg_char_a9_z_target_sign.i4.inc.c" +}; + +extern u8 gMsgCharAAControlStickTex[] = { +#include "textures/nes_font_static/msg_char_aa_control_stick.i4.inc.c" +}; + +extern u8 gMsgCharABControlPadTex[] = { +#ifndef RETAIL +#include "textures/nes_font_static/msg_char_ab_control_pad.i4.inc.c" +#else +#include "textures/nes_font_static/generated/msg_char_ab_control_pad.i4.inc.c" +#endif +}; + +/* Additional chars */ +extern u8 gMsgCharACLatinCapitalLetterIWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_ac_latin_capital_letter_i_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharADLatinCapitalLetterOWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_ad_latin_capital_letter_o_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharAELatinCapitalLetterUWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_ae_latin_capital_letter_u_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharAFLatinSmallLetterIWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_af_latin_small_letter_i_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharB0LatinSmallLetterOWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_b0_latin_small_letter_o_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharB1LatinSmallLetterUWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_b1_latin_small_letter_u_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharB2InvertedQuestionMarkTex[] = { +#include "textures/nes_font_static/generated/msg_char_b2_inverted_question_mark.i4.inc.c" +}; + +extern u8 gMsgCharB3InvertedExclamationMarkTex[] = { +#include "textures/nes_font_static/generated/msg_char_b3_inverted_exclamation_mark.i4.inc.c" +}; + +extern u8 gMsgCharB4LatinCapitalLetterAWithAcuteTex[] = { +#include "textures/nes_font_static/generated/msg_char_b4_latin_capital_letter_a_with_acute.i4.inc.c" +}; + +extern u8 gMsgCharB5LatinCapitalLetterNWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b5_latin_capital_letter_n_with_tilde.i4.inc.c" +}; + +extern u8 gMsgCharB6LatinSmallLetterNWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b6_latin_small_letter_n_with_tilde.i4.inc.c" +}; + +extern u8 gMsgCharB7LatinCapitalLetterAWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b7_latin_capital_letter_a_with_tilde.i4.inc.c" +}; + +extern u8 gMsgCharB8LatinCapitalLetterOWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b8_latin_capital_letter_o_with_tilde.i4.inc.c" +}; + +extern u8 gMsgCharB9LatinSmallLetterAWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_b9_latin_small_letter_a_with_tilde.i4.inc.c" +}; + +extern u8 gMsgCharBALatinSmallLetterOWithTildeTex[] = { +#include "textures/nes_font_static/generated/msg_char_ba_latin_small_letter_o_with_tilde.i4.inc.c" +}; + +extern u8 gMsgCharBBLatinCapitalLetterAWithRingAbove[] = { +#include "textures/nes_font_static/generated/msg_char_bb_latin_capital_letter_a_with_ring_above.i4.inc.c" +}; + +extern u8 gMsgCharBCLatinSmallLetterAWithRingAbove[] = { +#include "textures/nes_font_static/generated/msg_char_bc_latin_small_letter_a_with_ring_above.i4.inc.c" +}; + +struct CharInfo { + wchar_t code; + f32 width; + void* tex; +}; + +static CharInfo font_static_lut[] = { + {L' ', 8.0f, gMsgChar20SpaceTex}, + {L'!', 8.0f, gMsgChar21ExclamationMarkTex}, + {L'"', 6.0f, gMsgChar22QuotationMarkTex}, + {L'#', 9.0f, gMsgChar23NumberSignTex}, + {L'$', 9.0f, gMsgChar24DollarSignTex}, + {L'%', 14.0f, gMsgChar25PercentSignTex}, + {L'&', 12.0f, gMsgChar26AmpersandTex}, + {L'\'', 3.0f, gMsgChar27ApostropheTex}, + {L'(', 7.0f, gMsgChar28LeftParenthesesTex}, + {L')', 7.0f, gMsgChar29RightParenthesesTex}, + {L'*', 7.0f, gMsgChar2AAsteriskTex}, + {L'+', 9.0f, gMsgChar2BPlusSignTex}, + {L',', 4.0f, gMsgChar2CCommaTex}, + {L'-', 6.0f, gMsgChar2DHyphenMinusTex}, + {L'.', 4.0f, gMsgChar2EFullStopTex}, + {L'/', 9.0f, gMsgChar2FSolidusTex}, + {L'0', 10.0f, gMsgChar30Digit0Tex}, + {L'1', 5.0f, gMsgChar31Digit1Tex}, + {L'2', 9.0f, gMsgChar32Digit2Tex}, + {L'3', 9.0f, gMsgChar33Digit3Tex}, + {L'4', 10.0f, gMsgChar34Digit4Tex}, + {L'5', 9.0f, gMsgChar35Digit5Tex}, + {L'6', 9.0f, gMsgChar36Digit6Tex}, + {L'7', 9.0f, gMsgChar37Digit7Tex}, + {L'8', 9.0f, gMsgChar38Digit8Tex}, + {L'9', 9.0f, gMsgChar39Digit9Tex}, + {L':', 6.0f, gMsgChar3AColonTex}, + {L';', 6.0f, gMsgChar3BSemicolonTex}, + {L'<', 9.0f, gMsgChar3CLessThanSignTex}, + {L'=', 11.0f, gMsgChar3DEqualsSignTex}, + {L'>', 9.0f, gMsgChar3EGreaterThanSignTex}, + {L'?', 11.0f, gMsgChar3FQuestionMarkTex}, + {L'@', 13.0f, gMsgChar40CommercialAtTex}, + {L'A', 12.0f, gMsgChar41LatinCapitalLetterATex}, + {L'B', 9.0f, gMsgChar42LatinCapitalLetterBTex}, + {L'C', 11.0f, gMsgChar43LatinCapitalLetterCTex}, + {L'D', 11.0f, gMsgChar44LatinCapitalLetterDTex}, + {L'E', 8.0f, gMsgChar45LatinCapitalLetterETex}, + {L'F', 8.0f, gMsgChar46LatinCapitalLetterFTex}, + {L'G', 12.0f, gMsgChar47LatinCapitalLetterGTex}, + {L'H', 10.0f, gMsgChar48LatinCapitalLetterHTex}, + {L'I', 4.0f, gMsgChar49LatinCapitalLetterITex}, + {L'J', 8.0f, gMsgChar4ALatinCapitalLetterJTex}, + {L'K', 10.0f, gMsgChar4BLatinCapitalLetterKTex}, + {L'L', 8.0f, gMsgChar4CLatinCapitalLetterLTex}, + {L'M', 13.0f, gMsgChar4DLatinCapitalLetterMTex}, + {L'N', 11.0f, gMsgChar4ELatinCapitalLetterNTex}, + {L'O', 13.0f, gMsgChar4FLatinCapitalLetterOTex}, + {L'P', 9.0f, gMsgChar50LatinCapitalLetterPTex}, + {L'Q', 13.0f, gMsgChar51LatinCapitalLetterQTex}, + {L'R', 10.0f, gMsgChar52LatinCapitalLetterRTex}, + {L'S', 10.0f, gMsgChar53LatinCapitalLetterSTex}, + {L'T', 9.0f, gMsgChar54LatinCapitalLetterTTex}, + {L'U', 10.0f, gMsgChar55LatinCapitalLetterUTex}, + {L'V', 11.0f, gMsgChar56LatinCapitalLetterVTex}, + {L'W', 15.0f, gMsgChar57LatinCapitalLetterWTex}, + {L'X', 11.0f, gMsgChar58LatinCapitalLetterXTex}, + {L'Y', 10.0f, gMsgChar59LatinCapitalLetterYTex}, + {L'Z', 10.0f, gMsgChar5ALatinCapitalLetterZTex}, + {L'[', 7.0f, gMsgChar5BLeftSquareBracketTex}, + {L'\\', 10.0f, gMsgChar5CYenSignTex}, + {L']', 7.0f, gMsgChar5DRightSquareBracketTex}, + {L'^', 10.0f, gMsgChar5ECircumflexAccentTex}, + {L'_', 9.0f, gMsgChar5FLowLineTex}, + {L'`', 5.0f, gMsgChar60GraveAccentTex}, + {L'a', 8.0f, gMsgChar61LatinSmallLetterATex}, + {L'b', 9.0f, gMsgChar62LatinSmallLetterBTex}, + {L'c', 8.0f, gMsgChar63LatinSmallLetterCTex}, + {L'd', 9.0f, gMsgChar64LatinSmallLetterDTex}, + {L'e', 9.0f, gMsgChar65LatinSmallLetterETex}, + {L'f', 6.0f, gMsgChar66LatinSmallLetterFTex}, + {L'g', 9.0f, gMsgChar67LatinSmallLetterGTex}, + {L'h', 8.0f, gMsgChar68LatinSmallLetterHTex}, + {L'i', 4.0f, gMsgChar69LatinSmallLetterITex}, + {L'j', 6.0f, gMsgChar6ALatinSmallLetterJTex}, + {L'k', 8.0f, gMsgChar6BLatinSmallLetterKTex}, + {L'l', 4.0f, gMsgChar6CLatinSmallLetterLTex}, + {L'm', 12.0f, gMsgChar6DLatinSmallLetterMTex}, + {L'n', 9.0f, gMsgChar6ELatinSmallLetterNTex}, + {L'o', 9.0f, gMsgChar6FLatinSmallLetterOTex}, + {L'p', 9.0f, gMsgChar70LatinSmallLetterPTex}, + {L'q', 9.0f, gMsgChar71LatinSmallLetterQTex}, + {L'r', 7.0f, gMsgChar72LatinSmallLetterRTex}, + {L's', 8.0f, gMsgChar73LatinSmallLetterSTex}, + {L't', 7.0f, gMsgChar74LatinSmallLetterTTex}, + {L'u', 8.0f, gMsgChar75LatinSmallLetterUTex}, + {L'v', 9.0f, gMsgChar76LatinSmallLetterVTex}, + {L'w', 12.0f, gMsgChar77LatinSmallLetterWTex}, + {L'x', 8.0f, gMsgChar78LatinSmallLetterXTex}, + {L'y', 9.0f, gMsgChar79LatinSmallLetterYTex}, + {L'z', 8.0f, gMsgChar7ALatinSmallLetterZTex}, + {L'{', 7.0f, gMsgChar7BLeftCurlyBracketTex}, + {L'|', 5.0f, gMsgChar7CVerticalLineTex}, + {L'}', 7.0f, gMsgChar7DRightCurlyBracketTex}, + {L'~', 10.0f, gMsgChar7ETildeTex}, + + {L'\x7f', 10.0f, gMsgChar7FBlankTex}, // ‾ + {L'\x80', 12.0f, gMsgChar80LatinCapitalLetterAWithGraveTex}, // À + {L'\x81', 6.0f, gMsgChar81LatinCapitalLetterIWithCircumflexTex}, // î + {L'\x82', 12.0f, gMsgChar82LatinCapitalLetterAWithCircumflexTex}, // Â + {L'\x83', 12.0f, gMsgChar83LatinCapitalLetterAWithDiaeresisTex}, // Ä + {L'\x84', 11.0f, gMsgChar84LatinCapitalLetterCWithCedillaTex}, // Ç + {L'\x85', 8.0f, gMsgChar85LatinCapitalLetterEWithGraveTex}, // È + {L'\x86', 8.0f, gMsgChar86LatinCapitalLetterEWithAcuteTex}, // É + {L'\x87', 8.0f, gMsgChar87LatinCapitalLetterEWithCircumflexTex}, // Ê + {L'\x88', 6.0f, gMsgChar88LatinCapitalLetterEWithDiaeresisTex}, // Ë + {L'\x89', 6.0f, gMsgChar89LatinCapitalLetterIWithDiaeresisTex}, // Ï + {L'\x8a', 13.0f, gMsgChar8ALatinCapitalLetterOWithCircumflexTex}, // Ô + {L'\x8b', 13.0f, gMsgChar8BLatinCapitalLetterOWithDiaeresisTex}, // Ö + {L'\x8c', 10.0f, gMsgChar8CLatinCapitalLetterUWithGraveTex}, // Ù + {L'\x8d', 10.0f, gMsgChar8DLatinCapitalLetterUWithCircumflexTex}, // Û + {L'\x8e', 10.0f, gMsgChar8ELatinCapitalLetterUWithDiaeresisTex}, // Ü + {L'\x8f', 9.0f, gMsgChar8FLatinSmallLetterSharpSTex}, // ß + {L'\x90', 8.0f, gMsgChar90LatinSmallLetterAWithGraveTex}, // à + {L'\x91', 8.0f, gMsgChar91LatinSmallLetterAWithAcuteTex}, // á + {L'\x92', 8.0f, gMsgChar92LatinSmallLetterAWithCircumflexTex}, // â + {L'\x93', 8.0f, gMsgChar93LatinSmallLetterAWithDiaeresisTex}, // ä + {L'\x94', 8.0f, gMsgChar94LatinSmallLetterCWithCedillaTex}, // ç + {L'\x95', 9.0f, gMsgChar95LatinSmallLetterEWithGraveTex}, // è + {L'\x96', 9.0f, gMsgChar96LatinSmallLetterEWithAcuteTex}, // é + {L'\x97', 9.0f, gMsgChar97LatinSmallLetterEWithCircumflexTex}, // ê + {L'\x98', 9.0f, gMsgChar98LatinSmallLetterEWithDiaeresisTex}, // ë + {L'\x99', 6.0f, gMsgChar99LatinSmallLetterIWithDiaeresisTex}, // ï + {L'\x9a', 9.0f, gMsgChar9ALatinSmallLetterOWithCircumflexTex}, // ô + {L'\x9b', 9.0f, gMsgChar9BLatinSmallLetterOWithDiaeresisTex}, // ö + {L'\x9c', 9.0f, gMsgChar9CLatinSmallLetterUWithGraveTex}, // ù + {L'\x9d', 9.0f, gMsgChar9DLatinSmallLetterUWithCircumflexTex}, // û + {L'\x9e', 9.0f, gMsgChar9ELatinSmallLetterUWithDiaeresisTex}, // ü + + {L'\x9f', 14.0f, gMsgChar9FButtonATex}, // [A] + {L'\xa0', 14.0f, gMsgCharA0ButtonBTex}, // [B] + {L'\xa1', 14.0f, gMsgCharA1ButtonCTex}, // [C] + {L'\xa2', 14.0f, gMsgCharA2ButtonLTex}, // [L] + {L'\xa3', 14.0f, gMsgCharA3ButtonRTex}, // [R] + {L'\xa4', 14.0f, gMsgCharA4ButtonZTex}, // [Z] + {L'\xa5', 14.0f, gMsgCharA5ButtonCUpTex}, // [C-Up] + {L'\xa6', 14.0f, gMsgCharA6ButtonCDownTex}, // [C-Down] + {L'\xa7', 14.0f, gMsgCharA7ButtonCLeftTex}, // [C-Left] + {L'\xa8', 14.0f, gMsgCharA8ButtonCRightTex},// [C-Right] + {L'\xa9', 14.0f, gMsgCharA9ZTargetSignTex}, // ▼ + {L'\xaa', 14.0f, gMsgCharAAControlStickTex},// [Control-Pad] + {L'\xab', 14.0f, gMsgCharABControlPadTex}, // [D-Pad] + + {L'\xac', 4.0f, gMsgCharACLatinCapitalLetterIWithAcuteTex}, // Í + {L'\xad', 13.0f, gMsgCharADLatinCapitalLetterOWithAcuteTex}, // Ó + {L'\xae', 10.0f, gMsgCharAELatinCapitalLetterUWithAcuteTex}, // Ú + {L'\xaf', 4.0f, gMsgCharAFLatinSmallLetterIWithAcuteTex}, // í + {L'\xb0', 9.0f, gMsgCharB0LatinSmallLetterOWithAcuteTex}, // ó + {L'\xb1', 9.0f, gMsgCharB1LatinSmallLetterUWithAcuteTex}, // ú + {L'\xb2', 11.0f, gMsgCharB2InvertedQuestionMarkTex}, // ¿ + {L'\xb3', 8.0f, gMsgCharB3InvertedExclamationMarkTex}, // ¡ + {L'\xb4', 12.0f, gMsgCharB4LatinCapitalLetterAWithAcuteTex}, // Á + {L'\xb5', 11.0f, gMsgCharB5LatinCapitalLetterNWithTildeTex}, // Ñ + {L'\xb6', 9.0f, gMsgCharB6LatinSmallLetterNWithTildeTex}, // ñ + {L'\xb7', 12.0f, gMsgCharB7LatinCapitalLetterAWithTildeTex}, // Ã + {L'\xb8', 13.0f, gMsgCharB8LatinCapitalLetterOWithTildeTex}, // Õ + {L'\xb9', 8.0f, gMsgCharB9LatinSmallLetterAWithTildeTex}, // ã + {L'\xba', 9.0f, gMsgCharBALatinSmallLetterOWithTildeTex}, // õ + {L'\xbb', 12.0f, gMsgCharBBLatinCapitalLetterAWithRingAbove}, // Å + {L'\xbc', 8.0f, gMsgCharBCLatinSmallLetterAWithRingAbove}, // å +}; \ No newline at end of file diff --git a/include/def/z_kanfont.h b/include/def/z_kanfont.h index b548c41c8..63c90f8de 100644 --- a/include/def/z_kanfont.h +++ b/include/def/z_kanfont.h @@ -2,6 +2,7 @@ struct Font; void Font_LoadChar(Font* font, u8 character, u16 codePointIndex); +f32 Font_GetCharWidth(u8 character); void Font_LoadMessageBoxIcon(Font* font, u16 icon); void Font_LoadOrderedFont(Font* font); void func_8006EE50(Font* font, u16 arg1, u16 arg2); diff --git a/include/def/z_std_dma.h b/include/def/z_std_dma.h index 341c51d54..a8b701bcc 100644 --- a/include/def/z_std_dma.h +++ b/include/def/z_std_dma.h @@ -22,3 +22,4 @@ s32 DmaMgr_SendRequest1(Pointer ram0, Pointer vrom, size_t size, const char* fil s32 DmaMgr_SendRequest2(DmaRequest* req, Pointer ram, Pointer vrom, size_t size, u32 unk5, OSMesgQueue* queue, OSMesg msg, const char* file, s32 line); s32 DmaMgr_SendRequestImpl(DmaRequest* req, Pointer ram, Pointer vrom, size_t size, u32 unk, OSMesgQueue* queue, OSMesg msg); void DmaMgr_ThreadEntry(void* arg0); +#define Copy(p1, p2, size) do { DmaMgr_SendRequest1(p1, p2, size, __FILE__, __LINE__); } while(0); /* DMA_Copy */ diff --git a/include/z64message.h b/include/z64message.h index 4a80148a7..8297f44c2 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -112,17 +112,17 @@ enum TextState struct Font { - /* 0x0000 */ Pointer msgOffset; - /* 0x0004 */ size_t msgLength; - /* 0x0008 */ u8 charTexBuf[FONT_CHAR_TEX_SIZE * 120]; - /* 0x3C08 */ u8 iconBuf[FONT_CHAR_TEX_SIZE]; - /* 0x3C88 */ u8 fontBuf[FONT_CHAR_TEX_SIZE * 320]; + Pointer msgOffset; + size_t msgLength; + u8 charTexBuf[FONT_CHAR_TEX_SIZE * 120]; + u8 iconBuf[FONT_CHAR_TEX_SIZE]; + u8 fontBuf[FONT_CHAR_TEX_SIZE * 320]; union { - /* 0xDC88 */ char msgBuf[1280]; - /* 0xDC88 */ u16 msgBufWide[640]; + char msgBuf[1280]; + u16 msgBufWide[640]; }; -}; // size = 0xE188 +}; #define TEXTBOX_ENDTYPE_DEFAULT 0x00 #define TEXTBOX_ENDTYPE_2_CHOICE 0x10 diff --git a/meson.build b/meson.build index 76cd22669..cf8fccee6 100644 --- a/meson.build +++ b/meson.build @@ -1180,7 +1180,7 @@ assets_objects = [ # Unused currently but will keep # assets_overlays = [ 'assets/EUR_MQD/overlays/ovl_En_Ssh/ovl_En_Ssh.cpp', 'assets/EUR_MQD/overlays/ovl_Boss_Sst/ovl_Boss_Sst.cpp', 'assets/EUR_MQD/overlays/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka.cpp', 'assets/EUR_MQD/overlays/ovl_En_Sda/ovl_En_Sda.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Spot/ovl_Oceff_Spot.cpp', 'assets/EUR_MQD/overlays/ovl_Demo_Shd/ovl_Demo_Shd.cpp', 'assets/EUR_MQD/overlays/ovl_En_Bili/ovl_En_Bili.cpp', 'assets/EUR_MQD/overlays/ovl_Magic_Wind/ovl_Magic_Wind.cpp', 'assets/EUR_MQD/overlays/ovl_End_Title/ovl_End_Title.cpp', 'assets/EUR_MQD/overlays/ovl_Magic_Dark/ovl_Magic_Dark.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4.cpp', 'assets/EUR_MQD/overlays/ovl_Arrow_Fire/ovl_Arrow_Fire.cpp', 'assets/EUR_MQD/overlays/ovl_En_Clear_Tag/ovl_En_Clear_Tag.cpp', 'assets/EUR_MQD/overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.cpp', 'assets/EUR_MQD/overlays/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ.cpp', 'assets/EUR_MQD/overlays/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant.cpp', 'assets/EUR_MQD/overlays/ovl_Elf_Msg/ovl_Elf_Msg.cpp', 'assets/EUR_MQD/overlays/ovl_En_Kanban/ovl_En_Kanban.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Storm/ovl_Oceff_Storm.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe/ovl_Oceff_Wipe.cpp', 'assets/EUR_MQD/overlays/ovl_Arrow_Light/ovl_Arrow_Light.cpp', 'assets/EUR_MQD/overlays/ovl_En_St/ovl_En_St.cpp', 'assets/EUR_MQD/overlays/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3.cpp', 'assets/EUR_MQD/overlays/ovl_En_Jsjutan/ovl_En_Jsjutan.cpp', 'assets/EUR_MQD/overlays/ovl_Arrow_Ice/ovl_Arrow_Ice.cpp', 'assets/EUR_MQD/overlays/ovl_Elf_Msg2/ovl_Elf_Msg2.cpp', 'assets/EUR_MQD/overlays/ovl_En_Holl/ovl_En_Holl.cpp', 'assets/EUR_MQD/overlays/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra.cpp', 'assets/EUR_MQD/overlays/ovl_Magic_Fire/ovl_Magic_Fire.cpp', 'assets/EUR_MQD/overlays/ovl_En_Sth/ovl_En_Sth.cpp' ] assets_scenes = [ 'assets/EUR_MQD/scenes/overworld/spot12/spot12_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot12/spot12_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot12/spot12_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot13/spot13_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot13/spot13_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot13/spot13_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_3.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_4.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_5.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_6.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_7.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_8.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_room_9.cpp', 'assets/EUR_MQD/scenes/overworld/spot10/spot10_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot05/spot05_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot05/spot05_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot15/spot15_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot15/spot15_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_room_3.cpp', 'assets/EUR_MQD/scenes/overworld/spot18/spot18_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot00/spot00_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot00/spot00_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot11/spot11_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot11/spot11_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot17/spot17_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot17/spot17_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot17/spot17_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot01/spot01_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot01/spot01_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot09/spot09_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot09/spot09_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot06/spot06_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot06/spot06_scene.cpp', 'assets/EUR_MQD/scenes/overworld/entra/entra_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/entra/entra_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot20/spot20_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot20/spot20_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot07/spot07_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot07/spot07_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot07/spot07_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot02/spot02_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot02/spot02_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot02/spot02_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot16/spot16_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot16/spot16_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot03/spot03_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot03/spot03_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot03/spot03_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot08/spot08_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot08/spot08_scene.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/souko/souko_scene.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_room_0.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_room_1.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_room_2.cpp', 'assets/EUR_MQD/scenes/overworld/spot04/spot04_scene.cpp', 'assets/EUR_MQD/scenes/misc/shrine_r/shrine_r_room_0.cpp', 'assets/EUR_MQD/scenes/misc/shrine_r/shrine_r_scene.cpp', 'assets/EUR_MQD/scenes/misc/hakaana2/hakaana2_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hakaana2/hakaana2_scene.cpp', 'assets/EUR_MQD/scenes/misc/hakaana/hakaana_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hakaana/hakaana_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_night/market_night_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_night/market_night_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_ruins/market_ruins_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_ruins/market_ruins_scene.cpp', 'assets/EUR_MQD/scenes/misc/hiral_demo/hiral_demo_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hiral_demo/hiral_demo_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_alley/market_alley_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_alley/market_alley_scene.cpp', 'assets/EUR_MQD/scenes/misc/shrine_n/shrine_n_room_0.cpp', 'assets/EUR_MQD/scenes/misc/shrine_n/shrine_n_scene.cpp', 'assets/EUR_MQD/scenes/misc/kinsuta/kinsuta_room_0.cpp', 'assets/EUR_MQD/scenes/misc/kinsuta/kinsuta_scene.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_0.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_10.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_11.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_12.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_13.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_1.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_2.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_3.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_4.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_5.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_6.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_7.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_8.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_room_9.cpp', 'assets/EUR_MQD/scenes/misc/kakusiana/kakusiana_scene.cpp', 'assets/EUR_MQD/scenes/misc/shrine/shrine_room_0.cpp', 'assets/EUR_MQD/scenes/misc/shrine/shrine_scene.cpp', 'assets/EUR_MQD/scenes/misc/enrui/enrui_room_0.cpp', 'assets/EUR_MQD/scenes/misc/enrui/enrui_scene.cpp', 'assets/EUR_MQD/scenes/misc/turibori/turibori_room_0.cpp', 'assets/EUR_MQD/scenes/misc/turibori/turibori_scene.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_room_0.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_room_1.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_room_2.cpp', 'assets/EUR_MQD/scenes/misc/hakaana_ouke/hakaana_ouke_scene.cpp', 'assets/EUR_MQD/scenes/misc/kakariko3/kakariko3_room_0.cpp', 'assets/EUR_MQD/scenes/misc/kakariko3/kakariko3_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_alley_n/market_alley_n_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_alley_n/market_alley_n_scene.cpp', 'assets/EUR_MQD/scenes/misc/market_day/market_day_room_0.cpp', 'assets/EUR_MQD/scenes/misc/market_day/market_day_scene.cpp', 'assets/EUR_MQD/scenes/misc/entra_n/entra_n_room_0.cpp', 'assets/EUR_MQD/scenes/misc/entra_n/entra_n_scene.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa2/hairal_niwa2_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa2/hairal_niwa2_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home3/kokiri_home3_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home3/kokiri_home3_scene.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kenjyanoma/kenjyanoma_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kenjyanoma/kenjyanoma_scene.cpp', 'assets/EUR_MQD/scenes/indoors/labo/labo_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/labo/labo_scene.cpp', 'assets/EUR_MQD/scenes/indoors/malon_stable/malon_stable_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/malon_stable/malon_stable_scene.cpp', 'assets/EUR_MQD/scenes/indoors/tokinoma/tokinoma_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/tokinoma/tokinoma_room_1.cpp', 'assets/EUR_MQD/scenes/indoors/tokinoma/tokinoma_scene.cpp', 'assets/EUR_MQD/scenes/indoors/mahouya/mahouya_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/mahouya/mahouya_scene.cpp', 'assets/EUR_MQD/scenes/indoors/link_home/link_home_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/link_home/link_home_scene.cpp', 'assets/EUR_MQD/scenes/indoors/nakaniwa/nakaniwa_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/nakaniwa/nakaniwa_scene.cpp', 'assets/EUR_MQD/scenes/indoors/impa/impa_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/impa/impa_scene.cpp', 'assets/EUR_MQD/scenes/indoors/syatekijyou/syatekijyou_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/syatekijyou/syatekijyou_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kakariko/kakariko_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kakariko/kakariko_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home/kokiri_home_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home/kokiri_home_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home5/kokiri_home5_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home5/kokiri_home5_scene.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home4/kokiri_home4_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/kokiri_home4/kokiri_home4_scene.cpp', 'assets/EUR_MQD/scenes/indoors/miharigoya/miharigoya_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/miharigoya/miharigoya_scene.cpp', 'assets/EUR_MQD/scenes/indoors/daiyousei_izumi/daiyousei_izumi_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hut/hut_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hut/hut_scene.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_1.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_2.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_3.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_4.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_5.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_room_6.cpp', 'assets/EUR_MQD/scenes/indoors/takaraya/takaraya_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hylia_labo/hylia_labo_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hylia_labo/hylia_labo_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa/hairal_niwa_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa/hairal_niwa_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa_n/hairal_niwa_n_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hairal_niwa_n/hairal_niwa_n_scene.cpp', 'assets/EUR_MQD/scenes/indoors/tent/tent_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/tent/tent_scene.cpp', 'assets/EUR_MQD/scenes/indoors/bowling/bowling_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/bowling/bowling_scene.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_0.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_1.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_2.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_3.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_4.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_5.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_room_6.cpp', 'assets/EUR_MQD/scenes/indoors/hakasitarelay/hakasitarelay_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes/syotes_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes/syotes_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/depth_test/depth_test_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/depth_test/depth_test_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_1.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_2.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_3.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_room_4.cpp', 'assets/EUR_MQD/scenes/test_levels/testroom/testroom_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes2/syotes2_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/syotes2/syotes2_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/besitu/besitu_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/besitu/besitu_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/sutaru/sutaru_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/sutaru/sutaru_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/sasatest/sasatest_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/sasatest/sasatest_scene.cpp', 'assets/EUR_MQD/scenes/test_levels/test01/test01_room_0.cpp', 'assets/EUR_MQD/scenes/test_levels/test01/test01_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_23.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_24.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_25.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_26.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_27.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_28.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinzou/jyasinzou_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan/ddan_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan_boss/ydan_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan_boss/ydan_boss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan_boss/ydan_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdanCH/HAKAdanCH_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ice_doukutu/ice_doukutu_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon/ganon_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/Bmori1/Bmori1_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan_boss/bdan_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan_boss/bdan_boss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan_boss/bdan_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/jyasinboss/jyasinboss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontikasonogo/ganontikasonogo_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ganontika/ganontika_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_sonogo/ganon_sonogo_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/MIZUsin/MIZUsin_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/gerudoway/gerudoway_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_final/ganon_final_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_final/ganon_final_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_boss/ganon_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_boss/ganon_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan_boss/ddan_boss_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan_boss/ddan_boss_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ddan_boss/ddan_boss_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_demo/ganon_demo_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_demo/ganon_demo_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/moribossroom/moribossroom_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/moribossroom/moribossroom_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/moribossroom/moribossroom_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/bdan/bdan_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_23.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_24.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_25.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_26.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/HIDAN/HIDAN_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/ydan/ydan_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/FIRE_bs/FIRE_bs_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/FIRE_bs/FIRE_bs_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/FIRE_bs/FIRE_bs_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_tou/ganon_tou_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/ganon_tou/ganon_tou_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/men/men_scene.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_0.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_10.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_11.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_12.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_13.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_14.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_15.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_16.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_17.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_18.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_19.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_1.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_20.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_21.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_22.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_2.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_3.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_4.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_5.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_6.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_7.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_8.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_room_9.cpp', 'assets/EUR_MQD/scenes/dungeons/HAKAdan/HAKAdan_scene.cpp', 'assets/EUR_MQD/scenes/shops/kokiri_shop/kokiri_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/kokiri_shop/kokiri_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/face_shop/face_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/face_shop/face_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/shop1/shop1_room_0.cpp', 'assets/EUR_MQD/scenes/shops/shop1/shop1_scene.cpp', 'assets/EUR_MQD/scenes/shops/drag/drag_room_0.cpp', 'assets/EUR_MQD/scenes/shops/drag/drag_scene.cpp', 'assets/EUR_MQD/scenes/shops/night_shop/night_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/night_shop/night_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/alley_shop/alley_shop_room_0.cpp', 'assets/EUR_MQD/scenes/shops/alley_shop/alley_shop_scene.cpp', 'assets/EUR_MQD/scenes/shops/golon/golon_room_0.cpp', 'assets/EUR_MQD/scenes/shops/golon/golon_scene.cpp', 'assets/EUR_MQD/scenes/shops/zoora/zoora_room_0.cpp', 'assets/EUR_MQD/scenes/shops/zoora/zoora_scene.cpp' ] -assets_textures = [ 'assets/EUR_MQD/textures/item_name_static/item_name_static.cpp', 'assets/EUR_MQD/textures/icon_item_dungeon_static/icon_item_dungeon_static.cpp', 'assets/EUR_MQD/textures/icon_item_static/icon_item_static.cpp', 'assets/EUR_MQD/textures/icon_item_field_static/icon_item_field_static.cpp', 'assets/EUR_MQD/textures/nintendo_rogo_static/nintendo_rogo_static.cpp', 'assets/ALL/textures/nes_font_static/nes_font_static.cpp', 'assets/EUR_MQD/textures/map_name_static/map_name_static.cpp', 'assets/EUR_MQD/textures/map_i_static/map_i_static.cpp', 'assets/EUR_MQD/textures/message_static/message_static.cpp', 'assets/EUR_MQD/textures/icon_item_24_static/icon_item_24_static.cpp', 'assets/EUR_MQD/textures/message_texture_static/message_texture_static.cpp', 'assets/EUR_MQD/textures/title_static/title_static.cpp', 'assets/EUR_MQD/textures/icon_item_fra_static/icon_item_fra_static.cpp', 'assets/EUR_MQD/textures/parameter_static/parameter_static.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_01.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_02.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_03.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_04.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_05.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_06.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_07.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_08.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_09.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_10.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_11.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_12.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_13.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_14.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_15.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_16.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_17.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_18.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_19.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_20.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_21.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_22.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_23.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_24.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_25.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_26.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_27.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_28.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_29.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_30.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_31.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_32.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_33.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_34.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_35.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_36.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_37.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_38.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_39.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_40.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_41.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_42.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_43.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_44.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_45.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_46.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_47.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_48.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_49.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_50.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_51.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_52.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_53.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_54.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_55.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_56.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_57.cpp', 'assets/EUR_MQD/textures/map_grand_static/map_grand_static.cpp', 'assets/EUR_MQD/textures/icon_item_nes_static/icon_item_nes_static.cpp', 'assets/EUR_MQD/textures/do_action_static/do_action_static.cpp', 'assets/EUR_MQD/textures/map_48x85_static/map_48x85_static.cpp', 'assets/EUR_MQD/textures/icon_item_gameover_static/icon_item_gameover_static.cpp', 'assets/EUR_MQD/textures/icon_item_ger_static/icon_item_ger_static.cpp' ] +assets_textures = [ 'assets/EUR_MQD/textures/item_name_static/item_name_static.cpp', 'assets/EUR_MQD/textures/icon_item_dungeon_static/icon_item_dungeon_static.cpp', 'assets/EUR_MQD/textures/icon_item_static/icon_item_static.cpp', 'assets/EUR_MQD/textures/icon_item_field_static/icon_item_field_static.cpp', 'assets/EUR_MQD/textures/nintendo_rogo_static/nintendo_rogo_static.cpp', 'assets/EUR_MQD/textures/map_name_static/map_name_static.cpp', 'assets/EUR_MQD/textures/map_i_static/map_i_static.cpp', 'assets/EUR_MQD/textures/message_static/message_static.cpp', 'assets/EUR_MQD/textures/icon_item_24_static/icon_item_24_static.cpp', 'assets/EUR_MQD/textures/message_texture_static/message_texture_static.cpp', 'assets/EUR_MQD/textures/title_static/title_static.cpp', 'assets/EUR_MQD/textures/icon_item_fra_static/icon_item_fra_static.cpp', 'assets/EUR_MQD/textures/parameter_static/parameter_static.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_01.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_02.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_03.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_04.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_05.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_06.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_07.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_08.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_09.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_10.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_11.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_12.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_13.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_14.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_15.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_16.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_17.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_18.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_19.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_20.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_21.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_22.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_23.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_24.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_25.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_26.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_27.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_28.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_29.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_30.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_31.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_32.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_33.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_34.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_35.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_36.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_37.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_38.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_39.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_40.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_41.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_42.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_43.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_44.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_45.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_46.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_47.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_48.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_49.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_50.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_51.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_52.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_53.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_54.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_55.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_56.cpp', 'assets/EUR_MQD/textures/place_title_cards/g_pn_57.cpp', 'assets/EUR_MQD/textures/map_grand_static/map_grand_static.cpp', 'assets/EUR_MQD/textures/icon_item_nes_static/icon_item_nes_static.cpp', 'assets/EUR_MQD/textures/do_action_static/do_action_static.cpp', 'assets/EUR_MQD/textures/map_48x85_static/map_48x85_static.cpp', 'assets/EUR_MQD/textures/icon_item_gameover_static/icon_item_gameover_static.cpp', 'assets/EUR_MQD/textures/icon_item_ger_static/icon_item_ger_static.cpp' ] assets_text = [ 'roms/EUR_MQD/text/fra_message_data_static.cpp', diff --git a/roms/EUR_MQD/text/fra_message_data_static.cpp b/roms/EUR_MQD/text/fra_message_data_static.cpp index ac7b9a828..a3d9ef521 100644 --- a/roms/EUR_MQD/text/fra_message_data_static.cpp +++ b/roms/EUR_MQD/text/fra_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, fraMessage) \ - const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; + const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; #include "translations/message_data_fr.enc.h" diff --git a/roms/EUR_MQD/text/ger_message_data_static.cpp b/roms/EUR_MQD/text/ger_message_data_static.cpp index a72b0a036..e466cf151 100644 --- a/roms/EUR_MQD/text/ger_message_data_static.cpp +++ b/roms/EUR_MQD/text/ger_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, gerMessage) \ - const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; + const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; #include "translations/message_data_de.enc.h" diff --git a/roms/EUR_MQD/text/nes_message_data_static.cpp b/roms/EUR_MQD/text/nes_message_data_static.cpp index ae6fc46b1..9e2b75cd3 100644 --- a/roms/EUR_MQD/text/nes_message_data_static.cpp +++ b/roms/EUR_MQD/text/nes_message_data_static.cpp @@ -4,23 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, nesMessage) \ - const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; - -#define DEFINE_MESSAGE_FFFC + const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; #include "translations/message_data_en.enc.h" - -#ifdef DEFINE_MESSAGE_FFFC -DEFINE_MESSAGE(0xFFFC, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, -"0123456789" -"ABCDEFGHIJKLMN" -"OPQRSTUVWXYZ" -"abcdefghijklmn" -"opqrstuvwxyz" -" -." -) -#endif - -DEFINE_MESSAGE(0xFFFD, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, "") - -#undef DEFINE_MESSAGE_FFFC diff --git a/roms/EUR_MQD/text/staff_message_data_static.cpp b/roms/EUR_MQD/text/staff_message_data_static.cpp index 81b218ee0..951573715 100644 --- a/roms/EUR_MQD/text/staff_message_data_static.cpp +++ b/roms/EUR_MQD/text/staff_message_data_static.cpp @@ -4,7 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) \ - const char _message_##textId##_staff[sizeof(staffMessage END)] = { staffMessage END }; + const char _message_##textId##_staff[sizeof(staffMessage END)] = { staffMessage END }; #include "text/message_data_staff.enc.h" - diff --git a/roms/PAL_1.0/text/fra_message_data_static.cpp b/roms/PAL_1.0/text/fra_message_data_static.cpp index ac7b9a828..a3d9ef521 100644 --- a/roms/PAL_1.0/text/fra_message_data_static.cpp +++ b/roms/PAL_1.0/text/fra_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, fraMessage) \ - const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; + const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; #include "translations/message_data_fr.enc.h" diff --git a/roms/PAL_1.0/text/ger_message_data_static.cpp b/roms/PAL_1.0/text/ger_message_data_static.cpp index a72b0a036..e466cf151 100644 --- a/roms/PAL_1.0/text/ger_message_data_static.cpp +++ b/roms/PAL_1.0/text/ger_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, gerMessage) \ - const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; + const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; #include "translations/message_data_de.enc.h" diff --git a/roms/PAL_1.0/text/nes_message_data_static.cpp b/roms/PAL_1.0/text/nes_message_data_static.cpp index ae6fc46b1..9e2b75cd3 100644 --- a/roms/PAL_1.0/text/nes_message_data_static.cpp +++ b/roms/PAL_1.0/text/nes_message_data_static.cpp @@ -4,23 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, nesMessage) \ - const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; - -#define DEFINE_MESSAGE_FFFC + const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; #include "translations/message_data_en.enc.h" - -#ifdef DEFINE_MESSAGE_FFFC -DEFINE_MESSAGE(0xFFFC, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, -"0123456789" -"ABCDEFGHIJKLMN" -"OPQRSTUVWXYZ" -"abcdefghijklmn" -"opqrstuvwxyz" -" -." -) -#endif - -DEFINE_MESSAGE(0xFFFD, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, "") - -#undef DEFINE_MESSAGE_FFFC diff --git a/roms/PAL_1.0/text/staff_message_data_static.cpp b/roms/PAL_1.0/text/staff_message_data_static.cpp index 81b218ee0..951573715 100644 --- a/roms/PAL_1.0/text/staff_message_data_static.cpp +++ b/roms/PAL_1.0/text/staff_message_data_static.cpp @@ -4,7 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) \ - const char _message_##textId##_staff[sizeof(staffMessage END)] = { staffMessage END }; + const char _message_##textId##_staff[sizeof(staffMessage END)] = { staffMessage END }; #include "text/message_data_staff.enc.h" - diff --git a/src/boot/z_std_dma.cpp b/src/boot/z_std_dma.cpp index 1c484bd4d..6f5001154 100644 --- a/src/boot/z_std_dma.cpp +++ b/src/boot/z_std_dma.cpp @@ -93,6 +93,7 @@ s32 DmaMgr_SendRequest2(DmaRequest* req, Pointer ram, Pointer vrom, size_t size, s32 DmaMgr_SendRequest1(Pointer ram0, Pointer vrom, size_t size, const char* file, s32 line) { + // TODO: LOG4DEBUG! _memcpy(ram0, vrom, size); return 0; } diff --git a/src/code/z_kanfont.cpp b/src/code/z_kanfont.cpp index 574dfdc08..869b04fc0 100644 --- a/src/code/z_kanfont.cpp +++ b/src/code/z_kanfont.cpp @@ -13,12 +13,31 @@ void func_8006EE50(Font* font, u16 arg1, u16 arg2) } /** - * Loads a texture from nes_font_static for the requested `character` into the character texture buffer - * at `codePointIndex`. The value of `character` is the ASCII codepoint subtract ' '/0x20. + * Loads a texture from nes_font_static for the requested `character` into the character texture buffer at `codePointIndex`. */ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) { - DmaMgr_SendRequest1(&font->charTexBuf[codePointIndex], nes_font_static_lut[character], FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 93); + for(const CharInfo& info : font_static_lut) + { + if(info.code == character) + { + Copy(&font->charTexBuf[codePointIndex], info.tex, FONT_CHAR_TEX_SIZE); + return; + } + } + Copy(&font->charTexBuf[codePointIndex], gMsgChar3FQuestionMarkTex, FONT_CHAR_TEX_SIZE); +} + +f32 Font_GetCharWidth(u8 character) +{ + for(const CharInfo& info : font_static_lut) + { + if(info.code == character) + { + return info.width; + } + } + return 10.0f; } /** @@ -28,17 +47,17 @@ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) */ void Font_LoadMessageBoxIcon(Font* font, u16 icon) { - DmaMgr_SendRequest1(font->iconBuf, message_static_lut[4 + icon], FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 100); + Copy(font->iconBuf, message_static_lut[4 + icon], FONT_CHAR_TEX_SIZE); } -/** - * Loads a full set of character textures based on their ordering in nes_font_static_lut into the font buffer. +/** Mainly used in the Title Screen and File Select Screen. + * Loads a full set of character textures based on their ordering in font_static_lut into the font buffer. */ void Font_LoadOrderedFont(Font* font) { int i; - for(i = 0; i < sizeof(nes_font_static_lut) / sizeof(char*); i++) + for(i = 0; i < sizeof(font_static_lut) / sizeof(CharInfo); i++) { - memcpy(font->fontBuf + (FONT_CHAR_TEX_SIZE * (i + 0x20)), nes_font_static_lut[i], FONT_CHAR_TEX_SIZE); + Copy(font->fontBuf + (FONT_CHAR_TEX_SIZE * (i + 0x20)), font_static_lut[i].tex, FONT_CHAR_TEX_SIZE); } } diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 8508d8c3b..eeee3d7eb 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -674,165 +674,6 @@ void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) } #define MESSAGE_SPACE_WIDTH 6 -f32 sFontWidths[157] = { - 8.0f, // ' ' - 8.0f, // '!' - 6.0f, // '"' - 9.0f, // '#' - 9.0f, // '$' - 14.0f, // '%' - 12.0f, // '&' - 3.0f, // ''' - 7.0f, // '(' - 7.0f, // ')' - 7.0f, // '*' - 9.0f, // '+' - 4.0f, // ',' - 6.0f, // '-' - 4.0f, // '.' - 9.0f, // '/' - 10.0f, // '0' - 5.0f, // '1' - 9.0f, // '2' - 9.0f, // '3' - 10.0f, // '4' - 9.0f, // '5' - 9.0f, // '6' - 9.0f, // '7' - 9.0f, // '8' - 9.0f, // '9' - 6.0f, // ':' - 6.0f, // ';' - 9.0f, // '<' - 11.0f, // '=' - 9.0f, // '>' - 11.0f, // '?' - 13.0f, // '@' - 12.0f, // 'A' - 9.0f, // 'B' - 11.0f, // 'C' - 11.0f, // 'D' - 8.0f, // 'E' - 8.0f, // 'F' - 12.0f, // 'G' - 10.0f, // 'H' - 4.0f, // 'I' - 8.0f, // 'J' - 10.0f, // 'K' - 8.0f, // 'L' - 13.0f, // 'M' - 11.0f, // 'N' - 13.0f, // 'O' - 9.0f, // 'P' - 13.0f, // 'Q' - 10.0f, // 'R' - 10.0f, // 'S' - 9.0f, // 'T' - 10.0f, // 'U' - 11.0f, // 'V' - 15.0f, // 'W' - 11.0f, // 'X' - 10.0f, // 'Y' - 10.0f, // 'Z' - 7.0f, // '[' - 10.0f, // '\' - 7.0f, // ']' - 10.0f, // '^' - 9.0f, // '_' - 5.0f, // '`' - 8.0f, // 'a' - 9.0f, // 'b' - 8.0f, // 'c' - 9.0f, // 'd' - 9.0f, // 'e' - 6.0f, // 'f' - 9.0f, // 'g' - 8.0f, // 'h' - 4.0f, // 'i' - 6.0f, // 'j' - 8.0f, // 'k' - 4.0f, // 'l' - 12.0f, // 'm' - 9.0f, // 'n' - 9.0f, // 'o' - 9.0f, // 'p' - 9.0f, // 'q' - 7.0f, // 'r' - 8.0f, // 's' - 7.0f, // 't' - 8.0f, // 'u' - 9.0f, // 'v' - 12.0f, // 'w' - 8.0f, // 'x' - 9.0f, // 'y' - 8.0f, // 'z' - 7.0f, // '{' - 5.0f, // '|' - 7.0f, // '}' - 10.0f, // '~' - 10.0f, // '‾' - 12.0f, // 'À' - 6.0f, // 'î' - 12.0f, // 'Â' - 12.0f, // 'Ä' - 11.0f, // 'Ç' - 8.0f, // 'È' - 8.0f, // 'É' - 8.0f, // 'Ê' - 6.0f, // 'Ë' - 6.0f, // 'Ï' - 13.0f, // 'Ô' - 13.0f, // 'Ö' - 10.0f, // 'Ù' - 10.0f, // 'Û' - 10.0f, // 'Ü' - 9.0f, // 'ß' - 8.0f, // 'à' - 8.0f, // 'á' - 8.0f, // 'â' - 8.0f, // 'ä' - 8.0f, // 'ç' - 9.0f, // 'è' - 9.0f, // 'é' - 9.0f, // 'ê' - 9.0f, // 'ë' - 6.0f, // 'ï' - 9.0f, // 'ô' - 9.0f, // 'ö' - 9.0f, // 'ù' - 9.0f, // 'û' - 9.0f, // 'ü' - 14.0f, // '[A]' - 14.0f, // '[B]' - 14.0f, // '[C]' - 14.0f, // '[L]' - 14.0f, // '[R]' - 14.0f, // '[Z]' - 14.0f, // '[C-Up]' - 14.0f, // '[C-Down]' - 14.0f, // '[C-Left]' - 14.0f, // '[C-Right]' - 14.0f, // '▼' - 14.0f, // '[Control-Pad]' - 14.0f, // '[D-Pad]' - 4.0f, // 'Í' - 13.0f, // 'Ó' - 10.0f, // 'Ú' - 4.0f, // 'í' - 9.0f, // 'ó' - 9.0f, // 'ú' - 11.0f, // '¿' - 8.0f, // '¡' - 12.0f, // 'Á' - 11.0f, // 'Ñ' - 9.0f, // 'ñ' - 12.0f, // 'Ã' - 13.0f, // 'Õ' - 8.0f, // 'ã' - 9.0f, // 'õ' - 12.0f, // 'Å' - 8.0f, // 'å' -}; u16 Message_DrawItemIcon(GlobalContext* globalCtx, u16 itemId, Gfx** p, u16 i) { @@ -1253,7 +1094,7 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) Message_DrawTextChar(globalCtx, &font->charTexBuf[charTexIdx], &gfx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->textPosX += (s32)(sFontWidths[character - ' '] * (R_TEXT_CHAR_SCALE / 100.0f)); + msgCtx->textPosX += (s32)(Font_GetCharWidth(character) * (R_TEXT_CHAR_SCALE / 100.0f)); break; } } @@ -1349,9 +1190,9 @@ void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) void Message_Decode(GlobalContext* globalCtx) { - u8 temp_s2; - u8 phi_s1; - u16 phi_s0_3; + u8 curChar; + u8 curChar2; + u16 value; s32 loadChar; s32 charTexIdx = 0; s16 playerNameLen; @@ -1369,9 +1210,9 @@ void Message_Decode(GlobalContext* globalCtx) while(true) { - phi_s1 = temp_s2 = msgCtx->msgBufDecoded[decodedBufPos] = font->msgBuf[msgCtx->msgBufPos]; + curChar2 = curChar = msgCtx->msgBufDecoded[decodedBufPos] = font->msgBuf[msgCtx->msgBufPos]; - if(temp_s2 == MESSAGE_BOX_BREAK || temp_s2 == MESSAGE_TEXTID || temp_s2 == MESSAGE_BOX_BREAK_DELAYED || temp_s2 == MESSAGE_EVENT || temp_s2 == MESSAGE_END) + if(curChar == MESSAGE_BOX_BREAK || curChar == MESSAGE_TEXTID || curChar == MESSAGE_BOX_BREAK_DELAYED || curChar == MESSAGE_EVENT || curChar == MESSAGE_END) { // Textbox decoding ends with any of the above text control characters msgCtx->msgMode = MSGMODE_TEXT_DISPLAYING; @@ -1393,15 +1234,15 @@ void Message_Decode(GlobalContext* globalCtx) R_TEXT_INIT_YPOS = (u16)(R_TEXTBOX_Y + 16); } } - if(phi_s1 == MESSAGE_TEXTID) + if(curChar2 == MESSAGE_TEXTID) { osSyncPrintf("NZ_NEXTMSG=%x, %x, %x\n", font->msgBuf[msgCtx->msgBufPos], font->msgBuf[msgCtx->msgBufPos + 1], font->msgBuf[msgCtx->msgBufPos + 2]); - temp_s2 = msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; + curChar = msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 2]; - phi_s0_3 = temp_s2 << 8; - sNextTextId = msgCtx->msgBufDecoded[decodedBufPos] | phi_s0_3; + value = curChar << 8; + sNextTextId = msgCtx->msgBufDecoded[decodedBufPos] | value; } - if(phi_s1 == MESSAGE_BOX_BREAK_DELAYED) + if(curChar2 == MESSAGE_BOX_BREAK_DELAYED) { msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; msgCtx->msgBufPos += 2; @@ -1413,7 +1254,7 @@ void Message_Decode(GlobalContext* globalCtx) } break; } - else if(temp_s2 == MESSAGE_NAME) + else if(curChar == MESSAGE_NAME) { // Substitute the player name control character for the file's player name. for(playerNameLen = ARRAY_COUNT(gSaveContext.playerName); playerNameLen > 0; playerNameLen--) @@ -1427,53 +1268,53 @@ void Message_Decode(GlobalContext* globalCtx) osSyncPrintf("\n名前 = "); for(i = 0; i < playerNameLen; i++) { - phi_s1 = gSaveContext.playerName[i]; - if(phi_s1 == 0x3E) + curChar2 = gSaveContext.playerName[i]; + if(curChar2 == 0x3E) { - phi_s1 = ' '; + curChar2 = ' '; } - else if(phi_s1 == 0x40) + else if(curChar2 == 0x40) { - phi_s1 = '.'; + curChar2 = '.'; } - else if(phi_s1 == 0x3F) + else if(curChar2 == 0x3F) { - phi_s1 = '-'; + curChar2 = '-'; } - else if(phi_s1 < 0xA) + else if(curChar2 < 0xA) { - phi_s1 += 0; - phi_s1 += '0'; + curChar2 += 0; + curChar2 += '0'; } - else if(phi_s1 < 0x24) + else if(curChar2 < 0x24) { - phi_s1 += 0; - phi_s1 += '7'; + curChar2 += 0; + curChar2 += '7'; } - else if(phi_s1 < 0x3E) + else if(curChar2 < 0x3E) { - phi_s1 += 0; - phi_s1 += '='; + curChar2 += 0; + curChar2 += '='; } - if(phi_s1 != ' ') + if(curChar2 != ' ') { - Font_LoadChar(font, phi_s1 - ' ', charTexIdx); + Font_LoadChar(font, curChar2, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; } - osSyncPrintf("%x ", phi_s1); - msgCtx->msgBufDecoded[decodedBufPos] = phi_s1; + osSyncPrintf("%x ", curChar2); + msgCtx->msgBufDecoded[decodedBufPos] = curChar2; decodedBufPos++; } decodedBufPos--; } - else if(temp_s2 == MESSAGE_MARATHON_TIME || temp_s2 == MESSAGE_RACE_TIME) + else if(curChar == MESSAGE_MARATHON_TIME || curChar == MESSAGE_RACE_TIME) { // Convert the values of the appropriate timer to digits and add the // digits to the decoded buffer in place of the control character. // "EVENT timer" osSyncPrintf("\nEVENTタイマー = "); digits[0] = digits[1] = digits[2] = 0; - if(temp_s2 == MESSAGE_RACE_TIME) + if(curChar == MESSAGE_RACE_TIME) { digits[3] = gSaveContext.timer1Value; } @@ -1500,26 +1341,26 @@ void Message_Decode(GlobalContext* globalCtx) for(i = 0; i < 4; i++) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); + Font_LoadChar(font, digits[i], charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; decodedBufPos++; if(i == 1) { - Font_LoadChar(font, '"' - ' ', charTexIdx); + Font_LoadChar(font, '"', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; msgCtx->msgBufDecoded[decodedBufPos] = '"'; decodedBufPos++; } else if(i == 3) { - Font_LoadChar(font, '"' - ' ', charTexIdx); + Font_LoadChar(font, '"', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; msgCtx->msgBufDecoded[decodedBufPos] = '"'; } } } - else if(temp_s2 == MESSAGE_POINTS) + else if(curChar == MESSAGE_POINTS) { // Convert the values of the current minigame score to digits and // add the digits to the decoded buffer in place of the control character. @@ -1553,15 +1394,15 @@ void Message_Decode(GlobalContext* globalCtx) } if(loadChar) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + Font_LoadChar(font, digits[i], charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; charTexIdx += FONT_CHAR_TEX_SIZE; decodedBufPos++; } } decodedBufPos--; } - else if(temp_s2 == MESSAGE_TOKENS) + else if(curChar == MESSAGE_TOKENS) { // Convert the current number of collected gold skulltula tokens to digits and // add the digits to the decoded buffer in place of the control character. @@ -1590,16 +1431,16 @@ void Message_Decode(GlobalContext* globalCtx) } if(loadChar) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + Font_LoadChar(font, digits[i], charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; charTexIdx += FONT_CHAR_TEX_SIZE; - osSyncPrintf("%x(%x) ", digits[i] + '0' - ' ', digits[i]); + osSyncPrintf("%x(%x) ", digits[i], digits[i]); decodedBufPos++; } } decodedBufPos--; } - else if(temp_s2 == MESSAGE_FISH_INFO) + else if(curChar == MESSAGE_FISH_INFO) { // "Fishing hole fish size" osSyncPrintf("\n釣り堀魚サイズ = "); @@ -1616,33 +1457,33 @@ void Message_Decode(GlobalContext* globalCtx) { if(i == 1 || digits[i] != 0) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + Font_LoadChar(font, digits[i], charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; charTexIdx += FONT_CHAR_TEX_SIZE; - osSyncPrintf("%x(%x) ", digits[i] + '0' - ' ', digits[i]); + osSyncPrintf("%x(%x) ", digits[i], digits[i]); decodedBufPos++; } } decodedBufPos--; } - else if(temp_s2 == MESSAGE_HIGHSCORE) + else if(curChar == MESSAGE_HIGHSCORE) { - phi_s0_3 = HIGH_SCORE((u8)font->msgBuf[++msgCtx->msgBufPos]); + value = HIGH_SCORE((u8)font->msgBuf[++msgCtx->msgBufPos]); // "Highscore" osSyncPrintf("ランキング=%d\n", font->msgBuf[msgCtx->msgBufPos]); if((font->msgBuf[msgCtx->msgBufPos] & 0xFF) == 2) { if(LINK_AGE_IN_YEARS == YEARS_CHILD) { - phi_s0_3 &= 0x7F; + value &= 0x7F; } else { osSyncPrintf("HI_SCORE( kanfont->mbuff.nes_mes_buf[message->rdp] & 0xff000000 ) = %x\n", HIGH_SCORE(font->msgBufWide[msgCtx->msgBufPos] & 0xFF000000)); - phi_s0_3 = ((HIGH_SCORE((u8)font->msgBuf[msgCtx->msgBufPos]) & 0xFF000000) >> 0x18) & 0x7F; + value = ((HIGH_SCORE((u8)font->msgBuf[msgCtx->msgBufPos]) & 0xFF000000) >> 0x18) & 0x7F; } - phi_s0_3 = SQ((f32)phi_s0_3) * 0.0036f + 0.5f; - osSyncPrintf("score=%d\n", phi_s0_3); + value = SQ((f32)value) * 0.0036f + 0.5f; + osSyncPrintf("score=%d\n", value); } switch(font->msgBuf[msgCtx->msgBufPos] & 0xFF) { @@ -1650,7 +1491,7 @@ void Message_Decode(GlobalContext* globalCtx) case HS_POE_POINTS: case HS_FISHING: digits[0] = digits[1] = digits[2] = 0; - digits[3] = phi_s0_3; + digits[3] = value; while(digits[3] >= 1000) { @@ -1677,8 +1518,8 @@ void Message_Decode(GlobalContext* globalCtx) } if(loadChar) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + Font_LoadChar(font, digits[i], charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; charTexIdx += FONT_CHAR_TEX_SIZE; decodedBufPos++; } @@ -1691,7 +1532,7 @@ void Message_Decode(GlobalContext* globalCtx) case HS_MARATHON: case HS_DAMPE_RACE: digits[0] = digits[1] = digits[2] = 0; - digits[3] = phi_s0_3; + digits[3] = value; while(digits[3] >= 60) { @@ -1711,20 +1552,20 @@ void Message_Decode(GlobalContext* globalCtx) for(i = 0; i < 4; i++) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); + Font_LoadChar(font, digits[i], charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; decodedBufPos++; if(i == 1) { - Font_LoadChar(font, '"' - ' ', charTexIdx); + Font_LoadChar(font, '"', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; msgCtx->msgBufDecoded[decodedBufPos] = '"'; decodedBufPos++; } else if(i == 3) { - Font_LoadChar(font, '"' - ' ', charTexIdx); + Font_LoadChar(font, '"', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; msgCtx->msgBufDecoded[decodedBufPos] = '"'; } @@ -1732,7 +1573,7 @@ void Message_Decode(GlobalContext* globalCtx) break; } } - else if(temp_s2 == MESSAGE_TIME) + else if(curChar == MESSAGE_TIME) { // "Zelda time" osSyncPrintf("\nゼルダ時間 = "); @@ -1755,13 +1596,13 @@ void Message_Decode(GlobalContext* globalCtx) for(i = 0; i < 4; i++) { - Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); + Font_LoadChar(font, digits[i], charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; decodedBufPos++; if(i == 1) { - Font_LoadChar(font, ':' - ' ', charTexIdx); + Font_LoadChar(font, ':', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; msgCtx->msgBufDecoded[decodedBufPos] = ':'; decodedBufPos++; @@ -1769,13 +1610,13 @@ void Message_Decode(GlobalContext* globalCtx) } decodedBufPos--; } - else if(temp_s2 == MESSAGE_ITEM_ICON) + else if(curChar == MESSAGE_ITEM_ICON) { msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; osSyncPrintf("ITEM_NO=(%d) (%d)\n", msgCtx->msgBufDecoded[decodedBufPos], font->msgBuf[msgCtx->msgBufPos + 1]); Message_LoadItemIcon(globalCtx, font->msgBuf[msgCtx->msgBufPos + 1], R_TEXTBOX_Y + 10); } - else if(temp_s2 == MESSAGE_BACKGROUND) + else if(curChar == MESSAGE_BACKGROUND) { msgCtx->textboxBackgroundIdx = font->msgBuf[msgCtx->msgBufPos + 1] * 2; msgCtx->textboxBackgroundForeColorIdx = (font->msgBuf[msgCtx->msgBufPos + 2] & 0xF0) >> 4; @@ -1791,49 +1632,49 @@ void Message_Decode(GlobalContext* globalCtx) numLines = 2; R_TEXT_INIT_XPOS = 50; } - else if(temp_s2 == MESSAGE_COLOR) + else if(curChar == MESSAGE_COLOR) { msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; } - else if(temp_s2 == MESSAGE_NEWLINE) + else if(curChar == MESSAGE_NEWLINE) { numLines++; } - else if(temp_s2 != MESSAGE_QUICKTEXT_ENABLE && temp_s2 != MESSAGE_QUICKTEXT_DISABLE && temp_s2 != MESSAGE_AWAIT_BUTTON_PRESS && temp_s2 != MESSAGE_OCARINA && temp_s2 != MESSAGE_PERSISTENT && temp_s2 != MESSAGE_UNSKIPPABLE) + else if(curChar != MESSAGE_QUICKTEXT_ENABLE && curChar != MESSAGE_QUICKTEXT_DISABLE && curChar != MESSAGE_AWAIT_BUTTON_PRESS && curChar != MESSAGE_OCARINA && curChar != MESSAGE_PERSISTENT && curChar != MESSAGE_UNSKIPPABLE) { - if(temp_s2 == MESSAGE_FADE) + if(curChar == MESSAGE_FADE) { sTextFade = true; osSyncPrintf("NZ_TIMER_END (key_off_flag=%d)\n", sTextFade); msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; } - else if(temp_s2 == MESSAGE_FADE2) + else if(curChar == MESSAGE_FADE2) { sTextFade = true; osSyncPrintf("NZ_BGM (key_off_flag=%d)\n", sTextFade); msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; } - else if(temp_s2 == MESSAGE_SHIFT || temp_s2 == MESSAGE_TEXT_SPEED) + else if(curChar == MESSAGE_SHIFT || curChar == MESSAGE_TEXT_SPEED) { msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos] & 0xFF; } - else if(temp_s2 == MESSAGE_SFX) + else if(curChar == MESSAGE_SFX) { msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; } - else if(temp_s2 == MESSAGE_TWO_CHOICE) + else if(curChar == MESSAGE_TWO_CHOICE) { msgCtx->choiceNum = 2; } - else if(temp_s2 == MESSAGE_THREE_CHOICE) + else if(curChar == MESSAGE_THREE_CHOICE) { msgCtx->choiceNum = 3; } - else if(temp_s2 != ' ') + else if(curChar != ' ') { - Font_LoadChar(font, temp_s2 - ' ', charTexIdx); + Font_LoadChar(font, curChar, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; } } diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index 8abf9d811..5d72711c1 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -455,12 +455,12 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) switch(gSaveContext.language) { case LANGUAGE_GER: - ps = "DR\x8E""CKE START"; /* */ + ps = "DR\x8E""CKE START"; /* Ü */ nc = "CONTROLLER FEHLT"; break; case LANGUAGE_FRA: ps = "APPUYEZ SUR START"; - nc = "MANETTE D\x86""BRANCH\x86""E"; /* */ + nc = "MANETTE D\x86""BRANCH\x86""E"; /* É */ break; case LANGUAGE_ES: ps = "PULSA START"; @@ -479,7 +479,7 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) nc = "NESSUN CONTROLLER"; break; case LANGUAGE_SV_SE: - ps = "TRYCK P\xBB"" START"; /* */ + ps = "TRYCK P\xBB"" START"; /* Å */ nc = "INGEN HANDKONTROLL"; break; } diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index 5e3cd1cf9..793ea7b5f 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -970,7 +970,6 @@ - diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index 9809ef666..17dd529f8 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2662,9 +2662,6 @@ textures - - textures - textures From d7e12a7f8c74b4613d76b6e372b5149fe22197f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Sat, 13 May 2023 05:07:04 -0500 Subject: [PATCH 23/25] Add Unicode Support (2) --- .../ALL}/text/fra_message_data_static.cpp | 0 .../ALL}/text/ger_message_data_static.cpp | 0 .../ALL}/text/nes_message_data_static.cpp | 0 .../ALL}/text/staff_message_data_static.cpp | 0 include/def/z_kanfont.h | 4 +- roms/PAL_1.0/text/fra_message_data_static.cpp | 9 - roms/PAL_1.0/text/ger_message_data_static.cpp | 9 - roms/PAL_1.0/text/nes_message_data_static.cpp | 9 - .../text/staff_message_data_static.cpp | 9 - src/code/z_kanfont.cpp | 4 +- src/code/z_message_PAL.cpp | 178 +++++++++--------- vs/OOT_Assets.vcxproj | 14 +- vs/OOT_Assets.vcxproj.filters | 32 +++- 13 files changed, 124 insertions(+), 144 deletions(-) rename {roms/EUR_MQD => assets/ALL}/text/fra_message_data_static.cpp (100%) rename {roms/EUR_MQD => assets/ALL}/text/ger_message_data_static.cpp (100%) rename {roms/EUR_MQD => assets/ALL}/text/nes_message_data_static.cpp (100%) rename {roms/EUR_MQD => assets/ALL}/text/staff_message_data_static.cpp (100%) delete mode 100644 roms/PAL_1.0/text/fra_message_data_static.cpp delete mode 100644 roms/PAL_1.0/text/ger_message_data_static.cpp delete mode 100644 roms/PAL_1.0/text/nes_message_data_static.cpp delete mode 100644 roms/PAL_1.0/text/staff_message_data_static.cpp diff --git a/roms/EUR_MQD/text/fra_message_data_static.cpp b/assets/ALL/text/fra_message_data_static.cpp similarity index 100% rename from roms/EUR_MQD/text/fra_message_data_static.cpp rename to assets/ALL/text/fra_message_data_static.cpp diff --git a/roms/EUR_MQD/text/ger_message_data_static.cpp b/assets/ALL/text/ger_message_data_static.cpp similarity index 100% rename from roms/EUR_MQD/text/ger_message_data_static.cpp rename to assets/ALL/text/ger_message_data_static.cpp diff --git a/roms/EUR_MQD/text/nes_message_data_static.cpp b/assets/ALL/text/nes_message_data_static.cpp similarity index 100% rename from roms/EUR_MQD/text/nes_message_data_static.cpp rename to assets/ALL/text/nes_message_data_static.cpp diff --git a/roms/EUR_MQD/text/staff_message_data_static.cpp b/assets/ALL/text/staff_message_data_static.cpp similarity index 100% rename from roms/EUR_MQD/text/staff_message_data_static.cpp rename to assets/ALL/text/staff_message_data_static.cpp diff --git a/include/def/z_kanfont.h b/include/def/z_kanfont.h index 63c90f8de..22962160e 100644 --- a/include/def/z_kanfont.h +++ b/include/def/z_kanfont.h @@ -1,8 +1,8 @@ #pragma once struct Font; -void Font_LoadChar(Font* font, u8 character, u16 codePointIndex); -f32 Font_GetCharWidth(u8 character); +void Font_LoadChar(Font* font, wchar_t character, u16 codePointIndex); +f32 Font_GetCharWidth(wchar_t character); void Font_LoadMessageBoxIcon(Font* font, u16 icon); void Font_LoadOrderedFont(Font* font); void func_8006EE50(Font* font, u16 arg1, u16 arg2); diff --git a/roms/PAL_1.0/text/fra_message_data_static.cpp b/roms/PAL_1.0/text/fra_message_data_static.cpp deleted file mode 100644 index a3d9ef521..000000000 --- a/roms/PAL_1.0/text/fra_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, fraMessage) \ - const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; - -#include "translations/message_data_fr.enc.h" diff --git a/roms/PAL_1.0/text/ger_message_data_static.cpp b/roms/PAL_1.0/text/ger_message_data_static.cpp deleted file mode 100644 index e466cf151..000000000 --- a/roms/PAL_1.0/text/ger_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, gerMessage) \ - const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; - -#include "translations/message_data_de.enc.h" diff --git a/roms/PAL_1.0/text/nes_message_data_static.cpp b/roms/PAL_1.0/text/nes_message_data_static.cpp deleted file mode 100644 index 9e2b75cd3..000000000 --- a/roms/PAL_1.0/text/nes_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage) \ - const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; - -#include "translations/message_data_en.enc.h" diff --git a/roms/PAL_1.0/text/staff_message_data_static.cpp b/roms/PAL_1.0/text/staff_message_data_static.cpp deleted file mode 100644 index 951573715..000000000 --- a/roms/PAL_1.0/text/staff_message_data_static.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#define MESSAGE_DATA_STATIC - -#include "message_data_fmt.h" -#include "message_data_static.h" - -#define DEFINE_MESSAGE(textId, type, yPos, staffMessage) \ - const char _message_##textId##_staff[sizeof(staffMessage END)] = { staffMessage END }; - -#include "text/message_data_staff.enc.h" diff --git a/src/code/z_kanfont.cpp b/src/code/z_kanfont.cpp index 869b04fc0..372408251 100644 --- a/src/code/z_kanfont.cpp +++ b/src/code/z_kanfont.cpp @@ -15,7 +15,7 @@ void func_8006EE50(Font* font, u16 arg1, u16 arg2) /** * Loads a texture from nes_font_static for the requested `character` into the character texture buffer at `codePointIndex`. */ -void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) +void Font_LoadChar(Font* font, wchar_t character, u16 codePointIndex) { for(const CharInfo& info : font_static_lut) { @@ -28,7 +28,7 @@ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) Copy(&font->charTexBuf[codePointIndex], gMsgChar3FQuestionMarkTex, FONT_CHAR_TEX_SIZE); } -f32 Font_GetCharWidth(u8 character) +f32 Font_GetCharWidth(wchar_t character) { for(const CharInfo& info : font_static_lut) { diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index eeee3d7eb..9e20ae73a 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -74,63 +74,63 @@ MessageTableEntry sNesMessageEntryTable[] = { #include "translations/message_data_en.h" #undef DEFINE_MESSAGE_FFFC #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sGerMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, gerMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_ger, sizeof(gerMessage)}, #include "translations/message_data_de.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sFraMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, fraMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_fra, sizeof(fraMessage)}, #include "translations/message_data_fr.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sEsMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, esMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_es, sizeof(esMessage)}, #include "translations/message_data_es.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sPtMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, ptMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_pt, sizeof(ptMessage)}, #include "translations/message_data_pt.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sPtBrMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, brMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_br, sizeof(brMessage)}, #include "translations/message_data_pt-BR.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sItMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, itMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_it, sizeof(itMessage)}, #include "translations/message_data_it.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sSvSeMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, seMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_se, sizeof(seMessage)}, #include "translations/message_data_sv-SE.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; MessageTableEntry sStaffMessageEntryTable[] = { #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff, sizeof(staffMessage)}, #include "text/message_data_staff.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, 0, NULL, 0}, }; #undef HS_HORSE_ARCHERY @@ -153,19 +153,19 @@ MessageTableEntry* sMessageEntryTablePtr = sNesMessageEntryTable; MessageTableEntry* sStaffMessageEntryTablePtr = sStaffMessageEntryTable; s16 sTextboxBackgroundForePrimColors[][3] = { - {255, 255, 255}, {50, 20, 0}, {255, 60, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, + {255, 255, 255}, {50, 20, 0}, {255, 60, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, }; s16 sTextboxBackgroundBackPrimColors[][3] = { - {0, 0, 0}, - {220, 150, 0}, - {0, 0, 0}, - {0, 0, 0}, + {0, 0, 0}, + {220, 150, 0}, + {0, 0, 0}, + {0, 0, 0}, }; s16 sTextboxBackgroundYOffsets[] = { - 1, - 2, + 1, + 2, }; // original name: onpu_buff @@ -175,8 +175,8 @@ s16 sOcarinaNotesAlphaValues[9] = {0}; // Maps the ocarina song order to the quest item order s16 gOcarinaSongItemMap[] = { - OCARINA_SONG_MINUET, OCARINA_SONG_BOLERO, OCARINA_SONG_SERENADE, OCARINA_SONG_REQUIEM, OCARINA_SONG_NOCTURNE, OCARINA_SONG_PRELUDE, - OCARINA_SONG_LULLABY, OCARINA_SONG_EPONAS, OCARINA_SONG_SARIAS, OCARINA_SONG_SUNS, OCARINA_SONG_TIME, OCARINA_SONG_STORMS, + OCARINA_SONG_MINUET, OCARINA_SONG_BOLERO, OCARINA_SONG_SERENADE, OCARINA_SONG_REQUIEM, OCARINA_SONG_NOCTURNE, OCARINA_SONG_PRELUDE, + OCARINA_SONG_LULLABY, OCARINA_SONG_EPONAS, OCARINA_SONG_SARIAS, OCARINA_SONG_SUNS, OCARINA_SONG_TIME, OCARINA_SONG_STORMS, }; s32 sCharTexSize; @@ -203,7 +203,7 @@ void Message_ResetOcarinaNoteState(void) R_OCARINA_NOTES_YPOS(4) = 169; sOcarinaNoteBuf[0] = 0xFF; sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] = sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] = sOcarinaNotesAlphaValues[6] = sOcarinaNotesAlphaValues[7] = - sOcarinaNotesAlphaValues[8] = 0; + sOcarinaNotesAlphaValues[8] = 0; sOcarinaNoteAPrimR = 80; sOcarinaNoteAPrimG = 150; sOcarinaNoteAPrimB = 255; @@ -337,8 +337,8 @@ void Message_DrawTextChar(GlobalContext* globalCtx, void* textureImage, Gfx** p) { gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, msgCtx->textColorAlpha); gSPTextureRectangle( - gfx++, (x + R_TEXT_DROP_SHADOW_OFFSET) << 2, (y + R_TEXT_DROP_SHADOW_OFFSET) << 2, (x + R_TEXT_DROP_SHADOW_OFFSET + sCharTexSize) << 2, (y + R_TEXT_DROP_SHADOW_OFFSET + sCharTexSize) << 2, G_TX_RENDERTILE, 0, 0, sCharTexScale, - sCharTexScale); + gfx++, (x + R_TEXT_DROP_SHADOW_OFFSET) << 2, (y + R_TEXT_DROP_SHADOW_OFFSET) << 2, (x + R_TEXT_DROP_SHADOW_OFFSET + sCharTexSize) << 2, (y + R_TEXT_DROP_SHADOW_OFFSET + sCharTexSize) << 2, G_TX_RENDERTILE, 0, 0, sCharTexScale, + sCharTexScale); } gDPPipeSync(gfx++); @@ -351,10 +351,10 @@ void Message_DrawTextChar(GlobalContext* globalCtx, void* textureImage, Gfx** p) void Message_GrowTextbox(MessageContext* msgCtx) { static f32 sWidthCoefficients[] = { - 1.2f, 1.5f, 1.8f, 2.0f, 2.1f, 2.2f, 2.1f, 2.0f, + 1.2f, 1.5f, 1.8f, 2.0f, 2.1f, 2.2f, 2.1f, 2.0f, }; static f32 sHeightCoefficients[] = { - 0.6f, 0.75f, 0.9f, 1.0f, 1.05f, 1.1f, 1.05f, 1.0f, + 0.6f, 0.75f, 0.9f, 1.0f, 1.05f, 1.1f, 1.05f, 1.0f, }; f32 width = R_TEXTBOX_WIDTH_TARGET * (sWidthCoefficients[msgCtx->stateTimer.whole()] + sWidthCoefficients[msgCtx->stateTimer.whole()]); f32 height = R_TEXTBOX_HEIGHT_TARGET * sHeightCoefficients[msgCtx->stateTimer.whole()]; @@ -547,12 +547,12 @@ void Message_SetTextColor(MessageContext* msgCtx, u16 colorParameter) void Message_DrawTextboxIcon(GlobalContext* globalCtx, Gfx** p, s16 x, s16 y) { static s16 sIconPrimColors[][3] = { - {0, 80, 200}, - {50, 130, 255}, + {0, 80, 200}, + {50, 130, 255}, }; static s16 sIconEnvColors[][3] = { - {0, 0, 0}, - {0, 130, 255}, + {0, 0, 0}, + {0, 130, 255}, }; static s16 sIconPrimR = 0; static s16 sIconPrimG = 200; @@ -682,7 +682,7 @@ u16 Message_DrawItemIcon(GlobalContext* globalCtx, u16 itemId, Gfx** p, u16 i) MessageContext* msgCtx = &globalCtx->msgCtx; // clang-format off - if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { Audio_PlaySoundGeneral(0, &gAudioDefaultPos, 4, &D_801333E0, &D_801333E0, &gReverbAdd2); } + if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { Audio_PlaySoundGeneral(0, &gAudioDefaultPos, 4, &D_801333E0, &D_801333E0, &gReverbAdd2); } // clang-format on gDPPipeSync(gfx++); @@ -698,7 +698,7 @@ u16 Message_DrawItemIcon(GlobalContext* globalCtx, u16 itemId, Gfx** p, u16 i) gDPLoadTextureBlock(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); } gSPTextureRectangle( - gfx++, (msgCtx->textPosX + R_TEXTBOX_ICON_XPOS) << 2, R_TEXTBOX_ICON_YPOS << 2, (msgCtx->textPosX + R_TEXTBOX_ICON_XPOS + R_TEXTBOX_ICON_SIZE) << 2, (R_TEXTBOX_ICON_YPOS + R_TEXTBOX_ICON_SIZE) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gfx++, (msgCtx->textPosX + R_TEXTBOX_ICON_XPOS) << 2, R_TEXTBOX_ICON_YPOS << 2, (msgCtx->textPosX + R_TEXTBOX_ICON_XPOS + R_TEXTBOX_ICON_SIZE) << 2, (R_TEXTBOX_ICON_YPOS + R_TEXTBOX_ICON_SIZE) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(gfx++); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); @@ -902,8 +902,8 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) j += 2; } else if( - (lookAheadCharacter != MESSAGE_QUICKTEXT_DISABLE) && (lookAheadCharacter != MESSAGE_PERSISTENT) && (lookAheadCharacter != MESSAGE_EVENT) && (lookAheadCharacter != MESSAGE_BOX_BREAK_DELAYED) && - (lookAheadCharacter != MESSAGE_AWAIT_BUTTON_PRESS) && (lookAheadCharacter != MESSAGE_BOX_BREAK) && (lookAheadCharacter != MESSAGE_END)) + (lookAheadCharacter != MESSAGE_QUICKTEXT_DISABLE) && (lookAheadCharacter != MESSAGE_PERSISTENT) && (lookAheadCharacter != MESSAGE_EVENT) && (lookAheadCharacter != MESSAGE_BOX_BREAK_DELAYED) && + (lookAheadCharacter != MESSAGE_AWAIT_BUTTON_PRESS) && (lookAheadCharacter != MESSAGE_BOX_BREAK) && (lookAheadCharacter != MESSAGE_END)) { j++; } @@ -967,35 +967,35 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) break; case MESSAGE_BACKGROUND: // clang-format off - if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { Audio_PlaySoundGeneral(0, &gAudioDefaultPos, 4, &D_801333E0, &D_801333E0, &gReverbAdd2); } + if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { Audio_PlaySoundGeneral(0, &gAudioDefaultPos, 4, &D_801333E0, &D_801333E0, &gReverbAdd2); } // clang-format on gDPPipeSync(gfx++); gDPSetCombineMode(gfx++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor( - gfx++, 0, 0, sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][0], sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][1], - sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][2], msgCtx->textColorAlpha); + gfx++, 0, 0, sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][0], sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][1], + sTextboxBackgroundBackPrimColors[msgCtx->textboxBackgroundBackColorIdx][2], msgCtx->textColorAlpha); gDPLoadTextureBlock_4b(gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, G_IM_FMT_I, 96, 48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle( - gfx++, (msgCtx->textPosX + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1) << 2, - (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gfx++, (msgCtx->textPosX + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1) << 2, + (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b( - gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, G_IM_FMT_I, 96, 48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gfx++, (uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, G_IM_FMT_I, 96, 48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle( - gfx++, (msgCtx->textPosX + 96 + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1 + 96 + 1) << 2, - (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gfx++, (msgCtx->textPosX + 96 + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1 + 96 + 1) << 2, + (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(gfx++); gDPSetPrimColor( - gfx++, 0, 0, sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][0], sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][1], - sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][2], msgCtx->textColorAlpha); + gfx++, 0, 0, sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][0], sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][1], + sTextboxBackgroundForePrimColors[msgCtx->textboxBackgroundForeColorIdx][2], msgCtx->textColorAlpha); gDPLoadTextureBlock_4b(gfx++, ((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE), G_IM_FMT_I, 96, 48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(gfx++, msgCtx->textPosX << 2, R_TEXTBOX_BG_YPOS << 2, (msgCtx->textPosX + 96) << 2, (R_TEXTBOX_BG_YPOS + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b( - gfx++, ((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900), G_IM_FMT_I, 96, 48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gfx++, ((uintptr_t)msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900), G_IM_FMT_I, 96, 48, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle(gfx++, (msgCtx->textPosX + 96) << 2, R_TEXTBOX_BG_YPOS << 2, (msgCtx->textPosX + 192) << 2, (R_TEXTBOX_BG_YPOS + 48) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(gfx++); @@ -1129,8 +1129,8 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) break; } else if( - (lookAheadCharacter != MESSAGE_QUICKTEXT_DISABLE) && (lookAheadCharacter != MESSAGE_PERSISTENT) && (lookAheadCharacter != MESSAGE_EVENT) && (lookAheadCharacter != MESSAGE_BOX_BREAK_DELAYED) && - (lookAheadCharacter != MESSAGE_AWAIT_BUTTON_PRESS) && (lookAheadCharacter != MESSAGE_BOX_BREAK) && (lookAheadCharacter != MESSAGE_END)) + (lookAheadCharacter != MESSAGE_QUICKTEXT_DISABLE) && (lookAheadCharacter != MESSAGE_PERSISTENT) && (lookAheadCharacter != MESSAGE_EVENT) && (lookAheadCharacter != MESSAGE_BOX_BREAK_DELAYED) && + (lookAheadCharacter != MESSAGE_AWAIT_BUTTON_PRESS) && (lookAheadCharacter != MESSAGE_BOX_BREAK) && (lookAheadCharacter != MESSAGE_END)) { } else @@ -1341,9 +1341,9 @@ void Message_Decode(GlobalContext* globalCtx) for(i = 0; i < 4; i++) { - Font_LoadChar(font, digits[i], charTexIdx); + Font_LoadChar(font, digits[i] + '0', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if(i == 1) { @@ -1394,8 +1394,8 @@ void Message_Decode(GlobalContext* globalCtx) } if(loadChar) { - Font_LoadChar(font, digits[i], charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + Font_LoadChar(font, digits[i] + '0', charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; charTexIdx += FONT_CHAR_TEX_SIZE; decodedBufPos++; } @@ -1431,10 +1431,10 @@ void Message_Decode(GlobalContext* globalCtx) } if(loadChar) { - Font_LoadChar(font, digits[i], charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + Font_LoadChar(font, digits[i] + '0', charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; charTexIdx += FONT_CHAR_TEX_SIZE; - osSyncPrintf("%x(%x) ", digits[i], digits[i]); + osSyncPrintf("%x(%x) ", digits[i] + '0', digits[i]); decodedBufPos++; } } @@ -1457,10 +1457,10 @@ void Message_Decode(GlobalContext* globalCtx) { if(i == 1 || digits[i] != 0) { - Font_LoadChar(font, digits[i], charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + Font_LoadChar(font, digits[i] + '0', charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; charTexIdx += FONT_CHAR_TEX_SIZE; - osSyncPrintf("%x(%x) ", digits[i], digits[i]); + osSyncPrintf("%x(%x) ", digits[i] + '0', digits[i]); decodedBufPos++; } } @@ -1518,8 +1518,8 @@ void Message_Decode(GlobalContext* globalCtx) } if(loadChar) { - Font_LoadChar(font, digits[i], charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + Font_LoadChar(font, digits[i] + '0', charTexIdx); + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; charTexIdx += FONT_CHAR_TEX_SIZE; decodedBufPos++; } @@ -1552,9 +1552,9 @@ void Message_Decode(GlobalContext* globalCtx) for(i = 0; i < 4; i++) { - Font_LoadChar(font, digits[i], charTexIdx); + Font_LoadChar(font, digits[i] + '0', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if(i == 1) { @@ -1596,9 +1596,9 @@ void Message_Decode(GlobalContext* globalCtx) for(i = 0; i < 4; i++) { - Font_LoadChar(font, digits[i], charTexIdx); + Font_LoadChar(font, digits[i] + '0', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i]; + msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if(i == 1) { @@ -1624,9 +1624,9 @@ void Message_Decode(GlobalContext* globalCtx) msgCtx->textboxBackgroundYOffsetIdx = (font->msgBuf[msgCtx->msgBufPos + 3] & 0xF0) >> 4; msgCtx->textboxBackgroundUnkArg = font->msgBuf[msgCtx->msgBufPos + 3] & 0xF; DmaMgr_SendRequest1( - POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), message_texture_static_lut[msgCtx->textboxBackgroundIdx], 0x900, "../z_message_PAL.c", 1830); // TODO FIX seems out of bounds? lut only has two elements + POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), message_texture_static_lut[msgCtx->textboxBackgroundIdx], 0x900, "../z_message_PAL.c", 1830); // TODO FIX seems out of bounds? lut only has two elements DmaMgr_SendRequest1( - POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE + 0x900), message_texture_static_lut[msgCtx->textboxBackgroundIdx + 1], 0x900, "../z_message_PAL.c", 1834); // TODO FIX seems out of bounds? lut only has two elements + POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE + 0x900), message_texture_static_lut[msgCtx->textboxBackgroundIdx + 1], 0x900, "../z_message_PAL.c", 1834); // TODO FIX seems out of bounds? lut only has two elements msgCtx->msgBufPos += 3; R_TEXTBOX_BG_YPOS = R_TEXTBOX_Y + 8; numLines = 2; @@ -1857,8 +1857,8 @@ void Message_ContinueTextbox(GlobalContext* globalCtx, u16 textId) void Message_StartOcarina(GlobalContext* globalCtx, u16 ocarinaActionId) { static u16 sOcarinaSongFlagsMap[] = { - (1 << OCARINA_SONG_MINUET), (1 << OCARINA_SONG_BOLERO), (1 << OCARINA_SONG_SERENADE), (1 << OCARINA_SONG_REQUIEM), (1 << OCARINA_SONG_NOCTURNE), (1 << OCARINA_SONG_PRELUDE), (1 << OCARINA_SONG_LULLABY), - (1 << OCARINA_SONG_EPONAS), (1 << OCARINA_SONG_SARIAS), (1 << OCARINA_SONG_SUNS), (1 << OCARINA_SONG_TIME), (1 << OCARINA_SONG_STORMS), (1 << OCARINA_SONG_SCARECROW), + (1 << OCARINA_SONG_MINUET), (1 << OCARINA_SONG_BOLERO), (1 << OCARINA_SONG_SERENADE), (1 << OCARINA_SONG_REQUIEM), (1 << OCARINA_SONG_NOCTURNE), (1 << OCARINA_SONG_PRELUDE), (1 << OCARINA_SONG_LULLABY), + (1 << OCARINA_SONG_EPONAS), (1 << OCARINA_SONG_SARIAS), (1 << OCARINA_SONG_SUNS), (1 << OCARINA_SONG_TIME), (1 << OCARINA_SONG_STORMS), (1 << OCARINA_SONG_SCARECROW), }; MessageContext* msgCtx = &globalCtx->msgCtx; s32 textId; @@ -2133,32 +2133,32 @@ void Message_SetView(View* view) void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) { static s16 sOcarinaEffectActorIds[] = { - ACTOR_OCEFF_WIPE3, ACTOR_OCEFF_WIPE2, ACTOR_OCEFF_WIPE, ACTOR_OCEFF_SPOT, ACTOR_OCEFF_WIPE, ACTOR_OCEFF_STORM, ACTOR_OCEFF_WIPE4, + ACTOR_OCEFF_WIPE3, ACTOR_OCEFF_WIPE2, ACTOR_OCEFF_WIPE, ACTOR_OCEFF_SPOT, ACTOR_OCEFF_WIPE, ACTOR_OCEFF_STORM, ACTOR_OCEFF_WIPE4, }; static s16 sOcarinaEffectActorParams[] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000}; static void* sOcarinaNoteTextures[] = { - gOcarinaATex, gOcarinaCDownTex, gOcarinaCRightTex, gOcarinaCLeftTex, gOcarinaCUpTex, + gOcarinaATex, gOcarinaCDownTex, gOcarinaCRightTex, gOcarinaCLeftTex, gOcarinaCUpTex, }; static s16 sOcarinaNoteAPrimColors[][3] = { - {80, 150, 255}, - {100, 200, 255}, + {80, 150, 255}, + {100, 200, 255}, }; static s16 sOcarinaNoteAEnvColors[][3] = { - {10, 10, 10}, - {50, 50, 255}, + {10, 10, 10}, + {50, 50, 255}, }; static s16 sOcarinaNoteCPrimColors[][3] = { - {255, 255, 50}, - {255, 255, 180}, + {255, 255, 50}, + {255, 255, 180}, }; static s16 sOcarinaNoteCEnvColors[][3] = { - {10, 10, 10}, - {110, 110, 50}, + {10, 10, 10}, + {110, 110, 50}, }; static s16 sOcarinaNoteFlashTimer = 12; static s16 sOcarinaNoteFlashColorIdx = 1; static s16 sOcarinaSongFanfares[] = { - NA_BGM_OCA_MINUET, NA_BGM_OCA_BOLERO, NA_BGM_OCA_SERENADE, NA_BGM_OCA_REQUIEM, NA_BGM_OCA_NOCTURNE, NA_BGM_OCA_LIGHT, NA_BGM_OCA_SARIA, NA_BGM_OCA_EPONA, NA_BGM_OCA_ZELDA, NA_BGM_OCA_SUNS, NA_BGM_OCA_TIME, NA_BGM_OCA_STORM, + NA_BGM_OCA_MINUET, NA_BGM_OCA_BOLERO, NA_BGM_OCA_SERENADE, NA_BGM_OCA_REQUIEM, NA_BGM_OCA_NOCTURNE, NA_BGM_OCA_LIGHT, NA_BGM_OCA_SARIA, NA_BGM_OCA_EPONA, NA_BGM_OCA_ZELDA, NA_BGM_OCA_SUNS, NA_BGM_OCA_TIME, NA_BGM_OCA_STORM, }; InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; MessageContext* msgCtx = &globalCtx->msgCtx; @@ -2582,7 +2582,7 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) { sOcarinaNoteBuf[0] = OCARINA_NOTE_INVALID; sOcarinaNotesAlphaValues[0] = sOcarinaNotesAlphaValues[1] = sOcarinaNotesAlphaValues[2] = sOcarinaNotesAlphaValues[3] = sOcarinaNotesAlphaValues[4] = sOcarinaNotesAlphaValues[5] = sOcarinaNotesAlphaValues[6] = - sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0; + sOcarinaNotesAlphaValues[7] = sOcarinaNotesAlphaValues[8] = 0; if(msgCtx->msgMode == MSGMODE_SONG_PLAYBACK_NOTES_DROP) { msgCtx->msgMode = MSGMODE_OCARINA_AWAIT_INPUT; @@ -2611,8 +2611,8 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) if(msgCtx->lastPlayedSong >= OCARINA_SONG_SARIAS && msgCtx->lastPlayedSong < OCARINA_SONG_MEMORY_GAME) { Actor_Spawn( - &globalCtx->actorCtx, globalCtx, sOcarinaEffectActorIds[msgCtx->lastPlayedSong - OCARINA_SONG_SARIAS], player->actor.world.pos.x, player->actor.world.pos.y, player->actor.world.pos.z, 0, 0, 0, - sOcarinaEffectActorParams[msgCtx->lastPlayedSong - OCARINA_SONG_SARIAS]); + &globalCtx->actorCtx, globalCtx, sOcarinaEffectActorIds[msgCtx->lastPlayedSong - OCARINA_SONG_SARIAS], player->actor.world.pos.x, player->actor.world.pos.y, player->actor.world.pos.z, 0, 0, 0, + sOcarinaEffectActorParams[msgCtx->lastPlayedSong - OCARINA_SONG_SARIAS]); } } break; @@ -2708,7 +2708,7 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) else if((gSaveContext.eventInf[0] & 0xF) != 1) { Message_StartTextbox(globalCtx, msgCtx->lastPlayedSong + 0x88D, - NULL); // "Warp to [place name]?" + NULL); // "Warp to [place name]?" globalCtx->msgCtx.ocarinaMode = OCARINA_MODE_01; } else @@ -3174,11 +3174,11 @@ void Message_DrawMain(GlobalContext* globalCtx, Gfx** p) gDPSetEnvColor(gfx++, 10, 10, 10, 0); gDPLoadTextureBlock( - gfx++, sOcarinaNoteTextures[gOcarinaSongNotes[g].notesIdx[i]], G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gfx++, sOcarinaNoteTextures[gOcarinaSongNotes[g].notesIdx[i]], G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); gSPTextureRectangle( - gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) << 2, (notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, - 1 << 10); + gfx++, notePosX << 2, R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) << 2, (notePosX + 16) << 2, (R_OCARINA_NOTES_YPOS(gOcarinaSongNotes[g].notesIdx[i]) + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); } } @@ -3315,23 +3315,23 @@ void Message_Draw(GlobalContext* globalCtx) void Message_Update(GlobalContext* globalCtx) { static s16 sTextboxXPositions[] = { - 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, }; static s16 sTextboxLowerYPositions[] = { - 142, 142, 142, 142, 174, 142, + 142, 142, 142, 142, 174, 142, }; static s16 sTextboxUpperYPositions[] = { - 38, 38, 38, 38, 174, 38, + 38, 38, 38, 38, 174, 38, }; static s16 sTextboxMidYPositions[] = { - 90, 90, 90, 90, 174, 90, + 90, 90, 90, 90, 174, 90, }; static s16 sTextboxEndIconYOffset[] = { - 59, 59, 59, 59, 34, 59, + 59, 59, 59, 59, 34, 59, }; static s16 D_80153D3C[] = { - // additional unreferenced data - 0x0400, 0x0400, 0x0200, 0x0000, 0x1038, 0x0008, 0x200A, 0x088B, 0x0007, 0x0009, 0x000A, 0x107E, 0x2008, 0x2007, 0x0015, 0x0016, 0x0017, 0x0003, 0x0000, 0x270B, 0x00C8, 0x012C, 0x012D, 0xFFDA, 0x0014, 0x0016, 0x0014, 0x0016, + // additional unreferenced data + 0x0400, 0x0400, 0x0200, 0x0000, 0x1038, 0x0008, 0x200A, 0x088B, 0x0007, 0x0009, 0x000A, 0x107E, 0x2008, 0x2007, 0x0015, 0x0016, 0x0017, 0x0003, 0x0000, 0x270B, 0x00C8, 0x012C, 0x012D, 0xFFDA, 0x0014, 0x0016, 0x0014, 0x0016, }; static u8 D_80153D74 = 0; static u16 D_80153D78 = 0; diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index 793ea7b5f..ef2594c89 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1030,11 +1030,15 @@ - - - - - + + + + + + + + + diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index 17dd529f8..6b7db6bcd 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2908,20 +2908,32 @@ scenes - - text + + text - - text + + text - - text + + text - - text + + text - - text + + text + + + text + + + text + + + text + + + text From 65931c623233c4ef1d02a441f044b0efa57d430c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Mon, 15 May 2023 05:36:53 -0500 Subject: [PATCH 24/25] Add Unicode Support (3) --- ..._static.cpp => de_message_data_static.cpp} | 4 +- ..._static.cpp => en_message_data_static.cpp} | 4 +- assets/ALL/text/es_message_data_static.cpp | 2 +- ..._static.cpp => fr_message_data_static.cpp} | 4 +- assets/ALL/text/it_message_data_static.cpp | 2 +- assets/ALL/text/pt-BR_message_data_static.cpp | 2 +- assets/ALL/text/pt_message_data_static.cpp | 2 +- assets/ALL/text/staff_message_data_static.cpp | 2 +- assets/ALL/text/sv-SE_message_data_static.cpp | 2 +- include/global.h | 3 +- include/message_data_static.h | 32 +++++----- include/z64message.h | 7 ++- src/code/z_actor.cpp | 2 +- src/code/z_construct.cpp | 12 ++-- src/code/z_message_PAL.cpp | 59 +++++++------------ src/code/z_parameter.cpp | 10 ++-- src/overlays/actors/ovl_En_Mag/z_en_mag.cpp | 4 +- .../ovl_file_choose/z_file_choose.cpp | 4 +- .../ovl_file_choose/z_file_nameset_PAL.cpp | 8 +-- .../ovl_kaleido_scope/z_kaleido_map_PAL.cpp | 2 +- .../ovl_kaleido_scope/z_kaleido_scope_PAL.cpp | 56 +++++++++--------- src/port/options.cpp | 28 ++++----- tools/msgenc.py | 2 +- vs/OOT_Assets.vcxproj | 6 +- vs/OOT_Assets.vcxproj.filters | 26 ++++---- 25 files changed, 134 insertions(+), 151 deletions(-) rename assets/ALL/text/{ger_message_data_static.cpp => de_message_data_static.cpp} (50%) rename assets/ALL/text/{nes_message_data_static.cpp => en_message_data_static.cpp} (50%) rename assets/ALL/text/{fra_message_data_static.cpp => fr_message_data_static.cpp} (50%) diff --git a/assets/ALL/text/ger_message_data_static.cpp b/assets/ALL/text/de_message_data_static.cpp similarity index 50% rename from assets/ALL/text/ger_message_data_static.cpp rename to assets/ALL/text/de_message_data_static.cpp index e466cf151..e9060a6cc 100644 --- a/assets/ALL/text/ger_message_data_static.cpp +++ b/assets/ALL/text/de_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, gerMessage) \ - const char _message_##textId##_ger[sizeof(gerMessage END)] = { gerMessage END }; +#define DEFINE_MESSAGE(textId, type, yPos, deMessage) \ + const char _message_##textId##_de[sizeof(deMessage END)] = {deMessage END}; #include "translations/message_data_de.enc.h" diff --git a/assets/ALL/text/nes_message_data_static.cpp b/assets/ALL/text/en_message_data_static.cpp similarity index 50% rename from assets/ALL/text/nes_message_data_static.cpp rename to assets/ALL/text/en_message_data_static.cpp index 9e2b75cd3..b7176ddb0 100644 --- a/assets/ALL/text/nes_message_data_static.cpp +++ b/assets/ALL/text/en_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage) \ - const char _message_##textId##_nes[sizeof(nesMessage END)] = { nesMessage END }; +#define DEFINE_MESSAGE(textId, type, yPos, enMessage) \ + const char _message_##textId##_en[sizeof(enMessage END)] = {enMessage END}; #include "translations/message_data_en.enc.h" diff --git a/assets/ALL/text/es_message_data_static.cpp b/assets/ALL/text/es_message_data_static.cpp index d79fcde2d..7eb5bb95e 100644 --- a/assets/ALL/text/es_message_data_static.cpp +++ b/assets/ALL/text/es_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, esMessage) \ - const char _message_##textId##_es[sizeof(esMessage END)] = { esMessage END }; + const char _message_##textId##_es[sizeof(esMessage END)] = {esMessage END}; #include "translations/message_data_es.enc.h" diff --git a/assets/ALL/text/fra_message_data_static.cpp b/assets/ALL/text/fr_message_data_static.cpp similarity index 50% rename from assets/ALL/text/fra_message_data_static.cpp rename to assets/ALL/text/fr_message_data_static.cpp index a3d9ef521..c1a654188 100644 --- a/assets/ALL/text/fra_message_data_static.cpp +++ b/assets/ALL/text/fr_message_data_static.cpp @@ -3,7 +3,7 @@ #include "message_data_fmt.h" #include "message_data_static.h" -#define DEFINE_MESSAGE(textId, type, yPos, fraMessage) \ - const char _message_##textId##_fra[sizeof(fraMessage END)] = { fraMessage END }; +#define DEFINE_MESSAGE(textId, type, yPos, frMessage) \ + const char _message_##textId##_fr[sizeof(frMessage END)] = {frMessage END}; #include "translations/message_data_fr.enc.h" diff --git a/assets/ALL/text/it_message_data_static.cpp b/assets/ALL/text/it_message_data_static.cpp index 9c824b19e..fca813cfe 100644 --- a/assets/ALL/text/it_message_data_static.cpp +++ b/assets/ALL/text/it_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, itMessage) \ - const char _message_##textId##_it[sizeof(itMessage END)] = { itMessage END }; + const char _message_##textId##_it[sizeof(itMessage END)] = {itMessage END}; #include "translations/message_data_it.enc.h" diff --git a/assets/ALL/text/pt-BR_message_data_static.cpp b/assets/ALL/text/pt-BR_message_data_static.cpp index c769d4bfb..6dcfc5819 100644 --- a/assets/ALL/text/pt-BR_message_data_static.cpp +++ b/assets/ALL/text/pt-BR_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, brMessage) \ - const char _message_##textId##_br[sizeof(brMessage END)] = { brMessage END }; + const char _message_##textId##_br[sizeof(brMessage END)] = {brMessage END}; #include "translations/message_data_pt-BR.enc.h" diff --git a/assets/ALL/text/pt_message_data_static.cpp b/assets/ALL/text/pt_message_data_static.cpp index c08fa72e3..09f0ee99d 100644 --- a/assets/ALL/text/pt_message_data_static.cpp +++ b/assets/ALL/text/pt_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, ptMessage) \ - const char _message_##textId##_pt[sizeof(ptMessage END)] = { ptMessage END }; + const char _message_##textId##_pt[sizeof(ptMessage END)] = {ptMessage END}; #include "translations/message_data_pt.enc.h" diff --git a/assets/ALL/text/staff_message_data_static.cpp b/assets/ALL/text/staff_message_data_static.cpp index 951573715..df848ddf1 100644 --- a/assets/ALL/text/staff_message_data_static.cpp +++ b/assets/ALL/text/staff_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, staffMessage) \ - const char _message_##textId##_staff[sizeof(staffMessage END)] = { staffMessage END }; + const char _message_##textId##_staff[sizeof(staffMessage END)] = {staffMessage END}; #include "text/message_data_staff.enc.h" diff --git a/assets/ALL/text/sv-SE_message_data_static.cpp b/assets/ALL/text/sv-SE_message_data_static.cpp index fb3ed25ab..12f8eb8e6 100644 --- a/assets/ALL/text/sv-SE_message_data_static.cpp +++ b/assets/ALL/text/sv-SE_message_data_static.cpp @@ -4,6 +4,6 @@ #include "message_data_static.h" #define DEFINE_MESSAGE(textId, type, yPos, seMessage) \ - const char _message_##textId##_se[sizeof(seMessage END)] = { seMessage END }; + const char _message_##textId##_se[sizeof(seMessage END)] = {seMessage END}; #include "translations/message_data_sv-SE.enc.h" diff --git a/include/global.h b/include/global.h index e2ca5f337..d28bff769 100644 --- a/include/global.h +++ b/include/global.h @@ -1,11 +1,12 @@ #pragma once #include -#include #include "porting_defs.h" #include "z64.h" #ifdef __cplusplus #define _LANGUAGE_C_PLUS_PLUS +#include +std::wstring utf8_to_utf16(const std::string& utf8); #endif #include "macros.h" diff --git a/include/message_data_static.h b/include/message_data_static.h index e9b594d87..212a40c6e 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -6,26 +6,26 @@ enum TextBoxType { - /* 0 */ TEXTBOX_TYPE_BLACK, - /* 1 */ TEXTBOX_TYPE_WOODEN, - /* 2 */ TEXTBOX_TYPE_BLUE, - /* 3 */ TEXTBOX_TYPE_OCARINA, - /* 4 */ TEXTBOX_TYPE_NONE_BOTTOM, - /* 5 */ TEXTBOX_TYPE_NONE_NO_SHADOW, - /* 11 */ TEXTBOX_TYPE_CREDITS = 11 + TEXTBOX_TYPE_BLACK, + TEXTBOX_TYPE_WOODEN, + TEXTBOX_TYPE_BLUE, + TEXTBOX_TYPE_OCARINA, + TEXTBOX_TYPE_NONE_BOTTOM, + TEXTBOX_TYPE_NONE_NO_SHADOW, + TEXTBOX_TYPE_CREDITS = 11 }; enum TextBoxBackground { - /* 0 */ TEXTBOX_BG_CROSS + TEXTBOX_BG_CROSS }; enum TextBoxPosition { - /* 0 */ TEXTBOX_POS_VARIABLE, - /* 1 */ TEXTBOX_POS_TOP, - /* 2 */ TEXTBOX_POS_MIDDLE, - /* 3 */ TEXTBOX_POS_BOTTOM + TEXTBOX_POS_VARIABLE, + TEXTBOX_POS_TOP, + TEXTBOX_POS_MIDDLE, + TEXTBOX_POS_BOTTOM }; struct MessageTableEntry @@ -46,10 +46,10 @@ struct MessageTableEntry #undef DEFINE_MESSAGE -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage, gerMessage, fraMessage, esMessage, ptMessage, brMessage, itMessage, seMessage) \ - extern "C" const char _message_##textId##_nes[]; \ - extern "C" const char _message_##textId##_ger[]; \ - extern "C" const char _message_##textId##_fra[]; \ +#define DEFINE_MESSAGE(textId, type, yPos, enMessage, deMessage, frMessage, esMessage, ptMessage, brMessage, itMessage, seMessage) \ + extern "C" const char _message_##textId##_en[]; \ + extern "C" const char _message_##textId##_de[]; \ + extern "C" const char _message_##textId##_fr[]; \ extern "C" const char _message_##textId##_es[]; \ extern "C" const char _message_##textId##_pt[]; \ extern "C" const char _message_##textId##_br[]; \ diff --git a/include/z64message.h b/include/z64message.h index 8297f44c2..6623dc0cc 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -1,6 +1,7 @@ #pragma once #include "ultra64/types.h" #include "view.h" +#include //#include "z64audio.h" struct OcarinaStaff; @@ -14,9 +15,9 @@ enum TextBoxIcon enum Language { - LANGUAGE_ENG, - LANGUAGE_GER, - LANGUAGE_FRA, + LANGUAGE_EN, + LANGUAGE_DE, + LANGUAGE_FR, LANGUAGE_ES, LANGUAGE_PT, LANGUAGE_PT_BR, diff --git a/src/code/z_actor.cpp b/src/code/z_actor.cpp index 088514f3b..2093b7e87 100644 --- a/src/code/z_actor.cpp +++ b/src/code/z_actor.cpp @@ -868,7 +868,7 @@ void TitleCard_Update(GlobalContext* globalCtx, TitleCardContext* titleCtx) } // test -static int GetLanguageIndex(int maxLang = LANGUAGE_FRA) +static int GetLanguageIndex(int maxLang = LANGUAGE_FR) { if(gSaveContext.language > maxLang) return 0; diff --git a/src/code/z_construct.cpp b/src/code/z_construct.cpp index 4bd94d198..6d300bed7 100644 --- a/src/code/z_construct.cpp +++ b/src/code/z_construct.cpp @@ -47,14 +47,14 @@ void func_801109B0(GlobalContext* globalCtx) switch(gSaveContext.language) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: doActionOffset = 0; break; - case LANGUAGE_GER: + case LANGUAGE_DE: doActionOffset = 0x2B80; break; - case LANGUAGE_FRA: + case LANGUAGE_FR: doActionOffset = 0x5700; break; } @@ -64,14 +64,14 @@ void func_801109B0(GlobalContext* globalCtx) switch(gSaveContext.language) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: doActionOffset = 0x480; break; - case LANGUAGE_GER: + case LANGUAGE_DE: doActionOffset = 0x3000; break; - case LANGUAGE_FRA: + case LANGUAGE_FR: doActionOffset = 0x5B80; break; } diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 9e20ae73a..9463c7fe1 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -41,51 +41,38 @@ #define MSG_GET_OFFSET(a, b) a s16 sTextFade = false; // original name: key_off_flag ? - u8 D_8014B2F4 = 0; - s16 sOcarinaNoteBufPos = 0; - s16 sOcarinaNoteBufLen = 0; - u8 sTextboxSkipped = false; - u16 sNextTextId = 0; - s16 sTextIsCredits = false; - UNK_TYPE D_8014B30C = 0; - s16 sLastPlayedSong = 0xFF; // last played song? - s16 sHasSunsSong = false; - s16 sMessageHasSetSfx = false; - u16 sOcarinaSongBitFlags = 0; // ocarina bit flags #undef MESSAGE_DATA_FMT_H #define MESSAGE_DATA_STATIC #include "message_data_fmt.h" -MessageTableEntry sNesMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, nesMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_nes, sizeof(nesMessage)}, -#define DEFINE_MESSAGE_FFFC +MessageTableEntry sEnMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, enMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_en, sizeof(enMessage)}, #include "translations/message_data_en.h" -#undef DEFINE_MESSAGE_FFFC #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, }; -MessageTableEntry sGerMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, gerMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_ger, sizeof(gerMessage)}, +MessageTableEntry sDeMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, deMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_de, sizeof(deMessage)}, #include "translations/message_data_de.h" #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, }; -MessageTableEntry sFraMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, fraMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_fra, sizeof(fraMessage)}, +MessageTableEntry sFrMessageEntryTable[] = { +#define DEFINE_MESSAGE(textId, type, yPos, frMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_fr, sizeof(frMessage)}, #include "translations/message_data_fr.h" #undef DEFINE_MESSAGE {0xFFFF, 0, NULL, 0}, @@ -149,7 +136,7 @@ MessageTableEntry sStaffMessageEntryTable[] = { #undef YELLOW #undef BLACK -MessageTableEntry* sMessageEntryTablePtr = sNesMessageEntryTable; +MessageTableEntry* sMessageEntryTablePtr = sEnMessageEntryTable; MessageTableEntry* sStaffMessageEntryTablePtr = sStaffMessageEntryTable; s16 sTextboxBackgroundForePrimColors[][3] = { @@ -802,7 +789,6 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) { MessageContext* msgCtx = &globalCtx->msgCtx; u16 lookAheadCharacter; - u8 character; u16 j; u16 i; u16 sfxHi; @@ -837,7 +823,7 @@ void Message_DrawText(GlobalContext* globalCtx, Gfx** gfxP) for(i = 0; i < msgCtx->textDrawPos; i++) { - character = msgCtx->msgBufDecoded[i]; + u8 character = msgCtx->msgBufDecoded[i]; switch(character) { @@ -1171,7 +1157,7 @@ void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - GetLocalized(sIconItem32XOffsets); R_TEXTBOX_ICON_YPOS = y + 6; R_TEXTBOX_ICON_SIZE = 32; - DmaMgr_SendRequest1(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), icon_item_static_lut[itemId], 0x1000, "../z_message_PAL.c", 1473); + Copy(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), icon_item_static_lut[itemId], 0x1000); // "Item 32-0" osSyncPrintf("アイテム32-0\n"); } @@ -1180,7 +1166,7 @@ void Message_LoadItemIcon(GlobalContext* globalCtx, u16 itemId, s16 y) R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - GetLocalized(sIconItem24XOffsets); R_TEXTBOX_ICON_YPOS = y + 10; R_TEXTBOX_ICON_SIZE = 24; - DmaMgr_SendRequest1(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), icon_item_24_static_lut[itemId - ITEM_MEDALLION_FOREST], 0x900, "../z_message_PAL.c", 1482); + Copy(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), icon_item_24_static_lut[itemId - ITEM_MEDALLION_FOREST], 0x900); // "Item 24" osSyncPrintf("アイテム24=%d (%d) {%d}\n", itemId, itemId - ITEM_KOKIRI_EMERALD, 84); } @@ -1623,10 +1609,8 @@ void Message_Decode(GlobalContext* globalCtx) msgCtx->textboxBackgroundBackColorIdx = font->msgBuf[msgCtx->msgBufPos + 2] & 0xF; msgCtx->textboxBackgroundYOffsetIdx = (font->msgBuf[msgCtx->msgBufPos + 3] & 0xF0) >> 4; msgCtx->textboxBackgroundUnkArg = font->msgBuf[msgCtx->msgBufPos + 3] & 0xF; - DmaMgr_SendRequest1( - POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), message_texture_static_lut[msgCtx->textboxBackgroundIdx], 0x900, "../z_message_PAL.c", 1830); // TODO FIX seems out of bounds? lut only has two elements - DmaMgr_SendRequest1( - POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE + 0x900), message_texture_static_lut[msgCtx->textboxBackgroundIdx + 1], 0x900, "../z_message_PAL.c", 1834); // TODO FIX seems out of bounds? lut only has two elements + Copy(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE), message_texture_static_lut[msgCtx->textboxBackgroundIdx], 0x900); // TODO FIX seems out of bounds? lut only has two elements + Copy(POINTER_ADD(msgCtx->textboxSegment, MESSAGE_STATIC_TEX_SIZE + 0x900), message_texture_static_lut[msgCtx->textboxBackgroundIdx + 1], 0x900); // TODO FIX seems out of bounds? lut only has two elements msgCtx->msgBufPos += 3; R_TEXTBOX_BG_YPOS = R_TEXTBOX_Y + 8; numLines = 2; @@ -1752,13 +1736,13 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) { Message_FindCreditsMessage(globalCtx, textId); msgCtx->msgLength = font->msgLength; - DmaMgr_SendRequest1(font->msgBuf, font->msgOffset, font->msgLength, "../z_message_PAL.c", 1954); + Copy(font->msgBuf, font->msgOffset, font->msgLength); } else { Message_FindMessage(globalCtx, textId); msgCtx->msgLength = font->msgLength; - DmaMgr_SendRequest1(font->msgBuf, font->msgOffset, font->msgLength, "../z_message_PAL.c", 1966); + Copy(font->msgBuf, font->msgOffset, font->msgLength); } msgCtx->textBoxProperties = font->charTexBuf[0]; msgCtx->textBoxType = msgCtx->textBoxProperties >> 4; @@ -1768,7 +1752,7 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) osSyncPrintf("吹き出し種類=%d\n", msgCtx->textBoxType); if(textBoxType < TEXTBOX_TYPE_NONE_BOTTOM) { - DmaMgr_SendRequest1(msgCtx->textboxSegment, message_static_lut[messageStaticIndices[textBoxType]], MESSAGE_STATIC_TEX_SIZE, "../z_message_PAL.c", 2006); + Copy(msgCtx->textboxSegment, message_static_lut[messageStaticIndices[textBoxType]], MESSAGE_STATIC_TEX_SIZE); if(textBoxType == TEXTBOX_TYPE_BLACK) { msgCtx->textboxColorRed = 0; @@ -3690,16 +3674,16 @@ void Message_Update(GlobalContext* globalCtx) void Message_SetTables(void) { - sMessageEntryTablePtr = sNesMessageEntryTable; + sMessageEntryTablePtr = sEnMessageEntryTable; sStaffMessageEntryTablePtr = sStaffMessageEntryTable; switch(gSaveContext.language) { - case LANGUAGE_GER: - sMessageEntryTablePtr = sGerMessageEntryTable; + case LANGUAGE_DE: + sMessageEntryTablePtr = sDeMessageEntryTable; break; - case LANGUAGE_FRA: - sMessageEntryTablePtr = sFraMessageEntryTable; + case LANGUAGE_FR: + sMessageEntryTablePtr = sFrMessageEntryTable; break; case LANGUAGE_ES: sMessageEntryTablePtr = sEsMessageEntryTable; @@ -3716,9 +3700,6 @@ void Message_SetTables(void) case LANGUAGE_SV_SE: sMessageEntryTablePtr = sSvSeMessageEntryTable; break; - case LANGUAGE_ENG: - default: - sMessageEntryTablePtr = sNesMessageEntryTable; } } diff --git a/src/code/z_parameter.cpp b/src/code/z_parameter.cpp index d2dc6da39..c4a9ade1f 100644 --- a/src/code/z_parameter.cpp +++ b/src/code/z_parameter.cpp @@ -203,7 +203,7 @@ void Interface_ChangeAlpha(u16 alphaType) } // test -static int GetLanguageIndex(int maxLang = LANGUAGE_FRA) +static int GetLanguageIndex(int maxLang = LANGUAGE_FR) { if(gSaveContext.language > maxLang) return 0; @@ -2709,12 +2709,12 @@ void Interface_LoadActionLabel(InterfaceContext* interfaceCtx, u16 action, s16 l action = DO_ACTION_NONE; } - if(GetLanguageIndex() != LANGUAGE_ENG) + if(GetLanguageIndex() != LANGUAGE_EN) { action += DO_ACTION_MAX; } - if(GetLanguageIndex() == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FR) { action += DO_ACTION_MAX; } @@ -2796,12 +2796,12 @@ void Interface_LoadActionLabelB(GlobalContext* globalCtx, u16 action) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; - if(GetLanguageIndex() != LANGUAGE_ENG) + if(GetLanguageIndex() != LANGUAGE_EN) { action += DO_ACTION_MAX; } - if(GetLanguageIndex() == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FR) { action += DO_ACTION_MAX; } diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp index 5d72711c1..1789a5449 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.cpp @@ -454,11 +454,11 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) std::string nc = "NO CONTROLLER"; switch(gSaveContext.language) { - case LANGUAGE_GER: + case LANGUAGE_DE: ps = "DR\x8E""CKE START"; /* Ü */ nc = "CONTROLLER FEHLT"; break; - case LANGUAGE_FRA: + case LANGUAGE_FR: ps = "APPUYEZ SUR START"; nc = "MANETTE D\x86""BRANCH\x86""E"; /* É */ break; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp index f2927a5bd..95a5e7350 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.cpp @@ -43,7 +43,7 @@ namespace oot::gamestate static u16 GetLocalized(u16 array[]) { - if(gSaveContext.language > LANGUAGE_FRA) + if(gSaveContext.language > LANGUAGE_FR) return (u16)array[0]; else return (u16)array[gSaveContext.language]; @@ -51,7 +51,7 @@ namespace oot::gamestate static void* GetLocalized(void* array[]) { - if(gSaveContext.language > LANGUAGE_FRA) + if(gSaveContext.language > LANGUAGE_FR) return (void*)array[0]; else return (void*)array[gSaveContext.language]; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp index 5cec6d20d..d9ef3b9f1 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.cpp @@ -29,7 +29,7 @@ namespace oot::gamestate static u16 GetLocalized(u16 array[]) { - if(gSaveContext.language > LANGUAGE_FRA) + if(gSaveContext.language > LANGUAGE_FR) return (u16)array[0]; else return (u16)array[gSaveContext.language]; @@ -37,7 +37,7 @@ namespace oot::gamestate static void* GetLocalized(void* array[]) { - if(gSaveContext.language > LANGUAGE_FRA) + if(gSaveContext.language > LANGUAGE_FR) return (void*)array[0]; else return (void*)array[gSaveContext.language]; @@ -1065,7 +1065,7 @@ namespace oot::gamestate gSPVertex(POLY_OPA_DISP++, D_80811D30, 32, 0); } #else - if(gSaveContext.language == LANGUAGE_GER && 0) + if(gSaveContext.language == LANGUAGE_DE && 0) { gSPVertex(POLY_OPA_DISP++, &gOptionsMenuVtx[16], 32, 0); } @@ -1098,7 +1098,7 @@ namespace oot::gamestate gSPVertex(POLY_OPA_DISP++, D_80811F30, 32, 0); } #else - if(gSaveContext.language == LANGUAGE_GER && 0) + if(gSaveContext.language == LANGUAGE_DE && 0) { gSPVertex(POLY_OPA_DISP++, &gOptionsMenuVtx[64], 32, 0); } diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp index ce8cc64ed..4b9c54796 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map_PAL.cpp @@ -388,7 +388,7 @@ void KaleidoScope_DrawDungeonMap(GlobalContext* globalCtx, GraphicsContext* gfxC static void* GetLocalized(void* array[]) { - if(gSaveContext.language > LANGUAGE_FRA) + if(gSaveContext.language > LANGUAGE_FR) return (void*)array[0]; else return (void*)array[gSaveContext.language]; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp index 5686a6c1d..3eea89a5b 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.cpp @@ -54,7 +54,7 @@ Gfx* KaleidoScope_DrawPageSections(Gfx* gfx, Vtx* vertices, void** textures); s16 KaleidoScope_SetPageVertices(GlobalContext* globalCtx, Vtx* vtx, s16 pageId, s16 arg3); // test -static int GetLanguageIndex(int maxLang = LANGUAGE_FRA) +static int GetLanguageIndex(int maxLang = LANGUAGE_FR) { if(gSaveContext.language > maxLang) return 0; @@ -391,12 +391,12 @@ namespace oot::pause { switch(langId) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: return gPauseToSelectItemENGTex; - case LANGUAGE_GER: + case LANGUAGE_DE: return gPauseToSelectItemGERTex; - case LANGUAGE_FRA: + case LANGUAGE_FR: return gPauseToSelectItemFRATex; } return gPauseNoENGTex; @@ -609,12 +609,12 @@ namespace oot::pause { switch(langId) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: return gPauseToMapENGTex; - case LANGUAGE_GER: + case LANGUAGE_DE: return gPauseToMapGERTex; - case LANGUAGE_FRA: + case LANGUAGE_FR: return gPauseToMapFRATex; } return gPauseNoENGTex; @@ -699,12 +699,12 @@ namespace oot::pause { switch(langId) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: return gPauseToMapENGTex; - case LANGUAGE_GER: + case LANGUAGE_DE: return gPauseToMapGERTex; - case LANGUAGE_FRA: + case LANGUAGE_FR: return gPauseToMapFRATex; } return gPauseNoENGTex; @@ -802,12 +802,12 @@ namespace oot::pause { switch(langId) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: return gPauseToQuestStatusENGTex; - case LANGUAGE_GER: + case LANGUAGE_DE: return gPauseToQuestStatusGERTex; - case LANGUAGE_FRA: + case LANGUAGE_FR: return gPauseToQuestStatusFRATex; } return gPauseNoENGTex; @@ -937,12 +937,12 @@ namespace oot::pause { switch(langId) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: return gPauseToEquipmentENGTex; - case LANGUAGE_GER: + case LANGUAGE_DE: return gPauseToEquipmentGERTex; - case LANGUAGE_FRA: + case LANGUAGE_FR: return gPauseToEquipmentFRATex; } return gPauseNoENGTex; @@ -2362,7 +2362,7 @@ void KaleidoScope_DrawInfoPanel(GlobalContext* globalCtx) pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + GetLanguageIndex()); - if(GetLanguageIndex() == LANGUAGE_GER) + if(GetLanguageIndex() == LANGUAGE_DE) { pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] - 99; } @@ -2431,7 +2431,7 @@ void KaleidoScope_UpdateNamePanel(GlobalContext* globalCtx) { sp2A += 12; } - if(GetLanguageIndex() == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FR) { sp2A += 12; } @@ -2449,7 +2449,7 @@ void KaleidoScope_UpdateNamePanel(GlobalContext* globalCtx) { sp2A += 123; } - if(GetLanguageIndex() == LANGUAGE_FRA) + if(GetLanguageIndex() == LANGUAGE_FR) { sp2A += 123; } @@ -3303,14 +3303,14 @@ void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) switch(gSaveContext.language) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: pauseCtx->iconItemLangSegment = _icon_item_nes_staticSegmentRomStart; break; - case LANGUAGE_GER: + case LANGUAGE_DE: pauseCtx->iconItemLangSegment = _icon_item_ger_staticSegmentRomStart; break; - case LANGUAGE_FRA: + case LANGUAGE_FR: pauseCtx->iconItemLangSegment = _icon_item_fra_staticSegmentRomStart; break; } @@ -3321,14 +3321,14 @@ void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) { switch(gSaveContext.language) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36]; break; - case LANGUAGE_GER: + case LANGUAGE_DE: pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36 + 22]; break; - case LANGUAGE_FRA: + case LANGUAGE_FR: pauseCtx->nameSegment2 = (u8*)map_name_static_lut[gSaveContext.worldMapArea + 36 + 22 + 22]; break; } @@ -3928,14 +3928,14 @@ void KaleidoScope_GrayOutTextureRGBA32(u32* texture, u16 pixelCount) switch(gSaveContext.language) { - case LANGUAGE_ENG: + case LANGUAGE_EN: default: pauseCtx->iconItemLangSegment = _icon_item_nes_staticSegmentRomStart; break; - case LANGUAGE_GER: + case LANGUAGE_DE: pauseCtx->iconItemLangSegment = _icon_item_ger_staticSegmentRomStart; break; - case LANGUAGE_FRA: + case LANGUAGE_FR: pauseCtx->iconItemLangSegment = _icon_item_fra_staticSegmentRomStart; break; } diff --git a/src/port/options.cpp b/src/port/options.cpp index 9b8580a77..832b67674 100644 --- a/src/port/options.cpp +++ b/src/port/options.cpp @@ -35,15 +35,15 @@ std::string userLanguage() // FIXME: This is too complex, I rather use some struct with the lang data static const std::unordered_map languageMap = { - {LANGUAGE_AUTO, "auto"}, - {LANGUAGE_ENG, "en"}, - {LANGUAGE_ES, "es"}, - {LANGUAGE_FRA, "fr"}, - {LANGUAGE_GER, "de"}, - {LANGUAGE_PT, "pt"}, - {LANGUAGE_PT_BR, "pt_BR"}, - {LANGUAGE_IT, "it"}, - {LANGUAGE_SV_SE, "sv-SE"}, + {LANGUAGE_AUTO, "auto"}, + {LANGUAGE_EN, "en"}, + {LANGUAGE_ES, "es"}, + {LANGUAGE_FR, "fr"}, + {LANGUAGE_DE, "de"}, + {LANGUAGE_PT, "pt"}, + {LANGUAGE_PT_BR, "pt_BR"}, + {LANGUAGE_IT, "it"}, + {LANGUAGE_SV_SE, "sv-SE"}, }; std::string languageGetString(Language id) @@ -60,8 +60,8 @@ std::string languageGetString(Language id) Language languageGetId(const std::string& s) { auto it = std::find_if( - languageMap.begin(), languageMap.end(), // is full lang? - [&s](const std::pair& pair) { return pair.second == s; }); + languageMap.begin(), languageMap.end(), // is full lang? + [&s](const std::pair& pair) { return pair.second == s; }); if(it != languageMap.end()) { @@ -69,15 +69,15 @@ Language languageGetId(const std::string& s) } it = std::find_if( - languageMap.begin(), languageMap.end(), // is base lang? - [&s](const std::pair& pair) { return pair.second == s.substr(0, 2); }); + languageMap.begin(), languageMap.end(), // is base lang? + [&s](const std::pair& pair) { return pair.second == s.substr(0, 2); }); if(it != languageMap.end()) { return (Language)it->first; } - return LANGUAGE_ENG; // Fallback! + return LANGUAGE_EN; // Fallback! } namespace oot diff --git a/tools/msgenc.py b/tools/msgenc.py index 4632af1be..e6f1412e2 100644 --- a/tools/msgenc.py +++ b/tools/msgenc.py @@ -35,7 +35,7 @@ def do_enc(charmap, input, output): contents = re.sub(string_regex, cvt_str, contents) - with open(output, "w", encoding="raw_unicode_escape") as outfile: + with open(output, "w", encoding="raw_unicode_escape", newline='\n') as outfile: outfile.write(contents) if __name__ == "__main__": diff --git a/vs/OOT_Assets.vcxproj b/vs/OOT_Assets.vcxproj index ef2594c89..6ace8c7f4 100644 --- a/vs/OOT_Assets.vcxproj +++ b/vs/OOT_Assets.vcxproj @@ -1031,10 +1031,10 @@ - - + + - + diff --git a/vs/OOT_Assets.vcxproj.filters b/vs/OOT_Assets.vcxproj.filters index 6b7db6bcd..091389a60 100644 --- a/vs/OOT_Assets.vcxproj.filters +++ b/vs/OOT_Assets.vcxproj.filters @@ -2909,31 +2909,31 @@ scenes - text + text - - text - - - text + + text - text + text - - text + + text - text + text - text + text - text + text - text + text + + + text From d9952a673b63e8dd2b2f66e277aefd1c802a23ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaro=20Mart=C3=ADnez?= Date: Mon, 15 May 2023 18:20:12 -0500 Subject: [PATCH 25/25] Use textBoxType and textBoxPos only --- include/message_data_static.h | 6 +- include/z64message.h | 108 +++++++++++++++++----------------- src/code/z_message_PAL.cpp | 54 +++++++++-------- 3 files changed, 87 insertions(+), 81 deletions(-) diff --git a/include/message_data_static.h b/include/message_data_static.h index 212a40c6e..86f866902 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -12,7 +12,8 @@ enum TextBoxType TEXTBOX_TYPE_OCARINA, TEXTBOX_TYPE_NONE_BOTTOM, TEXTBOX_TYPE_NONE_NO_SHADOW, - TEXTBOX_TYPE_CREDITS = 11 + TEXTBOX_TYPE_CREDITS = 11, + TEXTBOX_TYPE_PERFORMANCE = 99 /* Free Ocarina Performance (no text box) */ }; enum TextBoxBackground @@ -31,7 +32,8 @@ enum TextBoxPosition struct MessageTableEntry { u16 textId; - u8 typePos; + TextBoxType type; + TextBoxPosition pos; const char* segment; u32 length; }; diff --git a/include/z64message.h b/include/z64message.h index 6623dc0cc..d15b77ad2 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -2,6 +2,7 @@ #include "ultra64/types.h" #include "view.h" #include +#include "message_data_static.h" //#include "z64audio.h" struct OcarinaStaff; @@ -115,6 +116,8 @@ struct Font { Pointer msgOffset; size_t msgLength; + TextBoxType msgType; + TextBoxPosition msgPos; u8 charTexBuf[FONT_CHAR_TEX_SIZE * 120]; u8 iconBuf[FONT_CHAR_TEX_SIZE]; u8 fontBuf[FONT_CHAR_TEX_SIZE * 320]; @@ -135,59 +138,58 @@ struct Font struct MessageContext { - /* 0x0000 */ View view; - /* 0x0128 */ Font font; - /* 0xE2B0 */ void* textboxSegment; // original name: "fukidashiSegment" - /* 0xE2B4 */ char unk_E2B4[0x4]; - /* 0xE2B8 */ OcarinaStaff* ocarinaStaff; // original name : "info" - /* 0xE2BC */ char unk_E2BC[0x3C]; - /* 0xE2F8 */ u16 textId; - /* 0xE2FA */ u16 choiceTextId; - /* 0xE2FC */ u8 textBoxProperties; // original name : "msg_disp_type" - /* 0xE2FD */ u8 textBoxType; // "Text Box Type" - /* 0xE2FE */ u8 textBoxPos; // text box position - /* 0xE300 */ s32 msgLength; // original name : "msg_data" - /* 0xE304 */ u8 msgMode; // original name: "msg_mode" - /* 0xE305 */ char unk_E305[0x1]; - /* 0xE306 */ u8 msgBufDecoded[200]; // decoded message buffer, may be smaller than this - /* 0xE3CE */ u16 msgBufPos; // original name : "rdp" - /* 0xE3D0 */ u16 unk_E3D0; // unused, only ever set to 0 - /* 0xE3D2 */ Counter textDrawPos; // draw all decoded characters up to this buffer position - /* 0xE3D4 */ u16 decodedTextLen; // decoded message buffer length - /* 0xE3D6 */ u16 textUnskippable; - /* 0xE3D8 */ s16 textPosX; - /* 0xE3DA */ s16 textPosY; - /* 0xE3DC */ s16 textColorR; - /* 0xE3DE */ s16 textColorG; - /* 0xE3E0 */ s16 textColorB; - /* 0xE3E2 */ s16 textColorAlpha; - /* 0xE3E4 */ u8 textboxEndType; // original name : "select" - /* 0xE3E5 */ u8 choiceIndex; - /* 0xE3E6 */ u8 choiceNum; // textboxes that are not choice textboxes have a choiceNum of 1 - /* 0xE3E7 */ TimerU8 stateTimer; - /* 0xE3E8 */ TimerU16 textDelayTimer; - /* 0xE3EA */ u16 textDelay; - /* 0xE3EA */ u16 lastPlayedSong; // original references : "Ocarina_Flog" , "Ocarina_Free" - /* 0xE3EE */ u16 ocarinaMode; // original name : "ocarina_mode" - /* 0xE3F0 */ u16 ocarinaAction; // original name : "ocarina_no" - /* 0xE3F2 */ u16 unk_E3F2; // this is like "lastPlayedSong" but set less often, original name : "chk_ocarina_no" - /* 0xE3F4 */ u16 unk_E3F4; // unused, only set to 0 in z_actor - /* 0xE3F6 */ u16 textboxBackgroundIdx; - /* 0xE3F8 */ u8 textboxBackgroundForeColorIdx; - /* 0xE3F8 */ u8 textboxBackgroundBackColorIdx; - /* 0xE3F8 */ u8 textboxBackgroundYOffsetIdx; - /* 0xE3F8 */ u8 textboxBackgroundUnkArg; // unused, set by the textbox background control character arguments - /* 0xE3FC */ char unk_E3FC[0x2]; - /* 0xE3FE */ s16 textboxColorRed; - /* 0xE400 */ s16 textboxColorGreen; - /* 0xE402 */ s16 textboxColorBlue; - /* 0xE404 */ s16 textboxColorAlphaTarget; - /* 0xE406 */ s16 textboxColorAlphaCurrent; - /* 0xE408 */ struct Actor* talkActor; - /* 0xE40C */ s16 disableWarpSongs; // warp song flag set by scene commands - /* 0xE40E */ s16 unk_E40E; // ocarina related - /* 0xE410 */ u8 lastOcaNoteIdx; -}; // size = 0xE418 + View view; + Font font; + void* textboxSegment; // original name: "fukidashiSegment" + char unk_E2B4[0x4]; + OcarinaStaff* ocarinaStaff; // original name : "info" + char unk_E2BC[0x3C]; + u16 textId; + u16 choiceTextId; + TextBoxType textBoxType; + TextBoxPosition textBoxPos; + s32 msgLength; // original name : "msg_data" + u8 msgMode; // original name: "msg_mode" + char unk_E305[0x1]; + u8 msgBufDecoded[200]; // decoded message buffer, may be smaller than this + u16 msgBufPos; // original name : "rdp" + u16 unk_E3D0; // unused, only ever set to 0 + Counter textDrawPos; // draw all decoded characters up to this buffer position + u16 decodedTextLen; // decoded message buffer length + u16 textUnskippable; + s16 textPosX; + s16 textPosY; + s16 textColorR; + s16 textColorG; + s16 textColorB; + s16 textColorAlpha; + u8 textboxEndType; // original name : "select" + u8 choiceIndex; + u8 choiceNum; // textboxes that are not choice textboxes have a choiceNum of 1 + TimerU8 stateTimer; + TimerU16 textDelayTimer; + u16 textDelay; + u16 lastPlayedSong; // original references : "Ocarina_Flog" , "Ocarina_Free" + u16 ocarinaMode; // original name : "ocarina_mode" + u16 ocarinaAction; // original name : "ocarina_no" + u16 unk_E3F2; // this is like "lastPlayedSong" but set less often, original name : "chk_ocarina_no" + u16 unk_E3F4; // unused, only set to 0 in z_actor + u16 textboxBackgroundIdx; + u8 textboxBackgroundForeColorIdx; + u8 textboxBackgroundBackColorIdx; + u8 textboxBackgroundYOffsetIdx; + u8 textboxBackgroundUnkArg; // unused, set by the textbox background control character arguments + char unk_E3FC[0x2]; + s16 textboxColorRed; + s16 textboxColorGreen; + s16 textboxColorBlue; + s16 textboxColorAlphaTarget; + s16 textboxColorAlphaCurrent; + struct Actor* talkActor; + s16 disableWarpSongs; // warp song flag set by scene commands + s16 unk_E40E; // ocarina related + u8 lastOcaNoteIdx; +}; enum DoAction { diff --git a/src/code/z_message_PAL.cpp b/src/code/z_message_PAL.cpp index 9463c7fe1..3cbda0253 100644 --- a/src/code/z_message_PAL.cpp +++ b/src/code/z_message_PAL.cpp @@ -58,66 +58,66 @@ u16 sOcarinaSongBitFlags = 0; // ocarina bit flags #include "message_data_fmt.h" MessageTableEntry sEnMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, enMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_en, sizeof(enMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, enMessage) {textId, type, yPos, _message_##textId##_en, sizeof(enMessage)}, #include "translations/message_data_en.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sDeMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, deMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_de, sizeof(deMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, deMessage) {textId, type, yPos, _message_##textId##_de, sizeof(deMessage)}, #include "translations/message_data_de.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sFrMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, frMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_fr, sizeof(frMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, frMessage) {textId, type, yPos, _message_##textId##_fr, sizeof(frMessage)}, #include "translations/message_data_fr.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sEsMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, esMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_es, sizeof(esMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, esMessage) {textId, type, yPos, _message_##textId##_es, sizeof(esMessage)}, #include "translations/message_data_es.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sPtMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, ptMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_pt, sizeof(ptMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, ptMessage) {textId, type, yPos, _message_##textId##_pt, sizeof(ptMessage)}, #include "translations/message_data_pt.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sPtBrMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, brMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_br, sizeof(brMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, brMessage) {textId, type, yPos, _message_##textId##_br, sizeof(brMessage)}, #include "translations/message_data_pt-BR.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sItMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, itMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_it, sizeof(itMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, itMessage) {textId, type, yPos, _message_##textId##_it, sizeof(itMessage)}, #include "translations/message_data_it.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sSvSeMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, seMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_se, sizeof(seMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, seMessage) {textId, type, yPos, _message_##textId##_se, sizeof(seMessage)}, #include "translations/message_data_sv-SE.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; MessageTableEntry sStaffMessageEntryTable[] = { -#define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, (_SHIFTL(type, 4, 8) | _SHIFTL(yPos, 0, 8)), _message_##textId##_staff, sizeof(staffMessage)}, +#define DEFINE_MESSAGE(textId, type, yPos, staffMessage) {textId, type, yPos, _message_##textId##_staff, sizeof(staffMessage)}, #include "text/message_data_staff.h" #undef DEFINE_MESSAGE - {0xFFFF, 0, NULL, 0}, + {0xFFFF, TEXTBOX_TYPE_BLACK, TEXTBOX_POS_VARIABLE, nullptr, 0}, }; #undef HS_HORSE_ARCHERY @@ -382,7 +382,8 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) if(messageTableEntry->textId == textId) { - font->charTexBuf[0] = messageTableEntry->typePos; + font->msgType = messageTableEntry->type; + font->msgPos = messageTableEntry->pos; font->msgOffset = messageTableEntry->segment; font->msgLength = messageTableEntry->length; return; @@ -395,7 +396,8 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) font = &globalCtx->msgCtx.font; messageTableEntry = sMessageEntryTablePtr; - font->charTexBuf[0] = messageTableEntry->typePos; + font->msgType = messageTableEntry->type; + font->msgPos = messageTableEntry->pos; font->msgOffset = messageTableEntry->segment; font->msgLength = messageTableEntry->length; } @@ -411,7 +413,8 @@ void Message_FindCreditsMessage(GlobalContext* globalCtx, u16 textId) if(messageTableEntry->textId == textId) { - font->charTexBuf[0] = messageTableEntry->typePos; + font->msgType = messageTableEntry->type; + font->msgPos = messageTableEntry->pos; font->msgOffset = messageTableEntry->segment; font->msgLength = messageTableEntry->length; return; @@ -1744,9 +1747,8 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) msgCtx->msgLength = font->msgLength; Copy(font->msgBuf, font->msgOffset, font->msgLength); } - msgCtx->textBoxProperties = font->charTexBuf[0]; - msgCtx->textBoxType = msgCtx->textBoxProperties >> 4; - msgCtx->textBoxPos = msgCtx->textBoxProperties & 0xF; + msgCtx->textBoxType = font->msgType; + msgCtx->textBoxPos = font->msgPos; textBoxType = msgCtx->textBoxType; // "Text Box Type" osSyncPrintf("吹き出し種類=%d\n", msgCtx->textBoxType); @@ -1959,7 +1961,7 @@ void Message_StartOcarina(GlobalContext* globalCtx, u16 ocarinaActionId) if(ocarinaActionId == OCARINA_ACTION_FREE_PLAY || ocarinaActionId == OCARINA_ACTION_CHECK_NOWARP) { msgCtx->msgMode = MSGMODE_OCARINA_STARTING; - msgCtx->textBoxType = 0x63; + msgCtx->textBoxType = TEXTBOX_TYPE_PERFORMANCE; } else if(ocarinaActionId == OCARINA_ACTION_FROGS) { @@ -3469,7 +3471,7 @@ void Message_Update(GlobalContext* globalCtx) R_TEXT_CHOICE_YPOS(0) = R_TEXTBOX_Y_TARGET + 20; R_TEXT_CHOICE_YPOS(1) = R_TEXTBOX_Y_TARGET + 32; R_TEXT_CHOICE_YPOS(2) = R_TEXTBOX_Y_TARGET + 44; - osSyncPrintf("message->msg_disp_type=%x\n", msgCtx->textBoxProperties & 0xF0); + osSyncPrintf("msgCtx->textBoxType=%x\n", msgCtx->textBoxType); if(msgCtx->textBoxType == TEXTBOX_TYPE_NONE_BOTTOM || msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW) { msgCtx->msgMode = MSGMODE_TEXT_STARTING;