Jump to content

The Outforce - OPF file


Krisztian1990

Recommended Posts

Hello, guys!

I'm sorry to writing this, but I really need your help.

I'm working on a tool for a strategy game, which has two different archives: the *.box (I have the structure, so i can extract and build *.box archives), and the *.opf archive, which is a data container that contains the assets of the game...

All I want to know is: What is the file structure for the .opf archive? I'm not good at using any hex editors, so I need your help in this.

This file was created by the devs with an external tool named: UnitDeveloper Tool.

Attached, I sent you the .opf file.

*Watto tried to write the file structure, but his structure is not "accurate".

Thank you very much for all of your comments / replies in advance.

Krisztian

PackedProject.zip

Link to comment
Share on other sites

13 minutes ago, Krisztian1990 said:

and the *.opf archive, which is a data container that contains the assets of the game...

Is it from "The Outforce" game on PC?
It seems like a continuation of the topic from xentax https://forum.xentax.com/viewtopic.php?t=24423

 

13 minutes ago, Krisztian1990 said:

This file was created by the devs with an external tool named: UnitDeveloper Tool.

How do you know that? I couldn't find too much info on this tool online. Do you have this tool?

Link to comment
Share on other sites

  • ikskoks changed the title to The Outforce - OPF file
10 minutes ago, ikskoks said:

Is it from "The Outforce" game on PC?
It seems like a continuation of the topic from xentax https://forum.xentax.com/viewtopic.php?t=24423

 

How do you know that? I couldn't find too much info on this tool online. Do you have this tool?

Yes, it is for The Outforce. We managed to save the game, now it is re-released on Zoom-platform . com site. I need the .opf file structure. 😞 I also created some good maps (skrimish / multiplayer), I'm also working on an external TCP/IP client <-> host server tool. 

The only obstacle for me is the .opf file.

Link to comment
Share on other sites

00..1B is probably just some ID bit
Afterwards, 2 bytes seem to relate to string size followed by string of that length (no null terminator it seems) up to offset 0x4E where I suppose size is encoded in 32-bit value for some reason... As it seems to correspond to the next string right after, which now seems to have null terminator... Maybe it has not, but unsure how to translate that inconsistency atm...
Kinda messy lol... Cause otherwise, it is not really string size in that case or it starts with null and size is 24-bits which sounds like it shouldn't be the case...

Unsure what 0xD6-0xE4 is now, but there seems to be same pattern of 2 bytes + string without null, 3 entries in succession till offset 0x150.
There seems to be some header, I suppose it has size 0x7C, followed by some data...

Then the pattern seems to repeat, with another 3 strings written like that with 0x7C length header followed by some data.
I can at least see similar weird string pattern applied throughout the file, this is another such block (offset 0x41C7) and length of that weird header seems to be right after with some more data with JFIF magic... Provided that is the data start at least...
image.thumb.png.8eebf17350fe053626696e9b86d7d606.png

Link to comment
Share on other sites

0x72 offset in the mentioned header before each entry seems to contain size of data after it (when I go 4 bytes after that, to offset 0x1C6 for example from beginning of the file) and try to jump to other offset from there with same value (0x4002 for the first file), I seem to end up right at the next repeat of the pattern I mentioned before (in this case, offset 0x41C8 from the beginning of the file)

Link to comment
Share on other sites

0xE0 from beginning of the file seems to contain number of entries (found by @Sor3nt)

Just making a copy of what they posted, we sort of both had a look at the same time in different places lol...
 

Quote

0x000000E0 is your entry count
loop
string internalName;
string localName;
string targetfolder; char fileInfos[117] <= width, height.... also somewhere the data length
char data[fileInfos.dataLen]

guess after the 339 entries, there is more, new struct

 

Link to comment
Share on other sites

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