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: https://www.youtube.com/watch?v=nP_mwbtg1TY):
Here are the steps so it will work for you too :)
Let me know what do you think :)
PS: This is my first ASM routine so Jambo, please forgive me for my code xD
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: https://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: https://www.pokecommunity.com/threads/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:
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!)
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: https://www.pokecommunity.com/threads/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
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
Last edited: