The PokéCommunity Forums Fan Games ROM Hacking Help Tools, Tutorials & Resources
Tutorial Adding New Custom Animation Backgrounds

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.

Thread Tools
Old February 16th, 2013 (5:15 PM).
tajaros's Avatar
tajaros tajaros is offline
Hi I'm dawg
    Join Date: Apr 2012
    Location: Philippines
    Age: 19
    Gender: Male
    Nature: Timid
    Posts: 857
    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)
    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
    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... :)

    Chaos Rush

    Related threads that can help you out with battle animations.

    Chaos Rush's thread:

    Itman's Thread:

    Jambo51's Thread:
    Attached Files
    File Type: zip‎ (5.9 KB, 121 views) (Save to Dropbox)
    Reply With Quote
    Old February 19th, 2013 (7:13 PM).
    Omega Zero's Avatar
    Omega Zero Omega Zero is offline
    Is back...
    Join Date: Dec 2009
    Location: I'm always living aren't I?
    Age: 20
    Gender: Male
    Nature: Relaxed
    Posts: 445
    Wow, this is an awesome tutorial.
    and will help a lot of people.
    now i can finally have a judgement Arceus!!!
    Reply With Quote
    Old April 23rd, 2013 (8:18 PM).
    bwrobin's Avatar
    bwrobin bwrobin is offline
      Join Date: Sep 2012
      Age: 20
      Gender: Male
      Nature: Quirky
      Posts: 544
      *Mega Revive*

      Can we create animated BGs yet using these?
      Reply With Quote
      Old April 23rd, 2013 (8:41 PM).
      Shadowraze's Avatar
      Shadowraze Shadowraze is offline
      ur mum
        Join Date: Apr 2013
        Location: ur mum
        Age: 19
        Gender: Other
        Nature: Lonely
        Posts: 798
        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
        Old April 24th, 2013 (3:42 AM).
        Eren Jaeger's Avatar
        Eren Jaeger Eren Jaeger is offline
          Join Date: Apr 2013
          Location: EARTH
          Gender: Male
          Nature: Serious
          Posts: 155
          Very helpful! heh. I'll give it a try *sniffs*
          Music is art
          Reply With Quote
          Old March 26th, 2014 (1:59 AM). Edited March 26th, 2014 by Artemis64.
          Artemis64 Artemis64 is offline
            Join Date: Mar 2014
            Location: Singapore
            Gender: Male
            Nature: Hasty
            Posts: 87
            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.
            Reply With Quote
            Old November 12th, 2015 (1:46 AM).
            Pokemon_XY Pokemon_XY is offline
              Join Date: Aug 2015
              Posts: 58
              Re-upload of the attachment in the main thread as the forum was hacked:
              Attached Files
              File Type: zip‎ (5.9 KB, 30 views) (Save to Dropbox)
              Reply With Quote

              Quick Reply

              Join the conversation!

              Create an account to post a reply in this thread, participate in other discussions, and more!

              Create a PokéCommunity Account
              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

              Forum Jump

              All times are GMT -8. The time now is 2:52 AM.