A continuación les traigo una recopilación de modificaciones o mini hacks para la Fire Red v1.0. La mayoría han sido extraídos del siguiente tema:
Quick Research & Development Thread
Así que los créditos van a sus respectivos autores. A excepción de algunos investigados y realizados por mi.
No los he probado todos y he extraído los que que realmente sugieren un cambio en el funcionamiento de mecánicas o sistemas en el juego o implementan algunos nuevos. He obviado aquellas publicaciones donde solo se da información o explican el funcionamiento de algo y algunas que me han parecido, por decirlo de alguna manera, insignificantes.
La estructura en genaral es la siguiente:
Donde:
Offset es la dirección de los datos en la ROM
Bytes por defecto es la información por defecto que trae esa dirección, en caso de querer revertir el cambio
Cambiar por es la información que deben sustituir en la ROM para aplicar la modificación.
Para terminar recordemos algunos términos para facilitar el contenido del tema:
Little-Endian
Según Wikipedia El término inglés endianness ("extremidad") designa el formato en el que se almacenan los datos de más de un byte en un ordenador. A pesar de que el procesador de la GBA está diseñado para trabajar con los dos formatos, Big-Endian y Little-Endian al parecer está programado para trabajar con éste último.
Este formato de almacenamiento de datos lo que implica es que el primer byte leído tendrá menos prioridad que el siguiente que se lea, es decir, si el procesador lee AA y luego BB, el procesador lo interpretará como BB AA. De ahí que tengamos que escribir datos, como punteros por ejemplo, en este orden. Luego cuando se diga escribir el puntero en formato Little-Endian no es más que pasarlo en su forma reversa o como sea que lo conozcan.
Modo THUMB
La CPU de la GBA tiene 2 sets de instrucciones, llamadas ARM y THUMB, para que el procesador entienda que una rutina está programada en un modo u otro sólo se debe setear o no el primer bit del puntero a dicha rutina para que éste identifique si se trata de una rutina ARM o THUMB. Dicho de una forma más comprensible si se tiene una rutina en el offset 0x08224488 y deseamos guardar su puntero para un uso posterior, debemos sumarle uno (1) a dicho offset si se trata de una rutina THUMB o dejarla tal cual si se trata de una rutina ARM.
Offset Alineado
Se le llama Offset Alineado a aquellas direcciones de memoria que son múltiplos de palabras o words de un procesador. Debido a que el procesador de la GBA es de 32 bits, cada word tiene una longitud de 32 bits o 4 bytes, por lo tanto sus offsets alineados corresponden a aquellos terminados en 0, 4, 8 o C en el editor hexadecimal.
Ahora, si se dice: Escribir el puntero en formato Little-Endian en modo THUMB en un Offset Alineado sería agregarle uno al puntero, pasarlo a modo reverso y escribirlo en un offset que termine en 0, 4, 8 o C. Ejemplo:
Ahora a lo que vinimos:
Al iniciar un juego se comienza con $3000 = 0x0BB8 en Little-Endian es B8 0B.
Para ajustar el dinero inicial pasar de decimal a hexadecimal y escribir en formato Little-Endian
Ejemplo: Empezar con $50.000 = 0x50C3 entonces escribimos C3 50 en 0x054B60 y listo!
Autor: DiegoIsAwesome y CompuMax Fuente
Estos valores van divididos entre 8 ya que se calculan numeros de tiles
Autor: Deokishisu Fuente
Reemplazar por 05, la cantidad máxima de dígitos
Luego en 0x09B47A cambiar 64 por 69 (es una coordenada x así que no estoy seguro si este valor es exacto o no)
Autor: BluRose Fuente
Autor: jirachiwishmaker Fuente
Autor: Taの境界 Fuente
Autor: JPAN Fuente
Autor: Spherical Ice Fuente.
Autor: Darthatron Fuente.
Esto ha sido todo por ahora.
Finalmente si alguien desea aportar algún otro fix o mini hack, lo puede dejar en los comentarios y con gusto lo agregaré. Tambien pueden reportar cualquier error con la redacción o el funcionamiento de las modificaciones ya que no las he comprobado todas.
¡Saludos!
CompuMax
Quick Research & Development Thread
Así que los créditos van a sus respectivos autores. A excepción de algunos investigados y realizados por mi.
No los he probado todos y he extraído los que que realmente sugieren un cambio en el funcionamiento de mecánicas o sistemas en el juego o implementan algunos nuevos. He obviado aquellas publicaciones donde solo se da información o explican el funcionamiento de algo y algunas que me han parecido, por decirlo de alguna manera, insignificantes.
La estructura en genaral es la siguiente:
Código:
Offset = 0xAAAAAA
Bytes por defecto: BB BB BB BB
Cambiar por: CC CC CC CC
Offset es la dirección de los datos en la ROM
Bytes por defecto es la información por defecto que trae esa dirección, en caso de querer revertir el cambio
Cambiar por es la información que deben sustituir en la ROM para aplicar la modificación.
Para terminar recordemos algunos términos para facilitar el contenido del tema:
Little-Endian
Según Wikipedia El término inglés endianness ("extremidad") designa el formato en el que se almacenan los datos de más de un byte en un ordenador. A pesar de que el procesador de la GBA está diseñado para trabajar con los dos formatos, Big-Endian y Little-Endian al parecer está programado para trabajar con éste último.
Este formato de almacenamiento de datos lo que implica es que el primer byte leído tendrá menos prioridad que el siguiente que se lea, es decir, si el procesador lee AA y luego BB, el procesador lo interpretará como BB AA. De ahí que tengamos que escribir datos, como punteros por ejemplo, en este orden. Luego cuando se diga escribir el puntero en formato Little-Endian no es más que pasarlo en su forma reversa o como sea que lo conozcan.
Modo THUMB
La CPU de la GBA tiene 2 sets de instrucciones, llamadas ARM y THUMB, para que el procesador entienda que una rutina está programada en un modo u otro sólo se debe setear o no el primer bit del puntero a dicha rutina para que éste identifique si se trata de una rutina ARM o THUMB. Dicho de una forma más comprensible si se tiene una rutina en el offset 0x08224488 y deseamos guardar su puntero para un uso posterior, debemos sumarle uno (1) a dicho offset si se trata de una rutina THUMB o dejarla tal cual si se trata de una rutina ARM.
Offset Alineado
Se le llama Offset Alineado a aquellas direcciones de memoria que son múltiplos de palabras o words de un procesador. Debido a que el procesador de la GBA es de 32 bits, cada word tiene una longitud de 32 bits o 4 bytes, por lo tanto sus offsets alineados corresponden a aquellos terminados en 0, 4, 8 o C en el editor hexadecimal.
Ahora, si se dice: Escribir el puntero en formato Little-Endian en modo THUMB en un Offset Alineado sería agregarle uno al puntero, pasarlo a modo reverso y escribirlo en un offset que termine en 0, 4, 8 o C. Ejemplo:
Código:
Puntero: 08 22 44 88
Modo THUMB: 08 22 44 89
Little-Endian: 89 44 22 08
Ahora a lo que vinimos:
Como todos sabrán al llevar uno o más huevos en el equipo e ir a curar a los pokémon en un Centro Pokémon, se muestra en la máquina la cantidad total de los pokémon que llevamos en nuestro equipo incluyendo los huevos. Con el siguiente cambio lo que estamos haciendo es reemplazar la función que cuenta los pokémon de nuestro equipo por otra que cuenta los pokémon excepto los huevos. Haciendo que aparezca en la máquina las pokéball correspondientes a los pokémon de nuestro equipo exceptuando los huevos.
Autor: Sagiri Fuente
Código:
Offset = 0x083B8E
Bytes por defecto: BD F7 55 F8
Cambiar por: 08 F0 D5 FA
Con esta modificación lo que vamos a hacer es ignorar la configuración que tenga el juego en el Tipo de Combate y evitará que pregunte si deseas cambiar de pokémon una vez derrotes algún pokémon enemigo, agregando un poco de dificultad a los combates.
Autor: DoesntKnowHowToPlay Fuente
Código:
Offset = 0x1D8727
Bytes por defecto: 2B 04 D0 3D 02
Cambiar por: 28 92 87 1D 08
Primero insertar el siguiente script de batalla en cualquier parte:
FE F4 03 02 es el puntero de la RAM donde se almacenará el byte que determinará si se usa o no el modo Mantener.
Luego en 0x1D8727 colocar 28 XX XX XX XX, donde XX XX XX XX es el puntero al script de batalla que se insertó anteriormente.
Uso:
Nota: Asegurarse de escribir un writebytetooffset 0x0 0x203F4FE despues de las batallas para que no se use el modo MANTENER por siempre
Autor: Squeetz Fuente
Código:
29 00 FE F4 03 02 AA 92 87 1D 08 2B 04 D0 3D 02 02 00 00 40 00 92 87 1D 08 28 35 87 1D 08
Luego en 0x1D8727 colocar 28 XX XX XX XX, donde XX XX XX XX es el puntero al script de batalla que se insertó anteriormente.
Uso:
Código:
writebytetooffset 0xAA 0x203F4FE
Autor: Squeetz Fuente
Con esta modificación haremos que nuestro juego corra más rápido al usar el Modo Turbo en la Visual Voy Advance
Autor: NewDenverCity Fuente
Código:
Offset = 0x000890
Bytes por defecto: 00 B5 09 4A 91 8B 09 48 08 40 91 8B 90 83 91 8B 01 20 08 40 00 28 05 D1 01 23 91 8B
Cambiar por: 00 B5 05 4A 13 88 01 20 83 43 13 80 02 DF 13 88 03 42 FB D0 00 BD C0 46 0C 31 00 03
Como se habrán dado cuenta los Nidoran son la única especie de pokémon que cuentan con su identificador de género en su nombre. Para eliminar esta preferencia y añadirles el indicador de género después del nombre como los demás, solo basta con hacer los siguientes cambios:
Finalmente reemplazar el símbolo al final del nombre de los Nidoran por el byte FF
Autor: Sagiri Fuente
Código:
Offset = 0x136238
Bytes por defecto: 20 2C 01 D0 1D
Cambiar por: 00 2C 01 D0 00
Offset = 0x1218E4
Bytes por defecto: 20 2C 01 D0 1D
Cambiar por: 00 2C 01 D0 00
Offset = 0x049718
Bytes por defecto: 1D 28 01 D0 20
Cambiar por: 00 92 87 1D 00
Autor: Sagiri Fuente
Como el título lo dice, escribir este valor en esa dirección de la RAM nos permitirá correr sin necesidad de mantener presionado el botón B. Para ello se puede hacer mediante un script.
Nota: Si se entra en uno de los menús, se tiene una batalla o se usa un warp, el efecto desaparece.
Autor: sonic1 Fuente
Código:
Escribir 02 en 0x02037078
Autor: sonic1 Fuente
Esta modificación nos permite correr en mapas de interiores como casas y edificios.
Autor: HackMew Fuente
Código:
Offset = 0xBD494
Byte por defecto: 08
Cambiar por: 00
Esta modificación elimina la necesidad de la activación de la flag de las zapatillas para correr.
Autor: Sagiri Fuente
Código:
Offset = 0x05BA3A
Bytes por defecto = 12 F0 49 FE
Cambiar por = 01 20 C0 46
El offset 0x078C1C contiene un número entero de 32-bits
Este valor indica la duración en cantidad de frames o fotogramas, La GBA opera aproximadamente a 60fps.
Su valor por defecto es 0x8B0A0000 que leído en Little-Endian se traduce a 0x00000A8B.
Luego A8B = 2699 y dividiendo entre los fps, se tiene: 2699/60 ≈ 45 segundos.
Para ajustar la duración a nuestro gusto solo basta con multiplicar la cantidad de segundos por los fps (60) y escribirlo en dicho offset en formato Little-Endian
Autor: DiegoIsAwesome y CompuMax Fuente
Este valor indica la duración en cantidad de frames o fotogramas, La GBA opera aproximadamente a 60fps.
Su valor por defecto es 0x8B0A0000 que leído en Little-Endian se traduce a 0x00000A8B.
Luego A8B = 2699 y dividiendo entre los fps, se tiene: 2699/60 ≈ 45 segundos.
Para ajustar la duración a nuestro gusto solo basta con multiplicar la cantidad de segundos por los fps (60) y escribirlo en dicho offset en formato Little-Endian
Autor: DiegoIsAwesome y CompuMax Fuente
Para mostrar el número de pokémon vistos en vez de los capturados en la pantalla de continuar como en la GEN IV. Hacer los siguientes cambios:
Autor: Jambo51 Fuente
Código:
Bytes por defecto: 01 20
Cambiar los valores en los siguientes offsets.
0x00CF56: 00 20
0x00CF64: 00 20
0x0F803C: 00 20
0x0F8044: 00 20
En el siguiente offset se encuentra la información donde parecerá el protagonista una vez pase la Liga Pokémon.
Se pueden ajustar estos valores para cambiar de destino
Autor: tkim Fuente
Código:
Offset = 0x3EEBF8
Bytes por defecto: 03 00 06 00 08 00 00 00
03 00 - Banco del Mapa
06 00 - Posición X
08 00 - Posición Y
00 00 - Número de Mapa
Autor: tkim Fuente
En el siguiente offset se encuentra la información donde aparecerá el protagonista una vez se inicie una nueva partida o Juego Nuevo.
A diferencia de la modificación anterior estos valores son de un solo byte.
Autor: DiegoIsAwesome y CompuMax Fuente
Código:
0x54A00: Posición Y
0x54A04: Banco del Mapa
0x54A06: Número de Mapa
0x54A08: Posición X
Autor: DiegoIsAwesome y CompuMax Fuente
Código:
Offset = 0x054B60
Bytes por defecto = B8 0B
Para ajustar el dinero inicial pasar de decimal a hexadecimal y escribir en formato Little-Endian
Ejemplo: Empezar con $50.000 = 0x50C3 entonces escribimos C3 50 en 0x054B60 y listo!
Autor: DiegoIsAwesome y CompuMax Fuente
Para aplicar efectos de tinte a la pantalla como escala de grises o sepia se debe escribir el el siguiente offset el byte correspondiente al efecto deseado.
Nota: Se necesita Refrescar la Pantalla para que los cambios tengan efecto
Autor: Shiny Quagsire Fuente
Código:
Offset = 0x02036E28
Sin efecto = 00
Efecto Gris = 01
Efecto Sepia = 02
Autor: Shiny Quagsire Fuente
Para refrescar completamente las paletas del Tileset se puede llamar la función mapdata_load_assets_to_gpu_and_full_redraw ubicada en 0x08055148, en modo THUMB.
Ejemplo:
Nota: Esta función solo refresca los backgrounds y no los sprites, por lo que si se usa en conjunto con la modificación Pantalla a Escala de Grises y Sepia solo aplicará el tinte al mapa y no a los sprites
Autor: CompuMax y Knizz por su IDB para IDA Pro
Ejemplo:
Código:
'--------------------
callasm 0x08055149
'--------------------
Autor: CompuMax y Knizz por su IDB para IDA Pro
Para refrescar completamente el overworld del protagonista se puede llamar la función 0x0805BE60 en modo THUMB.
Nota: Esta función solo refresca el sprite del protagonista y no el resto de los sprites, por lo que si se usa en conjunto con las modificaciones Pantalla a Escala de Grises y Sepia Refrescar Backgrounds solo aplicará el tinte al mapa y y al protagonista y no al resto de los sprites. De momento no le localizado alguna función que redibuje completamente todos los sprites. Por lo que si se quiere aplicar un tinte a todos los elementos del mapa, tanto backgrounds como sprites, es necesario hacer un warp
Autor: CompuMax y Knizz por su IDB para IDA Pro
Código:
Ejemplo:
'--------------------
callasm 0x0805BE61
'--------------------
Autor: CompuMax y Knizz por su IDB para IDA Pro
Para ajustar el nivel en que nacen los pokémon al eclosionar los huevos se debe escribir el mismo valor en hexadecimal en los siguientes offsets:
Donde XX es el valor del nivel a usar en hexadecimal
Autor: Jambo51 Fuente
Código:
Byte por defecto = 05
0x1375B0: XX
0x046CBE: XX
0x04623E: XX
Autor: Jambo51 Fuente
Para ajustar el números de pokémon vistos/capturados correspondientes a la pokédex regional es necesario hacer los siguientes cambios:
Luego cambiar por el número máximo de pokémon menos uno (-1) en hexadecimal
Autor: MrDollSteak Fuente
Código:
Offset = 0x104BF2
Byte por defecto = 96
Autor: MrDollSteak Fuente
Si se ajusta el números de pokémon vistos/capturados correspondientes a la pokédex regional, también es necesario ajustar el número de pokémon mostrados en las páginas de Hábitat en la Pokédex Regional, para ello hacer los siguientes cambios:
Luego cambiar por el número máximo de pokémon en hexadecimal
Autor: MrDollSteak Fuente
Código:
Offset = 0x106828
Byte por defecto = 97
Autor: MrDollSteak Fuente
Para remover el cheque de medallas para el uso de Movimientos Ocultos o MO es necesario aplicar los siguientes cambios:
Autor: Telinc1 Fuente
Código:
Offset = 0x124620
Bytes por defecto = 82 21 09 01 60 18 4A F7 53 F8
Cambiar por = 01 20 00 00 00 00 00 00 00 00
Los pokémon suelen huir mientras estamos en el Safari si les lanzamos piedras repetidas veces, con el siguiente cambio evitaremos que estos huyan incluso si llegamos a las 20 piedras lanzadas, cantidad máxima de lanzamientos que el juego permite antes de que el pokémon escape.
Autor: Shiny Quagsire Fuente
Código:
Offset = 0x169D4
Byte por defecto = 06
Cambiar por = 00
Al obtener o encontrar un objeto, Máquina Oculta o Máquina Técnica en el juego, se reproduce el mismo sonido que al subir un nivel. Para corregir esto es necesario hacer los siguientes cambios:
MSG_FIND o MSG_OBTAIN
Al conseguir una MT/MO
Ahora 01 01 corresponde al Fanfare 0x101
Luego reemplazar por los siguientes Fanfares:
0x102 Fanfare de Obtener Objeto
0x105 Fanfare de Obtener MT/MO
respectivamente. Ambos deben estar escrito en Little-Endian
Autor: RichterSnipes Fuente
MSG_FIND o MSG_OBTAIN
Código:
Offset = 0x1A6765
Bytes por defecto = 01 01
Código:
Offset = 0x1A6769
Bytes por defecto = 01 01
Luego reemplazar por los siguientes Fanfares:
0x102 Fanfare de Obtener Objeto
0x105 Fanfare de Obtener MT/MO
respectivamente. Ambos deben estar escrito en Little-Endian
Autor: RichterSnipes Fuente
La tabla se encuentra en el siguiente offset:
Cada entrada de la tabla está compuesta por 4 bytes. Los primeros 2 bytes son el índice
del objeto, los siguientes 2 bytes son las probabilidades de obtener el ítem más las
probabilidades del ítem del anterior.
Ajustar de acuerdo a las necesidades.
Nota: Por alguna razón el que debería ser el primer objeto está de útimo en la tabla
Autor: DoesntKnowHowToPlay Fuente
Código:
Offset = 0x250848
del objeto, los siguientes 2 bytes son las probabilidades de obtener el ítem más las
probabilidades del ítem del anterior.
Código:
8B 00 0F 00 = 15% (x0F = 15) probabilidad de Oran Berry (objeto x8B)
85 00 19 00 = 10% (x19 - x0F = xA, 10) probabilidad de Cheri Berry (objeto x85)
86 00 23 00 = 10% (x23 - x19 = xA, 10) probabilidad de Chesto Berry (objeto x86)
87 00 2D 00 = 10% (x2D - x23 = xA, 10) probabilidad de Cheri Berry (objeto x87)
88 00 37 00 = 10% (x37 - x2D = xA, 10) probabilidad de Rawst Berry (objeto x88)
89 00 41 00 = 10% (x41 - x37 = xA, 10) probabilidad de Aspear Berry (objeto x89)
8C 00 4B 00 = 10% (x4B - x41 = xA, 10) probabilidad de Persim Berry (objeto x8C)
2A 01 50 00 = 5% (x50 - x4B = x5) probabilidad de TM10 (objeto x12A)
45 00 55 00 = 5% (x55 - x50 = x5) probabilidad de PP Up (objeto x45)
44 00 5A 00 = 5% (x5A - x55 = x5) probabilidad de Rare Candy (objeto x44)
6E 00 5F 00 = 5% (x5F - x5A = x5) probabilidad de Nugget (objeto x6E)
A3 00 60 00 = 5% (x60 - x5F = x5) probabilidad de Spelon Berry (objeto xA3)
A4 00 61 00 = 1% (x61 - x60 = x1) probabilidad de Pamtre Berry (objeto xA4)
A5 00 62 00 = 1% (x62 - x61 = x1) probabilidad de Watmel Berry (objeto xA5)
A6 00 63 00 = 1% (x63 - x62 = x1) probabilidad de Durin Berry (objeto xA6)
A7 00 01 00 = 1% (x55 - x50 = x1) probabilidad de Belue Berry (objeto xA7)
Nota: Por alguna razón el que debería ser el primer objeto está de útimo en la tabla
Autor: DoesntKnowHowToPlay Fuente
Al entrar a un mapa se reproduce la musica que tengamos conigurada en el A-Map. Pero podemos reproducir otra diferente mediante scripts de nivel para ello haremos uso del comando de script playsong2.
Ejemplo:
Aquí se reproduce la música 0x15A si la variable 0x40C6 está seteada en 0x0 al entrar al mapa, de lo contrario reproduce la música por defecto configurada en A-Map.
Autor: Spherical Ice Fuente
Ejemplo:
Código:
'---------------
#dynamic 0x800000
'---------------
#org @start
compare 0x40C6 0x0
if 0x1 call @play_song
end
'---------------
#org @play_song
playsong2 0x15A
return
'---------------
Autor: Spherical Ice Fuente
El filtro aplicado en Hagamos Memoria es a Escala de Grises. Si queremos editar dicho filtro debemos ir a los siguientes offsets y aplicar el cambio correspondiente.
Cambiar ambos a 02 para Sepia o 00 para Normal
Autor: Desconocido, cualquier información al respecto será bien recibida
Código:
Offsets = 0x00572B0 y 0x057274
Autor: Desconocido, cualquier información al respecto será bien recibida
La tabla de punteros de los Text Box tipo 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, etc. se encuentra en el siguiente offset:
Sí, puedes usar XSE para descompilar estos scripts
y no dudes en agregar todo lo que desees... ¡permanentemente!
Por lo tanto, no tendrá que llamar al asm de transparencia en
cada secuencia de comandos que desee, sino automáticamente.
Autor: kearnseyboy6 Fuente
Código:
Offset = 0x160450
y no dudes en agregar todo lo que desees... ¡permanentemente!
Por lo tanto, no tendrá que llamar al asm de transparencia en
cada secuencia de comandos que desee, sino automáticamente.
Autor: kearnseyboy6 Fuente
Para cambiar el ajuste de las opciones al empezar un nuevo juego, solo basta con ir al offset correspondiente y hacer los ajustes necesarios aplicando cada una de las fórmulas.
VELOC. TEXTO - IMAGEN
SONIDO - TIPO COMBATE - ANIM. COMBATE
CONTROLES
Autor: Navenatox Fuente
VELOC. TEXTO - IMAGEN
Código:
Offset = 0x5496C
Escribir XX 20, donde XX = [VELOC. TEXTO] + [IMAGEN] * 8
VELOC. TEXTO: 0 = LENTA, 1 = MEDIA, 2 = RÁPIDA
IMAGEN: 0 = TIPO 1, 1 = TIPO 2, etc.
Código:
Offset = 0x5499C
Escribir XX 20, donde XX = [SONIDO] + [TIPO COMBATE] * 2 + [ANIM. COMBATE] * 4
SONIDO: 0 = MONO, 1 = ESTÉREO
TIPO COMBATE: 0 = CAMBIO, 1 = MENTENER
ANIM. COMBATE: 0 = SÍ, 1 = NO
Código:
Offset = 0x549A2
Escribir XX 20, donde XX = [CONTROLES]
CONTROLES: 0 = AYUDA, 1 = LR, 2 = L=A
Para remover o desactivar permanentemente el sistema de ayuda, basta con ir al siguiente offset y hacer el siguiente cambio.
Autor: GoGoJJTech Fuente
Código:
Offset = 0x13B8C2
Bytes por defecto = 1D D1
Cambiar por = 1D E0
Los Tipos de Imágen de los textos se encuentran organizados en una tabla, para buscar las imágenes y editarlas, basta con ir al siguiente offset:
Estructura [XX XX XX XX][YY YY YY YY]
Donde XX XX XX XX es el puntero de la imagen
y YY YY YY YY es el puntero de la paleta
Ambos descompridos
La tabla posee 10 entradas como se muestra en el submenú OPCIONES
Autor: Desconocido, cualquier información al respecto será bien recibida
Código:
Offset = 0x471E8C
Donde XX XX XX XX es el puntero de la imagen
y YY YY YY YY es el puntero de la paleta
Ambos descompridos
La tabla posee 10 entradas como se muestra en el submenú OPCIONES
Autor: Desconocido, cualquier información al respecto será bien recibida
Código:
Offset = 0x41F42D
Bytes por defecto = 02 0F 1A 04
AA BB CC DD
Donde AA Cordenada X
BB Coordenada Y
CC Ancho
DD Alto
Autor: Deokishisu Fuente
Los Pokémon están limitados a un total de 255 puntos de esfuerzo (EV por sus siglas en inglés) por estadística y 510 puntos de esfuerzo en total. Sin embargo, dado que las estadísticas se calculan dividiendo el esfuerzo entre 4 y sin tener en cuenta el resto, solo se requieren 252 puntos de esfuerzo para maximizar una estadística. En la Generación VI, el límite se cambió de 255 a 252, evitando el desperdicio de EV. Como resultado, la cantidad máxima de puntos de estadísticas adicionales que puede ser adquirida por el entrenamiento EV para una estadística dada es de 63. Para realziar este ajuste hay que ir a los siguienetes offsets y hacer el siguiente cambio:
Autor: Touched Fuente
Código:
Offsets = 0x0439FC y 0x043A02
Byte por defecto = FF
Cambiar por = FC
Como se sabe, cada Overworld Sprite tiene una dirección de datos con 0x24 bytes de datos.
El 14to byte determina que tipo de huella aparecerá cuando camines por la arena. El byte
debería tener alguno de los siguientes valores:
Cualquier otro valor puede causar que el juego se congele cuando camines en la arena.
Autor: Kalarie Fuente
El 14to byte determina que tipo de huella aparecerá cuando camines por la arena. El byte
debería tener alguno de los siguientes valores:
Código:
0x00 (Sin Huellas)
0x01 (Huellas)
0x02 (Huellas de Bicicleta)
Autor: Kalarie Fuente
Para hacer que el tiempo en el safari sea infinito debemos hacer el siguiente cambio:
El juego seguira tomando 600 pasos, pero estos nunca decrementaran
Autor: FamiliaWerneck Fuente
Código:
Offset = 0xA0F1A
Bytes por defecto = 01 38
Cambiar por = 00 38
Autor: FamiliaWerneck Fuente
Evitar que se borren al ser seleccionadas en la bolsa
Luego insertar el siguiente código en un offset alineado:
Donde XX XX XX XX es el puntero a la rutina anterior en modo THUMB
Con esta modificación no gastarás pokéball si no capturas un pokémon salvaje
Autor: FamiliaWerneck Fuente
Código:
Offset = 0xA1E30
Bytes por defecto = 01 38
Cambiar por = 00 38
Código:
Rutina que borra Pokeball
00 F0 04 F8 A1 46 F0 BC 01 BC 00 47 04 48 00 88 0C 28 02 D9 00 21 00 F0 01 F8 01 21 01 4A 10 47 30 AD 03 02 D9 A1 09 08
Offset = 0x2D924
Bytes por defecto = A1 46 F0 BC 01 BC 00 47
Cambiar por = 00 48 00 47 XX XX XX XX
Con esta modificación no gastarás pokéball si no capturas un pokémon salvaje
Autor: FamiliaWerneck Fuente
En el A-Map con la vista en modo profesional (CTRL+H) en el 5to byte del map header
De esta manera podemos ajustar en que lugares se puede usar vuelo y en cuales no
Autor: Chrunch Fuente
Código:
cambiar a 00 para activar vuelo
cambiar a 01 para desactivarlo
Autor: Chrunch Fuente
Código:
Offsets = 0x09B430 y 0x09B440
Byte por defecto = 04
Luego en 0x09B47A cambiar 64 por 69 (es una coordenada x así que no estoy seguro si este valor es exacto o no)
Autor: BluRose Fuente
Al darle a un NPC un byte de comportamiento 0xC, que corresponde a Oculto o Hidden en la Fire Red este crashea el juego al entrar a un mapa donde se encuentre ese NPC ya que el puntero a dicha funión está rellena de ceros. Para corregir esto hacer el siguiente cambio:
Si quieres ocultar el NPC como lo hace en RSE, poner en su lugar F1 31 06 08
Autor: CompuMax
Código:
Offset = 0x39FBF8
Bytes por defecto = 00 00 00 00
Cambiar por = B5 FF 05 08
Autor: CompuMax
Para deshabilitar permanentemente las descripciones de cada categoría del menú START. Solo se debe hacer el siguiente ajuste:
Autor: Deokishisu Fuente
Código:
Offset = 0x113034
Bytes por defecto = F0 F6 74 FF
Cambiar por = 00 00 00 00
Para quitar completamente la animación que se muestra al usar una Máquina Oculta como la barra negra, grito del pokémon, sprite y todo lo que se muestra al usar una MO fuera de batalla se debe hacer el siguiente cambio:
Autor: Spherical Ice Fuente
Código:
Offset = 0x860C2
Bytes por defecto = 06 20 FD F7 BE F9 3B 20 FD F7 97 FB
Cambiar por = 00 00 00 00 00 00 00 00 00 00 00 00
Al hacer nuestros hacks, las imágenes de lugares no suelen coincidir con nuestros nuevos lugares, a menos que no se edite la región. Para eliminar estas imágenes solo se debe hacer el siguiente cambio:
Autor: Telinc1 Fuente
Código:
Offset Bytes por defecto Cambiar por
0xF8121 06 00 0E 01 00 00 00 00
0xF8168 FF F7 D2 FF 00 00 00 00
0x56C96 A1 F0 81 FA 00 00 00 00
0xF82BE 00 F0 55 F9 00 00 00 00
Como sabran el Huevo Suerte o Lucky Egg en inglés, es un objeto que al ser equipado a un pokémon, éste obtendrá un 50% más de experiencia. Para editar este factor de ganancia tenemos los siguientes datos:
El 150 corresponde al 1.5 de experiencia ganada.
Luego cambiar por el nuevo factor de multiplicación por 100, pasado a hexadecimal. Ejemplo:
Para un factor de 2.0 = 2.0x100 = 200, pasado a hex sería 0xFA. Cambiar 96 por FA y tendremos un factor de multiplicación de 100% adicional de experiencia o 200% en total
Autor: AkameTheBulbasaur Fuente
Código:
Rutina que verifica la posesión del Huevo Suerte: 0x21DBA
Byte que determina el factor de multiplicación: 0x21DC2
Bytes por defecto = 96 o 150 en decimal
Luego cambiar por el nuevo factor de multiplicación por 100, pasado a hexadecimal. Ejemplo:
Para un factor de 2.0 = 2.0x100 = 200, pasado a hex sería 0xFA. Cambiar 96 por FA y tendremos un factor de multiplicación de 100% adicional de experiencia o 200% en total
Autor: AkameTheBulbasaur Fuente
Esta modificación evita que se pueda cancelar la evolución de un pokémon mientras este esté evolucionando.
Autor: Sagiri Fuente
Código:
Offset Bytes por defecto Cambiar por
0x043156 02 D1 02 E0
0x0CE90C 1C D1 1C E0
0x0CF566 17 D1 17 E0
0x126C26 47 F7 19 FB 00 28 18 D1 C0 46 C0 46 C0 46 C0 46
0x126C4C 08 D9 08 E0
En la GEN III, Protección, Detección y Aguante están buggeados.
Se supone que el juego lee la probabilidad de una tabla que tiene solo 4 entradas, por lo que lee datos basura después de la cuarta protección consecutiva.
Para obtener el comportamiento correcto, como el a partir de la GEN V, sin límite, hacer los siguientes cambios:
Si alguna vez logra obtener 16 protecciones consecutivas, fallará la siguiente debido a la precisión.
Autor: Mr.Pkmn Fuente
Se supone que el juego lee la probabilidad de una tabla que tiene solo 4 entradas, por lo que lee datos basura después de la cuarta protección consecutiva.
Para obtener el comportamiento correcto, como el a partir de la GEN V, sin límite, hacer los siguientes cambios:
Código:
Offset = 0x26FB6
Bytes por defecto = 04 7A 64 00 A4 18 1D F0 84 FF 21 88
Cambiar por = 01 7A 14 88 CC 40 1D F0 84 FF 21 1C
Autor: Mr.Pkmn Fuente
Cuando un pokémon es herido por quemaduras o está QUEMADO, pierde 1/8 de sus PS al final de cada turno. A partir de la séptima generación ahora el daño de la quemadura, pasa a ser solo de 1/16 de los PS totales. Para tener estos nuevos ajustes hacer el siguiente cambio:
Autor: Delta231 Fuente
Código:
Offset = 0x01856A
Bytes por defecto = 00
Cambiar por = 09
Un Pokémon paralizado tiene una probabilidad del 25% de no moverse en un turno debido a una parálisis total del mismo. Además la velocidad del Pokémon afectado por esta condición se reduce un 75%, dejándolo con solo el 25% de su velocidad original.
En la séptima generación ahora la parálisis pasa a reducir la velocidad del Pokémon al 50% de la original. Para tener estos nuevos ajustes hacer los siguientes cambios:
Autor: Delta231 Fuente
En la séptima generación ahora la parálisis pasa a reducir la velocidad del Pokémon al 50% de la original. Para tener estos nuevos ajustes hacer los siguientes cambios:
Código:
Offset Bytes por defecto Cambiar por
0x014E60 80 08 40 08
0x014F40 BF 08 7F 08
Piel Tosca es una habilidad que hiere a los Pokémon que usen un movimiento de contacto contra el poseedor de la habilidad. En la GEN III hace que el atacante pierda 1/16 de sus PS Máx. Pero a partir de la GEN IV el atacante pierde 1/8 de sus PS Máx. Para corregir esto hacer los siguientes cambios:
Autor: HidoranBlaze Fuente
Código:
Offset = 0x1AADA
Bytes por defecto = 00 09
Cambiar por = C0 08
Para eliminar el aumento de estadísticas provisto al obtener a medida que se obtienen las medallas, basta con hacer los siguientes cambios:
Velocidad
Ataque
Defensa
Ataque Especial
Defensa Especial
Autor: SP458 Fuente
Velocidad
Código:
Offset Bytes por defecto Cambiar por
0x014E1A 00 06 00 20
0x014F02 00 06 00 20
Código:
0x03EE24 00 06 00 20
Código:
0x03EE56 00 06 00 20
Código:
0x03EE8C 00 06 00 20
Código:
0x03EEC4 00 06 00 20
Para desbloquear la Pokédex Nacional automáticamente sin necesidad de activar la flag correspondiente, se pueden hacer el siguiente cambio:
Autor: Sagiri Fuente
Código:
Offset Bytes por defecto Cambiar por
0x06E25C 00 B5 0A 48 01 20 70 47
A pesar de que Buceo es una MO, en la Fire Red se puede borrar como cualquier otra MT, para darle un comportamiento de MO solo basta hacer el siguiente cambio:
Autor: Sagiri Fuente
Código:
Offset Byte por defecto Cambiar por
0x125AB6 06 07
Muchas veces solemos crear objetos que sustituyan los movimientos de las MO, por lo que ya no necesitaríamos usar dichos movimientos de los pokémon fuera de combate. Para eliminar las opciones de dichos movimientos del menú pokémon debemos hacer los siguientes cambios:
Autor: mbcm10ww Fuente
Código:
Offset Bytes por defecto Cambiar por
0x122A8C 0C 00
0x45A76E 94 00 00 00
Para habilitar o deshabilitar el uso de la bicicleta en un mapa solo debemos abrir el modo profesional en A-Map y en el Map Header o Cabecera del Mapa
ubicarse en el 25to byte (o el cuarto si contamos empezando por el final) y ajustar de acuerdo a las necesidades
Autor: aar2697 Fuente
ubicarse en el 25to byte (o el cuarto si contamos empezando por el final) y ajustar de acuerdo a las necesidades
Código:
00 = No se puede usar la bicicleta
01 = Se puede usar la bicicleta
Seguramente habrán notado que cuando se expanden los pokémon, no aparecen los nuevos pokémon agregados en A-Map, esto se debe a que el programa está diseñado para elegir entre las 412 especies que vienen por defecto en la GEN III.
Para que los pokémon expandidos aparezcan se debe hacer lo siguiente:
Convertir la nueva cantidad de pokémon a hexadecimal y pasarlo a Little-Endian, por ejemplo:
Ahora abrir A-Map con un editor hexadecimal e ir a los siguientes offsets dependiendo de la versión que usas.
Y cambiar 9C 01 = 019C = 412 por la nueva cantidad de pokémon para tu hack
Autor: Aryan 10 Fuente
Para que los pokémon expandidos aparezcan se debe hacer lo siguiente:
Convertir la nueva cantidad de pokémon a hexadecimal y pasarlo a Little-Endian, por ejemplo:
Código:
Nueva cantidad de pokémon: 548
Pasado a Hexadecimal: 02 24
En formato Little-Endian: 24 02
Código:
Para Advance Map 1.92 ir a D027C
Para Advance Map 1.95 Ir a 77DD5
Autor: Aryan 10 Fuente
En GEN III la experiencia se reparte en fracciones del 50% incluso al pokémon que batalló,
pero en la GEN VI los que participan obtienen 100% y el resto 50%
Para obtener estos resultados hacer los siguientes cambios:
Autor: Awakward./Trev Fuente
pero en la GEN VI los que participan obtienen 100% y el resto 50%
Para obtener estos resultados hacer los siguientes cambios:
Código:
Offsets Bytes por defecto Cambiar por
0x21C3A 29 1C 02 21
Encontrar Unowns fuera de las Cámaras Sete crashea el juego, para solucionarlo hacer los siguientes cambios:
Autor: Squeetz Fuente
Código:
Offset = 0x82A10
Bytes por defecto = C9 2C 13 D0
Cambiar por = 00 00 00 00
El índice de golpe crítico es la probabilidad que tiene un ataque de ser crítico. Según el índice de golpe crítico que tenga el Pokémon al atacar, tendrá más o menos probabilidad de causarlo. En todas las generaciones la probabilidad base de realizar un golpe crítico es del 6,25% (Indice 0), para todos los ataques que, en la descripción no aparezca "alta probabilidad de golpe crítico" o "suele ser crítico". El índice de golpe crítico no puede ser mayor de 4, ni menor de 0.
En la GEN III la tabla de índices de Golpes Críticos es la siguiente:
Pero en la GEN VI se actualizó a la siguiente tabla:
Para actualizar a la nueva tabla, hacer los siguientes cambios:
Autor: Chacha Dinosaur Fuente
En la GEN III la tabla de índices de Golpes Críticos es la siguiente:
Código:
I (Índice) 0 1 2 3 4
Ratio (%) 6,25% 12,5% 25% 33,3% 50%
Código:
I (Índice) 0 1 2 3 o más
Ratio (%) 6,25% 12,5% 50% 100%
Código:
Offset = 0x250530
Bytes por defecto = 10 00 08 00 04 00 03 00 02 00
Cambiar por = 10 00 08 00 02 00 01 00 01 00
En la GEN III un Golpe Crítico ocasiona 100% más de daño, pero en la GEN VI se redujo este porcentaje al 50%.
Para pasar de 2x a 1.5x como en la GEN VI, hacer los siguientes cambios:
Insertar la siguiente rutina en un espacio libre alineado:
Compilada:
En 0x1E5E4 colocar 00 4B 18 47 XX XX XX XX, donde XX XX XX XX es el puntero a la rutina anterior en modo THUMB en formato Little-Endian.
Luego insertar la siguiente rutina en un espacio libre alineado:
Compilada:
En 0x1E6DC colocar 00 4B 18 47 YY YY YY YY 00 00, donde YY YY YY YY es el puntero a esta última rutina en modo THUMB en formato Little-Endian
Autor: Chacha Dinosaur Fuente
Para pasar de 2x a 1.5x como en la GEN VI, hacer los siguientes cambios:
Insertar la siguiente rutina en un espacio libre alineado:
Código:
.align 2
.thumb
ldr r4, damage
ldr r1, crit
ldrb r1, [r1, #0x0]
add r1, r1, #0x1
mul r1, r0
lsr r1, r1, #0x1
ldr r3, return
bx r3
.align 2
damage: .word 0x02023D50
crit: .word 0x02023D71
return: .word 0x0801E5ED
Código:
03 4C 04 49 09 78 01 31 41 43 49 08 02 4B 18 47 50 3D 02 02 71 3D 02 02 ED E5 01 08
Luego insertar la siguiente rutina en un espacio libre alineado:
Código:
.align 2
.thumb
mov r1, #0x0
strh r1, [r6, #0x0]
ldr r1, crit
ldrb r1, [r1, #0x0]
add r1, r1, #0x1
mul r1, r0
lsr r1, r1, #0x1
ldr r3, return
bx r3
.align 2
crit: .word 0x02023D71
return: .word 0x0801E6E5
Código:
00 21 31 80 03 49 09 78 01 31 41 43 49 08 02 4B 18 47 C0 46 71 3D 02 02 E5 E6 01 08
Autor: Chacha Dinosaur Fuente
Uno de los bugs más conocidos de la Fire Red es el de la Categoría o Especies de Pokédex, y esto es si una categoría de Pokémon tiene dos palabras, la Pokédex solo mostrará erróneamente la primera palabra. Por ejemplo, mientras que la categoría de Beedrill es "Poison Bee Pokémon", aparece en el juego como "Poison Pokémon". Para corregir este fallo hacer el siguiente cambio:
Autor: HackMew Fuente
Código:
Offsets = 0x10583C y 0x105856
Byte por defecto = 00
Cambiar por = FF
En la GEN III, los datos de las Fortalezas Individuales o IV (por sus siglas en inglés) de un Pokémon se almacenan en un entero de 32 bits. Sin embargo, cuando se captura un Pokémon Errante, solo se transfieren los últimos 8 bits. Mientras que el HP IV no se ve afectado, el Pokémon solo puede tener un Ataque máximo de 7 IV y los otros IV siempre serán 0.
Para solucionar este glitch y almacenar los 32 bits correspondientes a sus IVs hay que hacer los siguientes cambios:
Autor: HackMew Fuente
Para solucionar este glitch y almacenar los 32 bits correspondientes a sus IVs hay que hacer los siguientes cambios:
Código:
Offsets Bytes por defecto Cambiar por
0x40A92 21 78 1F 20 0A 1C 21 68 69 60 20 E0
Debido a que se supone que Mew no debería ser capturado de manera salvaje, sino por eventos, este pokémon no tiene obediencia a menos que se le configure esta por script. Pero si queremos facilitar las cosas y que este obedezca al ser capturado debemos hacer los siguientes cambios:
Autor: NintendoBoyDX Fuente
Código:
Offset = 0x1D402
Bytes por defecto: 97
Cambiar por: 00
Al igual que en caso anterior, para corregir la obediencia de Deoxys es necesario hacer los siguientes cambios:
Autor: NintendoBoyDX Fuente
Código:
Offset = 0x1D3F0
Bytes por defecto: 88 42 0F D0
Cambiar por: 00 00 00 00
Todos sabemos que al entrar a una batalla el fondo o background, al igual que los entrenadores, el protagonista o el pokémon salvaje; lo que está en la mitad superior de la pantalla entra desde la izquierda hasta su parte más derecha y lo que está en la mitad inferior de la manera contraria, simulando un efecto rotatorio de la cámara al empezar el combate. Pero a la hora de insertar fondos que no tienen simetría horizontal no queda muy bien esa entrada. Para eliminar la animación de entrada del fondo basta con hacer la siguiente modificación:
Autor: CompuMax
Código:
Offsets Bytes por defecto Cambiar por
0x24EFE4 1C 00 00 04 D0 70 03 02
Código:
Offsets Bytes por defecto Cambiar por
0x09FDD4 3F 42 0F 00 FF C9 9A 3B
0x08A006 06 09
0x09FE52 06 09
0x09FE62 06 09
Código:
Offsets Bytes por defecto Cambiar por
0x11CE6E 0B D0 00 00
0x11CA2C 5A F7 78 FE 00 F0 0E FA
Código:
Offsets Bytes por defecto Cambiar por
0x0441D6 01 00
0x125AA8 01 00
Código:
Offsets Bytes por defecto Cambiar por
0x08C836 03 0F
Código:
Offsets Bytes por defecto Cambiar por
0x110F44 01 30 00 20
0x110F50 EF D9 C0 46
Esto ha sido todo por ahora.
Finalmente si alguien desea aportar algún otro fix o mini hack, lo puede dejar en los comentarios y con gusto lo agregaré. Tambien pueden reportar cualquier error con la redacción o el funcionamiento de las modificaciones ya que no las he comprobado todas.
¡Saludos!
CompuMax
Última edición: