• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • 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: Ability Resource Thread

Lightningrod Update for FireRed
This has been posted for Emerald, but I don't think it has for FireRed.

Routine: Boost Special Attack
Spoiler:


Battle Script: Put The Address to This in the Above Routine
You need to insert this Battle Script using the same THUMB compiler you use to compile routines. Compile this script to a binary file, put it at the address you wrote at the given space in the script, then put that address at the proper place in the routine above.
Spoiler:
 
Last edited:
Do you have plans to share this update? for Fire Red
Intimidate no longer affects Pokémon with Inner Focus, Oblivious, Scrappy, or Own Tempo.

As it turns out, this was next on my To Do List anyway, so you're in luck!

Intimidate Update
This updates Intimidate so that it doesn't work against Pokemon with Inner Focus, Own Tempo, Scrappy and Oblivious.

Spoiler:


Compile this with a THUMB compiler and put the offset at the top where it says ".equ ROM, 0x8". Then change any pointers to 0x1D9307 to a pointer to where you put this script.
 
Last edited:
As it turns out, this was next on my To Do List anyway, so you're in luck!

Intimidate Update
This updates Intimidate so that it doesn't work against Pokemon with Inner Focus, Own Tempo, Scrappy and Oblivious.

Spoiler:


Compile this with a THUMB compiler and put the offset at the top where it says ".equ ROM, 0x8". Then change any pointers to 0x1D9307 to a pointer to where you put this script.


.equ ROM, 0x8E1BF30 in use
0x1D9307 ~> 0x1D9308
Hyper Cutter absent
Intimidate vs. Intimidate absent
 
Last edited:
.equ ROM, 0x8E1BF30 in use
0x1D9307 ~> 0x1D9308
Hyper Cutter absent
Intimidate vs. Intimidate absent

Oops, I forgot Hyper Cutter so I put it in. Thanks for picking that up!

However, the original script didn't include anything with Intimidate vs. Intimidate. Therefore, it's not in this one. I looked at Bulbapedia and I couldn't find anything saying that Intimidate doesn't work vs. another Pokemon with Intimidate, so I'm not sure what you're referencing?

I am really confused as to why you're trying to correct the pointer you're supposed to replace. The script is at 0x1D9307, I just double-checked. If you search the ROM for 0x1D9308, you will find nothing.

I did say at the end of the post to change the address after ".equ ROM, 0x8" to be the address where you put the script. I put it at 0xE1BF30, but that's not necessarily going to be where you put it (hence why you're supposed to change it). I apologise if that wasn't clear; I put a note about it in the script itself.
 
Oops, I forgot Hyper Cutter so I put it in. Thanks for picking that up!

However, the original script didn't include anything with Intimidate vs. Intimidate. Therefore, it's not in this one. I looked at Bulbapedia and I couldn't find anything saying that Intimidate doesn't work vs. another Pokemon with Intimidate, so I'm not sure what you're referencing?

I am really confused as to why you're trying to correct the pointer you're supposed to replace. The script is at 0x1D9307, I just double-checked. If you search the ROM for 0x1D9308, you will find nothing.

I did say at the end of the post to change the address after ".equ ROM, 0x8" to be the address where you put the script. I put it at 0xE1BF30, but that's not necessarily going to be where you put it (hence why you're supposed to change it). I apologise if that wasn't clear; I put a note about it in the script itself.

Intimidate vs. Intimidate:
[PokeCommunity.com] Ability Resource Thread


Correct Intimidate x Intimidate:
[PokeCommunity.com] Ability Resource Thread


--

Offset=0x1D9308
Original=0D 93 1D 08
Modified=01 E0 EE 08

Offset=0xEEE000
*Only Works at 0xEXXXXX
Compiled: 41 06 E0 EE 08 3F 39 20 00 2E 6C 3D 02 02 00 2E DE 3F 02 02 91 E1 7E E0 EE 08 20 00 00 01 00 73 E0 EE 08 1D 00 00 00 00 01 73 E0 EE 08 1E 00 0C 73 E0 EE 08 1E 00 14 73 E0 EE 08 1E 00 1D 73 E0 EE 08 1E 00 27 73 E0 EE 08 1E 00 34 73 E0 EE 08 1E 00 49 73 E0 EE 08 89 00 73 E0 EE 08 29 00 87 3E 02 02 02 73 E0 EE 08 48 00 02 01 47 10 CD 00 12 40 00 2F 6C 3D 02 02 01 28 15 E0 EE 08 3C

1D9307:
Spoiler:
 
