• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Code: ASM Resource Thread

Blah

Free supporter
1,924
Posts
11
Years
And also (no offense to knizz) the skip into thats been made sucks. I tested it yesterday and It dosesnt support save files, which for a lot of people really sucks because they dont use save states.
So a new one would be great.

You're completely right, it skips all the way till the overworld. Actually just skipping the intro will probably not be as easy as I want it to be. I remember editing out the rival naming and freezing the game right after. I'll look into it, but no promises :P

EDIT: Nvm he has an option to remove just the oak + tutorial rather than intro +titlescreen as well. Unless you've tried all combinations ;x

I did not think about that...
lol

It's OK :P
 

Joexv

ManMadeOfGouda joexv.github.io
1,037
Posts
11
Years
You're completely right, it skips all the way till the overworld. Actually just skipping the intro will probably not be as easy as I want it to be. I remember editing out the rival naming and freezing the game right after. I'll look into it, but no promises :P

EDIT: Nvm he has an option to remove just the oak + tutorial rather than intro +titlescreen as well. Unless you've tried all combinations ;x

Ive tried it. removing the oak pat is what screws it up.
 
200
Posts
10
Years
  • Age 30
  • Seen Jun 19, 2022
What are you trying to achieve here? It's much easier to calculate average level of Player's party, then set the storage Pokemon's levels to the calculated amount. Would you like me to make a routine for that?

If you would like to. I was planning to grab the average level for the party compare level, tho'. (I see I wasn't clear enough in my comments) What I was doing was, if one level (base party average over stored pokemon) was bigger, get exp worth the difference of the two levels and add it, simply enough. I think my method will work. XD Now I feel like a goof. I read somewhere the EXP location moves around, and that different pokemon have different EXP to level rates, so I thought it would be a pain altering it, but you wrote a routine altering it so obviously you feel comfortable doing that.

My other thought was altering the levels directly without altering the EXP as well would not work / result in bugs, which was why I did not think to try, but you'd be more of an expert on that than me.

I admit I am not used to having help, so it often doesn't occur to me to ask for much.... even though this thread requests routines for you to write. I know that's goofy.
 

Blah

Free supporter
1,924
Posts
11
Years
Ive tried it. removing the oak pat is what screws it up.
Np, Touched and Bela have done this for Pokemon Rose. I'll consult the sensei :P

Where is the search party pokemon code? I was unable to find it.
First post has an index to all of my other routines. The search party pokemon one is called "party checker".


If you would like to. I was planning to grab the average level for the party compare level, tho'. (I see I wasn't clear enough in my comments) What I was doing was, if one level (base party average over stored pokemon) was bigger, get exp worth the difference of the two levels and add it, simply enough. I think my method will work. XD Now I feel like a goof. I read somewhere the EXP location moves around, and that different pokemon have different EXP to level rates, so I thought it would be a pain altering it, but you wrote a routine altering it so obviously you feel comfortable doing that.

My other thought was altering the levels directly without altering the EXP as well would not work / result in bugs, which was why I did not think to try, but you'd be more of an expert on that than me.

I admit I am not used to having help, so it often doesn't occur to me to ask for much.... even though this thread requests routines for you to write. I know that's goofy.

You're about 50% right. You can't just set level, as it's derived from EXP. You need to increment the exp sufficiently by a percentage of current EXP to increase the level. I did this in the silent evolution method to keep the Player's pokemon in the same level. It was often the case that from going from something like a magikarp to gyarados would decrease the level by 1-2 due to the experience required to achieve said level.

Anyways, inorder for you to achieve this you'd need 4 routine calls, or 1 really long one.
1) get average lvl of party
2) swap party and storage
3) adjust current party's level to match number from 1)
4) swap party and storage

Thankfully 1, 2, and 4 are already done. Here's 3:

Set static party level


First of all, I need to mention that this routine works off percentage increases and decreases. So if you're planning to go from level 1 to 100 all in one go for 6 Pokemon it will take around 5 seconds to increment about 35 million experience points. The reason for the percentage increase is so that we don't go over. This was a pain to test, as in some occasions the percentage between levels 1-2 would be enough to set negative exp, and sometimes the levels 99 -100 would set exp over 100...it was just a huge pain. It now works off a lookup table and is quite spiffy now :3

How to insert:

Compile and insert into free space the following routine:

Spoiler:


Usage:
setvar 0x8000 0x[Level you want Pokemon to be set to (in hex)]
callasm 0x[this routine +1]

That's it. I should mention, you should apply this as often as possible to speed up the computation time for next time.
 
Last edited:

Lance32497

LanceKoijer of Pokemon_Addicts
792
Posts
9
Years
Manaphy Egg
A routine that lets you have more than 1 egg but only for a certain pokemon.

and about Manaphy's breeding style, I didnt get an answer if it was accepted or not.
 
200
Posts
10
Years
  • Age 30
  • Seen Jun 19, 2022
Np, Touched and Bela have done this for Pokemon Rose. I'll consult the sensei :P


First post has an index to all of my other routines. The search party pokemon one is called "party checker".




You're about 50% right. You can't just set level, as it's derived from EXP. You need to increment the exp sufficiently by a percentage of current EXP to increase the level. I did this in the silent evolution method to keep the Player's pokemon in the same level. It was often the case that from going from something like a magikarp to gyarados would decrease the level by 1-2 due to the experience required to achieve said level.

Anyways, inorder for you to achieve this you'd need 4 routine calls, or 1 really long one.
1) get average lvl of party
2) swap party and storage
3) adjust current party's level to match number from 1)
4) swap party and storage

Thankfully 1, 2, and 4 are already done. Here's 3:

Set static party level


First of all, I need to mention that this routine works off percentage increases and decreases. So if you're planning to go from level 1 to 100 all in one go for 6 Pokemon it will take around 5 seconds to increment about 35 million experience points. The reason for the percentage increase is so that we don't go over. This was a pain to test, as in some occasions the percentage between levels 1-2 would be enough to set negative exp, and sometimes the levels 99 -100 would set exp over 100...it was just a huge pain.

How to insert:

Compile and insert into free space the following routine:

Spoiler:

Usage:
setvar 0x8000 0x[Level you want Pokemon to be set to (in hex)]
callasm 0x[this routine +1]

That's it. I should mention, you should apply this as often as possible to speed up the computation time for next time.

Ahhh, okay, I thought it was something like that. And wow, you're fast.

This function is pretty useful! Decreases as well as increases? Off the top of my head, it could be used for depowered pokemon events where you're hit by a machine and all your pokemon go down, and then after the event go back up again, or getting a new team all leveled the same as your old one, or a fake mega-rare candy item that boosts by several levels instead of one, or an event where temporarily all your pokemon are level 100, or crazier things like that.

Just one question, if it takes 5 seconds to go from 1 to 100, what's the ideal range for a quick increase/decrease? Under 10 levels?
 

Blah

Free supporter
1,924
Posts
11
Years
Ahhh, okay, I thought it was something like that. And wow, you're fast.

This function is pretty useful! Decreases as well as increases? Off the top of my head, it could be used for depowered pokemon events where you're hit by a machine and all your pokemon go down, and then after the event go back up again, or getting a new team all leveled the same as your old one, or a fake mega-rare candy item that boosts by several levels instead of one, or an event where temporarily all your pokemon are level 100, or crazier things like that.

Just one question, if it takes 5 seconds to go from 1 to 100, what's the ideal range for a quick increase/decrease? Under 10 levels?

5 seconds for 6 Pokemon to go 1-100. As the level increases the amount added increases linearly. The reason it takes going from one end to the other so long is because at level you you start at 7-8 exp, and increasing that by multiplication will only give you another small number. However, going from 100 - 1 is much quicker. I would say +/- 30 levels would be done in a split second. I'm working on a more efficient routine to do this, so there's that to look forward too.
 

Lance32497

LanceKoijer of Pokemon_Addicts
792
Posts
9
Years

Forced Evolution (silently):

(with animation to come at a later date).

How to insert:
Compile and insert into free space the following routine:

Spoiler:


Here's a compiled version:
Code:
FF B5 49 48 00 88 64 21 48 43 48 49 40 18 07 1C 0B 21 47 4B 00 F0 84 F8 05 1C 00 F0 29 F8 06 1C 38 1C 38 21 42 4B 00 F0 7B F8 04 1C 38 1C 3D 4A 31 1C 11 80 0B 21 3F 4B 00 F0 72 F8 38 1C 3E 4B 00 F0 6E F8 30 1C 3D 4B 00 F0 6A F8 30 1C 02 21 3B 4B 00 F0 65 F8 30 1C 03 21 39 4B 00 F0 60 F8 38 1C 38 21 32 4B 00 F0 5B F8 A0 42 37 D1 0C E0 04 21 41 43 40 18 C0 00 32 4B C1 18 48 88 8A 88 90 42 00 DC 70 47 10 1C 70 47 38 1C 2E 49 0A 1C 02 21 27 4B 00 F0 44 F8 2C 48 0B 21 69 43 09 18 0D 1C 29 49 0C 1C 00 20 0A 28 0D D0 01 35 29 78 01 34 22 78 8A 42 32 D1 FF 2A 00 D0 02 E0 FF 29 02 D0 2C E0 01 30 EF E7 20 4A 0B 20 46 43 B6 18 38 1C 32 1C 02 21 17 4B 00 F0 22 F8 1F E0 A0 42 D3 D0 02 1C 38 1C 19 21 11 4B 00 F0 19 F8 01 1C 00 09 A2 42 01 D9 09 18 00 E0 09 1A 09 4A 11 60 19 21 38 1C 0B 4B 00 F0 0B F8 38 1C 0A 4B 00 F0 07 F8 38 1C 38 21 06 4B 00 F0 02 F8 DF E7 FF BD 18 47 C0 46 B8 70 03 02 BA 70 03 02 84 42 02 02 E9 FB 03 08 7D 03 04 08 7D E4 03 08 99 32 04 08 75 8E 08 08 54 97 25 08 D0 1C 02 02 E0 5E 24 08

Usage:

Set the slot of the Pokemon you want to evolve in var 0x8001 (0x0 to 0x5). Then callasm to this routine and the rest is done automagically.

You can use this routine in conjunction with the checkItem routine to make a Pokemon evolve if it's holding an Item. Or if you wanted an evolution scene inside the Overworld this is useful too.
Like I said, an animated version will come out later once I figure out a way to fix some bugs. No promises on the date, it's very complicated :P

I test it and IT AWESOMELY WORKS!!!!!!!!

Just take the compiled code and paste it at those offsets as-is. No need to flip it or anything.

Ok! Im done!
Should I reverse the offset+1
or just let it 800000
 
Last edited by a moderator:

Blah

Free supporter
1,924
Posts
11
Years
Manaphy Egg
A routine that lets you have more than 1 egg but only for a certain pokemon.

and about Manaphy's breeding style, I didnt get an answer if it was accepted or not.
I don't think anyone really cares about Manaphy breeding, lol. It's not a very featured Pokemon in many people's hacks. Current FR has a breeding strat for it implemented as is, iirc.

What do you mean by routine that lets you have more than 1 egg? You can already have more than 1 egg :P

I test it and IT AWESOMELY WORKS!!!!!!!!

Of course it works awesomely, I made it :D

Mini-update (not really mini kinda a big deal)
I've upgraded the original party level set function to work in constant time. Now it's quite instantaneous regardless of the level difference. Anyways, for the guy who was talking about skipping the introduction and saving the game afterwards, I've talked to both Touched and Bela. Bela gave me permission to post it, and Touch gave me the code (I forgot to ask him, but he loves me so it's probably OK).

Here are the byte changes he wants you to do inorder to achieve an intro skip similar to Pokemon Rose (which you guys should all checkout, Bela's it's quite an awesome project).

Touched-sensei said:
HEX EDIT

0x12EB54: 45 66 05 08
0x054A68: 3C 4C
0x054A6A: 20 68
0x054A6C: 00 49
0x054A6E: 01 E0
0x054A7E: 34 4E
0x054B3A: 00 00
0x054B3C: 00 00
0x054A70: REVERSED POINTER TO TEXT CONTAINING YOUR DEFAULT NAME (max 8 chars, last char must be 0)

EDIT: Despite what he says about last char having to be zero, I think its a typo for FF. The name's size limit is 7 bytes (chars) the last byte must be 0xFF (string terminator). If the name is less than 7 characters, pad the remaining characters with 0xFF.
 
Last edited:

Lance32497

LanceKoijer of Pokemon_Addicts
792
Posts
9
Years
I don't think anyone really cares about Manaphy breeding, lol. It's not a very featured Pokemon in many people's hacks. Current FR has a breeding strat for it implemented as is, iirc.
Aww, It really cares for me because I am creating a rom that the title "Pokemon Sea Temple" and it talkes about manaphy.

What do you mean by routine that lets you have more than 1 egg? You can already have more than 1 egg :P

