• 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?".
  • Forum moderator applications are now open! Click here for details.
  • 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.

Research: Study on the Special and Special2 commands

Crizzle

Legend
942
Posts
8
Years
  • Age 29
  • USA
  • Seen Jan 7, 2024
Not sure if this is well known or if I should even revive a 3 year old thread but I thought this was relevant(this is the only firered specials):
special 0x17B doesnt just send you on a boat to vermillion. It sends you to certain boat destinations depending on what variable 0x8006 is. Like if 0x8006 is 0x0, it will be vermillion. But if it's 0x1, it'll send you to one island, if 0x2 two island, 0x3 to 3 island and so on.
 
5,256
Posts
16
Years
Not sure if this is well known or if I should even revive a 3 year old thread but I thought this was relevant(this is the only firered specials):
special 0x17B doesnt just send you on a boat to vermillion. It sends you to certain boat destinations depending on what variable 0x8006 is. Like if 0x8006 is 0x0, it will be vermillion. But if it's 0x1, it'll send you to one island, if 0x2 two island, 0x3 to 3 island and so on.

For more info on changing the locations that 0x8006's value actually refers to: http://www.pokecommunity.com/showthread.php?p=8698352#post8698352
 

Crizzle

Legend
942
Posts
8
Years
  • Age 29
  • USA
  • Seen Jan 7, 2024
Not to be that guy who keeps reviving this thread, but as I said before this is the only thread on Fire Red specials. I'm not sure how well known this is but special 0x96 is used to set the flag that is stored in variable 0x8004.

For example:
setvar 0x8004 0x27B
special 0x96

That would set the flag 0x27B.

The original post kind of addresses this but says that don't know where its used in game. This is used in game in Silph Co, when the player uses the card key to unblock the doors. Not sure why it doesn't just use setflag but yeah...
 
64
Posts
8
Years
I didn't actually want to revive this thread, but as it's the only one on fire red specials, I have to.

Does anyone know how specials 3D and 45 are used, during testing I have only got 0x3D to give a byte result of 01 00 and 0x45 to get a result of 69 9F.
 

BluRose

blu rass
811
Posts
9
Years
I didn't actually want to revive this thread, but as it's the only one on fire red specials, I have to.

Does anyone know how specials 3D and 45 are used, during testing I have only got 0x3D to give a byte result of 01 00 and 0x45 to get a result of 69 9F.
well
3D checks if you only have one pokémon. if you have more, then you can do a double battle, so it returns 0
45 is gonna be used with special and not special2 (falls under 9F69 category)
it likely writes its result to var 800X, X being a number from 0-D nonetheless
yeah i know it says it writes its result to the given var but obvi it's not doing so for you
 

Lunos

Random Uruguayan User
3,108
Posts
15
Years
045 checks for all viable pokemon. result stored in given variable
0FF checks pokemon in 0x8004's number and places it in given variable
By "given variable", does it mean that they're used with tile scripts or that I must provide them with a var inside the script?
If one of these can be used to check for a Pok?mon's species and store its value on X Var, that'd be great.
 
7
Posts
5
Years
  • Age 19
  • Seen Nov 13, 2019
0x14f is used in the script with special2 where you get the national pokedex certificate and checks if you receive the certificate or not
 
124
Posts
8
Years
  • Age 37
  • Seen Mar 7, 2024
Which special would check my party for a pikachu and remove it from my party? And which variable would it use so i can make a person return it back to me at a different higher/lower level?
 
15
Posts
6
Years
  • Age 27
  • Seen Feb 27, 2020
I really hope that I won't get penalized for posting here...

I think I have what the use of two other specials are.
Special 0x129 activates the roaming legends. It uses variable 0x4031 to determine which will roam. I tested this out by activating the special, and "faking" a battle with the legend using the wildbattle command. The icon then showed up on the World Map, indicating where it was.

I think Special 0x175 is used to calculate the amount of money dropped when you whiteout. In the whiteout script, Special 0x175 is called, and immediately following is the "player dropped $[buffer1]s" message. You mentioned how the Special 0x175 buffers a calculated value, so it seems like this is a likely reason for it. I could be wrong, though, since the amount of money lost is based on level of Pokemon and number of badges, not status.

I know I am really late, but I want to edit the roaming legendaries to make them all roam. How would I go about doing that. i'm new to rom hacking, and I have been trying to teach myself because i can't find anything online or anyone to answer questions, but i can't seem to figure out this. I feel like once I know, it'll be easy and make sense. But so far, nothing.
 
124
Posts
8
Years
  • Age 37
  • Seen Mar 7, 2024
Hey, i think what u are asking is easy to do...special 0x129 activates the roamers...but it uses var 0x4031 to determine which one...the way I'd make this work would be like this:

Make 3 separate scripts or even 1 maybe, you would have to check. The script would setvar 0x4031 0x1 and then call special 0x129 then end the script. The next script would setvar 0x4031 0x2 and then call special 0x129 then end. And the last script would setvar 0x4031 0x3 and call special 0x129 and then end it...i dont know if u could do all three in just one script, as i havent tested this out myself, but i will soon. Let us know what you've found, ill try it myself and post my findings if u havent...
 
Last edited:
Back
Top