Advertiser Content

Tutorial Give pokemon script with CUSTOM MOVES!!!

Started by Rasenshurikenbum January 14th, 2014 11:37 AM
  • 7604 views
  • 9 replies

Rasenshurikenbum

ASM is very cool!

Age 23
Male
Poland
Seen 2 Hours Ago
Posted July 10th, 2016
70 posts
8.5 Years
Hello everyone!

I haven't seen any tutorial for this so I decided to make a one.
In this tutorial you will learn how to give a pokemon with custom moves! (To be honest, the routine changes the moveset of the last pokemon in your party, so it also works when you receive a pokemon because it will be the last in your team)
To see that it isn't any trick watch this video: http://www.youtube.com/watch?v=nP_mwbtg1TY):

Here are the steps so it will work for you too :)

Spoiler:
1. Download ASM routine (https://www.dropbox.com/s/4fmyngfukfizvic/Att_change_all.zip?dl=0)
2. Choose the right one depending on your version of game (rs - Ruby/Sapphire, fr - Fire Red, em - Emerald, em[US] - Emerald [US])
3. Insert the routine into your ROM (if you don't know how to do it then just go here: http://www.pokecommunity.com/showthread.php?t=117917#ASM1)
4. Now you just need to write a give pokemon script (I'm using XSE to make things easier).
5. But how are you supposed to specife your attacks in the script? That so easy! You just need to set a values to the proper variables (ex. Ice Beam is 0x3A and 10PP is 0xA). And you have to set all the values (even if you want to change only 1 attack). There is a list for the variables the routine uses:

0x8000 - move 1 data
0x8001 - move 2 data
0x8002 - move 3 data
0x8003 - move 4 data
0x8004 - number of the pokemon in your party - 1 (explanation below)
0x8005 - PP 1 data
0x8006 - PP 2 data
0x8007 - PP 3 data
0x8008 - PP 4 data

So you do:
setvar 0x8000 "move1"
(...)
setvar 0x8008 "PP4"

Little explanation:
Spoiler:
0x8004 variable determines which pokemon of your party should have the moves changed - 1, so:
0 - 1st pokemon
1 - 2nd pokemon
(...)
5 - 6th pokemon


6. Next you have to call the routine in the script. To do this, you have to use "callasm" function. So you do:

callasm "your routine offset + 1" (so if your routine has 0x800000 offset, then you have "callasm 0x800001")

Remember that you have to call asm routine AFTER obtaining a pokemon (otherwise it will change the moveset of the other pokemon in your party!)

Let me know what do you think :)

PS: This is my first ASM routine so Jambo, please forgive me for my code xD
Check out my tutorials:Next tutorials coming soon!

Butterslave

Male
Texas, USA
Seen 2 Days Ago
Posted 3 Weeks Ago
78 posts
10.6 Years
This looks like a really nice tutorial. I haven't experimented with ASM yet, but I do understand everything you're saying for the most part. This seems like it would be very useful for a hack involving some kind of special Pokemon you receive that knows a move it couldn't normally learn (Rattata with a Hyper Beam?! o_O).

Rasenshurikenbum

ASM is very cool!

Age 23
Male
Poland
Seen 2 Hours Ago
Posted July 10th, 2016
70 posts
8.5 Years
Thank you! :) Does the variable from 0x8000 to 0x8009 of Ruby has the same function as compared to Fire Red?
Yes, only the adresses for variables are different but they work the same way :)
Check out my tutorials:Next tutorials coming soon!

Deokishisu

Mr. Magius

Male
If I'm online, it's a safe bet I'm at a computer.
Seen January 9th, 2019
Posted March 4th, 2018
859 posts
13.7 Years
In Emerald, the setpkmnpp command in XSE can be used to change the moves of any Pokemon in the party (what XSE says is the "New PP amount" is the index number of the move to replace with in Emerald), so if you know where the given Pokemon is going in the party, you can use that command instead of the ASM.

Either way, this is a great way to do it for the other versions!

Rasenshurikenbum

ASM is very cool!

Age 23
Male
Poland
Seen 2 Hours Ago
Posted July 10th, 2016
70 posts
8.5 Years
In Emerald, the setpkmnpp command in XSE can be used to change the moves of any Pokemon in the party (what XSE says is the "New PP amount" is the index number of the move to replace with in Emerald), so if you know where the given Pokemon is going in the party, you can use that command instead of the ASM.

Either way, this is a great way to do it for the other versions!
Oh, I haven't known about this :)
Check out my tutorials:Next tutorials coming soon!

Rasenshurikenbum

ASM is very cool!

Age 23
Male
Poland
Seen 2 Hours Ago
Posted July 10th, 2016
70 posts
8.5 Years
i know this may be a stupid question. but im confused as hell. so if i was to put it in either PKSV or XSE, what exactly would the script look like after putting the ASM in? (for both PKSV and XSE)
(...)
givepokemon "blablablah" (parametres)
callasm YOUROFFSET+1 (ex. your ASM is 0x80000, so type 0x800001)
(...)

That's all.
Check out my tutorials:Next tutorials coming soon!
Advertiser Content