I mean The Regular Egg and Manaphy Egg

Pokemon Storage (outside the PC)


Basically, in it's current state, this is effectively a storage system. It stores Pokemon and can be interacted with by the player to withdraw or deposit Pokemon. It's standalone from the PC storage system and is also much smaller (I've limited it to 6, but it can go upto 47). Some things that you will be able to do with this routine (and conjunction with some smaller ones) include:
- Extra Pokemon storage, you can possibly get a little over 1 box worth
- Flash back battles (complete swap between stored Pokemon and party Pokemon with capabilities to swap back)
- Carry a party of greater than 6 Pokemon (you can use the 2nd party for HM slaves, or whatever)
- Trade evolver guy! He will take your Pokemon and then when you come back it can be evolved! (silent evolution ftw!)
- Separate Daycare holding larger amount of Pokemon at once

I've tested it thoroughly and there doesn't seem to be any problems. I will be adding more and more features into this because I believe that it has the potential to become a very useful feature.
Currently planning to add:
- Party swap completely all in one go (this will actually be in the very near future..maybe today even :P)
- Partial swapping (believe it or not, this is hard because there's no graphical support)
- Suggest me more :D

How to insert:

Compile into free space the following routine:
Spoiler:


Here's a compiled version:
Code:
11 B5 38 48 01 68 00 29 32 D0 37 48 01 38 01 78 06 29 65 D0 01 30 50 22 51 43 40 18 34 49 09 78 32 4A 64 23 59 43 89 18 50 22 32 4B 00 F0 59 F8 2F 49 09 78 05 29 0B D0 05 22 52 1A 64 23 5A 43 2A 48 59 43 40 18 1B 18 19 1C 2A 4B 00 F0 49 F8 29 48 00 21 64 22 29 4B 00 F0 43 F8 22 48 01 38 02 78 27 49 0B 78 01 32 02 70 01 3B 0B 70 37 E0 23 48 00 78 06 28 33 D0 1C 49 64 22 50 43 40 18 04 1C 19 4B 1A 49 09 78 50 22 51 43 C9 18 19 4B 00 F0 27 F8 20 1C 1B 4B 00 F0 23 F8 14 48 00 78 05 28 0B D0 05 22 12 1A 50 23 5A 43 0E 49 58 43 40 18 1B 18 19 1C 0F 4B 00 F0 13 F8 0A 48 C8 21 49 00 40 18 00 21 50 22 0C 4B 00 F0 0A F8 06 48 01 38 02 78 0A 49 0B 78 01 3A 02 70 01 33 0B 70 1F BD 18 47 B8 70 03 02 01 C0 03 02 84 42 02 02 C0 70 03 02 09 0B 04 08 78 44 02 02 D9 5E 1E 08 29 40 02 02 7D E4 03 08

Usage:

The routine itself manages party storage and storage extraction. What you need to do is determine which one it performs.
If you want to remove a Pokemon from the party and into storage, setvar 0x8000 anything but zero
if you want to remove a Pokemon from storage, setvar 0x8000 0x0
Which variable you used can be changed, as always, by editing the pointer at the bottom of the routine.
The next thing is variable 0x8004. I use this variable to determine the slot of extraction for both the Party and the Storage system.
If I wanted to take the 3rd Pokemon in the party and put it in storage:
setvar 0x8004 0x2
setvar 0x8000 0x1
callasm 0x[routine] +1

The reason for this is to support easy use of special 0x9F. Though you can use copyvar, I suppose.

Finally, the routine writes to RAM a counter, which keeps track of how many Pokemon are in the storage.
This is written at 0x203C000, and can be retrieved by using the "copybyte" scripting command. For example:
copybyte 0x20370D0 0x203C000 'puts the storage counter into variable 0x800D (lastresult).

I tried to keep it simple, and do the work inside the routine, hopefully that paid off.
Here's a very poor sample script. Poor because it handles all the cases, but it doesn't display the system's full potential :P

Spoiler:


That's it for now. Keep an eye out for "addons" for this routine in the future :)
Sorry for the double post. I like seperate posts for my routines to keep the first post's links neat :x

I successfully compiled the routine but it always loads
10850213_754614277939964_2692231022472246242_n.jpg

Everytime I click the pokemon I want to give to him, he always says that.
 
Last edited:

Joexv

ManMadeOfGouda joexv.github.io
1,037
Posts
11
Years
Aww, It really cares for me because I am creating a rom that the title "Pokemon Sea Temple" and it talkes about manaphy.

I wouldnt ind seeing this. I would love to have more than one egg design . I know its graphical but it would oonly need to copy the original routine for showing images and just change the offset.
 

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years
Hey FBI, finally posting in here.
Love all the routines, the Snag Ball is great and thanks for beating me there.

One possible thing I'd like to see is a Trainer Back Sprite swap akin to JPan's one, although his
didn't work 100% correctly AFAIK.

Maybe setting a var which changes which back sprite you load, ie. The Dude, Old Man trainer catch,
etc. based off the Trainer Back Sprite table.

Also I know you mainly hack Fire Red, but I'll have a go at porting these to Emerald and giving you the code, just so people can have more options.
 

Blah

Free supporter
1,924
Posts
11
Years
Aww, It really cares for me because I am creating a rom that the title "Pokemon Sea Temple" and it talkes about manaphy.
I mean The Regular Egg and Manaphy Egg
I'll look into 2 different egg sprites.

EDIT: I took a look, and it seems like "egg" is kind of similar to a status. However, the problem is still the same. You would need to find everywhere the egg picture is loaded and based on species show another egg. I've lost interest learning that it's not a lot of ASM work, and more of a "find where the sprites are loaded" thing. Good luck though :P

I successfully compiled the routine but it always loads
10850213_754614277939964_2692231022472246242_n.jpg

Everytime I click the pokemon I want to give to him, he always says that.
Sorry, this is a problem with my script, not the routine. I have it setup so that it will only take the first Pokemon from storage. Also if it says that in the script then one of the following has occured:
- Your party is full and the storage is full
- The storage is full
- Your party is full and you're attempting to withdraw
- Storage is empty and you're trying to withdraw
- Only 1 pokemon in party and you're trying to deposit

That's the only times when he says it. I've done extensive testing on that routine and I can tell you it works as intended :)

I wouldnt ind seeing this. I would love to have more than one egg design . I know its graphical but it would oonly need to copy the original routine for showing images and just change the offset.
lol. It's loaded in more place than one. You'd have to find these places and fix up the graphics. How would the game be able to tell if an egg is a normal one or a special one? I'll let you handle "just changing the offset and copying the original routine", lol.


Porting Pokemon Emerald Tag-team Battle
I dont think if it requires graphics editing but Ill try,
can you port Emerald Tagteam battle?
Like Steven in Mossdeep
Hi, I've already taken a look at tag team battling. It's honestly beyond me right now, however, this is something that I would like to have soon. I'll try to work with Touched, as he is also doing the same thing.

Hey FBI, finally posting in here.
Love all the routines, the Snag Ball is great and thanks for beating me there.
You didn't even start on the snag ball did you :P?

One possible thing I'd like to see is a Trainer Back Sprite swap akin to JPan's one, although his
didn't work 100% correctly AFAIK.

Maybe setting a var which changes which back sprite you load, ie. The Dude, Old Man trainer catch,
etc. based off the Trainer Back Sprite table.
I'll look into that, np.

Also I know you mainly hack Fire Red, but I'll have a go at porting these to Emerald and giving you the code, just so people can have more options.

If you want to convert to Emerald, go ahead, these routines can be used in whichever way you'd like. Sadly, idc about any ROM that's not FR, so I won't ever be converting them myself. I'm still trying to wrap my head around why people hack non-FR ROMs when doing 3rd generation Pokemon hacking. Fire Red has more research done on it, more routines available for it, and imo, it's got the prettiest default graphics. You might argue that Emerald has more base features on it, but most of these features have been ported already, and we have more routines by hackers for FR. Fire Red master race, long live Fire Red.
 
Last edited:

MrDollSteak

Formerly known as 11bayerf1
858
Posts
15
Years
You didn't even start on the snag ball did you :P?


I'll look into that, np.



If you want to convert to Emerald, go ahead, these routines can be used in whichever way you'd like. Sadly, idc about any ROM that's not FR, so I won't ever be converting them myself. I'm still trying to wrap my head around why people hack non-FR ROMs when doing 3rd generation Pokemon hacking. Fire Red has more research done on it, more routines available for it, and imo, it's got the prettiest default graphics. You might argue that Emerald has more base features on it, but most of these features have been ported already, and we have more routines by hackers for FR. Fire Red master race, long live Fire Red.

Well you sure did get that right ahaha!

Awesome thanks!

Well i do like both Fire Red and Emerald as rom bases, and they certainly have their own strengths.
I like that Emerald has tag battles, dynamic double battles, and a few graphical things like the Pokedex and Type Icons. Also some hacks for it have worked out better such as the PSS icons.

Once I start converting them I'll post them up here for you. Even if you don't plan on using them at all (more than fair enough) it'd probably be nice to post them up in the OP somewhere, as some of your hacks are fantastic (the PSS in particular has A LOT of potential).
 

Lance32497

LanceKoijer of Pokemon_Addicts
792
Posts
9
Years
When I use to pokemon the Item that has an effect of calling regular script, the game restarts.
I used Darthartrons routine and reverse the script pointer and put the compiled routine+1 in Field Script.. If you have an alternate routine, please let me know.

Reset game after loss of a battle

So, wanting to do something similar to older Final Fantasy games, in which the game goes back to the title screen after your party falls, I dove into knizz's IDB and used a lot of trial and error to create this little feature. Let it be my first contribution to ASM hacking.

Use the following ASM:
Code:
.text
.align 2
.thumb
.thumb_func

main:
	SWI 0;

.align 2

Compiled for your pleasure:
Code:
00 DF 00 00

at offsets 0x7F5B6 and 0x7F5D0 to reset the game after displaying the "...player scurried <home/PC>" text.

Credits to FBI for the ASM, shinyquagsire for explaining what this is to me in layman's terms, as well as an improvement, and to knizz for his amazing IDB that helped me find these offsets.

This can be useful for nuzlocke hackers that wish to implement a Savegame delete function when a battle is lost, by simply making a different function, namely, a delete savefile function, and putting a pointer at those offsets instead of my reset code. It can also be useful as a way to create a "GAME OVER" screen of sorts (Just edit the text as necessary). I put those offsets as is because there's enough room for either a very small ASM routine, or a pointer to a location for a different routine in case you want to do more things.

Also, the reason there's two pointers for this is because there's two different cases I have to handle: One for heading back home after losing, and one for heading to the Pokémon Center. That should cover virtually all cases of loss, but I might have missed a few. If I did, let me know, and I'll find and edit in the additional offsets to modify.

How to make it Game Over instead The player scurried blah blah blah
 
Last edited:

Blah

Free supporter
1,924
Posts
11
Years
Well you sure did get that right ahaha!

Awesome thanks!
..other text about ROM bases...
Yeah, I can fix my OP to have the Emerald version of the routines too (if you provide them :P).

When I use to pokemon the Item that has an effect of calling regular script, the game restarts.
I used Darthartrons routine and reverse the script pointer and put the compiled routine+1 in Field Script.. If you have an alternate routine, please let me know.
How to make it Game Over instead The player scurried blah blah blah
1) I don't know why it's reseting, I haven't tried Darthatron's method and I don't have another method :x
2) This is a text edit. Look for the text string in the ROM and change it.

