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

 

Pokéxperto
016

El PID

Guías Abuso RNG

Contenido:

  1. Explicación
  2. Usos del PID en Tercera y Cuarta Generación
    1. Habilidad
    2. Naturaleza
    3. Género
    4. Pokémon Shiny
    5. Evolución de Wurmple
    6. Manchas de Spinda
  3. Usos del PID sólo en Tercera Generación
    1. Forma de Unown
  • 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.- Explicación.

El PID "Personality IDentification number" (o Número de Personalidad) es un número que tienen todos los Pokémon, utilizado desde GBA, y que es generado por el RNG cuando es encontrado, o cuando es criado en la guardería. Éste número es invisible para el jugador (así como los IVs) pero es utilizado para determinar aspectos útiles de el.

Su valor puede variar desde 0x0 hasta 0xFFFFFFFF (4.294.967.296, entero sin signo de 32-bits), y debido al enorme rango que tiene y a la forma como es calculado, es posible afirmar que el PID es prácticamente único para cada Pokémon: viendo la probabilidad de obtener uno en especial podemos darnos cuenta: 0,000000023283%.

De acuerdo con una serie de operaciones binarias que el juego le realiza al PID, se deciden valores importantes del Pokémon, tales como: La Habilidad, la Naturaleza, el Género e incluso si es Shiny o Normal. Algunas características en particular sólo aplican en una generación. A continuación se muestra cómo el juego hace estos cálculos.

2.- Usos del PID en la Tercera y Cuarta Generación.

2.1.- Habilidad.

La Habilidad de un Pokémon que solo tiene una posibilidad (e.j. Lugia con Presión) no necesita ser calculada. Sin embargo, los Pokémon con dos posibilidades sí. La forma en como se decide depende de la siguiente fórmula:

Hab. = PID % 2

Donde Hab. toma los valores 0 ó 1, y % es el resto de la división entera del PID (modulo).

  • Si Hab. = 0, entonces la Habilidad utilizada será la primera.
    Si Hab. = 1, entonces la Habilidad utilizada será la segunda.
  • Para saber cual es la primera o la segunda habilidad de cierto Pokémon, se puede ver su entrada en la PokeDex y observar que la que está a la izquierda es la primera, y la que está a la derecha es la segunda.
  • Por la simplicidad del cálculo es fácil darse cuenta que si el PID es par (PID % 2 == 0) se consigue la primer Habilidad, o si el PID es impar (PID % 2 == 1) se consigue la segunda Habilidad.

Ejemplo:
Tenemos un Rattata con un PID de 1.798.517.408 (0x6B3332A0) y queremos saber cual es su Habilidad, si Fuga (primera) o Agallas (segunda).

El resultado de 1.798.517.408 modulo 2 es 0, por tanto su Habilidad es Fuga.

Volver al Contenido

2.2.- Naturaleza.

La Naturaleza de un Pokémon es calculada en todo Pokémon sin excepción, y la forma en como se hace va de acuerdo con la siguiente fórmula:

Nat. = PID % 25 (decimal)

Nat. = PID % 0x19 (hexadecimal)

Donde Nat. toma los valores desde 0 hasta 24 (0x18). La Naturaleza utilizada entonces corresponde con la información citada en la siguiente tabla:

Nat. Naturaleza STAT(Aumenta/Disminuye)
0 Fuerte - Hardy (+Ata. / -Ata.)
1 Hurańa - Lonely (+Ata. / -Def.)
2 Audaz - Brave (+Ata. / -Vel.)
3 Firme - Adamant (+Ata. / -At.Esp.)
4 Pícara - Naughty (+Ata. / -Def.Esp.)
5 Osada - Bold (+Def. / -Ata.)
6 Dócil - Docile (+Def. / -Def.)
7 Plácida - Relaxed (+Def. / -Vel.)
8 Agitada - Impish (+Def. / -At.Esp.)
9 Floja - Lax (+Def. / -Def.Esp.)
10 Miedosa - Timid (+Vel. / -Ata.)
11 Activa - Hasty (+Vel. / -Def.)
12 Seria - Serious (+Vel. / -Vel.)
13 Alegre - Jolly (+Vel. / -At.Esp.)
14 Ingenua - Naive (+Vel. / -Def.Esp.)
15 Modesta - Modest (+At.Esp. / -Ata.)
16 Afable - Mild (+At.Esp. / -Def.)
17 Mansa - Quiet (+At.Esp. / -Vel.)
18 Tímida - Bashful (+At.Esp. / -At.Esp.)
19 Alocada - Rash (+At.Esp. / -Def.Esp.)
20 Serena - Calm (+Def.Esp. / -Ata.)
21 Amable - Gentle (+Def.Esp. / -Def.)
22 Grosera - Sassy (+Def.Esp. / -Vel.)
23 Cauta - Careful (+Def.Esp. / -At.Esp.)
24 Rara - Quirky (+Def.Esp. / -Def.Esp.)

