Removed the language converter step, added full utf-16 support & aligned some texts

This commit is contained in:
KiritoDev 2021-05-29 15:58:08 -05:00
parent b67572c0e9
commit 280a34320d
33 changed files with 3045 additions and 42637 deletions

View File

@ -1830,17 +1830,11 @@ u8 gTextCourseArr[][7] = {
#else
#define CRS_NUM_X1 100
#endif
#ifdef VERSION_EU
#define TXT_STAR_X 89
#define ACT_NAME_X 107
#define LVL_NAME_X 108
#define MYSCORE_X 48
#else
#define TXT_STAR_X 98
#define ACT_NAME_X 116
#define LVL_NAME_X 117
#define MYSCORE_X 62
#endif
void render_pause_my_score_coins(void) {
u8 strCourseNum[4];
@ -1851,31 +1845,12 @@ void render_pause_my_score_coins(void) {
u8 courseIndex;
u8 starFlags;
#ifndef VERSION_EU
courseNameTbl = segmented_to_virtual(seg2_course_name_table);
actNameTbl = segmented_to_virtual(seg2_act_name_table);
#endif
courseIndex = gCurrCourseNum - 1;
starFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1);
#ifdef VERSION_EU
switch (gInGameLanguage) {
case LANGUAGE_ENGLISH:
actNameTbl = segmented_to_virtual(act_name_table_eu_en);
courseNameTbl = segmented_to_virtual(course_name_table_eu_en);
break;
case LANGUAGE_FRENCH:
actNameTbl = segmented_to_virtual(act_name_table_eu_fr);
courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);
break;
case LANGUAGE_GERMAN:
actNameTbl = segmented_to_virtual(act_name_table_eu_de);
courseNameTbl = segmented_to_virtual(course_name_table_eu_de);
break;
}
#endif
gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
@ -1890,23 +1865,16 @@ void render_pause_my_score_coins(void) {
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
if (courseIndex < COURSE_STAGES_COUNT && save_file_get_course_star_count(gCurrSaveFileNum - 1, courseIndex) != 0) {
print_generic_string(MYSCORE_X, 121, get_key_string("TEXT_MY_SCORE"));
u8* text = get_key_string("TEXT_MY_SCORE");
print_generic_string(ACT_NAME_X - moon_get_text_width(text, 1.0, FALSE), 121, text);
}
courseName = segmented_to_virtual(courseNameTbl[courseIndex]);
if (courseIndex < COURSE_STAGES_COUNT) {
#ifdef VERSION_EU
print_generic_string(48, 157, gTextCourseArr[gInGameLanguage]);
#else
print_generic_string(63, 157, get_key_string("TEXT_COURSE"));
#endif
int_to_str(gCurrCourseNum, strCourseNum);
#ifdef VERSION_EU
print_generic_string(get_string_width(gTextCourseArr[gInGameLanguage]) + 51, 157, strCourseNum);
#else
print_generic_string(CRS_NUM_X1, 157, strCourseNum);
#endif
actName = segmented_to_virtual(actNameTbl[(gCurrCourseNum - 1) * 6 + gDialogCourseActNum - 1]);
@ -1916,33 +1884,18 @@ void render_pause_my_score_coins(void) {
print_generic_string(TXT_STAR_X, 140, get_key_string("TEXT_UNFILLED_STAR"));
}
print_generic_string(ACT_NAME_X, 140, actName);
#ifndef VERSION_JP
print_generic_string(LVL_NAME_X, 157, &courseName[3]);
#endif
}
#ifndef VERSION_JP
else {
#ifdef VERSION_US
print_generic_string(94, 157, &courseName[3]);
#elif defined(VERSION_EU)
print_generic_string(get_str_x_pos_from_center(159, &courseName[3], 10.0f), 157, &courseName[3]);
#endif
}
#else
print_generic_string(117, 157, &courseName[3]);
#endif
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
}
#if defined(VERSION_JP) || defined(VERSION_SH)
#define TXT1_X 4
#define TXT2_X 116
#define Y_VAL7 0
#else
#define TXT1_X 3
#define TXT2_X 119
#define Y_VAL7 2
#endif
void render_pause_camera_options(s16 x, s16 y, s8 *index, s16 xIndex) {
handle_menu_scrolling(MENU_SCROLL_HORIZONTAL, index, 1, 2);
@ -1971,13 +1924,8 @@ void render_pause_camera_options(s16 x, s16 y, s8 *index, s16 xIndex) {
}
}
#if defined(VERSION_JP) || defined(VERSION_SH)
#define X_VAL8 0
#define Y_VAL8 4
#else
#define X_VAL8 4
#define Y_VAL8 2
#endif
void render_pause_course_options(s16 x, s16 y, s8 *index, s16 yIndex) {
@ -2282,24 +2230,12 @@ void play_star_fanfare_and_flash_hud(s32 arg, u8 starNum) {
}
}
#ifdef VERSION_EU
#define TXT_NAME_X1 centerX
#define TXT_NAME_X2 centerX - 1
#else
#define TXT_NAME_X1 71
#define TXT_NAME_X2 69
#endif
#if defined(VERSION_JP) || defined(VERSION_SH)
#define CRS_NUM_X2 95
#define CRS_NUM_X3 93
#define TXT_CLEAR_X1 205
#define TXT_CLEAR_X2 203
#else
#define CRS_NUM_X2 104
#define CRS_NUM_X3 102
#define TXT_CLEAR_X1 get_string_width(name) + 81
#define TXT_CLEAR_X2 get_string_width(name) + 79
#endif
void render_course_complete_lvl_info_and_hud_str(void) {
u8 textSymStar[] = { GLYPH_STAR, GLYPH_SPACE };
@ -2333,18 +2269,11 @@ void render_course_complete_lvl_info_and_hud_str(void) {
name = segmented_to_virtual(courseNameTbl[gLastCompletedCourseNum - 1]);
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, gDialogTextAlpha);
#ifdef VERSION_EU
centerX = get_str_x_pos_from_center(153, name, 12.0f);
#endif
print_generic_string(TXT_NAME_X1, 130, name);
#ifndef VERSION_EU
print_generic_string(TXT_CLEAR_X1, 130, get_key_string("TEXT_CLEAR"));
#endif
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
print_generic_string(TXT_NAME_X2, 132, name);
#ifndef VERSION_EU
print_generic_string(TXT_CLEAR_X2, 132, get_key_string("TEXT_CLEAR"));
#endif
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
print_hud_course_complete_string(HUD_PRINT_CONGRATULATIONS);
print_hud_course_complete_coins(118, 111);
@ -2399,9 +2328,6 @@ void render_save_confirmation(s16 x, s16 y, s8 *index, s16 sp6e) {
s16 render_course_complete_screen(void) {
s16 num;
#ifdef VERSION_EU
gInGameLanguage = eu_get_language();
#endif
switch (gDialogBoxState) {
case DIALOG_STATE_OPENING:
@ -2416,18 +2342,11 @@ s16 render_course_complete_screen(void) {
case DIALOG_STATE_VERTICAL:
shade_screen();
render_course_complete_lvl_info_and_hud_str();
#ifdef VERSION_EU
render_save_confirmation(86, &gDialogLineNum, 20);
#else
render_save_confirmation(100, 86, &gDialogLineNum, 20);
#endif
if (gCourseDoneMenuTimer > 110
&& (gPlayer3Controller->buttonPressed & A_BUTTON
|| gPlayer3Controller->buttonPressed & START_BUTTON
#ifdef VERSION_EU
|| gPlayer3Controller->buttonPressed & Z_TRIG
#endif
)) {
level_set_transition(0, 0);
play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);

View File

@ -247,11 +247,8 @@ void print_course_number(void) {
gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);
}
#if defined(VERSION_JP) || defined(VERSION_SH)
#define ACT_NAME_X 158
#else
#define TXT_SCORE_X 153
#define ACT_NAME_X 163
#endif
/**
* Print act selector strings, some with special checks.
@ -280,7 +277,8 @@ void print_act_selector_strings(void) {
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);
// Print the "MY SCORE" text if the coin score is more than 0
if (save_file_get_course_coin_score(gCurrSaveFileNum - 1, gCurrCourseNum - 1) != 0) {
print_generic_string(102, 118, get_key_string("TEXT_MY_SCORE"));
u8* text = get_key_string("TEXT_MY_SCORE");
print_generic_string(TXT_SCORE_X - moon_get_text_width(text, 1.0, FALSE), 117, text);
}
lvlNameX = get_str_x_pos_from_center(160, currLevelName + 3, 10.0f);

View File

@ -26,6 +26,7 @@ std::map<Achievement*, AchievementEntry*> entries;
namespace AchievementList {
/* Star achievements */
Achievement* STAR = new Achievement("", "", "/", "", 0, 0, nullptr);
Achievement* GET_1_STAR = MoonAchievements::bind(new Achievement("achievement.get1Stars", "textures/segment2/segment2.05C00.rgba16", "Your journey begins!", "Get one star", 0, 5, nullptr));
Achievement* GET_8_STARS = MoonAchievements::bind(new Achievement("achievement.get8Stars", "textures/segment2/segment2.05C00.rgba16", "You feel a strong power", "Get 8 stars", 0, 5, GET_1_STAR));
Achievement* GET_30_STARS = MoonAchievements::bind(new Achievement("achievement.get30Stars", "textures/segment2/segment2.05C00.rgba16", "TBD", "Get 30 stars", 0, 5, GET_8_STARS));
@ -106,11 +107,11 @@ namespace MoonInternal{
int id = 0;
for(auto &achievement : entries){
int achievementWidth = 128;
long long millis = moon_get_milliseconds();
AchievementEntry* aEntry = achievement.second;
if(aEntry->dead || achievement.second->launchTime >= millis) continue;
bool shouldClose = millis >= achievement.second->launchTime + achievement.first->duration;
int achievementWidth = 31 + 5 + MoonGetTextWidth(achievement.first->description, 1.0, false);
int aX = GetScreenWidth(false) / 2 - aEntry->width / 2;
int aY = GetScreenHeight() - aEntry->height - 20;
@ -120,7 +121,7 @@ namespace MoonInternal{
if(aEntry->width >= 32)
MoonDrawTexture(GFX_DIMENSIONS_FROM_LEFT_EDGE(aX), aY, 31, 31, sys_strdup(achievement.first->icon.c_str()));
if(aEntry->width >= achievementWidth * 0.9){
MoonDrawText(aX + 32 + 5, aY + 2, achievement.first->title, 0.8, {255,255,255,255}, true, false);
MoonDrawText(aX + 32 + 5, aY + 2, achievement.first->title, 0.8, {255,255,255,255}, true, false);
MoonDrawText(aX + 32 + 5, aY + 16, achievement.first->description, 0.8, {255,255,255,255}, true, false);
}
}

View File

@ -4,6 +4,7 @@
#include "moon/texts/moon-loader.h"
#include "moon/io/moon-io.h"
#include "moon/texts/text-converter.h"
#include "moon/utils/moon-env.h"
#include "moon/mod-engine/engine.h"
#include "moon/mod-engine/test.h"
@ -41,7 +42,7 @@ void moon_environment_save(char* key, char* value){
*/
u8 * moon_language_get_key( char* key ){
return getTranslatedText(Moon::getLanguageKey(std::string(key)).c_str());
return Moon::GetTranslatedText(Moon::getLanguageKey(std::string(key)));
}
/*

View File

@ -6,6 +6,7 @@
#include "pc/discord/discordrpc.h"
#endif
#include "text-converter.h"
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
@ -61,7 +62,7 @@ namespace Moon {
language = new LanguageEntry();
} else {
isChild = false;
string parentName = narrow(manifest[L"langLogo"].GetString());
wstring parentName = manifest[L"langName"].GetString();
for(auto &lng : languages){
if(lng->name == parentName){
language = lng;
@ -72,7 +73,7 @@ namespace Moon {
}
if(!isChild){
language->name = narrow(manifest[L"langName"].GetString());
language->name = manifest[L"langName"].GetString();
language->logo = narrow(manifest[L"langLogo"].GetString());
}
@ -100,7 +101,7 @@ namespace Moon {
lId++;
}
entry->str = getTranslatedText(narrow(base).c_str());
entry->str = Moon::GetTranslatedText(base);
language->dialogs.push_back(entry);
}
}
@ -117,12 +118,12 @@ namespace Moon {
for (WValue& course : courses.GetArray()){
if(courseId + 1 <= courses.Size() - 1) {
tmpCourses[courseId] = getTranslatedText(narrow(course[L"course"].GetString()).c_str());
tmpCourses[courseId] = Moon::GetTranslatedText(course[L"course"].GetString());
courseId++;
}
for (WValue& act : course[L"acts"].GetArray()){
language->acts.push_back(getTranslatedText(narrow(act.GetString()).c_str()));
language->acts.push_back(Moon::GetTranslatedText(act.GetString()));
}
}
@ -132,7 +133,7 @@ namespace Moon {
padding++;
}
tmpCourses[courseId + padding] = getTranslatedText(narrow(secret.GetString()).c_str());
tmpCourses[courseId + padding] = Moon::GetTranslatedText(secret.GetString());
courseId++;
}
@ -142,20 +143,14 @@ namespace Moon {
if(raw.HasMember(L"options")){
options = raw[L"options"];
for (WValue::ConstMemberIterator option = options.MemberBegin(); option != options.MemberEnd(); ++option) {
language->strings.insert(pair<string, string>(
narrow(option->name.GetString()),
narrow(option->value.GetString())
));
language->strings[narrow(option->name.GetString())] = option->value.GetString();
}
}
if(raw.HasMember(L"secrets")){
strings = raw[L"strings"];
for (WValue::ConstMemberIterator item = strings.MemberBegin(); item != strings.MemberEnd(); ++item) {
language->strings.insert(pair<string, string>(
narrow(item->name.GetString()),
narrow(item->value.GetString())
));
language->strings[narrow(item->name.GetString())] = item->value.GetString();
}
}
@ -173,9 +168,13 @@ namespace Moon {
#endif
}
string getLanguageKey(string key){
wstring getLanguageKey(string key){
return current->strings[key];
}
wstring getLanguageKey(wstring key){
return current->strings[narrow(key)];
}
}
namespace MoonInternal {

View File

@ -26,9 +26,9 @@ inline std::string narrow (const std::wstring& str) {
}
struct LanguageEntry {
std::string name;
std::wstring name;
std::string logo;
std::map<std::string, std::string> strings;
std::map<std::string, std::wstring> strings;
std::vector<u8*> acts;
std::vector<struct DialogEntry*> dialogs;
std::vector<u8*> courses;
@ -40,7 +40,8 @@ namespace Moon {
void loadLanguage(std::string path);
void setCurrentLanguage(LanguageEntry *new_language);
std::string getLanguageKey(std::string key);
std::wstring getLanguageKey(std::string key);
std::wstring getLanguageKey(std::wstring key);
}
namespace MoonInternal {

View File

@ -0,0 +1,124 @@
#include "text-converter.h"
#include <iostream>
#include <string>
#include <vector>
#include <map>
extern "C" {
#include "game/segment2.h"
}
using namespace std;
map<wstring, vector<int>> unicodeTable = {
{L"0",{0x0}}, {L"",{0x0}}, {L"1",{0x1}}, {L"",{0x1}},
{L"2",{0x2}}, {L"",{0x2}}, {L"3",{0x3}}, {L"",{0x3}},
{L"4",{0x4}}, {L"",{0x4}}, {L"5",{0x5}}, {L"",{0x5}},
{L"6",{0x6}}, {L"",{0x6}}, {L"7",{0x7}}, {L"",{0x7}},
{L"8",{0x8}}, {L"",{0x8}}, {L"9",{0x9}}, {L"",{0x9}},
{L"A",{0xa}}, {L"",{0xa}}, {L"B",{0xb}}, {L"",{0xb}},
{L"C",{0xc}}, {L"",{0xc}}, {L"D",{0xd}}, {L"",{0xd}},
{L"E",{0xe}}, {L"",{0xe}}, {L"F",{0xf}}, {L"",{0xf}},
{L"G",{0x10}}, {L"",{0x10}}, {L"H",{0x11}}, {L"",{0x11}},
{L"I",{0x12}}, {L"",{0x12}}, {L"J",{0x13}}, {L"",{0x13}},
{L"K",{0x14}}, {L"",{0x14}}, {L"L",{0x15}}, {L"",{0x15}},
{L"M",{0x16}}, {L"",{0x16}}, {L"N",{0x17}}, {L"",{0x17}},
{L"O",{0x18}}, {L"",{0x18}}, {L"P",{0x19}}, {L"",{0x19}},
{L"Q",{0x1a}}, {L"",{0x1a}}, {L"R",{0x1b}}, {L"",{0x1b}},
{L"S",{0x1c}}, {L"",{0x1c}}, {L"T",{0x1d}}, {L"",{0x1d}},
{L"U",{0x1e}}, {L"",{0x1e}}, {L"V",{0x1f}}, {L"",{0x1f}},
{L"W",{0x20}}, {L"",{0x20}}, {L"X",{0x21}}, {L"",{0x21}},
{L"Y",{0x22}}, {L"",{0x22}}, {L"Z",{0x23}}, {L"",{0x23}},
{L"a",{0x24}}, {L"",{0x24}}, {L"b",{0x25}}, {L"",{0x25}},
{L"c",{0x26}}, {L"",{0x26}}, {L"d",{0x27}}, {L"",{0x27}},
{L"e",{0x28}}, {L"",{0x28}}, {L"f",{0x29}}, {L"",{0x29}},
{L"g",{0x2a}}, {L"",{0x2a}}, {L"h",{0x2b}}, {L"",{0x2b}},
{L"i",{0x2c}}, {L"",{0x2c}}, {L"j",{0x2d}}, {L"",{0x2d}},
{L"k",{0x2e}}, {L"",{0x2e}}, {L"l",{0x2f}}, {L"",{0x2f}},
{L"m",{0x30}}, {L"",{0x30}}, {L"n",{0x31}}, {L"",{0x31}},
{L"o",{0x32}}, {L"",{0x32}}, {L"p",{0x33}}, {L"",{0x33}},
{L"q",{0x34}}, {L"",{0x34}}, {L"r",{0x35}}, {L"",{0x35}},
{L"s",{0x36}}, {L"",{0x36}}, {L"t",{0x37}}, {L"",{0x37}},
{L"u",{0x38}}, {L"",{0x38}}, {L"v",{0x39}}, {L"",{0x39}},
{L"w",{0x3a}}, {L"",{0x3a}}, {L"x",{0x3b}}, {L"",{0x3b}},
{L"y",{0x3c}}, {L"",{0x3c}}, {L"z",{0x3d}}, {L"",{0x3d}},
{L"'",{0x3e}}, {L"",{0x3e}}, {L".",{0x3f}}, {L"",{0x3f}},
{L",",{0x6f}}, {L"",{0x6f}}, {L"-",{0x9f}}, {L"",{0x9f}},
{L"(",{0xe1}}, {L"",{0xe1}}, {L")(",{0xe2}}, {L"",{0xe2}},
{L")",{0xe3}}, {L"",{0xe3}}, {L"+",{0xe4}}, {L"",{0xe4}},
{L"&",{0xe5}}, {L"",{0xe5}}, {L":",{0xe6}}, {L"",{0xe6}},
{L"!",{0xf2}}, {L"",{0xf2}}, {L"%",{0xf3}}, {L"",{0xf3}},
{L"?",{0xf4}}, {L"",{0xf4}}, {L"~",{0xf7}}, {L"",{0xf7}},
{L" ",{0x9e}}, {L" ",{0x9e}}, {L"\n",{0xfe}}, {L"",{0xf0}},
{L"",{0xf1}}, {L"",{0xf5}}, {L"",{0xf6}}, {L"",{0xf8}},
{L"",{0xe4}}, {L"$",{0xf9}}, {L"",{0xfa}}, {L"×",{0xfb}},
{L"",{0xfc}}, {L"",{0xfd}}, {L"^",{0x50}}, {L"|",{0x51}},
{L"<",{0x52}}, {L">",{0x53}}, {L"[%]",{0xe0}}, {L"[A]",{0x54}},
{L"[B]",{0x55}}, {L"[C]",{0x56}}, {L"[Z]",{0x57}}, {L"[R]",{0x58}},
{L"/",{0xd0}}, {L"",{0x40, 41}}, {L"¡",{0x42}}, {L"¿",{0x43}},
{L"À",{0x44}}, {L"Á",{0x45}}, {L"Â",{0x46}}, {L"Ã",{0x47}},
{L"Ä",{0x48}}, {L"Å",{0x49}}, {L"Æ",{0x4a}}, {L"Ç",{0x4b}},
{L"È",{0x4c}}, {L"É",{0x4d}}, {L"Ê",{0x4e}}, {L"Ë",{0x4f}},
{L"Ì",{0x59}}, {L"Í",{0x5a}}, {L"Î",{0x5b}}, {L"Ï",{0x5c}},
{L"Ð",{0x5d}}, {L"Ñ",{0x5e}}, {L"Ò",{0x5f}}, {L"Ó",{0x60}},
{L"Ô",{0x61}}, {L"Õ",{0x62}}, {L"Ö",{0x63}}, {L"Ø",{0x64}},
{L"Ù",{0x65}}, {L"Ú",{0x66}}, {L"Û",{0x67}}, {L"Ü",{0x68}},
{L"Ý",{0x69}}, {L"Þ",{0x6a}}, {L"ß",{0x6b}}, {L"à",{0x6c}},
{L"á",{0x6d}}, {L"â",{0x6e}}, {L"ã",{0x70}}, {L"ä",{0x71}},
{L"å",{0x72}}, {L"æ",{0x73}}, {L"ç",{0x74}}, {L"è",{0x75}},
{L"é",{0x76}}, {L"ê",{0x77}}, {L"ë",{0x78}}, {L"ì",{0x79}},
{L"í",{0x7a}}, {L"î",{0x7b}}, {L"ï",{0x7c}}, {L"ð",{0x7d}},
{L"ñ",{0x7e}}, {L"ò",{0x7f}}, {L"ó",{0x80}}, {L"ô",{0x81}},
{L"õ",{0x82}}, {L"ö",{0x83}}, {L"ø",{0x84}}, {L"ù",{0x85}},
{L"ú",{0x86}}, {L"û",{0x87}}, {L"ü",{0x88}}, {L"ý",{0x89}},
{L"þ",{0x8a}}, {L"ÿ",{0x8b}}, {L"Ą",{0x8c}}, {L"ą",{0x8d}},
{L"Ć",{0x8e}}, {L"ć",{0x8f}}, {L"Ę",{0x90}}, {L"ę",{0x91}},
{L"Ğ",{0x92}}, {L"ğ",{0x93}}, {L"İ",{0x94}}, {L"ı",{0x95}},
{L"Ł",{0x96}}, {L"ł",{0x97}}, {L"Ń",{0x98}}, {L"ń",{0x99}},
{L"Œ",{0x9a}}, {L"œ",{0x9b}}, {L"Ś",{0x9c}}, {L"ś",{0x9d}},
{L"Ş",{0xa0}}, {L"ş",{0xa1}}, {L"Ÿ",{0xa2}}, {L"Ź",{0xa3}},
{L"ź",{0xa4}}, {L"Ż",{0xa5}}, {L"ż",{0xa6}}, {L"",{0xa7}}
};
namespace Moon {
uint8_t* GetTranslatedText(wstring in){
vector<uint8_t> tmpAlloc;
tmpAlloc.clear();
wstring tmp = L"";
bool buildingIcon = false;
for(wchar_t& c : in) {
if(c == L']' && buildingIcon){
tmp += c;
buildingIcon = false;
if(unicodeTable.find(tmp) != unicodeTable.end())
for(auto &replacement : unicodeTable[tmp])
tmpAlloc.push_back(replacement);
tmp = L"";
} else if(c == L'[' || buildingIcon){
tmp += c;
buildingIcon = true;
} else {
wstring cStr = wstring({c});
if(unicodeTable.find(cStr) != unicodeTable.end()){
for(auto &replacement : unicodeTable[cStr])
tmpAlloc.push_back(replacement);
}
if(static_cast<unsigned char>((char)int(c)) > 127)
tmpAlloc.push_back(0x9e);
}
}
tmpAlloc.push_back(0xFF);
uint8_t *dump = new uint8_t[tmpAlloc.size()];
std::copy(tmpAlloc.begin(), tmpAlloc.end(), dump);
return dump;
}
}
namespace MoonInternal {
void setupTextConverter(string state){
if(state == "PreStartup"){
}
}
}

View File

@ -0,0 +1,13 @@
#ifndef MoonTextConverter
#define MoonTextConverter
#include <string>
namespace MoonInternal {
void setupTextConverter(std::string state);
}
namespace Moon {
uint8_t* GetTranslatedText(std::wstring in);
}
#endif

View File

@ -1,6 +1,7 @@
#ifndef IMoonCategory
#define IMoonCategory
#include "moon/texts/moon-loader.h"
#include "moon/ui/interfaces/moon-widget.h"
#include <vector>
#include <string>
@ -9,12 +10,16 @@ using namespace std;
class MoonCategory {
public:
MoonCategory(string categoryName){
MoonCategory(wstring categoryName){
this->categoryName = categoryName;
this->titleKey = true;
};
MoonCategory(string categoryName){
this->categoryName = wide(categoryName);
this->titleKey = true;
};
bool titleKey = false;
string categoryName;
wstring categoryName;
std::vector<MoonWidget*> catOptions;
};

View File

@ -11,9 +11,9 @@ extern "C" {
#include "pc/pc_main.h"
}
vector<string> lngNames;
vector<string> modes = {
"Auto", "Low", "Disabled"
vector<wstring> lngNames;
vector<wstring> modes = {
L"Auto", L"Low", L"Disabled"
};
MGameCategory::MGameCategory() : MoonCategory("TEXT_OPT_GAME"){

View File

@ -9,10 +9,10 @@ extern "C" {
#include "pc/configfile.h"
}
vector<string> filters = {
"TEXT_OPT_NEAREST",
"TEXT_OPT_LINEAR",
"TEXT_OPT_THREEPT"
vector<wstring> filters = {
L"TEXT_OPT_NEAREST",
L"TEXT_OPT_LINEAR",
L"TEXT_OPT_THREEPT"
};
MVideoCategory::MVideoCategory() : MoonCategory("TEXT_OPT_VIDEO"){

View File

@ -111,7 +111,7 @@ void drawButton(int x, int y, string text, string texture, int size, int offset,
}
void MoonOptMain::Draw(){
string curTitle = categories[categoryIndex]->titleKey ? Moon::getLanguageKey(categories[categoryIndex]->categoryName) : categories[categoryIndex]->categoryName;
wstring curTitle = categories[categoryIndex]->titleKey ? Moon::getLanguageKey(categories[categoryIndex]->categoryName) : categories[categoryIndex]->categoryName;
float txtWidth = MoonGetTextWidth(curTitle, 1.0, true);
MoonDrawRectangle(0, 0, GetScreenWidth(false), GetScreenHeight(), {0, 0, 0, 100}, false);

View File

@ -1,40 +1,54 @@
#include "moon-draw-utils.h"
#include <algorithm>
#include "gfx_dimensions.h"
#include "moon/texts/moon-loader.h"
#include "moon/texts/text-converter.h"
float MoonGetTextWidth(std::string text, float scale, bool colored) {
return (float)moon_get_text_width(getTranslatedText(text.c_str()), scale, colored);
float MoonGetTextWidth(std::wstring text, float scale, bool colored) {
return (float)moon_get_text_width(Moon::GetTranslatedText(text), scale, colored);
}
void MoonDrawText(float x, float y, std::string text, float scale, struct Color color, bool dropShadow, bool u4_3){
float MoonGetTextWidth(std::string text, float scale, bool colored) {
return (float)moon_get_text_width(Moon::GetTranslatedText(wide(text)), scale, colored);
}
void MoonDrawText(float x, float y, std::wstring text, float scale, struct Color color, bool dropShadow, bool u4_3){
if(!u4_3) x = GFX_DIMENSIONS_FROM_LEFT_EDGE(x);
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
if(dropShadow){
gDPSetEnvColor(gDisplayListHead++, 10, 10, 10, 255);
moon_draw_text(x, SCREEN_HEIGHT - y - 1 * scale, getTranslatedText(text.c_str()), scale);
moon_draw_text(x, SCREEN_HEIGHT - y - 1 * scale, Moon::GetTranslatedText(text), scale);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
}
gDPSetEnvColor(gDisplayListHead++, color.r, color.g, color.b, color.a);
moon_draw_text(x, SCREEN_HEIGHT - y, getTranslatedText(text.c_str()), scale);
moon_draw_text(x, SCREEN_HEIGHT - y, Moon::GetTranslatedText(text), scale);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
}
void MoonDrawColoredText(float x, float y, std::string text, float scale, struct Color color, bool dropShadow, bool u4_3){
void MoonDrawText(float x, float y, std::string text, float scale, struct Color color, bool dropShadow, bool u4_3){
MoonDrawText(x, y, wide(text), scale, color, dropShadow, u4_3);
}
void MoonDrawColoredText(float x, float y, std::wstring text, float scale, struct Color color, bool dropShadow, bool u4_3){
if(!u4_3) x = GFX_DIMENSIONS_FROM_LEFT_EDGE(x);
gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);
std::transform(text.begin(), text.end(), text.begin(), ::toupper);
if(dropShadow){
moon_draw_colored_text(x, y + 1, getTranslatedText(text.c_str()), scale, {10, 10, 10, 255});
moon_draw_colored_text(x, y + 1, Moon::GetTranslatedText(text), scale, {10, 10, 10, 255});
}
gDPSetEnvColor(gDisplayListHead++, color.r, color.g, color.b, color.a);
struct Color white = { 255, 255, 255, 255 };
moon_draw_colored_text(x, y, getTranslatedText(text.c_str()), scale, white);
moon_draw_colored_text(x, y, Moon::GetTranslatedText(text), scale, white);
gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
}
void MoonDrawColoredText(float x, float y, std::string text, float scale, struct Color color, bool dropShadow, bool u4_3){
MoonDrawText(x, y, wide(text), scale, color, dropShadow, u4_3);
}
void MoonDrawRectangle(float x, float y, float w, float h, struct Color c, bool u4_3){
moon_draw_rectangle(x, y, w, h, c, u4_3);
}

View File

@ -13,10 +13,15 @@ extern "C" {
#include "text/txtconv.h"
}
void MoonDrawText (float x, float y, std::wstring text, float scale, struct Color color, bool dropShadow, bool u4_3);
float MoonGetTextWidth (std::wstring text, float scale, bool colored);
void MoonDrawColoredText(float x, float y, std::wstring text, float scale, struct Color color, bool dropShadow, bool u4_3);
void MoonDrawText (float x, float y, std::string text, float scale, struct Color color, bool dropShadow, bool u4_3);
void MoonDrawTexture (float x, float y, float w, float h, char* texture);
float MoonGetTextWidth (std::string text, float scale, bool colored);
void MoonDrawRectangle (float x, float y, float w, float h, struct Color c, bool u4_3);
void MoonDrawColoredText(float x, float y, std::string text, float scale, struct Color color, bool dropShadow, bool u4_3);
void MoonDrawTexture (float x, float y, float w, float h, char* texture);
void MoonDrawRectangle (float x, float y, float w, float h, struct Color c, bool u4_3);
#endif

View File

@ -9,7 +9,7 @@ using namespace std;
bool mwvStickExecuted;
MWValue::MWValue(float x, float y, std::string title, MWValueBind bind){
MWValue::MWValue(float x, float y, std::wstring title, MWValueBind bind){
this->x = x;
this->y = y;
this->bind = bind;
@ -17,7 +17,7 @@ MWValue::MWValue(float x, float y, std::string title, MWValueBind bind){
this->titleKey = false;
}
MWValue::MWValue(float x, float y, std::string title, MWValueBind bind, bool titleKey){
MWValue::MWValue(float x, float y, std::wstring title, MWValueBind bind, bool titleKey){
this->x = x;
this->y = y;
this->bind = bind;
@ -25,6 +25,22 @@ MWValue::MWValue(float x, float y, std::string title, MWValueBind bind, bool tit
this->titleKey = titleKey;
}
MWValue::MWValue(float x, float y, std::string title, MWValueBind bind){
this->x = x;
this->y = y;
this->bind = bind;
this->title = wide(title);
this->titleKey = false;
}
MWValue::MWValue(float x, float y, std::string title, MWValueBind bind, bool titleKey){
this->x = x;
this->y = y;
this->bind = bind;
this->title = wide(title);
this->titleKey = titleKey;
}
int frameCounter = 0;
int focusAnimRange = 80;
float focusAnimation = focusAnimRange / 2;
@ -45,9 +61,9 @@ void MWValue::Draw(){
focusAnimation += step * (focusAnimationPingPong ? -1 : 1);
string rawTitle = this->titleKey ? Moon::getLanguageKey(this->title) : this->title;
wstring rawTitle = this->titleKey ? Moon::getLanguageKey(narrow(this->title)) : this->title;
float scale = 1;
float titleWidth = MoonGetTextWidth(rawTitle + " ", scale, false);
float titleWidth = MoonGetTextWidth(rawTitle + L" ", scale, false);
int barWidth = SCREEN_WIDTH - 50 - 14;
float tmpWidth = titleWidth;
@ -68,14 +84,14 @@ void MWValue::Draw(){
{61, 255, 113, 255},
{255, 61, 61, 255}
};
string statusText = status ? Moon::getLanguageKey("TEXT_OPT_ENABLED") : Moon::getLanguageKey("TEXT_OPT_DISABLED");
wstring statusText = status ? Moon::getLanguageKey("TEXT_OPT_ENABLED") : Moon::getLanguageKey("TEXT_OPT_DISABLED");
tmpWidth += MoonGetTextWidth(statusText, scale, false);
MoonDrawText(this->x + ( 10 + barWidth / 2 ) - tmpWidth / 2 + titleWidth, this->y, statusText, scale, toggleColors[status ? 0 : 1] , true, true);
} else if(this->bind.values != NULL && this->bind.index != NULL){
int index = *this->bind.index;
string text = this->bind.valueKeys ? Moon::getLanguageKey((*this->bind.values)[index]) : (*this->bind.values)[index];
wstring text = this->bind.valueKeys ? Moon::getLanguageKey((*this->bind.values)[index]) : (*this->bind.values)[index];
tmpWidth += MoonGetTextWidth(text, scale, false);
MoonDrawText(this->x + ( 10 + barWidth / 2 ) - tmpWidth / 2 + titleWidth, this->y, text, scale, {58, 249, 252, 255}, true, true);
@ -83,7 +99,7 @@ void MWValue::Draw(){
float value = isFloat ? *this->bind.fvar : *this->bind.ivar;
float max = this->bind.max;
string text = to_string((int)(100 * (value / max))) + "%";
wstring text = to_wstring((int)(100 * (value / max))) + L"%";
tmpWidth += MoonGetTextWidth(text, scale, false);
MoonDrawText(this->x + ( 10 + barWidth / 2 ) - tmpWidth / 2 + titleWidth, this->y, text, scale, {58, 249, 252, 255}, true, true);

View File

@ -16,7 +16,7 @@ struct MWValueBind{
void (*btn)();
int *index;
std::vector<std::string>* values;
std::vector<std::wstring>* values;
bool valueKeys;
void (*callback)();
@ -27,7 +27,9 @@ class MWValue : public MoonWidget {
bool titleKey;
public:
MWValueBind bind;
std::string title;
std::wstring title;
MWValue(float x, float y, std::wstring title, MWValueBind bind);
MWValue(float x, float y, std::wstring title, MWValueBind bind, bool titleKey);
MWValue(float x, float y, std::string title, MWValueBind bind);
MWValue(float x, float y, std::string title, MWValueBind bind, bool titleKey);
void Init();

View File

@ -240,8 +240,8 @@ static void gfx_sdl_init(const char *window_title) {
wnd = SDL_CreateWindow(
window_title,
xpos, ypos, configWindow.w, configWindow.h,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, configWindow.w, configWindow.h,
SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE
);
ctx = SDL_GL_CreateContext(wnd);
moon_update_window(wnd);
@ -362,9 +362,15 @@ static inline void sync_framerate_with_timer(void) {
last_time += frame_time;
}
int fwb = 0;
static void gfx_sdl_swap_buffers_begin(void) {
if (use_timer) sync_framerate_with_timer();
SDL_GL_SwapWindow(wnd);
if(fwb == 0){
fwb = 1;
SDL_ShowWindow(wnd);
}
}
static void gfx_sdl_swap_buffers_end(void) {
@ -396,4 +402,4 @@ struct GfxWindowManagerAPI gfx_sdl = {
gfx_sdl_shutdown
};
#endif // BACKEND_WM
#endif // BACKEND_WM

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,7 @@
"langName": "English",
"langLogo": "none"
},
"dialogs": [
{
"dialogs": [{
"ID": 0,
"linesPerBox": 6,
"leftOffset": 30,
@ -139,7 +138,7 @@
"mountaintop, where the",
"Big Bob-omb was?",
"Whaddya say? When I say",
"{12302}Go,{12303} let the race begin!",
"『Go,』 let the race begin!",
"",
"Ready....",
"",
@ -498,7 +497,7 @@
"width": 200,
"lines": [
"To open the door that",
"leads to the {12302}endless{12303}",
"leads to the 『endless』",
"stairs, you need 70",
"Stars.",
"Bwa ha ha!"
@ -641,7 +640,7 @@
"width": 200,
"lines": [
"There are four camera, or",
"{12302}[C],{12303} Buttons. Press [C]^",
"『[C],』 Buttons. Press [C]^",
"to look around using the",
"Control Stick.",
"",
@ -679,7 +678,7 @@
"Press [R] again to switch",
"to Lakitu's camera.",
"Pause the game and",
"switch the mode to {12302}fix{12303}",
"switch the mode to 『fix』",
"the camera in place while",
"holding [R]. Give it a try!"
]
@ -1315,7 +1314,7 @@
"Just stop, stand still,",
"press Start to pause the",
"game, then select",
"{12302}Exit Course.{12303}",
"『Exit Course.』",
"",
"You don't have to collect",
"all Power Stars in one",
@ -1689,7 +1688,7 @@
"You've stepped right into",
"my trap, just as I knew",
"you would! I warn you,",
"{12302}Friend,{12303} watch your",
"『Friend,』 watch your",
"step!"
]
},
@ -1891,8 +1890,8 @@
"width": 200,
"lines": [
"The shadowy star in front",
"of you is a {12302}Star",
"Marker.{12303} When you collect",
"of you is a Star",
"Marker. When you collect",
"all 8 Red Coins, the Star",
"will appear here."
]
@ -2461,7 +2460,7 @@
"",
"Be careful, though.",
"Bowser and his band",
"wrote the book on {12302}bad.{12303}",
"wrote the book on 『bad.』",
"Take my advice: When you",
"need to recover from",
"injuries, collect coins.",
@ -2944,14 +2943,14 @@
"I knew you could do it!",
"Now I have a very special",
"message for you.",
"{12302}Thanks for playing Super",
"Thanks for playing Super",
"Mario 64! This is the",
"end of the game, but not",
"the end of the fun. We want you to keep on",
"playing, so we have a",
"little something for you.",
"We hope that you like it!",
"Enjoy!!! {12303}",
"Enjoy!!! ",
"",
"The Super Mario 64 Team"
]
@ -3101,8 +3100,7 @@
]
}
],
"courses": [
{
"courses": [{
"course": " 1 BOB-OMB BATTLEFIELD",
"acts": [
"BIG BOB-OMB ON THE SUMMIT",
@ -3306,48 +3304,18 @@
"TEXT_OPT_ANALOGUE": "Analogue Camera",
"TEXT_OPT_MOUSE": "Mouse Look",
"TEXT_OPT_TEXFILTER": "Texture Filtering",
"TEXT_OPT_FSCREEN": "Fullscreen (Requires restart)",
"TEXT_OPT_FSCREEN": "Fullscreen",
"TEXT_OPT_NEAREST": "Nearest",
"TEXT_OPT_LINEAR": "Linear",
"TEXT_OPT_MVOLUME": "Master Volume",
"TEXT_OPT_MUSVOLUME": "Music Volume",
"TEXT_OPT_SFXVOLUME": "Sfx Volume",
"TEXT_OPT_ENVVOLUME": "Env Volume",
"TEXT_OPT_VSYNC": "Vertical Sync (Requires restart)",
"TEXT_OPT_DRAWDIST": "Draw Distance",
"TEXT_OPT_VSYNC": "Vertical Sync",
"TEXT_OPT_AUTO": "Auto",
"TEXT_OPT_HUD": "HUD",
"TEXT_OPT_THREEPT": "Three-point",
"TEXT_OPT_APPLY": "Apply",
"TEXT_OPT_60FPS": "60 Fps (Enable before Internal Res)",
"TEXT_OPT_INTERNAL_BOOL": "Enable Internal Res (Experimental)",
"TEXT_OPT_INTERNAL": "Internal Resolution",
"TEXT_OPT_RES1": "320x240",
"TEXT_OPT_RES2": "640x480",
"TEXT_OPT_RES3": "960x720",
"TEXT_OPT_RES4": "1440x1080",
"TEXT_OPT_RES5": "1920x1440",
"TEXT_OPT_RES6": "640x360",
"TEXT_OPT_RES7": "848x480",
"TEXT_OPT_RES8": "1280x720",
"TEXT_OPT_RES9": "1600x900",
"TEXT_OPT_RES10": "1920x1080",
"TEXT_OPT_RES11": "2560x1440",
"TEXT_OPT_RES12": "3840x2160",
"TEXT_OPT_WINDOW": "Window Resolution (Requires Restart)",
"TEXT_OPT_WINDOW_RES1": "320x240",
"TEXT_OPT_WINDOW_RES2": "640x480",
"TEXT_OPT_WINDOW_RES3": "960x720",
"TEXT_OPT_WINDOW_RES4": "1440x1080",
"TEXT_OPT_WINDOW_RES5": "1920x1440",
"TEXT_OPT_WINDOW_RES6": "640x360",
"TEXT_OPT_WINDOW_RES7": "848x480",
"TEXT_OPT_WINDOW_RES8": "1280x720",
"TEXT_OPT_WINDOW_RES9": "1600x900",
"TEXT_OPT_WINDOW_RES10": "1920x1080",
"TEXT_OPT_WINDOW_RES11": "2560x1440",
"TEXT_OPT_WINDOW_RES12": "3840x2160",
"TEXT_OPT_FORCE4BY3": "Force 4:3(Disables Internal Res)",
"TEXT_OPT_RESETWND": "Reset Window",
"TEXT_BIND_A": "A Button",
"TEXT_BIND_B": "B Button",
@ -3374,95 +3342,6 @@
"TEXT_OPT_CHEAT7": "Exit course at any time",
"TEXT_OPT_CHEAT8": "Huge Mario",
"TEXT_OPT_CHEAT9": "Tiny Mario",
"TEXT_OPT_COIN": "COIN CHEATS (HOLD [B])",
"TEXT_OPT_HOVER": "HOVER MODE",
"TEXT_OPT_MOON": "MOON GRAVITY",
"TEXT_OPT_RUN": "RUN SPEED",
"TEXT_OPT_NDB": "NO DEATH BARRIER",
"TEXT_OPT_JUMP": "ALL JUMPS HIGHER",
"TEXT_OPT_SPDDPS": "SPEED DISPLAY",
"TEXT_OPT_TPF": "T POSE FLOAT",
"TEXT_OPT_JB": "SONG LIST",
"TEXT_OPT_JBC": "PLAY SONG",
"TEXT_OPT_QUIKEND": "QUICK ENDING",
"TEXT_OPT_HURT": "HURT MARIO L + [A]",
"TEXT_OPT_CANN": "CANNON ANYWHERE L + [C]^",
"TEXT_OPT_AWK": "AUTOWALLKICK",
"TEXT_OPT_SHELL": "GET SHELL L + [R]",
"TEXT_OPT_BOB": "GET BOBOMB L + [B]",
"TEXT_OPT_SPAMBA": "SPAMBA L + [Z]",
"TEXT_OPT_SWIM": "SWIFT SWIM",
"TEXT_OPT_WING_CAP": "GET WING CAP",
"TEXT_OPT_METAL_CAP": "GET METAL CAP",
"TEXT_OPT_VANISH_CAP": "GET VANISH CAP",
"TEXT_OPT_REMOVE_CAP": "REMOVE CAP",
"TEXT_OPT_NORMAL_CAP": "RESET CAP",
"TEXT_OPT_BLJ": "BLJ ANYWHERE",
"TEXT_OPT_PAC": "PLAY AS",
"TEXT_OPT_TRIPLE": "ALL JUMPS TRIPLE",
"TEXT_OPT_FLY": "FLYER",
"TEXT_OPT_NOB": "NO BOUNDS",
"TEXT_OPT_FLJ": "FORWARD LONG JUMP",
"TEXT_OPT_TS": "TIME STOP",
"TEXT_OPT_COIN1": "OFF",
"TEXT_OPT_COIN2": "COIN",
"TEXT_OPT_COIN3": "BLUE COIN",
"TEXT_OPT_COIN4": "RED COIN",
"TEXT_OPT_SS1": "NORMAL",
"TEXT_OPT_SS2": "SLOW",
"TEXT_OPT_SS3": "SLOWER",
"TEXT_OPT_SS4": "FAST",
"TEXT_OPT_SS5": "FASTER",
"TEXT_OPT_PA1": "DISABLED",
"TEXT_OPT_PA2": "BLACK BOBOMB",
"TEXT_OPT_PA3": "PINK BOBOMB",
"TEXT_OPT_PA4": "GOOMBA",
"TEXT_OPT_PA5": "KOOPA SHELL",
"TEXT_OPT_PA6": "CHUCKYA",
"TEXT_OPT_PA7": "FLYGUY",
"TEXT_OPT_PA8": "PER LEVEL",
"TEXT_OPT_SEQ1": "GRASS",
"TEXT_OPT_SEQ2": "CASTLE",
"TEXT_OPT_SEQ3": "WATER",
"TEXT_OPT_SEQ4": "HOT",
"TEXT_OPT_SEQ5": "BOWSER",
"TEXT_OPT_SEQ6": "SNOW",
"TEXT_OPT_SEQ7": "SLIDE",
"TEXT_OPT_SEQ8": "SPOOKY",
"TEXT_OPT_SEQ9": "UNDERGROUND",
"TEXT_OPT_SEQ10": "KOOPA ROAD",
"TEXT_OPT_SEQ11": "FINAL BOWSER",
"TEXT_OPT_HURTCHT1": "DISABLED",
"TEXT_OPT_HURTCHT2": "BURN",
"TEXT_OPT_HURTCHT3": "SHOCK",
"TEXT_OPT_HURTCHT4": "ONE HP",
"TEXT_OPT_SPAMCHT1": "DISABLED",
"TEXT_OPT_SPAMCHT2": "AMP",
"TEXT_OPT_SPAMCHT3": "BLUE COIN SWITCH",
"TEXT_OPT_SPAMCHT4": "BOWLING BALL",
"TEXT_OPT_SPAMCHT5": "BREAKABLE BOX",
"TEXT_OPT_SPAMCHT6": "BREAKABLE BOX SMALL",
"TEXT_OPT_SPAMCHT7": "JUMPING BOX",
"TEXT_OPT_SPAMCHT8": "CHECKERBOARD PLATFORM",
"TEXT_OPT_SPAMCHT9": "CHUCKYA",
"TEXT_OPT_SPAMCHT10": "FLYGUY",
"TEXT_OPT_SPAMCHT11": "GOOMBAS",
"TEXT_OPT_SPAMCHT12": "HEART",
"TEXT_OPT_SPAMCHT13": "METAL BOX",
"TEXT_OPT_SPAMCHT14": "PURPLE SWITCH",
"TEXT_OPT_BLJCHT1": "DISABLED",
"TEXT_OPT_BLJCHT2": "ENABLED",
"TEXT_OPT_BLJCHT3": "ENABLED - BOOST: 1",
"TEXT_OPT_BLJCHT4": "ENABLED - BOOST: 2",
"TEXT_OPT_BLJCHT5": "ENABLED - BOOST: 3",
"TEXT_OPT_BLJCHT6": "ENABLED - BOOST: 4",
"TEXT_OPT_BLJCHT7": "ENABLED - BOOST: 5",
"TEXT_OPT_BLJCHT8": "RAPID FIRE",
"TEXT_OPT_BLJCHT9": "RAPID FIRE - BOOST: 1",
"TEXT_OPT_BLJCHT10": "RAPID FIRE - BOOST: 2",
"TEXT_OPT_BLJCHT11": "RAPID FIRE - BOOST: 3",
"TEXT_OPT_BLJCHT12": "RAPID FIRE - BOOST: 4",
"TEXT_OPT_BLJCHT13": "RAPID FIRE - BOOST: 5",
"TEXT_OPT_GAME": "GAME",
"TEXT_OPT_LANGUAGE": "Current Language",
"TEXT_OPT_PRECACHE": "Precache Textures",
@ -3471,11 +3350,11 @@
"strings": {
"TEXT_ZERO": "0",
"TEXT_COIN": "$",
"TEXT_STAR": "{09733}",
"TEXT_COIN_X": "${00215}",
"TEXT_STAR_X": "{09733}{00215}",
"TEXT_VARIABLE_X": "{00215}",
"TEXT_UNFILLED_STAR": "{09734}",
"TEXT_STAR": "",
"TEXT_COIN_X": "×",
"TEXT_STAR_X": "★×",
"TEXT_VARIABLE_X": "×",
"TEXT_UNFILLED_STAR": "",
"TEXT_NEW": "NEW",
"TEXT_4DASHES": "----",
"TEXT_PAUSE": "PAUSE",
@ -3504,10 +3383,10 @@
"TEXT_ERASE_FILE_BUTTON": "ERASE FILE",
"TEXT_HI_SCORE": "HI SCORE",
"TEXT_MY_SCORE": "MY SCORE",
"TEXT_SCORE_MARIO_A": "{09786}A",
"TEXT_SCORE_MARIO_B": "{09786}B",
"TEXT_SCORE_MARIO_C": "{09786}C",
"TEXT_SCORE_MARIO_D": "{09786}D",
"TEXT_SCORE_MARIO_A": "A",
"TEXT_SCORE_MARIO_B": "B",
"TEXT_SCORE_MARIO_C": "C",
"TEXT_SCORE_MARIO_D": "D",
"TEXT_COPY_IT_TO_WHERE": "COPY IT TO WHERE?",
"TEXT_COPYING_COMPLETED": "COPYING COMPLETED",
"TEXT_NO_FILE_TO_COPY_FROM": "NO EMPTY FILE",
@ -3542,4 +3421,4 @@
"TEXT_FOR_MARIO": "...for Mario...",
"TEXT_FILE_MARIO_QUESTION": "Mario!"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
{
"manifest": {
"langName": "Polski",
"langName": "Polish",
"langLogo": "none"
},
"dialogs": [
@ -14,19 +14,19 @@
"srodku pola bitewnego",
"Znajdz Gwiazdy Mocy,",
"ktore ukradl Bowser",
"ze swiat{00243}w w obrazach.",
"Najpierw, porozmawiaj z",
"ze swiatow w obrazach",
"Najpierw, porozmawiaj z ",
"Przyjaznym Bob-Ombem.",
"(Nacisnij [B] zeby",
"rozmawiac.) Na pewno ci",
"pomoze, tak samo zrobia",
"pomoze, tak samo zrobia ",
"jego przyjaciele, w innych",
"miejscach. Zeby czytac",
"znaki, st{00243}j w miejscu,",
"znaki, stoj w miejscu,",
"odwroc sie do nich i",
"nacisnij [B]. Nacisnij [A]",
"lub [B], aby czytac dalej.",
"Mozesz rozmawiac z niekt{00243}rymi",
"Mozesz rozmawiac z niektorymi",
"postaciami, stajac przed nimi,",
"i naciskajac [B]."
]
@ -37,7 +37,7 @@
"leftOffset": 95,
"width": 200,
"lines": [
"Uwazaj, jesli bedziesz tu",
"Uwazaj, jesli bedziesz tu ",
"spacerowal, mozesz",
"zostac trafiony",
"kula wodna!",
@ -55,7 +55,7 @@
"zeby znalezc",
"Wielkiego Bob-Omba.",
"Prosze, wroc do mnie,",
"po odzyskaniu",
"po odzyskaniu ",
"Gwiazdy Mocy!"
]
},
@ -65,7 +65,7 @@
"leftOffset": 95,
"width": 200,
"lines": [
"Hej, ty! Tam z przodu jest",
"Hej, ty! Tam z przodu jest ",
"niebezpiecznie, wiec sluchaj! ",
"Posluchaj mojej rady.",
"",
@ -98,7 +98,7 @@
"bedziesz mogl otwierac",
"nowe drzwi,",
"ktore prowadza do",
"innych swiat{00243}w!",
"innych swiatow!",
"Moi Bob-Ombowi przyjaciele",
"na ciebie czekaja.",
"Porozmawiaj z nimi-",
@ -134,7 +134,7 @@
"pokonales Wielkiego",
"Bob-omba? swietnie!",
"Musisz byc calkiem silny. I",
"calkiem szybki.",
"calkiem szybki.",
"Jak szybki jestes,",
"co?",
"Na tyle szybki,",
@ -218,9 +218,9 @@
"czy to moc Gwiazd?",
"Bylem smutny,",
"bo przegralem ostatni",
"wyscig. To moj domowy",
"swiat--co powiesz na",
"rewanz?",
"wyscig. To moj domowy ",
"swiat--co powiesz na ",
"rematch?",
"Meta jest w",
"Wiosce wiatru.",
"Gotowy?",
@ -235,7 +235,7 @@
"width": 200,
"lines": [
"Wlasnie stanales na",
"przycisku aktywujacym",
"przycisk aktywujacy",
"Czapke lotu. Noszac",
"Czapke lotu, mozesz",
"latac.",
@ -256,7 +256,7 @@
"width": 200,
"lines": [
"Wlasnie stanales na",
"przycisku aktywujacym",
"przycisk aktywujacy",
"Metalowa czapke.!",
"Metalowa czapka sprawia, ze",
"Mario jest niezniszczalny.",
@ -277,7 +277,7 @@
"width": 200,
"lines": [
"Wlasnie stanales na",
"przycisku aktywujacym",
"przycisk aktywujacy",
"Znikajaca czapke.",
"Znikajaca czapka sprawia,",
"ze",
@ -344,7 +344,7 @@
"width": 200,
"lines": [
"Wskocz na swiecaca skorupe, i",
"pojedz gdziekolwiek",
"pojedz gdziekolwiek ",
"chcesz! Rozwal tych wrogow!"
]
},
@ -453,7 +453,7 @@
"width": 200,
"lines": [
"Ten klucz nie pasuje!",
"Moze jest do",
"Moze jest do ",
"piwnicy..."
]
},
@ -463,7 +463,7 @@
"leftOffset": 95,
"width": 200,
"lines": [
"Potrzebujesz mocy Gwiazd,",
"Potrzebujesz mocy gwiazd,",
"zeby otworzyc te drzwi.",
"Odzyskaj",
"Gwiazde Mocy od wroga,",
@ -526,10 +526,10 @@
"leftOffset": 95,
"width": 200,
"lines": [
"zeby otworzyc drzwi,",
"zeby otworzyc dzrwi,",
"ktore prowadza do",
"『nieskonczonych』",
"schod{00243}w, potrzebujesz 70",
"schodow, potrzebujesz 70",
"Gwiazd.",
"Bwa ha ha!"
]
@ -561,7 +561,7 @@
"mozesz sie rozgladac,",
"uzywajac [C]> i",
"[C]<. Nacisnij [C]|",
"zeby ogladac",
"zeby ogladac ",
"akcje z dystansu.",
"Jesli nie mozesz",
"ruszyc kamera dalej,",
@ -640,10 +640,10 @@
"width": 200,
"lines": [
"Dzien dobry. Bracia",
"Lakitu zdaja",
"relacje z",
"zewnatrz zamku",
"ksiezniczki",
"Lakitu",
"reportuja z",
"zewnatrz",
"zamku ksiezniczki",
"",
"Mario wlasnie",
"przyszedl do zamku.",
@ -661,19 +661,19 @@
"[C].",
"Jesli nie da sie",
"zmienic widoku,",
"zabrzeczy. Aby przyjrzec sie",
"otoczeniu, zatrzymaj sie",
"i nacisnij [C]^.",
"zabrzeczy. To take a look at",
"the surroundings, stop",
"and press [C]^.",
"",
"Nacisnij [A], aby wznowic gre.",
"Zmieniaj tryby kamery uzywajac",
"przycisku [R]. Tabliczki",
"na drodze zrecenzuja te",
"instrukcje.",
"Press [A] to resume play.",
"Switch camera modes with",
"the [R] Button. Signs along",
"the way will review these",
"instructions.",
"",
"Koniec wiadomosci, zdajac",
"relacje na zywo, to byli",
"Bracia Lakitu."
"For now, reporting live,",
"this has been the",
"Lakitu Bros."
]
},
{
@ -3145,7 +3145,7 @@
],
"courses": [
{
"course": " 1 POLE BITEWNE BOB-OMB{00211}W",
"course": " 1 POLE BITEWNE BOB-OMBoW",
"acts": [
"WIELKI BOB-OMB NA SZCZYCIE",
"WYsCIG Z KOOPa SZYBKIM",
@ -3159,7 +3159,7 @@
"course": " 2 FORTECA WHOMPA",
"acts": [
"ZNISZCZ BLOK WHOMPA",
"NA SAMa G{00211}Re FORTECY",
"NA SAMa GoRe FORTECY",
"STRZEL W NIEBO",
"CZERWONE MONETY NA UNIESIONEJ PLATFORMIE",
"SPADNIJ NA WYSPe W KLATCE",
@ -3173,12 +3173,12 @@
"CZY WeGORZ MOzE SIe POBAWIc?",
"SKARB JASKINI W OCEANIE",
"CZERWONE MONETY NA STATKU",
"WYSTRZEL DO KAMIENNEGO FILARU",
"WYSTRZEL DO KAMIENNEGO FLIARU",
"POPRZEZ STRUMIEn"
]
},
{
"course": " 4 CHlODNA, CHlODNA G{00211}RA",
"course": " 4 CHlODNA, CHlODNA GoRA",
"acts": [
"sLISKA ZJEzDzALNIA",
"ZAGUBIONY PINGWINEK",
@ -3203,7 +3203,7 @@
"course": " 6 MGLISTY LABIRYNT JASKIn",
"acts": [
"PlYWAJaCA BESTIA W JASKINI",
"WJEDz NA G{00211}Re PO 8 CZERWONYCH MONET",
"WJEDz NA GoRe PO 8 CZERWONYCH MONET",
"METALOWY MARIO MOze SIe PORUSZAc!",
"NAWIGUJaC W TOKSYCZNYM LABIRYNCIE",
"sWIETNE WYJsCIE AWARYJNE",
@ -3225,7 +3225,7 @@
"course": " 8 ZMIENNA KRAINA Z PIASKU",
"acts": [
"W SZPONACH WIELKIEGO PTAKA",
"sWIECaCA NA G{00211}RZE PIRAMIDY",
"sWIECaCA NA GoRZE PIRAMIDY",
"W sRODKU STAROzYTNEJ PIRAMIDY",
"STAn NA 4 FILARACH",
"LATANIE PO 8 CZERWONYCH MONET",
@ -3235,7 +3235,7 @@
{
"course": " 9 STRASZNE, STRASZNE DOKI",
"acts": [
"WEJDz NA l{00211}Dz BOWSERA",
"WEJDz NA loDz BOWSERA",
"SKRZYNIE W WODZIE",
"8 CZERWONYCH MONET NA SlUPACH",
"PRZEZ STRUMIEn",
@ -3261,14 +3261,14 @@
"WIERZCHOlEK MIASTA",
"SEKRETY W NIEBIE I WODZIE",
"SZYBKA WINDA--POSPIESZ SIe!",
"P{00211}JDz DO MIASTA PO CZERWONE MONETY",
"PoJDz DO MIASTA PO CZERWONE MONETY",
"SZYBKI WYsCIG PO MIEsCIE!"
]
},
{
"course": "12 WYSOKA, WYSOKA G{00211}RA",
"course": "12 WYSOKA, WYSOKA GoRA",
"acts": [
"WEJDz NA G{00211}Re",
"WEJDz NA GoRe",
"TAJEMNICA MAlPIEJ KLATKI",
"STRASZNE GRZYBY, CZERWONE MONETY",
"TAJEMNICZE ZBOCZE",
@ -3281,8 +3281,8 @@
"acts": [
"WYRWIJ KWIAT PIRANII",
"WIERZCHOlEK WIELKIEJ WYSPY",
"REWANZ Z KOOPa SZYBKIM",
"PIec MAlYCH SEKRET{00211}W",
"REMATCH Z KOOPa SZYBKIM",
"PIec MAlYCH SEKREToW",
"8 CZERWONYCH MONET WIGGLERA",
"NIECH WIGGLER SIe ZWINIE"
]
@ -3293,7 +3293,7 @@
"WTOCZ SIe DO KLATKI",
"DZIURY I WAHADlA",
"POMOCNA DlOn",
"ZNISZCZ THWOMPA",
"ZNISZCZ THOWMPA",
"SKOKI NA RUCHOMYCH PLATFORMACH",
"ZATRZYMAJ CZAS DLA CZERWONYCH MONET"
]
@ -3305,7 +3305,7 @@
"WIELKI DOM W NIEBIE",
"MONETY W LABIRYNCIE",
"KOlYSANIE W WIETRZYKU",
"TRUDNE TR{00211}JKaTY!",
"TRUDNE TRoJKaTY!",
"GDZIEs ZA TeCZa"
]
},
@ -3334,189 +3334,71 @@
"TEXT_OPT_UNBOUND": "BRAK",
"TEXT_OPT_PRESSKEY": "...",
"TEXT_OPT_BUTTON1": "[R] Opcje",
"TEXT_OPT_BUTTON2": "[R] Powr{00243}t",
"TEXT_OPT_ENABLED": "Wlaczona",
"TEXT_OPT_DISABLED": "Wylaczona",
"TEXT_OPT_CAMX": "Czulosc kamery poziomej",
"TEXT_OPT_CAMY": "Czulosc kamery pionowej",
"TEXT_OPT_INVERTX": "Odwroc os pozioma",
"TEXT_OPT_INVERTY": "Odwroc os pionowa",
"TEXT_OPT_BUTTON2": "[R] Powrot",
"TEXT_OPT_ENABLED": "Wlaczone",
"TEXT_OPT_DISABLED": "Wylaczone",
"TEXT_OPT_CAMX": "Camera X Sensitivity",
"TEXT_OPT_CAMY": "Camera Y Sensitivity",
"TEXT_OPT_INVERTX": "Invert X Axis",
"TEXT_OPT_INVERTY": "Invert Y Axis",
"TEXT_OPT_CAMC": "Camera Centre Aggression",
"TEXT_OPT_CAMP": "Camera Pan Level",
"TEXT_OPT_CAMD": "Camera Deceleration",
"TEXT_OPT_CAMON": "Swobodna kamera",
"TEXT_OPT_ANALOGUE": "Kamera analogowa",
"TEXT_OPT_MOUSE": "Obserwowanie myszka",
"TEXT_OPT_TEXFILTER": "Filtrowanie tekstur",
"TEXT_OPT_FSCREEN": "Pelny Ekran (Requires restart)",
"TEXT_OPT_CAMON": "Free Camera",
"TEXT_OPT_ANALOGUE": "Analogue Camera",
"TEXT_OPT_MOUSE": "Mouse Look",
"TEXT_OPT_TEXFILTER": "Texture Filtering",
"TEXT_OPT_FSCREEN": "Pelny Ekran",
"TEXT_OPT_NEAREST": "Nearest",
"TEXT_OPT_LINEAR": "Liniowe",
"TEXT_OPT_MVOLUME": "Gl{00243}wna glosnosc",
"TEXT_OPT_LINEAR": "Linear",
"TEXT_OPT_MVOLUME": "Master Volume",
"TEXT_OPT_MUSVOLUME": "Muzyka",
"TEXT_OPT_SFXVOLUME": "Efekty dzwiekowe",
"TEXT_OPT_ENVVOLUME": "Otoczenie",
"TEXT_OPT_VSYNC": "Synchronizacja pionowa (Requires restart)",
"TEXT_OPT_DRAWDIST": "Odleglosc renderowania",
"TEXT_OPT_VSYNC": "Vertical Sync",
"TEXT_OPT_AUTO": "Auto",
"TEXT_OPT_HUD": "Interfejs",
"TEXT_OPT_THREEPT": "Trzypunktowe",
"TEXT_OPT_APPLY": "Zastosuj",
"TEXT_OPT_60FPS": "60 Fps (Enable before Internal Res)",
"TEXT_OPT_INTERNAL_BOOL": "Enable Internal Res (Experimental)",
"TEXT_OPT_INTERNAL": "Internal Resolution",
"TEXT_OPT_RES1": "320x240",
"TEXT_OPT_RES2": "640x480",
"TEXT_OPT_RES3": "960x720",
"TEXT_OPT_RES4": "1440x1080",
"TEXT_OPT_RES5": "1920x1440",
"TEXT_OPT_RES6": "640x360",
"TEXT_OPT_RES7": "848x480",
"TEXT_OPT_RES8": "1280x720",
"TEXT_OPT_RES9": "1600x900",
"TEXT_OPT_RES10": "1920x1080",
"TEXT_OPT_RES11": "2560x1440",
"TEXT_OPT_RES12": "3840x2160",
"TEXT_OPT_WINDOW": "Window Resolution",
"TEXT_OPT_WINDOW_RES1": "320x240",
"TEXT_OPT_WINDOW_RES2": "640x480",
"TEXT_OPT_WINDOW_RES3": "960x720",
"TEXT_OPT_WINDOW_RES4": "1440x1080",
"TEXT_OPT_WINDOW_RES5": "1920x1440",
"TEXT_OPT_WINDOW_RES6": "640x360",
"TEXT_OPT_WINDOW_RES7": "848x480",
"TEXT_OPT_WINDOW_RES8": "1280x720",
"TEXT_OPT_WINDOW_RES9": "1600x900",
"TEXT_OPT_WINDOW_RES10": "1920x1080",
"TEXT_OPT_WINDOW_RES11": "2560x1440",
"TEXT_OPT_WINDOW_RES12": "3840x2160",
"TEXT_OPT_RESETWND": "Zresetuj okno",
"TEXT_BIND_A": "Przycisk A",
"TEXT_BIND_B": "Przycisk B",
"TEXT_BIND_START": "Przycisk Start",
"TEXT_OPT_HUD": "HUD",
"TEXT_OPT_THREEPT": "Three-point",
"TEXT_OPT_APPLY": "Apply",
"TEXT_OPT_RESETWND": "Reset Window",
"TEXT_BIND_A": "A Button",
"TEXT_BIND_B": "B Button",
"TEXT_BIND_START": "Start Button",
"TEXT_BIND_L": "L Trigger",
"TEXT_BIND_R": "R Trigger",
"TEXT_BIND_Z": "Z Trigger",
"TEXT_BIND_C_UP": "C-G{00243}ra",
"TEXT_BIND_C_DOWN": "C-D{00243}l",
"TEXT_BIND_C_LEFT": "C-Lewo",
"TEXT_BIND_C_RIGHT": "C-Prawo",
"TEXT_BIND_UP": "Galka w g{00243}re",
"TEXT_BIND_DOWN": "Galka w d{00243}l",
"TEXT_BIND_LEFT": "Galka w lewo",
"TEXT_BIND_RIGHT": "Galka w prawo",
"TEXT_BIND_C_UP": "C-Up",
"TEXT_BIND_C_DOWN": "C-Down",
"TEXT_BIND_C_LEFT": "C-Left",
"TEXT_BIND_C_RIGHT": "C-Right",
"TEXT_BIND_UP": "Stick Up",
"TEXT_BIND_DOWN": "Stick Down",
"TEXT_BIND_LEFT": "Stick Left",
"TEXT_BIND_RIGHT": "Stick Right",
"TEXT_OPT_DEADZONE": "Stick Deadzone",
"TEXT_OPT_RUMBLE": "Sila wibracji",
"TEXT_OPT_CHEAT1": "Wlacz kody",
"TEXT_OPT_CHEAT2": "Ksiezycowy skok (nacisnij L)",
"TEXT_OPT_CHEAT3": "Niezniszczalny Mario",
"TEXT_OPT_CHEAT4": "Nieskonczone zycia",
"TEXT_OPT_CHEAT5": "Super szybkosc",
"TEXT_OPT_CHEAT6": "Super czule sterowanie",
"TEXT_OPT_CHEAT7": "Wyjdz ze swiata w dowolnym momencie",
"TEXT_OPT_CHEAT8": "Olbrzymi Mario",
"TEXT_OPT_CHEAT9": "Malutki Mario",
"TEXT_OPT_COIN": "Kody Monetowe (Trzymaj [B])",
"TEXT_OPT_HOVER": "Tryb Unoszenia",
"TEXT_OPT_MOON": "Grawitacja Ksiezyca",
"TEXT_OPT_RUN": "Szybkosc Biegu",
"TEXT_OPT_NDB": "Brak Bariery Smierci",
"TEXT_OPT_JUMP": "Wszystkie Skoki Wyzsze",
"TEXT_OPT_SPDDPS": "Wyswietlacz Szybkosci",
"TEXT_OPT_TPF": "Unoszenie W T Pose",
"TEXT_OPT_JB": "Lista Piosenek",
"TEXT_OPT_JBC": "Zagraj Piosenke",
"TEXT_OPT_QUIKEND": "Szybkie Zakonczenie",
"TEXT_OPT_HURT": "Zran Mario L + [A]",
"TEXT_OPT_CANN": "Armata Gdziekolwiek L + [C]^",
"TEXT_OPT_AWK": "Auto Odbijanie Od Scian",
"TEXT_OPT_SHELL": "Zdobadz Skorupe L + [R]",
"TEXT_OPT_BOB": "Zdobadz Bobombe L + [B]",
"TEXT_OPT_SPAMBA": "Spamba L + [Z]",
"TEXT_OPT_SWIM": "Szybkie Plywanie",
"TEXT_OPT_WING_CAP": "Zdobadz Skrzydlata Czapke",
"TEXT_OPT_METAL_CAP": "Zdobadz Metalowa Czapke",
"TEXT_OPT_VANISH_CAP": "Zdobadz Niewidzialna Czapke",
"TEXT_OPT_REMOVE_CAP": "Zdejmij Czapke",
"TEXT_OPT_NORMAL_CAP": "Zresetuj Czapke",
"TEXT_OPT_BLJ": "BLJ Gdziekolwiek",
"TEXT_OPT_PAC": "Graj Jako",
"TEXT_OPT_TRIPLE": "Wszystkie Skoki Potr{00243}jne",
"TEXT_OPT_FLY": "Latacz",
"TEXT_OPT_NOB": "Bez Granic",
"TEXT_OPT_FLJ": "Daleki Skok Do Przodu",
"TEXT_OPT_TS": "Zatrzymanie Czasu",
"TEXT_OPT_COIN1": "Wylaczony",
"TEXT_OPT_COIN2": "Moneta",
"TEXT_OPT_COIN3": "Niebieska Moneta",
"TEXT_OPT_COIN4": "Czerwona Montea",
"TEXT_OPT_SS1": "Normalnie",
"TEXT_OPT_SS2": "Wolno",
"TEXT_OPT_SS3": "Wolniej",
"TEXT_OPT_SS4": "Szybko",
"TEXT_OPT_SS5": "Szybciej",
"TEXT_OPT_PA1": "Wylaczony",
"TEXT_OPT_PA2": "Czarna Bobomba",
"TEXT_OPT_PA3": "R{00243}zowa Bobomba",
"TEXT_OPT_PA4": "Goomba",
"TEXT_OPT_PA5": "Skorupa Koopy",
"TEXT_OPT_PA6": "Chuckya",
"TEXT_OPT_PA7": "FlyGuy",
"TEXT_OPT_PA8": "Co Etap",
"TEXT_OPT_SEQ1": "Trawa",
"TEXT_OPT_SEQ2": "Zamek",
"TEXT_OPT_SEQ3": "Woda",
"TEXT_OPT_SEQ4": "Gorace",
"TEXT_OPT_SEQ5": "Bowser",
"TEXT_OPT_SEQ6": "Snieg",
"TEXT_OPT_SEQ7": "Zjezdzalnia",
"TEXT_OPT_SEQ8": "Straszne",
"TEXT_OPT_SEQ9": "Podziemia",
"TEXT_OPT_SEQ10": "Sciezka Koopy",
"TEXT_OPT_SEQ11": "Ostateczny Bowser",
"TEXT_OPT_HURTCHT1": "Wylaczony",
"TEXT_OPT_HURTCHT2": "Podpalenie",
"TEXT_OPT_HURTCHT3": "Elektrowstrzas",
"TEXT_OPT_HURTCHT4": "Jeden Punkt Zycia",
"TEXT_OPT_SPAMCHT1": "Wylaczony",
"TEXT_OPT_SPAMCHT2": "Amp",
"TEXT_OPT_SPAMCHT3": "Przelacznik Niebieskich Monet",
"TEXT_OPT_SPAMCHT4": "Kula Do Kregli",
"TEXT_OPT_SPAMCHT5": "Zniszczalne Pudlo",
"TEXT_OPT_SPAMCHT6": "Zniszczalne Pudlo Male",
"TEXT_OPT_SPAMCHT7": "Skaczace Pudlo",
"TEXT_OPT_SPAMCHT8": "Platforma Z Szachownica",
"TEXT_OPT_SPAMCHT9": "Chuckya",
"TEXT_OPT_SPAMCHT10": "FlyGuy",
"TEXT_OPT_SPAMCHT11": "Goomby",
"TEXT_OPT_SPAMCHT12": "Serce",
"TEXT_OPT_SPAMCHT13": "Metalowe Pudlo",
"TEXT_OPT_SPAMCHT14": "Fioletowy Przelacznik",
"TEXT_OPT_BLJCHT1": "Wylaczony",
"TEXT_OPT_BLJCHT2": "Wlaczony",
"TEXT_OPT_BLJCHT3": "Wlaczony - Predkosc: 1",
"TEXT_OPT_BLJCHT4": "Wlaczony - Predkosc: 2",
"TEXT_OPT_BLJCHT5": "Wlaczony - Predkosc: 3",
"TEXT_OPT_BLJCHT6": "Wlaczony - Predkosc: 4",
"TEXT_OPT_BLJCHT7": "Wlaczony - Predkosc: 5",
"TEXT_OPT_BLJCHT8": "Naciskaj A",
"TEXT_OPT_BLJCHT9": "Naciskaj A - Predkosc: 1",
"TEXT_OPT_BLJCHT10": "Naciskaj A - Predkosc: 2",
"TEXT_OPT_BLJCHT11": "Naciskaj A - Predkosc: 3",
"TEXT_OPT_BLJCHT12": "Naciskaj A - Predkosc: 4",
"TEXT_OPT_BLJCHT13": "Naciskaj A - Predkosc: 5",
"TEXT_OPT_RUMBLE": "Rumble Strength",
"TEXT_OPT_CHEAT1": "Enable cheats",
"TEXT_OPT_CHEAT2": "Moonjump (Press L)",
"TEXT_OPT_CHEAT3": "Invincible Mario",
"TEXT_OPT_CHEAT4": "Infinite lives",
"TEXT_OPT_CHEAT5": "Super speed",
"TEXT_OPT_CHEAT6": "Super responsive controls",
"TEXT_OPT_CHEAT7": "Exit course at any time",
"TEXT_OPT_CHEAT8": "Huge Mario",
"TEXT_OPT_CHEAT9": "Tiny Mario",
"TEXT_OPT_GAME": "GRA",
"TEXT_OPT_LANGUAGE": "Jezyk",
"TEXT_OPT_PRECACHE": "Przechowuj tekstury",
"TEXT_OPT_SWITCH_HUD": "Interfejs Switch"
"TEXT_OPT_PRECACHE": "Precache Textures",
"TEXT_OPT_SWITCH_HUD": "Switch HUD"
},
"strings": {
"TEXT_ZERO": "0",
"TEXT_COIN": "$",
"TEXT_STAR": "{09733}",
"TEXT_COIN_X": "${00215}",
"TEXT_STAR_X": "{09733}{00215}",
"TEXT_VARIABLE_X": "{00215}",
"TEXT_UNFILLED_STAR": "{09734}",
"TEXT_STAR": "★",
"TEXT_COIN_X": "×",
"TEXT_STAR_X": "★×",
"TEXT_VARIABLE_X": "×",
"TEXT_UNFILLED_STAR": "☆",
"TEXT_NEW": "NOWY",
"TEXT_4DASHES": "----",
"TEXT_PAUSE": "PAUZA",
@ -3544,11 +3426,11 @@
"TEXT_COPY_FILE_BUTTON": "SKOPIUJ PLIK",
"TEXT_ERASE_FILE_BUTTON": "USUN PLIK",
"TEXT_HI_SCORE": "NOWY REKORD",
"TEXT_MY_SCORE": "M{00211}J REKORD",
"TEXT_SCORE_MARIO_A": "{09786}A",
"TEXT_SCORE_MARIO_B": "{09786}B",
"TEXT_SCORE_MARIO_C": "{09786}C",
"TEXT_SCORE_MARIO_D": "{09786}D",
"TEXT_MY_SCORE": "MoJ REKORD",
"TEXT_SCORE_MARIO_A": "A",
"TEXT_SCORE_MARIO_B": "B",
"TEXT_SCORE_MARIO_C": "C",
"TEXT_SCORE_MARIO_D": "D",
"TEXT_COPY_IT_TO_WHERE": "SKOPIUJ GDZIE?",
"TEXT_COPYING_COMPLETED": "KOPIOWANIE SKOnCZONE",
"TEXT_NO_FILE_TO_COPY_FROM": "BRAK PUSTEGO PLIKU",
@ -3557,7 +3439,7 @@
"TEXT_NO": "NIE",
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A USUNIeTE",
"TEXT_COURSE": "sWIAT",
"TEXT_MYSCORE": "M{00211}J REKORD",
"TEXT_MYSCORE": "MoJ REKORD",
"TEXT_CONTINUE": "KONTYNUUJ",
"TEXT_EXIT_COURSE": "WYJDz",
"TEXT_EXIT_GAME": "WYJDz Z GRY",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff