Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

TRANSFORMERS: Devastation .mcd files

Featured Replies

  • Author
  • Localization

makc_ar, posted Wed Oct 07, 2015 3:07 pm (8181)


Game: http://store.steampowered.com/app/338930/

data000.cpk\*.dat\Subtitle\*.mcd
data000.cpk\*.dat\ui\*.mcd

How to edit .mcd files?
Code:
//--------------------------------------
//--- 010 Editor v5.0 Binary Template
//
// File:
// Author:
// Revision:
// Purpose:
//--------------------------------------
typedef struct
{
  long offset_string_table ;
  long count_string_table;
  long offset_symbol_codes ;
  long count_symbol_codes;
  long offset_symbol_table ;
  long count_symbol_table;
  long offset_fonts_table ;
  long count_fonts_table;
  long offset_unk2 ;
  long count_unk2;
} Header;
/*
typedef struct
{
  long s_offset ;
  long unk2;
  long unk3;
  long s_id;
} string_table;
*/
typedef struct
{
  uint16  ct_fontid;
  wchar_t ct_char;
  long    ct_code;
} code_table;

typedef struct
{
  long texid;
  float i1;
  float i2;
  float i3;
  float i4;
  float w;
  float h;
  long z1;
  long z2;
  long z3;
} symbol_table;

LittleEndian();
RequiresVersion(4,0);

SetBackColor( cLtAqua );
Header hdr;

SetBackColor( cLtYellow );
local int i = 0;
local long pos1, pos2, pos3;

FSeek(hdr.offset_string_table);
struct
{
  SetBackColor( cLtYellow );
  long s_offset ;
  long s_entrycount;
  long s_unk3;
  long s_id;

  pos1 = FTell();
  FSeek(s_offset);
  struct
  {
    SetBackColor( 0xFF934C );
    long se_offset ;
    long se_blockcount;
    long se_dummy;  // = 0 dummy?
    long se_totallength;
    long se_fontid;
    pos2 = FTell();
    FSeek(se_offset);
    struct
    {
      SetBackColor( 0xFF00B2);
      long   be_offset ;
      long   be_prev_block_len; // prev block length?
      long   be_length;
      long   be_length2; // = vl_length 1
      int64  be_line_height;

      pos3 = FTell();
      FSeek(be_offset);
      struct
      {
        SetBackColor( 0xFF9400);
        struct
        {
          uint16 lo;
          uint16 hi;
        } data[be_length];
        uint16  wend;   
      } value
     
      FSeek(pos3);
    } block_entry[se_blockcount] ;

    FSeek(pos2);
  } string_entry[s_entrycount] ;

  FSeek(pos1);

} string_table[hdr.count_string_table] ;

FSeek(hdr.offset_symbol_codes);
SetBackColor( cLtPurple );
code_table codes[hdr.count_symbol_codes];

FSeek(hdr.offset_symbol_table);
SetBackColor( cLtGreen );
symbol_table symbols[hdr.count_symbol_table];

FSeek(hdr.offset_fonts_table);
SetBackColor( cYellow );
struct
{
  long  ft_fontid;
  float ft_glyph_width;
  float ft_glyph_height;
  float ft_kern_y;
  float ft_kern_x;
} fonts_table[hdr.count_fonts_table];

FSeek(hdr.offset_unk2);
SetBackColor( cLtRed );
struct
{
  struct
  {
    long ut2_unk1;
    long ut2_unk2;
    char ut2_name[32];
  } table2_entry[hdr.count_unk2] ;
} unk_table2;
string ReadEntry(long id, byte hip)
{
  local string c, c1;

  local uint16 r;
  local int k, i, d = 0;
  local char b;

  SPrintf(c, "%sID %d:", c, string_table[id].s_id);
 
  local int v = 0;
  while (true)
  {
    SPrintf(c, "%s\n      Entry =: ", c, v);
    d = 0;
    k = 0;
    while (true)
    {
      i = 0;
      c1 = "";
      while (i != string_table[id].string_entry[v].block_entry[d].be_length)
      {
        b = 0;
        r = string_table[id].string_entry[v].block_entry[d].value.data[i].lo;
        k = 0;
        while (k != hdr.count_symbol_codes)
        {
          if (r == codes[k].ct_code)
          {
            b = codes[k].ct_char;
            break;
          }
          k ;
        }
        if (r == 0x8001)
        {
          b = ' ';
        }
        if (b != 0)
          if (hip)
            SPrintf(c, "%s %4s",c,b);
          else
            c = c b;
        else
          SPrintf(c, "%s(%d)", c, r);
        // hi part of struct
        if (hip)
        {
          r = string_table[id].string_entry[v].block_entry[d].value.data[i].hi; 
          //if (r > 0)
          SPrintf(c1, "%s x", c1, r); 
        }
        i ;
      }
      d ;
      if (hip)
        c = c "\n\t" c1;
      if (d == string_table[id].string_entry[v].se_blockcount)
        break;
      c = c "\n                 ";
    }
    v ;
    if (v == string_table[id].s_entrycount)
      break;
  }
  return c;
}

local int z = 0;

while (z != 23)
{
  Printf("\n%s", ReadEntry(z, 0));
  z ;
}

/*
local int k;
while (z != hdr.count_symbol_table)
{
  k = 0;
  while (k != hdr.count_symbol_table)
  {
    if (z == (codes[k].ct_code))
      Printf("%d: %c (%d) = %d / %d\n", z, codes[k].ct_char, codes[k].ct_char, codes[k].ct_code, codes[k].ct_unk1);
    k ;
  }
  z ;
}
*/
  • Author
  • Localization

Ogoshi, posted Fri Oct 09, 2015 1:42 am (8258)


Can u explain more plz? Im lost...
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.