Registrarse

[Otros] FR | Givepokemon Personalizable

Lunos

Enfrentando a La Organización
Holi <3
Si han leido este tema, sabrán que tecnicamente ahora, acabo de completar un Givepokemon Personalizado exitosamente.
¿Y que quiero hacer ahora?
Pues compartir como lo hice, con ustedes <3
(porque asi siento que estoy haciendo algo con mi vida en lugar de ser un pu.. vago)
Antes de comenzar, como siempre, los Creditos que en esta ocasión van totalmente para "Pokemon_xy" de PokeCommunity, pues él inventó esta preciosura y la compartió justo aqui <3

Prologo

(Lectura OBLIGATORIA para poder poner los Movimientos Personalizados al Pokémon)

Antes de poder correr nuestro Givepokemon Personalizado, necesitamos una Rutina especial creada por FBI, no se preocupen, es sencillisimo de insertar.

Todo lo que hay que hacer es insertar esta pieza de codigo, en un offset vacio:
Código:
0C B4 1B 48 1B 49 00 F0 21 F8 0C BC 00 28 1E D0 16 4D 00 24 29 1C 09 78 00 29 13 D0 02 21 61 43 49 19 09 88 40 46 14 4B 00 F0 1D F8 01 34 04 2C F0 D1 00 04 49 46 0D 0C 00 9B 10 49 48 45 05 D1 0F 49 08 47 0C 4B 00 F0 0E F8 F2 E7 08 47 40 46 21 1C 00 93 10 B4 08 4C 00 F0 06 F8 10 BC 00 04 49 46 0D 0C 07 4B 18 47 20 47 C0 46 BE 70 03 02 FF 40 00 00 69 E5 06 08 B1 E8 03 08 61 EA 03 08 57 EA 03 08 51 EA 03 08
Luego, debemos ir a "3EA46" y modificar los siguientes bytes por:
01 48 00 47 00 00 XX XX XX 08
Nota: "XX XX XX" es el Offset donde insertamos el Trozo anterior, convertido en un Pointer, +1.
¿Yo puse el trozo en 800000?
Entonces el Pointer será: 01 00 80 08
Es decir, el offset 800001

Y ya está, no hay que tocar nada mas relacionado con esto, ya que el Givepokemon Personalizado lo ejecutará automaticamente cuando sea necesario.

Y ahora si, una vez completado el Prologo..
¡Pasemos al platillo principal!

1) Insertamos el siguiente trozo de codigo, que es el Givepokemon Modificado
en un Offset Libre, en mi caso, 71A350:
Código:
F0 B5 88 B0 64 20 91 49 00 F0 1D F9 80 46 90 49 00 F0 19 F9 40 46 8F 49 00 F0 15 F9 8E 49 00 F0 12 F9 04 1C 8E 48 02 68 0A 32 16 1C 11 88 55 88 4D 40 8C 4B 5B 8B 88 49 00 F0 05 F9 00 F0 E8 F8 00 04 88 4A 20 32 14 80 20 43 00 21 85 4A 1C 32 10 60 40 46 81 4B 00 F0 F7 F8 40 46 7F 4B 01 21 32 1C 00 F0 F1 F8 40 46 7F 49 00 F0 EC F8 7D 4A 1C 32 10 80 40 46 09 21 78 4B 00 F0 E5 F8 40 46 7A 49 00 F0 E0 F8 68 46 76 49 09 88 78 4B 00 F0 DB F8 40 46 02 21 6A 46 70 4B 00 F0 D5 F8 75 4A 40 46 03 21 6D 4B 00 F0 CF F8 40 46 6C 4D 2A 68 07 21 6A 4B 00 F0 C8 F8 40 46 0B 21 69 4A 67 4B 00 F0 C2 F8 6C 4C 67 4A 11 88 C8 00 40 1A 80 00 00 19 C1 7C CA 20 40 00 0A 1C 42 43 61 48 80 78 80 00 66 49 40 18 12 18 40 46 19 21 5B 4B 00 F0 AB F8 5C 49 08 88 C2 00 12 1A 92 00 12 34 12 19 40 46 20 21 55 4B 00 F0 9F F8 5D 49 00 F0 9B F8 00 06 00 0E 23 21 53 4A 1C 32 10 60 40 46 4F 4B 00 F0 92 F8 40 46 24 21 4E 4A 02 32 4B 4B 00 F0 8B F8 40 46 53 4A 25 21 48 4B 00 F0 85 F8 49 4A 26 32 26 21 40 46 45 4B 00 F0 7E F8 2A 68 08 32 40 46 31 21 41 4B 00 F0 77 F8 00 F0 64 F8 46 4A 40 4B 19 88 C8 00 40 1A 80 00 80 18 C0 7D 00 28 0A D0 3C 4A 1C 32 90 88 01 21 08 40 10 60 40 46 2E 21 36 4B 00 F0 60 F8 40 46 3F 49 00 F0 5B F8 40 46 38 21 33 4A 02 32 3C 4B 00 F0 55 F8 40 46 40 21 30 4A 1C 32 FF 23 13 60 38 4B 00 F0 4C F8 40 46 37 49 00 F0 47 F8 40 46 0C 21 29 4A 04 32 32 4B 00 F0 41 F8 40 46 32 49 00 F0 3C F8 00 06 04 0E 24 48 00 88 30 49 00 F0 35 F8 00 04 05 0C 01 2C 0B DC 00 2C 09 DB 28 1C 02 21 2B 4B 00 F0 2B F8 28 1C 03 21 29 4B 00 F0 26 F8 40 46 28 49 00 F0 21 F8 20 1C 17 4C 20 83 08 B0 00 20 F0 BD 00 B5 00 2B 06 D0 10 49 00 F0 15 F8 07 21 08 40 68 40 60 40 00 BD 00 B5 00 27 0E 4A 0E 32 40 46 0A 4B 39 1C 27 31 7E 00 92 19 00 F0 05 F8 01 37 06 2F F2 D1 00 BD 08 47 18 47 C0 46 B1 2B 00 08 95 D9 03 08 7D D9 03 08 C9 4E 04 08 D1 04 04 08 0C 50 00 03 B8 70 03 02 E9 E3 03 08 F9 F8 03 08 D1 0F 04 08 11 9F 1E 08 84 47 25 08 E4 3A 25 08 61 62 05 08 10 9F 1E 08 E1 E9 03 08 7D 03 04 08 7D E4 03 08 15 0B 04 08 99 32 04 08 75 8E 08 08 C5 2B 00 08
2) Escribimos nuestro Script tranquilamente.
Al llegar al punto donde queremos poner nuestro Givepokemon, pondremos lo siguiente en lugar del tipico
Givepokemon 0xPkmn 0xLvl 0xItem:
lock
faceplayer
setvar 0x40FF 0x1 <-- ¡Importante!
setvar 0x8000 0xNumero Del Pokemon En Hex
setvar 0x8001 0xNivel En Hex
setvar 0x8002 0xNumero Del Item Equipado En Hex
setvar 0x8003 0xMovimiento #1 En Hex
setvar 0x8004 0xMovimiento #2 En Hex
setvar 0x8005 0xMovimiento #3 En Hex
setvar 0x8006 0xMovimiento #4 En Hex
setvar 0x8007 0xCantidad de IVs en HP en Hex
setvar 0x8008 0xCantidad de IVs en Atk en Hex
setvar 0x8009 0xCantidad de IVs en Def en Hex
setvar 0x800A 0xCantidad de IVs en Sp.Atk en Hex
setvar 0x800B 0xCantidad de IVs en Sp.Def en Hex
setvar 0x800D 0xCantidad de IVs en Speed en Hex
setvar 0x800F 0xDefinir si es Shiny, o No.
(0x0 para Shiny y 0x1 para Normal)
setvar 0x8014 0xPokeball con la que fue "Capturado"
callasm 0x8Offset donde insertamos el gigantezco trozo de codigo, +1
setvar 0x40FF 0x0 <-- ¡Importante!
release
end

3) Continuamos nuestro Script si lo queremos, compilamos, se lo damos a un NPC y Probamos.

Yo lo hice de la siguiente forma:
-Inserté el tocho trozo de Hex en 71A350, como dije anteriormente.
-Escribí mi Givepokemon de esta forma.

Y ya está, es muy facil pese a que en principio el Hex pueda parecer un poco aterrador xD..

Espero que les sea de utilidad, Hasta luego <3

EDITO:
¡Solucionado!
Desde luego, la Rutina de FBI era el problema.
¡Ya está todo corregido, lo he vuelto a probar paso por paso y funciona perfectisimamente!
<3

EDITO2:
Si se necesita, subiré imagenes en cada paso.

EDITO3:
Errores de texto corregidos para evitar confusiones, está en el titulo pero lo repetiré: Esto es un Givepokemon, no un Wildbattle.

EDITO4 (03/08/2017):
Añadido el link al perfil de Pokemon_XY en PokeCommunity y el post exacto donde posteó la rutina.​
 
Última edición:

Versekr Dark

Usuario de Platino
Respuesta: GBA | Script | ¡Givepokemon Personalizable!

De cuanto debe de ser el espacio del offset?
Muy buen post por cierto.
 

Jon.

Héroe de WaH
Respuesta: GBA | Script | ¡Givepokemon Personalizable!

Muuuy buen aporte. Gracias por traer este tipo de cosas a Wah. c:
Hace años quiero hacer algo así D:

Saludos.
 

DeadApolo

A-L-P-H-A
Respuesta: GBA | Script | ¡Givepokemon Personalizable!

Que buen aporte compadre, de seguro les servirá a muchos ahora que esta cosa de los hacks mas personalizados está tomando auge y que todos quieren tener los mejores hacks xD.

Atte:

ApoloD
 

Dani_SR_17

¡Pokémon LionHeart!
Respuesta: GBA | Script | ¡Givepokemon Personalizable!

Sin duda muy útil para entregar ciertos Pokémon especiales, aunque esta algo limitado a que permite dar un Pokémon 100% personalizado, pero no editar uno ya existente, que ya sería lo mejor, pero bueno, mejor esto que nada.
 

Versekr Dark

Usuario de Platino
Respuesta: GBA | Script | ¡Givepokemon Personalizable!

Hola me ha salido algun error, lo que pasa es que pongo todo tal y como dice y cuando me entregan al pokémon en lugar de nivel 5 me lo dan a nivel 58
 
Respuesta: GBA | Script | ¡Givepokemon Personalizable!

Hola amigo, quisiera saber si es posible de dar un huevo en lugar de dar un pokemon, Gracias de antemano :D
 

Versekr Dark

Usuario de Platino
Re: Respuesta: GBA | Script | ¡Givepokemon Personalizable!

como solucionaste esto?


El error se da por el parche de mrdollsteak, asi que si lo tienes no funcionara, pero hay una segunda manera, tanto este sistema asm como el sistema del perfeccionador de jpan sirven en juegos de fire red con el parche de pss que se encuentra en pokecommunity, por lo cual seria otra opción yo lo tengo de esa manera y lo uso para eventos especiales y como ambas roms las tengo expandidas es facil pasar el sav a el juego que yo quiera para hacer el evento que quiera, osea que con este agrego los pokes y en el otro y lo guardo y luego ya nada mas cargo el juego en la otra rom y no hay problemas, espero te haya servido mi explicación aunque es una manera rara de hacerlo la puedes usar.
 

Versekr Dark

Usuario de Platino
como solucionaste esto?


Si expandes la tabla debes poner esto, esos son los niveles, seguire investigando para ver que niveles encuentro :).

Donde poner el nivel debes poner el primer número y aparecera el segundo:

B=40

E=0

F=6

10=31

11=0

13=17

19=10

Holi <3
Si han leido este tema, sabrán que tecnicamente ahora, acabo de completar un Givepokemon Personalizado exitosamente.
¿Y que quiero hacer ahora?
Pues compartir como lo hice, con ustedes <3
(porque asi siento que estoy haciendo algo con mi vida en lugar de ser un pu.. vago)
Antes de comenzar, como siempre, los Creditos que en esta ocasión van totalmente para "Pokemon_xy" de PokeCommunity, pues él inventó esta preciosura <3

Prologo

(Lectura OBLIGATORIA para poder poner los Movimientos Personalizados al Pokémon)

Antes de poder correr nuestro Givepokemon Personalizado, necesitamos una Rutina especial creada por FBI, no se preocupen, es sencillisimo de insertar.

Todo lo que hay que hacer es insertar esta pieza de codigo, en un offset vacio:
Código:
0C B4 1B 48 1B 49 00 F0 21 F8 0C BC 00 28 1E D0 16 4D 00 24 29 1C 09 78 00 29 13 D0 02 21 61 43 49 19 09 88 40 46 14 4B 00 F0 1D F8 01 34 04 2C F0 D1 00 04 49 46 0D 0C 00 9B 10 49 48 45 05 D1 0F 49 08 47 0C 4B 00 F0 0E F8 F2 E7 08 47 40 46 21 1C 00 93 10 B4 08 4C 00 F0 06 F8 10 BC 00 04 49 46 0D 0C 07 4B 18 47 20 47 C0 46 BE 70 03 02 FF 40 00 00 69 E5 06 08 B1 E8 03 08 61 EA 03 08 57 EA 03 08 51 EA 03 08
Luego, debemos ir a "3EA46" y modificar los siguientes bytes por:
01 48 00 47 00 00 XX XX XX 08
Nota: "XX XX XX" es el Offset donde insertamos el Trozo anterior, convertido en un Pointer, +1.
¿Yo puse el trozo en 800000?
Entonces el Pointer será: 01 00 80 08
Es decir, el offset 800001

Y ya está, no hay que tocar nada mas relacionado con esto, ya que el Givepokemon Personalizado lo ejecutará automaticamente cuando sea necesario.

Y ahora si, una vez completado el Prologo..
¡Pasemos al platillo principal!

1) Insertamos el siguiente trozo de codigo, que es el Givepokemon Modificado
en un Offset Libre, en mi caso, 71A350:
Código:
F0 B5 88 B0 64 20 91 49 00 F0 1D F9 80 46 90 49 00 F0 19 F9 40 46 8F 49 00 F0 15 F9 8E 49 00 F0 12 F9 04 1C 8E 48 02 68 0A 32 16 1C 11 88 55 88 4D 40 8C 4B 5B 8B 88 49 00 F0 05 F9 00 F0 E8 F8 00 04 88 4A 20 32 14 80 20 43 00 21 85 4A 1C 32 10 60 40 46 81 4B 00 F0 F7 F8 40 46 7F 4B 01 21 32 1C 00 F0 F1 F8 40 46 7F 49 00 F0 EC F8 7D 4A 1C 32 10 80 40 46 09 21 78 4B 00 F0 E5 F8 40 46 7A 49 00 F0 E0 F8 68 46 76 49 09 88 78 4B 00 F0 DB F8 40 46 02 21 6A 46 70 4B 00 F0 D5 F8 75 4A 40 46 03 21 6D 4B 00 F0 CF F8 40 46 6C 4D 2A 68 07 21 6A 4B 00 F0 C8 F8 40 46 0B 21 69 4A 67 4B 00 F0 C2 F8 6C 4C 67 4A 11 88 C8 00 40 1A 80 00 00 19 C1 7C CA 20 40 00 0A 1C 42 43 61 48 80 78 80 00 66 49 40 18 12 18 40 46 19 21 5B 4B 00 F0 AB F8 5C 49 08 88 C2 00 12 1A 92 00 12 34 12 19 40 46 20 21 55 4B 00 F0 9F F8 5D 49 00 F0 9B F8 00 06 00 0E 23 21 53 4A 1C 32 10 60 40 46 4F 4B 00 F0 92 F8 40 46 24 21 4E 4A 02 32 4B 4B 00 F0 8B F8 40 46 53 4A 25 21 48 4B 00 F0 85 F8 49 4A 26 32 26 21 40 46 45 4B 00 F0 7E F8 2A 68 08 32 40 46 31 21 41 4B 00 F0 77 F8 00 F0 64 F8 46 4A 40 4B 19 88 C8 00 40 1A 80 00 80 18 C0 7D 00 28 0A D0 3C 4A 1C 32 90 88 01 21 08 40 10 60 40 46 2E 21 36 4B 00 F0 60 F8 40 46 3F 49 00 F0 5B F8 40 46 38 21 33 4A 02 32 3C 4B 00 F0 55 F8 40 46 40 21 30 4A 1C 32 FF 23 13 60 38 4B 00 F0 4C F8 40 46 37 49 00 F0 47 F8 40 46 0C 21 29 4A 04 32 32 4B 00 F0 41 F8 40 46 32 49 00 F0 3C F8 00 06 04 0E 24 48 00 88 30 49 00 F0 35 F8 00 04 05 0C 01 2C 0B DC 00 2C 09 DB 28 1C 02 21 2B 4B 00 F0 2B F8 28 1C 03 21 29 4B 00 F0 26 F8 40 46 28 49 00 F0 21 F8 20 1C 17 4C 20 83 08 B0 00 20 F0 BD 00 B5 00 2B 06 D0 10 49 00 F0 15 F8 07 21 08 40 68 40 60 40 00 BD 00 B5 00 27 0E 4A 0E 32 40 46 0A 4B 39 1C 27 31 7E 00 92 19 00 F0 05 F8 01 37 06 2F F2 D1 00 BD 08 47 18 47 C0 46 B1 2B 00 08 95 D9 03 08 7D D9 03 08 C9 4E 04 08 D1 04 04 08 0C 50 00 03 B8 70 03 02 E9 E3 03 08 F9 F8 03 08 D1 0F 04 08 11 9F 1E 08 84 47 25 08 E4 3A 25 08 61 62 05 08 10 9F 1E 08 E1 E9 03 08 7D 03 04 08 7D E4 03 08 15 0B 04 08 99 32 04 08 75 8E 08 08 C5 2B 00 08
2) Escribimos nuestro Script tranquilamente.
Al llegar al punto donde queremos poner nuestro Givepokemon, pondremos lo siguiente en lugar del tipico
Givepokemon 0xPkmn 0xLvl 0xItem:
lock
faceplayer
setvar 0x40FF 0x1 <-- ¡Importante!
setvar 0x8000 0xNumero Del Pokemon En Hex
setvar 0x8001 0xNivel En Hex
setvar 0x8002 0xNumero Del Item Equipado En Hex
setvar 0x8003 0xMovimiento #1 En Hex
setvar 0x8004 0xMovimiento #2 En Hex
setvar 0x8005 0xMovimiento #3 En Hex
setvar 0x8006 0xMovimiento #4 En Hex
setvar 0x8007 0xCantidad de IVs en HP en Hex
setvar 0x8008 0xCantidad de IVs en Atk en Hex
setvar 0x8009 0xCantidad de IVs en Def en Hex
setvar 0x800A 0xCantidad de IVs en Sp.Atk en Hex
setvar 0x800B 0xCantidad de IVs en Sp.Def en Hex
setvar 0x800D 0xCantidad de IVs en Speed en Hex
setvar 0x800F 0xDefinir si es Shiny, o No.
(0x0 para Shiny y 0x1 para Normal)
setvar 0x8014 0xPokeball con la que fue "Capturado"
callasm 0x8Offset donde insertamos el gigantezco trozo de codigo, +1
setvar 0x40FF 0x0 <-- ¡Importante!
release
end

3) Continuamos nuestro Script si lo queremos, compilamos, se lo damos a un NPC y Probamos.

Yo lo hice de la siguiente forma:
-Inserté el tocho trozo de Hex en 71A350, como dije anteriormente.
-Escribí mi Givepokemon de esta forma.

Y ya está, es muy facil pese a que en principio el Hex pueda parecer un poco aterrador xD..

Espero que les sea de utilidad, Hasta luego <3

EDITO:
¡Solucionado!
Desde luego, la Rutina de FBI era el problema.
¡Ya está todo corregido, lo he vuelto a probar paso por paso y funciona perfectisimamente!
<3

