If you're actually doing what you claim to be doing, HxD should look something like this:
The location of my cursor in that image, which is the black vertical bar, is where your cursor should be, and is the location of 0x250C04 in the ROM.
I got it to work by using a battle script instead (along with some more lucky stumbling). I do need help on some things though, mind if I PM you with some questions?
Also, I think this really needs to be in the OP.
If you're going to be giving the moves descriptions (so basically always), you need to move and repoint the table of move description pointers. If you don't, then when you change the description pointers for new moves, it will start to overwrite the Nature names (which follow immediately after the move descriptions), even if it's a preexisting description (i.e. giving Flare Blitz Double-Edge's description). Trust me, I learned this the hard way... Some of what I'm typing here (like explaining pointers) is explained in the OP already, but just to be safe, I'm adding them.
Spoiler:
Step 1:
Spoiler:In a hex editor, go to:
Emerald: 61C524
Ruby: 3C09D8
Sapphire: 3C0A30
Fire Red: 4886E8
Leaf Green: 487FC4
and copy 1416 bytes of data.
![]()
Step 2:
Spoiler:Paste that to free space. Make sure to write down the new offset! (Notepad is your friend.) Also make sure you're overwriting bytes, not inserting them! If you're not overwriting bytes, then you'll change the size of the rom. That does bad things. (Admittedly, I'm not entirely sure what those bad things are, and I've been able to run the rom after changing the file size, but I know it messes some programs up, and you don't want to take the risk anyhow.) If there's no Paste Write/Overwrite option, then select 1416 bytes at the free space address, delete them, then paste the description table. If for some reason you insert instead of overwriting, just go to the end of the rom and delete the excess bytes (the end of the rom should be 00FFFFFF).
![]()
![]()
Step 3:
Spoiler:Once you've pasted that to free space, you need to make sure there's space for all the other pointers - don't want it overwriting your new stuff either, do we?
There are a couple of ways to reserve the space for future pointers. What I personally do is replace FFs with 00s. Select 628 bytes after the end of the new table and fill it with 00s. The table should be 2044 bytes in length overall. If your hex editor doesn't have a Fill function, copy 628 bytes from the beginning and paste it at the end instead (remember, overwrite, don't insert).
![]()
Step 4:
Spoiler:Now we have to tell the game to look at your new description table instead of the old one. We do this by replacing the pointers directed at the old table with ones aimed at the new table.
A pointer, in short, is an address that points to something else in the game's data. It's used for almost every list or table, as well as being used in animations, move effects, scripts... You name it, the game has a pointer in it or to it.
In Emerald, we want to replace pointers to 61C524 with ones to our new offset (E4AA68 for me). For other games, just use the description pointer from the list above instead of 61C524.
However! Pointers don't store addresses normally. Pointers look like this:
ZZ YY XX 08
where XXYYZZ is the address.
So instead of searching for 61C524, we want to search:
24 C5 61 08
and replace it with the new pointer. In my case:
68 AA E4 08
![]()
Step 5:
Spoiler:Now we need to tell PGE to look at the new description list. Before doing this, I suggest making a backup of PGE's files, just in case.
In the folder with PGE (wherever you happened to put it), open the "ini" folder and open "roms.ini" (if it doesn't have a default opening program, use Notepad). In that file, find the game you're hacking (make sure you have this right) and find "AttackDescriptionTable".
The way I do it is I search the rom name, then search "description".
Change it from its original value to your new address (don't use the pointer notation, just a normal address). Make sure not to delete the H before the address - that's what tells PGE that it's looking at a hex value, not a string.
![]()
And there you go.
If you've already messed up the natures, don't worry, it's an easy fix. Follow the tutorial, but instead of just copying 1416 bytes in step 1, copy an additional 4 for every new move you gave a description, and in step 3, fill in 4 fewer bytes for every new move with a description. As I said above, the table should be 2044 bytes in length when you're done.
After that:
Step 1:
Spoiler:Open a fresh ROM in a hex editor. Go to the original move description table, select 1416 bytes, and move your cursor onto the very next byte. This is the start of the natures. In Emerald, it's at address 61CAAC. (I don't know what it is in the other games, sorry.) Once there, select and copy a number of bytes equal to the newly described moves times 4 (at max, 628 bytes). The nature names take up 162 bytes, and the table of pointers for the natures (which follows immediately after) takes up 100 bytes; selecting 264 bytes will get you both (there's 2 bytes extra between the names and the table).
![]()
Step 2:
Spoiler:Go to the nature names' address in your hack and paste overwrite the data fix.
!!WARNING!!
MAKE SURE TO PASTE OVERWRITE! I don't know what the repercussions of inserting at the end of the ROM are, because that just pushes empty space. I DO know exactly what will happen if you try inserting here. Your game will completely cease all function because it will throw off every pointer aimed past this address, breaking everything.
![]()
Nevermind, it works now. However, how do I use the 00s?Hey there. I followed your tutorial, but now (in G3T, as PGE has been taken down) how do I repoint all the moves to their new offsets? I'm really confused :/
Can someone make a tutorial of this but for MrDollSteak's Rombase added to it already? It would be VERY helpful.
Well you obviously did something wrong. Try again? Or walk us through what you did.![]()
Hey guys, I followed the steps correctly though the image is uhhhmmm..... nothing...
So How to fix that? I Dont know how, In PGE, The U-TURN name is fine, in SUMMARY CHECK as well, but inside the battle, thats it! A bla buh blaH thingy appeared... So Could anyone help me?
Oh! Sorry for that! Oh I fixed it! It is in 0x00308a4 hehe, but this is my problem, The new move is supposed to be NORMAL, but in GAME it is DRAGON. How to fix that?Well you obviously did something wrong. Try again? Or walk us through what you did.
00 01 5E 69 1D 08 00 00 02 03 04 05 06 07 09 0A 0E 5C 00 3A 0B 00 0C 00 0D 12 40 00 0F 12 40 00 00 02 03 1D 00 00 00 00 01 F2 7D 1D 08 01 F2 7D 1D 08 FF FF 9D F2 7D 1D 08 09 0A 10 16 00 12 40 00 15 28 47 69 1D 08