MENÚ GO UNITE SLEEP ESCARLATA / PÚRPURA LEYENDAS POKÉDEX MOVEDEX
Λ H V

 

Pokéxperto
144

La Creación del PID y de los IVs

Guías Abuso RNG

Contenido

  1. Introducción
  2. Explicación de la Relación
  3. Métodos de Creación PID/IVs
    1. Pokémon Shiny de PokéRadar
  • Redacción: Julian_89_

Nota: Si desconoces o no controlas el sistema de números binario y hexadecimal, o las operaciones con bits, tal vez te interese revisar primero la guía de Sistemas y Operaciones Numéricos.

1.- Introducción.

Cuando un Pokémon es encontrado, el juego siempre genera para éste un juego de PID y de IVs por medio del RNG; son valores a tener en cuenta debido a su importancia:

  • El PID determina la Habilidad, la Naturaleza, el Género, y otras cosas.
  • Los IVs son valores que afectan directamente los Stats.
Por ser creados por el RNG al tiempo, el PID y los IVs tienen una relación, es decir que, con el valor de uno, podemos saber el valor del otro si sabemos el tipo de relación. Además, estos valores son inmodificables (por medios normales) una vez obtenidos.

Para entender esto primero debemos saber la forma en cómo es determinado el PID para un estado cualquiera del RNG. La fórmula es:

PID = (RNG[X] / 65.536) + (RNG[X+1] / 65.536) * 65.536 (decimal)

PID = (RNG[X] / 0x10000) * 0x1 + (RNG[X+1] / 0x10000) * 0x10000 (hexadecimal)

Donde X, representa el estado actual de RNG (siendo X=0 el estado inicial de éste, y RNG[0] el valor inicial: la Seed (Semilla)). X toma los valores desde 0 hasta 4.294.967.295 (0xFFFFFFFF), igual que el valor del RNG[X] y del PID, que toman los valores desde 0 hasta 4.294.967.295 (0xFFFFFFFF) también.

Otra forma de ver como el PID se calcula es hablar del número que representa la parte alta y la parte baja de otro número.

Para el caso del RNG, un número de 32 bits, si queremos saber qué representa la parte alta de éste, tendremos que coger sus 16 bits más significativos; y para la parte baja, tendríamos que coger los 16 bits menos significativos. Por ejemplo, tenemos el número 0xA3CF9675 (2.748.290.677), la parte alta y parte baja vienen siendo 0xA3CF (41.935) y 0x9675 (38.517) respectivamente.

Entonces, para definir el PID en estos términos, decimos que

  • La parte baja del PID la forma la parte alta del RNG[X].
  • La parte alta del PID la forma la parte alta del RNG[X+1].

Ahora, para ver como los IVs son obtenidos tenemos las siguientes fórmulas:

IVsFís. = RNG[X+2] / 65.536 (decimal)

IVsFís. = RNG[X+2] / 0x10000 (hexadecimal)

IVsEsp. = RNG[X+3] / 65.536 (decimal)

IVsEsp. = RNG[X+3] / 0x10000 (hexadecimal)


PS = {IVsFís. / (320)} % 32 (decimal)

PS = (IVsFís. / 0x1) % 0x20 (hexadecimal)

Vel. = {IVsEsp. / (320)} % 32 (decimal)

Vel. = (IVsEsp. / 0x1) % 0x20 (hexadecimal)

Ata. = {IVsFís. / (321)} % 32 (decimal)

Ata. = (IVsFís. / 0x20) % 0x20 (hexadecimal)

AtaEsp. = {IVsEsp. / (321)} % 32 (decimal)

AtaEsp. = (IVsEsp. / 0x20) % 0x20 (hexadecimal)

Def. = {IVsFís. / (322)} % 32 (decimal)

Def. = (IVsFís. / 0x400) % 0x20 (hexadecimal)

DefEsp. = {IVsEsp. / (322)} % 32 (decimal)

DefEsp. = (IVsEsp. / 0x400) % 0x20 (hexadecimal)

Donde IVsFís. y IVsEsp. toma los valores desde 0 hasta 65.535 (0xFFFF) y donde cada IV los valores desde 0 hasta 31 (0x1F).

