Jump to content

Map Control Data (MCD) *long Post*


BladeFireLight

Recommended Posts

The Folowing is about the MCD files used to on terrain files in UFO and TFTD.

 

Understanding Map Control Data (MCD) Files

The MCD files are used by both UFO and TFTD to defined the TILE's used in tactical to form the physical and visual battle map

Understanding the format of the MCD files allows us to create our own TERRAIN and TILE SETS's and ultimately, new MAP SET's
The goal of this paper is to help the moding community understand how to edit (or write utilities to edit) the MCD files in the UFO and TFTD terrain directory.
all tho I will touch on PCK files I will not go in depth on their format as their are plenty of utilities to edit them.

Each MCD file is named the same as the PCK and TAB files that it uses graphics from. MCD files contain variable number of MCD records. Each record is 62 bytes long and have the following format

typedef struct mcdentry
{
       unsigned char Frame[8];      //Each frame is an index into the ____.TAB file;
               // The frames is the visual part of the Tile,
               // If all frames are the same than it's a static image otherwise it's animated
       unsigned char LOFT[12];      //Line Of Fire Template, The 12 levels of references into GEODATA\LOFTEMPS.DAT
               // used to describe the 3D phisical make up of the Tile 
               // (more on this later)
       short    int  ScanG;         //an index into the GEODATA\SCANG.DAT (4x4 bmp images used for the overhead map)
                                    // DaiShiva's PCKView.NET editor can be used to view thease images
       unsigned char u161D[8];      // UNKNOWN..
       unsigned char UFODoor;       //[On/OFF flag]If it's a UFO door it uses only Frame[0] until it is walked through,
                                    // then it animates once and becomes OpenMCD.  It changes back at the end of the turn
       unsigned char StopLOS;       //[On/Off flag]You cannot see through this tile. (how it blocks is based on TileType)
       unsigned char NoFloor;       //[On/Off flag]If 1, then a non-flying unit can't stand here (only valid on floor TileTypes)
       unsigned char BigWall;       //[On/Off flag]It's an object (tile type 3), but it acts like a wall
               // Used most often for unwalkable Tiles. IE. Tables and Solid Rock
       unsigned char Gravlift;      //[On/Off flag] The up/down of a grav lift is determined if their is 
                                    // another gravlift above or below in the MAP file
       unsigned char Door;          //[On/Off flag]It's a human style door--you walk through it and it changes to OpenMCD
       unsigned char BlockFire;     //[On/Off flag]If 1, fire won't go through the tile
       unsigned char BlockSmoke;    //[On/Off flag]If 1, smoke won't go through the tile
       unsigned char u26;           // UNKNOWN...
       unsigned char TUWalk;        //The number of TUs required to pass the tile while walking.  
                                    // An 0xFF (255) means it's unpassable.
       unsigned char TUFly;         //The number of TUs required to fly through tile
                                    // 0xFF means it's impassable!
       unsigned char TUSlide;       //Tu's for Sliding things like snakemen and silacoids
       unsigned char Armour;        //The higher this is the less likely it is that a weapon will destroy
                                    // this tile when it's hit.
       unsigned char HEBlock;       //How much of an explosion this tile will block
       unsigned char DieMCD;        //If the terrain is destroyed, it becomes this MCD entry.
       unsigned char Flammable;     //How flammable it is (the higher the harder it is to set aflame)
       unsigned char OpenMCD;       //If "Door" or "UFODoor" is on, then when a unit walks through it the door it changes to this MCD entery.
       unsigned char u2F;           // UNKNOWN..
       signed   char VDisplace;     //When a unit or object is on this tile, the unit is shifted by this number of pixels
       unsigned char SubtractY;     //The pck images are drawn this many pixels lower when displayed. (used for hills) 
       unsigned char u32;           // UNKNOWN..
       unsigned char BlockLight;    //The amount of light it blocks, from 0 to 10
       unsigned char SoundFX;       //The Sound Effect set to choose from when footsteps are on the tile
                                    // This is mostlikly an index to the .CAT file RAW wave
       unsigned char TileType;      //This is the type of tile it is meant to be -- 
                                    // 0=floor, 1=west wall, 2=north wall, 3=object .  When this type of tile is in the 
                                    // DieMCD or OpenMCD flags, this value is added to the tile coordinate to determine 
                                    // the byte in which the tile type should be written.
       unsigned char HEType;        //0=HE  1=Smoke
       unsigned char HEStrength;    //The strength of the explosion caused when it's destroyed.  0 means no explosion.
       unsigned char SmokeBlockage; //? Not sure about this ...
       unsigned char Fuel;          //The number of turns the tile will burn when set aflame
       unsigned char LightSource;   //The amount of light this tile produces
       unsigned char TypeProperties;//The special properties of the tile (like Aqua plastics.. or Synom device)
                                    // This effects what is salvage from a UFO/USO or base at the end of combat.
                                    // some settings are used for combat Win conditions (use MTT_nnn and MT_nnn )
       unsigned char u3C3D[2];      // UNKNOWN.. 
}MCDEntry;

// MCD Tile properties for TFTD
#define MTT_Tile 	 0x00  // default, no special properties
#define MTT_StartPoint 	 0x01  // abort tile from 2part missions
#define MTT_IonBeamAccel  0x02
#define MTT_DestroyObjective	0x03
#define MTT_MagnaticNav  0x04
#define MTT_AlienCryo  0x05
#define MTT_AlienClon  0x06
#define MTT_AlienLearn  0x07
#define MTT_AlienImplant	0x08
#define MTT_Unknown9  0x09  // Not used in TFTD
#define MTT_AquaPlastics	0x0A
#define MTT_ExamRoom  0x0B
#define MTT_DeadTile  0x0C  //used for tiles the are the destroyed version
#define MTT_EndPoint  0x0D  // Exit 'abort' tile
#define MTT_MustDestroy  0x0E  // Ultimate Alien Power Sorces (only used by final combats)

// MCD Tile Properties for UFO  ** one of the unknows may the AlienRepoduction **
#define MT_Tile 	 0x00  // default, no special properties
#define MT_StartPoint 	 0x01  // abort tile from 2part missions
#define MT_UFOPowerSorce  0x02
#define MT_DestroyObjective	0x03  // This is also used for UFONavigaion
#define MT_UFONav  0x03  // Also the Destroy objective
#define MT_Unknown4      0x04  // Not used in UFO
#define MT_AlienFood  0x05
#define MT_Unknown6  0x06  // Not used in UFO
#define MT_AlienEntertain	0x07
#define MT_AlienSurgery  0x08
#define MT_ExaminationRoom	0x09
#define MT_AlienAlloys  0x0A
#define MT_UnknownB  0x0B  // Not used in UFO.
#define MT_DeadTile  0x0C  //used for tiles the are the destroyed version
#define MT_EndPoint  0x0D  // Exit 'abort' tile
#define MT_MustDestroy  0x0E  // UFO = Alien brain (only used by final combats)

Line Of Fire Teplates (LOFT)

The LOFT's are stored in loftemps.dat found in the GEODATA dir in UFO and GEODATA and TERRAIN in TFTD 
(I believe the TERRAIN one is not used)

for both games these files are exactly the same. It contains 112 LOFT entries (0 through 111).

a LOFT entry is 16 unsigned shorts used as a binary mask. this makes a 16x16 bit square. 
win 1 being a solid object and 0 being empty space.

for example. Entery number 4:

004: /----------------\
    |0000000000000000|
    |0000000000000000|
    |0000000000000000|
    |0000000000000000|
    |0000000111000000|
    |0000011111110000|
    |0000011111110000|
    |0000111111111000|
    |0000111111111000|
    |0000111111111000|
    |0000011111110000|
    |0000011111110000|
    |0000000111000000|
    |0000000000000000|
    |0000000000000000|
    |0000000000000000|
    \----------------/
    
not very readable. so I'm going to display them with # for 1 and . for 0
(requires a fixed width font)