Ejemplo:
Tenemos cualquier Pokémon con un PID de 1.663.859.788 (0x632C7C4C) y queremos hallar su Naturaleza.

El resultado de hacer 1.663.859.788 modulo 25 es 13, por tanto tenemos que su Naturaleza es Alegre.

Volver al Contenido

2.3.- Género.

El Género de un Pokémon no precisa ser determinado para aquellos que no pueden tener (e.j. Bronzong), o son siempre machos (e.j. Volbeat), o son siempre hembras (e.j. Illumise).

Para el resto de Pokémon, la siguiente fórmula se utiliza para decidirlo:

Gen. = PID % 256 (decimal)

Gen. = PID % 0x100 (hexadecimal)

Donde Gen. toma valores desde 0 hasta 255 (0xFF).

  • La elección del Género se hace en base a una comparación del número obtenido (Gen.) con un número predeterminado dictado según la distribución de género de la especie Pokémon (Gen. Base).
  • Si Gen. es mayor o igual al Gen. Base, el Pokémon es macho (en otro caso el Pokémon es hembra).
  • Con la siguiente tabla podemos ver cuál es el número correspondiente:
Gen. Base Ratio Macho Ratio Hembra
223 12,5% 87,5%
191 25% 75%
127 50% 50%
63 75% 25%
31 87.5% 12.5%

Ejemplo:
Tenemos un Venusaur con un PID de 3.046.388.744 (0xB5943408), y necesitamos saber su Género. Sabemos que Venusaur tiene un 87.5% de ser macho y un 12.5% de ser hembra, por lo que su Gen. Base es 31.

De la operación 3.046.388.744 modulo 256 obtenemos 8. Ahora comparamos con el Gen. Base de Venusaur, y como Gen. < Gen. Base (8 < 31), llegamos a la conclusión de que su Género es Hembra.

Volver al Contenido

2.4.- Pokémon Shiny.

El PID también determina si un Pokémon es Shiny o es Normal, pero a diferencia de los anteriores cálculos, el ID y SID del entrenador que lo capturó son utilizados también. Ésta fórmula halla el número con el que se resuelve dicha característica:

Shiny = (ID xor SID) xor {(PID / 65.536) xor (PID % 65.536)} (decimal)

Shiny = (ID xor SID) xor {(PID / 0x10000) xor (PID % 0x10000)} (hexadecimal)

Donde Shiny toma los valores desde 0 hasta 65.535 (0xFFFF).

  • Método Normal: Si Shiny es menor que 8, el Pokémon es Shiny (en otro caso es Normal). La probabilidad de que esto suceda es de 1/8192 (en realidad es de 8/65536 = 0,012207%).
  • Método Masuda: En los Pokémon criados por padres obtenidos en juegos de diferente idioma esta probabilidad mejora a 1/2048 (0,048828%). El cálculo es el mismo, pero en el proceso de creación del PID se evalúan un máximo de 4 PID posible; para cada PID creado el juego mira si corresponde para uno Shiny y si lo es se queda con ese PID. Si no lo es, se mira el siguiente (hasta 4).
  • Método Pokéradar: El uso del Pokéradar incrementa también la probabilidad de aparición de Pokémon shiny según se acumulan Pokémon en una misma cadena (hasta 40). La probabilidad mejora hasta 1/200 (0.5%). El cálculo sigue siendo el mismo, pero el Pokéradar predetermina los PIDs de los Pokémon salvajes que pueden aparecer de manera que la probabilidad de que sean Shiny aumenta. Más Información.
  • Pokémon de Evento: En Cuarta Generación los Pokémon obtenidos mediante una Tarj. Misteriosa (Wonder Card) de la opción Regalo Misterioso, incluyendo el Huevo de Manaphy, ven predeterminado su PID de manera que sea imposible obtenerlos shiny. Sin embargo el Huevo de Manaphy puede ser transferido a otro juego posteriormente y eclosionar siendo Shiny al haber cambiado el ID y SID del juego.

Ejemplo:
Tenemos un Pokémon con un PID de 3.239.587.633 (0xC1182F31), con un ID y un SID de 41.538 (0xA242) y 19.560(0x4C68) respectivamente; queremos saber si es Shiny. Para continuar las operaciones tenemos:

  • El resultado de PID división entera de 65.536 es 49.432.
  • El resultado de PID módulo 65.536 es 12.081.
  • El resultado de la parte derecha (OR exclusivo entre los anteriores) de la ecuación es: 49.432 XOR 12.081 = 60.969.
  • El resultado de la parte izquierda (OR exclusivo entre ID y SID) es: 41.538 XOR 19.560 = 60.970.
  • Y finalmente podemos hallar Shiny: 60.970 XOR 60.969 = 3.

Como Shiny < 8, el Pokémon es Shiny.

Volver al Contenido

2.5.- Evolución de Wurmple.

El factor que determina la evolución de Wurmple es el PID, y ningún otro. La fórmula utilizada es:

EvoWur. = (PID / 65.536) % 10 (decimal)

EvoWur. = (PID / 0x10000) % 0xA (hexadecimal)

Donde EvoWur. toma los valores desde 0 hasta 9.

Ejemplo:
Tenemos un Wurmple con un PID de 1.925.777.623 (0x72C908D7) para el cual miraremos con antelación a qué Pokémon evolucionará.

Calculamos que 1.925.777.623 división entera de 65.536 es 29.385, y que 29.385 módulo 10 nos da 5 (EvoWur. = 5). Como no se cumple la condición de que EvoWur. < 5, Wurmple evolucionará en Cascoon.

Volver al Contenido

2.6.- Manchas de Spinda.

La ubicación de las manchas de Spinda en su cuerpo es decidido por una serie de operaciones que se le hacen al PID.

En total hay 4 manchas que siempre están presentes (aunque no sean visibles o estén algo superpuestas): dos en las orejas y dos en su cara. Así como es coordinado un punto en el plano cartesiano, lo son también estas machas (a diferencia que, el eje negativo de Y en el plano cartesiano, es el eje positivo de Y aquí).

Para hallar estos puntos, hay que utilizar las siguientes fórmulas:

Oreja Derecha
OrejaDer. = {PID / (2560)} % 256
(decimal)

OrejaDer. = (PID / 0x1) % 0x100 (hexadecimal)

Oreja Izquierda
OrejaIzq. = {PID / (2561)} % 256
(decimal)

OrejaIzq. = (PID / 0x100) % 0x100 (hexadecimal)

Cara Derecha
CaraDer. = {PID / (2562)} % 256
(decimal)

CaraDer. = (PID / 0x10000) % 0x100 (hexadecimal)

Cara Izquierda
CaraIzq. = {PID / (2563)} % 256
(decimal)

CaraIzq. = (PID / 0x1000000) % 0x100 (hexadecimal)

Donde cada variable toma los valores desde 0 hasta 255 (0xFF).

Si pudiéramos dividir la parte superior del sprite de Spinda en cuatro rectángulos iguales, tendríamos qué, el origen aproximado de cada mancha sería la esquina superior izquierda (esto a nuestra percepción, diferente de la dirección de las manchas).

El valor de X y de Y para cada punto estaría dado por:

X = {Pun. / (160)} % 16 (decimal)

X = (Pun. / 0x1) % 0x10 (hexadecimal)

Y = {Pun. / (161)} % 16 (decimal)

Y = (Pun. / 0x10) % 0x10 (hexadecimal)

Una forma más conveniente de encontrar las coordenadas del PID consiste en pasarlo a hexadecimal, con lo cual tendremos un máximo de 8 dígitos (si hacen falta se agregan tantos ceros a la izquierda para completar los 8). Para cada dígito, del menos significativo al más significativo, tendremos que las coordenadas son respectivamente:

  1. Coordenada X de la mancha de oreja derecha.
  2. Coordenada Y de la mancha de oreja derecha.
  3. Coordenada X de la mancha de oreja izquierda.
  4. Coordenada Y de la mancha de oreja izquierda.
  5. Coordenada X de la mancha de cara derecha.
  6. Coordenada Y de la mancha de cara derecha.
  7. Coordenada X de la mancha de cara izquierda.
  8. Coordenada Y de la mancha de cara izquierda.

Ejemplo:
Tenemos un Spinda con un PID de 258.975.331 (0x0F6FA663), con el que pretendemos mirar dónde van a quedar su machas.

Ya que tenemos el número en hexadecimal, lo único que tenemos que hacer es mirar correctamente éste para hallar las coordenadas. Para ello dale la vuelta al número hexadecimal (366AF6F0) y sepáralos en parejas (36 - 6A - F6 - F0) para obtener las coordenadas de cada mancha. En este caso tendríamos:

  • Punto dela mancha de oreja derecha = (0x3), (0x6) = (3, 6).
  • Punto dela mancha de oreja izquierda = (0x6), (0xA) = (6, 10).
  • Punto dela mancha de cara derecha = (0xF), (0x6) = (15, 6).
  • Punto dela mancha de cara izquierda = (0xF), (0x0) = (15, 0).

Estos puntos son relativos para el origen del sprite, habría que mirar cuáles son los puntos de origen para el sprite en concreto (varía según el juego).

Volver al Contenido

3.- Usos del PID sólo en la Tercera Generación.

3.1.- Forma de Unown.

El PID de nuevo es el culpable de determinar otra característica del Pokémon: la forma que puede ser un Unown es hallada según la fórmula:

byt1 = {PID / (2560)} % 4 (decimal)

byt1 = (PID / 0x1) % 0x4 (hexadecimal)

byt2 = {PID / (2561)} % 4 (decimal)

byt2 = (PID / 0x100) % 0x4 (hexadecimal)

byt3 = {PID / (2562)} % 4 (decimal)

byt3 = (PID / 0x10000) % 0x4 (hexadecimal)

byt4 = {PID / (2563)} % 4 (decimal)

byt4 = (PID / 0x1000000) % 0x4 (hexadecimal)

Unown = (byt1 * 40) + (byt2 * 41) + (byt3 * 42) + (byt4 * 43) (decimal)

Unown = (byt1 * 0x1) + (byt2 * 0x4) + (byt3 * 0x10) + (byt4 * 0x40) (hexadecimal)

En donde los diferentes byt toman los valores desde 0 hasta 3, y Unown los valores desde 0 hasta 255 (0xFF).

Finalmente para encontrar la letra, tenemos la siguiente tabla donde ésta corresponde al valor de la última operación que falta:

Letra = Unown % 28

Letra Forma   Letra Forma
0 A 14 O
1 B 15 P
2 C 16 Q
3 D 17 R
4 E 18 S
5 F 19 T
6 G 20 U
7 H 21 V
8 I 22 W
9 J 23 X
10 K 24 Y
11 L 25 Z
12 M 26 ?
13 N 27 !

Ejemplo:
Tenemos un Unown con un PID de 1.417.493.678 (0x547D3CAE) y queremos conocer su forma. Las operaciones van como siguen:

  • byt1 = 0x2 = (0x547D3CAE / 0x1) % 0x4.
  • byt2 = 0x0 = (0x547D3CAE / 0x100) % 0x4.
  • byt3 = 0x1 = (0x547D3CAE / 0x10000) % 0x4.
  • byt4 = 0x0 = (0x547D3CAE / 0x1000000) % 0x4.
  • Unown = 0x12 = (0x2 * 0x1) + (0x0 * 0x4) + (0x1 * 0x10) + (0x0 * 0x40).
  • Letra = 0x12 = 0x12 módulo 0x1C.

En la tabla 0x12 (18 en decimal) corresponde a la letra S. Por tanto Unown tiene la forma S.

Volver al Contenido


ż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