Deokishisu
Mr. Magius
- 993
- Posts
- 19
- Years
- If I'm online, it's a safe bet I'm at a computer.
- Seen Apr 27, 2025
Reusable TMs in Emerald
So I was taking a peek through good old reseach and development today when I saw a cute little post about resuable TMs. You know, making TMs act like HMs. After seeing that it had been found on Ruby and FireRed, I thought, why not find it one Emerald? So I did.
To do this little bad boy, go to 0x1B6EE0 in your Emerald ROM and change the A9 there to 90.
Simple as that!
Here's a tiny little explanation for those wondering.
First, 0x1B6EE0 is this little section of code called when a TM or HM is being used. For simplicity's sake, I'll show what is relevant:
Code:081B6EE0: 20A9 mov r0, #0xA9 081B6EE2: 0040 lsl r0, r0, #0x1 081B6EE4: 4284 cmp r4, r0 081B6EE6: bhi $081B6EF0
What it does, is first take the number A9, and put it in r0. Then, it takes r0 and left shifts it 1. This is the same as multiplying by 2 (A9 << 1 = A9 * 2 = 152). If one was to look at any item editor, they would see that this is the index of TM50 in Emerald. Then, this new value is compared to r4, which has the index of the TM/HM being used. If this number higher, the game knows that an HM was used, so it goes to the relevant area to keep it.
This is where we come in. What we want the game to think is that all TMs are the same as HMs. So, what we need to do is change the index it looks for into the index for the first TM, rather than the first HM. So looking at the items, TM01's index is 121. Dividing this by 2 gives 90, so that is why we put 90. The only downside to doing this really is that item 120 is included in this check, which doesn't matter because it's not a TM anyway (it's the Devon Goods). So there ya have it!
This may make the TMs reusable, but what about the PP issue? If you can repeatedly use a TM, you can refresh the PP of the move. Like, if I'm mid-Elite Four and have zero PP on Flamethrower, I can use the Flamethrower TM, overwrite the existing Flamethrower move on my Pokemon, and its PP is restored. The true B/W and up functionality will require more code to fix this.
EDIT: I missed a step in restoring PP. Inserting it in the example above, I'd replace the used up PP Flamethrower with another TM move, then I would relearn Flamethrower from the TM again, thus restoring the PP. There has to be another TM move as a middleman.
Last edited: