Registrarse

[pokefirered] Pokerojofuego | Objetivo: Avanzar en la traducción de scripts ¡Completado! ¡scripts en español al 100% ! | Día 32

Acimut

Profesional de WaH
¡Que tal!

Mi objetivo en este reto es avanzar en la traducción de scripts de un proyecto que llamaré pokerojofuego, el cual consiste en, más que una traducción de pokefirered, es la obtención de la ROM Rojo Fuego BPRS compilando desde pokefirered.

He avanzado bastante en este proyecto mientras he tenido tiempo, logrando decompilar la mayoría de las funciones principales que diferencia rojo fuego de su versión inglesa fire red, así como varios de los gráficos; pero luego de más de un año de inactividad es hora de terminarlo.

Así que, retomando donde lo dejé, debo continuar con la traducción de scripts, usando los textos originales de pokémon rojo fuego. La cantidad de textos de scripts a traducir no es nada más que 11716 en total, de los cuales ya había traducido 4235 (un poco más de la tercera parte), y para este reto debo traducir tanto como pueda de los 7481 textos de scripts faltantes en estos 30 días!

Estado actual de los Scripts: 36.15%


Según mis cálculos, puedo avanzar entre 50 y 100 scripts al día, y para terminar los scripts al 100% debería tomarme cerca de tres meses, por lo que al final del reto debería terminar cerca del 55%. El trabajo no es difícil, y es más de paciencia y repetir lo mismo cada día mientras se avanza, acompáñenme y vean cómo pierdo la cordura en este reto.

Además, debo instalar todo desde cero para trabajar en este proyecto de decompilación, así que empezaré con ello hoy (Día 1: instalar weas cúanticas para compilar).

Algunas capturas con los gráficos traducidos, para no morir ignorado:



Como pueden ver en las capturas el proyecto no está terminado del todo, pero espero pronto lo esté.

Este proyecto lo empecé en enero de 2022 cuando estaba buscando algunos offset equivalentes entre Rojo Fuego BPRS y Fire Red BPRE, y luego de comparar mi base de datos de funciones de la rom española contra la inglesa, llegué a la conclusión de que aparte de los textos y gráficos que siempre cambian entre idiomas, naturalmente la mayoría de las funciones serían las mismas entre ambas rom, al menos más de un 90%.

Entonces pensé que si es posible decompilar (pasar de binario a código en C) todas las funciones que sólo existen en la rom española, además de las diferencias entre funciones, sería posible realizar la decompilación de rojo fuego bprs utilizando el código que que ha decompilado PRET con pokefirered.

Empecé modificando pokefirered, específicamente el makefile y otros archivos para poder mantener la compilación de fire red, por lo que al final se podrá usar el proyecto para hacer hacks que compilen en inglés y español tal como hizo GameFreak.

Un par de semanas desde que inicié esto, y luego de probar algunas cosas obtuve descubrimientos interesantes, como que toda la EWRAM (sección 0x02000000) de rojo fuego y fire red es la misma; y en rojo fuego no se usa AGBASERT. También obtuve los offset de la IWRAM (sección 0x03000000) de rojo fuego.

Luego de esto, pasó algunos meses antes de que tuviera algo de tiempo y pudiera retomar el proyecto. Así, en diciembre de 2022 retomé el proyecto con fuerza. Inspirado en pokeruby, donde es posible compilar la rom en sus diferentes versiones en inglés y alemán, decidí que debía organizar el poco trabajo que tenía adelantado y hacer una rama nueva en el fork de pokefirered que tengo, para poner los avances ahí.

Desde entonces el proyecto ha tomado forma, y entre el trabajo que hice en diciembre 2022 y febrero de 2023 en mi tiempo libre, he logrado llegar a un 20% de coincidencia de offsets (10200/50848 offset).

Actualmente el avance total es un poco más del 34% (última actualización, agosto de 2023).

El proyecto es público, y se puede encontrar en la siguiente rama: https://github.com/Acimut/pokefirered/tree/BPRS

pueden ver los cambios en el siguiente enlace:

Pd: este proyecto lo realizo única y simplemente por interés personal, me vale queso si alguien más ya lo hizo.
 

zekrom007

Usuario de oro
@PokeAJ mira esta traduciendo rojo fuego de nuevo igual un avance es un avance se valora tu esfuerzo para que los demas decompilen ...... acimut porque tienes tu perfil restringido ni siquiera para hablarte pe
 

Acimut

Profesional de WaH
@PokeAJ mira esta traduciendo rojo fuego de nuevo igual un avance es un avance se valora tu esfuerzo para que los demas decompilen ...... acimut porque tienes tu perfil restringido ni siquiera para hablarte pe
Debo aclarar que, el objetivo de este reto es avanzar en la traducción de los scripts, sin embargo el objetivo final del proyecto es compilar una rom BPRS que coincida con la original lanzada por gamefreak comparando la suma de verificación del binario compilado.

Sobre la restricción, supongo porque andaba en la murision.
 

Acimut

Profesional de WaH
¡Hola Que tal!
No crean que me he olvidado del reto, nomás me olvidé de publicar los avances aquí xd

Día 1: Organicé todo el material que necesitaba para el reto, y se me fue el tiempo mientras pensaba en cositas.

Día 2: Instalé todo lo necesario para usar decomp en Windows, y luego me puse a traducir scripts como loco, 143 scripts traducidos. Textos traducidos:
  • Alto mando (Lorelei, Bruno, Agatha, Lance, Champion) y salón de la fama.
  • Tunel Roca
  • Islas Espuma, piso 4 bajo tierra
  • Torre desafío (pisos del 1 al 7)
Día 3: Inspirado, me puse a traducir scripts, 154 scripts traducidos. Textos traducidos:
  • Monte Ascuas (exterior y ruta rubí)
  • Isla tera (bosque baya, Vía Isla Tera )
  • Isla Quarta (Cueva Glaceada)
  • Isla Inta (Almacén Rocket, Cueva cambiante 1, 4 y 10)
  • Isla Exta (Cueva Punteada, Bosquejo)
  • Torre desafío (Lobby)
  • Isla Sétima (Llave Sete)
  • Isla Prima (Balneario Ascuas)
Día 4: Hoy me puse a traducir scripts como si no hubiera un mañana, así que terminé traduciendo 293 scripts. Textos traducidos (Exterior):
  • Pueblo Paleta
  • Ciudad Verde
  • Ciudad Plateada
  • Ciudad Celeste
  • Pueblo Lavanda
  • Ciudad Carmín
  • Ciudad Azulona
  • Ciudad Fucsia
  • Isla Canela
  • Ciudad Azafrán
  • Isla Prima
  • Isla Secunda
  • Isla Tera
  • Isla Quarta
  • Isla Inta
  • Isla Sétima
  • Isla Exta
  • Ruta 1
Los cambios se pueden en los commits de aquí

Bitácora del capitán: Hoy llegamos al 41.18% de los scripts traducidos. Al ritmo que vamos podríamos llegar al 70% de scripts traducidos para cuando termine el mes. También grabé todo el proceso de instalación de programas para decomp en Windows, material que usaré para hacer algunos tutoriales.

Pd: les dejo un vídeo de cómo voy realizando la traducción de scripts de pokefirered, velocidad x5 (10 minutos de trabajo):
 
Última edición:

Jaizu

Usuario mítico
Pinta bastante bien, aunque deberías sincronizar el repo con pokefirered, tu repo está casi 200 commits por detrás del oficial. No creo que te dé mucho trabajo, pero ayudaría a los repos actuales y lo quiero robar para la gamejam.
 

Acimut