Last edited:
Intimidate vs. Intimidate:
[PokeCommunity.com] Ability Resource Thread


Correct Intimidate x Intimidate:
[PokeCommunity.com] Ability Resource Thread


--

Offset=0x1D9308
Original=0D 93 1D 08
Modified=01 E0 EE 08

Offset=0xEEE000
*Only Works at 0xEXXXXX
Compiled: 41 06 E0 EE 08 3F 39 20 00 2E 6C 3D 02 02 00 2E DE 3F 02 02 91 E1 7E E0 EE 08 20 00 00 01 00 73 E0 EE 08 1D 00 00 00 00 01 73 E0 EE 08 1E 00 0C 73 E0 EE 08 1E 00 14 73 E0 EE 08 1E 00 1D 73 E0 EE 08 1E 00 27 73 E0 EE 08 1E 00 34 73 E0 EE 08 1E 00 49 73 E0 EE 08 89 00 73 E0 EE 08 29 00 87 3E 02 02 02 73 E0 EE 08 48 00 02 01 47 10 CD 00 12 40 00 2F 6C 3D 02 02 01 28 15 E0 EE 08 3C

1D9307:
Spoiler:

I think you've misunderstood what changing a pointer means. You're not supposed to go to 0x1D9307, you're supposed to search for "07 93 1D 08" and change it to "CC BB AA 08" (where AABBCC is the offset you inserted the script at).

I tested it on my ROM and Intimidate vs. Intimidate works fine, so perhaps it was due to this mistake.
 
I think you've misunderstood what changing a pointer means. You're not supposed to go to 0x1D9307, you're supposed to search for "07 93 1D 08" and change it to "CC BB AA 08" (where AABBCC is the offset you inserted the script at).

I tested it on my ROM and Intimidate vs. Intimidate works fine, so perhaps it was due to this mistake.

Haha, this ''More explained '' way worked!

A super thank you

For the ability and without forgetting the support '-'

Haha, the next ability will be Stench?
Spoiler:
 
Last edited:
Hey guys!

I need help with making an existing move use the wrap effect(effect ID 42 on fire red)

I have been trying to make leaf tornado work this way but it says "pokemon was hurt by sand tomb" No matter what and it defaults to the wrap animation in between attacks.

I would for someone to help me with getting the script to say "pokemon was hurt by leaf tornado" and then the animation between the turns was the leaf tornado animation as well!

Thanks!
 
I'm sorry I might be asking something either painfully obvious, or that I READ but didn't ultimately understand. for an abilities instructions when it says to insert and there is the XX XX XX values... what am I putting there exactly? I understand it's my offset+1 but if I'm being painfully obvious I am not entirely sure what that is referencing.

In this example I am using tangled feet, the exact text is "#Insert 00 49 08 47 xx xx xx 08 at 080468EC" in case that was needed.
 
I'm sorry I might be asking something either painfully obvious, or that I READ but didn't ultimately understand. for an abilities instructions when it says to insert and there is the XX XX XX values... what am I putting there exactly? I understand it's my offset+1 but if I'm being painfully obvious I am not entirely sure what that is referencing.

In this example I am using tangled feet, the exact text is "#Insert 00 49 08 47 xx xx xx 08 at 080468EC" in case that was needed.

take your offset in hex, for fire red the first free space is at like 71A240:

71A240
71 A2 40
switch the first and the last
40 A2 71

so to add 1 there?
41 A2 71

hope this helps!
 
take your offset in hex, for fire red the first free space is at like 71A240:

71A240
71 A2 40
switch the first and the last
40 A2 71

so to add 1 there?
41 A2 71

hope this helps!

You are more than cool, you are awesome. I was didn't know I had to do them in reverse-little. Thankyou so much!
 
Lightningrod Update for FireRed
This has been posted for Emerald, but I don't think it has for FireRed.

Routine: Boost Special Attack
Spoiler:


Battle Script: Put The Address to This in the Above Routine
Spoiler:



Abilities that have some form of immunity do not work.
( Flash Fire, Lightning Rod, Water Absorb... )
 
When you placed the hook in, did you add 1 to the routine's pointer? Because you need to do that. If you did, I'm not sure what the problem is.

I have the same issue with pokemon emerald and I read your solution, but I don't understand it. what is the hook and where do I add the routine pointer?
 
I have the same issue with pokemon emerald and I read your solution, but I don't understand it. what is the hook and where do I add the routine pointer?

Are you inserting Sturdy as well? Well, in general, the hook is the same. The hook is where you tell the game to look at the new effect. If you look at the code for Sturdy and look at the bottom, it'll say this:

