• 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: Ability Resource Thread

AkameTheBulbasaur

Akame Marukawa of Iyotono
409
Posts
10
Years
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:

AkameTheBulbasaur

Akame Marukawa of Iyotono
409
Posts
10
Years
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:

Dreamaker

Banned
97
Posts
14
Years
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:

AkameTheBulbasaur

Akame Marukawa of Iyotono
409
Posts
10
Years
.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.
 

Dreamaker

Banned
97
Posts
14
Years
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:
BIJpBFc.gif


Correct Intimidate x Intimidate:
H5xVqwk.gif


--

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:

AkameTheBulbasaur

Akame Marukawa of Iyotono
409
Posts
10
Years
Intimidate vs. Intimidate:
BIJpBFc.gif


Correct Intimidate x Intimidate:
H5xVqwk.gif


--

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.
 

Dreamaker

Banned
97
Posts
14
Years
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:
7
Posts
5
Years
  • Age 36
  • Seen Feb 19, 2022
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!
 
6
Posts
3
Years
  • Age 27
  • Seen Apr 22, 2024
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.
 

BluRose

blu rass
811
Posts
10
Years
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!
 
6
Posts
3
Years
  • Age 27
  • Seen Apr 22, 2024
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!
 

Dreamaker

Banned
97
Posts
14
Years
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... )
 
21
Posts
3
Years
  • Age 25
  • Seen Dec 29, 2020
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?
 

ShyRayq

Unprofessional Unprofessional
1,856
Posts
16
Years
  • Seen Apr 2, 2024
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.
 
21
Posts
3
Years
  • Age 25
  • Seen Dec 29, 2020
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.
 

ShyRayq

Unprofessional Unprofessional
1,856
Posts
16
Years
  • Seen Apr 2, 2024
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.
 
34
Posts
3
Years
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".
 
21
Posts
3
Years
  • Age 25
  • Seen Dec 29, 2020
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.
 

ShyRayq

Unprofessional Unprofessional
1,856
Posts
16
Years
  • Seen Apr 2, 2024
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.
 
21
Posts
3
Years
  • Age 25
  • Seen Dec 29, 2020
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