ModEnc is currently in Maintenance Mode: Changes could occur at any given moment, without advance warning.

MIX

From ModEnc
(Redirected from Mix)
Jump to navigation Jump to search

Mix files (file extension .mix) are archive files used by Westwood to store most game files from Tiberian Dawn to Renegade. For Generals and following, BIG files took this part.

Editing Mix Files

Mix files can be read, edited and created using the XCC Mixer and the XCC MIX Editor, both created by Olaf van der Spek. They can be downloaded at xhp.xwis.net.

Alternatively, there's a command line tool called ccmix by OmniBlade which can generate and extract from mix files. A windows build is available here.

Mix Types

There are several types of mix files, each for a specific purpose as detailed below. Using mix files correctly is important for the correct execution of your mod.

Loading Hierarchy

The game searches the mix files for contents in the order as mentioned in the table below. Once a file is found in a mix, the next mixes are't even checked for its presence.

Mix File Available in... Description Cached?
LANGMD.MIX Localized files for the Mission Disk (Yuri's Revenge): audio, cameos, etc.
LANGUAGE.MIX Localized files: audio, cameos, etc.
PATCH.MIX Tiberian Sun Firestorm expansion INI files update.
PCACHE.MIX Tiberian Sun Firestorm expansion patch cache. Works like cache.mix.
EXPANDMD##.MIX Expansion mix for Yuri's Revenge: various files, more information below.
The ## is any two-digit number between 00–99, with higher numbers loaded first.
EXPAND##.MIX Expansion mix for Tiberian Sun/Red Alert 2: various files, more information below.
The ## is any two-digit number between 00–99, with higher numbers loaded first.
ECACHE##.MIX Expansion cache mix for Tiberian Sun. Works like cache.mix.
The ## is any two-digit number between 00–99, with higher numbers loaded first.

For Red Alert 2/Yuri's Revenge, refer ECACHE*.MIX instead, for proper place in loading hierarchy.

RA2MD.MIX Main mix file for Yuri's Revenge. Most mix files are stored within this file, except for expansion mixes.
RA2.MIX Main mix file for Red Alert 2. Most mix files are stored within this file, except for expansion mixes.
TIBSUN.MIX Main mix file for Tiberian Sun. Most mix files are stored within this file, except for expansion mixes.
CACHEMD.MIX Cached files for Yuri's Revenge. Usually palettes and certain shape files.
CACHE.MIX Cached files. Usually palettes and certain shape files.
LOCALMD.MIX Voxels, most INIs, and certain UI graphics are stored here.
LOCAL.MIX Voxels, most INIs, and certain UI graphics are stored here.
AUDIOMD.MIX Audio files (except music) for Yuri's Revenge.
ECACHE*.MIX Expansion cache. Works like cache.mix.

For Tiberian Sun, refer ECACHE##.MIX.

ELOCAL*.MIX Local files for an expansion pack. Works like local.mix.
CONQMD.MIX Infantry shapes and non-theater-specific, non-building animations.
GENERMD.MIX Generic, non-theater-specific building graphics, terrain objects, and overlay.
GENERIC.MIX Generic, non-theater-specific building graphics, terrain types, and overlay.
ISOGENMD.MIX Generic, non-theater-specific building and tile set graphics.
ISOGEN.MIX Generic, non-theater-specific building and tile set graphics.
CONQUER.MIX Infantry shapes and non-theater-specific, non-building animations.
CAMEOMD.MIX Cameo shapes.
CAMEO.MIX Cameo shapes.
MAPSMD03.MIX Mission maps.
MULTIMD.MIX Multiplayer maps.
THEMEMD.MIX Music files.
MOVMD03.MIX Video files.
MAPS01.MIX Tiberian Sun/Red Alert 2 Mission maps.
MAPS02.MIX Tiberian Sun/Red Alert 2 Mission maps.
MULTI.MIX Tiberian Sun/Red Alert 2 Multiplayer maps.
THEME.MIX Red Alert 2 Music files.
SCORES.MIX Tiberian Sun Music files.
SCORES01.MIX Tiberian Sun Music files.
MOVIES01.MIX Tiberian Sun/Red Alert 2 Video files.
MOVIES02.MIX Tiberian Sun/Red Alert 2 Video files.
... Theater-specific mixes - see Theatres for a list. (iso*.mix are not cached, the rest are)
SIDEC##.MIX Side-specific UI elements, like sidebar graphics. The ## stands for the side you're playing as: e.g. 01 for Allies, 02 for Soviets, etc.
SIDENC##.MIX Side-specific elements for the campaign progression/mission selection map screen. Unused in Red Alert 2/Yuri's Revenge.
SOUNDS.MIX In-game sound effects (AUD files).
SOUNDS01.MIX In-game sound effects (AUD files) for an expansion pack.
E##SC##.MIX Side-specific UI elements in an expansion pack. Works like sidec##.mix.

Note on loading hierarchy

  • Exceptions, though loading order is followed, game expects some files from specific mixes only.
In Yuri's Revenge, unit*.pal files for example are expected in cached mix files (not in EXPANDMD##.MIX).
In Red Alert 2, the SHP files of buildings/infantry/trees etc. which already exist in original game mix files become invisible in-game when those files or files with the same filenames are placed in EXPAND##.MIX. Modified files of those are expected to be placed in ECACHE*.MIX.
  • Ares for Yuri's Revenge loads EXPANDMD##.MIX before LANGMD.MIX and LANGUAGE.MIX files. This allows modders to include modified ra2md.csf etc. files in EXPANDMD##.MIX itself instead of distributing loose files..
  • Vinifera for Tiberian Sun introduces ELOCAL##.MIX (loaded just after ECACHE##.MIX). And also introduces GENERIC.MIX and ISOGEN.NIX.
  • Loading order of ECACHE*.MIX in Red Alert 2/Yuri's Revenge is alphabetical/alphanumeric in ascending order as provided by the file system. Loading order of ECACHE##.MIX in Tiberian Sun is from 99 to 00. For example, if two files with same filename are placed in say ecache10.mix and ecache20.nix, Red Alert 2/Yuri's Revenge will load the file from ecache10.mix whereas Tiberian Sun will load it from ecache20.mix.
  • For ecache* and elocal* files, order is not guaranteed in older file systems like FAT32 (This is not a problem in newer file systems like NTFS which provide sorted list of filenames) - standard WinAPI functionality is used to locate them, and no sorting is done.
Quoting MSDN - FindNextFile:
The order in which this function returns the file names is dependent on the file system type. With the NTFS file system and CDFS file systems, the names are usually returned in alphabetical order. With FAT file systems, the names are usually returned in the order the files were written to the disk, which may or may not be in alphabetical order. However, as stated previously, these behaviours are not guaranteed.
Additionally, files that have any of the "Hidden", "System" or "Temporary" attributes set are not loaded.

Expansion Mix Files

As a result of their high priority and versatility, it is common to store mod assets in the so-called expansion mix files. There are three different expansion mix types as explained below.

Instead of using these mix files as catch-all archives, it is recommended to follow the original mix file organization where possible to avoid potential issues.


EXPANDMD##.MIX

## is a number between 00 and 99, and md is added if the the file is for Yuri's Revenge.

This file is used for addon or expansion purpose where new or modified files can be placed. Most filetypes can be placed in it, except the files from lang*.mix which are higher in loading hierarchy.

ECACHE*.MIX

* can be any string for both Red Alert 2 and Yuri's Revenge. Tiberian Sun uses ecache##.mix where ## is 2-digit number (00-99).

As the name suggests, this is an expansion mix file for files that should be cached. This file is lower in file loading hierarchy than many other mix files. So the game will read new or modified SHP files from it but only VXL/HVA files with different filenames over the original mix files. Both RA2 and YR read the files placed in ecache*.mix, so it could be used as common resource file.

ELOCAL*.MIX

RA2/YR only. * can be any string. Vinifera for Tiberian Sun introduces elocal##.mix where ## is 2-digit number (00-99).

This file is practically not used in the community, but works for "unofficial SHP, VXL, HVA and MAP files" according to DeeZire's Red Alert 2 and Yuris Revenge INI Editing Guide. Since, in the original game, local.mix holds almost all object-related graphics, and elocal*.mix works for the same file types, it is likely it was originally conceived as an expansion file specifically for local.mix. It is unknown why the community started using ecache*.mix for unit graphics instead.

MMX and YRO Files

These are mix files with filename extensions changed. Red Alert 2 uses .mmx and Yuri's Revenge uses .yro file extensions. Westwoood used these to provide additional downloadable maps.

Loose Files

The following file types are usually not stored in a mix file:

  • CSF
  • PKT, Only 1 can exist loose, otherwise you get maps listed multiple times.
  • BAG
  • IDX
  • WAV
  • BIK

Note that, despite this common distribution of files, many files (especially graphics) work in an expandmd##.mix as well.

How to make a new mix file

Important: In order to be read by the game, your new mix has to reside in the game's folder, and has to be named correctly.

Using XCC Mixer

Click File - New and select where to save it. Then, navigate there and open that file in the mixer. Now you can actually drag and drop files to the mixer as well to add them, there is an option to compact in the context menu that appears when you right click on a file in that mix.

Using XCC MIX Editor

Click New and choose where to save it. To add files to a mix file you can go to import or you can use the faster method of "drag 'n drop" you can select files from explorer and drag them into the XCC mix Editor window. Next press the "Compact" button, this saves and compresses the file.

Note: XCC MIX Editor is known to sometimes corrupt mix files. It is therefore recommended to use XCC Mixer instead, as it can perform all the same functions and more.

Location of files in the game's mix files

RA2/YR

  • The INI files are in RA2.mixlocal.mix and RA2md.mixlocalmd.mix. rulesmd.ini and soundmd.ini for YR 1.001 are in expandmd01.mix.
  • Cameos (build icons), which are single frame SHPs, can found in language.mixcameo.mix and in langmd.mixcameomd.mix.
  • Infantry, which are multi frame SHPs, can be found in RA2.mixconquer.mix and ra2md.mixconqmd.mix.
  • The voxels (and their associated hva files), Tanks, naval vessels, and aircraft, can be found in ra2.mixlocal.mix and ra2md.mixlocalmd.mix.

See also