Profesional de WaH
Pinta bastante bien, aunque deberías sincronizar el repo con pokefirered, tu repo está casi 200 commits por detrás del oficial. No creo que te dé mucho trabajo, pero ayudaría a los repos actuales y lo quiero robar para la gamejam.
Sí.
Una vez la ROM compilada coincida con la original de rojo fuego realizaré la actualización. Mientras tanto debo terminar de traducir los textos de los scripts porque es lo más tardado de hacer, así que una vez complete esta sección será cuestión de poco tiempo para que acabe 🥵
Además quiero crear 2 ramas actualizadas, una donde únicamente compile una ROM en español, y otra con compilación en idioma inglés/español establecido en el archivo de configuración (configuración de rama actual).
 

Acimut

Profesional de WaH
Día 5: Este día traduje algunos textos de scripts, 134 para ser precisos. Textos traducidos:
  • Ruta 2, 3, 4, 5, 6, 7, 8 y 9
Día 6: Hoy traduje bastantes textos de scripts, 733 una locura. Textos traducidos:
  • Ruta 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 y 25
  • Isla prima
  • Isla tera
  • Isla Inta
  • Isla exta
  • Isla sétima
Bitácora del capitán: Esta vez le dediqué varias horas a la traducción de scripts, y dado que es un proceso plano y aburrido, me quedé dormido mientras copiaba y pegaba los textos traducidos de la ruta 18. Luego de un par de horas de sueño, continué hasta que el pc se puso muy lento. Luego de compilar y comprobar avances, logramos llegar a un asombroso 48.58% completado en la sección de scripts, avanzando un 6.25% solamente en el día 6. Básicamente con el exterior de las rutas traducidas, se siente mejor la traducción en este punto. A este ritmo para el día 8 llegaré a la meta de este reto que inicialmente era el 55% en la sección de scripts, ahora tengo la sensación que si logro mantener los ánimos podría terminar la sección de scripts al término de este reto, lo que dejaría relativamente cerca de terminar este proyecto puesto que la parte difícil que era decompilar las funciones que no existen en inglés y sus diferencias está casi completo, el resto no debería suponer un reto (sección de librerías, no me den un dolor de cabeza 🙏).
 

Kaktus

Miembro insignia
Miembro insignia
No sé muy bien como lo estarás estructurando a nivel de código, pero intuyo que estarás reemplazando el texto en inglés por el español.

A modo de recomendación, si mal no recuerdo, el proyecto de pokeemerald tiene opciones de compilación.

Me parecería super interesante que una vez terminado este proyecto de "pokerojofuego", se pudiera crear un nuevo repositorio estilo: pokeemerald-i18n, donde mediante las opciones de compilación, puedas compilar una ROM a diferentes idiomas.

Esto podría hacer mucho más fácil la creación de hacks multilenguaje.

Si esto se hiciera bien, se me ocurren una infinidad de opciones, como por ejemplo, compartir con la comunidad un repositorio con las strings de un HACK para que ellos mismos puedan crear las traducciones a muchos idiomas, sin exponer directamente todo el código fuente.

También se podrían crear programas que integrados con la IA, se encargaran de traducir al idioma que le pidas en minutos un hack entero.

Si os animáis a hacer esto de la internacionalización, seguramente me anime a crearos algo para la traducción automática de proyectos :p

¡¡Mucho ánimo con el proyecto, que tiene muy muy buena pinta!!
 

Acimut

Profesional de WaH
No sé muy bien como lo estarás estructurando a nivel de código, pero intuyo que estarás reemplazando el texto en inglés por el español.

A modo de recomendación, si mal no recuerdo, el proyecto de pokeemerald tiene opciones de compilación.

Me parecería super interesante que una vez terminado este proyecto de "pokerojofuego", se pudiera crear un nuevo repositorio estilo: pokeemerald-i18n, donde mediante las opciones de compilación, puedas compilar una ROM a diferentes idiomas.

Esto podría hacer mucho más fácil la creación de hacks multilenguaje.
Hago uso de las directivas .ifdef en asm y #if #ifdef en C para compilar de acuerdo al idioma inglés o español, el idioma se puede cambiar en el archivo config.mk o cambiando los argumentos de make a la hora de compilar (ejemplo: make -j$nproc GAME_VERSION=FIRERED GAME_LANGUAGE=SPANISH), la ROM compilada en inglés sigue coincidiendo con la original. Entonces sí, el proyecto es capaz de compilar en diferentes idiomas (no confundir con ROM multilenguaje).

Si esto se hiciera bien, se me ocurren una infinidad de opciones, como por ejemplo, compartir con la comunidad un repositorio con las strings de un HACK para que ellos mismos puedan crear las traducciones a muchos idiomas, sin exponer directamente todo el código fuente.

También se podrían crear programas que integrados con la IA, se encargaran de traducir al idioma que le pidas en minutos un hack entero.
Esto es un poco complejo de llevar a cabo, pero creo que usando json para la escritura de los strings de los scripts para que luego se traduzca a asm en formato .inc, sería la mejor solución en muchos aspectos. Básicamente copiando la configuración de los items, y tiene aplicación en otras áreas del proyecto que aplica a la traducción de textos.

Si os animáis a hacer esto de la internacionalización, seguramente me anime a crearos algo para la traducción automática de proyectos :p

¡¡Mucho ánimo con el proyecto, que tiene muy muy buena pinta!!
Muchas gracias por su apoyo, significa mucho para mí ♥
 

Acimut

Profesional de WaH
Día 7: Hoy mi teclado se volvió loco, así que no pude avanzar en la traducción de scripts.

Bitácora del capitán: Justo estaba pensando en avanzar en la traducción de scripts cuando noto que mi teclado no estaba funcionando correctamente (oprimir una tecla era igual a oprimir varias a la vez). Así que me pasé toda la tarde probando cosas para que se arreglara, pero siguió igual. Entonces me rendí y me puse a leer un manga para pasar el tiempo, pero hace media hora me doy cuenta que el pvto teclado mágicamente estaba funcionando normalmente.
 

Acimut

Profesional de WaH
¡Que tal!
Luego de algunos días de inactividad, regreso con novedades.

Día 8: Este día avancé en la traducción de 316 textos de scripts hasta que el teclado dijo ya no más. Textos traducidos (Interior):
  • Pallet Town
  • Viridian City
  • Pewter City
  • Cerulean City
  • Lavender Town
Días 9, 10, 11, 12 y 13: Tuve algunas cosas que hacer estos días, así que también aproveché para tomarme un par días de descanso extra. Descansar es bueno.

Día 14: Hoy volví con energía al 100% y continué con la traducción de textos de scripts, sumando 661 para el conteo. Textos traducidos (Interior):
  • Vermilion City
  • Celadon City
  • Fuchsia City
  • Cinnabar Island
  • Indigo Plateau
  • Saffron City
  • Entradas de rutas 2, 4, 5, 6, 7, 8, 10, 11, 12, 15, 16, 18 & 25.
Bitácora del capitán: Al ritmo que llevaba esperaba llegar a la meta el día 8, o el 9 si no fuera por el teclado. Aún así, con el avance de hoy llegamos al 56.92% de avance en la sección de scripts. Con esta cifra cumplo con mi meta inicial del desafío traduciendo más de 2400 textos de scripts, aunque planeo continuar con los avances en la traducción en los siguientes días para ver hasta dónde llegamos cuando sea el día 30 del desafío, eso sí, puede que me tome algunas pausas.


Para terminar, algunos vídeos de muestra (eran 6, pero uno se me pasó por 100kb 😭 ):


 

Acimut

Profesional de WaH
¡Que tal!
Luego de otros días de inactividad, regreso con novedades.

Días 15, 16, 17 y 18: Tomé estos días de descanso del RH. Descansar es bueno.


Día 19: Este día, además de realizar una revisión byte a byte de los textos anteriores para realizar las correcciones correspondientes, avancé en la traducción de 112 textos de scripts. Textos traducidos (Interior):
  • Seven Island
  • One Island
  • Two Island
Día 20: Este día continué con la traducción de textos de scripts, avanzando 593 puestos en la sección de scripts. Textos traducidos (interior):
  • Three Island
  • Four Island
  • Five Island
  • Six Island
  • Seven Island
  • Two Island

Además de continuar con los textos en el archivo data\event_scripts.s, también avancé traduciendo algunos archivos de data\text\:
  • aide.inc
  • ingame_trade.inc
  • itemfinder.inc
  • obtain_item.inc
  • pc.inc
  • pc_tranfer.inc
  • poke_mart.inc
  • pokedex_rating.inc
  • route23.inc
  • seagallop.inc
  • surf.inc
  • white_out.inc
También se añadió líneas de scripts para el idioma español en el archivo data\scripts\trainer_battle.inc

Día 21: Tal vez me haya pasado hoy avanzando 1487 símbolos en la sección de scripts, y es que luego de poder avanzar con los textos en braile empecé a traducir como si no hubiera un mañana. Para poder traducir data\text\braile.inc fue necesario realizar una modificación en tools\preproc\asm_file.cpp. Luego de eso, se tradujo los siguientes archivos en data\text\ (algunos contienen una cantidad enorme de textos):
  • fame_checker.inc
  • sign_lady.inc
  • trainer_card.inc
  • help_system.inc
Bitácora del capitán: Hoy hemos logrado avanzar hasta el 75.63% de la sección de scripts, mucho más de lo que tenía previsto para este reto, pero a qué costo. Faltan un poco más de 2800 scripts, de los cuales cerca de la mitad son textos; siento que el final está muy cerca . Esta mañana cuando abrí el proyecto para avanzar en la traducción, me encuentro que lo siguiente son textos que serán puestos en braile, y puesto que la herramienta que extrae los textos de la rom en binario no me arroja nada coherente para este caso, no tuve más opción que programar algo rápido y chapucero en C++ que traduzca esos bytes a las patadas y me arroje un texto que pueda usar, por lo que guiándome del archivo en tools\preproc\asm_file.cpp le copié la tabla de mapa de caracteres para el braile, y usando google imágenes no tuve más remedio que aprender un poco de este lenguaje para poder completar la parte que hacía falta, y así terminé programando algo en algún compilador online gratis porque era más rápido que ponerme a instalar cosas que no voy a volver a tocar en mucho tiempo. Les dejo el código y la página del compilador online que usé si quieren echarle un ojo. Los bytes que necesitaba traducir a texto estaban en el offset 0x1A8D51 y eran los siguientes, por si quieren realizar una prueba: 01 1D 1D 06 05 01 FF 01 05 01 0E 19 FF 0B 09 1D 09 03 0D 01 FF 06 39 1F 31 06 09 1D 0B 01 FF 03 19 1D 1E 09 FF 01 05 03 FF 0F 0D 06 FF 13 1B 19 FF 1E 31 35 FF 0B 09 07 FF 0E 11 15 FF 17 1F 1D 16 FF 2E 33 3B 39 FF 3F 10 FF 3F 04 FF 1E 19 0B 19 FF 06 13 17 19 1D 1E 01 FF 09 33 06 16 1E 09 1B 03 06 01 FF 06 13 17 19 1D 1E 01 FF 09 16 1E 01 1D 00 35 06 35 19 FF 06 13 17 19 1D 1E 01 FF 0B 09 16 09 01 1D FF 31 16 01 00 07 31 09 1D 39 01 FF 0B 09 0E 01 00 01 00 0B 19 16 FF 05 1D 06 15 15 01 1B 1E 09 16 FF 17 06 09 0B 1D 01 16 FF 31 1B 01 00 1D 19 0E 01 FF 31 1B 01 00 01 39 31 15 FF 03 19 1B 09 03 1E 01 1D FF 03 19 1B 00 17 01 16 01 0B 19 FF 01 13 06 0F 19 16 FF 03 19 13 17 01 1D 1E 06 1D FF 07 31 09 1D 39 01 FF 01 05 1D 09 00 17 31 09 1D 1E 01 FF 01 00 13 31 1B 0B 19 FF 17 19 1D 00 09 33 17 15 19 1D 01 1D FF 1B 31 09 35 19 00 13 31 1B 0B 19 FF 19 16 FF 09 16 17 09 1D 01 FF