Al igual que en el PID, los valores utilizados de las llamadas del RNG para formar los IVs son sus partes altas, y de hecho es utilizado así para cualquier caso que se necesite un número. Las partes bajas de los LCG (el método utilizado para generar los números pseudoaleatorios) no suelen ser lo suficientemente aleatorios, por eso se descartan.

Volver al Contenido

2.- Explicación de la Relación.

Ahora bien, como se comentó anteriormente, en el proceso de creación del PID y de los IVs del Pokémon, por ser creados a partir de una serie de llamadas del RNG, estos valores tienen una relación, pero que pude variar en su tipo (esto se explicará en la siguiente sección), y ya viendo en exactitud cómo son creados, se puede saber por qué.

Como se explica en la guía del RNG, es posible saber el valor del RNG para un estado X cualquiera si se conoce otro valor de éste para otro estado en particular, sea cual sea. Si tenemos y sabemos el valor del RNG para un estado "M", entonces podemos saber el valor del RNG para un M ± N estado, donde N puede tomar los valores desde 1 hasta 4.294.967.295 (0xFFFFFFFF).

Esta relación de uno a uno es la razón del por qué el PID y a los IVs del Pokémon tienen una relación, una relación comprobable, ya que así como del RNG se crean estos valores, de éstos se puede construir los del RNG que los creó, y en resumen:

  • Con el valor del PID, sabiendo el método de creación (ver más adelante), se pueden saber los IVs del Pokémon.
  • Con los valores de los IV, sabiendo el método de creación (ver más adelante), se pude saber el PID o los posibles PID del Pokémon (esto puede ser así, ya que al crear los IVs se pierde información, 2 bits para ser exactos: dos llamadas de la parte alta del RNG son 32 bits, los 6 IV suman un total de 5 x 6 = 30 bits).
  • Con el valor del PID y de los IVs del Pokémon es posible saber con qué método fueron creados, sin excepción.

Y aquí la conclusión más importante: Si no es posible determinar el método con que fueron creados el PID y los IVs, es decir que si no hay una relación entre ellos, el Pokémon no es legal e indica que de alguna manera ha sido modificado.

Da igual que la modificación haya sido para mejorar o para empeorar una característica por el medio que haya sido, o que sea un cambio minúsculo para cualquier valor, esa relación se rompe, y el Pokémon es considerado ilegal. Juegos como Pokémon Box o Pokémon Battle Revolution hacen una revisión de la relación para determinar su legalidad, y de no verificarse podrían impedir su acceso al juego o interpretarlo como Huevo malo.

Para ver cómo se puede hacer esta comprobación, tenemos que tener el valor de cualquier RNG para alguna de las cuatro llamadas en particular que se hacen. Sabemos que el PID y los IVs son valores o partes de valores del RNG, pero al ser números sacados solamente de las partes altas, no hay una forma directa de averiguarlo, sin embargo sabemos que esas partes altas son de llamadas seguidas del RNG, así que se puede hacer lo siguiente:

  1. Identificar correctamente esas partes altas de los valores del PID y de los IVs. Para la forma descrita anteriormente, esas partes se toma de acuerdo a las siguientes fórmulas (para comodidad, vamos a señalar con una letra que proceda a la variable que es la parte alta con una 'h' (high) y que es la parte baja con una 'l' (low)):

    hRNG[X] = lPID

    hRNG[X+1] = hPID

    IVsFís. = (PS * 320) + (Ata. * 321) + (Def. * 322) (decimal)

    IVsFís. = (PS * 0x1) + (Ata. * 0x20) + (Def. * 0x400) (hexadecimal)

    IVsEsp. = (Vel. * 320) + (AtaEsp. * 321) + (DefEsp. * 322) (decimal)

    IVsEsp. = (Vel. * 0x1) + (AtaEsp. * 0x20) + (DefEsp. * 0x400) (hexadecimal)

    hRNG[X+2] = IVsFís.

    ó

    hRNG[X+2] = IVsFís. + 0x8000

    hRNG[X+3] = IVsEsp.

    ó

    hRNG[X+3] = IVsEsp. + 0x8000

  2. Suponer una parte baja para alguno de esos RNG, con lo cual tendremos un RNG completo pero hipotético. Para saber a ciencia cierta si ese supuesto es el valor correspondiente, podemos hallar el RNG próximo o anterior a ese (no importa cuál si se hace bien los cálculos) y luego comparar si la parte alta del obtenido corresponde con la parte alta del RNG objetivo, que es un valor fijo que sí sabemos.

    Si corresponden, el hipotético RNG es muy probable que sea el que utilizó el mismo juego; si no, habrá que intentar con un supuesto nuevo valor para la parte baja para hacer una nueva comprobación, y así hasta encontrar los que encajen. En total habrán unos 65.536 (0x10000) posibles RNG, de los cuales, al menos uno corresponda, por lo tanto se puede ver que no hay forma práctica de hacer una verificación salvo ayudarse de un programa, que rápidamente puede hacer todos los cálculos.