#insert 01 48 00 47 00 00 xx xx xx 08 1A 4A at 0479D2

The XXXXXX is where you inserted the routine but reverse endian, and +1.
Here's an example. Say you place it at 0x800000.
Now first, add one: 800001
Split it into thirds: 80 00 01
Reverse the order: 01 00 80
That's what you replace XX XX XX with.

So at 0x479D2, you'd type in 01 48 00 47 00 00 01 00 80 08 1A 4A.
 
Are you inserting Sturdy as well? Well, in general, the hook is the same. The hook is where you tell the game to look at the new effect. If you look at the code for Sturdy and look at the bottom, it'll say this:

#insert 01 48 00 47 00 00 xx xx xx 08 1A 4A at 0479D2

The XXXXXX is where you inserted the routine but reverse endian, and +1.
Here's an example. Say you place it at 0x800000.
Now first, add one: 800001
Split it into thirds: 80 00 01
Reverse the order: 01 00 80
That's what you replace XX XX XX with.

So at 0x479D2, you'd type in 01 48 00 47 00 00 01 00 80 08 1A 4A.

Yes, I am. So do I have to insert the routine and then go to 0x0479D2, do the same that you did with 800000 (01 00 80), but with 0479D2? If so, idk how to add +1 to this much of letters. I'm new to this, sorry.
 
Yes, I am. So do I have to insert the routine and then go to 0x0479D2, do the same that you did with 800000 (01 00 80), but with 0479D2? If so, idk how to add +1 to this much of letters. I'm new to this, sorry.

Insert the routine into free space, where a bunch of FFs. Make note of the starting address, the first byte of free space you used.
Then you do what I said, go to 479D2 and fill in the 01 48 stuff using the pointer.
For letters, its 9 -> A -> B -> C -> D -> E -> F.
Also make sure that the address you put the routine in ends in a 4, 8, C or 0.
 
I think this is the proper thread to ask this:

How can I make Ground and Electric types immune to Static as well as Grass type immune to Effect Spore?

Thanks in advance.

PS: Please answer assuming that I'm totally stupid and can barely understand how to spell "pizza".
 
Insert the routine into free space, where a bunch of FFs. Make note of the starting address, the first byte of free space you used.
Then you do what I said, go to 479D2 and fill in the 01 48 stuff using the pointer.
For letters, its 9 -> A -> B -> C -> D -> E -> F.
Also make sure that the address you put the routine in ends in a 4, 8, C or 0.

Still doesn't work. So what I did was inserting the routine in 0xE61360, then I went to 0479D2 and did the ''01 48...'' thing, so I wrote ''01 48 00 47 00 00 16 31 6E 08 1A 4A''. and then I saved it all and the game still froze. Sorry if I am doing something completely dumb and I'm not realizing that.
 
Still doesn't work. So what I did was inserting the routine in 0xE61360, then I went to 0479D2 and did the ''01 48...'' thing, so I wrote ''01 48 00 47 00 00 16 31 6E 08 1A 4A''. and then I saved it all and the game still froze. Sorry if I am doing something completely dumb and I'm not realizing that.

You put in the pointer wrong. You reversed the entire thing: E61361 -> 16316E.
You're supposed to split it into thirds first: E6 13 61. Then you reverse it: 61 13 E6.
Put that in.

Also, if its actually freezing, you pasted it in wrong. When you pasted it, you need to select the exact amount of bytes you want to replace, and right click and click "Paste Insert". If you just paste it straight in, you're going to extend the rom which causes problems. Does your rom end in 0xFFFFF0? Or does it extend past that? If it does, you're gonna have to get a clean rom and redo the insertion. You can check how many bytes you need by checking how long the routine is.
 
You put in the pointer wrong. You reversed the entire thing: E61361 -> 16316E.
You're supposed to split it into thirds first: E6 13 61. Then you reverse it: 61 13 E6.
Put that in.

Also, if its actually freezing, you pasted it in wrong. When you pasted it, you need to select the exact amount of bytes you want to replace, and right click and click "Paste Insert". If you just paste it straight in, you're going to extend the rom which causes problems. Does your rom end in 0xFFFFF0? Or does it extend past that? If it does, you're gonna have to get a clean rom and redo the insertion. You can check how many bytes you need by checking how long the routine is.

YES, IT WORKED! Thank you so much, my friend. I was going to give up on adding new abilities because I just could not make them work xd. and yes, it ends in 0xFFFFF0.
 
Back
Top