Jump to content

pst ARE files


fuzzie

Recommended Posts

Posted

The documented end of the Door structure in ARE files is incorrect for PS:T. The door points at 0x90 are fine, but there seems to be a dword (typically FFFFFFFF) at 0x94 followed by the Dialog resref at 0x98 (yes, this is actually used and necessary, which is why I found this..). See ar1700's ar1700d1 as an example; it has the dialog DPTTRANS.

 

I'd appreciate it if anyone could work out what's going on here; there seems to no longer be any room for a 32-byte "Region link" thing but the door data does take the same amount of total space as the items documented by IESDP.

Posted

This is the door structure

{
list.add(new TextString(buffer, offset, 32, "Name"));
list.add(new TextString(buffer, offset + 32, 8, "Door ID"));
list.add(new Flag(buffer, offset + 40, 4, "Flags", s_flag));
list.add(new DecNumber(buffer, offset + 44, 4, "First vertex index (open)"));
list.add(new SectionCount(buffer, offset + 48, 2, "# vertices (open)", null));
list.add(new SectionCount(buffer, offset + 50, 2, "# vertices (closed)", null));
list.add(new DecNumber(buffer, offset + 52, 4, "First vertex index (closed)"));
list.add(new DecNumber(buffer, offset + 56, 2, "Bounding box (open): Left"));
list.add(new DecNumber(buffer, offset + 58, 2, "Bounding box (open): Top"));
list.add(new DecNumber(buffer, offset + 60, 2, "Bounding box (open): Right"));
list.add(new DecNumber(buffer, offset + 62, 2, "Bounding box (open): Bottom"));
list.add(new DecNumber(buffer, offset + 64, 2, "Bounding box (closed): Left"));
list.add(new DecNumber(buffer, offset + 66, 2, "Bounding box (closed): Top"));
list.add(new DecNumber(buffer, offset + 68, 2, "Bounding box (closed): Right"));
list.add(new DecNumber(buffer, offset + 70, 2, "Bounding box (closed): Bottom"));
list.add(new DecNumber(buffer, offset + 72, 4, "First vertex index (impeded, open)"));
list.add(new SectionCount(buffer, offset + 76, 2, "# vertices (impeded, open)", null));
list.add(new SectionCount(buffer, offset + 78, 2, "# vertices (impeded, closed)", null));
list.add(new DecNumber(buffer, offset + 80, 4, "First vertex index (impeded, closed)"));
list.add(new Unknown(buffer, offset + 84, 4));
list.add(new ResourceRef(buffer, offset + 88, "Opening sound", "WAV"));
list.add(new ResourceRef(buffer, offset + 96, "Closing sound", "WAV"));
list.add(new DecNumber(buffer, offset + 104, 4, "Cursor frame number"));
list.add(new DecNumber(buffer, offset + 108, 2, "Trap detection difficulty"));
list.add(new DecNumber(buffer, offset + 110, 2, "Trap removal difficulty"));
list.add(new Bitmap(buffer, offset + 112, 2, "Is trapped?", s_yesno));
list.add(new Bitmap(buffer, offset + 114, 2, "Is trap detected?", s_yesno));
list.add(new DecNumber(buffer, offset + 116, 2, "Launch point: X"));
list.add(new DecNumber(buffer, offset + 118, 2, "Launch point: Y"));
list.add(new ResourceRef(buffer, offset + 120, "Key", "ITM"));
list.add(new ResourceRef(buffer, offset + 128, "Script", "BCS"));
list.add(new DecNumber(buffer, offset + 136, 4, "Detection difficulty"));
list.add(new DecNumber(buffer, offset + 140, 4, "Lock difficulty"));
list.add(new DecNumber(buffer, offset + 144, 2, "Open location: X"));
list.add(new DecNumber(buffer, offset + 146, 2, "Open location: Y"));
list.add(new DecNumber(buffer, offset + 148, 2, "Close location: X"));
list.add(new DecNumber(buffer, offset + 150, 2, "Close location: Y"));
list.add(new StringRef(buffer, offset + 152, "Unlock message"));
list.add(new TextString(buffer, offset + 156, 24, "Travel trigger name"));
list.add(new StringRef(buffer, offset + 180, "Speaker name"));
list.add(new ResourceRef(buffer, offset + 184, "Dialogue", "DLG"));
list.add(new Unknown(buffer, offset + 192, 8));
return offset + 200;
 }

The unlock message and travel trigger aren't actually used for anything in PST (which is why that field is only 24 bytes).

Posted
The unlock message and travel trigger aren't actually used for anything in PST (which is why that field is only 24 bytes).

 

That's also helpful to know. Thank you!

 

I don't suppose you have any other such format information lurking? ??? I can't think of anything else specific PST-wise I'm wondering right now - unless someone knows why the string 'ar1700d1' is lurking in the executable (it's not needed for the party member removal) or anyone has clues on other hard-coded non-projectile/spell bits (the movies and party member removal bits are trivial, but things like the Maze generation will be no fun, I imagine).

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...