Registrarse

[pokefirered] Más caracteres para nombres de movimientos + objetos

RandomSponge

Usuario de oro
¡Buenas!

En esta ocasión, vengo a presentarles como aumentar el limite de caracteres para nombres de los movimientos + objetos en firered
(aunque estoy seguro de que es posible de portear a pokeemerald, solo que no lo he intentado :p), y en el caso de los movimientos,
como usar los nombres completos donde si tienen espacio, mientras los nombres abreviados se quedan en ciertos menús.

Creditos a Z-nogyroP en Pokécommunity por el sistema para los nombres de movimientos, originalmente creado para la CFRU pero
que portee a pokefirered.

Paso 1: Crear una tabla nueva.

En src/data/text/move_names.h, copia la tabla de texto "const u8 gMoveNames" en su totalidad y pega la copia debajo de la original.

A esta nueva tabla se le tiene que dar un nombre distinto, pero preferiblemente que sea fácil de identificar. En mi caso simplemente
añadí "Long" al nombre (LongMoveNames).
También se requiere cambiar el [13] por el número de caracteres deseado, en mi caso lo deje en [18].
Para este tutorial no voy a añadir nombres traducidos o cambiados, ya depende de tu proyecto que nombres requieran tener más
de 13 caracteres (que es el limite original) y abreviaciones.
Si un nombre no pasa de ese limite, simplemente déjalo igual en ambas tablas.


Paso 2: "Exportar" la tabla.

En include/data.h, agrega extern const u8 gLongMoveNames[][18]; debajo de extern const u8 gMoveNames[][13];.


Paso 3a: Hacer que los nombres largos aparezcan en batalla.

En src/battle_message.c, remplaza las líneas 1630, 1916, 1922 y 2192 con

StringCopy(gBattleTextBuff2,gLongMoveNames[sBattleMsgDataPtr->currentMove]); ,

toCpy = gLongMoveNames[sBattleMsgDataPtr->currentMove]; ,

toCpy = gLongMoveNames[sBattleMsgDataPtr->originallyUsedMove];

y StringAppend(dst, gLongMoveNames[T1_READ_16(&src[srcId + 1])]); respectivamente.


Paso 3b: Hacer que los nombres largos aparezcan en el menú de TMs/MTs (TM CASE).

En src/tm_case.c, remplaza la linea 535 con StringAppend(gStringVar4, gLongMoveNames[ItemIdToBattleMoveId(itemId)]);

Bonus: Adicionalmente, si se quiere tener más acentos o caracteres en los nombres cortos, se puede aumentar el valor de
MOVE_NAME_LENGTH en include/constants/global.h
(claro, también podrías aumentarlo junto con MoveNames al grado de LongMoveNames y descartar eso,
pero entonces no puedes hacer que el juego muestre nombres abreviados donde no caben los largos ;))

¡Y listo!
Hay otros menús que usan los nombres, pero no los he cambiado porque ya no tienen espacio para nombres más largos,
incluso si la diferencia es de un carácter.

Paso 1: Aumentar el limite de caracteres.

En include/constants/global.h, aumenta el valor de ITEM_NAME_LENGTH, en mi caso, lo aumente de 14 a 19.
(el valor resulta en el número de caracteres + 1, así que ten cuidado de no poner un nombre de 19 letras en este caso, porque dará error)


Paso 2: Aumentar el limite de caracteres en menús.

En src/item_menu.c, aumenta el valor de (*sListMenuItemStrings) de forma proporcional al aumento en ITEM_NAME_LENGTH
(en este caso, como ITEM_NAME_LENGTH aumento + 5 (*sListMenuItemStrings) también lo hace, quedando en [24])

De la misma forma, aumenta el valor de (*sShopMenuItemStrings) en src/shop.c.

¡Y listo!

Dado que no di ejemplos específicos para los nombres, aquí hay capturas de mi traducción pokefireredlat, en la que usé estas modificaciones para que se vea que funcionan:
pokefirered_rev1-3.png
pokefirered_rev1-4.png
pokefirered_rev1-2.png

pokefirered_rev1-7.png
pokefirered_rev1-5.png
pokefirered_rev1-6.png

¡Gracias por leer!
 

Vent

グラフィックの神
Soy el primer comentario!
Aunque no trabajo en decompilación, estas modificaciones que he visto, me han encantado, es un gran trabajo el que hayas porteado esta singularidad que se incluye en CFRU, también pasandola a pokefireredlat.
Sigue así crack!
 

RandomSponge

Usuario de oro
Hay alguna manera de hacer esto pero para los nombres de los pokémon? un saludo y gran trabajo
¡Creo que si la hay!

Lo principal para eso sería editar el valor de POKEMON_NAME_LENGTH en include/constants/global.h (que por defecto es de 10).
Aunque no he probado si esto traería posibles errores al compilar o si los menús tienen espacio para nombres más largos.
 

Mobius1

Usuario de bronce
¡Creo que si la hay!

Lo principal para eso sería editar el valor de POKEMON_NAME_LENGTH en include/constants/global.h (que por defecto es de 10).
Aunque no he probado si esto traería posibles errores al compilar o si los menús tienen espacio para nombres más largos.
yo ya probe y aunque deja compilar la rom, el personaje es invisible no te puedes mover y el menu se bugea y no deja hacer mucho, no se que hay que hacer pero creo que cuando cambias el nombre sin cambiar el limite, da pistas de donde falla despues quiza sea eso que los menus no tienen mas espacio, y si no se cambian no se puede hacer nada. Este codigo es sin ampliar el limite de caracteres, ampliando el limite lo que digo antes es lo que ocurre.
Código:
In file included from src/data.c:336:
src/data/text/species_names.h:904: warning: excess elements in array initializer after `gSpeciesNames[900]'
src/data/text/species_names.h:904: warning: excess elements in array initializer after `gSpeciesNames[900]'
tools/agbcc/bin/agbcc <flags> -o build/emerald/src/battle_ai_util.o src/battle_ai_util.c
tools/agbcc/bin/agbcc <flags> -o build/emerald/src/post_battle_event_funcs.o src/post_battle_event_funcs.c
tools/agbcc/bin/agbcc <flags> -o build/emerald/src/battle_transition_frontier.o src/battle_transition_frontier.c
tools/agbcc/bin/agbcc <flags> -o build/emerald/src/script_pokemon_util.o src/script_pokemon_util.c
tools/agbcc/bin/agbcc <flags> -o build/emerald/src/pokedex_area_screen.o src/pokedex_area_screen.c
tools/agbcc/bin/agbcc <flags> -o build/emerald/src/pokenav_menu_handler.o src/pokenav_menu_handler.c
make: *** [Makefile:343: build/emerald/src/data.o] Error 1
make: *** Deleting file 'build/emerald/src/data.o'
make: *** Waiting for unfinished jobs....
 
Arriba