So, with the help of Chaos Rush's thread I managed to extend the battle animation background. That means I can insert custom Backgrounds with their custom palletes and custom tilemaps.
So here's what we need:
1. FireRed Rom
2. Hex Editor (I'll be using HxD)
4. Custom Background (Background must be divisible by 8 and indexed), and Tilemap.
6. Free Space Finder (Optional if you know how to things right)
Ok, so first let's get it down with the table offsets.
The table starts at 0x3ADE18, and ends at 0x3ADF5B. The table are all pointers so we'll just to have put pointers for our image, pallete, and tilemap. It goes like this.
[XX XX XX 08] [YY YY YY 08] [ZZ ZZ ZZ 08]
XX = pointer to graphics
YY = pointer to palette
ZZ = pointer to tilemap
A small tutorial about pointers
For example your offset for the image is 0x900000
It has to be 00 00 90 08. You need to reverse the offset so it will become a pointer. Also don't forget to put 08 at the end of the pointer or else it will not work.
So let's get it down to extending it.
Step 1) Open your FireRed Rom in a Hex Editor
Step 2) Goto offset 0x3ADE18
Now select 0x144 or 3444 bytes.
And then Ctrl+C or simply copy.
Step 3) Find some free-space that can hold 0x144 bytes so to make things easier I'll be using 0xA00000. So goto 0xA00000.
And paste it using Ctrl+B (though in Hex Workshop you have to highlight the 0x144 bytes and then Ctrl+V)
Make sure you don't use Ctrl+V or else the size of the Rom will change but it's only in HxD.
And then Ctrl+S or Save.
Step 4) Repointing the location of our table.
since it's located at 0xA00000, we need to search for a pointer pointing to 0x3ADE18. So the pointer will be looking for is 18 DE 3A 08 Find it using Ctrl+F and change it to our current table location which is 0xA00000 so replace it with 00 00 A0 08. But since it's only one pointer I'll just give the offset of the pointer so you can change it directly. The offset of the pointer is 0x73960. So goto 0x73960...
And write our new pointer.
Then Ctrl+S or Save. And there you have it you have successfully repointed the Background Animation Table.
Ok, so originally there are 0x1A or 26 backgrounds in the game. So with that small amount we can insert many custom backgrounds as we want.
Step 5) So now we'll be inserting our new background. So for it to be easy I'm gonna use the Waterfall Animation in DP. I'll be putting out a download link for the Waterfall so you can try it out.
First make sure the image is indexed and it's size is divisible by 8 so it can be accepted by UNLZ. So Load your Rom in UNLZ.
Then Load your Background I'm gonna use the Waterfall background.
Now Click Write to Rom. I'll be using 0xA10000 and 0xA20000 for the image and pallete respectively. Make sure to uncheck the Automatically Fix Pointers Checkbox.
Then Click Ok. After that load your Raw file or Tilemap that you made using NTME. (I'm not gonna cover that here but the right size for the tilemap 32x32 just in case you don't know. And also have pallete #2 for the image.)
Now goto file and then Load Raw...
Now Click Write to Rom, make sure you uncheck everything except for Export Image. I'm gonna use 0xA30000 for the tilemap offset.
Now Click ok, and you're done inserting.
Step 6) Now will be placing the new pointers in our table.
Our Image Offset is - 0xA10000 Our Pallete Offset is - 0xA20000 Our Tilemap Offset is - 0xA30000
So we'll place 00 00 A1 08, 00 00 A2 08, and 00 00 A3 08 at the end of our table in 0xA00000.
And then Ctrl+S or Save.
By doing that the background will take up 0x1B so put that in your battle animation and test it in your game.
Step 7) Testing time
Taa Daa! Now you can Insert more custom backgrounds yourself... :)
By the way, I believe the Ruby Background table offset is 37F374 (Pointer 74 F3 37 08). Can someone help me verify this? Also, is there a limiter byte in Ruby that prevents the loading of any backgrounds beyond 0x1B? Because if I place the pointers at the end of the table and use command 14 1B 17 the game freezes, but if I overwrite background 0x1 with my custom background pointers it works.
Last edited by Artemis64; March 26th, 2014 at 02:26 AM.