Added colored chars support and new languages

* Added ES_es language
* Updated ES_la language
* Added PT_br language
This commit is contained in:
NoHomoBoi 2020-09-13 22:56:46 -05:00
parent b20e3c7940
commit 5126ff7540
16 changed files with 14452 additions and 233 deletions

View File

@ -227,7 +227,6 @@ struct LanguageEntry* get_language(){
void set_language(struct LanguageEntry* new_language){ void set_language(struct LanguageEntry* new_language){
current_language = new_language; current_language = new_language;
printf("SWITCHED: %s\n", current_language->name);
dialogPool = new_language->dialogs; dialogPool = new_language->dialogs;
seg2_act_name_table = new_language->acts; seg2_act_name_table = new_language->acts;
seg2_course_name_table = new_language->courses; seg2_course_name_table = new_language->courses;

View File

@ -36,7 +36,7 @@ struct Character charmap[356] = {
{"{12407}", {0xf1, 0xf1}}, {"{12410}", {0xf1, 0xf1}}, {"{12413}", {0xf1, 0xf1}}, {"{12497}", {0xf1, 0xf1}}, {"{12500}", {0xf1, 0xf1}}, {"{12503}", {0xf1, 0xf1}}, {"{12506}", {0xf1, 0xf1}}, {"{12509}", {0xf1, 0xf1}}, {"^", {0x50, NULL}}, {"{12407}", {0xf1, 0xf1}}, {"{12410}", {0xf1, 0xf1}}, {"{12413}", {0xf1, 0xf1}}, {"{12497}", {0xf1, 0xf1}}, {"{12500}", {0xf1, 0xf1}}, {"{12503}", {0xf1, 0xf1}}, {"{12506}", {0xf1, 0xf1}}, {"{12509}", {0xf1, 0xf1}}, {"^", {0x50, NULL}},
{"|", {0x51, NULL}}, {"<", {0x52, NULL}}, {">", {0x53, NULL}}, {"[A]", {0x54, NULL}}, {"[B]", {0x55, NULL}}, {"[C]", {0x56, NULL}}, {"[Z]", {0x57, NULL}}, {"[R]", {0x58, NULL}}, {"/", {0xd0, NULL}}, {"|", {0x51, NULL}}, {"<", {0x52, NULL}}, {">", {0x53, NULL}}, {"[A]", {0x54, NULL}}, {"[B]", {0x55, NULL}}, {"[C]", {0x56, NULL}}, {"[Z]", {0x57, NULL}}, {"[R]", {0x58, NULL}}, {"/", {0xd0, NULL}},
{"the", {0xd1, NULL}}, {"you", {0xd2, NULL}}, {"{00224}", {0x60, NULL}}, {"{00226}", {0x61, NULL}}, {"{00228}", {0x62, NULL}}, {"{00192}", {0x64, NULL}}, {"{00194}", {0x65, NULL}}, {"{00196}", {0x66, NULL}}, {"{00232}", {0x70, NULL}}, {"the", {0xd1, NULL}}, {"you", {0xd2, NULL}}, {"{00224}", {0x60, NULL}}, {"{00226}", {0x61, NULL}}, {"{00228}", {0x62, NULL}}, {"{00192}", {0x64, NULL}}, {"{00194}", {0x65, NULL}}, {"{00196}", {0x66, NULL}}, {"{00232}", {0x70, NULL}},
{"{00234}", {0x71, NULL}}, {"{00235}", {0x72, NULL}}, {"{00200}", {0x74, NULL}}, {"{00202}", {0x75, NULL}}, {"{00203}", {0x76, NULL}}, {"{00201}", {0x77, NULL}}, {"{00249}", {0x80, NULL}}, {"{00251}", {0x81, NULL}}, {"{00234}", {0x71, NULL}}, {"{00235}", {0x72, NULL}}, {"{00200}", {0x74, NULL}}, {"{00202}", {0x75, NULL}}, {"{00203}", {0x76, NULL}}, {"{00249}", {0x80, NULL}}, {"{00251}", {0x81, NULL}},
{"{00217}", {0x84, NULL}}, {"{00219}", {0x85, NULL}}, {"{00220}", {0x86, NULL}}, {"{00244}", {0x91, NULL}}, {"{00246}", {0x92, NULL}}, {"{00212}", {0x95, NULL}}, {"{00214}", {0x96, NULL}}, {"{00238}", {0xa1, NULL}}, {"{00217}", {0x84, NULL}}, {"{00219}", {0x85, NULL}}, {"{00220}", {0x86, NULL}}, {"{00244}", {0x91, NULL}}, {"{00246}", {0x92, NULL}}, {"{00212}", {0x95, NULL}}, {"{00214}", {0x96, NULL}}, {"{00238}", {0xa1, NULL}},
{"{00239}", {0xa2, NULL}}, {"{00223}", {0xec, NULL}}, {"{00199}", {0xed, NULL}}, {"{00231}", {0xee, NULL}}, {"{08222}", {0xf0, NULL}}, {"{00239}", {0xa2, NULL}}, {"{00223}", {0xec, NULL}}, {"{00199}", {0xed, NULL}}, {"{00231}", {0xee, NULL}}, {"{08222}", {0xf0, NULL}},

3609
texts-unconverted/ES_es.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"manifest": { "manifest": {
"langName": "Español", "langName": "Español Latinoamerica",
"langLogo": "none" "langLogo": "none"
}, },
"dialogs": [ "dialogs": [
@ -14,6 +14,7 @@
"de un campo de batalla.", "de un campo de batalla.",
"Encontrarás el Poder", "Encontrarás el Poder",
"Estelar que Bowser se robó", "Estelar que Bowser se robó",
"Estelar que Bowser se robó",
"Dentro de los mundos", "Dentro de los mundos",
"de las pinturas.", "de las pinturas.",
"Primero, habla con el", "Primero, habla con el",
@ -3328,72 +3329,70 @@
" ESTRELLAS OCULTAS DEL CASTILLO" " ESTRELLAS OCULTAS DEL CASTILLO"
], ],
"options": { "options": {
"TEXT_OPT_OPTIONS": "OPTIONS", "TEXT_OPT_OPTIONS": "OPCIONES",
"TEXT_OPT_CAMERA": "CAMERA", "TEXT_OPT_CAMERA": "CÁMARA",
"TEXT_OPT_CONTROLS": "CONTROLS", "TEXT_OPT_CONTROLS": "CONTROLES",
"TEXT_OPT_VIDEO": "DISPLAY", "TEXT_OPT_VIDEO": "MONITOR",
"TEXT_OPT_AUDIO": "SOUND", "TEXT_OPT_AUDIO": "SONIDO",
"TEXT_OPT_CHEATS": "CHEATS", "TEXT_OPT_CHEATS": "TRUCOS",
"TEXT_OPT_HIGHLIGHT": "O", "TEXT_OPT_HIGHLIGHT": "O",
"TEXT_OPT_UNBOUND": "NONE", "TEXT_OPT_UNBOUND": "NADA",
"TEXT_OPT_PRESSKEY": "...", "TEXT_OPT_PRESSKEY": "...",
"TEXT_OPT_BUTTON1": "[R] Options", "TEXT_OPT_BUTTON1": "[R] Opciones",
"TEXT_OPT_BUTTON2": "[R] Return", "TEXT_OPT_BUTTON2": "[R] Regresar",
"TEXT_OPT_ENABLED": "Enabled", "TEXT_OPT_ENABLED": "Activado",
"TEXT_OPT_DISABLED": "Disabled", "TEXT_OPT_DISABLED": "Desactivado",
"TEXT_OPT_CAMX": "Camera X Sensitivity", "TEXT_OPT_CAMX": "Sensibilidad X de la Cámara",
"TEXT_OPT_CAMY": "Camera Y Sensitivity", "TEXT_OPT_CAMY": "Sensibilidad Y de la Cámara",
"TEXT_OPT_INVERTX": "Invert X Axis", "TEXT_OPT_INVERTX": "Invertir Axis X",
"TEXT_OPT_INVERTY": "Invert Y Axis", "TEXT_OPT_INVERTY": "Invertir Axis Y",
"TEXT_OPT_CAMC": "Camera Centre Aggression", "TEXT_OPT_CAMC": "Intensidad de Centrado Automático",
"TEXT_OPT_CAMP": "Camera Pan Level", "TEXT_OPT_CAMP": "Nivel de Panorámica de la Cámara",
"TEXT_OPT_CAMD": "Camera Deceleration", "TEXT_OPT_CAMD": "Desaceleración de la Cámara",
"TEXT_OPT_CAMON": "Free Camera", "TEXT_OPT_CAMON": "Cámara Libre",
"TEXT_OPT_ANALOGUE": "Analogue Camera", "TEXT_OPT_ANALOGUE": "Cámara Analógica",
"TEXT_OPT_MOUSE": "Mouse Look", "TEXT_OPT_MOUSE": "Bloqueo del Mouse",
"TEXT_OPT_TEXFILTER": "Texture Filtering", "TEXT_OPT_TEXFILTER": "Filtrado de Texturas",
"TEXT_OPT_FSCREEN": "Fullscreen", "TEXT_OPT_FSCREEN": "Pantalla Completa",
"TEXT_OPT_NEAREST": "Nearest", "TEXT_OPT_NEAREST": "Cercano",
"TEXT_OPT_LINEAR": "Linear", "TEXT_OPT_LINEAR": "Linear",
"TEXT_OPT_MVOLUME": "Master Volume", "TEXT_OPT_MVOLUME": "Volumen Principal",
"TEXT_OPT_MUSVOLUME": "Music Volume", "TEXT_OPT_MUSVOLUME": "Volumen de la Música",
"TEXT_OPT_SFXVOLUME": "Sfx Volume", "TEXT_OPT_SFXVOLUME": "Volumen de los Efectos",
"TEXT_OPT_ENVVOLUME": "Env Volume", "TEXT_OPT_ENVVOLUME": "Volumen del Ambiente",
"TEXT_OPT_VSYNC": "Vertical Sync", "TEXT_OPT_VSYNC": "Sync Vertical",
"TEXT_OPT_AUTO": "Auto", "TEXT_OPT_AUTO": "Auto",
"TEXT_OPT_HUD": "HUD", "TEXT_OPT_HUD": "HUD",
"TEXT_OPT_THREEPT": "Three-point", "TEXT_OPT_THREEPT": "Tres-puntos",
"TEXT_OPT_APPLY": "Apply", "TEXT_OPT_APPLY": "Aplicar",
"TEXT_OPT_RESETWND": "Reset Window", "TEXT_OPT_RESETWND": "Resetear Ventana",
"TEXT_BIND_A": "A Button", "TEXT_BIND_A": "Botón A",
"TEXT_BIND_B": "B Button", "TEXT_BIND_B": "Botón B",
"TEXT_BIND_START": "Start Button", "TEXT_BIND_START": "Botón Start",
"TEXT_BIND_L": "L Trigger", "TEXT_BIND_L": "Gatillo L",
"TEXT_BIND_R": "R Trigger", "TEXT_BIND_R": "Gatillo R",
"TEXT_BIND_Z": "Z Trigger", "TEXT_BIND_Z": "Gatillo Z",
"TEXT_BIND_C_UP": "C-Up", "TEXT_BIND_C_UP": "C-Arriba",
"TEXT_BIND_C_DOWN": "C-Down", "TEXT_BIND_C_DOWN": "C-Abajo",
"TEXT_BIND_C_LEFT": "C-Left", "TEXT_BIND_C_LEFT": "C-Izquierda",
"TEXT_BIND_C_RIGHT": "C-Right", "TEXT_BIND_C_RIGHT": "C-Derecha",
"TEXT_BIND_UP": "Stick Up", "TEXT_BIND_UP": "Stick Arriba",
"TEXT_BIND_DOWN": "Stick Down", "TEXT_BIND_DOWN": "Stick Abajo",
"TEXT_BIND_LEFT": "Stick Left", "TEXT_BIND_LEFT": "Stick Izquierda",
"TEXT_BIND_RIGHT": "Stick Right", "TEXT_BIND_RIGHT": "Stick Derecha",
"TEXT_OPT_DEADZONE": "Stick Deadzone", "TEXT_OPT_DEADZONE": "Zona Muerta del Stick",
"TEXT_OPT_RUMBLE": "Rumble Strength", "TEXT_OPT_RUMBLE": "Fuerza de la Vibración",
"TEXT_OPT_CHEAT1": "Enable cheats", "TEXT_OPT_CHEAT1": "Habilitar Trucos",
"TEXT_OPT_CHEAT2": "Moonjump (Press L)", "TEXT_OPT_CHEAT2": "Salto Lunar (Presiona L)",
"TEXT_OPT_CHEAT3": "Invincible Mario", "TEXT_OPT_CHEAT3": "Mario Invencible",
"TEXT_OPT_CHEAT4": "Infinite lives", "TEXT_OPT_CHEAT4": "Vidas Infinitas",
"TEXT_OPT_CHEAT5": "Super speed", "TEXT_OPT_CHEAT5": "Super Velocidad",
"TEXT_OPT_CHEAT6": "Super responsive controls", "TEXT_OPT_CHEAT6": "Controles Super Respinsivos",
"TEXT_OPT_CHEAT7": "Exit course at any time", "TEXT_OPT_CHEAT7": "Salir del Nivel en cualquier momento",
"TEXT_OPT_CHEAT8": "Huge Mario", "TEXT_OPT_CHEAT8": "Mario Gigante",
"TEXT_OPT_CHEAT9": "Tiny Mario", "TEXT_OPT_CHEAT9": "Mario Pequeño",
"TEXT_OPT_GAME": "GAME", "TEXT_OPT_GAME": "JUEGO",
"TEXT_OPT_LANGUAGE": "Lenguaje actual", "TEXT_OPT_LANGUAGE": "Idioma actual"
"TEXT_OPT_LANG_SPANISH": "Espanol",
"TEXT_OPT_LANG_ENGLISH": "Ingles"
}, },
"strings": { "strings": {
"TEXT_ZERO": "0", "TEXT_ZERO": "0",
@ -3403,70 +3402,70 @@
"TEXT_STAR_X": "{09733}{00215}", "TEXT_STAR_X": "{09733}{00215}",
"TEXT_VARIABLE_X": "{00215}", "TEXT_VARIABLE_X": "{00215}",
"TEXT_UNFILLED_STAR": "{09734}", "TEXT_UNFILLED_STAR": "{09734}",
"TEXT_NEW": "NEW", "TEXT_NEW": "NUEVO",
"TEXT_4DASHES": "----", "TEXT_4DASHES": "----",
"TEXT_PAUSE": "PAUSE", "TEXT_PAUSE": "PAUSA",
"TEXT_HUD_CONGRATULATIONS": "CONGRATULATIONS", "TEXT_HUD_CONGRATULATIONS": "FELICIDADES",
"TEXT_MARIO": "MARIO", "TEXT_MARIO": "MARIO",
"TEXT_SELECT_FILE": "SELECT FILE", "TEXT_SELECT_FILE": "SELECCIONAR ARCHIVO",
"TEXT_CHECK_FILE": "CHECK FILE", "TEXT_CHECK_FILE": "REVISAR ARCHIVO",
"TEXT_COPY_FILE": "COPY FILE", "TEXT_COPY_FILE": "COPIAR ARCHIVO",
"TEXT_ERASE_FILE": "ERASE FILE", "TEXT_ERASE_FILE": "BORRAR ARCHIVO",
"TEXT_SOUND_SELECT": "SOUND SELECT", "TEXT_SOUND_SELECT": "SELECCIONAR AUDIO",
"TEXT_FILE_MARIO_A": "MARIO A", "TEXT_FILE_MARIO_A": "MARIO A",
"TEXT_FILE_MARIO_B": "MARIO B", "TEXT_FILE_MARIO_B": "MARIO B",
"TEXT_FILE_MARIO_C": "MARIO C", "TEXT_FILE_MARIO_C": "MARIO C",
"TEXT_FILE_MARIO_D": "MARIO D", "TEXT_FILE_MARIO_D": "MARIO D",
"TEXT_SCORE": "SCORE", "TEXT_SCORE": "PUNTAJE",
"TEXT_COPY": "COPY", "TEXT_COPY": "COPIAR",
"TEXT_ERASE": "ERASE", "TEXT_ERASE": "BORRAR",
"TEXT_STEREO": "STEREO", "TEXT_STEREO": "ESTÉREO",
"TEXT_MONO": "MONO", "TEXT_MONO": "MONO",
"TEXT_HEADSET": "HEADSET", "TEXT_HEADSET": "AUDÍFONOS",
"TEXT_SAVED_DATA_EXISTS": "SAVED DATA EXITS", "TEXT_SAVED_DATA_EXISTS": "EXISTEN DATOS GUARDADOS",
"TEXT_NO_SAVED_DATA_EXISTS": "NO SAVED DATA EXISTS", "TEXT_NO_SAVED_DATA_EXISTS": "NO EXISTEN DATOS GUARDADOS",
"TEXT_RETURN": "RETURN", "TEXT_RETURN": "REGRESAR",
"TEXT_CHECK_SCORE": "CHECK SCORE", "TEXT_CHECK_SCORE": "REVISAR PUNTAJE",
"TEXT_COPY_FILE_BUTTON": "COPY FILE", "TEXT_COPY_FILE_BUTTON": "COPIAR ARCHIVO",
"TEXT_ERASE_FILE_BUTTON": "ERASE FILE", "TEXT_ERASE_FILE_BUTTON": "BORRAR ARCHIVO",
"TEXT_HI_SCORE": "HI SCORE", "TEXT_HI_SCORE": "PUNTAJE ALTO",
"TEXT_MY_SCORE": "MY SCORE", "TEXT_MY_SCORE": "MI PUNTAJE",
"TEXT_SCORE_MARIO_A": "{09786}A", "TEXT_SCORE_MARIO_A": "{09786}A",
"TEXT_SCORE_MARIO_B": "{09786}B", "TEXT_SCORE_MARIO_B": "{09786}B",
"TEXT_SCORE_MARIO_C": "{09786}C", "TEXT_SCORE_MARIO_C": "{09786}C",
"TEXT_SCORE_MARIO_D": "{09786}D", "TEXT_SCORE_MARIO_D": "{09786}D",
"TEXT_COPY_IT_TO_WHERE": "COPY IT TO WHERE?", "TEXT_COPY_IT_TO_WHERE": "¿COPIAR A DÓNDE?",
"TEXT_COPYING_COMPLETED": "COPYING COMPLETED", "TEXT_COPYING_COMPLETED": "COPIADO COMPLETO",
"TEXT_NO_FILE_TO_COPY_FROM": "NO EMPTY FILE", "TEXT_NO_FILE_TO_COPY_FROM": "NO ES UN ARCHIVO VACÍO",
"TEXT_SURE": "SURE?", "TEXT_SURE": "¿SEGURO?",
"TEXT_YES": "YES", "TEXT_YES": "SÍ",
"TEXT_NO": "NO", "TEXT_NO": "NO",
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A JUST ERASED", "TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A HA SIDO BORRADO",
"TEXT_COURSE": "COURSE", "TEXT_COURSE": "NIVEL",
"TEXT_MYSCORE": "MYSCORE", "TEXT_MYSCORE": "MIPUNTAJE",
"TEXT_CONTINUE": "CONTINUE", "TEXT_CONTINUE": "CONTINUAR",
"TEXT_EXIT_COURSE": "EXIT COURSE", "TEXT_EXIT_COURSE": "SALIR NIVEL",
"TEXT_EXIT_GAME": "EXIT GAME", "TEXT_EXIT_GAME": "SALIR DEL JUEGO",
"TEXT_CAMERA_ANGLE_R": "SET CAMERA ANGLE WITH R", "TEXT_CAMERA_ANGLE_R": "SELECCIONA ÁNGULO DE CÁMARA CON R",
"TEXT_LAKITU_MARIO": "LAKITU + MARIO", "TEXT_LAKITU_MARIO": "LAKITU + MARIO",
"TEXT_LAKITU_STOP": "LAKITU + STOP", "TEXT_LAKITU_STOP": "LAKITU + QUIETO",
"TEXT_NORMAL_UPCLOSE": "(NORMAL)(UP-CLOSE)", "TEXT_NORMAL_UPCLOSE": "(NORMAL)(DE CERCA)",
"TEXT_NORMAL_FIXED": "(NORMAL)(FIXED)", "TEXT_NORMAL_FIXED": "(NORMAL)(ARREGLADO)",
"TEXT_CATCH": "CATCH", "TEXT_CATCH": "ATRAPADO",
"TEXT_CLEAR": "CLEAR", "TEXT_CLEAR": "CONSEGUIDO",
"TEXT_HUD_HI_SCORE": "HI SCORE", "TEXT_HUD_HI_SCORE": "PUNTAJE ALTO",
"TEXT_SAVE_AND_CONTINUE": "SAVE & CONTINUE", "TEXT_SAVE_AND_CONTINUE": "GUARDAR Y CONTINUAR",
"TEXT_SAVE_AND_QUIT": "SAVE & QUIT", "TEXT_SAVE_AND_QUIT": "GUARDAR Y SALIR",
"TEXT_SAVE_EXIT_GAME": "SAVE & EXIT GAME", "TEXT_SAVE_EXIT_GAME": "GUARDAR Y SALIR DEL JUEGO",
"TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUE, DON'T SAVE", "TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUAR, NO GUARDAR",
"TEXT_FILE_MARIO_EXCLAMATION": "Mario!", "TEXT_FILE_MARIO_EXCLAMATION": "¡Mario!",
"TEXT_POWER_STARS_RESTORED": "The power of the Stars is restored to the castle...", "TEXT_POWER_STARS_RESTORED": "El poder de las estrellas han vuelto al castillo...",
"TEXT_THANKS_TO_YOU": "...and it's all thanks to you!", "TEXT_THANKS_TO_YOU": "......¡Y todo es gracias a ti!",
"TEXT_THANK_YOU_MARIO": "Thank you, Mario!", "TEXT_THANK_YOU_MARIO": "¡Gracias, Mario!",
"TEXT_SOMETHING_SPECIAL": "We have to do something special for you...", "TEXT_SOMETHING_SPECIAL": "Tenemos algo especial para ti...",
"TEXT_LISTEN_EVERYBODY": "Listen, everybody,", "TEXT_LISTEN_EVERYBODY": "Escuchen, todos,",
"TEXT_LETS_HAVE_CAKE": "let's bake a delicious cake...", "TEXT_LETS_HAVE_CAKE": "vamos a hornear un delicioso pastel...",
"TEXT_FOR_MARIO": "...for Mario...", "TEXT_FOR_MARIO": "...para Mario...",
"TEXT_FILE_MARIO_QUESTION": "Mario!" "TEXT_FILE_MARIO_QUESTION": "¡Mario!"
} }
} }

3424
texts-unconverted/PT_br.json Normal file

File diff suppressed because it is too large Load Diff

3609
texts/ES_es.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"manifest": { "manifest": {
"langName": "Espa{00241}ol", "langName": "Espa{00241}ol Latinoamerica",
"langLogo": "none" "langLogo": "none"
}, },
"dialogs": [ "dialogs": [
@ -14,6 +14,7 @@
"de un campo de batalla.", "de un campo de batalla.",
"Encontrar{00225}s el Poder", "Encontrar{00225}s el Poder",
"Estelar que Bowser se rob{00243}", "Estelar que Bowser se rob{00243}",
"Estelar que Bowser se rob{00243}",
"Dentro de los mundos", "Dentro de los mundos",
"de las pinturas.", "de las pinturas.",
"Primero, habla con el", "Primero, habla con el",
@ -3328,72 +3329,70 @@
" ESTRELLAS OCULTAS DEL CASTILLO" " ESTRELLAS OCULTAS DEL CASTILLO"
], ],
"options": { "options": {
"TEXT_OPT_OPTIONS": "OPTIONS", "TEXT_OPT_OPTIONS": "OPCIONES",
"TEXT_OPT_CAMERA": "CAMERA", "TEXT_OPT_CAMERA": "C{00193}MARA",
"TEXT_OPT_CONTROLS": "CONTROLS", "TEXT_OPT_CONTROLS": "CONTROLES",
"TEXT_OPT_VIDEO": "DISPLAY", "TEXT_OPT_VIDEO": "MONITOR",
"TEXT_OPT_AUDIO": "SOUND", "TEXT_OPT_AUDIO": "SONIDO",
"TEXT_OPT_CHEATS": "CHEATS", "TEXT_OPT_CHEATS": "TRUCOS",
"TEXT_OPT_HIGHLIGHT": "O", "TEXT_OPT_HIGHLIGHT": "O",
"TEXT_OPT_UNBOUND": "NONE", "TEXT_OPT_UNBOUND": "NADA",
"TEXT_OPT_PRESSKEY": "...", "TEXT_OPT_PRESSKEY": "...",
"TEXT_OPT_BUTTON1": "[R] Options", "TEXT_OPT_BUTTON1": "[R] Opciones",
"TEXT_OPT_BUTTON2": "[R] Return", "TEXT_OPT_BUTTON2": "[R] Regresar",
"TEXT_OPT_ENABLED": "Enabled", "TEXT_OPT_ENABLED": "Activado",
"TEXT_OPT_DISABLED": "Disabled", "TEXT_OPT_DISABLED": "Desactivado",
"TEXT_OPT_CAMX": "Camera X Sensitivity", "TEXT_OPT_CAMX": "Sensibilidad X de la C{00225}mara",
"TEXT_OPT_CAMY": "Camera Y Sensitivity", "TEXT_OPT_CAMY": "Sensibilidad Y de la C{00225}mara",
"TEXT_OPT_INVERTX": "Invert X Axis", "TEXT_OPT_INVERTX": "Invertir Axis X",
"TEXT_OPT_INVERTY": "Invert Y Axis", "TEXT_OPT_INVERTY": "Invertir Axis Y",
"TEXT_OPT_CAMC": "Camera Centre Aggression", "TEXT_OPT_CAMC": "Intensidad de Centrado Autom{00225}tico",
"TEXT_OPT_CAMP": "Camera Pan Level", "TEXT_OPT_CAMP": "Nivel de Panor{00225}mica de la C{00225}mara",
"TEXT_OPT_CAMD": "Camera Deceleration", "TEXT_OPT_CAMD": "Desaceleraci{00243}n de la C{00225}mara",
"TEXT_OPT_CAMON": "Free Camera", "TEXT_OPT_CAMON": "C{00225}mara Libre",
"TEXT_OPT_ANALOGUE": "Analogue Camera", "TEXT_OPT_ANALOGUE": "C{00225}mara Anal{00243}gica",
"TEXT_OPT_MOUSE": "Mouse Look", "TEXT_OPT_MOUSE": "Bloqueo del Mouse",
"TEXT_OPT_TEXFILTER": "Texture Filtering", "TEXT_OPT_TEXFILTER": "Filtrado de Texturas",
"TEXT_OPT_FSCREEN": "Fullscreen", "TEXT_OPT_FSCREEN": "Pantalla Completa",
"TEXT_OPT_NEAREST": "Nearest", "TEXT_OPT_NEAREST": "Cercano",
"TEXT_OPT_LINEAR": "Linear", "TEXT_OPT_LINEAR": "Linear",
"TEXT_OPT_MVOLUME": "Master Volume", "TEXT_OPT_MVOLUME": "Volumen Principal",
"TEXT_OPT_MUSVOLUME": "Music Volume", "TEXT_OPT_MUSVOLUME": "Volumen de la M{00250}sica",
"TEXT_OPT_SFXVOLUME": "Sfx Volume", "TEXT_OPT_SFXVOLUME": "Volumen de los Efectos",
"TEXT_OPT_ENVVOLUME": "Env Volume", "TEXT_OPT_ENVVOLUME": "Volumen del Ambiente",
"TEXT_OPT_VSYNC": "Vertical Sync", "TEXT_OPT_VSYNC": "Sync Vertical",
"TEXT_OPT_AUTO": "Auto", "TEXT_OPT_AUTO": "Auto",
"TEXT_OPT_HUD": "HUD", "TEXT_OPT_HUD": "HUD",
"TEXT_OPT_THREEPT": "Three-point", "TEXT_OPT_THREEPT": "Tres-puntos",
"TEXT_OPT_APPLY": "Apply", "TEXT_OPT_APPLY": "Aplicar",
"TEXT_OPT_RESETWND": "Reset Window", "TEXT_OPT_RESETWND": "Resetear Ventana",
"TEXT_BIND_A": "A Button", "TEXT_BIND_A": "Bot{00243}n A",
"TEXT_BIND_B": "B Button", "TEXT_BIND_B": "Bot{00243}n B",
"TEXT_BIND_START": "Start Button", "TEXT_BIND_START": "Bot{00243}n Start",
"TEXT_BIND_L": "L Trigger", "TEXT_BIND_L": "Gatillo L",
"TEXT_BIND_R": "R Trigger", "TEXT_BIND_R": "Gatillo R",
"TEXT_BIND_Z": "Z Trigger", "TEXT_BIND_Z": "Gatillo Z",
"TEXT_BIND_C_UP": "C-Up", "TEXT_BIND_C_UP": "C-Arriba",
"TEXT_BIND_C_DOWN": "C-Down", "TEXT_BIND_C_DOWN": "C-Abajo",
"TEXT_BIND_C_LEFT": "C-Left", "TEXT_BIND_C_LEFT": "C-Izquierda",
"TEXT_BIND_C_RIGHT": "C-Right", "TEXT_BIND_C_RIGHT": "C-Derecha",
"TEXT_BIND_UP": "Stick Up", "TEXT_BIND_UP": "Stick Arriba",
"TEXT_BIND_DOWN": "Stick Down", "TEXT_BIND_DOWN": "Stick Abajo",
"TEXT_BIND_LEFT": "Stick Left", "TEXT_BIND_LEFT": "Stick Izquierda",
"TEXT_BIND_RIGHT": "Stick Right", "TEXT_BIND_RIGHT": "Stick Derecha",
"TEXT_OPT_DEADZONE": "Stick Deadzone", "TEXT_OPT_DEADZONE": "Zona Muerta del Stick",
"TEXT_OPT_RUMBLE": "Rumble Strength", "TEXT_OPT_RUMBLE": "Fuerza de la Vibraci{00243}n",
"TEXT_OPT_CHEAT1": "Enable cheats", "TEXT_OPT_CHEAT1": "Habilitar Trucos",
"TEXT_OPT_CHEAT2": "Moonjump (Press L)", "TEXT_OPT_CHEAT2": "Salto Lunar (Presiona L)",
"TEXT_OPT_CHEAT3": "Invincible Mario", "TEXT_OPT_CHEAT3": "Mario Invencible",
"TEXT_OPT_CHEAT4": "Infinite lives", "TEXT_OPT_CHEAT4": "Vidas Infinitas",
"TEXT_OPT_CHEAT5": "Super speed", "TEXT_OPT_CHEAT5": "Super Velocidad",
"TEXT_OPT_CHEAT6": "Super responsive controls", "TEXT_OPT_CHEAT6": "Controles Super Respinsivos",
"TEXT_OPT_CHEAT7": "Exit course at any time", "TEXT_OPT_CHEAT7": "Salir del Nivel en cualquier momento",
"TEXT_OPT_CHEAT8": "Huge Mario", "TEXT_OPT_CHEAT8": "Mario Gigante",
"TEXT_OPT_CHEAT9": "Tiny Mario", "TEXT_OPT_CHEAT9": "Mario Peque{00241}o",
"TEXT_OPT_GAME": "GAME", "TEXT_OPT_GAME": "JUEGO",
"TEXT_OPT_LANGUAGE": "Lenguaje actual", "TEXT_OPT_LANGUAGE": "Idioma actual"
"TEXT_OPT_LANG_SPANISH": "Espanol",
"TEXT_OPT_LANG_ENGLISH": "Ingles"
}, },
"strings": { "strings": {
"TEXT_ZERO": "0", "TEXT_ZERO": "0",
@ -3403,70 +3402,70 @@
"TEXT_STAR_X": "{09733}{00215}", "TEXT_STAR_X": "{09733}{00215}",
"TEXT_VARIABLE_X": "{00215}", "TEXT_VARIABLE_X": "{00215}",
"TEXT_UNFILLED_STAR": "{09734}", "TEXT_UNFILLED_STAR": "{09734}",
"TEXT_NEW": "NEW", "TEXT_NEW": "NUEVO",
"TEXT_4DASHES": "----", "TEXT_4DASHES": "----",
"TEXT_PAUSE": "PAUSE", "TEXT_PAUSE": "PAUSA",
"TEXT_HUD_CONGRATULATIONS": "CONGRATULATIONS", "TEXT_HUD_CONGRATULATIONS": "FELICIDADES",
"TEXT_MARIO": "MARIO", "TEXT_MARIO": "MARIO",
"TEXT_SELECT_FILE": "SELECT FILE", "TEXT_SELECT_FILE": "SELECCIONAR ARCHIVO",
"TEXT_CHECK_FILE": "CHECK FILE", "TEXT_CHECK_FILE": "REVISAR ARCHIVO",
"TEXT_COPY_FILE": "COPY FILE", "TEXT_COPY_FILE": "COPIAR ARCHIVO",
"TEXT_ERASE_FILE": "ERASE FILE", "TEXT_ERASE_FILE": "BORRAR ARCHIVO",
"TEXT_SOUND_SELECT": "SOUND SELECT", "TEXT_SOUND_SELECT": "SELECCIONAR AUDIO",
"TEXT_FILE_MARIO_A": "MARIO A", "TEXT_FILE_MARIO_A": "MARIO A",
"TEXT_FILE_MARIO_B": "MARIO B", "TEXT_FILE_MARIO_B": "MARIO B",
"TEXT_FILE_MARIO_C": "MARIO C", "TEXT_FILE_MARIO_C": "MARIO C",
"TEXT_FILE_MARIO_D": "MARIO D", "TEXT_FILE_MARIO_D": "MARIO D",
"TEXT_SCORE": "SCORE", "TEXT_SCORE": "PUNTAJE",
"TEXT_COPY": "COPY", "TEXT_COPY": "COPIAR",
"TEXT_ERASE": "ERASE", "TEXT_ERASE": "BORRAR",
"TEXT_STEREO": "STEREO", "TEXT_STEREO": "EST{00201}REO",
"TEXT_MONO": "MONO", "TEXT_MONO": "MONO",
"TEXT_HEADSET": "HEADSET", "TEXT_HEADSET": "AUD{00205}FONOS",
"TEXT_SAVED_DATA_EXISTS": "SAVED DATA EXITS", "TEXT_SAVED_DATA_EXISTS": "EXISTEN DATOS GUARDADOS",
"TEXT_NO_SAVED_DATA_EXISTS": "NO SAVED DATA EXISTS", "TEXT_NO_SAVED_DATA_EXISTS": "NO EXISTEN DATOS GUARDADOS",
"TEXT_RETURN": "RETURN", "TEXT_RETURN": "REGRESAR",
"TEXT_CHECK_SCORE": "CHECK SCORE", "TEXT_CHECK_SCORE": "REVISAR PUNTAJE",
"TEXT_COPY_FILE_BUTTON": "COPY FILE", "TEXT_COPY_FILE_BUTTON": "COPIAR ARCHIVO",
"TEXT_ERASE_FILE_BUTTON": "ERASE FILE", "TEXT_ERASE_FILE_BUTTON": "BORRAR ARCHIVO",
"TEXT_HI_SCORE": "HI SCORE", "TEXT_HI_SCORE": "PUNTAJE ALTO",
"TEXT_MY_SCORE": "MY SCORE", "TEXT_MY_SCORE": "MI PUNTAJE",
"TEXT_SCORE_MARIO_A": "{09786}A", "TEXT_SCORE_MARIO_A": "{09786}A",
"TEXT_SCORE_MARIO_B": "{09786}B", "TEXT_SCORE_MARIO_B": "{09786}B",
"TEXT_SCORE_MARIO_C": "{09786}C", "TEXT_SCORE_MARIO_C": "{09786}C",
"TEXT_SCORE_MARIO_D": "{09786}D", "TEXT_SCORE_MARIO_D": "{09786}D",
"TEXT_COPY_IT_TO_WHERE": "COPY IT TO WHERE?", "TEXT_COPY_IT_TO_WHERE": "{00191}COPIAR A D{00211}NDE?",
"TEXT_COPYING_COMPLETED": "COPYING COMPLETED", "TEXT_COPYING_COMPLETED": "COPIADO COMPLETO",
"TEXT_NO_FILE_TO_COPY_FROM": "NO EMPTY FILE", "TEXT_NO_FILE_TO_COPY_FROM": "NO ES UN ARCHIVO VAC{00205}O",
"TEXT_SURE": "SURE?", "TEXT_SURE": "{00191}SEGURO?",
"TEXT_YES": "YES", "TEXT_YES": "S{00205}",
"TEXT_NO": "NO", "TEXT_NO": "NO",
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A JUST ERASED", "TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A HA SIDO BORRADO",
"TEXT_COURSE": "COURSE", "TEXT_COURSE": "NIVEL",
"TEXT_MYSCORE": "MYSCORE", "TEXT_MYSCORE": "MIPUNTAJE",
"TEXT_CONTINUE": "CONTINUE", "TEXT_CONTINUE": "CONTINUAR",
"TEXT_EXIT_COURSE": "EXIT COURSE", "TEXT_EXIT_COURSE": "SALIR NIVEL",
"TEXT_EXIT_GAME": "EXIT GAME", "TEXT_EXIT_GAME": "SALIR DEL JUEGO",
"TEXT_CAMERA_ANGLE_R": "SET CAMERA ANGLE WITH R", "TEXT_CAMERA_ANGLE_R": "SELECCIONA {00193}NGULO DE C{00193}MARA CON R",
"TEXT_LAKITU_MARIO": "LAKITU + MARIO", "TEXT_LAKITU_MARIO": "LAKITU + MARIO",
"TEXT_LAKITU_STOP": "LAKITU + STOP", "TEXT_LAKITU_STOP": "LAKITU + QUIETO",
"TEXT_NORMAL_UPCLOSE": "(NORMAL)(UP-CLOSE)", "TEXT_NORMAL_UPCLOSE": "(NORMAL)(DE CERCA)",
"TEXT_NORMAL_FIXED": "(NORMAL)(FIXED)", "TEXT_NORMAL_FIXED": "(NORMAL)(ARREGLADO)",
"TEXT_CATCH": "CATCH", "TEXT_CATCH": "ATRAPADO",
"TEXT_CLEAR": "CLEAR", "TEXT_CLEAR": "CONSEGUIDO",
"TEXT_HUD_HI_SCORE": "HI SCORE", "TEXT_HUD_HI_SCORE": "PUNTAJE ALTO",
"TEXT_SAVE_AND_CONTINUE": "SAVE & CONTINUE", "TEXT_SAVE_AND_CONTINUE": "GUARDAR Y CONTINUAR",
"TEXT_SAVE_AND_QUIT": "SAVE & QUIT", "TEXT_SAVE_AND_QUIT": "GUARDAR Y SALIR",
"TEXT_SAVE_EXIT_GAME": "SAVE & EXIT GAME", "TEXT_SAVE_EXIT_GAME": "GUARDAR Y SALIR DEL JUEGO",
"TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUE, DON'T SAVE", "TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUAR, NO GUARDAR",
"TEXT_FILE_MARIO_EXCLAMATION": "Mario!", "TEXT_FILE_MARIO_EXCLAMATION": "{00161}Mario!",
"TEXT_POWER_STARS_RESTORED": "The power of the Stars is restored to the castle...", "TEXT_POWER_STARS_RESTORED": "El poder de las estrellas han vuelto al castillo...",
"TEXT_THANKS_TO_YOU": "...and it's all thanks to you!", "TEXT_THANKS_TO_YOU": "......{00161}Y todo es gracias a ti!",
"TEXT_THANK_YOU_MARIO": "Thank you, Mario!", "TEXT_THANK_YOU_MARIO": "{00161}Gracias, Mario!",
"TEXT_SOMETHING_SPECIAL": "We have to do something special for you...", "TEXT_SOMETHING_SPECIAL": "Tenemos algo especial para ti...",
"TEXT_LISTEN_EVERYBODY": "Listen, everybody,", "TEXT_LISTEN_EVERYBODY": "Escuchen, todos,",
"TEXT_LETS_HAVE_CAKE": "let's bake a delicious cake...", "TEXT_LETS_HAVE_CAKE": "vamos a hornear un delicioso pastel...",
"TEXT_FOR_MARIO": "...for Mario...", "TEXT_FOR_MARIO": "...para Mario...",
"TEXT_FILE_MARIO_QUESTION": "Mario!" "TEXT_FILE_MARIO_QUESTION": "{00161}Mario!"
} }
} }

