Registrarse

[ASM] FR |Cambiar Forma de un Pokemon

Omega

For endless fight
Miembro del equipo
Administrador
Después de unos días en Pokeco encontré lo mas parecido a lo que buscaba, cambiar la forma de un Pokemon (Lo malo es que funciona mediante un script pero supongo que se puede acomodar de alguna forma para que funcione con un objeto).
La Rutina es de daniilS de Pokeco:
The PokéCommunity Forums - View Single Post - Development: ASM Resource Thread

Bueno, comencemos:

1-. Primero Compilen esta rutina:
Código:
.text
.align 2
.thumb
.thumb_func
.global Indexnumber_changeand20bytes_recalc

main:
	push {r0-r3, lr}
getpokeoffset:
	ldr r0, varnumber_8004
	ldr r3, vardecrypt
	bl bxr3      @ Salta a la etiqueta bxr3 y una vez terminada vuelve
	ldrh r2, [r0]     @carga en r2 el valor de la variable 0x8004
	mov r0, #100     @carga en r0 el valr 0x100, longitud de los datos de cada PKMN
	mul r2, r0     @ Longitud desde el primer dato del primer PKMN hasta el elegido
	ldr r0, partystart
	add r3, r2, r0     @carga en r3 el offset de los datos del PKMN elegido
	push {r3}
getandsetnewindexnumber:
	ldr r0, vartocontainnewindexnumber
	ldr r3, vardecrypt
	bl bxr3     @carga en r2 el valor de la variable 0x8004
	mov r2, r0
	mov r1, #0xB
	ldr r0, [sp]
	ldr r3, pokeencrypt
	bl bxr3      @ Cambia la especie del PKMN elegido
recalc20bytes:
	pop {r0}
	ldr r3, effectivestatsrecalc
	bl bxr3     @recalcula los stats
	pop {r0-r3, pc}
bxr3:
	bx r3
	
.align 2
	varnumber_8004:			.word 0x8004
	vardecrypt:			.word 0x0806E454+1
	partystart:			.word 0x02024284
	vartocontainnewindexnumber:	.word 0x8005
	pokeencrypt:			.word 0x0804037C+1
	effectivestatsrecalc:		.word 0x0803e47c+1
Rutina ya compilada:
Código:
0F B5 0D 48 0D 4B 00 F0 15 F8 02 88 64 20 42 43 0B 48 13 18 08 B4 0B 48 08 4B 00 F0 0B F8 02 1C 0B 21 00 98 08 4B 00 F0 05 F8 01 BC 07 4B 00 F0 01 F8 0F BD 18 47 C0 46 04 80 00 00 55 E4 06 08 84 42 02 02 05 80 00 00 7D 03 04 08 7D E4 03 08
2-. Luego inserten en un offset vació y anótenlo en algún lado (En mi caso es el 71A250).

3-. Ahora la usamos en un script de la siguiente forma:
Código:
special 0x9F
waitstate
setvar 0x8005 0x(Pkmn al que cambiara de forma)
callasm 0xRutina +1
Yo la use asi para probarla:
Código:
#dynamic 0x800000

#org @inicio
lock
faceplayer
msgbox @algo 0x6
special 0x9F
waitstate
setvar 0x8005 0xFB
callasm 0x71A251
release
end

#org @algo
= Hola.

Quedaria algo asi:

Al usarla, cambiara cualquier Pokemon seleccionado por el que quieras (en este caso un Celebi).

PD: Este es mi primer Tuto por lo que pueden haber horribles fallas en cuanto estructura o explicación, alguna duda en los comentarios.

PD 2: Si alguien puede mejorar la forma en que se aplica esto déjelo en los comentarios :)

Saludos!!!
 