004: /----------------\
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |.....#######....|
    |.....#######....|
    |....#########...|
    |....#########...|
    |....#########...|
    |.....#######....|
    |.....#######....|
    |.......###......|
    |................|
    |................|
    |................|
    \----------------/

This defines a solid circle in the middle of the tile.

Each MCD uses 12 LOFTS (starting at the bottom) to create a 16x16x12 bit mask

lets look at a simple object. the barrel from a TFTD Port mission

File: port01.mcd
Entery number 93

Offset: 0x00001686:

5D 5D 5D 5D 5D 5D 5D 5D

04 04 04 04 04 04 04 04 00 00 00 00

0047

04 00 18 54 04 00 25 54 00 00 00 01 00 00 00 01
03 FF FF FF 0A 0A 00 0A 00 00 EE 00 00 00 04 03
00 50 00 03 00 00 00 00

The first line is the 8 images.. all the same because this is not an animation

The second line is our LOFT enterys. the first eight are 04. the circle shown above.
the last four are 00. 

000: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

as you can see it's empty space.  This shows that the barel is not as tall as the whole TILE.

Lets look at a more complex example

Tthe stone staircase along the warf of the TFTD Port terrain
Entery: 20
000004D8:

14 14 14 14 14 14 14 14

06 15 14 10 0E 0A 00 00 00 00 00 00

0074

04 00 18 54 04 00 25 54 00 00 00 00 00 00 00 00
03 01 01 01 3C 0F 13 7A 00 00 F8 00 00 00 02 03
00 00 00 01 00 00 00 00

006: /----------------\    015: /----------------\  014: /----------------\  
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |################| 
    |################|         |################|       |................| 
    |################|         |################|       |................| 
    |################|         |................|       |................| 
    |################|         |................|       |................| 
    \----------------/         \----------------/       \----------------/ 

010: /----------------\  00e: /----------------\ 00a: /----------------\   
    |################|       |################|      |################| 
    |################|       |################|      |################| 
    |################|       |################|      |................| 
    |################|       |################|      |................| 
    |################|       |################|      |................| 
    |################|       |................|      |................| 
    |################|       |................|      |................| 
    |################|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    |................|       |................|      |................| 
    \----------------/       \----------------/      \----------------/ 

As you can see the physical shape of the stairs obvious in the solid parts of the LOFT masks

I hope this information will help others in modifying Terrains for new maps in UFO and TFTD.

Link to comment
Share on other sites

Apendix1: 

cense there is not easy to use editor for LOFT files I'm including all 112 entries below

LOFTemps enterys:

000: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

001: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |.......###......|
    |.......###......|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

002: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |......#####.....|
    |......#####.....|
    |......#####.....|
    |.......###......|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

003: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |......#####.....|
    |.....#######....|
    |.....#######....|
    |.....#######....|
    |......#####.....|
    |.......###......|
    |................|
    |................|
    |................|
    |................|
    \----------------/

004: /----------------\
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |.....#######....|
    |.....#######....|
    |....#########...|
    |....#########...|
    |....#########...|
    |.....#######....|
    |.....#######....|
    |.......###......|
    |................|
    |................|
    |................|
    \----------------/

005: /----------------\
    |................|
    |................|
    |................|
    |......#####.....|
    |....#########...|
    |....#########...|
    |...###########..|
    |...###########..|
    |...###########..|
    |...###########..|
    |...###########..|
    |....#########...|
    |....#########...|
    |......#####.....|
    |................|
    |................|
    \----------------/

006: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

007: /----------------\
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    \----------------/

008: /----------------\
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

009: /----------------\
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    |##..............|
    \----------------/

00a: /----------------\
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

00b: /----------------\
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    |###.............|
    \----------------/

00c: /----------------\
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

00d: /----------------\
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    \----------------/

00e: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

00f: /----------------\
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    \----------------/

010: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

011: /----------------\
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    |#########.......|
    \----------------/

012: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

013: /----------------\
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    \----------------/

014: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    \----------------/

015: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    \----------------/

