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.
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.
¿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
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í).
Pero bueno. Con hacer esto, ya estamos insertando el texo en el juego pero todavía falta un paso. Cambiar los punteros.
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)
- 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:
¿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:
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.
Y escribir algo similar a lo siguiente:
Código:
MensajeBatalla_QueHara::
.string "¿Qué hará\n{STRING 0x12}?$"
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
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:
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:
Ahora, para cambiar un puntero debemos escribir lo siguiente en el archivo:
Código:
.org 0x8032c40
.word MensajeBatalla_QueHara
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