Ejemplo:

Tenemos que el PID de cualquier Pokémon es 0x2509385E (621.361.246) y vamos a comprobar la relación que tiene éste con sus IVs, los cuales son: PS=23, Ata.=0, Def.=7, AtaEsp.=6, DefEsp.=28, Vel.=31.

Podemos empezar a suponer el RNG de cualquiera de las llamadas; para el ejemplo, supondremos el del estado X, que es el que corresponde a la parte baja de PID. Por lo que vimos antes, sabemos que hRNG[X] = lPID y tenemos que lPID es igual a 0x385E y que hPID es igual a 0x2509.

Con la ayuda de una pequeña aplicación, hallamos que de las 65.536 combinaciones del RNG[X] (tomando los valores desde 0x385E0000 hasta 0x385EFFFF) la que satisface que hRNG[X+1] sea igual a 0x2509 (hPID) es 0x385EF1BE y ninguna más. Con lo que tenemos que RNG[X+1] sea igual a 0x25093259, y como ya sabemos un RNG para un estado en particular, pues podemos hallar el resto.

En resumen tendríamos:

  • RNG[X+0] = 0x385EF1BE.
  • RNG[X+1] = 0x25093259.
  • RNG[X+2] = 0x1C17EE58.
  • RNG[X+3] = 0xF0DFABEB.

Con lo que tenemos dos posibilidades para seguir: Construir los hRNG para los estados X+2 y X+3 a partir de los valores de los IVs para compararlos con los hallados, o extraer los valores de los IVs de los RNG calculados y comparar estos con los IVs propios.

Puesto que los hRNG pueden ser dos valores para IVsFís. y para IVsEsp., encontraremos los IVs de los RNG anteriormente listados. Y de esto tenemos que:

  • IVsFís. = 0x1C17.
  • IVsEsp. = 0xF0DF.

  • PS = 0x17 = 0x1C17 % 0x20.
  • Ata. = 0x0 = (0x1C17 / 0x20) % 0x20.
  • Def. = 0x7 = (0x1C17 / 0x400) % 0x20.
  • Vel. = 0x1F = 0xF0DF % 0x20.
  • AtaEsp. = 0x6 = (0xF0DF / 0x20) % 0x20.
  • DefEsp. = 0x1C = (0xF0DF / 0x400) % 0x20.

PS=23 (0x17), Ata.=0 (0x0), Def.=7 (0x7), AtaEsp.=6 (0x6), DefEsp.=28 (0x1C), Vel.=31 (0x1F), cada uno de los IVs calculados corresponden con los propios, con lo que finalmente podemos estar seguros que el Pokémon conserva la relación y es legal es éste aspecto.

Volver al Contenido

3.- Métodos de Creación PID/IVs.

Ya vimos cómo son creados el PID y los IVs y por qué estos pueden tener una relación, y ahora lo que falta por explicar es cuántos tipos de relaciones hay, porque la forma en la que son hechos el PID y los IVs puede cambiar.

Estos métodos son en realidad muy parecidos entre sí, y de hecho lo que cambia es el valor del estado en cual los valores son creados según las llamadas del RNG. Para entender esto, recordemos el método de creación anteriormente utilizado. Agregando la notación de parte alta y de parte baja queda:

Método 1:

lPID = hRNG[X]

hPID = hRNG[X+1]

IVsFís. = hRNG[X+2]

IVsEsp. = hRNG[X+3]

Y podemos decir entonces qué: A la llamada X+0 le corresponde el lPID, a la llamada X+1 le corresponde el hPID, a la llamada X+2 le corresponde el IVsFís. y a la llamada X+3 le corresponde el IVsEsp.

Como se dijo, la diferencia entre métodos es solo el cambio en el valor del estado en el que se toman los valores, y puesto que éstos siempre se generan de esta forma, podemos utilizar una notación estándar, en donde la posición de la llamada corresponde al valor que genera, es decir, para el método anterior, si declaramos como lPID/hPID/IVsFís./IVsEsp. el orden de estos valores, su correspondiente para las llamadas es: 0/1/2/3.

Existen en total 4 métodos bien conocidos, y sin embargo se conoce de la existencia de más; aquí sólo se explicaran esos 4 métodos que son tal vez los más utilizados por los juegos:

  • El Método 1 es el más usado y es el indicado arriba: es el más común entre los Pokémon y se utiliza tanto en GBA como en NDS.
  • No se ha comprobado la existencia del Método 3 en la realidad. Por ahora es un modelo teórico.

Para el resto de métodos miraremos las llamadas del RNG y cuáles corresponden a qué valor:

Método 2:

lPID = hRNG[X]

hPID = hRNG[X+1]

hRNG[X+2]
(no se usa)

IVsFís. = hRNG[X+3]

IVsEsp. = hRNG[X+4]

Método 3:

lPID = hRNG[X]

hRNG[X+1]
(no se usa)

hPID = hRNG[X+2]

IVsFís. = hRNG[X+3]

IVsEsp. = hRNG[X+4]

Método 4:

lPID = hRNG[X]

hPID = hRNG[X+1]

IVsFís. = hRNG[X+2]

hRNG[X+3]
(no se usa)

IVsEsp. = hRNG[X+4]

Y utilizando la notación estándar en resumen tenemos que cada método es:

  • Método 1: 0/1/2/3 o A-B-C-D.
  • Método 2: 0/1/3/4 o A-B-D-E.
  • Método 3: 0/2/3/4 o A-C-D-E.
  • Método 4: 0/1/2/4 o A-B-C-E.

Nota: Las letras siguen el mismo orden que los números. Se trata de la notación más frecuente.

Ámbito de Uso:
Los métodos 2, 3 y 4 sólo son utilizados para GBA y sólo para Pokémon salvajes. El método 1 también es utilizado para Pokémon salvajes y además para Pokémon no salvajes (pero no para criados). Ejemplos de Pokémon no salvajes son:

  • Pokémon Legendarios.
  • Pokémon Iniciales.
  • Pokémon de Premio (Casino, Giravoltorb).
  • Pokémon de Regalo como el Eevee de Mansión Azulona (Rojo Fuego o Verde Hoja), el Eevee que se regala en las Ediciones Platino, HeartGold y SoulSilver, el Castform que se da en el Instituto Meteorológico o el Beldum que se encuentra en la casa de Máximo en Ciudad Algaria.

En algunos casos no está claro cuándo los juegos deciden utilizar un método u otro, y no se sabe a ciencia cierta cuáles son las circunstancias que disparan cierto uso, o qué es lo que influye.

Ejemplo Completo:
Tenemos un Pokémon del que sabemos que fue obtenido por medios naturales, y queremos saber con qué tipo de relación fueron creados su PID y sus IVs. De alguna forma encontramos que su PID es 3.269.255.271 (0xC2DCE067) y sus IVs son: PS=10, Ata.=19, Def.=15, AtaEsp.=13, DefEsp=22, Vel.=23.

Una manera de hacer la comprobación sería recreando a partir del PID los valores altos del RNG de acuerdo al método y completar alguno de ellos empleando la metodología que usamos en el anterior ejemplo. Con ello podemos crear los IVs según el método y compararlos con los del Pokémon para ver para cuál coincide.

Podemos encontrar según el método que:

  • Los métodos 1, 2 y 4 son iguales en el orden que crean el PID, por tanto: hRNG[X] = 0x6367, lRNG[X+1] = 0x5688. De estas condiciones se encontró que sólo 1 valor de RNG[X] las satisfacían:
    • RNG[X] = 0xE06742AE.
  • El método 3 es el único diferente en el orden que crea el PID: hRNG[X] = 0x6367, lRNG[X+2] = 0x5688. De estas condiciones se encontró que sólo 2 valores de RNG[X] las satisfacían:
    • RNG[X] = 0xE0676CAA.
    • RNG[X] = 0xE067A733.

Ahora bien, sabemos un valor del RNG para un estado en concreto para cada método, podemos crear los siguientes valores de éste y crear los IVs, para como dijimos, comparar con cada uno y ver con cual coincide:

  1. Método 1 (0xE06742AE):

    • RNG[X+0] = 0xE06742AE.
    • RNG[X+1] = 0xC2DCC889.
    • RNG[X+2] = 0x201180C8.
    • RNG[X+3] = 0x5F61259B.
    • RNG[X+4] = 0xA6B49D72.

    Y según este método, los IVs serían:

    • IVsFís. = 0x2011.
    • IVsEsp. = 0x5F61.

    • PS = 0x11 = 0x2011 % 0x20.
    • Ata. = 0x0 = (0x2011 / 0x20) % 0x20.
    • Def. = 0x8 = (0x2011 / 0x400) % 0x20.
    • Vel. = 0x1 = 0x5F61 % 0x20.
    • AtaEsp. = 0x1B = (0x5F61 / 0x20) % 0x20.
    • DefEsp. = 0x17 = (0x5F61 / 0x400) % 20.

    PS=17 (0x11), Ata.=0 (0x0), Def.=8 (0x8), AtaEsp.=27 (0x27), DefEsp.=23 (0x17), Vel.=1 (0x1). Los IVs calculados no coinciden con los propios del Pokémon, concluimos entonces que con éste método no fue creado, y procedemos a revisar otro.

  2. Método 2 (0xE06742AE):

    • RNG[X+0] = 0xE06742AE.
    • RNG[X+1] = 0xC2DCC889.
    • RNG[X+2] = 0x201180C8.
    • RNG[X+3] = 0x5F61259B.
    • RNG[X+4] = 0xA6B49D72.

    Y según el método, los IVs serían:

    • IVsFís. = 0x5F61.
    • IVsEsp. = 0xA6B4.

    • PS = 0x1 = 0x5F61 % 0x20.
    • Ata. = 0x1B = (0x5F61 / 0x20) % 0x20.
    • Def. = 0x17 = (0x5F61 / 0x400) % 0x20.
    • Vel. = 0x14 = 0xA6B4 % 0x20.
    • AtaEsp. = 0x15 = (0xA6B4 / 0x20) % 0x20.
    • DefEsp. = 0x9 = (0xA6B4 / 0x400) % 0x20.

    PS=1 (0x1), Ata.=27 (0x1B), Def.=23 (0x17), AtaEsp.=21 (0x15), DefEsp.=9 (0x9), Vel.=20 (0x14). Los IVs calculados no coinciden con los propios del Pokémon, concluimos entonces que con éste método no fue creado, y procedemos a revisar otro.

  3. Método 3 (0xE0676CAA)

    • RNG[X+0] = 0xE0676CAA.
    • RNG[X+1] = 0x44A170D5.
    • RNG[X+2] = 0xC2DC5124.
    • RNG[X+3] = 0xFE5FE4C7.
    • RNG[X+4] = 0xFF736B2E.

    Y según el método, los IVs serían:

    • IVsFís. = 0xFE5F.
    • IVsEsp. = 0xFF73.

    • PS = 0x1F = 0xFE5F % 0x20.
    • Ata. = 0x12 = (0xFE5F / 0x20) % 0x20.
    • Def. = 0x1F = (0xFE5F / 0x400) % 0x20.
    • Vel. = 0x13 = 0xFF73 % 0x20.
    • AtaEsp. = 0x1B = (0xFF73 / 0x20) % 0x20.
    • DefEsp. = 0x1F = (0xFF73 /0x400) % 0x20.

    PS=31 (0x1F), Ata.=18 (0x12), Def.=31 (0x1F), AtaEsp.=27 (0x1B), DefEsp.=31 (0x1F), Vel.=19 (0x13). Los IVs calculados no coinciden con los propios del Pokémon, concluimos entonces que con éste método y con éste valor de RNG en especial no fue creado.

    Para este método aun queda otro valor factible con el cual probar, para descartarlo por completo tendremos que revisar ese también.

  4. Método 3 (0xE067A733)

    • RNG[X+0] = 0xE067A733.
    • RNG[X+1] = 0x65861B2A.
    • RNG[X+2] = 0xC2DCBD55.
    • RNG[X+3] = 0x3E6AE3A4.
    • RNG[X+4] = 0xD9B74547.

    Y según el método, los IVs serían:

    • IVsFís. = 0x3E6A.
    • IVsEsp. = 0xD9B7.

    • PS = 0xA = 0x3E6A % 0x20.
    • Ata. = 0x13 = (0x3E6A / 0x20) % 0x20.
    • Def. = 0xF = (0x3E6A / 0x400) % 0x20.
    • Vel. = 0x17 = 0xD9B7 % 0x20.
    • AtaEsp. = 0xD = (0xD9B7 / 0x20) % 0x20.
    • DefEsp. = 0x16 = (0xD9B7 / 0x400) % 0x20..

    PS=10 (0xA), Ata.=19 (0x13), Def.=15 (0xF), AtaEsp.=13 (0xD), DefEsp.=22 (0x16), Vel.=23 (0x17). Los IVs calculados sí coinciden con los propios del Pokémon, concluimos entonces que el Pokémon fue creado con el Método 3, proceder a revisar otros sería innecesario.

