Registrarse

[Otros] FR | Añadiendo el objeto "Ability Capsule"

Lunos

Enfrentando a La Organización
Miembro insignia
Holi. En este tutorial aprenderemos a implementar el objeto "Ability Capsule" en nuestra ROM, que fue incorportado en Pokémon X/Y.
Este objeto nos permite cambiar la Habilidad #1 de un Pokémon, por su Habilidad #2.
Los creditos van para Spherical Ice quien creó el metodo y lo posteó justo aqui.
Dicho eso, empecemos.

Requisitos:
-ROM de Pokémon Fire Red v1.0 (USA)
-Editor Hexadecimal y editor de texto de nuestra preferencia (Como siempre, yo usaré HxD y Notepad)
-Editor de Objetos (Yo usaré Item Manager)
-Compilador de HackMew al que pueden encontrar justo aqui.

Instrucciones:

1)
Copiamos y pegamos en un archivo de texto esta Rutina ASM.
Nota: XXXXXX = Offset con al menos 508 Bytes de espacio vacio en nuestra ROM. En mi caso, será 71A250.

Acto seguido, ponemos nuestro archivo de texto en la carpeta donde tenemos el compilador de HackMew.
Nota: de preferencia ponganle un nombre sencillo de recordar. En mi caso será "abilitycapsuleFR.txt".

2)
Shift + Click Derecho en la carpeta donde tenemos el compilador de HackMew > Abrir Ventana de Comandos Aqui
Ahi escribimos: "thumb (nombre del archivo con nuestra rutina).txt" y presionamos Enter.
Ej: En mi caso seria "thumb abilitycapsuleFR.txt"
Esto creará un archivo .bin que tendrá el mismo nombre que nuestro archivo de texto.

Importante: Al abrir dicho archivo veremos 00s a patadas.
Borrenlos a todos excepto al ultimo, que estará en el mismo offset que le hayamos dado a la rutina en el Paso 1.

Ej: Si yo usé el Offset 71A250 en el Paso 1, una vez compilada la rutina tendré un .bin que tendrá 00s hasta el offset 71A251.
El que está en 71A250 lo dejo, y elimino todos los anteriores.

Tras eso, mi resultado seria:
Código:
00 B5 00 06 00 0E 69 4A 78 49 11 60 70 4B 00 F0 A9 F8 08 BC 18 47 F0 B5 0E 1C 00 06 05 0E 60 48 40 7A 64 21 48 43 5B 49 44 18 20 1C 0B 21 64 4B 00 F0 98 F8 5E 49 09 68 1C 22 50 43 09 18 88 7D C9 7D 88 42 05 D0 00 28 03 D0 00 29 01 D0 00 24 00 E0 01 24 05 20 5C 4B 00 F0 84 F8 00 2C 12 D0 00 20 08 70 60 48 01 21 5C 4B 00 F0 7B F8 02 20 58 4B 00 F0 77 F8 4C 49 A8 00 40 19 C0 00 40 18 31 1C 01 60 6C E0 28 1C 55 4B 00 F0 6B F8 47 49 57 48 08 60 64 E0 F0 B5 00 06 05 0E 40 48 40 7A 64 21 48 43 3B 49 44 18 20 1C 2E 21 44 4B 00 F0 59 F8 00 06 00 0E 01 21 48 40 37 4A 10 70 20 1C 2E 21 40 4B 00 F0 4E F8 01 20 36 49 08 70 33 48 00 88 01 21 3D 4B 00 F0 45 F8 20 1C 2A 49 3E 4B 00 F0 40 F8 20 1C 29 49 42 4B 00 F0 3B F8 28 4C 20 1C 41 49 31 4B 00 F0 35 F8 20 1C 01 21 37 4B 00 F0 30 F8 02 20 33 4B 00 F0 2C F8 26 49 2A 1C 90 00 40 19 C0 00 40 18 32 49 01 60 20 E0 F0 B5 04 1C 0D 1C 0B 21 26 4B 00 F0 1C F8 00 04 06 0C 20 1C 2E 21 22 4B 00 F0 15 F8 00 06 01 0E 30 1C 1C 22 50 43 1A 4A 12 68 12 18 16 32 50 5C 0D 21 48 43 18 49 09 68 09 18 28 1C 17 4B 00 F0 02 F8 F0 BC 08 BC 18 47 00 FD 02 B4 E7 00 BB D6 DD E0 DD E8 ED FE D7 DC D5 E2 DB D9 D8 00 E8 E3 00 FD 03 AB FC 09 FF 00 C0 46 D0 1C 02 02 F0 1C 02 02 18 1D 02 02 84 42 02 02 D0 70 03 02 30 AD 03 02 A0 B0 03 02 C0 B0 03 02 90 50 00 03 98 5E 00 03 BC 01 00 08 C0 01 00 08 85 8D 00 08 CD 8F 00 08 E9 FB 03 08 7D 03 04 08 CD 22 07 08 D9 A1 09 08 D1 16 0A 08 A5 67 0F 08 E1 02 12 08 F9 02 12 08 C1 4D 12 08 BD 55 12 08 DC 69 41 08 67 A2 71 08 E7 A2 71 08 6F A3 71 08 B7 A3 71 08
Sé que es molesto, pero no hay de otra. Asi es como está escrita la rutina y yo no soy un ASMago.

