Users browsing this thread: 1 Guest(s)
"Extracting" Battle Animations from Game

#1
Posts: 12
Threads: 2
Thanks Received: 0
Thanks Given: 8
Joined: Mar 2025
Reputation: 0
Status
None
Hi, everyone. I'm not sure what the best way to do this is, but asking here seems like a good start. I'd like to figure out a way to get an animated GIFs or videos with transparencies for battle effects out of FF6. I'm really unsure the best way to go about this. My goal is to be able to use Final Fantasy 6 effects, e.g., Ultima, as stream effects. (In FF6Tools, these are all under Abilities.)

The way that was immediately intuitive to me was to modify the first battle when the game starts to have a solid color background, blank out the sprites for the enemies and player characters, take them out of the magitek armor, and give them the abilities I want to use, remove the battle music, and record that. Then, I'm sure I could figure out some way to work with that. This kinda works, but there are two problems. The first is that the menu at the bottom is still there, and I think that's obscuring the effect a little. The second, which is a smaller problem, is that the player characters have shadows.

Would it be possible to create a hack where all it does is start a scripted battle with no menu (how cutscenes are implemented) and an off-screen character who uses all the abilities I'd like to capture one after the other? What would be a good reference on how to do that?

Thanks!
  Find
Quote  

#2
Posts: 12
Threads: 2
Thanks Received: 0
Thanks Given: 8
Joined: Mar 2025
Reputation: 0
Status
None
It was suggested to me in Introductions that I do a search for "battle animations". I found this thread with a single post. That poster seems to have been taking roughly the same approach I'd like to but deemed it too inefficient. For my purposes, it seems like a very similar approach to what I'd like to do.

I'm still learning my way around FF6Tools, but having an ability be used with no sprites on the screen sounds perfect for me, especially if it's possible to hide the windows on the bottom. Is that feasible? Thanks!
  Find
Quote  

#3
Posts: 2,582
Threads: 99
Thanks Received: 163
Thanks Given: 173
Joined: Aug 2009
Reputation: 52
Status
Nattak\'d
This is the thread I was remembering: https://www.ff6hacking.com/forums/thread...age-3.html
daemoth was the guy. Sadly all the links he posted are now dead, and I don’t think he’s been around anywhere for many years. He explains a bit in post 27 on that thread his basic process he was using to rip battle animations, but it’s probably not going to help very much I’m afraid. Just wanted to share it anyway. He ripped the spell graphics and other graphics and put them on Spriter’s Resource, but they are not animated just static on a sheet… so again I doubt it would help for this, but I’m not exactly sure.


We are born, live, die and then do the same thing over again.
Quote  
[-] The following 1 user says Thank You to Gi Nattak for this post:
  • QnzBrd6502 (03-21-2025)

#4
Posts: 12
Threads: 2
Thanks Received: 0
Thanks Given: 8
Joined: Mar 2025
Reputation: 0
Status
None
Thank you for the reply. I've been messing around in FF6Tools and reading up on alpha compositing. I am realizing I misremembered the cinematic battle scenes. They in fact do always have windows at the bottom. I'm looking into FF6 character AI. I'm working on getting the game to immediately boot into a battle that functions. Progress is progress!

Quick update: so I've got something working where when the game loads, you immediately go into a battle in which a guard with a blank sprite who immediately uses Life 3, Ultima, Life 3, and Aqua Rake on your party, which only has Terra, who also has an invisible sprite and is equipped with a Dirk that causes Stop. That seems like pretty good progress!

The letter buttons (A, B, X, Y) don't work (I discovered this before I added the Stop-Dirk), but they also don't need to. The windows are all also solid pink.

My only two outstanding questions, at least about the ROM hacking, are 1) how can I position Terra in the center of the screen so that any spells that I want to capture, e.g., Life 3, don't go off screen, and 2) how can I make the character shadow also blank?

Okay, last update. The Stop-Dirk doesn't persist after Life 3 revives Terra, so the Guard casts stop. I couldn't figure out how to switch backgrounds, so instead, I had the Guard use Warp and added an event battle with the next background. So the battle repeats over four solid-color backgrounds.

Once I can hide the character shadow and center her, I think that's enough move on to what's next, which is to 1) use RetroArch to record the results, 2) extract individual frames, and 3) do some math to figure out the RGBA values of each pixel in each animation, and 4) create a new bitmaps of each frame of just the ability visual effects with RGBA.

Interestingly, when the fourth event battle gets warped out of, the Magitek march to Narshe plays.
  Find
Quote  

#5
Posts: 188
Threads: 3
Thanks Received: 33
Thanks Given: 4
Joined: Apr 2015
Reputation: 18
Status
None
These should be pretty easy with a hex editor. To skip drawing the character shadow, change C1/3175 (ROM offset 0x013175) to 0x60. To center the character on the screen horizontally, change C2/CF17 (ROM offset 0x2cf17) to 0x00 I'm assuming your character is in the first party slot. You can also adjust the vertical offset by changing C2/CF03 (ROM offset 0x2cf03). Larger values will move the character further down the screen.
  Find
Quote  
[-] The following 1 user says Thank You to Everything for this post:
  • QnzBrd6502 (03-21-2025)

#6
Posts: 12
Threads: 2
Thanks Received: 0
Thanks Given: 8
Joined: Mar 2025
Reputation: 0
Status
None
(03-21-2025, 08:41 PM)Everything Wrote: These should be pretty easy with a hex editor. To skip drawing the character shadow, change C1/3175 (ROM offset 0x013175) to 0x60. To center the character on the screen horizontally, change C2/CF17 (ROM offset 0x2cf17) to 0x00 I'm assuming your character is in the first party slot. You can also adjust the vertical offset by changing C2/CF03 (ROM offset 0x2cf03). Larger values will move the character further down the screen.

Thank you so much. What does the C1/ and the similar prefixes in the FF6Tools editor mean?
  Find
Quote  

#7
Posts: 188
Threads: 3
Thanks Received: 33
Thanks Given: 4
Joined: Apr 2015
Reputation: 18
Status
None
These kinds of hacks are outside the scope of FF6Tools because they're pretty specific. I would categorize these as "asm hacks" because they're changing bytes in the game's assembly code. This is unlike FF6Tools which only modifies the game's data/assets. If you're familiar with 65c816 assembly language at all you can check out one of the disassemblies on the wiki to see what is actually being changed.

The ROM file gets mapped into the SNES CPU address space starting at offset 0xC00000, or C0/0000 in bank/offset notation. So a CPU address of D4/4000 is equivalent to a ROM file address of 0x144000. This is for a HiROM cartridge like FF6. LoROM cartridges like FF4 are mapped a little differently.
  Find
Quote  
[-] The following 1 user says Thank You to Everything for this post:
  • QnzBrd6502 (03-21-2025)

#8
Posts: 12
Threads: 2
Thanks Received: 0
Thanks Given: 8
Joined: Mar 2025
Reputation: 0
Status
None
(03-21-2025, 10:28 PM)Everything Wrote: These kinds of hacks are outside the scope of FF6Tools because they're pretty specific. I would categorize these as "asm hacks" because they're changing bytes in the game's assembly code. This is unlike FF6Tools which only modifies the game's data/assets. If you're familiar with 65c816 assembly language at all you can check out one of the disassemblies on the wiki to see what is actually being changed.

The ROM file gets mapped into the SNES CPU address space starting at offset 0xC00000, or C0/0000 in bank/offset notation. So a CPU address of D4/4000 is equivalent to a ROM file address of 0x144000. This is for a HiROM cartridge like FF6. LoROM cartridges like FF4 are mapped a little differently.

I'm not familiar with 65c816 assembly, but I have a passing familiarity assembly concepts.

Can I use a conventional hex editor? As much as I am curious to dive into all that, for now, I just want to make the changes I need to make for the project I'm working on.
  Find
Quote  

#9
Posts: 188
Threads: 3
Thanks Received: 33
Thanks Given: 4
Joined: Apr 2015
Reputation: 18
Status
None
Yep, a conventional hex editor is all you need. Just make the changes at the ROM file offsets I described in my previous post.
  Find
Quote  
[-] The following 1 user says Thank You to Everything for this post:
  • QnzBrd6502 (03-22-2025)

#10
Posts: 12
Threads: 2
Thanks Received: 0
Thanks Given: 8
Joined: Mar 2025
Reputation: 0
Status
None
(03-22-2025, 10:38 AM)Everything Wrote: Yep, a conventional hex editor is all you need. Just make the changes at the ROM file offsets I described in my previous post.


I tried making the changes you specified one at a time. The last two don't seem to do anything. The first one causes the game to crash. Are those addresses different depending on which version of the ROM you start with? I'm starting with a 1.0 US ROM. Thanks!

I'm using https://hexed.it/ for my editor.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite