Best Guess about the Multimedia Fusion CCA file format, including misc. notes and doodles =Smidge= Offset (hex) Size Content ======================================= 00 4 bytes "GAME" Indicates this is a "compiled" stand alone game data file "CnC2U" Indicates this is a non-playable data file (From demo version only?) ONLY APPLICABLE TO "GAME" file header! ********************************************************************************************** ********************************************************************************************** 04 2 bytes Unknown 06 to F7 ? NUll terminated strings, Application Title and Author info F8 to 1A1 ? Vital file information... 1A2 to 3A1 512 bytes 32x32 pixel Icon information. 4 bits/pixel indexed pallette 3A2 to 421 128 bytes 32x32 pixel Icon Mask. 1 bit per pixel. 1=Transparent 0=Opaque 422 to 4A1 128 bytes 16x16 pixel Icon information. 4 bits/pixel indexed pallette 4A2 to 4E1 64 bytes 16x16 pixel Icon Mask. 1 bit per pixel. 1=Transparent 0=Opaque Icon pallette? ********************************************************************************************** ********************************************************************************************** Sprite frame header ------------------- 00 2 bytes Header size not including this value 02 2 bytes? Unknown 04 2 bytes? Unknown 06 2 bytes? Unknown 08 2 bytes? Unknown 0A 4 bytes? Length of RLE data 0E 2 bytes Width of image frame 10 2 bytes Height of image frame 12 2 bytes Encoding flags. "0404" = 24bpp; "0602"= 16bpp (RGB555); "0301" = 8bit palette index 14 2 bytes X position of frame hotspot 16 2 bytes Y position of frame hotspot 18 2 bytes X position of frame action spot 1A 2 bytes Y position of frame action spot RLE data begins immediately after header. Sprite data is in RLE format. CC BB GG RR (24bpp) CC XX XX (16bpp RGB555) CC XX (8bpp Palette index) "CC" is control code, if applicable: ---------------------------- 8? = Literal translation next ? pixels. Read as plain pixels 0? = RLE, next pixel chunk describes the next ? pixels 00 = End of image One pixel seems to be "consumed" from a RLE when a new line is added... "AGMI" Block. Palette and sprite image data |----- DWORD Unknown |----- WORD Unknown |----- WORD Unknown |----- Color Descripitor | |---- Red (1 Byte) | |---- Blue (1 Byte) | |---- Green (1 Byte) | |---- Unused (1 Byte) | |----- Color Descripitor ... (256 total) | |----- DWORD Number of images that follow | |----- Sprite image sub-block | |----- DWORD Image ID Number | |----- WORD Unknown | |----- DWORD Unknown (Always 1?) | |----- DWORD Length of RLE encoded data | |----- WORD Width of image, in pixels | |----- WORD Height of image, in pixels | |----- WORD Encoding flags? | |----- WORD Hot spot X location | |----- WORD Hot spot Y location | |----- WORD Action spot X location | |----- WORD Action spot Y location | |----- (Varies) RLE encoded image data | |----- Sprite image sub-block ... "WinS" (Windowsize?) +17 2 bytes width +19 2 bytes height Toggle "Heading" off Change: CDB D0 [1101 0000] -> C0 [1100 0000] Toggle "Application to include menu-bar" off change: CDB C0 [1100 0000] -> 80 [1000 0000] 34 [0011 0100] Application Options "WinO" + 20 ======================= 0 Maximize on boot-up 1 Resize display to fill current window size 2 Change resolution mode 3 Allow user to switch to/from screen 4 Heading 5 Heading when maximized 6 Application to include menu bar 7 Menu displayed on boo-up "WinO" + 21 ======================= 0 No minimize box 1 No minimize box 2 No thick frame 3 No not center frame area in window 4 Disable close 5 Hidden at start 6 (Unused?) 7 (Unused?) "Scor" block ======================= 0 4 bytes "Scor" 4 4 bytes? Value of 1 8 4 bytes? Value of 2 12 4 bytes? Value of 65796 16 4 bytes? Value of 0 20 4 bytes? Value of 16843038 24 4 bytes? Value of 0 28 1 byte? Value of 255 29 4 bytes. Initial Score. Max value seems to be 999999999 33 1 byte? Value of 0 Note: Changing the "constant" values seems to prevent the file from loading properly. "Live" ======================= 0 4 bytes "Live" 4 4 bytes? Value of 1 8 4 bytes? Value of 2 12 4 bytes? Value of 65796 16 4 bytes? Value of 0 20 4 bytes? Value of 16843038 24 4 bytes? Value of 0 28 4 bytes Initial Lives. Max value seems to be 999999999 32 2 bytes? Value of 4 Note: Changing the "constant" values seems to prevent the file from loading properly. "Player Controls" ======================= 0 4 bytes "Plas" 4 4 bytes? Value of 1 8 4 bytes? Value of 1 12 4 bytes? Value of 16842762 16 4 bytes? Value of 56 20 4 bytes? Value of 56 24 2 bytes Player 1 control. \ 26 2 bytes Player 2 control. | 1 = Keyboard 1 28 2 bytes Player 3 control. > 2 = Keyboard 2 30 2 bytes Player 4 control. / 3 = Joystick "Run-Time" options ======================= 0 4 bytes "RunO" 4 4 bytes? Value of 1 8 4 bytes? Value of 1 12 4 bytes? Value of 16842777 16 4 bytes? Value of 0 20 1 byte Option Flags Bit 0 Multi-Samples Bit 1 Machine-Independent Speed Bit 2 Play samples over frames Bit 3 Do not stop samples when application loses focus Bit 4 Do not stop screen saver when input event Bit 5 Use DirectX Bit 6 Use VRAM (Only if DirectX enabled) Bit 7 Enable XP Visual Themes 21 1 byte Option Flags Bit 0 V-Sync Bit 1 to 7 are unused 22 4 bytes? Value of 262144 w h --^-- --^-- 25 00 00 00 3a 24 01 00 00 00 9a 05 00 00 1d 00 26 00 04 04 0e 00 25 00 0d 00 12 00 Frame by frame tags: Frame Start End Length Seperation -------------------------------------------------- 1 43D4 4974 5A0 (1440) 2 499C 4DE2 446 (1094) 28 3 3EE5 43AC 4C7 (1223) 28 4 3985 3EBD 538 (1336) 28 5 33B4 395D 5A9 (1449) 24 6 2DC5 3390 5CB (1483) 28 7 2838 2D9D 565 (1381) 28 8 2364 2810 4AC (1196) 28 9 1E78 233C 4C4 (1220) 24 (36) 10 1927 1E54 52D (1325) 28 (40) 11 1331 18FF 5CE (1486) 28 (40) 12 0D31 1309 5D8 (1496) - "Actv" Master-Block: Active object descriptor block -------------------------------------------------- DWord "Actv" Block Identifier DWord 0 Unknown (value = 0) DWord 0 Unknown (value = 0) Version sub-block LActiveItem sub-block FadI mini-block FadO mini-block AltV mini-block Keyw mini-block ItNa mini-block "Object Name Block" ItIc mini-block InkF mini-block AntA mini-block MFla mini-block "Memory Flags" Byte 21 0 Load on call 1 Discardable 2 Global Object MNew mini-block Qual mini-block Inse mini-block SFlg mini-block "Scrolling flags" Byte 21 0 "Follow the frame" off 1 "Follow the frame" on Byte 37 0 "Destroy object if too far from frame" on 1 "Destroy object if too far from frame" off Byte 53 0 "Inactive obejct if far from window" off \_ Both on for checked + greyed 1 "Inactive obejct if far from window" on / CFlg mini-block "Collision Flags" Byte 21 0 "Fine collision detection" on/off DFlg mini-block BFlg mini-block "Background flags" Byte 21 0 "Save background" off 1 "Save background" on Byte 37 0 "Wipe with color" off 1 "Wipe with color" on Colo mini-block visi mini-block Byte 21 0 "Visible at start" on 1 "Visible at start" off MPla mini-block LEvt mini-block PROP mini-block FadI mini-block NIFf mini-block Fad0 mini-block UOFf mini-block AltV mini-block LAVd mini-block Keyw mini-block OBIL mini-block ItNa mini-block TITi mini-block ItIc mini-block MCIi mini-block InkF mini-block XFIi mini-block MFla mini-block MEMi mini-block MNew mini-block WNMd mini-block MSta mini-block ATSd mini-block MBal mini-block LABd mini-block MPla mini-block ALPd mini-block MMou mini-block UOMd mini-block MPat mini-block TAPd mini-block MGen mini-block NEGd mini-block MRac mini-block CARd mini-block LEvt mini-block "Behavior table"? Word: Length of name ?? Unterminated string for name of behavior definition TVed mini-block Qual mini-block AUQd mini-block SFlg mini-block RCSd mini-block CFlg mini-block LOCd mini-block DFlg mini-block PSDd mini-block icnI mini-block "Actv" Block: Active object definition |----- DWORD Unknown |----- DWORD Unknown |----- Version Block (8 bytes. "Ver 1.1" + null) |----- DWORD Unknown |----- DWORD Unknown |----- DWORD Unknown |----- LActiveItem Block | |----- DWORD Unknown | |----- FadI Block: "Fade In" ("04 00" terminated) | | |----- DWORD 00 = block is null (ignore) | | | |----- FadO Block: "Fade Out" ("04 00" terminated) | | |----- DWORD 00 = block is null (ignore) | | | |----- AltV Block: "Alterable Values" ("04 00" terminated) | | | |----- Keyw Block: "Keyword"? ("04 00" terminated) | | | |----- ItNa Block: "Item Name" | | |----- DWORD Unknown (01) | | |----- DWORD Unknown | | |----- DWORD Unknown | | |----- DWORD Unknown | | |----- DWORD Unknown | | |----- DWORD Unknown | | |----- DWORD Unknown | | |----- DWORD Unknown | | |----- String: Item Name (Null terminated) | | |----- "04 00" Termination | | | |----- ItIc Block: "Item Icon" ("04 00" terminated) | | | |----- InkF Block: "Ink Effects" ("04 00" terminated) | | | |----- AntA Block: "AntiAlias" ("04 00" terminated) | | | |----- MFla Block: "Memory Flags" ("04 00" terminated) | | | |----- MNew Block: "New Movement" ("04 00" terminated) | | | |----- Qual Block: "Qualifier" ("04 00" terminated) | | | |----- SFlg Block: "Scroll Flags" ("04 00" terminated) | | | |----- CFlg Block: "Collision Flags" ("04 00" terminated) | | | |----- DFlg Block: (Unknown) ("04 00" terminated) | | | |----- BFlg Block: "Background Flags" ("04 00" terminated) | | | |----- Colo Block: "Color" ("04 00" terminated) | | | |----- Visi Block: "Visible at start" ("04 00" terminated) | | | |----- MPla Block: "Platform Movement" ("04 00" terminated) | | ********************************************************* *Insert a ton of junk that still needs figuring out here* ********************************************************* | |----- "AnSt" mini-block | |----- DWORD; Number of defined actions | | | |----- "Anix" particle-block (Action sequence definition) | | |----- DWORD: Number of directions | | | | | | | |----- "Dirx" molecule-block | | | | |----- DWORD: number of images in sequence | | | | | | | | | |----- "Imag" atom-block | | | | | |----- DWORD: Image indexes | | | | | | | | | |----- "Imag" atom-block ... | | | | | | | | | |----- DWORD Unknown | | | | |----- DWORD "Lower Speed" | | | | |----- DWORD "Higher Speed" | | | | |----- DWORD Repeat counter (0 = "Loop") | | | | |----- DWORD "Back to" loop pointer setting | | | | |----- DWORD Unknown | | | | | | | |----- "Dirx" molecule-block ... | | | | | |----- DWORD Unknown (0) | | |----- DWORD Length of action name | | |----- Unterminated String: Name of action | | | |----- "Anix" particle-block ... | | | | Next "Actv" definition ... Palette info: "AGMI" + 8 byte header + 1024 bytes @ 4 bytes/color (RGB+Null) Image data starts: End of palette + 14 bytes