Important information: this site is currently scheduled to go offline indefinitely by end of the year.

Please help me with these files

The Original Forum. Game archives, full of resources. How to open them? Get help here.
Post Reply
Pilgrim
ultra-n00b
Posts: 8
Joined: Thu Dec 02, 2010 6:41 pm
Has thanked: 1 time

Please help me with these files

Post by Pilgrim »

This has been a challenge. I have been trying to figure out how to get these files converted or opened. They are from Vanguard Saga of Heroes. It uses the Unreal 2 engine.
I have tried using well over a dozen tools made for converting, viewing or editing the the assets used in Unreal games, but the developers seem to have modified these and nothing works with them.
This game has some very nice models I'd really like to work with. I would like to see if someone would like to try to figure it out. I would prefer to be able to open in/convert/imoport into 3ds Max, but blender would be fine as well.

The characters directory has a Meshes folder, and the files in there are .uem. I was able to extract files from these, and get files with .EMFXMesh extension.
The texture files in .utx format, but won't open with any programs made for that file type.
This game is free to play and has a very large disk space requirement, so it probably isn't feasible to download it for experimenting unless you really want to or already have it. But I do have sample files if needed.

Thanks for any help.
FurryFan
mega-veteran
mega-veteran
Posts: 190
Joined: Sat Jan 09, 2010 9:37 pm
Has thanked: 8 times
Been thanked: 64 times

Re: Please help me with these files

Post by FurryFan »

This game uses a modified Unreal Engine which is why the meshes don't load in Unreal Engine based software.
Here is a script that works on SOME of the .EMFXMesh files (It works on some NPC/Character meshes). I used GameExtractor to extract the mesh files from the UEM files. When the script asks you to load another files, just type in what you want to save the mesh as but include the .3ds extension.
This script will also convert the UVs.
http://ps23dformat.wikispaces.com/file/ ... shbeta.bms
Image

Code: Select all

open FDSE ? 1 ;
findloc OFFSET string "\x46\x58\x41\x20" 0 0 ;
If OFFSET = 0 ;
CleanExit ;
EndIF ;
GoTo OFFSET 0 ;
GoTo 0x6 0 SEEK_CUR ;
SavePos etet 0 ;
For k = 1 To 1000000 ;
SavePos guard 0 ;
GoTo etet 0 ;
Get test1 Long 0 ;
Get jump Long 0 ;
Get test2 Long 0 ;
Math be1 = 0 ;
Math be2 = 0 ;
Math jump += 0xC ;
If test1 = 3 ;
Math be1 = 1 ;
EndIF ;
If test2 = 3 ;
Math be2 = 1 ;
EndIF ;
Math be1 += be2 ;
If be1 = 2 ;
Math k = 1000000 ;
EndIF ;
GoTo etet 0 ;
GoTo jump 0 SEEK_CUR ;
SavePos etet 0 ;
Next k ;
GoTo guard 0 ;
GoTo 0x18 0 SEEK_CUR ;
Get van Long 0 ;
GoTo etet 0 ;
Get test1 Long 0 ;
Get jump Long 0 ;
Math jump += 0xC ;
Get test2 Long 0 ;
GoTo etet 0 ;
GoTo jump 0 SEEK_CUR ;
SavePos etet 0 ;
GoTo etet 0 ;
GoTo 0x4 0 SEEK_CUR ;
Get jump Long 0 ;
Math jump *= 0xA ;
GoTo etet 0 ;
GoTo jump 0 SEEK_CUR ;
GoTo 0x2C 0 SEEK_CUR ;
GoTo 0x22 0 SEEK_CUR ;
findloc OFF Long van 0 0 ;
If OFF = 0 ;
CleanExit ;
EndIF ;
GoTo OFF 0 ;
SavePos etet 0 ;
Get facenumber Long 0 ;
SavePos facestart 0 ;
Math facenumber *= 2 ;
Math facenumber /= 6 ;
Math jump = facenumber ;
Math jump *= 0x6 ;
GoTo jump 0 SEEK_CUR ;
SavePos etet 0 ;
GoTo 0x14 0 SEEK_CUR ;
Get vertexnumber Long 0 ;
SavePos vertexstart 0 ;
GoTo 0x18 0 SEEK_CUR ;
SavePos uvstart 0 ;
Math lion = vertexnumber ;
Math lion *= 0x14 ;
Math liger = facenumber ;
Math liger *= 0xa ;
Math total3ds = lion ;
Math total3ds += liger ;
Math total3ds += 0x89 ;
Math total1 = total3ds ;
Math total1 -= 0x10 ;
Math total2 = total3ds ;
Math total2 -= 0x54 ;
Math total3 = total3ds ;
Math total3 -= 0x5E ;
Math vertexbase = 0x6c ;
Math WHEREvertex = vertexbase ;
Math tigervertex = vertexnumber ;
Math tigervertex *= 0xc ;
Math facebase1 = vertexbase ;
Math facebase1 += tigervertex ;
Math tigerface = facenumber ;
Math tigerface *= 0x8 ;
Math tigertigerface = facenumber ;
Math tigertigerface *= 0xa ;
Math facebase2 = facebase1 ;
Math facebase2 += 0x8 ;
Math WHEREface = facebase2 ;
Math facebase3 = facebase2 ;
Math facebase3 += tigerface ;
Math tigertigertigerface = facenumber ;
Math tigertigertigerface *= 0x2 ;
Math weretiger = tigertigerface ;
Math weretiger += 0x15 ;
Math tiger1 = tigervertex ;
Math tiger1 += 0x8 ;
Math tiger4 = tigertigertigerface ;
Math tiger4 += 0xd ;
Math WHEREfacecount = facebase3 ;
Math WHEREfacecount += 0xd ;
Math uvbase = WHEREfacecount ;
Math uvbase += tigertigertigerface ;
Math tigon = tigerface ;
Math tigon += 0x8 ;
Math WHEREuv = uvbase ;
Math WHEREuv += 0x8 ;
Math WHEREvertexq = WHEREvertex ;
Math WHEREuvq = WHEREuv ;
Math WHEREfaceq = WHEREface ;
Math WHEREfacecountq = WHEREfacecount ;
If vertexnumber > 70000 ;
CleanExit ;
EndIF ;
If facenumber > 70000 ;
CleanExit ;
EndIF ;
set M Byte 0x4d ;
Put M Byte 1 ;
set M Byte 0x4d ;
Put M Byte 1 ;
set M Byte 0xed ;
Put M Byte 1 ;
set M Byte 0x22 ;
Put M Byte 1 ;
set M Byte 0x01 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x02 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x0a ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x03 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x3d ;
Put M Byte 1 ;
set M Byte 0x3d ;
Put M Byte 1 ;
set M Byte 0xdd ;
Put M Byte 1 ;
set M Byte 0x22 ;
Put M Byte 1 ;
set M Byte 0x01 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0xff ;
Put M Byte 1 ;
set M Byte 0xaf ;
Put M Byte 1 ;
set M Byte 0x3e ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0xa0 ;
Put M Byte 1 ;
set M Byte 0x0b ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x4e ;
Put M Byte 1 ;
set M Byte 0x6f ;
Put M Byte 1 ;
set M Byte 0x6e ;
Put M Byte 1 ;
set M Byte 0x65 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x10 ;
Put M Byte 1 ;
set M Byte 0xa0 ;
Put M Byte 1 ;
set M Byte 0x0f ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x11 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x09 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x20 ;
Put M Byte 1 ;
set M Byte 0xa0 ;
Put M Byte 1 ;
set M Byte 0x0f ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x11 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x09 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0xcc ;
Put M Byte 1 ;
set M Byte 0xcc ;
Put M Byte 1 ;
set M Byte 0xcc ;
Put M Byte 1 ;
set M Byte 0x30 ;
Put M Byte 1 ;
set M Byte 0xa0 ;
Put M Byte 1 ;
set M Byte 0x0f ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x11 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x09 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0xff ;
Put M Byte 1 ;
set M Byte 0xff ;
Put M Byte 1 ;
set M Byte 0xff ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x40 ;
Put M Byte 1 ;
set M Byte 0x99 ;
Put M Byte 1 ;
set M Byte 0x22 ;
Put M Byte 1 ;
set M Byte 0x01 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x64 ;
Put M Byte 1 ;
set M Byte 0x69 ;
Put M Byte 1 ;
set M Byte 0x6x ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x41 ;
Put M Byte 1 ;
set M Byte 0x8f ;
Put M Byte 1 ;
set M Byte 0x22 ;
Put M Byte 1 ;
set M Byte 0x01 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x10 ;
Put M Byte 1 ;
set M Byte 0x41 ;
Put M Byte 1 ;
set M Byte 0x64 ;
Put M Byte 1 ;
set M Byte 0x67 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x00 ;
Put M Byte 1 ;
set M Byte 0x9d ;
Put M Byte 1 ;
set M Byte 0x08 ;
Put M Byte 1 ;
GoTo 0x2 1 ;
Put total3ds Long 1 ;
GoTo 0x12 1 ;
Put total1 Long 1 ;
GoTo 0x56 1 ;
Put total2 Long 1 ;
GoTo 0x60 1 ;
Put total3 Long 1 ;
GoTo 0x66 1 ;
Put tiger1 Long 1 ;
GoTo 0x6A 1 ;
Put vertexnumber Short 1 ;
GoTo facebase1 1 ;
set M Byte 0x20 ;
Put M Byte 1 ;
set M Byte 0x41 ;
Put M Byte 1 ;
Put weretiger Long 1 ;
Put facenumber Short 1 ;
GoTo facebase3 1 ;
set M Byte 0x30 ;
Put M Byte 1 ;
set M Byte 0x41 ;
Put M Byte 1 ;
Put tiger4 Long 1 ;
set M Byte 0x4e ;
Put M Byte 1 ;
set M Byte 0x6f ;
Put M Byte 1 ;
set M Byte 0x6e ;
Put M Byte 1 ;
set M Byte 0x65 ;
Put M Byte 1 ;
set M Byte 0x0 ;
Put M Byte 1 ;
Put facenumber Short 1 ;
GoTo uvbase 1 ;
set M Byte 0x40 ;
Put M Byte 1 ;
set M Byte 0x41 ;
Put M Byte 1 ;
Put tigon Long 1 ;
Put vertexnumber Short 1 ;
For vwolf = 0 < vertexnumber ;
GoTo vertexstart 0 ;
Get Type1 Long 0 ;
Get Type2 Long 0 ;
Get Type3 Long 0 ;
GoTo 0x2C 0 SEEK_CUR ;
SavePos vertexstart 0 ;
GoTo WHEREvertexq 1 ;
Put Type1 Long 1 ;
Put Type2 Long 1 ;
Put Type3 Long 1 ;
SavePos WHEREvertexq 1 ;
Next vwolf ;
For fwolf = 0 < facenumber ;
GoTo facestart 0 ;
Get Type1 short 0 ;
Get Type2 short 0 ;
Get Type3 short 0 ;
SavePos facestart 0 ;
GoTo WHEREfaceq 1 ;
Put Type1 short 1 ;
Put Type2 short 1 ;
Put Type3 short 1 ;
Put 0 short 1 ;
SavePos WHEREfaceq 1 ;
Next fwolf ;
For uvwolf = 0 < vertexnumber ;
GoTo uvstart 0 ;
Get Type1 Long 0 ;
Get Type2 Long 0 ;
GoTo 0x30 0 SEEK_CUR ;
SavePos uvstart 0 ;
GoTo WHEREuvq 1 ;
Put Type1 Long 1 ;
Put Type2 Long 1 ;
SavePos WHEREuvq 1 ;
Next uvwolf ;
For fcwolf = 0 < facenumber ;
GoTo WHEREfacecountq 1 ;
Put fcwolf short 1 ;
SavePos WHEREfacecountq 1 ;
Next fcwolf ;
I accept ALL requests. Let me know your requests.
Post Reply