016: /----------------\
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    |##############..|
    \----------------/

017: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    \----------------/

018: /----------------\
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    |..............##|
    \----------------/

019: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    \----------------/

01a: /----------------\
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    \----------------/

01b: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

01c: /----------------\
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    |.........#######|
    \----------------/

01d: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

01e: /----------------\
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    |.......#########|
    \----------------/

01f: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

020: /----------------\
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    \----------------/

021: /----------------\
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

022: /----------------\
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    |..##############|
    \----------------/

023: /----------------\
    |##..............|
    |###.............|
    |.###............|
    |..###...........|
    |...###..........|
    |....###.........|
    |.....###........|
    |......###.......|
    |.......###......|
    |........###.....|
    |.........###....|
    |..........###...|
    |...........###..|
    |............###.|
    |.............###|
    |..............##|
    \----------------/

024: /----------------\
    |..............##|
    |.............###|
    |............###.|
    |...........###..|
    |..........###...|
    |.........###....|
    |........###.....|
    |.......###......|
    |......###.......|
    |.....###........|
    |....###.........|
    |...###..........|
    |..###...........|
    |.###............|
    |###.............|
    |##..............|
    \----------------/

025: /----------------\
    |#...............|
    |#...............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |#...............|
    |#...............|
    \----------------/

026: /----------------\
    |##............##|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

027: /----------------\
    |##..............|
    |##..............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

028: /----------------\
    |###.............|
    |###.............|
    |###.............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

029: /----------------\
    |####............|
    |####............|
    |####............|
    |####............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

02a: /----------------\
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

02b: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    |................|
    |................|
    \----------------/

02c: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    \----------------/

02d: /----------------\
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    |....#####.......|
    \----------------/

02e: /----------------\
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    |........####....|
    \----------------/

02f: /----------------\
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    \----------------/

030: /----------------\
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    |..############..|
    \----------------/

031: /----------------\
    |................|
    |................|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |................|
    |................|
    \----------------/

032: /----------------\
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |................|
    |................|
    |................|
    |................|
    \----------------/

033: /----------------\
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

034: /----------------\
    |#...............|
    |#...............|
    |#...............|
    |#...............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

035: /----------------\
    |................|
    |................|
    |................|
    |................|
    |......#####.....|
    |.....#.....#....|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

036: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |.....#..........|
    |....#...........|
    |....#...........|
    |....#...........|
    |....#...........|
    |....#...........|
    |.....#..........|
    |................|
    |................|
    |................|
    |................|
    \----------------/

037: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |...........#....|
    |............#...|
    |............#...|
    |............#...|
    |............#...|
    |............#...|
    |...........#....|
    |................|
    |................|
    |................|
    |................|
    \----------------/

038: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.....#.....#....|
    |......#####.....|
    |................|
    |................|
    |................|
    \----------------/

039: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |###############.|
    |##############..|
    |#############...|
    \----------------/

03a: /----------------\
    |...#############|
    |..##############|
    |.###############|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

03b: /----------------\
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |.###############|
    |..##############|
    |...#############|
    |....############|
    |.....###########|
    |......##########|
    \----------------/

03c: /----------------\
    |##########......|
    |###########.....|
    |############....|
    |#############...|
    |##############..|
    |###############.|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    |################|
    \----------------/

03d: /----------------\
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |................|
    |................|
    |................|
    \----------------/

03e: /----------------\
    |................|
    |................|
    |................|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    \----------------/

03f: /----------------\
    |................|
    |................|
    |................|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |...##########...|
    |................|
    |................|
    |................|
    \----------------/

Link to comment
Share on other sites

040: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |............#...|
    |...........###..|
    |............#...|
    |................|
    |................|
    \----------------/

041: /----------------\
    |................|
    |................|
    |................|
    |................|
    |...#............|
    |..###...........|
    |...#............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

042: /----------------\
    |................|
    |....#...........|
    |...###..........|
    |....#...........|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

043: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |..............#.|
    |.............###|
    |..............#.|
    |................|
    |................|
    |................|
    |................|
    \----------------/

