inv_gba
Thread Id: 18721
Thread Name: E-Cards en Versiones Europeas!! Aporte y ayuda
#0
Morfeo 26151
Hola a todos, hace mucho que no posteo por aqui, pero siempre me mantengo informado de lo nuevo.
Publico este tema aqui por que creo que es el subforo mas adecuado (eso espero).

La razón de este tema es presentarles lo que he hallado sobre la emulacion del E-Reader y los datos que pueden llevar a poder hacer trabajar las descargas de las E-Cards en juegos Europeos.

Primero que nada he hecho mis pruebas usando el Visual Boy Advance con soporte de Cable Link. Asi que abro 2 VBA.
En el primero cargo el ROM de Pokemon Ruby y en el segundo cargo el ROM del E-Reader Americano y abriendo el Memory Viewer en este último activando la casilla de "Automatic update".

En el VBA con el E-Reader hice pruebas de busqueda de datos en la memoria con las tarjetas de Battle e-cards, Berry e-cards y el Eon Ticket. Todas estas son Saves de E-Reader que pueden descargar en: Gameboy Advance E-Reader Saves

Y entre mis pruebas viendo los datos de la memoria ya identifique los datos que "controlan" el juego al que se enviaran los datos de la E-Card, la seccion de la memoria del juego de pokemon en la que se cargaran los datos, y los datos que indican el idioma del juego al que se enviaran los datos.

En el caso de los datos que indican el juego y la seccion de memoria al que se envian los datos no tengo inconveniente de mover algo ahi, ya que no necesitaria decir que es otro juego que no sea pokemon R&S o poner datos en la memoria que no sean para los trainers en Mosdeep City, la Enigma Berry, o el Eon Ticket. Eso esta fijo por asi decirlo.

El problema que tengo es con los datos que indican el idioma del juego. Ya hice pruebas tambien con E-Cards japonesas del mismo tipo, como el "Cool Trainer Devin Americano" y el "Cool Trainer Shuusaku japonés" ó la "Pumkin Berry Americana" y la "Kacha Berry japonesa". las cuales son la misma tarjeta pero de idioma diferente. Y gracias a ello pude determinar los datos que controlan lo que ya mencioné arriba.
Explicado esto, paso a mostrar una imagen con un fragmento de la memoria del E-Reader usando el Memory Viewer y copiando los datos que aparecen desde la dirección 0x02000000 hasta 0x02000F05 usando como ejemplo la Pumkin Berry.




En esta imagen se muestra:

Verde: Los datos que determinan el juego al que se envian los datos.
Azul claro: Los datos que determinan en que parte de la memoria del juego se envian los datos.
Gris: Los datos que determinan el idioma al que se envian los datos.

En el caso del Verde, yo esperaba en un principio que fuera algo asi como el Header del juego usando en códigos de GameShark, o algo semejante, pero resulto que la palabra "GameFreak inc." esta en los ROMs de Pokemon Ruby & Sapphire de cualquier idioma.
Si en el VBA 2 con el ROM del E-Reader teniendo el Memory Viewer activado, modifico la palabra por "HameFreak inc." en el offset 0x020005A2 ó 0x020005CE ó en ambos. En el juego de pokemon Ruby ó Sapphire que tengo en el VBA 1 se marca error de conexion. Pero si yo modifico tambien la palabra por "HameFreak inc." en el ROM de Pokémon Ruby ó Sapphire y lo cargo en el VBA 1, entonces si se envia la Pumkin Berry son problemas.
Por esa razon entendi que aqui se controla el juego al que se envian los datos.

En el caso del Azul claro, hice la prueba de modificar el offset 0x020005EF y 0x020005F0 "x0718" por un numero mas o menos, algo asi: x0618, x0818 x0717, x0719.
Y los resultados fueron que en el VBA 1 con el juego de pokemon, indicaba que en vez de recibir una berry, recibia una Ribbon, o simplemente datos, o a veces se congelaba el juego.
Por lo que estos datos indican algo asi como "Flags" en el juego que determinan para que tipo de evento y en que parte de la memoria se cargaran los datos.

Y en el caso del Gris, originalmente los datos eran:
0x020005CC - x02
0x020005E3 - x02
0x020005E5 - x02
Sin embargo podran notar en la imagen que los 2 primeros los cambie por x03 por que estos haciendo pruebas primeramente con la version Francesa para intentar enviar los datos a ese juego.
La razón es esta. Comparando estos mismos offsets con la Kacha Berry japonesa, y el Cool Trainer Shuusaku japonés, identifique que los únicos valores que cambiaban entre ambas tarjetas eran estos 3 offsets. En la tarjeta japonesa, los valores eran x01, y en la version americana como pueden ver son x02.
En un principio creí que el offset 0x020005E2 y 0x020005E3 "x0202" indicaban concretamente el idioma por que en la estructura pokemon el idioma es determinado por los datos:

