Mega Man 11 .tex files

Textures, recreate headers, conversions, algorithms and parsing of image files
MisterPrawn
Posts: 5
Joined: Sun Feb 08, 2015 11:54 pm

Mega Man 11 .tex files

Post by MisterPrawn »

Mega Man 11 uses the MT Framework engine, and I've managed to rip the .tex Texture files from it. However, the tools that can open .tex files need to be updated, so that it can convert them to a usable format.

Provided a sample to work with. Hopefully tools can be updated to make it work.
zexl
Posts: 13
Joined: Wed Jan 27, 2016 1:26 am

Re: Mega Man 11 .tex files

Post by zexl »

Help!Help!Help!Mega Man 11 .tex files,How to open the tex file。Thank you kindly。
shadow_lonely
Posts: 216
Joined: Mon Oct 06, 2014 3:30 am

Re: Mega Man 11 .tex files

Post by shadow_lonely »

MisterPrawn wrote:Mega Man 11 uses the MT Framework engine, and I've managed to rip the .tex Texture files from it. However, the tools that can open .tex files need to be updated, so that it can convert them to a usable format.

Provided a sample to work with. Hopefully tools can be updated to make it work.

Try this for find more information: viewtopic.php?t=7099
zexl
Posts: 13
Joined: Wed Jan 27, 2016 1:26 am

Re: Mega Man 11 .tex files

Post by zexl »

textures.zip
@shadow_lonely Converted file error
Delutto
Posts: 561
Joined: Tue Oct 13, 2015 1:26 pm

Re: Mega Man 11 .tex files

Post by Delutto »

Code: Select all

# Mega Man 11 (PC) - TEX to DDS Converter
# Written by Random Talking Bush

endian little

idstring "TEX\x00"
set MEMORY_FILE binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x0A\x00\x80\x00\x00\x00\x80\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x44\x58\x54\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"

goto 0x08 SEEK_SET
get DATABLOCK long
goto 0x0D SEEK_SET
get FORMAT byte
goto 0x10 SEEK_SET

if FORMAT = 0x07
   set MEMORY_FILE binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x08\x00\x80\x00\x00\x00\x80\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\xFF\x00\x00\x00\x00\xFF\x00\x00\x00\x00\xFF\x00\x00\x00\x00\xFF\x08\x10\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
   print "R8G8B8A8_UNORM TEXTURE (0x07)"

elif FORMAT = 0x13
   print "BC1_UNORM / DXT1 TEXTURE (0x13)"

elif FORMAT = 0x15
   putVarChr MEMORY_FILE 0x57 0x33 byte
   print "BC2_UNORM / DXT3 TEXTURE (0x15)"

elif FORMAT = 0x19
   putVarChr MEMORY_FILE 0x54 0x31495441 long
   print "BC4_UNORM / ATI1 TEXTURE (0x19)"

elif FORMAT = 0x1F
   putVarChr MEMORY_FILE 0x54 0x32495441 long
   print "BC5_UNORM / ATI2 TEXTURE (0x1F)"

elif FORMAT = 0x20
   print "CUBEMAP TEXTURE? (0x20), skipping"
   exit

elif FORMAT = 0x2A
   putVarChr MEMORY_FILE 0x57 0x35 byte
   print "BC3_UNORM / DXT5 TEXTURE (0x2A)"

elif FORMAT = 0x30
   set MEMORY_FILE binary "\x44\x44\x53\x20\x7C\x00\x00\x00\x07\x10\x0A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x04\x00\x00\x00\x44\x58\x31\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
   print "BC7_UNORM TEXTURE (0x30)"
else
   print "UNKNOWN FORMAT (%FORMAT%)"
   exit
endif

set MIPCOUNT DATABLOCK
set WIDTH DATABLOCK
set HEIGHT DATABLOCK
math MIPCOUNT & 0x0000003F
math WIDTH & 0x0007FFC0
math WIDTH > 6
math HEIGHT & 0xFFF80000
math HEIGHT > 19

for i = 0 < MIPCOUNT
   get MIPOFFSET long
   get PADDING64 long

   if i = 0
      set DDSSTART MIPOFFSET
   endif
next i

get DDSSIZE asize
math DDSSIZE - DDSSTART
putVarChr MEMORY_FILE 0x0C HEIGHT short
putVarChr MEMORY_FILE 0x10 WIDTH short
putVarChr MEMORY_FILE 0x14 DDSSIZE long
putVarChr MEMORY_FILE 0x1C MIPCOUNT byte

append
log MEMORY_FILE DDSSTART DDSSIZE
append

get PATH basename
string PATH + ".dds"
get SIZE asize MEMORY_FILE
log PATH 0 SIZE MEMORY_FILE

Source: https://www.vg-resource.com/thread-34368-post-648874.html#pid648874