Última edición:
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Hola disculpa mi ignorancia jajaja pero me podrían explicar a que se refieren a cambiar de forma, a evolucionarlo o no se porque no entiendo se ve interesante pero no se a que se refiere a cambiar de forma a un pokemon.
 
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Supongo que con un comprobante de que el pokémon a cambiar de forma sea el que pide el objeto puede quedar guay para alguna forma momentanea. Duda, he visto que los stats se modifican (Charmander pasa de 20 a 28 de HP) ¿Pero la exp y tal se mantiene? ¿Se podría hacer que olvide X ataque exclusivo de una forma y/o se cambie por otro? (Por ejemplo si cambias entre las formas de rotom, para que siendo lavadora aprenda hidrobomba y si tiene otro ataque lo borre, aunque supongo que esto sería configurarlo en el script antes).

Un saludo.
 

Versekr Dark

Usuario mítico
Re: Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Supongo que con un comprobante de que el pokémon a cambiar de forma sea el que pide el objeto puede quedar guay para alguna forma momentanea. Duda, he visto que los stats se modifican (Charmander pasa de 20 a 28 de HP) ¿Pero la exp y tal se mantiene? ¿Se podría hacer que olvide X ataque exclusivo de una forma y/o se cambie por otro? (Por ejemplo si cambias entre las formas de rotom, para que siendo lavadora aprenda hidrobomba y si tiene otro ataque lo borre, aunque supongo que esto sería configurarlo en el script antes).

Un saludo.
Para eso puede usar jpan, como forma de aprendisaje de un pokémon combinando el cambio de forma, es muy sencillo, solo debes poner unos speciales para que cuando cambie de forma puedas hacer que el pokémon aprenda dependiendo de la forma el ataque que quieres.
 

FEL!X

ᴛᴜ ᴀᴍɪɢᴏ ᴇʟ ᴇsᴘᴀᴅᴀᴄʜíɴ
Usuario de Oro
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

¡Yeah! Éste aporte es genial y me encanta la idea.

Eso sí, estaría bien definir qué es lo que realmente cambias de forma. Con el gif solo puedo ver un cambio del sprite y de los puntos de salud. ¿Debo suponer que cambia el pokémon manteniendo los IV no? Hecho que modifica los stats para adaptarlos al nuevo pokémon (De ahí la subida en HP). Esto me abre dudas así que cuando pueda probaré a ver qué tal y así sabré qué parece hacer la rutina.

Un abrazo y gracias por el aporte. :blush:
 

Bugrhak

A long time ago I used to call myself "Subzero".
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Supongo que con un comprobante de que el pokémon a cambiar de forma sea el que pide el objeto puede quedar guay para alguna forma momentanea. Duda, he visto que los stats se modifican (Charmander pasa de 20 a 28 de HP) ¿Pero la exp y tal se mantiene? ¿Se podría hacer que olvide X ataque exclusivo de una forma y/o se cambie por otro? (Por ejemplo si cambias entre las formas de rotom, para que siendo lavadora aprenda hidrobomba y si tiene otro ataque lo borre, aunque supongo que esto sería configurarlo en el script antes).

Un saludo.
Lo que propones se puede hacer muy fácilmente con un aporte que hizo a
@Lunos, el cual era de givepokemon personalizado (luego edito con el linck).
________________________________________._.

Buen aporte omega, bien explicado, la info bien masticadita para los vagos (como yo), servirá de mucho para hacer cosas interesantes, una vez mas; Buen aporte^^

Salu2 :cool::blush::cool:
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Lo que propones se puede hacer muy fácilmente con un aporte que hizo a
@Lunos, el cual era de givepokemon personalizado (luego edito con el linck).
Hacer eso supondria resetear los stats del Pokémon en cada ocasión que le quieras cambiar de forma.
Mi aporte (Que por cierto, está aqui) no es una buena aplicación para Rotom.
Ahora, el tema del cambio de forma de Rotom, estoy seguro de que fue investigado en PokeCommunity, vuelvo en un momento y edito si es que estoy en lo cierto.

EDITO: Y ciertamente lo fue, justo aqui.
 

Omega

