Registrarse

[Parche] [FR] "Parche" de traducción

Kaiser de Emperana

Called in hand
Bueno, creo este tema para intentar solucionar un problema que tiene esta comunidad.
Los parches se han ganado mala fama por el simple hecho de que la gente los hace mal. Todo el mundo usa Lunar IPS para hacer parches con pequeñas modificaciones que permitan ahorrar trabajo a otros usuarios, cuando este es una herramienta pensada para distribuir un rom UNA VEZ YA ESTÁ TERMINADO. Esto termina causando una serie de problemas, ya que los parches de las diferentes personas empiezan a "colisionar" entre si, entre otras cosas.
Por esto la gente termina optando por no usar ningún parche y haciendo todo por uno mismo. Pero la idea de ahorra trabajo no es lo que está mal. No hace falta que todo el mundo traduzca su propio juego, es un desperdicio de tiempo siendo que si uno lo hace una vez BIEN, no es necesario hacerlo más.

Verdadero comienzo del tema
Por eso es que cree este repositorio en github:
https://github.com/kaisermg5/traduccion-bpre

El proceso de insercción en el rom es como siempre el mismo, en el README lo explica... Van a necesitar esto: https://whackahack.com/foro/t-49751/instalando-herramientas-desarrollador

De momento, el repositorio es una versión desplazable de este parche, hecho por @Dani_SR_17:
https://whackahack.com/foro/t-32741/parche-fr-daani-translate-por-rom-totalmente-en-espanol
Lo tomé como base porque tiene algunos textos de las interfaces traducidos. En un principio el parche se insertaba en la dirección 0x8f00000. Ahora insertarlo en cualquier otro lugar es cosa de simplemente editar el offset del archivo "main.s"

Y se preguntarán "¿Eso es la única ventaja?". La respuesta es No.
Ahora corregir errores en el parche y agregar más traducciones, es tan simple como editar un archivo de texto.

Para traducir el texto "What will {NOMBRE_POKEMON} do?" que se muestra en una batalla, cualquiera que sepa como traducir sabe que el proceso es simplemente:
- Buscar el texto.
- Encontrar los punteros a ese texto.
- Escribir el nuevo texto un espacio vacío.
- Cambiar los punteros para que apunten al nuevo texto.

Aquí el procedimiento es casi el mismo:
- Vamos a buscar el texto. "What will..." está en: 0x83fe6d5
- Buscamos los punteros que apuntan al texto. En total hay tres, en las direcciones: 0x8032c40, 0x80ea76c y 0x8158bd4
Pero ahora, cambiando de rumba, vamos a dejar el rom tal y como está.

Mirando el repositorio, este tiene tres carpetas, las que nos interesan son: "desplazables" y "sobreescrituras"
En sobeescrituras se encuentran los datos que deben ser escritos en una parte específica del rom (los punteros que deben apuntar al nuevo texto).
Mientras que en desplazables vamos a escribir los datos que deben ser escritos en espacio vacío (los textos en sí).

Vamos a crear un nuevo archivo de texto (o modificar uno existente) en la carpeta desplazables. El archivo debe tener de extensión ".s", en minúscula, y no debe contener ningún caracter especial ni espacios
Y escribir algo similar a lo siguiente:
Código:
MensajeBatalla_QueHara::
.string "¿Qué hará\n{STRING 0x12}?$"
¿Qué es cada cosa aquí?
MensajeBatalla_QueHara vedría a ser el nombre con el que nos vamos a referir al texto. Debe empezar con una letra y no debe contener caracteres especiales. También debe estar seguido por los dobles dos puntos.
.string "..." es la forma de decir que lo que está entre las comillas es un texto.
Y bueno el "¿Qué hará\n{STRING 0x12}?$" es el texto en si. "{STRING 0x12}" es el equivalente al buffer usado, que es la secuencia de bytes "FD 12"
Si miran el archivo "charmap.txt", hay una línea que dice:
Código:
STRING = FD
Este es un caracter especial. La forma de usarlo es como yo lo hice, entre llaves. Si uno escribe {STRING} es el equivalente en bytes de FD, mienras que {STRING 0xEE} sería el equivalente de FD EE. Si hay aluna duda con los carácteres especiales, pregunten.