C++:
// Online C++ compiler to run C++ program online
#include <iostream>
#include <cstdio>
#include <string>

static int hex_a_int(char c);
static char convertir_a_string(int a);

using namespace std;

struct mapchar {
    char c;
    int h;
};

static mapchar mapa [] =
{
    { 'A', 0x01 },
    { 'B', 0x05 },
    { 'C', 0x03 },
    { 'D', 0x0B },
    { 'E', 0x09 },
    { 'F', 0x07 },
    { 'G', 0x0F },
    { 'H', 0x0D },
    { 'I', 0x06 },
    { 'J', 0x0E },
    { 'K', 0x11 },
    { 'L', 0x15 },
    { 'M', 0x13 },
    { 'N', 0x1B },
    { 'O', 0x19 },
    { 'P', 0x17 },
    { 'Q', 0x1F },
    { 'R', 0x1D },
    { 'S', 0x16 },
    { 'T', 0x1E },
    { 'U', 0x31 },
    { 'V', 0x35 },
    { 'W', 0x2E },
    { 'X', 0x33 },
    { 'Y', 0x3B },
    { 'Z', 0x39 },
    { ' ', 0x00 },
    { ',', 0x04 },
    { '.', 0x2C },
    { '=', 0x3F },
    { '\'', 0x10 },
    { '$', 0xFF },
};

static char convertir_a_string(int a)
{
    int i = 0;
    while (i < 32)
    {
        if(mapa[i].h == a)
            return mapa[i].c;
        i++;
    }
    return '?';
}

static int hex_a_int(char c)
{
    switch(c)
    {
        case '0': return 0x0; break;
        case '1': return 0x1; break;
        case '2': return 0x2; break;
        case '3': return 0x3; break;
        case '4': return 0x4; break;
        case '5': return 0x5; break;
        case '6': return 0x6; break;
        case '7': return 0x7; break;
        case '8': return 0x8; break;
        case '9': return 0x9; break;
        case 'A': return 0xA; break;
        case 'B': return 0xB; break;
        case 'C': return 0xC; break;
        case 'D': return 0xD; break;
        case 'E': return 0xE; break;
        case 'F': return 0xF; break;
        default: return -1; break;
    }
}

enum{
    BYTE_1,
    BYTE_2,
    SPACE,
};

int main() {
    string binarios;
    char caracter;
    string salida;
    int i, step = 0, temp = 0, hexa = 0, largo;

    cout << "Ingrese los bytes a convertir:";
    getline(cin, binarios);
    largo = binarios.length();
    cout << "largo es: " << largo << endl;
    
    for(i = 0; i < largo; i++)
    {
        temp = hex_a_int(binarios[i]);
        if (temp == -1)
        {
            step = SPACE;
        }
        
        switch (step)
        {
            case BYTE_1:
                hexa = temp << 4;
                step = BYTE_2;
            break;
            case BYTE_2:
                hexa = hexa + temp;
                step = SPACE;
                caracter = convertir_a_string(hexa);
                salida = salida + caracter;
            break;
            default:
                step = BYTE_1;
            break;
        }
    }
    
    cout << endl << salida << endl;

    return 0;
}
No se imaginan el tiempo que se ahorra al programar algo que te haga el trabajo, así sea programado a las patadas, en lugar de ir a comparar byte por byte para ver qué wea cuántica corresponde a qué texto. A quien lea esto, le invito a que aprenda a programar, y si ya sabes, felicitaciones.

Avance actual:

pd: ¿por qué los recursos de discord se caen o dejan de ser públicos tan rápido? ya no se pueden ver los vídeos que puse el otro día.
 

Acimut

Profesional de WaH
¡Que tal!
Hoy traigo novedades del día de ayer, porque hoy apenas subí los commits a github.

Día 22: Luego de tanto trabajar en traducir scripts el día anterior, amanecí enfermo, así que valió queso este día.

Día 23: Este día no me sentía mejor, pero no habiendo nada mejor que hacer, pensé que sería buena idea intentar terminar la sección de scripts. De alguna manera me las arreglé para terminar de traducir los textos de scripts, ajustar algunos scripts y otro script de batalla, para luego realizar una revisión byte a byte, llegando al 100% en la sección de scripts, una locura. Luego de esto, automáticamente se completó la siguiente sección, sumando 679 símbolos con el 100% en la sección de librerías. Con estas secciones completadas, lo siguiente es la sección .rodata, sección en la que ya he avanzado anteriormente, pero por coincidencia de offset no está al 100% (algo similar a la sección de sonidos, debería estar al 100% porque no hay cambios, pero está en 0 porque los offset no coinciden, no todavía), así que empezamos a traducir en esta sección lo que hace falta además de corregir las cosas en las que nos habíamos adelantado antes. Archivos traducidos:
  • data\scripts\cable_club.inc
  • data\scripts\field_moves.inc
  • data\scripts\mystery_event.inc
  • data\text\day_care.inc
  • data\scripts\repel.inc
  • data\text\safari_zone.inc
  • data\text\flavor_text.inc
  • data\text\trainers.inc
  • data\text\save.inc
  • data\text\new_game_intro.inc
  • data\text\pokedude.inc
  • data\battle_scripts_1.s
  • src\data\trainers.h
  • src\data\text\species_name.h
  • src\data\text\move_names.h
  • src\data\text\abilities.h
  • src\data\ingame_trades.h
  • src\scrcmd.c


Bitácora del capitán: El día de ayer, día 23 del reto, logramos llegar al 100% en la sección de scripts, llegando más allá de la meta de este reto que inicialmente era un 55% y luego un 70%, logrado mucho antes del término de este, y no contento con ello continuamos más allá de lo planeado y por mucho (gracias por tus palabras @Kammm ) , y para colmo lo hice con un malestar del demonio nmms eso es del dyavlo necesito un exorcista xd.
Estuve todo el día en la traducción, más de 12 horas de trabajo, así que no alcancé a realizar los commits y menos subirlos a github por eso los subo hoy, entonces ahora me pregunto ¿Quién había dicho que la traducción en decomp se hacía en un par de horas? bueno, tal vez si quieres traducir a las patadas y obtener algo mediocre tal ves sí, pero si quieres un resultado profesional, o más difícil, decompilar una rom para que coincida en compilación es todo un reto que toma tiempo.
Dejando mis divagaciones a un lado y volviendo al asunto, luego de completar la sección de scripts al 100%, pasamos a la sección de librerías, que se completó automáticamente al 100%, y luego pasamos a la sección .rodata, donde se almacena datos constantes de las funciones y gráficos que se declararon static, y luego de traducir un par de archivos y corregir otros cuatro, llegamos a la maravillosa cifra de 7750 símbolos en la sección .rodata y un avance del 44.42%, para un total de 33288 símbolos que coinciden en offset con rojo fuego, y un increíble 65.63% de coincidencia total en la primera sección de la rom. Justo ahora, falta acomodar algunos gráficos que están en la sección .rodata y que deben pasarse a la sección de gráficos, porque en este idioma está así y hay que hacer coincidir los offset, pero al menos la mayoría de los gráficos ya los tengo decompilados e insertados.