3424
texts/PT_br.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3345,9 +3345,7 @@
"TEXT_OPT_CHEAT8": "Huge Mario", "TEXT_OPT_CHEAT8": "Huge Mario",
"TEXT_OPT_CHEAT9": "Tiny Mario", "TEXT_OPT_CHEAT9": "Tiny Mario",
"TEXT_OPT_GAME": "GAME", "TEXT_OPT_GAME": "GAME",
"TEXT_OPT_LANGUAGE": "Current Language", "TEXT_OPT_LANGUAGE": "Current Language"
"TEXT_OPT_LANG_SPANISH": "Spanish",
"TEXT_OPT_LANG_ENGLISH": "English"
}, },
"strings": { "strings": {
"TEXT_ZERO": "0", "TEXT_ZERO": "0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
textures/special/hud_j.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
textures/special/hud_q.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
textures/special/hud_v.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
textures/special/hud_x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
textures/special/hud_z.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,158 @@
#!/usr/bin/env python3
import re
import os
import traceback
import sys
num_headers = 0
items = []
len_mapping = {}
order_mapping = {}
line_number_mapping = {}
def raise_error(filename, lineindex, msg):
raise SyntaxError("Error in " + filename + ":" + str(line_number_mapping[lineindex] + 1) + ": " + msg)
def parse_struct(filename, lines, lineindex, name):
global items, order_mapping
lineindex += 1
if lineindex + 9 >= len(lines):
raise_error(filename, lineindex, "struct Animation must be 11 lines")
v1 = int(lines[lineindex + 0].rstrip(","), 0)
v2 = int(lines[lineindex + 1].rstrip(","), 0)
v3 = int(lines[lineindex + 2].rstrip(","), 0)
v4 = int(lines[lineindex + 3].rstrip(","), 0)
v5 = int(lines[lineindex + 4].rstrip(","), 0)
values = lines[lineindex + 6].rstrip(",")
indices = lines[lineindex + 7].rstrip(",")
items.append(("header", name, (v1, v2, v3, v4, v5, values, indices)))
if lines[lineindex + 9] != "};":
raise_error(filename, lineindex + 9, "Expected \"};\" but got " + lines[lineindex + 9])
order_mapping[name] = len(items)
lineindex += 10
return lineindex
def parse_array(filename, lines, lineindex, name, is_indices):
global items, len_mapping, order_mapping
lineindex += 1
values = []
while lineindex < len(lines) and lines[lineindex] != "};":
line = lines[lineindex].rstrip(",")
if line:
values.extend(line.split(","))
lineindex += 1
if lineindex >= len(lines):
raise_error(filename, lineindex, "Expected \"};\" but reached end of file")
items.append(("array", name, (is_indices, values)))
len_mapping[name] = len(values)
order_mapping[name] = len(items)
lineindex += 1
return lineindex
def parse_file(filename, lines):
global num_headers
lineindex = 0
while lineindex < len(lines):
line = lines[lineindex]
for prefix in ["static ", "const "]:
if line.startswith(prefix):
line = line[len(prefix):]
lines[lineindex] = line
is_struct = line.startswith("struct Animation ") and line.endswith("[] = {")
is_indices = line.startswith("u16 ") and line.endswith("[] = {")
is_values = line.startswith("s16 ") and line.endswith("[] = {")
if not is_struct and not is_indices and not is_values:
raise_error(filename, lineindex, "\"" + line + "\" does not follow the pattern \"static const struct Animation anim_x[] = {\", \"static const u16 anim_x_indices[] = {\" or \"static const s16 anim_x_values[] = {\"")
if is_struct:
name = lines[lineindex][len("struct Animation "):-6]
lineindex = parse_struct(filename, lines, lineindex, name)
num_headers += 1
else:
name = lines[lineindex][len("s16 "):-6]
lineindex = parse_array(filename, lines, lineindex, name, is_indices)
try:
files = os.listdir("assets/luigi_anims")
files.sort()
for filename in files:
if filename.endswith(".inc.c"):
lines = []
with open("assets/luigi_anims/" + filename) as f:
for i, line in enumerate(f):
line = re.sub(r"/\*.*?\*/", "", line)
if "/*" in line:
line_number_mapping[-1] = i
raise_error(filename, -1, "Multiline comments are not supported")
line = line.split("//", 1)[0].strip()
if line:
line_number_mapping[len(lines)] = i
lines.append(line)
if lines:
parse_file(filename, lines)
structdef = ["u32 numEntries;", "const struct Animation *addrPlaceholder;", "struct OffsetSizePair entries[" + str(num_headers) + "];"]
structobj = [str(num_headers) + ",", "NULL,","{"]
for item in items:
type, name, obj = item
if type == "header":
v1, v2, v3, v4, v5, values, indices = obj
if order_mapping[indices] < order_mapping[name]:
raise SyntaxError("Error: Animation struct must be written before indices array for " + name)
if order_mapping[values] < order_mapping[indices]:
raise SyntaxError("Error: values array must be written after indices array for " + name)
values_num_values = len_mapping[values]
offset_to_struct = "offsetof(struct LuigiAnimsObj, " + name + ")"
offset_to_end = "offsetof(struct LuigiAnimsObj, " + values + ") + sizeof(gLuigiAnims." + values + ")"
structobj.append("{" + offset_to_struct + ", " + offset_to_end + " - " + offset_to_struct + "},")
structobj.append("},")
for item in items:
type, name, obj = item
if type == "header":
v1, v2, v3, v4, v5, values, indices = obj
indices_len = len_mapping[indices] // 6 - 1
values_num_values = len_mapping[values]
offset_to_struct = "offsetof(struct LuigiAnimsObj, " + name + ")"
offset_to_end = "offsetof(struct LuigiAnimsObj, " + values + ") + sizeof(gLuigiAnims." + values + ")"
structdef.append("struct Animation " + name + ";")
structobj.append("{" + ", ".join([
str(v1),
str(v2),
str(v3),
str(v4),
str(v5),
str(indices_len),
"(const s16 *)(offsetof(struct LuigiAnimsObj, " + values + ") - " + offset_to_struct + ")",
"(const u16 *)(offsetof(struct LuigiAnimsObj, " + indices + ") - " + offset_to_struct + ")",
offset_to_end + " - " + offset_to_struct
]) + "},")
else:
is_indices, arr = obj
type = "u16" if is_indices else "s16"
structdef.append("{} {}[{}];".format(type, name, len(arr)))
structobj.append("{" + ",".join(arr) + "},")
print("#include \"types.h\"")
print("#include <stddef.h>")
print("")
print("const struct LuigiAnimsObj {")
for s in structdef:
print(s)
print("} gLuigiAnims = {")
for s in structobj:
print(s)
print("};")
except Exception as e:
note = "NOTE! The mario animation C files are not processed by a normal C compiler, but by the script in tools/luigi_anims_converter.py. The format is much more strict than normal C, so please follow the syntax of existing files.\n"
if e is SyntaxError:
e.msg = note + e.msg
else:
print(note, file=sys.stderr)
traceback.print_exc()
sys.exit(1)