For endless fight
Miembro del equipo
Administrador
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Con el gif solo puedo ver un cambio del sprite y de los puntos de salud. ¿Debo suponer que cambia el pokémon manteniendo los IV no? Hecho que modifica los stats para adaptarlos al nuevo pokémon (De ahí la subida en HP).
Así es, parece que los IVs quedan intactos, lo único que cambia (obvio) son los stat base.
Por cierto, después del cambio a veces se para la música o se escucha trabada, basta con entrar a una casa o salir de la ruta para que se acomode :)
 

Bugrhak

A long time ago I used to call myself "Subzero".
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Tengo una duda, y ya que puede que a alguien mas se le pase por la cabeza, la dejo aquí y no en tu perfil D: ...
¿Esto cambia también la naturaleza del pokemon y su habilidad especial?

Salu2 :cool::blush::cool:

PD:Antes que digáis nada, disculpad las molestias y mi shitposting...
 

Omega

For endless fight
Miembro del equipo
Administrador
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Tengo una duda, y ya que puede que a alguien mas se le pase por la cabeza, la dejo aquí y no en tu perfil D: ...
¿Esto cambia también la naturaleza del pokemon y su habilidad especial?

Salu2 :cool::blush::cool:
No, todo queda como lo tiene el otro pokemon (Naturaleza, IVs, Ataques, Etc.) lo único que cambia es la especie (creo que eso es obvio xd), el tipo, la habilidad y los Stats base.

PD:Antes que digáis nada, disculpad las molestias y mi shitposting...
No hay problema, para eso estan los comentarios :)
 

pikachu240

Junior C# Developer
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

me gustaria poder tener lo mismo pero con el numero del pokemon en el equipo asi se podrian hacer scripts chulos no?
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

me gustaria poder tener lo mismo pero con el numero del pokemon en el equipo asi se podrian hacer scripts chulos no?
Quizás soy yo el que no te entiende, pero eso es exactamente lo que hace la rutina. Toma el número del pokémon en el equipo que haya en la variable 8004 (-1). Es decir, si la variable tiene valor 1, se cambia al segundo pokémon del equipo.

Si no quieres abrir el menú de selección simplemente cambia el special por un setvar 0x8004 0x(slot del equipo -1)
 

squirtlemon

Pokémon Mytíc ®
lo unico que se me ocurre que yo podria usarlo seria para cambiar las forma a deoxys como en pokemon diamante, perla y platino, pero se me hace un poco raro tener que seleccionar a "cualquier" pokemon para que cambie de "forma"

no se podria hacer que se pudiera elejir si o si a deoxys y hacer que mediante un meteorito cambie a sus diversas formas ?

si es asi como seria ? que tendria que agregar en el scrip ?

soy nuevo en el tema de los script jajaja
 

Shern

Protector De Las Tierras De WaH
Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

LoL esta super chulo me va a servir mucho xd
 

The_Learner

Usuario de oro
Respuesta: Re: [FR] (Asm) Cambiar Forma de un Pokemon

lo unico que se me ocurre que yo podria usarlo seria para cambiar las forma a deoxys como en pokemon diamante, perla y platino, pero se me hace un poco raro tener que seleccionar a "cualquier" pokemon para que cambie de "forma"

no se podria hacer que se pudiera elejir si o si a deoxys y hacer que mediante un meteorito cambie a sus diversas formas ?

si es asi como seria ? que tendria que agregar en el scrip ?

soy nuevo en el tema de los script jajaja
https://whackahack.com/foro/t-48209/re-complete-fr-form-e-changes

maybe this will help you out.
 
Respuesta: Re: Respuesta: [FR] (Asm) Cambiar Forma de un Pokemon

Para eso puede usar jpan, como forma de aprendisaje de un pokémon combinando el cambio de forma, es muy sencillo, solo debes poner unos speciales para que cuando cambie de forma puedas hacer que el pokémon aprenda dependiendo de la forma el ataque que quieres.
Como es eso??' Una app para incluir los cambios de forma???
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Mae Gobanen,