Player Backsprite swapping


So basically, it just sets your backsprite to another backsprite.

How to insert:

Compile into free space the following routine:
Spoiler:


Usage:

In a script insert:
setvar 0x8000 0x[backsprite number]
callasm 0x[routine +1]

Here is a list of possible backsprite numbers:
Code:
0x0 - Male Hero
0x1 - Female Hero
0x2 - Brendon
0x3 - May
0x4 - Teachy TV guy
0x5 - Old man
Greater than 0x5 - game crash :3

Before using this routine there are a few things you should know about it. There is a limit of 6 possible backsprite swaps including: Male Hero, Female Hero, Brendon, May, Teachy TV guy, Old man.
If you need to have more than 6, then figure that out yourself. Otherwise I would just edit over the existing ones rather than inserting new ones.

The second thing you need to know is that this routine works by changing the Player's gender byte. You need to set it back to normal after you're done with the event, or it will reflect in the overworld in the form of a nice buggy player char.

However, you cannot use the checkgender scripting command to figure this out, because we overwrote that byte. So luckily for you, I already thought of that and decided to write the player's backsprite to RAM offset 0x203C231.

So to set it back, use this after the end of your event:
Code:
copybyte 0x20370B8 0x203C231 '@will put the player's old gender byte in 0x8000
callasm 0x[routine +1]

That's it. Here's a nice video:
 
Back
Top