Jump to content

Clumped characters from Project IGI *.MEF


Go to solution Solved by mrmaller1905,

Recommended Posts

  • Engineers
Posted (edited)

How far did we get on Xentax with these .mef? I feel we were done.:D

You could use the output of Durik's script for 015_01_1.mef

to find out where some "positioning" matrices are to be found,

maybe in section D3DR or TAMC (what do these signatures mean? Direct3D rotation, etc?)

btw, "chank" might mean "chunk" (but not sure)

Detected file type: IGI

	(chank:HSEM, offset: 20, size: 156, next: 172)

	(chank:ATTA, offset: 192, size: 0, next: 16)

	(chank:XTVM, offset: 208, size: 0, next: 16)

	(chank:TROP, offset: 224, size: 0, next: 16)

	(chank:XVTP, offset: 240, size: 0, next: 16)

	(chank:CFTP, offset: 256, size: 0, next: 16)

	(chank:D3DR, offset: 272, size: 56, next: 72)

	(chank:DNER, offset: 344, size: 5768, next: 5784)

	(chank:XTRV, offset: 6128, size: 47160, next: 47176)

	(chank:HSMC, offset: 53304, size: 64, next: 80)

	(chank:XTVC, offset: 53384, size: 7504, next: 7520)

	(chank:ECFC, offset: 60904, size: 7392, next: 7408)

	(chank:TAMC, offset: 68312, size: 96, next: 112)

	(chank:HPSC, offset: 68424, size: 44328, next: 44344)

	(chank:XTVC, offset: 112768, size: 0, next: 16)

	(chank:ECFC, offset: 112784, size: 0, next: 16)

	(chank:TAMC, offset: 112800, size: 0, next: 16)

	(chank:HPSC, offset: 112816, size: 0, next: 0)[/code]

Edited by shak-otay
  • 2 weeks later...
  • 10 months later...
  • mrmaller1905 changed the title to Clumped characters from Project IGI *.MEF
  • 10 months later...
  • 2 months later...
  • 2 weeks later...
  • Engineers
Posted (edited)

I think you can replace it with if/else function

Looks like these values are responsible for mesh position.

image.thumb.png.6997f8ab6a4fe2ec2d01547329c68fa1.png

Edited by h3x3r
  • Engineers
Posted (edited)

Try this one. But i think that local variable will be problem here.

local string Sign;
struct
{
    ILFF_HEADER header;
    CH formatid[4];  // OCEM

    while(FTell() < FileSize())
    {
        Sign=ReadString(FTell(),4);
        
        if (Sign ==  "HSEM")
        {
            HSEM hsem;
        }
        else if (Sign ==  "ATTA")
        {
            ATTA atta;
        }
        else if (Sign ==  "XTVM")
        {
            XTVM xtvm;
        }
        else if (Sign ==  "TROP")
        {
            TROP trop;
        }
        else if (Sign ==  "XVTP")
        {
            XVTP xvtp;
        }
        else if (Sign ==  "CFTP")
        {
            CFTP cftp;
        }
        else if (Sign ==  "D3DR")
        {
            D3DR d3dr;
        }
        else if (Sign ==  "DNER")
        {
            DNER dner;
        }
        else if (Sign ==  "XTRV")
        {
            XTRV xtrv;
        }
        else if (Sign ==  "PMTL")
        {
            PMTL pmtl;
        }
        else if (Sign ==  "HSMC")
        {
            HSMC hsmc;
        }
        else if (Sign ==  "XTVC")
        {
            XTVC xtvc;
        }
        else if (Sign ==  "ECFC")
        {
            ECFC ecfc;
        }
        else if (Sign ==  "TAMC")
        {
            TAMC tamc;
        }
        else if (Sign ==  "HPSC")
        {
            HPSC hpsc;
        }
        else if (Sign ==  "TXAN")
        {
            TXAN txan;
        }
        else
        {
            Assert(false, "Parsing error: unhandled block type");
        }
    }
} igi1_mef;

or change function on ReadUInt(FTell()) but you must also change exception value to uint. > if (Sign == 1296388936)  // HSEM sign

Edited by h3x3r
  • Like 1
  • Engineers
Posted

Thanks. That problem solved.

local UINT32 Sign;
local UINT32 x;

struct
{
    ILFF_HEADER header;
    CH formatid[4];  // OCEM

    while(FTell() < FileSize())
    {
        x = FTell();
        FSeek(x);
        Sign=ReadUInt();
        
        if (Sign ==  1296388936) //HSEM
        {
            HSEM hsem;
        }
        else
        {
            Assert(false, "Parsing error: unhandled block type");
        }
    }

But the next error to appear:  "could not resolve field header". (I had to insert the include .bt files into the main bt). 

error line:     if(header.chunksize > 0)

I think, I'll need to wait for an update of pfp master.

  • 1 month later...
  • Engineers
Posted (edited)
On 4/12/2026 at 4:49 PM, mrmaller1905 said:

 and does anyone have an idea to start a new terrain editor that creates custom terrains?

Well, I know, you're constantly switching between hundreds of requests so I don't know how deep your interest is in this one.:classic_unsure:

I compiled the project and seems it's a terrain viewer:

IGIterrainproject.thumb.png.457acd56f0f90dea1fd396061367b965.png

If anyone is competent to develop an IGI terrain editor then the author of this project should be. Why not ask him?

There's also another project that could come in handy (but it's not a terrain editor).

edit: I read a review that said/confirmed the environment being "bleak and boring" so dunno whether it's worth bothering. (If you don't suffer from nostalgia it would make more sense, imho, to care for games with modding tools, such as "Beyond Enemy Lines".)

Edited by shak-otay
  • 1 month later...
  • Engineers
Posted

I didn't expect Jones to be still working on this. The feature "Level ToolKit" of the igi-toolKit would be the first thing to use (if I had the game).

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...