Animations
AFMA and FMA files are animated texture formats created for FancyMenu.
AFMA Files
AFMA (Advanced FancyMenu Animation) is the successor to classic FMA files.
AFMA uses a non-ZIP format with smaller files, lower memory use, and better performance than classic FMA.
For large or complex animated textures, use AFMA instead of classic FMA.
Create AFMA files with the built-in creator:
- Open FancyMenu's menu bar.
- Go to Tools -> AFMA Creator.
- Import/convert your frames with the creator.
Classic FMA files remain supported, so existing layouts do not need to be converted immediately.
Classic FMA Files
Making an FMA
A classic FMA file is a ZIP archive with a .fma extension.
File Extensions
Enable file extensions in your file manager before creating or renaming the files below.
On Windows, open File Explorer and enable View -> File name extensions.
Preparation
Create a folder named fancymenu_animation for the archive contents.
Create a required frames directory and an optional intro_frames directory inside it.
In the same folder, create metadata.json. Make sure its file extension is .json, not .txt.
The folder must now contain frames/, intro_frames/, and metadata.json.
The Metadata JSON
Open metadata.json in a text editor and use this template:
{
"loop_count": 0,
"frame_time": 41,
"frame_time_intro": 41,
"custom_frame_times": {
},
"custom_frame_times_intro": {
}
}
Edit the values as needed.
loop_count
Controls how many times the animation plays. Use 0 to loop indefinitely. A positive value plays that many times, then holds the last frame.
frame_time
Sets how long each normal frame remains visible, in milliseconds.
frame_time_intro
Sets the frame time for optional intro frames.
custom_frame_times
Optionally overrides the duration of individual normal frames. This example keeps frames 0 and 1 visible for 5000 milliseconds while other frames use frame_time:
{
"loop_count": 0,
"frame_time": 41,
"frame_time_intro": 41,
"custom_frame_times": {
"0": 5000,
"1": 5000
},
"custom_frame_times_intro": {
}
}
Frame indexes are zero-based: the first frame is 0, the second is 1, and so on.
Add a comma after every custom frame-time entry except the last one.
custom_frame_times_intro
Uses the same format as custom_frame_times, but applies to optional intro frames.
Save metadata.json.
The Frames
Place normal frames in frames/. They must be PNG files named sequentially from 0.png, such as 0.png, 1.png, and 2.png. Other formats and names are not supported.
To extract frames from a video, see Extracting Frames with FFmpeg.
The Intro
Place optional intro frames in intro_frames/. They follow the same PNG naming rules as normal frames, play once before the normal sequence, and do not loop.
Packing the FMA File
Create a ZIP containing the folder's contents. metadata.json, frames/, and the optional intro_frames/ directory must be at the ZIP root, not inside another directory.
On Windows, select the contents of fancymenu_animation, right-click the selection, and choose Send to -> Compressed (zipped) folder.
Locate the resulting ZIP file.
Its root contents should look like this:
Rename the file to fancymenu_animation.fma, replacing the .zip extension. The base filename can be changed, but the .fma extension is required.
The renamed archive is now ready to use as an FMA file.
Using AFMA & FMA Files in FancyMenu
Use AFMA/FMA files anywhere that accepts an image, including Image elements and Image menu backgrounds.
Store the AFMA/FMA file in <game-directory>/config/fancymenu/assets/ so it appears in FancyMenu's local resource chooser.