vengo a hacer un pequeño aporte a este tutorial. Otras personas aparte de mi están interesadas en el ASM, y creo que la rutina explicada sería un gran aporte para que otros puedan instruirse de ella.

Código:
.text
.align 2
.thumb
.thumb_func
.global Indexnumber_changeand20bytes_recalc

main:
	push {r0-r3, lr}
getpokeoffset:
	ldr r0, varnumber_8004
	ldr r3, vardecrypt
	bl bxr3      @ Salta a la etiqueta bxr3 y una vez terminada vuelve
	ldrh r2, [r0]     @carga en r2 el valor de la variable 0x8004
	mov r0, #100     @carga en r0 el valr 0x100, longitud de los datos de cada PKMN
	mul r2, r0     @ Longitud desde el primer dato del primer PKMN hasta el elegido
	ldr r0, partystart
	add r3, r2, r0     @carga en r3 el offset de los datos del PKMN elegido
	push {r3}
getandsetnewindexnumber:
	ldr r0, vartocontainnewindexnumber
	ldr r3, vardecrypt
	bl bxr3     @carga en r2 el valor de la variable 0x8004
	mov r2, r0
	mov r1, #0xB
	ldr r0, [sp]
	ldr r3, pokeencrypt
	bl bxr3      @ Cambia la especie del PKMN elegido
recalc20bytes:
	pop {r0}
	ldr r3, effectivestatsrecalc
	bl bxr3     @recalcula los stats
	pop {r0-r3, pc}
bxr3:
	bx r3
	
.align 2
	varnumber_8004:			.word 0x8004
	vardecrypt:			.word 0x0806E454+1
	partystart:			.word 0x02024284
	vartocontainnewindexnumber:	.word 0x8005
	pokeencrypt:			.word 0x0804037C+1
	effectivestatsrecalc:		.word 0x0803e47c+1
Paso a explicar cada función,

vardecrypt: Toma en r0 el ID de la variable y devuelve en r0 el offset de dicha variable. Se ubica en el offset 0x0806E454

pokeencrypt: Toma en r0 el offset del Pokemon desde donde cogeremos los datos, en r1 uno de los valores de la lista que hay a continuación y en r2 el offset del Pokemon a editar. La función está en el offset 0x0804037C

0x00 - Pokémon ID
0x01 - Trainer IDs
0x02 - Nickname Max Length 10 (r6 should be the nickname's address)
0x03 - Font / Language
0x04 - Sanity
0x05 - Sanity
0x06 - Sanity
0x07 - OT Name Max Length 7
0x08 - Marks
0x09 - Checksum
0x0A - Filler
0x0B - Species
0x0C - Held Item
0x0D - Attack 1
0x0E - Attack 2
0x0F - Attack 3
0x10 - Attack 4
0x11 - PP 1
0x12 - PP 2
0x13 - PP 3
0x14 - PP 4
0x15 - PP Bonuses
0x16 - Coolness
0x17 - Beauty
0x18 - Cuteness
0x19 - Exp. Points
0x1A - HP EV
0x1B - Attack EV
0x1C - Defence EV
0x1D - Speed EV
0x1E - Sp. Attack EV
0x1F - Sp. Defence EV
0x20 - Happiness
0x21 - Smartness
0x22 - Pokérus Status
0x23 - Catch Location
0x24 - Catch Level
0x25 -
0x26 - Hometown / Poké Ball / Trainer Gender
0x27 - HP IV
0x28 - Attack IV
0x29 - Defence IV
0x2A - Speed IV
0x2B - Sp. Attack IV
0x2C - Sp. Defence IV
0x2D - IsEgg
0x2E - Ability Bit
0x2F - Toughness
0x30 - Sheen
0x31 -
0x32 -
0x33 -
0x34 -
0x35 -
0x36 -
0x37 - Status Ailment
0x38 - Level
0x39 - Current HP
0x3A - Total HP
0x3B - Attack
0x3C - Defence
0x3D - Speed
0x3E - Sp. Attack
0x3F - Sp. Defence
0x40 -
0x41 - Species
 
Arriba