Jump to content

Recommended Posts

So here are some details about parsing the OGD files based on the above structure:

 

When parsing block data, you will have item_len bytes. Each record ends with bytes indicating relationships to other records in the same file but different chunks. This info is taken from the solo_refs and multi_refs variables from the block descriptor.

 

solo_refs is the number of direct relations to other SINGULAR items. For each value in solo_refs, there in a uint32 at the end of the item containing a pointer to another item in the same file. SO, if solo_refs for a certain block is "3", the final 3 bytes of the item are references to other objects.

 

multi_refs is the number of "list" relations to other objects. For each value in multi_refs, there are TWO (not one as before, be careful here) bytes at the end (occurring before the solo_refs) containing this structure:

 

byte[0]: offset into data_block[0] (this block contains only offset pointing into other blocks)

byte[1]: the number of consecutive pointers to read from data_block[0].

 

So basically, jump to byte[0], read byte[1] pointers.

 

string_references:

 

each string_ref has a block_id, an offset, and a length. So for each item in that block, there is a string at the given offset. If length == 0, the string data will contain only a uint32, which points into the string_table (this is a RELATIVE offset, and starts from the beginning of the string table data, AFTER the 4 byte 'size' is read!). If length > 0, the data will be formed like this:

 

0x00 uint32 zero?

0x04 uint32 (some sort of hash?)

0x08 uint32 formatted_len

0x0c uint32 padded_len (this will match the length from the string_ref)

0x10 bytes[padded_len] the string

 

after stripping nulls from the string, it should be of length "formatted_len".

 

I'm not entirely sure how object_refs work yet, but one thing that is clear is that the 3rd param is another block_id which points to a block that hasn't already been "joined" (via solo_refs or multi_refs) with the current block. In every instance, the 'destination' block and 'source' block have the same number of items, so I suspect this may be a one-to-one distinct relation.

Link to comment
Share on other sites

Guest Erudain

I would like to request a "hide helmet" mod as in Skyrim/Oblivion if it's possible.
Kinda useless having all the hairstyles you get only to get hidden beneth your helmet.

Link to comment
Share on other sites

I would like to request finding a way to change your character's skin colour, possibly allowing you to access the character creation screen, much like skyrim has a command to do so.

The reason I ask is that I accidently chose a darker skin colour, not expecting my Parents to be of a different race. The skin didn't look too much further from white (My skin colour and race) but was apparently enough to make my parents a different race.

I'd like very much to be able to change it without having to start again.

Thank you.

Link to comment
Share on other sites

  • 3 weeks later...
Guest John (JVM)

- I tried to page through the files with my limited knowledge and found a couple small references to 'hellspass' and 'evgames' - both locations in the show - but I can't access the files.

 

Also, if anyone can find the soundbanks for any of the cut characters (Terrance Mephesto would especially be appreciated) let me know!

Link to comment
Share on other sites

  • 3 months later...
  • 6 months later...

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...