kakarotto
Leyenda de WaH
Hola a todos.
En esta ocasión vengo con un tutorial sobre Decompilación y Desensamblaje, un modo de romhackear que hace más ameno algunas cosas que en binario costaba un mundo.
Les hablo de la traducción. Realmente es algo muy sencillo, ya que todos los textos se encuentran en battle_message.c.
En este archivo identificamos varios buffer, además, que contiene un dato específico ya sea del nombre del pokemon, el nombre del jugador, el nombre del pokemon rival, la clase del entrenador...
Un ejemplo sería este:
Deducimos muy rápidamente que B_PLAYER_NAME es el buffer donde se aloja el nombre de nuestro personaje y B_LAST_ITEM es el buffer donde se aloja el último ítem utilizado.
También hay otros buffers que tienen una utilidad más expandida, es decir, dichos buffers se utilizan para múltiples funciones dependiendo en que contexto vaya.
Un ejemplo sería este:
Donde dicho buffer en algunos textos delimita al nombre del POKéMON y en otros textos cambia a fell ó rose.
Diciéndolo de otra forma, este buffer es dinámico.
También hay otros textos que estan programados, haciendo imposible una traducción agradable.
Me refiero al famoso mensaje de:
que traducido viene siendo: Pokémon salvaje usó ataque ó Pokémon enemigo usó ataque.
Para editar esto hay que hacer una serie de correciones para que dicho "Wild" y dicho "Foe" se ponga después de la especie del POKéMON, quedando como Pokemon salvaje usó ó Pokemon enemigo usó.
-Lo primero que se debe hacer en battle_message.c es traducir todo texto que contenta "Wild" y "Foe".
-Seguidamente nos vamos a la línea donde se define esto:
-Cambiamos el código presente por esto:
¡Y listo! ¡Ya podéis traducir de una manera profesional!
Espero que el tutorial les sea de vuestro agrado.
Hasta luego guapos:boogie:
En esta ocasión vengo con un tutorial sobre Decompilación y Desensamblaje, un modo de romhackear que hace más ameno algunas cosas que en binario costaba un mundo.
Les hablo de la traducción. Realmente es algo muy sencillo, ya que todos los textos se encuentran en battle_message.c.
En este archivo identificamos varios buffer, además, que contiene un dato específico ya sea del nombre del pokemon, el nombre del jugador, el nombre del pokemon rival, la clase del entrenador...
Un ejemplo sería este:
Código:
{B_PLAYER_NAME} used\n{B_LAST_ITEM}!
También hay otros buffers que tienen una utilidad más expandida, es decir, dichos buffers se utilizan para múltiples funciones dependiendo en que contexto vaya.
Un ejemplo sería este:
Código:
{B_BUFF2}
Diciéndolo de otra forma, este buffer es dinámico.
También hay otros textos que estan programados, haciendo imposible una traducción agradable.
Me refiero al famoso mensaje de:
Código:
Wild [POKéMON] used [ATTACK]
Foe[POKéMON] used [ATTACK]
Para editar esto hay que hacer una serie de correciones para que dicho "Wild" y dicho "Foe" se ponga después de la especie del POKéMON, quedando como Pokemon salvaje usó ó Pokemon enemigo usó.
-Lo primero que se debe hacer en battle_message.c es traducir todo texto que contenta "Wild" y "Foe".
-Seguidamente nos vamos a la línea donde se define esto:
Código:
#define HANDLE_NICKNAME_STRING_CASE(battlerId, monIndex)
Código:
#define HANDLE_NICKNAME_STRING_CASE(battlerId, monIndex) \
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) \
{ \
GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
StringGetEnd10(text); \
toCpy = text; \
while (*toCpy != EOS) \
{ \
dst[dstID] = *toCpy; \
dstID++; \
toCpy++; \
} \
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
toCpy = sText_FoePkmnPrefix; \
else \
toCpy = sText_WildPkmnPrefix; \
} \
else \
{ \
GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
StringGetEnd10(text); \
toCpy = text; \
}
Espero que el tutorial les sea de vuestro agrado.
Hasta luego guapos:boogie: