Usuario:JAGT/Pokémon/RedBlue
Nota: Todos los valores hexadecimales han sido investigados y extraídos del juego Pokémon Edición Azul. Los valores de Pokémon Edición Roja se presuponen que son idénticos. Estos valores NO COINCIDEN con las versiones en otros idiomas.
Cartucho: Pokémon Edición Roja / Azul (Español)
[editar]Mapa del ROM
[editar]En total, esta página describe el 34,07% (357256 / 1048575) de la ROM mapeada.
Nombres de los Pokémon
[editar]0x00000 - 0xD0DE - ???
A continuación se describen los Pokémon salvajes que pueden aparecer en cada área del juego.
Cada área puede tener 10 posibles Pokémon.
El orden en el que aparecen numerados determina su probabilidad de aparición.
Así, por orden de aparición, sus probabilidades son: 51/51/39/25/25/25/13/13/11/3 sobre 255.
El primer byte se corresponde con el nivel con el que aparecerá el Pokémon, y el segundo byte es la referencia interna a la especie.
El orden de las áreas es el siguiente (desplegar lista):
RUTA 2
RUTA 22
BOSQUE VERDE
RUTA 3
MT MOON (1)
MT MOON (2)
MT MOON (3)
RUTA 4
RUTA 24
RUTA 25
RUTA 9
RUTA 5
RUTA 6
RUTA 11
TÚNEL ROCA (1)
TÚNEL ROCA (2)
RUTA 10
RUTA 12
RUTA 8
RUTA 7
TORRE POKÉMON (3)
TORRE POKÉMON (4)
TORRE POKÉMON (5)
TORRE POKÉMON (6)
TORRE POKÉMON (7)
RUTA 13
RUTA 14
RUTA 15
RUTA 16
RUTA 17
RUTA 18
ZONA SAFARI (CENTRO)
ZONA SAFARI (ESTE)
ZONA SAFARI (NORTE)
ZONA SAFARI (OESTE)
RUTA 19??
ISLAS ESPUMA (1)
ISLAS ESPUMA (2)
ISLAS ESPUMA (3)
ISLAS ESPUMA (4)
ISLAS ESPUMA (5)
MANSIÓN POKÉMON (1)
MANSIÓN POKÉMON (2)
MANSIÓN POKÉMON (3)
MANSIÓN POKÉMON (4)
RUTA 21
RUTA 20??
CUEVA CELESTE (1)
CUEVA CELESTE (2)
CUEVA CELESTE (3)
CENTRAL ELÉCTRICA
RUTA 23
CALLE VICTORIA
CALLE VICTORIA (3)
CALLE VICTORIA (1)
CUEVA DIGGLET
- 0xD0DF - 0xD0F3 :: Pokémon salvajes que aparecen en la Ruta 1
- 0xD0F4 - 0xD10A :: Pokémon salvajes que aparecen en la Ruta 2
- 0xD10A - 0xD11F :: Pokémon salvajes que aparecen en la Ruta 22
- 0xD120 - 0xD135 :: Pokémon salvajes que aparecen en el Bosque Verde.
- ...
0xD5C4 - 0x1C21D - ???
0x1C21E - 0x1C98A (1901 bytes // 10 bytes por Pokémon * 190 Pokémons)
- Lista de los nombres de todos los Pokémon.
- Cada Pokémon tiene un máximo de 10 letras. Los nombres están escritos de forma continua, sin espacios ni delimitadores. Cada chunk de 10 bytes representa un nombre único.
- Si el Pokémon tiene un nombre de menos de 10 letras, el resto del espacio se rellena con el valor 0x50.
- Hay que prestar especial atención al orden en el que aparecen los Pokémon. El orden interno que sigue el juego no es el orden del número en la PokéDex, es un orden aleatorio que se mantiene fijo en todo el juego. Por ejemplo, el Pokémon 01 es Rhydon, y siempre es Rhydon en cualquier referencia que se hace dentro del juego, por lo que el valor hexadecimal 0x01 siempre representa a Rhydon.
- Ciertos valores no representan a ningún Pokémon. Son catalogados como valores perdidos por el sistema. Llevan como nombre "MISSINGNO." (Del inglés, "missing number", o "número perdido").
- Nota: A continuación se muestra una lista con cada uno de los nombres. He partido la lista en dos listas, debido a que Wikipedia no es capaz de mostrar los 190 en una sola lista. El valor hexadecimal a la izquierda de cada Pokémon representa el identificador interno de cada respectivo Pokémon. Por ejemplo, el juego hace referencia a un Zapdos mediante el código 4B.
02 KANGASKHAN
03 NIDORAN♂
04 CLEFAIRY
05 SPEAROW
06 VOLTORB
07 NIDOKING
08 SLOWBRO
09 IVYSAUR
0A EXEGGUTOR
0B LICKITUNG
0C EXEGGCUTE
0D GRIMER
0E GENGAR
0F NIDORAN♀
10 NIDOQUEEN
11 CUBONE
12 RHYHORN
13 LAPRAS
14 ARCANINE
15 MEW
16 GYARADOS
17 SHELLDER
18 TENTACOOL
19 GASTLY
1A SCYTHER
1B STARYU
1C BLASTOISE
1D PINSIR
1E TANGELA
1F MISSINGNO.
20 MISSINGNO.
21 GROWLITHE
22 ONIX
23 FEAROW
24 PIDGEY
25 SLOWPOKE
26 KADABRA
27 GRAVELER
28 CHANSEY
29 MACHOKE
2A MR.MIME
2B HITMONLEE
2C HITMONCHAN
2D ARBOK
2E PARASECT
2F PSYDUCK
30 DROWZEE
31 GOLEM
32 MISSINGNO.
33 MAGMAR
34 MISSINGNO.
35 ELECTABUZZ
36 MAGNETON
37 KOFFING
38 MISSINGNO.
39 MANKEY
3A SEEL
3B DIGLETT
3C TAUROS
3D MISSINGNO.
3E MISSINGNO.
3F MISSINGNO.
40 FARFETCH'D
41 VENONAT
42 DRAGONITE
43 MISSINGNO.
44 MISSINGNO.
45 MISSINGNO.
46 DODUO
47 POLIWAG
48 JYNX
49 MOLTRES
4A ARTICUNO
4B ZAPDOS
4C DITTO
4D MEOWTH
4E KRABBY
4F MISSINGNO.
50 MISSINGNO.
51 MISSINGNO.
52 VULPIX
53 NINETALES
54 PIKACHU
55 RAICHU
56 MISSINGNO.
57 MISSINGNO.
58 DRATINI
59 DRAGONAIR
5A KABUTO
5B KABUTOPS
5C HORSEA
5D SEADRA
5E MISSINGNO.
5F MISSINGNO.
60 SANDSHREW
61 SANDSLASH
62 OMANYTE
63 OMASTAR
64 JIGGLYPUFF
65 WIGGLYTUFF
66 EEVEE
67 FLAREON
68 JOLTEON
69 VAPOREON
6A MACHOP
6B ZUBAT
6C EKANS
6D PARAS
64 JIGGLYPUFF
6F POLIWRATH
70 WEEDLE
71 KAKUNA
72 BEEDRILL
73 MISSINGNO.
74 DODRIO
75 PRIMEAPE
76 DUGTRIO
77 VENOMOTH
78 DEWGONG
79 MISSINGNO.
7A MISSINGNO.
7B CATERPIE
7C METAPOD
7D BUTTERFREE
7E MACHAMP
7F MISSINGNO.
80 GOLDUCK
81 HYPNO
82 GOLBAT
84 SNORLAX
85 MAGIKARP
86 MISSINGNO.
87 MISSINGNO.
88 MUK
89 MISSINGNO.
8A KINGLER
8B CLOYSTER
8C MISSINGNO.
8D ELECTRODE
8E CLEFABLE
8F WEEZING
90 PERSIAN
91 MAROWAK
92 MISSINGNO.
93 HAUNTER
94 ABRA
95 ALAKAZAM
96 PIDGEOTTO
97 PIDGEOT
98 STARMIE
99 BULBASAUR
9A VENUSAUR
9B TENTACRUEL
9C MISSINGNO.
9D GOLDEEN
9E SEAKING
9F MISSINGNO.
A0 MISSINGNO.
A1 MISSINGNO.
A2 MISSINGNO.
A3 PONYTA
A4 RAPIDASH
A5 RATTATA
A6 RATICATE
A7 NIDORINO
A8 NIDORINA
A9 GEODUDE
AA PORYGON
AB AERODACTYL
AC MISSINGNO.
AD MAGNEMITE
AE MISSINGNO.
AF MISSINGNO.
B0 CHARMANDER
B1 SQUIRTLE
B2 CHARMELEON
B3 WARTORTLE
B4 CHARIZARD
B5 MISSINGNO.
B6 MISSINGNO.
B7 MISSINGNO.
B8 MISSINGNO.
B9 ODDISH
BA GLOOM
BB VILEPLUME
BC BELLSPROUT
BD WEEPINBELL
BE VICTREEBEL
0x1C98B - 0x383DD : ???
0x38000 - 0x383DD - (1155 bytes) Información sobre los movimientos/ataques
38000 - ID del ataque 38001-38002 - ?? (efecto) 38003 - Potencia 38004 - Tipo 38005 - Precisión (máx: 255) 38006 - PP
- Total: 165 (7 bytes c/u)
- Tipo: 0 = Normal, 1 = Lucha, 2 = Volador, 3 = Veneno, 4 = Tierra, 5 = Roca, 7 = Bicho, 8 = Fantasma, 20 = Fuego, 21 = Agua, 22 = Planta, 23 = Eléctrico, 24 = Psíquico, 25 = Hielo, 26 = Dragón
0x383DE 0x405FB : ???
Datos de la Pokédex
[editar]0x405FC - 0x40F74 (2425 bytes)
- Representa varios datos en la Pokédex.
- El orden es exactamente el mismo orden interno que se utiliza a lo largo de toda la estructura de la ROM (el primero es Rhydon). Se excluyen de la lista los Pokémon inválidos (MISSINGNO.).
- Cuidado: El ancho de cada dato varía en función del tamaño de la palabra. Todo está delimitado por el caracter 0x50
- Datos:
- Tipo de Pokémon según la Pokédex (Rhydon es Taladro). Máximo 10 bytes. Terminado en 0x50
- Altura del Pokémon (1 byte). Representada en decímetros. Para obtener la altura se debe pasar el valor hexadecimal a decimal, y dividirlo entre 10. El resultado es la altura en metros.
- Peso del Pokémon (2 bytes). Representada en hectogramos. El orden de los valores hexadecimales está invertido. Para obtener el peso en kilos debemos: (Byte 1 + Byte 2 * 256) / 10
- Punteros de referencia a la Pokédex [no se conoce documentación]
0x40F75 - 0x40FB3 - ???
0x40FB4 - 0x41071 (190 bytes)
- Lista de las IDs de cada Pokémon, ordenadas por el orden interno del juego (00 = Rhydon).
- Se incluyen las IDs referentes a MISSINGNO. con valor 0.
0x41072 - 0x42782 - ???
0x42783 - 0x44000 - (6269 bytes) Datos en blanco
0x71476 - 0x716AC - Nombres de las ciudades y rutas.
0x83068 - 0x84001 - Datos en blanco
Descripciones de Pokédex
[editar]0xAC001 - 0xAF59E (13725 bytes)
- Texto descriptivo de cada Pokémon en la Pokédex.
- Ordenados según el criterio interno del juego (01 = Rhydon)
- Cada descripción ocupa un espacio variable, no hay un ancho fijo. Cada descripción está separada por el delimitador 0x50.
- 0x4E = Salto de línea.
- 0x49 = Salto de página.
- 0x50 = Fin del texto.
- 0x00 = Espacio sin utilizar. Sirve de relleno.
0xAF59F - 0xFFFFF : ESPACIO EN BLANCO (FIN) (330336 bytes)
Mapa de la RAM
[editar]Nombre del jugador
[editar]D158-D162 (10 bytes): Tu nombre de entrenador
- Es el nombre que eliges al principio del juego.
- Cada vez que capturas un nuevo Pokémon, tu nombre de entrenador es impreso en él, junto a la ID.
- Si tu nombre de entrenador no coincide con el nombre que posee el Pokémon capturado, será considerado un Pokémon extranjero, y por tanto recibirá puntos extras en combate.
Equipo Pokémon
[editar]- Nota: Respecto a la versión inglesa, los valores están desplazados 5 bytes.
D168 : Número total de Pokémons en el equipo [Únicos valores posibles: 01, 02, 03, 04, 05, 06]
- Si escribes un valor menor que el número de Pokémon reales que tienes en el equipo, no podrás utilizarlos. Si escribes un valor mayor que el número real de Pokémons que posees en el equipo, podrás seleccionar los espacios en blanco y puede resultar en un error.
- Lista de Pokémon en el equipo. Cada valor se corresponde con la ESPECIE del Pokémon (Por ejemplo, B0 = Charmander). La lista acaba en FF inmediatamente después del último Pokémon.
D169 : Puntero referente al Pokémon 1 D16A : Puntero referente al Pokémon 2 D16B : Puntero referente al Pokémon 3 D16C : Puntero referente al Pokémon 4 D16D : Puntero referente al Pokémon 5 D16E : Puntero referente al Pokémon 6 D16F : Fin de la lista (0xFF)
- Nota: El fin de la lista (0xFF) debe aparecer en el hueco del primer Pokémon que está vacío. Por ejemplo, si tenemos solo 2 Pokémon en el equipo, el tercer Pokémon debe tener el valor 0xFF, y el resto de bytes deben tener valor 0x00.
D170 - D19B (44 bytes)
D170 : Pokémon 1 (Hace referencia a la especie, pero ese valor no determina la especie. Lo determina D169) D171-D172 : Salud restante (2 bytes invertidos) D173 : Nivel (No es el nivel real) D174 : Status (00 = OK, 04 = Dormido, 08 = Envenenado, 10 = Quemado, 20 = Congelado, 40 = Paralizado) D175 : Tipo 1 (00 = Normal, 01 = Lucha, 02 = Volador, 03 = Veneno, 04 = Tierra, 05 = Roca, 07 = Bicho, 08 = Fantasma, 14 = Fuego, 15 = Agua, 16 = Planta, 17 = Eléctrico, 18 = Psíquico, 19 = Hielo, 1A = Dragon) D176 - Tipo 2 (Si no tiene tipo 2, el valor debe ser el mismo que Tipo 1) D177 - Ratio de captura/Item (Este es un valor basura. Representa la ratio de captura del Pokémon, y no se modifica al evolucionar, aunque la evolución tenga otra ratio de captura. Al transferir a este pokémon a la Generación 2, el valor de la ratio es interpretado como un objeto. D178 - Ataque 1 D179 - Ataque 2 D17A - Ataque 3 D17B - Ataque 4 D177-D178 - ID del entrenador que lo capturó D179-D17B - Experiencia // Se debe corresponder con el Nivel de acuerdo a las fórmulas específicas de cada especie. D17C-D17D - Salud Base D17E-D17F - Ataque Base D180-D181 - Defensa Base D182-D183 - Velocidad Base D184-D185 - Especial Base D186 - Ataque/Defensa (Valor Individual) D187 - Velocidad/Especial (Valor Individual) D188 - PP Ataque 1 D189 - PP Ataque 2 D18A - PP Ataque 3 D18B - PP Ataque 4 D18C - Nivel (Real) D18D-D18E - Salud Máxima D18F-D190 - Ataque total D191-D192 - Defensa total D193-D194 - Velocidad Total D195-D196 - Especial Total
D197-D1C2 : Pokémon 2 (misma estructura) D1C3-D1EE : Pokémon 3 (misma estructura) D1EF-D21A : Pokémon 4 (misma estructura) D21B-D246 : Pokémon 5 (misma estructura) D247-D272 : Pokémon 6 (misma estructura)
D273-D2B4 (66 bytes)
- A pesar de que la ID del Pokémon está grabada dentro de su propia información, el mote del Pokémon y el mote del entrenador que lo capturó se guardan en un espacio a parte.
- El mote del entrenador tiene un máximo de 10 caracteres (10 bytes) más uno que indica el final de la cadena.
ID del entrenador que capturó a los Pokémon que tenemos en nuestro equipo:
D273-D27D (11 bytes) - Nombre del entrenador que capturó al Pokémon 1 del equipo D27E-D288 (11 bytes) - Nombre del entrenador que capturó al Pokémon 2 del equipo D289-D293 (11 bytes) - Nombre del entrenador que capturó al Pokémon 3 del equipo D294-D29E (11 bytes) - Nombre del entrenador que capturó al Pokémon 4 del equipo D29F-D2A9 (11 bytes) - Nombre del entrenador que capturó al Pokémon 5 del equipo D2AA-D2B4 (11 bytes) - Nombre del entrenador que capturó al Pokémon 6 del equipo
- Lo mismo ocurre con el mote de cada Pokémon
D2B5-D2BF - Mote del Pokémon 1 del equipo D2C0-D2CA - Mote del Pokémon 2 del equipo D2CB-D2D5 - Mote del Pokémon 3 del equipo D2D6-D2E0 - Mote del Pokémon 4 del equipo D2E1-D2EB - Mote del Pokémon 5 del equipo D2EC-D2F6 - Mote del Pokémon 6 del equipo
Pokédex
[editar]D2F7 - Capturado 1-8 D2F8 - Capturado 9-16 D2F9 - Capturado 17-24 D2FA - Capturado 25-32 D2FB - Capturado 33-40 D2FC - Capturado 41-48 D2FD - Capturado 49-56 D2FE - Capturado 57-64 D2FF - Capturado 65-72 D300 - Capturado 73-80 D301 - Capturado 81-88 D302 - Capturado 89-96 D303 - Capturado 97-104 D304 - Capturado 105-112 D305 - Capturado 113-120 D306 - Capturado 121-128 D307 - Capturado 129-136 D308 - Capturado 137-144 D309 - Capturado 145-152
D30A - Visto 1-8 D30B - Visto 9-16 D30C - Visto 17-24 D30D - Visto 25-32 D30E - Visto 33-40 D30F - Visto 41-48 D310 - Visto 49-56 D311 - Visto 57-64 D312 - Visto 65-72 D313 - Visto 73-80 D314 - Visto 81-88 D315 - Visto 89-96 D316 - Visto 97-104 D317 - Visto 105-112 D318 - Visto 113-120 D319 - Visto 121-128 D31A - Visto 129-136 D31B - Visto 137-144 D31C - Visto 145-152
Items
[editar]D31D - Total de Items D31E - Item 1 D31F - Item 1 cantidad D320 - Item 2 D321 - Item 2 cantidad D322 - Item 3 D323 - Item 3 cantidad D324 - Item 4 D325 - Item 4 cantidad D326 - Item 5 D327 - Item 5 cantidad D328 - Item 6 D329 - Item 6 cantidad D32A - Item 7 D32B - Item 7 cantidad D32C - Item 8 D32D - Item 8 cantidad D32E - Item 9 D32F - Item 9 cantidad D330 - Item 10 D331 - Item 10 cantidad D332 - Item 11 D333 - Item 11 cantidad D334 - Item 12 D335 - Item 12 cantidad D336 - Item 13 D337 - Item 13 cantidad D338 - Item 14 D339 - Item 14 cantidad D33A - Item 15 D33B - Item 15 cantidad D33C - Item 16 D33D - Item 16 cantidad D33E - Item 17 D33F - Item 17 cantidad D340 - Item 18 D341 - Item 18 cantidad D342 - Item 19 D343 - Item 19 cantidad D344 - Item 20 D345 - Item 20 cantidad D346 - Item Fin de la Lista
- El límite de objetos que se pueden tener encima es 20.
- Los items siempre están ordenados al principio de la lista. Nunca están salteados. Hacerlo dejaría huecos vacíos.
Dinero
[editar]D347-D349 (3 bytes invertidos): Dinero
- El dinero se codifica en 3 bytes. A efectos de computación, esto es que es posible representar un valor desde 0 hasta 16777215. Pero el juego sólo permite un valor máximo de 999999 monedas.
Nombre del rival
[editar]D34A-D351 : Nombre del Rival
Pokémon Flags
[editar]Conforme vamos avanzando en la historia de Pokémon, vamos realizando ciertas acciones que sólo se pueden realizar una sola vez. Por ejemplo, luchar contra un entrenador, derrotar al lider de un gimnasio, recoger un objeto en el suelo... una vez que hemos completado estas acciones, no volvemos a poder realizarlas porque se han registrado como hechas. A esto es lo que llamamos banderas: Pequeños bits de información que nos dicen si ya hemos realizado una acción para no repetirla.
D5B0 - ¿Qué Pokéballs están encima de la mesa del Profesor Oak? (Aunque estén encima, no podrás cogerlas si está marcado el byte de elección) * Bit 3 = Pokéball 3 [0 = Presente, 1 = Ausente] * Bit 4 = Pokéball 2 * Bit 5 = Pokéball 1 * Bit 6 = 1ª lucha contra rival [0 = no, 1 = Sí] D5C7 - ¿Articuno está visible en la cueva de las Islas Espuma? (bit 5) [0 = Sí; 1 = No] (ver también D887) D71A - ¿Qué Pokémon escogió tu Rival? [B0 = Charmander, B1 = Squirtle, 99 = Bulbasaur] (Este valor repercute en todos los encuentros con el Rival) D71C - ¿Qué Pokémon has escogido al inicio del juego? (Aunque modifiques el valor, el Pokémon no cambia) D750 - ¿Puedes coger una Pokéball de la mesa del Profesor Oak? ¿Has realizado tu primera lucha contra el rival? ¿Posees la Pokédex? * Bit 1 = ? * Bit 2 = ? * Bit 3 = ¿Poseo la Pokédex? [0 = No, 1 = Sí] * Bit 4 = ? * Bit 5 = ¿Debes entregar el correo a Oak? * Bit 6 = * Bit 7 = * Bit 8 = D887 - ¿Has luchado anteriormente contra Articuno? (bit 6) [0 = No; 1 = Sí] (ver también D5C7)
D808 - Barco SS. Anne [0 = El barco está presente, 02 = El barco está presente, y has recibido la MO., 03 = El barco está preparado para zarpar en cuanto lo abandones, 1F = El barco ha zarpado y no puedes volver a entrar) D890 - ID del Pokémon común que debe aparecer salvaje en la hierva.
Savegame
[editar]Checksum
[editar]3523 - Checksum
Este es un valor muy importante en el fichero de la partida salvada. Representa un valor de control que es el resultado de sumar todos los valores desde el nombre de entrenador (0x2598) hasta la última caja en el PC de BILL (0x3522).
Si este valor no coincide con la suma de todos los valores, el juego considerará que la partida está corrompida, y no permitirá continuar la partida. Se borrarán todos los datos.
Para calcular el checksum hay que seguir los siguientes pasos:
- Leer los 3979 bytes desde 0x2598 hasta 0x3522 (ambos inclusive).
- Sumar todos los valores.
- Invertir el valor binario resultante, es decir, los 1 pasan a ser 0, y los 0 a ser 1 (^ / XOR)
- Nos quedamos exclusivamente con los 8 bits finales del resultado (el último byte, o los 2 últimos valores en hexadecimal). (& / AND)
- El valor resultante debe ser grabado en la posición 0x3523
checksum = 0; for (i = 0x2598; i <= 0x3522; i = i + 1) { checksum = checksum + readbyte(i) } checksum = checksum NOT 0xFF checksum = checksum AND 0xFF
Comprobación al continuar partida:
¿Es el valor de checksum igual que el almacenado en la dirección 0x3523? Sí: Correcto. No: Datos corrompidos. Juego nuevo.
La comprobación de la integridad de la partida salvada sólo se realiza al iniciar el juego. Si modificas los datos en la memoria RAM durante el juego, no hay que preocuparse por el checksum. Al utilizar GUARDAR, se escriben todas las modificaciones que hayamos realizado y finalmente se calcula automáticamente el nuevo checksum correcto.