Caja Glitch: Comportamiento de valores FF

Aquí se tratan todos los temas relacionados con la generación metálica.
Critical Hit
Huevo
Huevo
Mensajes: 5
Registrado: Mar Jul 17, 2012 2:49 pm

Caja Glitch: Comportamiento de valores FF

Mensajepor Critical Hit »

Hace no mucho logré encontrar y ejecutar exitosamente el famoso truco de la Caja Glitch en Pokemon Crystal, truco al cual Paco81 le ha puesto tanto esfuerzo y dedicación. Me parece no obstante que ha habido poco movimiento en torno al tema últimamente, asi que en un intento de reavivarlo, quisiera discutir un pequeño aspecto que he observado respecto a este truco y que (yo al menos) no he visto mencionado en ninguna parte. Este aspecto permite (quizás entre otras cosas...) obtener un pokemon con genes perfectos directamente a partir de la Caja Glitch y de una manera relativamente fácil.

Repasemos lo básico: cuando tenemos un pokemon dentro de la Caja Glitch (en adelante "CG"), su información esencial (especie, ataques, DV's, ID, OT, etc.) se ve modificada de una forma linda y predecible cada vez que ingresamos o retiramos otros pokemon de la caja. El funcionamiento de esta modificación se vislumbra de mejor manera observando el orden de su estructura Hex, por ejemplo, a través de código Gameshark:

Código: Seleccionar todo

Pokemon Modifier    
01??D8DC (Sprite)
01??DFDC (Especie)

Item Held Modifier
01??E0DC

Skill 1 Modifier 01??E1DC
Skill 2 Modifier 01??E2DC
Skill 3 Modifier 01??E3DC
Skill 4 Modifier 01??E4DC

ID # Modifier
01??E5DC
01??E6DC

Experience Modifier   
01??E7DC   
01??E8DC   
01??E9DC   
   
HP Experience Modifier   
01??EADC   
01??EBDC   
   
Attack Experience Modifier   
01??ECDC   
01??EDDC   
   
Defense Experience Modifier   
01??EEDC   
01??EFDC   
   
Speed Experience Modifier   
01??F0DC   
01??F1DC   
   
Special Experience Modifier   
01??F2DC   
01??F3DC   
   
Att & Def DV Mod 01??F4DC   
Spd & Spc DV Mod 01??F5DC   
   
PP Skill 1 Modifier 01??F6DC   
PP Skill 2 Modifier 01??F7DC   
PP Skill 3 Modifier 01??F8DC   
PP Skill 4 Modifier 01??F9DC   
   
Happiness Modifier   
01??FADC   
   
PokeRUS Virus   
01??FBDC   

Hour Caught Modifier
01??FDDC
 
Location Caught Modifier
01??FCDC

Level Modifier   
01??FEDC   
   
Status Modifier   
01??FFDC   
   
Current HP Modifier   
01??01DD   
01??02DD   
   
Max HP Modifier   
01??03DD   
01??04DD   
   
Attack Modifier   
01??05DD   
01??06DD   
   
Defense Modifier   
01??07DD   
01??08DD   
   
Speed Modifier   
01??09DD   
01??0ADD   
   
Special Attack Modifier   
01??0BDD   
01??0CDD   
   
Special Defense Modifier   
01??0DDD   
01??0EDD   

Original Trainer Name Mod
-------------------------
End Code (MUST BE ON) 015006DE

Slot 1 01??FFDD
Slot 2 01??00DE
Slot 3 01??01DE
Slot 4 01??02DE
Slot 5 01??03DE
Slot 6 01??04DE
Slot 7 01??05DE

Nickname Modifier
-----------------
Slot 01 01??41DE
Slot 02 01??42DE
Slot 03 01??43DE
Slot 04 01??44DE
Slot 05 01??45DE
Slot 06 01??46DE
Slot 07 01??47DE
Slot 08 01??48DE
Slot 09 01??49DE
Slot 10 01??4ADE

End Code 01??4BDE

(Fuente: http://www.ocf.berkeley.edu/~jdonald/pokemon/)

Los ?? es donde va la información individual de cada pokemón. Así, un pokemon con el código

Att & Def DV Mod 010FF4DC
Spd & Spc DV Mod 01A8F5DC

tendrá ciertos DV's específicos, que serán distintos por ejemplo de los de un pokemón con

Att & Def DV Mod 01FCF4DC
Spd & Spc DV Mod 0113F5DC.

Cuando un pokemon está en la CG, sus valores ?? sufrirán todos un corrimiento simultáneo permanente cada vez que se ingresa otro pokemon a la caja. Especificamente, se recorrerán todos un espacio "hacia abajo". Así, si teníamos a un pokemon con los datos

Item Held Modifier
0101E0DC

Skill 1 Modifier 0159E1DC
Skill 2 Modifier 01DDE2DC
Skill 3 Modifier 0169E3DC
Skill 4 Modifier 0155E4DC,

al ingresar otro pokemon a la caja quedarán como

Item Held Modifier
01FAE0DC

Skill 1 Modifier 0101E1DC
Skill 2 Modifier 0159E2DC
Skill 3 Modifier 01DDE3DC
Skill 4 Modifier 0169E4DC.

El nuevo valor para "Item Held Modifier" provino del valor para la especie, mientras que el valor de "Skill 4 Modifier" bajó a la información del ID, y así sucesivamente. ¿Cómo se refleja esta modificación de datos dentro del juego? Eso depende de la codificación que el juego tenga para cada tipo de dato (sea de especie, de ataques, o que sea un dato numérico como Stat Experience o Dv's); en nuestro ejemplo, un efecto será que sus ataques se correrán abajo un espacio, su 4° ataque desaparecerá, y ganará un nuevo ataque correspondiente al valor Hex 01.

Cuando en cambio se retira un pokemon de la CG, el efecto es inverso: los datos ?? se correrán todos simultáneamente un espacio "hacia arriba". Este comportamiento de datos dentro de la CG se presta para varios métodos sencillos de modificación de nuestros pokemon, discutidos extensamente en el post del Truco de Celebi. Sin embargo, hay datos ?? que aparentemente tienen un comportamiento un poco distinto a lo descrito: los datos FF.
--------------------

El dato FF es el último dato posible de los 256 disponibles para cada valor ??. Para características numéricas del pokemon como Stat Experience, DV's, Experiencia y Felicidad, un valor FF indica que el pokemon posee un máximo valor de la característica respectiva dentro del juego; así, un pokemon con el código

Att & Def DV Mod 01FFF4DC
Spd & Spc DV Mod 01FFF5DC.

corresponde a un pokemon con los máximos DV's posibles (i.e. genes perfectos). Para características "cualitativas" como especie, ataques, objeto equipado, etc. el dato FF suele corresponder a un remanente de programación. Ahora bien, al menos según mis pruebas estos datos FF tienen un comportamiento único dentro dentro la CG y creo haber encontrado el patrón general de este comportamiento, que intentaré explicar lo mejor posible a continuación. Quiero recalcar antes que nada que estos son resultados absolutamente preliminares y que en parte los posteo aquí para someterlo a la verificación de ustedes mismos los lectores del foro. Aunque me preocupé que mis pruebas no fueran casuales y fueran medianamente serias, reconozco que quizás tampoco son de las más exhaustivas, asi que no puedo exagerar lo valioso que sería que condujeran sus propias pruebas para verificar, desmentir o corregir lo que explicaré a continuación.

Caso 1: (ingresar pkmn en CG) Cuando un pokemon dentro de la CG posee un valor FF en alguna parte de su estructura, al depositar otro pokemon sus datos no se moverán todos simltáneamente un espacio hacia abajo. En su lugar, lo que ocurre es lo siguiente: el juego va verificando, de arriba hacia abajo, cada uno de los valores ?? siguiendo la lista de código Gameshark, y sin alterar ninguno de los datos. Al encontrarse con un valor FF, el juego dejará de verificar y moverá un espacio hacia abajo todos los datos verificados hasta antes de enontrar el valor FF (e incluyendo el mismo valor FF). Los datos que vienen después del valor FF permanecerán completamente inalterados, mientras que el dato inmediatamente posterior al dato FF será "engullido" por este mismo.

Ejemplo: Consideremos un pokemon en la CG con datos

01FAF4DC (Att & Def DV Mod)
01AAF5DC (Spd & Spc DV Mod)
0105F6DC (PP Skill 1 Modifier)
010AF7DC (PP Skill 2 Modifier)
010AF8DC (PP Skill 3 Modifier)
0113F9DC (PP Skill 4 Modifier)
01FFFADC (Happiness Modifier)
0100FBDC (PokeRUS Virus)
01BCFDDC (Hour Caught Modifier)
0117FEDC (Location Caught Modifier)

El pokemon posee un valor FF en felicidad; posee felicidad máxima :D:. Si depositamos otro pokemon, sus datos quedarán

011BF4DC (Att & Def DV Mod)
01FAF5DC (Spd & Spc DV Mod)
01AAF6DC (PP Skill 1 Modifier)
0105F7DC (PP Skill 2 Modifier)
010AF8DC (PP Skill 3 Modifier)
010AF9DC (PP Skill 4 Modifier)
0113FADC (Happiness Modifier)
01FFFBDC (PokeRUS Virus)
01BCFDDC (Hour Caught Modifier)
0117FEDC (Location Caught Modifier)

Todos los datos hasta felicidad se corrieron un espacio abajo, mientras que los de Hora y Lugar de Captura permanecen iguales; la señora de Cianwood no nos dirá nada distinto al ver a este pokemon. El dato 00 que tenía el verificador de PokeRUS desapareció completamente (fue "tragado" por el valor FF).

Caso 2: (retirar pkmn de CG) Algo aún más entretenido ocurre cuando tenemos un pokemon en la CG con un dato FF, y retiramos a otro pokemon de la caja. Nuevamente el juego va verificando de arriba hacia abajo los datos del pokemon hasta encontrarse con un valor FF. En ese momento se detiene la verificación y el juego mueve un espacio hacia arriba todos los datos verificados hasta antes de encontrar el valor FF (nuevamente, incluyendo el mismo valor FF). Tiene sentido, ocurre exactamente lo opuesto al Caso 1... con una diferencia: como el dato FF se moverá hacia arriba y el de abajo no se moverá, quedará un espacio "vacío" que el juego rellenará con otro dato FF. Aparecerán dos datos FF consecutivos.

Ejemplo: Consideremos el caso del mismo pokemon anterior

01FAF4DC (Att & Def DV Mod)
01AAF5DC (Spd & Spc DV Mod)
0105F6DC (PP Skill 1 Modifier)
010AF7DC (PP Skill 2 Modifier)
010AF8DC (PP Skill 3 Modifier)
0113F9DC (PP Skill 4 Modifier)
01FFFADC (Happiness Modifier)
0100FBDC (PokeRUS Virus)
01BCFDDC (Hour Caught Modifier)
0117FEDC (Location Caught Modifier)

Al retirar un pokemon de la CG, sus datos quedarán

01AAF4DC (Att & Def DV Mod)
0105F5DC (Spd & Spc DV Mod)
010AF6DC (PP Skill 1 Modifier)
010AF7DC (PP Skill 2 Modifier)
0113F8DC (PP Skill 3 Modifier)
01FFF9DC (PP Skill 4 Modifier)
01FFFADC (Happiness Modifier)
0100FBDC (PokeRUS Virus)
01BCFDDC (Hour Caught Modifier)
0117FEDC (Location Caught Modifier)

Los datos hasta felicidad se moverán un espacio arriba, mientras que los de PokeRUS, Hora, y Lugar de Captura quedarán inalterados; el dato de felicidad se rellena con un dato FF. Si retiramos aún a otro pokemon, el efecto será el siguiente:

0105F4DC (Att & Def DV Mod)
010AF5DC (Spd & Spc DV Mod)
010AF6DC (PP Skill 1 Modifier)
0113F7DC (PP Skill 2 Modifier)
01FFF8DC (PP Skill 3 Modifier)
01FFF9DC (PP Skill 4 Modifier)
01FFFADC (Happiness Modifier)
0100FBDC (PokeRUS Virus)
01BCFDDC (Hour Caught Modifier)
0117FEDC (Location Caught Modifier)

Aparecerá 3 datos FF consecutivos.

En este punto podemos hacer lo que todos estamos pensando... ¡Seguir retirando pokemon hasta tener doble FF en los DV's! Y así obtenemos un método (muy sencillo en mi opinión) para obtener un pokemon con genes perfectos; sólo tenemos que llevar un pokemon a felicidad máxima, lo que no toma más que 10 HP UP's, Proteins, Irons, Carbos y Calcium, más algunos cuantos Rare Candy's. Luego podemos obtener Max Genes de cualquier especie mediante el truco de la fusión permanente. Si queremos podemos ir más lejos, y seguir retirando pokemon para propagar los datos FF más arriba y obtener en pocos segundos un pokemon Max Genes, Max Stat Exp y Max Experience.

Todavía no se me ocurren muchas otras formas en que se puede explotar este bug, y además desconozco si el dato FF es el único con un comportamiento pecualiar dentro de la Caja Glitch; puede que hayan otros, pero no veo ningún indicio de que existan. La única otra aplicación que se me ocurre para éste bug es en el truco para obtener cualquier pokemon: llevando el pokemon a felicidad máxima antes de transformarlo permite "proteger" los datos que están al final de la estructura Hexadecimal del pokemon (incluyendo Sobrenombre y OT), de modo que no ocurra ese "desagradable" efecto de que no podemos cambiarle el nombre después.

¡No me pregunten tampoco el por qué de este comportamiento! Esto de que los datos FF se puedan propagar infinitamente me parece rarísimo, solamente observé el patrón pero no entiendo de dónde viene.

¿Comentarios? ¿Correcciones? Todas bienvenidas...

Salu2

Avatar de Usuario
Paco81
Bailando a (y con) Fátima
Bailando a (y con) Fátima
Mensajes: 1171
Registrado: Jue Ago 03, 2006 2:19 am

Re: Caja Glitch: Comportamiento de valores FF

Mensajepor Paco81 »

¡Impresionante Post Critical Hit!

Al ver la estructura de tu post, a simple vista se nota que te tomó bastantes horas en desarrollarlo. Un simple gracias no es suficiente para mostrarle gratitud a alguien quien ocupa su valioso tiempo en desarrollar un post como el tuyo, y en lo personal, de momento no tengo palabras ni idea de como retribuirte por la valiosa información que diste.

Aunque anteriormente ya habíamos notado irregularidades con los valores FF en la Caja Glitch, aquí en el foro eres el primero que proporciona información exacta sobre el comportamiento de los valores FF al mover y retirar Pokémon de una Caja Glitch.

Al ir leyendo tu post, a primera vista se me vino a la mente la misma idea de maximizar la felicidad para recorrer los FF 6 lugares hasta los DVs (genes) y maximizarlos, para después regresar al Pokémon a la normalidad (ya con los DVs al máximo) moviendo 6 Pokémon a la CG, pero esto no es posible. Yo pensaba que los valores FF no se recorrían hacia abajo pero al comprobar tu info resultó que sí se recorren y al regresar el Pokémon a la normalidad, entonces recupera sus antiguos DVs. Gracias por el dato.

Critical Hit escribió:Todavía no se me ocurren muchas otras formas en que se puede explotar este bug, y además desconozco si el dato FF es el único con un comportamiento pecualiar dentro de la Caja Glitch; puede que hayan otros, pero no veo ningún indicio de que existan. La única otra aplicación que se me ocurre para éste bug es en el truco para obtener cualquier pokemon: llevando el pokemon a felicidad máxima antes de transformarlo permite "proteger" los datos que están al final de la estructura Hexadecimal del pokemon (incluyendo Sobrenombre y OT), de modo que no ocurra ese "desagradable" efecto de que no podemos cambiarle el nombre después.


El valor FF es el único que tiene un comportamiento diferente en una Caja Glitch y la principal utilidad que podemos obtener de esto, es lo que mencionaste de maximizar los genes junto con la Stat Experiencia y después de obtener un Pokémon "Full Trained" con DVs perfectos, podríamos recuperar el No. ID de nuestro Pokémon (que se perdió en el proceso) con el truco de cambiarle el No. Id a un Pokémon. Después de eso, clonando múltiples veces este Pokémon los podemos utilizar para aplicarles el Truco de Celebi y transformarlos en cualquier Pokémon.

Después pensaré en más posibilidades para sacarle provecho a esto, mientras tanto, en caso que te interese te dejo unos enlaces donde hablamos sobre nuestras experiencias con la Caja Glitch hasta encontrar una forma de conseguir un Pokémon shiny con genética máxima (FAAA).

viewtopic.php?p=492394#p492394

En el siguiente link, Elgabo encontró un método para obtener Pokémon arriba de nivel 100 por medio de la Caja Glitch.

viewtopic.php?f=4&t=26224


Saludos.

Critical Hit
Huevo
Huevo
Mensajes: 5
Registrado: Mar Jul 17, 2012 2:49 pm

Re: Caja Glitch: Comportamiento de valores FF

Mensajepor Critical Hit »

Paco81 escribió:Después pensaré en más posibilidades para sacarle provecho a esto, mientras tanto, en caso que te interese te dejo unos enlaces donde hablamos sobre nuestras experiencias con la Caja Glitch hasta encontrar una forma de conseguir un Pokémon shiny con genética máxima (FAAA).

viewtopic.php?p=492394#p492394

Ese link fue justamente en el que me basé para empezar a averiguar sobre este asunto. Quería buscar una forma de obtener pkmn legendarios con genes máximos, pero que al mismo tiempo tuvieran la información "legal" correspondiente a un legendario salvaje (nivel correcto, lugar y nivel de captura correctos, stat exp. igual a cero, etc.). Probé miles de cosas, incluyendo trucos de fusión, y un montón de variantes de la caja glitch, pero con resultados poco impresionantes. Luego, recordé un comentario que tú mismo habías hecho en ese tema y en el que das una pista de la peculiaridad de los FF. Eso me hizo estar atento en mis próximas pruebas: rápidamente un patrón empezó a hacerse notar, y dí con la información posteada arriba.

Paco81 escribió:El valor FF es el único que tiene un comportamiento diferente en una Caja Glitch y la principal utilidad que podemos obtener de esto, es lo que mencionaste de maximizar los genes junto con la Stat Experiencia y después de obtener un Pokémon "Full Trained" con DVs perfectos, podríamos recuperar el No. ID de nuestro Pokémon (que se perdió en el proceso) con el truco de cambiarle el No. Id a un Pokémon. Después de eso, clonando múltiples veces este Pokémon los podemos utilizar para aplicarles el Truco de Celebi y transformarlos en cualquier Pokémon.

Tienes razón, esta sugerencia es mucho más elegante que la mía. Supongo que tanta experimentación con el truco de fusión me dejó "corto de vista" respecto a otras posibilidades. cara_bizco

En realidad creo que no es mucha la "utilidad" que puede extraerse de este bug, más allá de la propiedad multiplicativa de los FF, y su habilidad para evitar que los datos en la parte baja de la estructra hex se vean modificados. Más bien, creo que servirá como información precautoria: cada vez que realicemos trucos basados en CG, debemos estar alertas ante la presencia de datos FF en la estructura, que puedan estar causando efectos que no teníamos previstos.

Paco81 escribió:Al ver la estructura de tu post, a simple vista se nota que te tomó bastantes horas en desarrollarlo. Un simple gracias no es suficiente para mostrarle gratitud a alguien quien ocupa su valioso tiempo en desarrollar un post como el tuyo, y en lo personal, de momento no tengo palabras ni idea de como retribuirte por la valiosa información que diste.

¡No tienes por qué agradecerme nada! (Tú menos que nadie) Tal vez estés de acuerdo conmigo en que la mejor manera de retribuir un trabajo o una investigación es con reciprocidad: poner a prueba la información y contar de vuelta la experiencia, o mejorar el esfuerzo entregando información adicional (como lo has hecho).

Salu2

Avatar de Usuario
Paco81
Bailando a (y con) Fátima
Bailando a (y con) Fátima
Mensajes: 1171
Registrado: Jue Ago 03, 2006 2:19 am

Re: Caja Glitch: Comportamiento de valores FF

Mensajepor Paco81 »

Critical Hit escribió:En realidad creo que no es mucha la "utilidad" que puede extraerse de este bug, más allá de la propiedad multiplicativa de los FF, y su habilidad para evitar que los datos en la parte baja de la estructra hex se vean modificados. Más bien, creo que servirá como información precautoria: cada vez que realicemos trucos basados en CG, debemos estar alertas ante la presencia de datos FF en la estructura, que puedan estar causando efectos que no teníamos previstos.


Al no tener en cuenta esto de los valores FF cuando postié el truco en sus inicios, esto me hace cuestionarme si alguna vez a alguien le falló el truco por el simple hecho de que por casualidad sus Pokémon tenían algún FF en su estructura (en su No. ID o alguno de los bytes de Experiencia por ejemplo).

Sobre la utilidad de los FF, su propiedad multiplicativa es muy útil para un par de bugs de las versiones cromáticas. En las versiones metálicas, se me ocurre que por medio de la Party Glitch, tal vez sea posible que a partir de un Pokémon con 255 en el stat de Defensa Especial podamos conseguir un Pokémon con 999 en todos sus stats. Voy a intentarlo y después te muestro mi resultado.