From: Loren Petrich <petrich@netcom.com> Newsgroups: alt.games.marathon Subject: Analyzing Pathways into Darkness's DPIN resource Message-ID: <170420000415266828%petrich@netcom.com> Date: Mon, 17 Apr 2000 11:15:26 GMT Organization: @Home Network As I had discovered earlier, the 'dpin' resource in the PID app appears to be some extra map data. It has the form of a header with size 2876 bytes followed by 25 chunks with sizes of 9112 bytes each. The header is very difficult to puzzle out, but I have had more success in finding patterns in the chunks for the levels, even if not in interpreting those patterns. This is in C/C++ form for convenience; some of the comments may wrap. // Very speculative struct PID_DPIN_HdrBlock { short Unknown[4]; }; struct PID_DPIN_Header { // Nonzero values are very sparse in it, and show little sign of patterns short Unknown1[414]; // All but the first few of this one's members are {-1, 0, 0, 0} as shorts PID_DPIN_HdrBlock Unknown2[256]; }; // Plausible struct PID_DPIN_Item { // Like the two presumed longs at the beginning of each level in the map-file data, // the upper 2 bytes of each are almost always zero. long Unknown1[2]; // The first one is 192 + some small number // The second one is either a small number or 128 + a small number, // something like the (presumed) texture ID in PID_Wall // The fourth one is a small number never greater than about 7 byte Unknown2[4]; // Always zero short Unused; // Index to whatever extra items might be present // (debris near pillars, stuff at corpses); -1 is none short ExtraItem; }; // No idea what this is struct PID_DPIN_Unknown { short Unknown[4]; }; struct PID_DPIN_Level { // These have some pattern of small value / big value, // and the first one is sometimes full (all nonzero). // THe sum of the two sizes is 300. short Unknown1[256]; short Unknown2[44]; // Has value {0, 0, -1, 0} when unused PID_DPIN_Unknown Unknown3[40]; // Always either 0 or 1024 long Unknown4[16]; // Referenced from PID_Sector::Item and PID_DPIN_Item::ExtraItem; // the unused ones are all zeros except for ExtraItem, which is -2. PID_DPIN_Item Items[500]; // Always zero byte Unused[128]; }; -- Loren Petrich petrich@netcom.com Happiness is a fast Macintosh And a fast train