The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.


Advertise here

Reply
 
Thread Tools
  #1    
Old February 16th, 2013, 05:15 PM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 15
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros

Advertise here
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)
7. NTME/DARTHTME
8. UNLZ

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
Spoiler:
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
Spoiler:


Step 2) Goto offset 0x3ADE18
Spoiler:

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


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


Taa Daa! Now you can Insert more custom backgrounds yourself... :)


Credits:
Chaos Rush
Jambo51
Itman
Hackmew
Darthatron
D-Throgh

Related threads that can help you out with battle animations.

Chaos Rush's thread:
http://www.pokecommunity.com/showthread.php?t=281520

Itman's Thread:
http://www.pokecommunity.com/showthread.php?t=290135

Jambo51's Thread:
http://www.pokecommunity.com/showthread.php?t=263479
Attached Files
File Type: zip Background.zip‎ (5.9 KB, 105 views) (Save to Dropbox)
__________________
Reply With Quote
  #2    
Old February 19th, 2013, 07:13 PM
Omega Zero's Avatar
Omega Zero
Is back...
Community Supporter Tier 4
 
Join Date: Dec 2009
Location: I'm always living aren't I?
Age: 16
Gender: Male
Nature: Relaxed
Send a message via Skype™ to Omega Zero
Wow, this is an awesome tutorial.
and will help a lot of people.
now i can finally have a judgement Arceus!!!
__________________
Reply With Quote
  #3    
Old April 23rd, 2013, 08:18 PM
robin22gongon's Avatar
robin22gongon
 
Join Date: Sep 2012
Location: Want to know? VM me.
Age: 16
Gender: Male
Nature: Quirky
Send a message via Windows Live Messenger to robin22gongon
*Mega Revive*

Can we create animated BGs yet using these?
__________________
LET'S PARTY!
Reply With Quote
  #4    
Old April 23rd, 2013, 08:41 PM
Shadowraze's Avatar
Shadowraze
Love and Peace
 
Join Date: Apr 2013
Location: Philippines
Age: 15
Gender: Male
Nature: Adamant
Send a message via Skype™ to Shadowraze
Quote:
Originally Posted by robin22gongon View Post
*Mega Revive*

Can we create animated BGs yet using these?
No, but you can use the scrolling animations in the animation itself.
__________________
Reply With Quote
  #5    
Old April 24th, 2013, 03:42 AM
Eren Jaeger's Avatar
Eren Jaeger
Pianoist
 
Join Date: Apr 2013
Location: EARTH
Gender: Male
Nature: Serious
Very helpful! heh. I'll give it a try *sniffs*
__________________
Music is art
Reply With Quote
  #6    
Old March 26th, 2014, 01:59 AM
Artemis64
 
Join Date: Mar 2014
Gender: Male
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.
Reply With Quote
Reply
Quick Reply

Sponsored Links


Advertise here
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 08:42 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
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éCommunity.com.
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.