Rainbow Studios .SOI (Stream Object Information)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Teancum
Posts: 94
Joined: Mon Sep 22, 2014 5:13 pm

Rainbow Studios .SOI (Stream Object Information)

Post by Teancum »

https://www.mediafire.com/?9n37lhkwrnchxu7 (7.45mb)

Since this is a Rainbow Studios container, I would guess it should be added to this BMS script: http://aluigi.altervista.org/papers/bms ... tudios.bms

The only physical files inside this container are the textures. The rest of the data is used to stream chunks of world geometry. I'd like to be able to extract the textures with filenames and directories intact (they can be seen in the file). My math might be a bit off, but here's the basics of how this might go:

1. Get a count of all "DDS" strings in the file
2. Go to offset 0x98 (start of files)
3. Grab file path (note that the .dds extension is not added inside the container, so that would have to be appended to the file name)
4. Find next entry of "DDS", read four bytes before it for file size
5. Extract file, goto next (some sort of for or while loop maybe?)
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Rainbow Studios .SOI (Stream Object Information)

Post by aluigi »

Script updated for the SOI files.
Note that the remaining entries in the archive cannot be extracted because they don't have a SIZE value, but they seem something like variables or similar.
Teancum
Posts: 94
Joined: Mon Sep 22, 2014 5:13 pm

Re: Rainbow Studios .SOI (Stream Object Information)

Post by Teancum »

Thanks! And yes, the rest of the data contains information for streaming chunks of world geometry (according to an ex-developer).