044: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    \----------------/

045: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |.....###########|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

046: /----------------\
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

047: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

048: /----------------\
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |................|
    |................|
    |................|
    |.....#....#.....|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

049: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |#####....#......|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####....#......|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

04a: /----------------\
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |.....######.....|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.....#....#.....|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

04b: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |#####......#....|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####...........|
    |#####......#....|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

04c: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |#...............|
    |#...............|
    \----------------/

04d: /----------------\
    |..............##|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

04e: /----------------\
    |................|
    |.#............#.|
    |................|
    |........#.......|
    |................|
    |................|
    |................|
    |................|
    |...#....#....#..|
    |................|
    |................|
    |................|
    |................|
    |........#.......|
    |.#............#.|
    |................|
    \----------------/

04f: /----------------\
    |#...............|
    |##..............|
    |###.............|
    |####............|
    |#####...........|
    |######..........|
    |#######.........|
    |########........|
    |#########.......|
    |##########......|
    |###########.....|
    |############....|
    |#############...|
    |##############..|
    |###############.|
    |################|
    \----------------/

050: /----------------\
    |################|
    |.###############|
    |..##############|
    |...#############|
    |....############|
    |.....###########|
    |......##########|
    |.......#########|
    |........########|
    |.........#######|
    |..........######|
    |...........#####|
    |............####|
    |.............###|
    |..............##|
    |...............#|
    \----------------/

051: /----------------\
    |################|
    |###############.|
    |##############..|
    |#############...|
    |############....|
    |###########.....|
    |##########......|
    |#########.......|
    |########........|
    |#######.........|
    |######..........|
    |#####...........|
    |####............|
    |###.............|
    |##..............|
    |#...............|
    \----------------/

052: /----------------\
    |...............#|
    |..............##|
    |.............###|
    |............####|
    |...........#####|
    |..........######|
    |.........#######|
    |........########|
    |.......#########|
    |......##########|
    |.....###########|
    |....############|
    |...#############|
    |..##############|
    |.###############|
    |################|
    \----------------/

053: /----------------\
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |............####|
    |################|
    |################|
    |################|
    |################|
    \----------------/

054: /----------------\
    |##............##|
    |##............##|
    |................|
    |......#####.....|
    |.....#######....|
    |....#########...|
    |...###########..|
    |...###########..|
    |...###########..|
    |...###########..|
    |...###########..|
    |....#########...|
    |.....#######....|
    |......#####.....|
    |##............##|
    |##............##|
    \----------------/

055: /----------------\
    |##............##|
    |##............##|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |##............##|
    |##............##|
    \----------------/

056: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |...............#|
    |.............###|
    |.............###|
    |............####|
    \----------------/

057: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |#...............|
    |###.............|
    |###.............|
    |####............|
    \----------------/

058: /----------------\
    |............####|
    |.............###|
    |.............###|
    |...............#|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

059: /----------------\
    |............####|
    |..........######|
    |........########|
    |.......#########|
    |......##########|
    |.....###########|
    |....############|
    |...#############|
    |..##############|
    |..##############|
    |.###############|
    |.###############|
    |################|
    |################|
    |################|
    |################|
    \----------------/

05a: /----------------\
    |################|
    |################|
    |################|
    |################|
    |###############.|
    |###############.|
    |##############..|
    |##############..|
    |#############...|
    |############....|
    |###########.....|
    |##########......|
    |#########.......|
    |########........|
    |######..........|
    |####............|
    \----------------/

05b: /----------------\
    |################|
    |################|
    |################|
    |################|
    |.###############|
    |.###############|
    |..##############|
    |..##############|
    |...#############|
    |....############|
    |.....###########|
    |......##########|
    |.......#########|
    |........########|
    |..........######|
    |............####|
    \----------------/

05c: /----------------\
    |####............|
    |######..........|
    |########........|
    |#########.......|
    |##########......|
    |###########.....|
    |############....|
    |#############...|
    |##############..|
    |##############..|
    |###############.|
    |###############.|
    |################|
    |################|
    |################|
    |################|
    \----------------/

05d: /----------------\
    |................|
    |..........##....|
    |.........####...|
    |.........####...|
    |...........#....|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.....##.........|
    |.....####.......|
    |.....####.......|
    |......##........|
    |................|
    |................|
    \----------------/

05e: /----------------\
    |................|
    |............###.|
    |...........####.|
    |.###........###.|
    |.####...........|
    |.###............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

05f: /----------------\
    |................|
    |................|
    |................|
    |.............##.|
    |............####|
    |............####|
    |.............##.|
    |.......###......|
    |.......####.....|
    |........##......|
    |................|
    |...##...........|
    |..####..........|
    |..####..........|
    |..###...........|
    |................|
    \----------------/

060: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |......#####.....|
    |......#####.....|
    |......#####.....|
    |.......###......|
    |................|
    |................|
    |................|
    \----------------/

061: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |.......###......|
    |......#####.....|
    |......#####.....|
    |......#####.....|
    |.......###......|
    |................|
    \----------------/

062: /----------------\
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |................|
    |................|
    |................|
    |................|
    \----------------/

063: /----------------\
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

064: /----------------\
    |............####|
    |............####|
    |............####|
    |............####|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

065: /----------------\
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |................|
    |................|
    |................|
    |................|
    \----------------/

066: /----------------\
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

067: /----------------\
    |####............|
    |####............|
    |####............|
    |####............|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

068: /----------------\
    |................|
    |................|
    |................|
    |................|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    |############....|
    \----------------/

069: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    |########........|
    \----------------/

06a: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |####............|
    |####............|
    |####............|
    |####............|
    \----------------/

06b: /----------------\
    |................|
    |................|
    |................|
    |................|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    |....############|
    \----------------/

06c: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    |........########|
    \----------------/

06d: /----------------\
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |............####|
    |............####|
    |............####|
    |............####|
    \----------------/

06e: /----------------\
    |##..##..##..##..|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    |................|
    \----------------/

06f: /----------------\
    |................|
    |................|
    |#...............|
    |#...............|
    |................|
    |................|
    |#...............|
    |#...............|
    |................|
    |................|
    |#...............|
    |#...............|
    |................|
    |................|
    |#...............|
    |#...............|
    \----------------/



Glosory:

Tile: MCD entry using Tile Images to define one placeable map item (wall, floor, animated object).

Tile Set: colection of Tile's from one MCD file

Tile Image: pck image enterys used to make a tile

Terrain (set): A group of 1 to 5 Tile Sets used for a series of maps.

Map: A single .map file 

Map Tile: a group of 4 tiles, each tile representing a ground, north, west and content

Map Set: a group of map files with the same first 6 letters and numberd 00 to 99 That all use the same terrain.

World Texture: the image used for geoscape quads representing real world climates or sea depths

World Map set: a group of Map Sets that can be use on a specific World Texture. (ie Farms on grass land.)

Ship Map: A single .map file for a UFO/USO with it's corispoinding Terrain.

Default Ship: the original Ship Map from the Release version of UFO/TFTD

Ship Set: a group of ship maps that are posible reandom replacments for a single default ship. (terrain does not have to be the same)

Link to comment
Share on other sites

MCD files contain variable number of MCD records. Each record is 62 bytes long and have the following format

 

@ BladeFireLight

Do you know whether there is a possibility to increase the number of records in a MCD file ?

Unfortunately the editor is not capable to do that.

Link to comment
Share on other sites

  • 4 years later...

Ok, I guess this is the best place for this post. The other day I was looking at the MCD entry in the X-COM Wiki and ran across the footstep sound effects in [052]:

 

0 Not used in XCOM (makes a metal sound if hacked); is used on TFTD for some objects -Hobbes
1 Metal
2 Normal (Grass, Wood, Dirt)
3 Three mountain ground tiles, and some city apt. furniture objects that can't be walked on?
 (six furniture objects might've been - but they're death tiles that nothing points to)
 Uses same sound as 6.