3)
Tras haber removido los 00s innecesarios, vamos a copiar el contenido de nuestro .bin y lo pegaremos en nuestra ROM mediante Ctrl+B en el mismo offset con el cual reemplazamos XXXXXX dentro de la rutina en el Paso 1. En mi caso, 71A250.

4)
Crearemos un objeto con el editor de objetos, los parametros relevantes son: Index Number, Type y Field Usage.

Index Number: +1 al del objeto que venga antes.
Ej: Yo pondré la capsula en el espacio vacio despues del Green Shard, que es el Objeto 0x33. Por ende la capsula será el 0x34.
Type: 01 (Out-of-battle)
Field Usage: Offset utilizado en los Pasos 1 y 3, +1.
Ej: Yo puse la rutina en 71A250, por lo cual, tendré que usar 871A251.
Nota: El 8 al inicio del Field Usage yo lo necesito por como funciona Item Manager.
Podria no ser necesario con otros editores.


5)
Guardar y probar.

Aqui una muestra del resultado.


Y eso fue todo.​
 
Última edición:

kakarotto

Leyenda de WaH
re: FR | Añadiendo el objeto "Ability Capsule"

Este si que es un gran tutorial! Lo malo (o quiza es bueno)es que esta hecho como si fuera un item de usar y tirar.

Gracias por este tuto, puede que me sea útil
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: FR | Otros | Añadiendo el objeto "Ability Capsule"

Este si que es un gran tutorial! Lo malo (o quiza es bueno)es que esta hecho como si fuera un item de usar y tirar.

Gracias por este tuto, puede que me sea útil
Siempre lo puedes hacer un Objeto Clave.
EDITO 18/07/2018: Soy un boludo, ignoren este post.
 
Última edición:

Neon Skylar

Rojo Fuego User
re: FR | Añadiendo el objeto "Ability Capsule"

Lo coloco como un key item pero aun asi se desaparece, me equivoque en algo? segui todos los pasos
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: FR | Otros | Añadiendo el objeto "Ability Capsule"

Lo coloco como un key item pero aun asi se desaparece, me equivoque en algo? segui todos los pasos
Considerando que a mi me funcionó lo mas tranquilamente como puedes apreciar en el post anterior al tuyo, diria que si, algo tuviste que haber hecho mal.
Por ejemplo, ¿que tipo de función le diste a tu objeto? ¿Seguro que es el Tipo 01 "Out-of-battle"?

EDITO 18/07/2018: Soy un boludo, ignoren este post.]
 
Última edición:

Neon Skylar

Rojo Fuego User
Re: Respuesta: Re: FR | Otros | Añadiendo el objeto "Ability Capsule"

Considerando que a mi me funcionó lo mas tranquilamente como puedes apreciar en el post anterior al tuyo, diria que si, algo tuviste que haber hecho mal.
Por ejemplo, ¿que tipo de función le diste a tu objeto? ¿Seguro que es el Tipo 01 "Out-of-battle"?
Si, lo colo que como tipo 1 y a su vez como key item, ya lo he intentado mas de 5 veces y aun desaparece cuando lo uso...
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: Respuesta: Re: FR | Otros | Añadiendo el objeto "Ability Capsule"

