Registrarse

[Rutina] [ASM] Evolution via Callasm in FR

jiangzhengwenjz

Usuario mítico
Greetings.

When I'm wandering here, I've found a thread written by the GREAT eing: http://whackahack.com/foro/t-28984/fr-finalizada-forzar-evolucion-asm
Well, since I am not investigate FR, and I have no desire to continue the investigation, I leave the research I started. To force a Pokémon to evolve just need to compile this routine and go.
Actually, this thread told us nothing other than the "evolution_starter" function located at 0xCDDA8. However, it has a huge glitch that we won't come back to the overworld after the screen fades black.

In fact, it is very simple to fix the glitch. (OK, I must confess that I've not researched it very much, so this is only in an early stage and that's the reason why I post the thread in this section. )

You may say that it's not a good way, but I don't have much time so I will just provide what I know to you all.

I will show you the GIF result of the hack:



Firstly, we just insert a function at 0xYYYYYY:
Código:
.thumb
push {r4, lr}
ldr r0, =0x300537C
ldr r1, =0x80568E1
str r1, [r0]
ldr r0, =0x020370C0
ldrh r1, [r0, #2]
mov r2, #1
ldrh r3, [r0, #0x10]
ldr r4, =0x80cdda9
bl bx_r4
pop {r4, pc}
bx_r4: bx r4
After that we should insert another function at 0xZZZZZZ:
Código:
.thumb
push {r4, lr}
mov r4, #0
loop:
ldr r0, =0x02024284
mov r1, #0x64
mul r1, r4
add r0, r0, r1
mov r1, #0xb
ldr r2, =0x803FBE9
bl bx_r2
ldr r1, =0x20370C0
ldrh r2, [r1]
cmp r0, r2
beq have_pre
add r4, #1
cmp r4, #6
bne loop

no_pokemon:
mov r4, #0xFF
b back

increment:
add r4, #1
cmp r4, #6
beq no_pokemon
b loop

have_pre:
ldr r0, =0x2024284
mov r1, #0x64
mul r1, r4
add r0, r0, r1
mov r1, #0x2d
ldr r2, =0x803FBE9
bl bx_r2
ldr r1, =0x20370C0
cmp r0, #1
beq increment

back:
strh r4, [r1, #0x10]
pop {r4, pc}
bx_r2:
bx r2
To use it via a script:
Código:
#org @start
lock
faceplayer
setvar 0x8004 0x4 //the species number of pokemon you want it to evolve(here's chamander)
setvar 0x8005 0x2 //the species number of pokemon after evolution(here's ivysaur)
callasm 0x8ZZZZZZ+1 //check the slot number of the pokemon
compare 0x800D 0xFF //check if the pokemon exists in the player's party
if1 1 @no_that_pokemon
callasm 0x8YYYYYY+1 //evolution
waitstate
//setweather 3 //you can define other events after waitstate
//doweather
release
end

//---------------
#org @no_that_pokemon
msgbox @message_string 6 //"You don't have that pokemon. "
release
end


//---------
// Strings
//---------
#org @message_string
= You don't have that pokemon.
That's all, if you have anything new just reply here, thx. : D

Note: Only the first pokemon in your party with the species number in 0x8004 will evolve. I think that's better.
 
Última edición:

BLAx501!

A veces comento en temas :3
Miembro de honor
Usuario de Platino
o_O, this is GREAT, I knew the method FBI posted on Pokecommunity but this one is perfect.
 

Lunos

Enfrentando a La Organización
Miembro insignia
Hm.. I can only think in 1 way of using this correctly and that would be to evolve an Eevee into Leafeon or Glaceon.

It's cool nevertheless, but not so useful overall, imho :/ ...
 

BLAx501!

A veces comento en temas :3
Miembro de honor
Usuario de Platino
Hm.. I can only think in 1 way of using this correctly and that would be to evolve an Eevee into Leafeon or Glaceon.

It's cool nevertheless, but not so useful overall, imho :/ ...
Si no eres capaz de sacarle partido a esto, piensa de manera más creativa :p

Te aseguro que hay muchos usos para esto, y que es un avance genial.

A propósito, estoy traduciendo el tutorial al español para aquellos que no estén muy versados en al lengua de Shakespeare :p
 

jiangzhengwenjz

Usuario mítico
Re: Respuesta: [ASM] Evolution via Callasm in FR

Hm.. I can only think in 1 way of using this correctly and that would be to evolve an Eevee into Leafeon or Glaceon.

It's cool nevertheless, but not so useful overall, imho :/ ...
I think we won't use this way to get leafeon & glaceon, as they are required to level up in specific location. Therefore, hacking the evolution routine will be a better way.
I think it will be better to use the hack inside a "special event". But if you like to keep the same as gen 4,5,6 games, it will have no use indeed.
A propósito, estoy traduciendo el tutorial al español para aquellos que no estén muy versados en al lengua de Shakespeare :p
Nice work if you can test and translate it. :D
 

pikachu240

Junior C# Developer
Una pregunta se podria cambiar el slot que mira? Y otra mas se podria poner que el jugador le salga el selector para que escoja el mismo, por ejemplo en el primer caso si el pokemon del tercer slot es un lugia lo evoluciono a magikarp, en el segundo coso el jugador escoge el pokemon luego si no ha cancelado evoluciono el pokemon seleccionado al pokemon que sea...creo que se podria hacer por ejemplo si el slot es mayor de 6 sale el selector y si es 0 pues no hace nada o saca el selector hay muchas opciones...

Lo digo porque se puede expandir la rutina y hacerla mas versátil, tambien molaria la opción de poner que evolucione a su siguiente evolución(si no tiene mas puede no evolucionar o se podria mira un flag y volver a empezar la linea evolutiva) poniendo 0xFFFF en la variable destino

Solo son sugerencias porque yo no sabria hacerlo...no tengo ni idea de asm pero si alguien puede implementar alguna de estas ideas o inspirarse y hacer algo mas pues...aqui lo dejo por si se puede ;)
 

jiangzhengwenjz

Usuario mítico
Re: Respuesta: [ASM] Evolution via Callasm in FR

Una pregunta se podria cambiar el slot que mira? Y otra mas se podria poner que el jugador le salga el selector para que escoja el mismo, por ejemplo en el primer caso si el pokemon del tercer slot es un lugia lo evoluciono a magikarp, en el segundo coso el jugador escoge el pokemon luego si no ha cancelado evoluciono el pokemon seleccionado al pokemon que sea...creo que se podria hacer por ejemplo si el slot es mayor de 6 sale el selector y si es 0 pues no hace nada o saca el selector hay muchas opciones...

Lo digo porque se puede expandir la rutina y hacerla mas versátil, tambien molaria la opción de poner que evolucione a su siguiente evolución(si no tiene mas puede no evolucionar o se podria mira un flag y volver a empezar la linea evolutiva) poniendo 0xFFFF en la variable destino

Solo son sugerencias porque yo no sabria hacerlo...no tengo ni idea de asm pero si alguien puede implementar alguna de estas ideas o inspirarse y hacer algo mas pues...aqui lo dejo por si se puede ;)
I don't know precisely what you mean as you spoke in Spanish, but if you want to deal with slots and species, you can just modify the routine to check if the specified pokemon is in the player's party to make it work for you. I, personally, have to quit hacking for a period of time. :(
 
Arriba