El "$" del texto es el caracter que simboliza el fin del texto, sería el byte FF.

Pero bueno. Con hacer esto, ya estamos insertando el texo en el juego pero todavía falta un paso. Cambiar los punteros.

Para repuntear vamos a crear (o modificar) un archivo en la carpeta sobreescrituras. Los nombres tienen las mismas limitaciones mencionadas anteriormente.
Ahora, para cambiar un puntero debemos escribir lo siguiente en el archivo:
Código:
.org 0x8032c40
.word MensajeBatalla_QueHara
Esto básciamente significa: en la dirección 0x8032c40 escribí el puntero a MensajeBatalla_QueHara. Siendo el primero una de la direcciones donde estaba el puntero al mensaje en inglés. Y MensajeBatalla_QueHara el nombre que le dimos al nuevo texto insertado (nótese que aquí no van los dos puntos).

Como hay tres punteros que cambiar, agregamos los dos que faltan:
Código:
.org 0x8032c40
.word MensajeBatalla_QueHara
.org 0x80ea76c
.word MensajeBatalla_QueHara
.org 0x8158bd4
.word MensajeBatalla_QueHara

Y con esto ya está. Sólo queda insertarlo en el rom y probar que funcione correctamente.


(Lucha , Mochila, etc. ya estaba traducido de antes)

¿Qué es lo que intento lograr con esto?
Que dejemos de desperdiciar tiempo y nos ayudemos entre todos. Cuando alguien traduzca algo, por favor hágalo expandiendo este "parche", no en binario con editor hexadecimal.
Cuando lo hagan, pueden enviar un pullrequest en github o postearlo en este tema para que yo lo actualice.
También si encuentran cualquier bug o algún error de ortografía, repórtenlo. Es muy fácil de arreglar.


Espero sinceramente que la gente aporte y no haber desperdiciado unas cuantas horas...

Cualquier duda pregunten.

Saludos
 

ANT0N9

Algun Sprite?
Vaya nadie comenta jeje. Bueno la verdad es que es un GRAN APORTE, me sentí identificado con tus palabras en la parte de (Esto termina causando una serie de problemas, ya que los parches de las diferentes personas empiezan a "colisionar" entre si, entre otras cosas.) a mi ya me paso una vez este tipo de problemas con los parches y tuve que comenzar de nuevo mi hack.
El punto es que es un gran aporte lo de traducir la rom (ya que nos facilita el trabajo)

Un saludo y muchas gracias ;)
 

MichaKing

Grafista avanzado

Vaya, veo que esto no tiene el reconocimiento que se merece, y quizás sea porque la gente piense que es un parche más del montón (Puesto que en WaH en cada esquina hay un parche de traducción), pero la verdad es que esto es algo que va mucho más allá de lo que parece, es una manera mucho más cómoda de traducir un juego de Pokémon, además de que yo soy alguien muy perfeccionista y con esto sin duda se me facilitará la tarea. Por cierto, me fijé que el parche de Dani (entre otras cosas) no traduce cosas como Ataques, Habilidades y Objetos, y las tengo a la mano, luego me pongo un poco a ver cómo funciona todo esto para ayudarte un poco.

Se despide, MichaKing~
 

Dani_SR_17

¡Pokémon LionHeart!
Que pocos comentarios veo por aquí.
Sin duda es algo que se debería haber hecho hace muchísimo tiempo, y ya podríamos tener todas las roms totalmente en Español (o casi).
Por desgracia para mí ya llevo demasiado avanzado el tema de la traducción, y sobretodo muchos textos los he adaptado a mi hack.
Me alegra que mi parche sirviera de base, aunque he de decir que aquel parche aun estaba bastante verde y que el parche de las paletas dinámicas estuviera en la misma dirección supuso su fin (o al menos eso parecía jaja).

En fin, que mucha suerte con esto y ojalá avance lo suficiente para tener una traducción decente.
 

Acosta

The Wolf~
Vaya, muy pocos han comentado esto. Esto es un gran aporte, sin duda es bastante bueno, facilita mucho el trabajo a la hora de traducir un juego, luego lo estaré probando. Un excelente trabajo.

¡Muchas gracias! :)
 
Arriba