The PokéCommunity Forums

The PokéCommunity Forums (
-   Tools, Tutorials & Resources (
-   -   Tutorial Adding New Custom Animation Backgrounds (

tajaros February 16th, 2013 5:15 PM

Adding New Custom Animation Backgrounds
1 Attachment(s)
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)
3. Notepad
4. Custom Background (Background must be divisible by 8 and indexed), and Tilemap.
5. VBA
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

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... :)

Chaos Rush

Related threads that can help you out with battle animations.

Chaos Rush's thread:

Itman's Thread:

Jambo51's Thread:

Omega Zero February 19th, 2013 7:13 PM

Wow, this is an awesome tutorial.
and will help a lot of people.
now i can finally have a judgement Arceus!!!

BlackWhiteRobin April 23rd, 2013 8:18 PM

*Mega Revive*

Can we create animated BGs yet using these?

Shadowraze April 23rd, 2013 8:41 PM


Originally Posted by robin22gongon (Post 7637810)
*Mega Revive*

Can we create animated BGs yet using these?

No, but you can use the scrolling animations in the animation itself.

Eren Jaeger April 24th, 2013 3:42 AM

Very helpful! heh. I'll give it a try *sniffs*

Artemis64 March 26th, 2014 1:59 AM

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.

Pokemon_XY November 12th, 2015 1:46 AM

1 Attachment(s)
Re-upload of the attachment in the main thread as the forum was hacked:

All times are GMT -8. The time now is 6:27 AM.

Like our Facebook Page Follow us on Twitter © 2002 - 2015 The PokéCommunity™,
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / Poké
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.

Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2015.