Volver al Contenido

3.1.- Pokémon Shiny de PokéRadar.

Como se explica en la guía del PokéRadar, un Pokémon capturado en una cadena tiene mayor probabilidad de lo normal de ser shiny, y cuanto más larga sea la cadena mayor es la probabilidad. Por otro lado, en la guía del PID podemos ver cómo los juegos de Pokémon determinan cuando un Pokémon es shiny, y viendo la mecánica del PokéRadar se podría pensar que esa fórmula debe cambiar en algún momento.

Pues bien, la forma de comprobar si un Pokémon es Shiny no cambia en lo absoluto. Lo que cambia es la forma en cómo el PID es creado, y es por eso que esta explicación corresponde a esta guía.

Cada vez que se encuentra un Pokémon en una cadena, el juego usa una fórmula para decidir si el Pokémon debe ser shiny o no. Si no es shiny, el proceso de creación PID/IVs transcurre común y corriente; pero si debe serlo, una vez creado el PID éste es arreglado con llamadas del RNG para cumplir con la fórmula conocida para ser shiny.

Para el método en total se llaman 17 veces al RNG, 4 para crear el PID y los IVs y 13 para crear un número con el cual se corrige el PID. En resumen sería:

Método Shiny de Cadena (Chain Shiny):

lPID = hRNG[X]

hPID = hRNG[X+1]

PkRadar(N) = hRNG[X+2+N] % 2

IVsFís. = hRNG[X+15]

IVsEsp. = hRNG[X+16]


Donde PkRadar es la variable correctora y los paréntesis indican el orden del bit señalado para ser modificado. N toma los valores desde 0 hasta 12.

Una vez obtenido los valores de lPID y de hPID se procede a operar como sigue:

lPID = (lPID % 8) + (PkRadar * 8)

hPID = (hPID % 8) + [{(rID xor rSID) xor PkRadar} * 8]

Donde rID y rSID son el ID y el SID el Pokémon con sus 3 primeros eliminados:

rID = ID / 8

rSID = SID / 8

De esta forma el juego se asegura que el Pokémon será shiny con una forma de cerciorarse de la relación PID/IVs sin la necesidad de demorarse por buscar un PID que cumpla de forma natural la fórmula de ser shiny (serían bastantes cálculos esperando por un resultado que sucede de forma aleatoriamente con una muy baja probabilidad).

Ejemplo:

Tenemos que el valor de la Semilla del RNG es 0x6C0A86E7 (1.812.629.223), y queremos saber cuál sería el PID y los IVs del un Pokémon creado con el método de shiny de PokéRadar, también sabemos que su ID y su SID serían 6409 (0x1909) y 23378 (0x5B52).

Primero, hacemos las 17 llamadas del RNG para poder hallar los valores que nos interesan:

  1. hRNG[X+0] = 0x6C0A.
  2. hRNG[X+1] = 0x3340.
  3. hRNG[X+2] = 0xFB24.
  4. hRNG[X+3] = 0xCFBF.
  5. hRNG[X+4] = 0x82BA.
  6. hRNG[X+5] = 0x26FC.
  7. hRNG[X+6] = 0xE066.
  8. hRNG[X+7] = 0x008A.
  9. hRNG[X+8] = 0xBF25.
  10. hRNG[X+9] = 0x5D39.
  11. hRNG[X+10] = 0x089B.
  12. hRNG[X+11] = 0xCFB7.
  13. hRNG[X+12] = 0xCA1A.
  14. hRNG[X+13] = 0xB2A0.
  15. hRNG[X+14] = 0x4422.
  16. hRNG[X+15] = 0xFF34.
  17. hRNG[X+16] = 0x6C80.

Con lo que calculamos...

  • lPID = 0x6C0A.
  • hPID = 0x3340.

  • IVsFís. = 0xFF34.
  • IVsEsp. = 0x6C80.

  • PS = 0x14 = 0xFF34 % 0x20.
  • Ata. = 0x19 = (0xFF34 / 0x20) % 0x20.
  • Def. = 0x1F = (0xFF34 / 0x400) % 0x20.
  • Vel. = 0 = 0x6C80 % 0x20.
  • AtaEsp. = 0x4 = (0x6C80 / 0x20) % 0x20.
  • DefEsp. = 0x1B = (0x6C80 / 0x400) % 0x20.

Para calcular PkRadar tenemos:

  1. PkRadar(0) = 0 = 0xFB24 % 0x2.
  2. PkRadar(1) = 1 = 0xCFBF % 0x2.
  3. PkRadar(2) = 0 = 0x82BA % 0x2.
  4. PkRadar(3) = 0 = 0x26FC % 0x2.

  5. PkRadar(4) = 0 = 0xE066 % 0x2.
  6. PkRadar(5) = 0 = 0x008A % 0x2.
  7. PkRadar(6) = 1 = 0xBF25 % 0x2.
  8. PkRadar(7) = 1 = 0x5D39 % 0x2.

  9. PkRadar(8) = 1 = 0x089B % 0x2.
  10. PkRadar(9) = 1 = 0xCFB7 % 0x2.
  11. PkRadar(10) = 0 = 0xCA1A % 0x2.
  12. PkRadar(11) = 0 = 0xB2A0 % 0x2.

  13. PkRadar(12) = 0 = 0x4422 % 0x2.
  • PkRadar = '0000 0011 1100 0010' = 0x3C2.

Y finalmente...:

  • rID = ID / 8.
    • rID = 0x1909 / 0x8.
    • rID = 0x321.
  • rSID = SID / 8.
    • rSID = 0x5B52 / 0x8.
    • rSID = 0xB6A.
  • lPID = (lPID % 8) + (PkRadar * 8).
    • lPID = (0x6C0A % 0x8) + (0x3C2 * 8).
    • lPID = 0x2 + 0x1E10.
    • lPID = 0x1E12.
  • hPID = (hPID % 8) + [{(rID xor rSID) xor PkRadar} * 8].
    • hPID = (0x3340 % 0x8) + [{(0x321 xor 0xB6A) xor 0x3C2} * 8].
    • hPID = 0 + [{0x84B xor 0x3C2} * 8].
    • hPID = 0xB89 * 8.
    • hPID = 0x5C48.

Resultado: El PID del Pokémon es 0x5C481E12 (1.548.230.162), y los IVs son: PS=20 (0x14), Ata.=25 (0x19), Def.=31 (0x1F), AtaEsp.=4 (0x4), DefEsp.=27 (0x1B), Vel.=0 (0x0).

Volver al Contenido

Nota sobre Pokémon obtenidos mediante Crianza:

Para Pokémons que se tiene por crianza, el RNG también es usado para crear su PID y sus IVs, pero a diferencia de lo explicado anteriormente, estos valores se crean en distintos momentos: El PID se calcula cuando el Pokémon es creado como Huevo, y los IVs son calculados cuando el personaje habla con el encargado de la guardería. Por ello no es posible que Pokémon obtenidos así se les pueda revisar esa relación, al utilizar el RNG en diferentes momentos no se puede saber qué estado corresponde a qué llamada.


¿Sigues teniendo dudas después de haber leído la guía?, ¿crees que has encontrado un error y deseas comentarlo?, prueba a preguntar o informar de esto en los Foros de Pokéxperto, en el Tema Oficial, pero primero léete las reglas del foro.

Revisado el 31 de mayo de 2010 a las 18:25

 

Riolu