• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Research: Editing Move Animations

Muffin™

Knows your age
429
Posts
14
Years
  • Alright. So we know that move animations in the generations are part of the game to make the Pokemon's move unique.

    img_news_03_10.jpg


    Now, I was thinking: Could me edit these animations? It could be complicated, but could be done, or, it could be impossible. Any ideas you have that could make this happen?

    I was thinking that we could get a spriter to make the move(?) and insert it somehow... by ASM hacking or HEX editing? I don't know yet, but maybe we could come up with an idea to edit the move animation.
     

    Full Metal

    C(++) Developer.
    810
    Posts
    16
    Years
  • first of all, anything is possible (within reason of course...) for the games.
    out of reason involves:
    writing to a file
    controlling anything outside of the gba memory
    and there are some rips of d/p effects on tsr i think...
     
    1,775
    Posts
    15
    Years
  • can't this be done whith unlz gba?

    Well...
    Various sprites and backgrounds for the moves can be edited, but I'd imagine people would also like to be able to edit how the move animations actually... Move, y'know? For example, the current GBA FlameThrower animation is like a streaming line of the same fire-sprite, whereas in Gen 4 it's like a proper billowing fire. Sure, it'd be near impossible to imitate that kind of quality in the 3rd Gen games, but to edit the pattern made by the move sprites would be cool.
     

    Dabutcha

    Creator of the Alphanigma Saga
    45
    Posts
    14
    Years
  • I'm sure that somewhere in Unlz you will find the attack animations. Look around all the pictures you may have called "useless".
     

    NatureKeeper

    Guest
    0
    Posts
    Of course it's possible through UnlZ ;)
    Flora Sky has it ;)
    Sky made animations for Shadow Force, Roar of Time and some other moves =)

    The graphics are edited. However, the move's animation itself cannot be edited. With normal means, at least. For example, I want to change bullet seed to Dark Pulse, with an animation very similar to that of DPPtHGSS. Graphics only cannot do the desired job.
     

    560cool.

    An old timer?
    2,002
    Posts
    14
    Years
  • I've done it accidentaly while messing with unlzGBA.
    I found the Surf animation, the Confuse Ray one ... it is quite simple, but key word is "messing" while you need something serious ... x_x
     

    Xela

    Do you believe in yourself?
    349
    Posts
    16
    Years
    • Seen Feb 18, 2024
    I've done it accidentaly while messing with unlzGBA.
    I found the Surf animation, the Confuse Ray one ... it is quite simple, but key word is "messing" while you need something serious ... x_x

    That's the Graphics, not the animations.

    Yeah, it would be quite a thing to be able to edit the animations of attacks, however, I don't think it's possible through Hex editing... Or it may be, but for me it sounds a bit complex to edit it with a Hex editor.

    Another suggestion that can be taken in mind, why not make a list, listing all the graphics for the different attacks? And I'm not sure, but it's possible that some attacks share the same images.

    However, I have no experience with finding this kind of stuff, so I'll leave it to those who know.
     

    kittopian

    Source engine coder
    11
    Posts
    14
    Years
  • In the attack data table, there might be a pointer to graphics and maybe a byte or two on the actual animations...
    If so it might be possible to repoint and extend the table to program in fully functional moves with animations and other aspects, without overwriting.

    If anyone experianced in the field, can they can find the time... Look in to it!
     
    1
    Posts
    12
    Years
    • Seen Feb 5, 2012
    From what I've seen in UNLZ-GBA, the animations are just frames that are in the same picture aligned in increasing order vertically!
     

    Jambo51

    Glory To Arstotzka
    736
    Posts
    14
    Years
    • Seen Jan 28, 2018
    I know the location of the move animation table in FR. It's at 0x1C68F4.
    Each pointer in the table (and the table is 355 entries long - 1 for each move!) points to a script of sorts. Sadly, we know very little about these scripts, apart from tha fact that 00 loads graphics, 02 executes animations and 05 seems to be a waitstate sort of command -That is, it waits for the already executed animations to finish before continuing.

    That is the sum of our knowledge on the move animations. Hope that helps.
     

    droomph

    weeb
    4,285
    Posts
    12
    Years
  • I know the location of the move animation table in FR. It's at 0x1C68F4.
    Each pointer in the table (and the table is 355 entries long - 1 for each move!) points to a script of sorts. Sadly, we know very little about these scripts, apart from tha fact that 00 loads graphics, 02 executes animations and 05 seems to be a waitstate sort of command -That is, it waits for the already executed animations to finish before continuing.

    That is the sum of our knowledge on the move animations. Hope that helps.
    What is the "end" command?
     

    droomph

    weeb
    4,285
    Posts
    12
    Years
  • I would also like to mention that when I replaced the pointer to 0x8000000, the game restarted, which means that it has something to do with ARM.
     

    Xenesis

    Syogun Changer
    55
    Posts
    18
    Years
  • I would also like to mention that when I replaced the pointer to 0x8000000, the game restarted, which means that it has something to do with ARM.

    Actually, it doesn't mean that in the slightest.

    0x800000 is the entry point for the ROM - it's where it starts in RAM. (Eg, when you turn on your GBA, it starts running the code at 0x8000000 in ARM mode).

    What's happening is that these pointers are obviously to custom assembly code for each attack in some fashion - when you change the pointer to 0x08000000 you're telling the game whenever it runs to this pointer to 'run from the start of the rom, and run in ARM mode'. Hence, why it resets. If you changed it to 0x08000001 it would probably crash, because it goes to the ROM entry point, except in THUMB mode.

    Apologies if this seems overly pedantic, but it's just for the benefit for anyone else that's reading the topic.
     

    D3StR0Y4mike

    Dragon Tamer
    9
    Posts
    12
    Years
    • Seen Nov 29, 2014
    The FireRed hack Pokemon Vega has lots of custom animations...
    use it for research
     
    1,323
    Posts
    16
    Years
    • Seen Dec 9, 2023
    I know the location of the move animation table in FR. It's at 0x1C68F4.
    Each pointer in the table (and the table is 355 entries long - 1 for each move!) points to a script of sorts. Sadly, we know very little about these scripts, apart from tha fact that 00 loads graphics, 02 executes animations and 05 seems to be a waitstate sort of command -That is, it waits for the already executed animations to finish before continuing.

    That is the sum of our knowledge on the move animations. Hope that helps.
    I just thought of something, why try to edit the scripts with hex? Aren't they in ASM?

    Now, I haven't tried this (can't right now, procrastinating on studying for school atm), but can't we easily view the animation routines with VBA-SDL-H? I'm assuming that would make things a crapload easier to make custom animations. If I recall correctly, VBA-SDL-H has a function where you can decompile thumb routines if you know the offset.

    I'm assuming this is what Pokemon Vega did to create nearly flawless animations, and this is what I'm planning on doing in the near future (if it works)

    EDIT: Just remembered, regular VBA has a function to view thumb routines, while VBA-SDL-H lets you view last executed thumb routine

    EDIT: nevermind, just read JPAN's post in the battle script thread... so apparently it is a scripting language?
     
    Last edited:

    DoesntKnowHowToPlay

    Tiny Umbrella with Lots and Lots of Good
    265
    Posts
    12
    Years
    • Seen Feb 24, 2024
    It is a scripting language, from what I've seen. Commands can be an arbitrary number of bytes, depending on which one. Now that I think about it we probably don't even need to know the method offsets- VBA-SDL-H has a function to break on reading a byte, which should let us find the animation code pretty easily.

    Anyway, some of the ones I've been able to figure out:

    00 XX XX: Loads sprite data. These are usually at the very beginning of the script, although there doesn't seem to be any obvious problem with having them in the middle.

    04 XX: Delays script execution for XX units of time (frames? not really sure).

    05: Halts script execution until currently running animations finish.

    08: Ends the script. There *are* jumps in this scripting language, though since they point to a location and are followed by the address this means any block of script always ends in 08.

    19 XX XX: Plays a sound. Might be able to play music if given the right parameters, I haven't mess with this one much.
     

    droomph

    weeb
    4,285
    Posts
    12
    Years
  • Hey, colcolstyles has a post in the battle animation thread about where you can find animation script asm, and much like how you can decompile an OW script command's ASM that could probably help you too.

    Also iirc 0C XX XX is a transparency command.
     
    Back
    Top