mirror of https://github.com/sm64pc/sm64pc.git
Added colored chars support and new languages
* Added ES_es language * Updated ES_la language * Added PT_br language
This commit is contained in:
parent
b20e3c7940
commit
5126ff7540
|
@ -227,7 +227,6 @@ struct LanguageEntry* get_language(){
|
|||
|
||||
void set_language(struct LanguageEntry* new_language){
|
||||
current_language = new_language;
|
||||
printf("SWITCHED: %s\n", current_language->name);
|
||||
dialogPool = new_language->dialogs;
|
||||
seg2_act_name_table = new_language->acts;
|
||||
seg2_course_name_table = new_language->courses;
|
||||
|
|
|
@ -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}},
|
||||
{"|", {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}},
|
||||
{"{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}},
|
||||
{"{00239}", {0xa2, NULL}}, {"{00223}", {0xec, NULL}}, {"{00199}", {0xed, NULL}}, {"{00231}", {0xee, NULL}}, {"{08222}", {0xf0, NULL}},
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"manifest": {
|
||||
"langName": "Español",
|
||||
"langName": "Español Latinoamerica",
|
||||
"langLogo": "none"
|
||||
},
|
||||
"dialogs": [
|
||||
|
@ -14,6 +14,7 @@
|
|||
"de un campo de batalla.",
|
||||
"Encontrarás el Poder",
|
||||
"Estelar que Bowser se robó",
|
||||
"Estelar que Bowser se robó",
|
||||
"Dentro de los mundos",
|
||||
"de las pinturas.",
|
||||
"Primero, habla con el",
|
||||
|
@ -3328,72 +3329,70 @@
|
|||
" ESTRELLAS OCULTAS DEL CASTILLO"
|
||||
],
|
||||
"options": {
|
||||
"TEXT_OPT_OPTIONS": "OPTIONS",
|
||||
"TEXT_OPT_CAMERA": "CAMERA",
|
||||
"TEXT_OPT_CONTROLS": "CONTROLS",
|
||||
"TEXT_OPT_VIDEO": "DISPLAY",
|
||||
"TEXT_OPT_AUDIO": "SOUND",
|
||||
"TEXT_OPT_CHEATS": "CHEATS",
|
||||
"TEXT_OPT_OPTIONS": "OPCIONES",
|
||||
"TEXT_OPT_CAMERA": "CÁMARA",
|
||||
"TEXT_OPT_CONTROLS": "CONTROLES",
|
||||
"TEXT_OPT_VIDEO": "MONITOR",
|
||||
"TEXT_OPT_AUDIO": "SONIDO",
|
||||
"TEXT_OPT_CHEATS": "TRUCOS",
|
||||
"TEXT_OPT_HIGHLIGHT": "O",
|
||||
"TEXT_OPT_UNBOUND": "NONE",
|
||||
"TEXT_OPT_UNBOUND": "NADA",
|
||||
"TEXT_OPT_PRESSKEY": "...",
|
||||
"TEXT_OPT_BUTTON1": "[R] Options",
|
||||
"TEXT_OPT_BUTTON2": "[R] Return",
|
||||
"TEXT_OPT_ENABLED": "Enabled",
|
||||
"TEXT_OPT_DISABLED": "Disabled",
|
||||
"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": "Free Camera",
|
||||
"TEXT_OPT_ANALOGUE": "Analogue Camera",
|
||||
"TEXT_OPT_MOUSE": "Mouse Look",
|
||||
"TEXT_OPT_TEXFILTER": "Texture Filtering",
|
||||
"TEXT_OPT_FSCREEN": "Fullscreen",
|
||||
"TEXT_OPT_NEAREST": "Nearest",
|
||||
"TEXT_OPT_BUTTON1": "[R] Opciones",
|
||||
"TEXT_OPT_BUTTON2": "[R] Regresar",
|
||||
"TEXT_OPT_ENABLED": "Activado",
|
||||
"TEXT_OPT_DISABLED": "Desactivado",
|
||||
"TEXT_OPT_CAMX": "Sensibilidad X de la Cámara",
|
||||
"TEXT_OPT_CAMY": "Sensibilidad Y de la Cámara",
|
||||
"TEXT_OPT_INVERTX": "Invertir Axis X",
|
||||
"TEXT_OPT_INVERTY": "Invertir Axis Y",
|
||||
"TEXT_OPT_CAMC": "Intensidad de Centrado Automático",
|
||||
"TEXT_OPT_CAMP": "Nivel de Panorámica de la Cámara",
|
||||
"TEXT_OPT_CAMD": "Desaceleración de la Cámara",
|
||||
"TEXT_OPT_CAMON": "Cámara Libre",
|
||||
"TEXT_OPT_ANALOGUE": "Cámara Analógica",
|
||||
"TEXT_OPT_MOUSE": "Bloqueo del Mouse",
|
||||
"TEXT_OPT_TEXFILTER": "Filtrado de Texturas",
|
||||
"TEXT_OPT_FSCREEN": "Pantalla Completa",
|
||||
"TEXT_OPT_NEAREST": "Cercano",
|
||||
"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",
|
||||
"TEXT_OPT_MVOLUME": "Volumen Principal",
|
||||
"TEXT_OPT_MUSVOLUME": "Volumen de la Música",
|
||||
"TEXT_OPT_SFXVOLUME": "Volumen de los Efectos",
|
||||
"TEXT_OPT_ENVVOLUME": "Volumen del Ambiente",
|
||||
"TEXT_OPT_VSYNC": "Sync Vertical",
|
||||
"TEXT_OPT_AUTO": "Auto",
|
||||
"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-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": "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": "GAME",
|
||||
"TEXT_OPT_LANGUAGE": "Lenguaje actual",
|
||||
"TEXT_OPT_LANG_SPANISH": "Espanol",
|
||||
"TEXT_OPT_LANG_ENGLISH": "Ingles"
|
||||
"TEXT_OPT_THREEPT": "Tres-puntos",
|
||||
"TEXT_OPT_APPLY": "Aplicar",
|
||||
"TEXT_OPT_RESETWND": "Resetear Ventana",
|
||||
"TEXT_BIND_A": "Botón A",
|
||||
"TEXT_BIND_B": "Botón B",
|
||||
"TEXT_BIND_START": "Botón Start",
|
||||
"TEXT_BIND_L": "Gatillo L",
|
||||
"TEXT_BIND_R": "Gatillo R",
|
||||
"TEXT_BIND_Z": "Gatillo Z",
|
||||
"TEXT_BIND_C_UP": "C-Arriba",
|
||||
"TEXT_BIND_C_DOWN": "C-Abajo",
|
||||
"TEXT_BIND_C_LEFT": "C-Izquierda",
|
||||
"TEXT_BIND_C_RIGHT": "C-Derecha",
|
||||
"TEXT_BIND_UP": "Stick Arriba",
|
||||
"TEXT_BIND_DOWN": "Stick Abajo",
|
||||
"TEXT_BIND_LEFT": "Stick Izquierda",
|
||||
"TEXT_BIND_RIGHT": "Stick Derecha",
|
||||
"TEXT_OPT_DEADZONE": "Zona Muerta del Stick",
|
||||
"TEXT_OPT_RUMBLE": "Fuerza de la Vibración",
|
||||
"TEXT_OPT_CHEAT1": "Habilitar Trucos",
|
||||
"TEXT_OPT_CHEAT2": "Salto Lunar (Presiona L)",
|
||||
"TEXT_OPT_CHEAT3": "Mario Invencible",
|
||||
"TEXT_OPT_CHEAT4": "Vidas Infinitas",
|
||||
"TEXT_OPT_CHEAT5": "Super Velocidad",
|
||||
"TEXT_OPT_CHEAT6": "Controles Super Respinsivos",
|
||||
"TEXT_OPT_CHEAT7": "Salir del Nivel en cualquier momento",
|
||||
"TEXT_OPT_CHEAT8": "Mario Gigante",
|
||||
"TEXT_OPT_CHEAT9": "Mario Pequeño",
|
||||
"TEXT_OPT_GAME": "JUEGO",
|
||||
"TEXT_OPT_LANGUAGE": "Idioma actual"
|
||||
},
|
||||
"strings": {
|
||||
"TEXT_ZERO": "0",
|
||||
|
@ -3403,70 +3402,70 @@
|
|||
"TEXT_STAR_X": "{09733}{00215}",
|
||||
"TEXT_VARIABLE_X": "{00215}",
|
||||
"TEXT_UNFILLED_STAR": "{09734}",
|
||||
"TEXT_NEW": "NEW",
|
||||
"TEXT_NEW": "NUEVO",
|
||||
"TEXT_4DASHES": "----",
|
||||
"TEXT_PAUSE": "PAUSE",
|
||||
"TEXT_HUD_CONGRATULATIONS": "CONGRATULATIONS",
|
||||
"TEXT_PAUSE": "PAUSA",
|
||||
"TEXT_HUD_CONGRATULATIONS": "FELICIDADES",
|
||||
"TEXT_MARIO": "MARIO",
|
||||
"TEXT_SELECT_FILE": "SELECT FILE",
|
||||
"TEXT_CHECK_FILE": "CHECK FILE",
|
||||
"TEXT_COPY_FILE": "COPY FILE",
|
||||
"TEXT_ERASE_FILE": "ERASE FILE",
|
||||
"TEXT_SOUND_SELECT": "SOUND SELECT",
|
||||
"TEXT_SELECT_FILE": "SELECCIONAR ARCHIVO",
|
||||
"TEXT_CHECK_FILE": "REVISAR ARCHIVO",
|
||||
"TEXT_COPY_FILE": "COPIAR ARCHIVO",
|
||||
"TEXT_ERASE_FILE": "BORRAR ARCHIVO",
|
||||
"TEXT_SOUND_SELECT": "SELECCIONAR AUDIO",
|
||||
"TEXT_FILE_MARIO_A": "MARIO A",
|
||||
"TEXT_FILE_MARIO_B": "MARIO B",
|
||||
"TEXT_FILE_MARIO_C": "MARIO C",
|
||||
"TEXT_FILE_MARIO_D": "MARIO D",
|
||||
"TEXT_SCORE": "SCORE",
|
||||
"TEXT_COPY": "COPY",
|
||||
"TEXT_ERASE": "ERASE",
|
||||
"TEXT_STEREO": "STEREO",
|
||||
"TEXT_SCORE": "PUNTAJE",
|
||||
"TEXT_COPY": "COPIAR",
|
||||
"TEXT_ERASE": "BORRAR",
|
||||
"TEXT_STEREO": "ESTÉREO",
|
||||
"TEXT_MONO": "MONO",
|
||||
"TEXT_HEADSET": "HEADSET",
|
||||
"TEXT_SAVED_DATA_EXISTS": "SAVED DATA EXITS",
|
||||
"TEXT_NO_SAVED_DATA_EXISTS": "NO SAVED DATA EXISTS",
|
||||
"TEXT_RETURN": "RETURN",
|
||||
"TEXT_CHECK_SCORE": "CHECK SCORE",
|
||||
"TEXT_COPY_FILE_BUTTON": "COPY FILE",
|
||||
"TEXT_ERASE_FILE_BUTTON": "ERASE FILE",
|
||||
"TEXT_HI_SCORE": "HI SCORE",
|
||||
"TEXT_MY_SCORE": "MY SCORE",
|
||||
"TEXT_HEADSET": "AUDÍFONOS",
|
||||
"TEXT_SAVED_DATA_EXISTS": "EXISTEN DATOS GUARDADOS",
|
||||
"TEXT_NO_SAVED_DATA_EXISTS": "NO EXISTEN DATOS GUARDADOS",
|
||||
"TEXT_RETURN": "REGRESAR",
|
||||
"TEXT_CHECK_SCORE": "REVISAR PUNTAJE",
|
||||
"TEXT_COPY_FILE_BUTTON": "COPIAR ARCHIVO",
|
||||
"TEXT_ERASE_FILE_BUTTON": "BORRAR ARCHIVO",
|
||||
"TEXT_HI_SCORE": "PUNTAJE ALTO",
|
||||
"TEXT_MY_SCORE": "MI PUNTAJE",
|
||||
"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_COPY_IT_TO_WHERE": "COPY IT TO WHERE?",
|
||||
"TEXT_COPYING_COMPLETED": "COPYING COMPLETED",
|
||||
"TEXT_NO_FILE_TO_COPY_FROM": "NO EMPTY FILE",
|
||||
"TEXT_SURE": "SURE?",
|
||||
"TEXT_YES": "YES",
|
||||
"TEXT_COPY_IT_TO_WHERE": "¿COPIAR A DÓNDE?",
|
||||
"TEXT_COPYING_COMPLETED": "COPIADO COMPLETO",
|
||||
"TEXT_NO_FILE_TO_COPY_FROM": "NO ES UN ARCHIVO VACÍO",
|
||||
"TEXT_SURE": "¿SEGURO?",
|
||||
"TEXT_YES": "SÍ",
|
||||
"TEXT_NO": "NO",
|
||||
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A JUST ERASED",
|
||||
"TEXT_COURSE": "COURSE",
|
||||
"TEXT_MYSCORE": "MYSCORE",
|
||||
"TEXT_CONTINUE": "CONTINUE",
|
||||
"TEXT_EXIT_COURSE": "EXIT COURSE",
|
||||
"TEXT_EXIT_GAME": "EXIT GAME",
|
||||
"TEXT_CAMERA_ANGLE_R": "SET CAMERA ANGLE WITH R",
|
||||
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A HA SIDO BORRADO",
|
||||
"TEXT_COURSE": "NIVEL",
|
||||
"TEXT_MYSCORE": "MIPUNTAJE",
|
||||
"TEXT_CONTINUE": "CONTINUAR",
|
||||
"TEXT_EXIT_COURSE": "SALIR NIVEL",
|
||||
"TEXT_EXIT_GAME": "SALIR DEL JUEGO",
|
||||
"TEXT_CAMERA_ANGLE_R": "SELECCIONA ÁNGULO DE CÁMARA CON R",
|
||||
"TEXT_LAKITU_MARIO": "LAKITU + MARIO",
|
||||
"TEXT_LAKITU_STOP": "LAKITU + STOP",
|
||||
"TEXT_NORMAL_UPCLOSE": "(NORMAL)(UP-CLOSE)",
|
||||
"TEXT_NORMAL_FIXED": "(NORMAL)(FIXED)",
|
||||
"TEXT_CATCH": "CATCH",
|
||||
"TEXT_CLEAR": "CLEAR",
|
||||
"TEXT_HUD_HI_SCORE": "HI SCORE",
|
||||
"TEXT_SAVE_AND_CONTINUE": "SAVE & CONTINUE",
|
||||
"TEXT_SAVE_AND_QUIT": "SAVE & QUIT",
|
||||
"TEXT_SAVE_EXIT_GAME": "SAVE & EXIT GAME",
|
||||
"TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUE, DON'T SAVE",
|
||||
"TEXT_FILE_MARIO_EXCLAMATION": "Mario!",
|
||||
"TEXT_POWER_STARS_RESTORED": "The power of the Stars is restored to the castle...",
|
||||
"TEXT_THANKS_TO_YOU": "...and it's all thanks to you!",
|
||||
"TEXT_THANK_YOU_MARIO": "Thank you, Mario!",
|
||||
"TEXT_SOMETHING_SPECIAL": "We have to do something special for you...",
|
||||
"TEXT_LISTEN_EVERYBODY": "Listen, everybody,",
|
||||
"TEXT_LETS_HAVE_CAKE": "let's bake a delicious cake...",
|
||||
"TEXT_FOR_MARIO": "...for Mario...",
|
||||
"TEXT_FILE_MARIO_QUESTION": "Mario!"
|
||||
"TEXT_LAKITU_STOP": "LAKITU + QUIETO",
|
||||
"TEXT_NORMAL_UPCLOSE": "(NORMAL)(DE CERCA)",
|
||||
"TEXT_NORMAL_FIXED": "(NORMAL)(ARREGLADO)",
|
||||
"TEXT_CATCH": "ATRAPADO",
|
||||
"TEXT_CLEAR": "CONSEGUIDO",
|
||||
"TEXT_HUD_HI_SCORE": "PUNTAJE ALTO",
|
||||
"TEXT_SAVE_AND_CONTINUE": "GUARDAR Y CONTINUAR",
|
||||
"TEXT_SAVE_AND_QUIT": "GUARDAR Y SALIR",
|
||||
"TEXT_SAVE_EXIT_GAME": "GUARDAR Y SALIR DEL JUEGO",
|
||||
"TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUAR, NO GUARDAR",
|
||||
"TEXT_FILE_MARIO_EXCLAMATION": "¡Mario!",
|
||||
"TEXT_POWER_STARS_RESTORED": "El poder de las estrellas han vuelto al castillo...",
|
||||
"TEXT_THANKS_TO_YOU": "......¡Y todo es gracias a ti!",
|
||||
"TEXT_THANK_YOU_MARIO": "¡Gracias, Mario!",
|
||||
"TEXT_SOMETHING_SPECIAL": "Tenemos algo especial para ti...",
|
||||
"TEXT_LISTEN_EVERYBODY": "Escuchen, todos,",
|
||||
"TEXT_LETS_HAVE_CAKE": "vamos a hornear un delicioso pastel...",
|
||||
"TEXT_FOR_MARIO": "...para 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
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"manifest": {
|
||||
"langName": "Espa{00241}ol",
|
||||
"langName": "Espa{00241}ol Latinoamerica",
|
||||
"langLogo": "none"
|
||||
},
|
||||
"dialogs": [
|
||||
|
@ -14,6 +14,7 @@
|
|||
"de un campo de batalla.",
|
||||
"Encontrar{00225}s el Poder",
|
||||
"Estelar que Bowser se rob{00243}",
|
||||
"Estelar que Bowser se rob{00243}",
|
||||
"Dentro de los mundos",
|
||||
"de las pinturas.",
|
||||
"Primero, habla con el",
|
||||
|
@ -3328,72 +3329,70 @@
|
|||
" ESTRELLAS OCULTAS DEL CASTILLO"
|
||||
],
|
||||
"options": {
|
||||
"TEXT_OPT_OPTIONS": "OPTIONS",
|
||||
"TEXT_OPT_CAMERA": "CAMERA",
|
||||
"TEXT_OPT_CONTROLS": "CONTROLS",
|
||||
"TEXT_OPT_VIDEO": "DISPLAY",
|
||||
"TEXT_OPT_AUDIO": "SOUND",
|
||||
"TEXT_OPT_CHEATS": "CHEATS",
|
||||
"TEXT_OPT_OPTIONS": "OPCIONES",
|
||||
"TEXT_OPT_CAMERA": "C{00193}MARA",
|
||||
"TEXT_OPT_CONTROLS": "CONTROLES",
|
||||
"TEXT_OPT_VIDEO": "MONITOR",
|
||||
"TEXT_OPT_AUDIO": "SONIDO",
|
||||
"TEXT_OPT_CHEATS": "TRUCOS",
|
||||
"TEXT_OPT_HIGHLIGHT": "O",
|
||||
"TEXT_OPT_UNBOUND": "NONE",
|
||||
"TEXT_OPT_UNBOUND": "NADA",
|
||||
"TEXT_OPT_PRESSKEY": "...",
|
||||
"TEXT_OPT_BUTTON1": "[R] Options",
|
||||
"TEXT_OPT_BUTTON2": "[R] Return",
|
||||
"TEXT_OPT_ENABLED": "Enabled",
|
||||
"TEXT_OPT_DISABLED": "Disabled",
|
||||
"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": "Free Camera",
|
||||
"TEXT_OPT_ANALOGUE": "Analogue Camera",
|
||||
"TEXT_OPT_MOUSE": "Mouse Look",
|
||||
"TEXT_OPT_TEXFILTER": "Texture Filtering",
|
||||
"TEXT_OPT_FSCREEN": "Fullscreen",
|
||||
"TEXT_OPT_NEAREST": "Nearest",
|
||||
"TEXT_OPT_BUTTON1": "[R] Opciones",
|
||||
"TEXT_OPT_BUTTON2": "[R] Regresar",
|
||||
"TEXT_OPT_ENABLED": "Activado",
|
||||
"TEXT_OPT_DISABLED": "Desactivado",
|
||||
"TEXT_OPT_CAMX": "Sensibilidad X de la C{00225}mara",
|
||||
"TEXT_OPT_CAMY": "Sensibilidad Y de la C{00225}mara",
|
||||
"TEXT_OPT_INVERTX": "Invertir Axis X",
|
||||
"TEXT_OPT_INVERTY": "Invertir Axis Y",
|
||||
"TEXT_OPT_CAMC": "Intensidad de Centrado Autom{00225}tico",
|
||||
"TEXT_OPT_CAMP": "Nivel de Panor{00225}mica de la C{00225}mara",
|
||||
"TEXT_OPT_CAMD": "Desaceleraci{00243}n de la C{00225}mara",
|
||||
"TEXT_OPT_CAMON": "C{00225}mara Libre",
|
||||
"TEXT_OPT_ANALOGUE": "C{00225}mara Anal{00243}gica",
|
||||
"TEXT_OPT_MOUSE": "Bloqueo del Mouse",
|
||||
"TEXT_OPT_TEXFILTER": "Filtrado de Texturas",
|
||||
"TEXT_OPT_FSCREEN": "Pantalla Completa",
|
||||
"TEXT_OPT_NEAREST": "Cercano",
|
||||
"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",
|
||||
"TEXT_OPT_MVOLUME": "Volumen Principal",
|
||||
"TEXT_OPT_MUSVOLUME": "Volumen de la M{00250}sica",
|
||||
"TEXT_OPT_SFXVOLUME": "Volumen de los Efectos",
|
||||
"TEXT_OPT_ENVVOLUME": "Volumen del Ambiente",
|
||||
"TEXT_OPT_VSYNC": "Sync Vertical",
|
||||
"TEXT_OPT_AUTO": "Auto",
|
||||
"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-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": "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": "GAME",
|
||||
"TEXT_OPT_LANGUAGE": "Lenguaje actual",
|
||||
"TEXT_OPT_LANG_SPANISH": "Espanol",
|
||||
"TEXT_OPT_LANG_ENGLISH": "Ingles"
|
||||
"TEXT_OPT_THREEPT": "Tres-puntos",
|
||||
"TEXT_OPT_APPLY": "Aplicar",
|
||||
"TEXT_OPT_RESETWND": "Resetear Ventana",
|
||||
"TEXT_BIND_A": "Bot{00243}n A",
|
||||
"TEXT_BIND_B": "Bot{00243}n B",
|
||||
"TEXT_BIND_START": "Bot{00243}n Start",
|
||||
"TEXT_BIND_L": "Gatillo L",
|
||||
"TEXT_BIND_R": "Gatillo R",
|
||||
"TEXT_BIND_Z": "Gatillo Z",
|
||||
"TEXT_BIND_C_UP": "C-Arriba",
|
||||
"TEXT_BIND_C_DOWN": "C-Abajo",
|
||||
"TEXT_BIND_C_LEFT": "C-Izquierda",
|
||||
"TEXT_BIND_C_RIGHT": "C-Derecha",
|
||||
"TEXT_BIND_UP": "Stick Arriba",
|
||||
"TEXT_BIND_DOWN": "Stick Abajo",
|
||||
"TEXT_BIND_LEFT": "Stick Izquierda",
|
||||
"TEXT_BIND_RIGHT": "Stick Derecha",
|
||||
"TEXT_OPT_DEADZONE": "Zona Muerta del Stick",
|
||||
"TEXT_OPT_RUMBLE": "Fuerza de la Vibraci{00243}n",
|
||||
"TEXT_OPT_CHEAT1": "Habilitar Trucos",
|
||||
"TEXT_OPT_CHEAT2": "Salto Lunar (Presiona L)",
|
||||
"TEXT_OPT_CHEAT3": "Mario Invencible",
|
||||
"TEXT_OPT_CHEAT4": "Vidas Infinitas",
|
||||
"TEXT_OPT_CHEAT5": "Super Velocidad",
|
||||
"TEXT_OPT_CHEAT6": "Controles Super Respinsivos",
|
||||
"TEXT_OPT_CHEAT7": "Salir del Nivel en cualquier momento",
|
||||
"TEXT_OPT_CHEAT8": "Mario Gigante",
|
||||
"TEXT_OPT_CHEAT9": "Mario Peque{00241}o",
|
||||
"TEXT_OPT_GAME": "JUEGO",
|
||||
"TEXT_OPT_LANGUAGE": "Idioma actual"
|
||||
},
|
||||
"strings": {
|
||||
"TEXT_ZERO": "0",
|
||||
|
@ -3403,70 +3402,70 @@
|
|||
"TEXT_STAR_X": "{09733}{00215}",
|
||||
"TEXT_VARIABLE_X": "{00215}",
|
||||
"TEXT_UNFILLED_STAR": "{09734}",
|
||||
"TEXT_NEW": "NEW",
|
||||
"TEXT_NEW": "NUEVO",
|
||||
"TEXT_4DASHES": "----",
|
||||
"TEXT_PAUSE": "PAUSE",
|
||||
"TEXT_HUD_CONGRATULATIONS": "CONGRATULATIONS",
|
||||
"TEXT_PAUSE": "PAUSA",
|
||||
"TEXT_HUD_CONGRATULATIONS": "FELICIDADES",
|
||||
"TEXT_MARIO": "MARIO",
|
||||
"TEXT_SELECT_FILE": "SELECT FILE",
|
||||
"TEXT_CHECK_FILE": "CHECK FILE",
|
||||
"TEXT_COPY_FILE": "COPY FILE",
|
||||
"TEXT_ERASE_FILE": "ERASE FILE",
|
||||
"TEXT_SOUND_SELECT": "SOUND SELECT",
|
||||
"TEXT_SELECT_FILE": "SELECCIONAR ARCHIVO",
|
||||
"TEXT_CHECK_FILE": "REVISAR ARCHIVO",
|
||||
"TEXT_COPY_FILE": "COPIAR ARCHIVO",
|
||||
"TEXT_ERASE_FILE": "BORRAR ARCHIVO",
|
||||
"TEXT_SOUND_SELECT": "SELECCIONAR AUDIO",
|
||||
"TEXT_FILE_MARIO_A": "MARIO A",
|
||||
"TEXT_FILE_MARIO_B": "MARIO B",
|
||||
"TEXT_FILE_MARIO_C": "MARIO C",
|
||||
"TEXT_FILE_MARIO_D": "MARIO D",
|
||||
"TEXT_SCORE": "SCORE",
|
||||
"TEXT_COPY": "COPY",
|
||||
"TEXT_ERASE": "ERASE",
|
||||
"TEXT_STEREO": "STEREO",
|
||||
"TEXT_SCORE": "PUNTAJE",
|
||||
"TEXT_COPY": "COPIAR",
|
||||
"TEXT_ERASE": "BORRAR",
|
||||
"TEXT_STEREO": "EST{00201}REO",
|
||||
"TEXT_MONO": "MONO",
|
||||
"TEXT_HEADSET": "HEADSET",
|
||||
"TEXT_SAVED_DATA_EXISTS": "SAVED DATA EXITS",
|
||||
"TEXT_NO_SAVED_DATA_EXISTS": "NO SAVED DATA EXISTS",
|
||||
"TEXT_RETURN": "RETURN",
|
||||
"TEXT_CHECK_SCORE": "CHECK SCORE",
|
||||
"TEXT_COPY_FILE_BUTTON": "COPY FILE",
|
||||
"TEXT_ERASE_FILE_BUTTON": "ERASE FILE",
|
||||
"TEXT_HI_SCORE": "HI SCORE",
|
||||
"TEXT_MY_SCORE": "MY SCORE",
|
||||
"TEXT_HEADSET": "AUD{00205}FONOS",
|
||||
"TEXT_SAVED_DATA_EXISTS": "EXISTEN DATOS GUARDADOS",
|
||||
"TEXT_NO_SAVED_DATA_EXISTS": "NO EXISTEN DATOS GUARDADOS",
|
||||
"TEXT_RETURN": "REGRESAR",
|
||||
"TEXT_CHECK_SCORE": "REVISAR PUNTAJE",
|
||||
"TEXT_COPY_FILE_BUTTON": "COPIAR ARCHIVO",
|
||||
"TEXT_ERASE_FILE_BUTTON": "BORRAR ARCHIVO",
|
||||
"TEXT_HI_SCORE": "PUNTAJE ALTO",
|
||||
"TEXT_MY_SCORE": "MI PUNTAJE",
|
||||
"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_COPY_IT_TO_WHERE": "COPY IT TO WHERE?",
|
||||
"TEXT_COPYING_COMPLETED": "COPYING COMPLETED",
|
||||
"TEXT_NO_FILE_TO_COPY_FROM": "NO EMPTY FILE",
|
||||
"TEXT_SURE": "SURE?",
|
||||
"TEXT_YES": "YES",
|
||||
"TEXT_COPY_IT_TO_WHERE": "{00191}COPIAR A D{00211}NDE?",
|
||||
"TEXT_COPYING_COMPLETED": "COPIADO COMPLETO",
|
||||
"TEXT_NO_FILE_TO_COPY_FROM": "NO ES UN ARCHIVO VAC{00205}O",
|
||||
"TEXT_SURE": "{00191}SEGURO?",
|
||||
"TEXT_YES": "S{00205}",
|
||||
"TEXT_NO": "NO",
|
||||
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A JUST ERASED",
|
||||
"TEXT_COURSE": "COURSE",
|
||||
"TEXT_MYSCORE": "MYSCORE",
|
||||
"TEXT_CONTINUE": "CONTINUE",
|
||||
"TEXT_EXIT_COURSE": "EXIT COURSE",
|
||||
"TEXT_EXIT_GAME": "EXIT GAME",
|
||||
"TEXT_CAMERA_ANGLE_R": "SET CAMERA ANGLE WITH R",
|
||||
"TEXT_FILE_MARIO_A_JUST_ERASED": "MARIO A HA SIDO BORRADO",
|
||||
"TEXT_COURSE": "NIVEL",
|
||||
"TEXT_MYSCORE": "MIPUNTAJE",
|
||||
"TEXT_CONTINUE": "CONTINUAR",
|
||||
"TEXT_EXIT_COURSE": "SALIR NIVEL",
|
||||
"TEXT_EXIT_GAME": "SALIR DEL JUEGO",
|
||||
"TEXT_CAMERA_ANGLE_R": "SELECCIONA {00193}NGULO DE C{00193}MARA CON R",
|
||||
"TEXT_LAKITU_MARIO": "LAKITU + MARIO",
|
||||
"TEXT_LAKITU_STOP": "LAKITU + STOP",
|
||||
"TEXT_NORMAL_UPCLOSE": "(NORMAL)(UP-CLOSE)",
|
||||
"TEXT_NORMAL_FIXED": "(NORMAL)(FIXED)",
|
||||
"TEXT_CATCH": "CATCH",
|
||||
"TEXT_CLEAR": "CLEAR",
|
||||
"TEXT_HUD_HI_SCORE": "HI SCORE",
|
||||
"TEXT_SAVE_AND_CONTINUE": "SAVE & CONTINUE",
|
||||
"TEXT_SAVE_AND_QUIT": "SAVE & QUIT",
|
||||
"TEXT_SAVE_EXIT_GAME": "SAVE & EXIT GAME",
|
||||
"TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUE, DON'T SAVE",
|
||||
"TEXT_FILE_MARIO_EXCLAMATION": "Mario!",
|
||||
"TEXT_POWER_STARS_RESTORED": "The power of the Stars is restored to the castle...",
|
||||
"TEXT_THANKS_TO_YOU": "...and it's all thanks to you!",
|
||||
"TEXT_THANK_YOU_MARIO": "Thank you, Mario!",
|
||||
"TEXT_SOMETHING_SPECIAL": "We have to do something special for you...",
|
||||
"TEXT_LISTEN_EVERYBODY": "Listen, everybody,",
|
||||
"TEXT_LETS_HAVE_CAKE": "let's bake a delicious cake...",
|
||||
"TEXT_FOR_MARIO": "...for Mario...",
|
||||
"TEXT_FILE_MARIO_QUESTION": "Mario!"
|
||||
"TEXT_LAKITU_STOP": "LAKITU + QUIETO",
|
||||
"TEXT_NORMAL_UPCLOSE": "(NORMAL)(DE CERCA)",
|
||||
"TEXT_NORMAL_FIXED": "(NORMAL)(ARREGLADO)",
|
||||
"TEXT_CATCH": "ATRAPADO",
|
||||
"TEXT_CLEAR": "CONSEGUIDO",
|
||||
"TEXT_HUD_HI_SCORE": "PUNTAJE ALTO",
|
||||
"TEXT_SAVE_AND_CONTINUE": "GUARDAR Y CONTINUAR",
|
||||
"TEXT_SAVE_AND_QUIT": "GUARDAR Y SALIR",
|
||||
"TEXT_SAVE_EXIT_GAME": "GUARDAR Y SALIR DEL JUEGO",
|
||||
"TEXT_CONTINUE_WITHOUT_SAVING": "CONTINUAR, NO GUARDAR",
|
||||
"TEXT_FILE_MARIO_EXCLAMATION": "{00161}Mario!",
|
||||
"TEXT_POWER_STARS_RESTORED": "El poder de las estrellas han vuelto al castillo...",
|
||||
"TEXT_THANKS_TO_YOU": "......{00161}Y todo es gracias a ti!",
|
||||
"TEXT_THANK_YOU_MARIO": "{00161}Gracias, Mario!",
|
||||
"TEXT_SOMETHING_SPECIAL": "Tenemos algo especial para ti...",
|
||||
"TEXT_LISTEN_EVERYBODY": "Escuchen, todos,",
|
||||
"TEXT_LETS_HAVE_CAKE": "vamos a hornear un delicioso pastel...",
|
||||
"TEXT_FOR_MARIO": "...para Mario...",
|
||||
"TEXT_FILE_MARIO_QUESTION": "{00161}Mario!"
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -3345,9 +3345,7 @@
|
|||
"TEXT_OPT_CHEAT8": "Huge Mario",
|
||||
"TEXT_OPT_CHEAT9": "Tiny Mario",
|
||||
"TEXT_OPT_GAME": "GAME",
|
||||
"TEXT_OPT_LANGUAGE": "Current Language",
|
||||
"TEXT_OPT_LANG_SPANISH": "Spanish",
|
||||
"TEXT_OPT_LANG_ENGLISH": "English"
|
||||
"TEXT_OPT_LANGUAGE": "Current Language"
|
||||
},
|
||||
"strings": {
|
||||
"TEXT_ZERO": "0",
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
|
@ -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)
|
Loading…
Reference in New Issue