Jump to content

[Tutorial][HGSS] Remove Heal Bell's check against Soundproof


Recommended Posts

I know, I'm on thread-spree lately, and it's not over since I have at least 4 more tutorials to get down!

Disclaimer: Read all the paragraph before attempting any manipulation.

  • Decompress overlay9_0012.bin
  • Go to the very bottom of the file
  • You should see something like that:

2D 00 2E 00 2F 00 30 00 67 00 AD 00 FD 00 3F 01
40 01 30 01 95 01 C0 01

Q: What are those?

A: Those are the very moves blocked by Soundproof.

Each move is 2 bytes long, for example let’s try this one: 30 01.

Invert the 2 bytes and you get 01 30.

Now convert from hex to decimal and you get 304.

304 is the ID number for the move Hyper Voice!

Well what move are we trying to break already? Oh yes, Heal Bell.

So the move Heal Bell has been assigned the ID number 215.

Okay 215 in hexadecimal is D7, since moves are 2 bytes long instead let’s go with 00 D7.

Invert the 2 bytes and you get D7 00.

Time to go and check against the previous string…

HEY! But there’s no bytes equal to D7 00 in there!

Explanation: Actually this string lists the moves blocked by an opponent’s Soundproof! Have you ever tried to use Heal Bell against that Exploud? Believe it or not but it will work.

When it comes to the move Heal Bell, the game will instead perform a check against all of your team members’ abilities, and if a Pokémon affected by a major status condition happens to have Soundproof, it will not be healed.

Tough luck, huh? But this will come to an end with those simple-to-follow steps.

  • Decompress overlay9_0012.bin
  • Go to offset 0×98A0* and change the value D7 into 00
  • Do the same at offset 0×21ADE*
  • Go to offset 0×98B0* and change the value 2B into FF (anything between 7C and FF included will do the trick)
  • Do the same at offset 0×9906* and offset 0×21AE4*

Offset 0×98A0 is the check for Heal Bell’s execution for the Pokémon on the battlefield, on the side of the Heal Bell’s user.

Offset 0×21ADE is the check for Heal Bell’s execution for the remaining team members of the Heal Bell’s user team.

Offset 0×98B0 is the check for Soundproof against the Heal Bell’s user.

Offset 0×9906 is the check for Soundproof against the teammate of the Heal Bell’s user (Double battle only).

Offset 0×21AE4 is the check for Soundproof against the remaining team members of the Heal Bell user’s team.

Basically the new instruction is: check if [Pokémon] used move with ID 0 and check for every instance of ability with ID 255.

Note: You shouldn’t replace 2B by 00, because the ability with ID number 0 is used in-game when an ability gets cancelled (Gastro Acid comes to mind), whereas you can replace D7 by 00 since there is no legitimate way to get the move with ID number 0.

* Regions’ differences:

Language            Offset 1               Offset 2               Offset 3               Offset 4               Offset 5

Japanese            0×98A8                 0×98B8                 0×990E                 0×21AE6                0×21AEC
Korean              0×98A4                 0×98B4                 0×990A                 0×21AE2                0×21AE8
Others              0×98A0                 0×98B0                 0×9906                 0×21ADE                0×21AE4

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...