Super Wing Commander Game Data

UnnamedCharacter

2nd Lieutenant
I was able to extract the key game data from Super Wing Commander: CAMP, BRIEFING, and MODULE. The 000 and 001 files have minor differences, but the 002 (the SM1.5?) file is the most different. Note that for the 002 files, the first few missions lack lip sync text, as it is in the original source data.

Attached are the extracted files converted into an XML format and you can use the tooling from the WCLibrary to convert the XML back into game data format.
 

Attachments

Last edited by a moderator:

UnnamedCharacter

2nd Lieutenant
Thanks

For the SWC stuff, only a few days because of existing tooling. For the WCGames Library part, the work was done on-and-off over the course of about a year.
 

delMar

Rear Admiral
Pretty impressive. Is 100 percent of the briefing data known or do you fill in the missing pieces with data from the original game file?
 

UnnamedCharacter

2nd Lieutenant
delMar:

There is no "filling-in". Although, there is one area that is padded with what appears to be garbage data. The briefing file is divided into conversation blocks and all the blocks appear to assume a block header with 10 offset values at a minimum. If there are fewer than 10, the remainder of the block header is padded with garbage data; I use the same garbage data just in case it is significant.

wcnut:

The 3DO version.
 

delMar

Rear Admiral
Great! How do you connect campaign and briefing data? As far as I can see there's no ID's for the nodes or something like that.

Looking forward to the MODULE files :)
 

UnnamedCharacter

2nd Lieutenant
There are no direct connections within the game data files and I did not add any; everything is "connected" by index position. I purposefully structured the Library API (and the XML) to match the game data files; sort of a simplistic 1:1 relationship. From the beginning, I thought of this as a low level API with the possibility of creating a higher level API at a later time.

If you look at the documentation, especially for the *File and *Block classes, you will find some information concerning the relationship between the data.
 

delMar

Rear Admiral
Took a short glimpse, looks great. Also complete, I assume?

How far do you think are the binarieas different between the platforms? Not taking endianness into account for example
 

UnnamedCharacter

2nd Lieutenant
Overall, there is an Interchange File Format (IFF) feel to the files, though not using the recognized FORM ID.

For CAMP, BRIEFING, MODULE, some of the differences:
  • As you mentioned, big-endian instead of little-endian.
  • The file headers are completely different; the offset format is different and instead of using as many offsets as needed, there is a fix number of them (100).
  • Many of the values use a different integer size. Instead 8- and 16-bit integers, many are 32-bit instead. Resulting in most of the data structures having a different size.

I took a very quick look at the VGA files and the format seems completely different. Probably different audio, fonts, etc... also.
 

delMar

Rear Admiral
I took a very quick look at the VGA files and the format seems completely different.
I heard that it seemed to be common for 3DO ports to use proprietary file formats for graphics and audio. Usually this is done for being able to take full advantage of the 3DO's hardware acceleration features.

So, to sum up, you managed to mod all the game's relevant data files (camp, briefing, module), right?
How much of an effort would it be for you to create a version that handles the PC version's (uncompressed) data files?
 
Last edited:

UnnamedCharacter

2nd Lieutenant
My fault for not being clear. What I did was extract the relevant game data files from 3DO and transform them to PC format.

The attached XML files are just a representation of the game data, and could be considered platform neutral, but the included tools are for the PC version of WC. When converting the XML to game data format, it is for the PC version, not 3DO.
 

delMar

Rear Admiral
I tried calling the enclosed .cmd files. It worked for the briefing files, but I got an error for the module and camp files:
Code:
FAILURE; 0,0,0 is not a valid value for Int32
(translated by myself as the .net runtime outputs localized error messages)
 

UnnamedCharacter

2nd Lieutenant
Translated... Let me guess, the separator character is not a comma on you system (non-English Windows). If that is the case, then I have a good idea what the problem is.
 
Top