Clickteam Fusion 2.5 Project File
Warning
These docs are unfinished and only contain about 10% of the structure.
What is a .mfa file?
A .mfa is the file format used for Clickteam Fusion 2.5 projects. It is a single file that stores images, sounds, events, and anything else the project needs (with a few exceptions), making it easy to store and distribute.
Note
This file structure is only accurate to the latest version of Clickteam Fusion 2.5, .mfa files from older versions may have differences, and .mfa files from Multimedia Fusion 2 are not the same as the listed structure.
File Structure
These docs use Clickteam named variables such as CString, CChunk, CValue, etc.
All of these types are documented and will have links to their documentations, such as the examples above.
| Size | Type | Name | Description |
|---|---|---|---|
| 4 | ASCII | Header | File header, always "MFU2" |
| 2 | UInt16 | Version | Version of the format |
| 2 | UInt16 | Sub-Version | Sub-Version of the format |
| 4 | UInt32 | Editor Version | Version of the editor |
| 4 | UInt32 | Editor Build | Build of the editor (Ex. 296) |
| 4 | LCID | Language | The language set in the project, uses a WinAPI structure |
| ... | CString | Project Name | The name of the project |
| ... | CString | Unknown | |
| ... | CString | Project Path | The last saved file path of the project file |
| ... | CPreviewImage | Preview Image | A small 64x48 image preview of the first frame of the mfa |
| ... | CFontBank | Font Bank | A bank of stored font data |
| ... | CSoundBank | Sound Bank | A bank of stored sound data |
| ... | CMusicBank | Music Bank | A bank of stored music data |
| ... | CImageBank | Icon Bank | A bank of stored icon data |
| ... | CImageBank | Image Bank | A bank of stored image data |
| ... | CString | Project Name | The name of the project, duplicate |
| ... | CString | Project Author | The listed author of the project |
| ... | CString | Project Description | The listed description of the project |
| ... | CString | Project Copyright | The listed copyright of the project |
| ... | CString | Project Company | The listed company of the project |
| ... | CString | Project Version | The listed version of the project |
| 4 | Int32 | App Width | The set width of the window |
| 4 | Int32 | App Height | The set height of the window |
| 4 | RGBA | App Border Color | The set border color of the window |
| 4 | UInt32 | Display Flags | |
| 4 | UInt32 | Graphic Flags | |
| ... | CString | Help File Path | The path of the project's Help File |
| ... | CString | Unknown | |
| 4 | Int32 | Initial Score | The players' initial score |
| 4 | Int32 | Initial Lives | The players' initial lives |
| 4 | Int32 | Frame Rate | The maximum frame rate the application can reach |
| 4 | EBuildType | Build Type | The build type of the project |
| ... | CString | Target File Path | The target output file path of the project |
| ... | CString | Unknown | |
| ... | CString | Unknown | |
| ... | CString | Project About | The listed about of the project |
| 4 | Unknown | ||
| ... | CBinaryFiles | Binary Files | A bank of stored binary files |
| ... | CPlayerCtrls | Player Controls | Player joystick/keyboard controls, "Player" being a Clickteam term |
| ... | CMenuBar | Menu Bar | Data related to the Menu Bar |
| 4 | UInt32 | MDI Window Menu | Index of Window menu for MDI applications |
| ... | CMenuImages | Menu Images | A list of image handles and locations for the Menu Bar |
| ... | CGlobalVariables | Global Values | A list of global value definitions |
| ... | CGlobalVariables | Global Strings | A list of global string definitions |
| ... | CGlobalEvents | Global Events | A structure defining all data relating to global events |
| 4 | EGraphicMode | Graphic Mode | Graphic Modes define how many colors can be used by the application |
| ... | CIconHandles | Icon Handles | A list of Icon Handles with an unknown purpose |
| ... | CQualifiers | Qualifiers | A list of all defined qualifiers in the project |
| ... | CExtensions | Extensions | A list of all defined extensions in the project |
| ... | CFrames | Frames | A list of all defined frames in the project |
Flag Definitions
Display Flags
| Value | Name | Description |
|---|---|---|
| 0x000001 | Maximized on boot-up | Maximize the application window upon start-up |
| 0x000002 | Resize display to fill window size | Stretches the viewport to the size of the window |
| 0x000004 | Change Resolution Mode | Resizes your monitor to the window size when fullscreen |
| 0x000008 | Allow user to switch to/from full screen | Allows the user to switch between windowed and full screen using the defined keybind in the Menu Bar |
| 0x000010 | Heading | Enables the window title bar |
| 0x000020 | Heading when maximized | Enables the window title bar when maximized, disabling this allows for borderless fullscreen |
| 0x000040 | Menu bar | Enables the menu bar and it's keybinds |
| 0x000080 | Menu displayed on boot-up | Displays the menu bar above the window on start-up |
| 0x000100 | No Minimize box | Disables the minimize button on the window title bar |
| 0x000200 | No Maximize box | Disables the maximize button on the window title bar |
| 0x000400 | No Thick frame | Disables the ability to resize the window |
| 0x000800 | Do not center frame area in window | If the viewport is not stretched, instead of centering it in the window, this option places the viewport on the top-left |
| 0x001000 | Disable Close button | Disables the close button on the window title bar |
| 0x002000 | Hidden at start | Minimizes the window on start-up |
| 0x004000 | Unknown | |
| 0x008000 | Keep screen ratio | Forces the window size within a certain ratio of the original window's aspect ratio, works in tandem with the Screen ratio tolerance |
| 0x010000 | Anti-aliasing when resizing | Enables anti-aliasing when the window is sized differently than the original resolution, only usable with Resize display to fill window size |
| 0x020000 | Unknown | |
| 0x040000 | Right-to-left reading | Unknown, similar value exists in object text settings but the Display Flag seems to not effect anything |
| 0x080000 | Right-to-left layout | Flips the window layout horizontally |
| 0x100000 | Unknown | |
| 0x200000 | Fit inside (black bars) | Keeps the aspect ratio of the original viewport even when resized by inserting bars using the Border Color on either the top/bottom or left/right of the window, only usable with Resize display to fill window size |
Graphic Flags
| Value | Name | Description |
|---|---|---|
| 0x00000001 | Multi-samples | Allows the application to play multiple samples at once |
| 0x00000002 | Machine-independent speed | Makes the application skip displaying a frame if the application is not running at the desired frame rate |
| 0x00000004 | Play sounds over frames | This flag makes it so the application no longer stops samples when switching between frames |
| 0x00000008 | Do not mute samples when application loses focus | Allows samples to play when the window is out of focus |
| 0x00000010 | Do not stop screen saver when input evemt | If compiling as a screen saver, this flag makes it so an input will not automatically close the program |
| 0x00000020 | Unknown | |
| 0x00000040 | Unknown | |
| 0x00000080 | Enable Visual Themes | Unsure, Clickteam describes it as "Allows visual themes in the application." |
| 0x00000100 | V-Sync | Runs the application with V-Sync enabled |
| 0x00000200 | Run when minimized | Allows the application to remain running even when the window is minimized |
| 0x00000400 | Run while resizing | Allows the application to remain running while the window is being resized by the user |
| 0x00000800 | Enable debugger keyboard shortcuts | Allows debugger shortcuts to be performed when running the application through the editor |
| 0x00001000 | Show Debugger (Disabled) | When this flag is enabled, the debugger window will not be visible when running the application through the editor |
| 0x00002000 | Do not share data if run as sub-application | Disallows the parent application from sharing global values, global strings, player lives, and player scores when running as a sub-application |
| 0x00004000 | Display Mode: Direct3D 9 | Whether or not the current display mode is Direct3D 9 |
| 0x00008000 | Display Mode: Direct3D 8 | Whether or not the current display mode is Direct3D 8 |
| 0x00010000 | Unknown | |
| 0x00020000 | Unknown | |
| 0x00040000 | Unknown | |
| 0x00080000 | Unknown | |
| 0x00100000 | Unknown | |
| 0x00200000 | Ignore "Destroy if too far" option if "Inactivate if too far" is set to No (Disabled) | Before build 285.1, "Destroy if too far from frame" had no effect if "Inactivate if too far from window" was set to No. If this flag is enabled, this behavior will not be carried over into newer builds. |
| 0x00400000 | Disable IME | Disables the Windows Input Method Editor |
| 0x00800000 | Reduce CPU usage | Unsure what this does, Clickteam describes this as "Allows to reduce the CPU usage when the application is idle. Selecting this option may slightly reduce the performance of the application." |
| 0x01000000 | Unknown | |
| 0x02000000 | Unknown | |
| 0x04000000 | Enable profiling | Enables event profiling when running the application through the editor |
| 0x08000000 | Start profiling at start of frame (Disabled) | When this flag is enabled, profiling will not start at the start of a frame |
| 0x10000000 | Display Mode: Direct3D 11 | Whether or not the current display mode is Direct3D 11 |
| 0x20000000 | Premultiplied alpha | Premultiplies the alpha of every image with their RGB values on compilation, Clickteam claims this is to fix visual issues with shaders on layers |
| 0x40000000 | Optimize events (Disabled) | When this flag is enabled, on compilation, events will not combine with each other as an optimization |
| 0x80000000 | Record slowest app loops | When profiling, this flag makes it so it only records frames (FPS) that are slower than usual, can be used to track down triggered slow downs |