Si, lo colo que como tipo 1 y a su vez como key item, ya lo he intentado mas de 5 veces y aun desaparece cuando lo uso...
Estoy empezando a creer que soy un pelotudo y al script que escribí originalmente del NPC que me daba la Ability Capsule le puse que me diera como 99, porque tenés razón, inserté todo de nuevo y la capsula desaparece.
Cometí un error muy boludo y me disculpo por ello :awesome:
 

Neon Skylar

Rojo Fuego User
Re: Respuesta: Re: Respuesta: Re: FR | Otros | Añadiendo el objeto "Ability Capsule"

Estoy empezando a creer que soy un pelotudo y al script que escribí originalmente del NPC que me daba la Ability Capsule le puse que me diera como 99, porque tenés razón, inserté todo de nuevo y la capsula desaparece.
Cometí un error muy boludo y me disculpo por ello :awesome:
No hay problema, yo espero que actualices el post :D
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: Respuesta: Re: Respuesta: Re: FR | Otros | Añadiendo el objeto "Ability Capsule"

No hay problema, yo espero que actualices el post :D
Eh.. tecnicamente no hay nada que actualizar, lol.
Ability Capsule es un objeto de un uso por pieza, asi funciona en los juegos oficiales y me imagino que asi es como Spherical Ice queria que funcionase. Asi como está, funciona correctamente.
 

Rubire4

Usuario mítico
Respuesta: FR | Otros | Añadiendo el objeto "Ability Capsule"

Comento para hacer unos pequeños aportes.

Para traducir el texto que aparece cuando usamos el objeto (Este):

[PKMN]'s Ability
changed to [ABILITY]!
Tendremos que ir a la sección llamada "abilitycapsule_str:". En la segunda línea de esa sección veremos lo siguiente:

Código:
.byte 0xFD, 0x02, 0xB4, 0xE7, 0x00, 0xBB, 0xD6, 0xDD, 0xE0, 0xDD, 0xE8, 0xED, 0xFE, 0xD7, 0xDC, 0xD5, 0xE2, 0xDB, 0xD9, 0xD8, 0x00, 0xE8, 0xE3, 0x00, 0xFD, 0x03, 0xAB, 0xFC, 0x09, 0xFF
Tendremos que sustituir ese código por este:

Código:
.byte 0x52, 0xC6, 0xD5, 0x00, 0xC2, 0xD5, 0xD6, 0xDD, 0xE0, 0xDD, 0xD8, 0xD5, 0xD8, 0x00, 0xD8, 0xD9, 0x00, 0xFD, 0x02, 0xFE, 0xDC, 0xD5, 0x00, 0xD7, 0xD5, 0xE1, 0xD6, 0xDD, 0xD5, 0xD8, 0xE3, 0x00, 0xD5, 0x00, 0xFD, 0x03, 0xAB, 0xFC, 0x09, 0xFF
Que significa:

¡La Habilidad de [PKMN]
ha cambiado a [ABILITY]!
Sin embargo hay que tener en cuenta que la nueva rutina ya no pesa 0x1FC bytes, sino 0x204 bytes.
Aquí se ve cómo queda en el juego:


Además, otra cosa que quería comentar era que si usáis el parche de traducción de @CompuMax, el texto que dice "No tendrá ningún efecto" está cambiado de offset, y si no se cambia en la rutina el texto en los Pokémon a los que no les afecte el objeto mostrará algo como ". ESP.". Para dejar el típico "No tendrá ningún efecto" tendremos que modificar también la rutina antes de compilarla.
Vamos a abajo del todo, la última línea, la que se llama "no_effect_str". Ahí modificaremos la parte que dice:

Código:
.word 0x084169DC
Por:

Código:
.word 0x084169EC
Aquí se ve el resultado:


PD: Gracias por traer el tutorial aquí @Lunos, siempre se agradecen estos aportes ;)
 
Última edición:
Arriba