Benutzer:Bbsnowman/WAD
WAD-Dateien sind Datencontainer und wurden 1993 von id Software für das Spiel Doom entworfen. Die Weiterentwicklung stellt das PAK-Format dar, welches von den PK3-Dateien abgelöst wurde, was lediglich eine umbenannte ZIP-Datei ist. Bekannte Spiele, die die WAD-Dateien verwenden sind Doom, Doom 2, Final Doom, Heretic, Hexen, und RotT.
Dateiübersicht
Die Datei besteht aus drei wesentlichen Teilen: dem Header, der Lumpliste und den einzelnen Lumpdaten.
Header
Der Header besteht aus 12 Bytes, 3 Felder zu 4 Bytes. Die ersten 4 Bytes bezeichnen den Typ der WAD-Datei und besteht aus den UInt8-Array "IWAD" oder "PWAD". Das beiden folgenden Felder sind zwei UInt32-Werte, die die Anzahl der Lumps in der Lumpliste angibt und deren Offset in der Datei.
Name | Offset | Typ | Beschreibung |
---|---|---|---|
Type | 0 | UInt8[4] | Der WAD-Typ, IWAD oder PWAD |
LLCount | 4 | UInt32 | Die Anzahl der Lumps in der Lumpliste |
LLOffset | 8 | UInt32 | Der Offset der Lumpliste innhalb der WAD-Datei, relativ zum Dateianfang |
IWAD
Bezeichnet eine WAD-Datei mit vollständigem Spieledatensatz. In der WAD-Datei sind so alle Daten enthalten, die zum Betrieb des Spiels nötig sind. Beispiele:
- doom.wad
- doom2.wad
- tnt.wad
- plutonia.wad
- heretic.wad
PWAD
Bezeichnet eine WAD-Datei mit zusätzlichem Dateninhalt. Wird vorzugsweise zum Erweitern der ursprünglichen Grafiken oder Töne in einem Spiel verwendet. Dabei können neue Datensätze eingeführt oder bestehende überschrieben werden. In jedem Fall ist eine IWAD-Datei notwendig, die als Datengrundbestand dient und den Spielbetrieb sicherstellt.
Lumpliste
Die Lumpliste ist eine zusammenhängende, lineare Datenliste, die an jeder Position innerhalb der Datei stehen kann, solange sie hinter dem Header (Offset 12) und zwischen zwei Lumps liegt. Es dürfen mehr Datensätze vorhanden sein als im Header angegeben, niemals aber weniger. Jeder Eintrag in der Liste besteht aus 16 Bytes.
Name | Offset | Typ | Beschreibung |
---|---|---|---|
LOffset | 0 | UInt32 | Der Offset der Lumpdaten relativ zum Dateianfang. |
LSize | 4 | UInt32 | Die Größe der Lumpdaten in Bytes. |
LName | 8 | UInt8[8] | Der Name des Lump. Dies muß ein eindeutiger Bezeichner sein. |
Der Typ des Lumps, also ob es sich um eine Grafik, einen Ton oder reinen Text handelt, ist in der Lumpliste nicht verzeichnet. Die Bedeutung der einzelnen Lumps steht explizit fest und wird von dem jeweiligen Spiel fest vorgegeben. Jedes Spiel setzt darüber hinaus das Vorhandensein aller Lumps vor raus. So müssen zum Beispiel alle Töne, die von den Waffen, den Monstern oder Gegenständen erzeugt werden, alle Grafiken für die Monster, die Zeichensätze und alle Level-Beschreibungen in der IWAD-Datei vorhanden sein. Eine Ausnahme von dieser Regelung stellen die Texturen für die Wände und die Böden dar.
Lumps
Zu der Menge an Lumps, die die Grafiken, Töne und Musiken für das Spiel darstellen, gibt es eine Reihe von Lumps, die eine ganz besondere Bedeutung haben.
PLAYPAL
Der Lump PLAYPAL beinhaltet die Grafikpalette für das Spiel. Darunter fallen zum Beispiel die Farbtabellen für den Fall, das der Spieler von einem Monster getroffen wird und die Sicht deshalb Rot wird. Im Falle von Doom sind 14 Farbtabellen enthalten. Jede Tabelle enthält 256 Farben zu je drei UInt8-Werten, die als RotGrünBlau (RGB) interpretiert werden können. Die letzte Farbe in der Tabelle ist für den transparenten Wert reserviert und wird im Spiel nicht verwendet. Sie ist dennoch nötig, da die Editoren, mit denen die Levels und Grafiken damals erstellt wurden, genauso wie das Spiel den VGA-Modus verwendeten, in dem nur 256 Farben darstellbar waren, und so die Transparenz darzustellen.
COLORMAP
Neben PLAYPAL ist die Colormap (engl. Farbtabelle) die zweite Komponente, mit der die Spieleengine alle nötigen Farben darstellen kann. Die Colormap ordnet jedem angegebenen Farbeindex einen anderen Farbindex zu. So lassen sich zum Beispiel Verdunklungen oder Falschfarbendarstellungen realisieren, die durch eine ganzheitliche Änderung der Farbtabelle nicht möglich wäre.