EDITO2:
Si se necesita, subiré imagenes en cada paso.


EDITO3:
Errores de texto corregidos para evitar confusiones, está en el titulo pero lo repetiré: Esto es un Givepokemon, no un Wildbattle.​
Ya encontre el por que salen de nivel 58 o 64, es por que se expande la tabla de pokémon o bueno asi paso en mi caso, según estuve investigando los niveles se dan asi:

B=40

E=0

F=6

10=31

11=0

13=17

19=10

Por ejemplo pones el 19 en nivel y te dan a magby en nivel 10:



 

Nacho

Nadando hasta la otra orilla
lunos una duda se puede cambiar la VAR 40FF por otra? es que yo la uso para una rutina ya! y si no se me activa. saludos!

por cierto para que es la VAR exactamente porque le das 0 y 1? activado y desactivado? asi el sistema no está entorpeciendo las variables dinamicas el resto del juego? supongo que es eso. Saludos!

pd: Por cierto si puedes dejar la estructura en ASM, en vez de compilada ahí seria genial, asi cambio la variable 40ff por otra que tenga libre.
 

Dragonite

But where's your heart
Miembro del equipo
Encargado/a de Eventos
Respuesta: Re: FR | Givepokemon Personalizable

lunos una duda se puede cambiar la VAR 40FF por otra? es que yo la uso para una rutina ya! y si no se me activa. saludos!

por cierto para que es la VAR exactamente porque le das 0 y 1? activado y desactivado? asi el sistema no está entorpeciendo las variables dinamicas el resto del juego? supongo que es eso. Saludos!

pd: Por cierto si puedes dejar la estructura en ASM, en vez de compilada ahí seria genial, asi cambio la variable 40ff por otra que tenga libre.
En la rutina del prólogo, si miras con atención, verás una parte que dice:

0C B4 1B 48 1B 49 00 F0 21 F8 0C BC 00 28 1E D0 16 4D 00 24 29 1C 09 78 00 29 13 D0 02 21 61 43 49 19 09 88 40 46 14 4B 00 F0 1D F8 01 34 04 2C F0 D1 00 04 49 46 0D 0C 00 9B 10 49 48 45 05 D1 0F 49 08 47 0C 4B 00 F0 0E F8 F2 E7 08 47 40 46 21 1C 00 93 10 B4 08 4C 00 F0 06 F8 10 BC 00 04 49 46 0D 0C 07 4B 18 47 20 47 C0 46 BE 70 03 02 FF 40 00 00 69 E5 06 08 B1 E8 03 08 61 EA 03 08 57 EA 03 08 51 EA 03 08
Prueba reemplazar eso con la variable que quieras (siempre intercambia los valores, si lo cambias por la variable 15, el valor debería ser 15 00).
 

Lunos

Enfrentando a La Organización
Respuesta: Re: FR | Givepokemon Personalizable

pd: Por cierto si puedes dejar la estructura en ASM, en vez de compilada ahí seria genial, asi cambio la variable 40ff por otra que tenga libre.


Lo naranja es un enlace. Vos clickeás ahi y vas al enlace que yo enlacé, que es el post original escrito por Pokemon_xy que naturalmente contiene la rutina original.
 

Nacho

Nadando hasta la otra orilla
Re: Respuesta: Re: FR | Givepokemon Personalizable



Lo naranja es un enlace. Vos clickeás ahi y vas al enlace que yo enlacé, que es el post original escrito por Pokemon_xy que naturalmente contiene la rutina original.
lunos otra duda, es necesario usar todos los parametros? si no quiero personalizarlo en todas las cosas que hago?
 

Dr._Seuss

Average RomHacker
Respuesta: Re: Respuesta: Re: FR | Givepokemon Personalizable

lunos otra duda, es necesario usar todos los parametros? si no quiero personalizarlo en todas las cosas que hago?
Pruba y error, hijo mio. Noolvide intentarlo primero.

Poniendo en cero las variables que no quieras personalizar debería ser suficiente.
 

Nacho

Nadando hasta la otra orilla
tengo una duda, esta rutina va a dejar inutilizable la opción del givepokemon normal?
 
Arriba