4 Pool of water (Not used in XCOM)
5 Sand (Desert)
6 Martian
7 Snow (Not used in XCOM, Arctic actually uses 2)

I fooled around with this for a little bit and MapView verifies most of the values. Fine. So off I went to reintroduce the snow footstep sound effect for polar/arctic landscape by editing the ground tiles in polar.mcd[052] to a value of 7 instead of 2. When I went into a polar mission to check my handiwork, I was rewarded with footsteps sounding like an MC attack + some strange sound. ;) Obviously something was up, so I listened to all the battlescape sounds for clues (thanks to Danial for uploading them). From what I can determine there are only 6 footstep sound effects in the .cat file (actually it's 12: there are two sounds for a footstep, the usual klip - klop pairing). The value of 7 doesn't point to a valid pairing of footsteps, just the next two sounds in the file.

 

After scratching my head a little bit, I went ahead and changed the footstep sound value to 6 instead. To me it sounds like the scruntch sound made by snow - not Martian sand. Therefore, I uploaded the fix to our files section here for consideration. My confusion probably is because the pointer is shifted down by one in the .cat file from what the wiki shows. Not sure though. Any ideas folks? Is the CE version missing some sounds? :blink:

 

For reference, the footstep sounds are the following pairings in Danial's file (ordering starts at 1, not 0):

 

24/25
26/27
28/29
30/31
32/33
34/35

- Zombie

Link to comment
Share on other sites

I fooled around with this for a little bit and MapView verifies most of the values. Fine. So off I went to reintroduce the snow footstep sound effect for polar/arctic landscape by editing the ground tiles in polar.mcd[052] to a value of 7 instead of 2. When I went into a polar mission to check my handiwork, I was rewarded with footsteps sounding like an MC attack + some strange sound. ;) Obviously something was up, so I listened to all the battlescape sounds for clues (thanks to Danial for uploading them). From what I can determine there are only 6 footstep sound effects in the .cat file (actually it's 12: there are two sounds for a footstep, the usual klip - klop pairing). The value of 7 doesn't point to a valid pairing of footsteps, just the next two sounds in the file.

 

After scratching my head a little bit, I went ahead and changed the footstep sound value to 6 instead. To me it sounds like the scruntch sound made by snow - not Martian sand. Therefore, I uploaded the fix to our files section here for consideration. My confusion probably is because the pointer is shifted down by one in the .cat file from what the wiki shows. Not sure though. Any ideas folks? Is the CE version missing some sounds? :blink:

 

The CE version uses different indexing for footsteps, which is interpreted straight forward as index into the .CAT file. However, DOS version does some magic, and behaves in the way described in the table. Try using value 7 again, but this time in DOS, you'll hear proper footsteps in the snow.

I'm afraid the fix for polar terrain will be platform dependent.

Link to comment
Share on other sites

The CE version uses different indexing for footsteps, which is interpreted straight forward as index into the .CAT file. However, DOS version does some magic, and behaves in the way described in the table. Try using value 7 again, but this time in DOS, you'll hear proper footsteps in the snow.

I'll have to give that a try sometime, it's been a long time since I ran the DOS version of the game due to all the hassles of getting it to run under DosBox, etc. With the CE it's a simple double click on the executable and I'm off to the races. :blink:

 

Certainly though, the Wiki footstep listing is true for one version of the game, but which one? It makes no mention. I mean, isn't there sound differences between v1.2 (or even the original) and v1.4? Was there changes between v1.4 and CE? Obviously, in Danial's extracted sound file there are only so many footstep sound effects. The "extra" metal footstep for a hacked value of 0 isn't in there (I think, unless it actually points to metal sound #1). The same goes for a value of 3 which I assume points to the Martian #6 and isn't a separate sound. That would explain why there are only 6 footsteps in the game... and my confusion. ;)

 

I'm afraid the fix for polar terrain will be platform dependent.

Yeah, it sounds like it for now. Well, I renamed the file so as not to confuse anyone trying to patch their DOS version with the CE fix. :)

 

- Zombie

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...