En conclusión, además de lograr el objetivo del reto, fui más allá y ahora estoy mucho más cerca de compilar una rom rojo fuego bprs que coincida con la original, empecé este reto con un 34.27% de coincidencias y ahora está en un 65.63%, un avance en 31.36% del total de la rom, que de ahora en adelante pequeños avances significan avances gigantes. Mientras no suceda algo extraño, espero terminar pronto con este proyecto y actualizarlo con los últimos cambios de la rama principal de pokefirered para hacerlo oficial. Por ahora se puede disfrutar de una experiencia muy cercana al original, ya que los scripts están traducidos al 100%.

Muchas gracias por acompañarme y apoyar este proyecto ♥
 

Acimut

Profesional de WaH
¡Que tal!
Hace rato quería pasarme de nuevo por aquí y aprovechar para mostrar algún avance, porque siento que este proyecto está cerca de finalizar.

Día 25: Luego del gran avance del día 23, retomé la descompilación este día, sólo para encontrarme con un gran número de textos por traducir del "easy chat groups", y para rematar varias tablas con bytes que no son fáciles de interpretar y son distintos entre idiomas. Así que empecé con lo fácil, y traduje el texto. Avance: 1735 símbolos. Antes de llegar a la parte de Easy Chat, se tradujeron y corrigieron los siguientes archivos:
  • Battle_message.c (corrección)
  • items.json (corrección)
  • intro.c (actualización)
  • trainer_card.c (actualización)
  • graphics.c (actualización)
  • berry.c (traducción)
  • data/easy_chat/easy_chat_groups.h (traducción de texto de varios archivos)

Los siguientes días estuve muy ocupado con otras cosas, así que no fue posible avanzar aquí. Prioridades.

Día 30: Este día me propuse con terminar de traducir easy chat y continuar con el resto, pero fue desalentador ver la cantidad de bytes de varias tablas que tenía que pasar a un formato en C en específico que usa macros, así que me tomé el día programando algo en C++ que tomara los bytes en texto, y los convirtiera en el formato deseado, esperando ahorrarme algo de trabajo. Fue tan la mejor decisión hasta ahora, hice el trabajo de varios días en tan solo horas, y no solo eso, sino que la coincidencia byte a byte fue del 100%. Avance: 1002 símbolos. Easy chat groups: 100% completado.

Día 32: Subí un commit con los avances del día 30, me ocupé con otros asuntos y no publiqué los avances antes. Pero este día estuve decidido a avanzar aún más, así que con una cantidad aún mayor de tablas de bytes por pasarle formato, me propuse este día a avanzar tanto como fuera posible. Luego de reprogramar mi código en C++ para que se ajustara a otro formato (terminé programando 3 programas diferentes) se me fue la tarde y la noche descompilando unas tablas de easy_chat_words_by_letter.h, cerca de 2000 líneas de código que difieren tanto en contenido como tamaño debido al idioma, pero que logré terminar pasada la media noche gracias al programa en C++ que compilé en una página online. Así que sin perder el ritmo, y antes que saliera el sol del día 33, terminé con la traducción de easy_chat.c, easy_chat_2.c, la corrección de una entrada en la pokédex, y la actualización de la ubicación de algunos gráficos de credits.c y pokedex_screen.c. Luego de esto, me encuentro que lo siguiente serían algunos textos, pero eso será para otro día. El avance del día fue 4215 símbolos.

Con todo esto, en dos días de trabajo pasamos de del 65.63% al 79.33% en coincidencia total de los símbolos entre el proyecto y la rom bprs, un avance del 13.7% del total igual a 6952 símbolos.

En este punto, el proyecto está cada vez más cerca de completarse y creo que podría terminarlo antes de finalizar este año 2024.

También grabé un poco el trabajo que realicé durante la última hora del día 32 resumido en 3 minutos de vídeo (por alguna razón estaba convencido que era el día 31), además de agregar un gameplay donde puede parecer que la rom está casi al 100% en español, si no fuera por ese gráfico HP que no he traducido a PS. PD: me gusta la música de RSE, por eso la pongo en el vídeo.


No siendo más ¡hasta la próxima!.
 
Arriba