Japón - 0201
América - 0202
Francia - 0203
Italia - 0204
Alemania - 0205
España - 0507

Por esta razon comence haciendo las modificaciones en esos offsets, pero despues, mirando la misma tarjeta en japonés, me di cuenta que eran 3 valores los que cambiaban de x01 a x02


Esta es la prueba:
Si yo cargo en el VBA 2 que tiene el ROM del E-Reader Americano, un save de la Kacha Berry japonesa, y le cambio esos 3 offsets de x01 por x02, SI se envia la Kacha Berry al Pokemon Ruby Americano en el VBA 1.
Y si en el VBA 2 con el E-Reader, ahora le cargo la Pumkin Berry Americana y cambio los 3 offsets de x02 por x01, puedo enbiar la Pumkin Berry a Pokemon Ruby Japonés en el VBA 1.

Otra prueba que hice para confirmar que los 3 valores corresponden al idioma de destino fue:
En el VBA 2 cargué la Kacha Berry japonesa para enviarla a Ruby Americana en el VBA 1. Pero esta vez, si solo modifico la 2da y 3da dirección offset (o solo una de las dos) de x01 por x02, el juego destino marca "error de conexión". Y si solo modifico la 1er dirección de x01 por x02, el juego destino marca "Estos datos no son para esta versión".
Por esta razón identifiqué que las 3 direcciones deben estar "empatadas" para poder enviar los datos al juego del idioma que uno quiere.

Mi problema es este:
Puesto que esta es una comunidad HackROM, creo yo que si saben los valores identifican cada idioma, los cuales ya describí.
Por eso yo deduje que si queria enviar los datos a un juego de Pokemon Rubí Español, tenia que cambiar los datos de las 3 direcciones x02 por x07, y en parte resulto que si era correcto. Pero fue como si solo hubiera modificado la 1er Direccion (0x020005CC), y en el juego de Pokemon Rubí marcó "estos datos no son para esta versión".
Si yo le pongo a la 1er dirección otro dato que no sea x07 me marca "error de conexión". Al principio crei que seria bueno hacer las pruebas con la version Francesa por que es el siguiente idioma despues de las Americanas, y no habia problemas como con la Española que se saltaba un valor (ya que en teoria la española deberia ser 0206).

Por eso continue con las pruebas en Pokemon Ruby Francesa, pero los resultados fueron los mismos. Si cambio las 3 direcciones de x02 por x03, solo pone "Estos datos no son para esta version", obiamente marca error de conexion si le pongo cualquier otro valor, incluso x07.

El problema radica en las direcciones 0x020005E3 y 0x020005E5. Por lo visto deben de ponerse otro valor que no es x03 (para la version francesa), y posiblemente solo sea la dirección 0x020005E5, por eso estoy comenzando a probar todos los valores desde 00 hasta FF, pero son varias pruebas que hacer, y peor aun si resulta que con ninguno funciona significará que tambien el offset 0x020005E3 debe tener otro valor.

Por eso acudo a la comunidad para ver si alguien entre los ROM Hackers tiene una mínima idea que cual puede ser el dato correcto a ingresar para el dioma de las versiones Europeas en estos 2 Offsets.
Y esto lo pienzo por que ustedes que saben mas sobre el Hackeo de los juegos, pueden haber visto en el ROM de estos juegos algo que indique el idioma del juego, asi como en la estructura de un pokemon debe ser 0202 para versiones americanas, tal vez en el ROM hay un dato que difiera a los que aquí publiqué y que indique el idioma del ROM mismo, pero que si siga el patron de que almenos en la version japonesa y americana sea 01 y 02 respectivamente.

Espero alguien de entre la comunidad pueda entender lo que estoy publicanto, y que si quiere hacer sus propias pruebas, pues ya les dije como hacerlo con el VBA y que datos cambiar para ver los cambios.

Tambien estoy casi seguro de que SI es posible que existan los valores que busco para enviar estos datos a los juegos europeos. Por que a fin de cuentas tubieron acceso a la distribución del EON Ticket via Mystery Events. Aunque alla Nintendo usó cartuchos de distribución que se conectaban por Cable Link, a fin de cuentas esos cartuchos tenian la estructura base que usa el E-Reader para enviar los datos a los juegos japoneses y americanos. Por lo que si tubiera un ROM dumpeado de uno de esos cartuchos de Eon Ticket, seguro podria ver los datos similares pero con los valores que deben tener estos Offsets para que funcionen en juegos europeos.