DDI Wad: Difference between revisions

From Research Realm
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''DDI Wad''' is an [[Wikipedia:Archive file format|archive file format]] developed by [[Data Design Interactive]] for storing files in video games. The format was first used in their 1997 game [[Wikipedia:Conquest Earth|''Conquest Earth'']]. DDI Wad files usually use the file extension '''.wad'''. The format is unrelated to <!--[[Wikipedia:Doom WAD|Doom WAD]]-->[https://doomwiki.org/wiki/WAD Doom WAD] or [https://wiibrew.org/wiki/WAD_files Wii WAD] files.
{{Infobox file format
| name = DDI Wad
| screenshot =
| screenshot_size =
| caption =
| extensions = .wad, .pwp
| magic = <code>WADH</code>, <code>WWAD</code>
| max_size =
| developer = [[Data Design Interactive]]
| released = 1997
| type = [[Wikipedia:Archive file format|Archive file]]
| container_for = Video game files
}}
'''DDI Wad''' is an [[Wikipedia:Archive file format|archive file format]] developed by [[Data Design Interactive]] for storing files in video games. DDI Wad files usually use the file extension '''.wad'''.
 
The DDI Wad format is not known to be related to other WAD formats, including <!--[[Wikipedia:Doom WAD|Doom WAD]]-->[https://doomwiki.org/wiki/WAD ''Doom'' WAD] or [https://wiibrew.org/wiki/WAD_files Wii WAD] files.


== File formats ==
== File formats ==
There are currently five known WAD formats: ''Conquest Earth'' Wad, ''LEGO Rock Raiders'' Wad, PlayStation Padded Wad for ''LEGO Rock Raiders'', PWP for ''Tonka Space Station'', and ''Tonka Space Station''-onward Wads. Currently only LRR Wad and PWP are understood, with some research into TSS Wad.


=== ''LEGO Rock Raiders'' PC WAD ===
=== Original Wad===
Format for the PC WAD format used in the Windows version of [[LEGO Rock Raiders (video game)|''LEGO Rock Raiders'']].<ref name="Format WAD"/>
This section is for the WAD files used in ''Conquest Earth''. Unlike later formats, these Wads store file information ''after'' file data. Despite this, the way it stores file info seems similar to WADH Wads, meaning the WWADs LRR uses are the odd ones out? EVERYTHING here is guessing
 
{| class="wikitable"
|+ File structure
|-
! Type !! Value !! Description
|-
| colspan="2" | 0D 00 00 00 01 00 00 00 || ?
|-
| <code>char[4]</code> || "ROOT" || designating the ROOT directory
|-
| colspan="3" | entries, fill in later
|-
| <code>uint32</code> || Count || Number of file entries in the WAD file.
|-
| <code>uint32</code> || Offset? || The location where the entries block starts (always with 0D, 01, ROOT)
|-
| <code>uint32</code> || Offset? || The offset to the end of the entries block
|-
| ? || XCELZLIB || every wad ends with this. [[Wikipedia:zlib|zlib]]?
|}
 
=== WWAD ===
This section is for the WWAD-headered Wad files used in ''LEGO Rock Raiders'' and ''Gubble Buggy Racers''.
 
{| class="wikitable"
|+ File structure
|-
! Type !! Value !! Description
|-
| <code>char[4]</code> || "WWAD" || [[Wikipedia:ASCII|ASCII]] file signature. Always <code>57 57 41 44</code> (WWAD).
|-
| <code>uint32</code> || Count || Number of file entries in the WAD file. Example: <code>D6 00 00 00</code> for a WAD containing 214 files.
|-
| <code>cstring[]</code> || Names || Relative file paths and names within the WAD file ("Relative directories" or "Reldirs"). Each path is followed by a null character before the next entry.<br>Example: <code>Languages\ObjectiveText.txt</code>
|-
| <code>cstring[]</code> || BuildNames || Original file paths used when building the WAD file for each file listed in Names, following the same order ("Absolute directories" or "Absdirs"). Each path is followed by a null character before the next entry.<br>Example: <code>\\ROBW\C\Dev\SourceSafe\Lego\Languages\0009-English\Data\Languages\ObjectiveText.txt</code>
|-
| <code>Entry[]</code> || Entries || Storage metadata for each file listed in Names, following the same order. Each entry is 16 bytes and lists a file's storage format, file size, and location in the WAD. See the table below for more details.
|-
| || Data || File data
|}


''LEGO Rock Raiders'' uses two WAD files by default. These files are located in the game's install directory along with its executable file. LegoRR0.wad stores the majority of the game's data, while LegoRR1.wad stores the [[Main Lego Config File]] and language-related files. Additional streamed files are also stored in the Data folder, while streamed FMV files are stored in a separate Data folder on the game's disc.
{| class="wikitable"
|+ Entry structure
|-
! Type !! Value !! Description
|-
| <code>uint32</code> || Flags || Flag determining the file's storage format. This entry is thought to be read as a single byte, though its entry still takes up 4 bytes of space. The flag has two known options: <code>01</code> for Store (uncompressed), <code>02</code> for Rob Northern compression (RNC). The game engine does not check ''for'' the Store flag, rather it checks ''against'' the RNC flag.<ref name="Format WAD"/>
By default, no versions of ''LEGO Rock Raiders'' or ''Gubble Buggy Racer'' are known to use RNC; it is, however, used in ''Conquest Earth''. For more information on RNC, see [https://segaretro.org/Rob_Northen_compression Sega Retro] and [https://moddingwiki.shikadi.net/wiki/Rob_Northern_Compression ModdingWiki].
|-
| <code>uint32</code> || PackedSize || Packed size of the file's data in the WAD file. If the file is flagged as uncompressed, this entry must be identical to UnpackedSize.
|-
| <code>uint32</code> || UnpackedSize || Original unpacked size of the file's data.
|-
| <code>uint32</code> || Offset || Absolute offset to the file's data in the WAD, counting the number of bytes from the start of the WAD to the start of the file's data.
|}


The game searches for up to ten WAD files while loading, LegoRR0.wad to LegoRR9.wad. The WAD files do not have to have sequential numbers. The contents of WAD files with higher numbers take precedence over those with lower numbers (so if a file with the same name and path is stored in LegoRR0 and LegoRR1, only the file in LegoRR1 will be loaded).
=== WADH ===
This section is for the WAD files first used in ''Tonka Space Station''. This format seems to have remained mostly unchanged through ''My Personal Golf Trainer'' in 2010. It does not seem to support RNC? Most of this is guessing.


''LEGO Rock Raiders''  WAD file names are determined by the name of the game's executable file. When loading, ''LEGO Rock Raiders'' looks for WAD files sharing a name with the game's executable, following the format of <samp><exename>#.wad</samp>. As the game's executable is named <samp>LegoRR.exe</samp> by default, the game looks for WAD files named <samp>LegoRR#.wad</samp> (the same functionality is used with the <code>Lego* {}</code> and <code>LegoRR {}</code> sections in its configuration-format files).<ref name="RRU priority"/>
Apparently this format changed at some point?<ref>[https://github.com/BuilderDemo7/WADExplorer/blob/master/README.md WADExplorer]</ref>


{| class="wikitable"
{| class="wikitable"
|+ WAD header
|+ File structure
|-
|-
! Type !! Value !! Description
! Type !! Value !! Description
|-
|-
| char[4] || "WWAD" || [[Wikipedia:ASCII|ASCII]] file signature. Always WWAD for PC WAD files.
| <code>char[4]</code> || "WADH" || [[Wikipedia:ASCII|ASCII]] file signature. Always <code>57 41 44 48</code> (WADH).
|-
| <code>uint32</code> || Offset || Absolute offset to the file data section of the WAD.
|-
|-
| uint32 || Count || Number of file entries in the WAD file.
| <code>uint32</code> || Count || Number of file ''and folder'' entries in the WAD file.
|-
|-
| cstring[] || Names || Relative file entry paths within the WAD file ("Relative directories" or "Reldirs").<br>
| <code>uint32</code> || Offset || Either the length of the Names block or the offset of file data after it?
Example: <code>Languages\ObjectiveText.txt</code>
|-
|-
| cstring[] || BuildNames || Original file paths used when building the WAD file ("Absolute directories" or "Absdirs"). These have no effect on the actual WAD data.<br>
| <code>Entry[]</code> || Entries || Storage metadata for each file and folder
Example: <code>\\ROBW\C\Dev\SourceSafe\Lego\Languages\0009-English\Data\Languages\ObjectiveText.txt</code>
|-
|-
| Entry[] || Entries || File entry storage metadata (Location, size, and storage format). See below table for more information.
| <code>cstring[]</code> || Names || File and folder names for each Entry. No file path structure.
|-
|-
| || Data || File data
|}
|}


Each file entry is 16 bytes, containing four 32-bit integer values.
this next part is guessing and I forgot what I meant for a lot of this:
{| class="wikitable"
{| class="wikitable"
|+ File entry structure
|+ Entry structure
|-
|-
! Type !! Value !! Description
! Type !! Value !! Description
|-
|-
| uint32 || Flags || Flag determining what storage format the WAD uses. <code>01</code> for Store (uncompressed), <code>02</code> for [https://segaretro.org/Rob_Northen_compression Rob Northern compression] (RNC). The game does not check for the Store flag, rather it checks ''against'' the RNC flag.<ref name="Format WAD"/> RNC is not known to be used in ''LEGO Rock Raiders'', but it may be used in some ''Conquest Earth'' WADs. For more information on RNC, see [https://segaretro.org/Rob_Northen_compression Sega Retro] and [https://moddingwiki.shikadi.net/wiki/Rob_Northern_Compression ModdingWiki].
| || FF FF FF FF or ## 00 00 00 || seems to be what number file an entry is within a folder but for each new folder it starts at FF then jumps to 01?
|-
| <code>uint32</code> || Offset || Offset of file name within Names block
|-
|-
| uint32 || PackedSize || The packed size each file's data in bytes. If the WAD entry is uncompressed, this entry must be identical to UnpackedSize.<ref name="Format WAD"/>
| <code>uint32</code> || Offset || Offset of file data within Data block
|-
|-
| uint32 || UnpackedSize || The original unpacked size of each file in bytes.
| <code>uint32</code> || Size || Size of the file's data in the WAD file.
|-
|-
| uint32 || Offset || The absolute offset in bytes from the start of the WAD to each file's data.
| || 00 00 00 00 || ?
|-
|  || 00 00 00 00 or 01 00 00 00 || ?
|-
|  || FF FF FF FF || sometimes is replaced by a hex number. that's the worst part really all these entries are inconsistent in length.
|}
|}
== Usage ==
[[LEGO Rock Raiders (video game)|''LEGO Rock Raiders'']] uses two WAD files by default. These files are located in the game's install directory along with its executable file. LegoRR0.wad stores the majority of the game's data, while LegoRR1.wad stores the [[Main Lego Config File]] and language-related files. Additional streamed files are also stored in the Data folder, while streamed FMV files are stored in a separate Data folder on the game's disc.
''LEGO Rock Raiders''  WAD file names are determined by the name of the game's executable file. When loading, ''LEGO Rock Raiders'' looks for WAD files sharing a name with the game's executable, following the format of <samp><exename>#.wad</samp>. As the game's executable is named <samp>LegoRR.exe</samp> by default, the game looks for WAD files named <samp>LegoRR#.wad</samp> (the same functionality is used with the <code>Lego* {}</code> and <code>LegoRR {}</code> sections in its configuration-format files).<ref name="RRU priority"/>
The game searches for up to ten WAD files while loading, LegoRR0.wad to LegoRR9.wad. The WAD files do not have to have sequential numbers. The contents of WAD files with higher numbers take precedence over those with lower numbers (so if a file with the same name and path is stored in LegoRR0 and LegoRR1, only the file in LegoRR1 will be loaded).


== References ==
== References ==

Latest revision as of 14:28, 11 June 2024

DDI Wad
Filename extensions
.wad, .pwp
Magic numberWADH, WWAD
Developed byData Design Interactive
Initial release1997
Type of formatArchive file
Container forVideo game files

DDI Wad is an archive file format developed by Data Design Interactive for storing files in video games. DDI Wad files usually use the file extension .wad.

The DDI Wad format is not known to be related to other WAD formats, including Doom WAD or Wii WAD files.

File formats

Original Wad

This section is for the WAD files used in Conquest Earth. Unlike later formats, these Wads store file information after file data. Despite this, the way it stores file info seems similar to WADH Wads, meaning the WWADs LRR uses are the odd ones out? EVERYTHING here is guessing

File structure
Type Value Description
0D 00 00 00 01 00 00 00 ?
char[4] "ROOT" designating the ROOT directory
entries, fill in later
uint32 Count Number of file entries in the WAD file.
uint32 Offset? The location where the entries block starts (always with 0D, 01, ROOT)
uint32 Offset? The offset to the end of the entries block
? XCELZLIB every wad ends with this. zlib?

WWAD

This section is for the WWAD-headered Wad files used in LEGO Rock Raiders and Gubble Buggy Racers.

File structure
Type Value Description
char[4] "WWAD" ASCII file signature. Always 57 57 41 44 (WWAD).
uint32 Count Number of file entries in the WAD file. Example: D6 00 00 00 for a WAD containing 214 files.
cstring[] Names Relative file paths and names within the WAD file ("Relative directories" or "Reldirs"). Each path is followed by a null character before the next entry.
Example: Languages\ObjectiveText.txt
cstring[] BuildNames Original file paths used when building the WAD file for each file listed in Names, following the same order ("Absolute directories" or "Absdirs"). Each path is followed by a null character before the next entry.
Example: \\ROBW\C\Dev\SourceSafe\Lego\Languages\0009-English\Data\Languages\ObjectiveText.txt
Entry[] Entries Storage metadata for each file listed in Names, following the same order. Each entry is 16 bytes and lists a file's storage format, file size, and location in the WAD. See the table below for more details.
Data File data
Entry structure
Type Value Description
uint32 Flags Flag determining the file's storage format. This entry is thought to be read as a single byte, though its entry still takes up 4 bytes of space. The flag has two known options: 01 for Store (uncompressed), 02 for Rob Northern compression (RNC). The game engine does not check for the Store flag, rather it checks against the RNC flag.[1]

By default, no versions of LEGO Rock Raiders or Gubble Buggy Racer are known to use RNC; it is, however, used in Conquest Earth. For more information on RNC, see Sega Retro and ModdingWiki.

uint32 PackedSize Packed size of the file's data in the WAD file. If the file is flagged as uncompressed, this entry must be identical to UnpackedSize.
uint32 UnpackedSize Original unpacked size of the file's data.
uint32 Offset Absolute offset to the file's data in the WAD, counting the number of bytes from the start of the WAD to the start of the file's data.

WADH

This section is for the WAD files first used in Tonka Space Station. This format seems to have remained mostly unchanged through My Personal Golf Trainer in 2010. It does not seem to support RNC? Most of this is guessing.

Apparently this format changed at some point?[2]

File structure
Type Value Description
char[4] "WADH" ASCII file signature. Always 57 41 44 48 (WADH).
uint32 Offset Absolute offset to the file data section of the WAD.
uint32 Count Number of file and folder entries in the WAD file.
uint32 Offset Either the length of the Names block or the offset of file data after it?
Entry[] Entries Storage metadata for each file and folder
cstring[] Names File and folder names for each Entry. No file path structure.
Data File data

this next part is guessing and I forgot what I meant for a lot of this:

Entry structure
Type Value Description
FF FF FF FF or ## 00 00 00 seems to be what number file an entry is within a folder but for each new folder it starts at FF then jumps to 01?
uint32 Offset Offset of file name within Names block
uint32 Offset Offset of file data within Data block
uint32 Size Size of the file's data in the WAD file.
00 00 00 00 ?
00 00 00 00 or 01 00 00 00 ?
FF FF FF FF sometimes is replaced by a hex number. that's the worst part really all these entries are inconsistent in length.

Usage

LEGO Rock Raiders uses two WAD files by default. These files are located in the game's install directory along with its executable file. LegoRR0.wad stores the majority of the game's data, while LegoRR1.wad stores the Main Lego Config File and language-related files. Additional streamed files are also stored in the Data folder, while streamed FMV files are stored in a separate Data folder on the game's disc.

LEGO Rock Raiders WAD file names are determined by the name of the game's executable file. When loading, LEGO Rock Raiders looks for WAD files sharing a name with the game's executable, following the format of <exename>#.wad. As the game's executable is named LegoRR.exe by default, the game looks for WAD files named LegoRR#.wad (the same functionality is used with the Lego* {} and LegoRR {} sections in its configuration-format files).[3]

The game searches for up to ten WAD files while loading, LegoRR0.wad to LegoRR9.wad. The WAD files do not have to have sequential numbers. The contents of WAD files with higher numbers take precedence over those with lower numbers (so if a file with the same name and path is stored in LegoRR0 and LegoRR1, only the file in LegoRR1 will be loaded).

References

  1. Jordan, Robert [trigger_segfault] (9 July 2021). "Format: WAD file". LEGO Rock Raiders Assembly Analysis wiki. GitHub. Archived from the original on 15 July 2023.
  2. WADExplorer
  3. (9 July 2021). " I can clarify a bit more on some of the loose ends like the CD priority, and expand on some information..." (comment on forum topic "NO WADS! or 10 Wads"). Archived from the original on 20 February 2024.