STAR.DAT
im Gegensatz zu DSA 1 wird in DSA 2 nicht mehr zwischen Dungeons und Städten Unterschieden, so das der Grundsätzliche Aufbau bei beiden gleich ist.
Kartenlayout (MAD)
enthält den Aufbau der (2D) Karte in Dungeons & Städten
Karteninformationen(INF)
enthällt Informationen zu den Feldern auf der Karte (z.B. Feld x,y Taverne "zweite Heimat>)
Kartenmodelle CYB
- immer 0x300 Bytes groß
- Dessen Einträge bestimmen welches 3D-Modelle verwendet wird und in welcher Richtung der Eingang zeigt.
"Die .CYB-Dateien sind identisch zu den .DBG-Dateien mit gleichem "Vornamen". Siehe dort. Ausnahmen sind: gashok, kvirasim, lowangen, tiefhusen, die sich an einigen Stellen unterscheiden. Auffällig ist, dass alle DBG-Dateien entweder leer sind (ansvell, blut4, rorkvell) oder genau 767 Bytes groß. In den nichtleeren Dateien sind oft lange 0er-Sequenzen mittendrin." (von Hendrik)(werde ich noch genauer untersuchen)
Texte (LTX)
enthällt eine Reihe von Texten
Dialoge & Info Dialoge (TLK)
im Gegensatz zu SChicksalsklinge(DSA 1) nutzt Sternscheweif (DSA 2) 2 verschiedene Dialogsysteme die beide die Endung TLK tragen. Info Dialoge sind Dialoge wo man auf der rechten Seite ein Thema wählen kann und der Gesprächspartner dann etwas zu dem thema erzählt (z.B. in Tempeln).
TOPICS.TOP (TOP)
enthällt die Namen der Konstanten bei den Topics der Info Dialoge(TLK)
enthällt informationen zu den Kämpfen, wobei FIGHT.LST Informationen zum Kampf selber und SCENARIO.LST Informationen zum Kampfplatz enthällt.
3D-Modell (3D)
???
CYBER.SIN (SIN)
Enthält eine Sinuskurve. Wahrscheinlich Werte für den Tag/Nacht Wechsel da die CYBER.DAT auch für die Beleuchtung zuständig ist.
Miles Sound System XMI sind die speziellen MIDI Files. SAMPLE.MT und SAMPLE.AD sind beides Global Timbre Libaries. Konvention war das die alle SAMPLE.* hießen wobei die Erweiterung angab für welche Hardware.
Adlib Standard
Roland MT-32 Standard
VISIBLE.TAB (TAB)
???
BOB-Animationen (BOB)
ACE-Animationen (ACE)
Texturen(AIF)
Dateiname | Enthält |
ADFRAME.AIF | Rahmen für Fullscreen-Animationen (mit Kriegern am linken/rechten Rand) |
AMAPBACK.AIF | Hintergrundbild: Automap |
ARTWORK.AIF | "Sternenschweif"-Bild von Yüce |
ATTIC.AIF | Attic/Logo (bzw. Sirtech in RoA) |
BIN1PAL.AIF | nur Palette, vermutlich Finsterkopp-Binge |
BING2PAL.AIF | nur Palette, vermutlich Finsterkopp-Binge |
BLOOD.AIF | Intro-Animationssequenz: Blut am unteren Bildschirmrand |
BLUT.AIF | nur Palette, vermutlich Blutzinnen |
CELL.AIF | Bild: Helden im Gefängnis (Lowangen, nach Kampf mit der Garde) |
CITYBACK.AIF | Hintergrundbild: Leerer Kampfmodus-Hintergrund (Gitter), Stadt |
CMASK[1-2].AIF | Maske: Charakterbildschirm. 1: Inventory und Grundwerte, 2: Talente/Zauber |
CREDITS.AIF | Bild: Credits-Bildschirm. |
DEATH.AIF | Bild: Gruppe tot. |
DIARY.AIF | Hintergrundbild: Tagebuch-Modus |
DISKMENU.AIF | Maske: Diskmenü |
DRAGON_[1-2].AIF | Vermutlich Animationen für den Drachen? |
DSA.AIF | DSA-Logo |
D_SELECT.AIF | Maske: Listen-Widget |
DUNGBACK.AIF | Hintergrundbild: Leerer Kampfmodus-Hintergrund (Gitter), Dungeon |
DUNGMASK.AIF | Maske: 3D-Ansicht, braun (Dungeon) |
FDEMON[1-2].AIF | Hintergrundbild: Feuerelementar |
FIN[1-3]PAL.AIF | nur Palette, vermutlich NL-Dungeon |
FLAME[1-5].AIF | Flammenschrift aus dem Intro |
FRAME.AIF | Rahmen für Fullscreen-Animationen (mit Gargoyles in den Ecken) |
G_MASK[1-11].AIF | Maske für Charaktergenerierung (Bildschirme 1-11). {Interessant: Da stehen sogar die Texte für die einzelnen Skills/Zauber direkt im Bild!?} |
LANDBACK.AIF | Hintergrundbild: Leerer Kampfmodus-Hintergrund (Gitter), Wildnis |
LOWANGEN.AIF | Übersichts-Stadtkarte von Lowangen. {Einsehbar im Hesinde-Tempel in Lowangen.} |
MAG_BOOK.AIF | Zauberbuch {Wo taucht das auf???} |
NATPAL.AIF | nur Palette, vermutlich Sumpf |
OPTIONS.AIF | Maske: Einstellungs-Bildschirm |
ORKLAND.AIF | Reisekarte. {An einem Stück mit 560x640 Pixeln gespeichert.} |
OUTRO[1-9].AIF | Animationen des Outros |
PHEXTEMP.AIF | nur Palette, vermutlich Phextempel |
PLAYMASK.AIF | Maske: 3D-Ansicht, grau (Stadt) |
SCENE[3-5,9-17].AIF | Animationen des Intros |
SCROLL[1-2].AIF | Dokumente. 1: Sumpfranzen-Dokument, 2: Ehrenbürgerurkunde Lowangen |
SHIPBACK.AIF | Hintergrundbild: Leerer Kampfmodus-Hintergrund (Gitter), Holzplanken {Bekommt man den je zu sehen?} |
TALKMASK.AIF | Maske: Gesprächsmodus |
TEXT[1-12].AIF | Credit-Texte aus dem Intro/Outro |
TIME_OUT.AIF | Bild: Spielende, NL haben den Stein versteckt |
TOWNPAL.AIF | nur Palette, vermutlich Stadt |
WUERFEL.AIF | Bild: Bildfüllender Salamanderstein-Rahmen aus dem Intro |
In DSA 2 haben alle NVF Bilder eine eigene Farbpalette. Ähnlich wie bei DSA 1 müssen die einzelnen Farbe mit 4 Multipliziert werden, um von 18 Bit Farben(3*6 Bit) zu 24 Bit Farben(3*8 Bit) zu konvertieren. Dabei ist darauf zu achten, das bei DSA 2 auch Werte großer als 63 in der Palette stehen können (die Bedeutung der ersten beiden Bits ist noch nicht ganz geklärt). Um mit diesen Werten umzugehen ist es ausreichend nach der Multiplikation die Farbwerte wieder in "byte" zu konvertieren, wodurch die vorderen bits einfach ignoriert werden.
Bilder im Verzeichnis (NVF)
Dateiname | Crunchmode | Enthält |
ACEBACK.NVF | Animations-Hintergründe: Phex-Geweihter in Herberge | |
AMAPARRW.NVF | Windrose für die Automap | |
BICONS.NVF | Icons für die Hintergründe von Buttons im Aktionsmenü. | |
BINGE2.NVF | Automap-Icons: Finsterkopp-Binge | |
BINGE3.NVF | Automap-Icons: Finsterkopp-Binge | |
BINGE4.NVF | Automap-Icons: Finsterkopp-Binge | |
BINGE5.NVF | Automap-Icons: Finsterkopp-Binge | |
BINGE6.NVF | Automap-Icons: Finsterkopp-Binge | |
BINGE7.NVF | Automap-Icons: Finsterkopp-Binge | |
BINGEACT.NVF | Dialog-Bilder: Finsterkopp-Binge (Kobold, Schmiedeszene) | |
BLUT.NVF | Automap-Icons: Blutzinnen | |
CHEADS2.NVF | Charakterportraits (ungesund) | |
CHEADS.NVF | Charakterportraits (gesund) | |
CIRCLE.NVF | Gruppenpositions-Marker auf der Automap (pulsierende Kreise, in verschiedenen Farben für aufgeteilte Gruppe) | |
CITYPART.NVF | Automap-Icons: Städte | |
CMASKP.NVF | Bilder für die Charakter-Übersicht (Anziehpuppe, ...) | |
COMPASS.NVF | Bilder für die Kompass-Anzeige in der 3D-Ansicht (mittig am oberen Bildschirmrand) | |
DIALOG.NVF | Einige Dialog-Bilder: Gashok-Mob, Gardisten, Elsurion Sternenlicht, Sudran Alatzer, Echsenmenschen | |
DR_MAGIC.NVF | ??? | |
DUALPICS.NVF | Charakterklassen-Bilder aus der Generierung (ACHTUNG: Palette DUALPICS.PAL beachten) | |
FEAT80.NVF | Dialog-Bilder 1 | |
FEATR64.NVF | Dialog-Bilder 2 | |
FEATS64.NVF | Dialog-Bilder 3 | |
FI_CBACK.NVF | Hintergrundbild "Kampf berechnen" | |
FIGHTOBJ.NVF | Objekte im Kampf-Modus: Mauern, Pflanzen etc. | |
FINAL1.NVF | Automap-Icons: NL-Dungeon | |
FINAL2.NVF | Automap-Icons: NL-Dungeon | |
FINAL3.NVF | Automap-Icons: NL-Dungeon | |
FINSTER.NVF | Automap-Icons: Finsterkoppen (Stadt) | |
FONT2.NVF | Schriftart (groß, geschwungen) | |
FONT.NVF | Schriftart (klein, serfienlos) | |
F_STREET.NVF | Dialog-Bilder: Zufallsbegegnungen auf der Straße | |
GASBACK.NVF | Animations-Hintergründe: Gashok-Mob | |
GPARTS.NVF | Bilder für den Charaktereditor: Männlich/Weiblich, Marmor-Hintergrund | |
HEADS.NVF | NSC-Köpfe | |
HORSE0.NVF | Silhouette des Pferdes im Reisebildschirm: Geschwindigkeit 0 | |
HORSE1.NVF | Silhouette des Pferdes im Reisebildschirm: Geschwindigkeit 1 | |
HORSE2.NVF | Silhouette des Pferdes im Reisebildschirm: Geschwindigkeit 2 | |
HORSE3.NVF | Silhouette des Pferdes im Reisebildschirm: Geschwindigkeit 3 | |
HORSE4.NVF | Silhouette des Pferdes im Reisebildschirm: Geschwindigkeit 4 | |
HORSEBAK.NVF | Hintergrund des Pferdes im Reisebildschirm | |
ICONS.NVF | Symbole für die Aktions-Menüs | |
ITEMS.NVF | Bilder für Gegenstände | |
LANDS.NVF | Landschaftsbilder im Reisebildschirm (Steppe, Wald, Sumpf, Berge, Hochgebirge, Fluss) | |
LOWANGEN.NVF | Automap-Icons: Lowangen | |
MMASK.NVF | Maske für den Reise-Bildschirm (rechter Rand) | |
MONPICS.NVF | Monster-Bilder für den Kampfmodus | |
MOUSE.NVF | Mauscursor-Sammlung | |
NATURE.NVF | Automap-Icons: Natur (Sumpf bei Lowangen u.s.w.) | |
OPTIONS.NVF | Icons für den Spieleinstellungs-Bildschirm | |
PHEXTEMP.NVF | Automap-Icons: Phextempel | |
POPUP.NVF | GUI-Textboxen (Rahmen und Füllmuster) | |
RIDDLE.NVF | Icons für das Rätsel-Minigame im Phextempel (u.a. Göttersymbole) | |
ROSE.NVF | Windrose für die Reisekarte | |
SOUND.NVF | Icons für Soundeinstellungs-Bildschirm | |
SPELLOBJ.NVF | Zauber-Animationen im Kampfmodus | |
STREETS.NVF | Wege-Bilder für den Reisebildschirm (befestigte Straße, Straße, Pfad) | |
TIMEDISP.NVF | Hintergründe für die Tageszeit-Anzeige | |
TSYMBOLS.NVF | Göttersymbole (in Sepia-Ton) | |
WEATHER.NVF | Wetter-Anzeige für den Reisebildschirm (wolkenlos, leicht bewölkt, mäßig bewölkt, stark bewölkt, Gewitter; jeweils für Tag und Nacht) |
DAT ist ein sehr allgemeines Format, wobei jede Datei einen anderen Aufbau hat und die Inhalte sich nur anhand des Namens erahnen lassen.
Scheint diverse Farbpaletten zu enthalten, vermutlich für die Automap.
Ist für die Automap zuständig. Es gibt pro Karte 4096 Bytes, pro Feld eins. Insgesammt ist also Platz für 27 Karten.
27 x 4096 Bytes = 110592 Bytes.
Es scheint unterschiedliche Werte zu geben. Flags: 0x00=Unaufgedeckt, 0x01=Aufgedeckt, 0x80=Automap aufgerufen?
Pro Bordell 4 Byte, 5x4Byte=20Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00 | Byte | Regenerationsmodifikator; vorzeichenbehaftetes Byte. |
0x01-02 | int16 | Preismodifikator in Prozent. Basispreis 10 Dukaten. |
0x03 | Byte | Unbekannt, könnte wieder Geschlecht sein was aber ignoriert wird. |
Tabelle zum automatischen Talentsteigern (z.B. im Anfängermodus). (BSKILLS = Beginner Skills?) Die zu steigernden Talente sind in absteigender Priorität aufgelistet.
Reihenfolge: DUMMY, Gaukler, Jäger, Krieger, Streuner, Thorwaler, Zwerg, Hexe, Druide, Magier, Auelf, Firnelf, Waldelf.
Aufbau: Pro Talent je 4 Bytes. Siehe auch GBSPELLS.DAT.
Byte | Typ | Inhalt |
---|---|---|
0x00 | Byte | Talent-Index |
0x01 | Byte | Wert ist immer 0x00. |
0x02 | Byte | Entweder 0x0B oder 0x63 (selten auch andere Werte, z.B. 0x05). Irgendwelche Flags? |
0x03 | Byte | Wert ist immer 0x00. |
Die Flags (Byte 0x02) sind noch etwas rätselhaft, vermutlich geben sie an, wie oft gesteigert werden soll, was beim Misslingen passiert u.ä. Wert 0x05 kommt in den Flags nur bei einem Talent vor, nämlich Lesen, und dort bei allen Typen außer Gaukler (kann nicht lesen) und Magier (99).
Definiert die Truhen. Pro Truhe 52 Byte, 49x52Byte=2548Byte. Es gibt Platz für bis zu 10 unterschiedliche Items in einer Kiste. Verwendet werden aber nur maximal 8 Slots.
Byte | Typ | Inhalt |
---|---|---|
0x00 | Byte | Unbekannt, immer 0. |
0x01 | Byte | Unbekannt, immer 0. |
0x02-03 | uint16 | Anzahl der Silberstücke. |
0x04-05 | uint16 | Item ID des Schlüssel, sonst 0. |
0x06 | Byte | Unbekannt, einmal 0 und einmal 1, sonst 255. |
0x07 | Byte | Unbekannt, manche haben Werte zwischen 0 und 4, sonst 255. Eventuell Event ID? (Gasfalle=1) |
0x08 | Byte | Unbekannt, immer 0. |
0x09 | Byte | Unbekannt, immer 1 außer bei der im Phex-Tempel in Tiefhusen (Phexenschild, Phexenhelm). Vielleicht abgeschlossen? (1=ja, 0=nein) |
0x0A | Byte | Vielleicht der Schwierigkeitsgrad? (0-13) |
0x0B | Byte | Unbekannt, immer 0 außer bei der Kriegskasse der Orks (1). |
0x0C-0D | uint16 | Item ID des 1. Items, sonst 0xFFFF. |
0x0E-0F | uint16 | Anzahl des 1. Items, sonst 0x0000. |
0x10-11 | uint16 | Item ID des 2. Items, sonst 0xFFFF. |
0x12-13 | uint16 | Anzahl des 2. Items, sonst 0x0000. |
... | ... | ... |
... | ... | ... |
... | ... | ... |
0x30-31 | uint16 | Potenziell die Item ID des 10. Items, sonst 0xFFFF. |
0x32-33 | uint16 | Potenziell die Anzahl des 10. Items, sonst 0x0000. |
Hat wahrscheinlich etwas mit der Beleuchtung zu tun.
Enthält eine Liste mit Einträgen für Ereignisse, Orte, NPCs, Götter die dann im Tagebuch verfügbar sind.
Pro Eintrag 23 Byte, 304x23Byte=6992Byte. Die ersten 20 Einträge sind frei, wobei 6 davon später von den eigenen Helden benutzt werden. Der letzte Eintrag wird ebenfalls nicht genutzt.
Byte | Typ | Inhalt |
---|---|---|
0x00 | uint8 | ID des Eintrags. |
0x01 | bool | Bekannt (0/1). |
0x02 | uint8 | Eintrags Typ ID. 164=NPC, 165=Orte/Gebiete, 166=Ereignisse/Quests?, 167=Götter, 168=Allgemein? (Wetter, Unterkunft, Essen und ähnliche Einträge) |
0x03 | 20 Byte | Name des Eintrags. |
Definiert die Türen. Pro Tür 8 Byte, 176x8Byte=1408Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00 | Byte | Vielleicht der Schwierigkeitsgrad. (0-13) |
0x01 | Byte | Unbekannt, immer 0. |
0x02-03 | uint16 | Item ID. Meistens Schlüssel oder passende Items wie die Drachenklaue. |
0x04 | Byte | Unbekannt, immer 255. |
0x05 | Byte | Unbekannt, immer 255 nur 0 bei der Tuer(5) Finsterkoppbinge - 4. Ebene. |
0x06 | Byte | Unbekannt, immer 0. |
0x07 | Byte | Unbekannt, immer 0. |
Paletten für DUALPICS.NVF (Ganzkörper-Bilder der Charaktertypen): 13 Paletten (für jeden Heldentyp + Start-Bild) à 96 Bytes; also 96/3=32 Farbeinträge pro Bild.
FBTABLES = Fight Beginner Tables?
Hat etwas mit den Kämpfen zu tun. Genaue funktion unklar. Vermutetes Format, 16 mal 50 Byte.
Scheint auch ein leeres Kampffeld zu enthalten, sehr ähnlich zu dennen in SCENARIO.LST.
könnte eventuell mit der "FEATURE.LTX" korrespondieren
Tabelle zum automatischen Zaubersteigern (z.B. im Anfängermodus). (GBSPELLS = General Beginner Spells?) Die zu steigernden Zauber sind in absteigender Priorität aufgelistet.
Reihenfolge: Hexe, Druide, Magier, Auelf, Firnelf, Waldelf. Zwischen den einzelnen Magier-Typen scheint kein Unterschied gemacht zu werden.
Aufbau: Pro Zauber je 2 Bytes. Siehe auch BSKILLS.DAT.
Byte | Typ | Inhalt |
---|---|---|
0x00 | Byte | Zauber-Index |
0x01 | Byte | Wert ist immer 0x00. |
Die Reihenfolge der Heiler scheint mit der aus "HEALER.LTX" zu korrespondieren.
Pro Heiler 5 Byte, 10x5Byte=50Byte. 1. und 10. Eintrag nur Dummy-Daten.
Byte | Typ | Inhalt |
---|---|---|
0x00-0x01 | int16 | Preismodifikator. Gibt, in Prozent, den Abschlag oder Aufschlag des Preises an. (-50% bis +50%) |
0x02 | uint8 | Gibt, in Prozent, die Fehlschlagswahrscheinlichkeit des Heilers an. (1% bis 15%) |
0x03 | bool | Geschlecht. 0=männlich, 1=weiblich. |
0x04 | bool | Versteinerung heilen 0=nein, 1=ja. |
Gibt für alle Items an, ob deren Fund im Tagebuch vermerkt wird. Aufbau: Je 1 Byte pro Item, in der gleichen Reihenfolge wie in ITEMS.DAT/ITEMS.LTX. 0x00=kein Tagebucheintrag, 0x01=Tagebucheintrag.
Die Reihenfolge scheint mit der aus "INN.LTX" zu korrespondieren.
Pro Herberge 6 Byte, 28x6Byte=168Byte. 1. und 28. Eintrag nur Dummy-Daten.
Byte | Typ | Inhalt |
---|---|---|
0x00-0x01 | int16 | Preismodifikator. Gibt, in Prozent, den Abschlag oder Aufschlag des Preises an. Zimmer und Essen/Trinken. |
0x02 | uint8 | Herbergsqualität, kleinere Werte sind besser. Wirkt sich auf Preise und Qualität des Essens aus.(0-20) |
0x03 | Byte | Unbekannt, immer 0. |
0x04 | Byte | Werte zwischen 10-50 und 100. Gibt die Wahrscheinlichkeit an, mit der in dieser Herberge ein Zimmer zu bekommen ist. Hat logischerweise nur in Lowangen Bedeutung, alle anderen Herbergen haben den Wert 100. |
0x05 | bool | Geschlecht. 0=männlich, 1=weiblich |
Siehe MONSTER.DAT
Codiert die Voraussetzungen an guten und schlechten Eigenschaften für die verschiedenen Heldentypen beim Generieren. Format: je 2 Bytes für eine Anforderung, das 1. Byte ist der Index der Eigenschaft, das 2. gibt den gewünschten Wert an (unsigned char) Für das 1. Byte gilt die Reihenfolge: MU, KL, CH, FF, GE, IN, KK, AG, HA, RA, GG, TA, NG, JZ, so dass Index 05 z.B. für IN steht und Index 08 für HA. Für das 2. Byte gilt: Ist der Wert <0x80, muss die Eigenschaft mindestens diesen Wert haben. Ist der Wert negativ, muss die Eigenschaft kleiner als (Wert - 0x80) sein. Die Voraussetzungen für einen Heldentypen werden durch 1 oder mehr short ints mit Wert 0x0000 abgeschlossen.
(übernommen aus Disketten-Passwortabfrage, Beitrag #17)
Das Format der PASSWORD.DAT ist wie folgt: Die Datei beginnt mit einem WORD PasswordCount. Darauf folgen PasswordCount "PasswordInfo"-Strukturen:
BYTE WordNo // Wort # BYTE LineNo // Zeile # BYTE PageNo // Seite # BYTE InitA // Initialwert A zur Paßwortverschlüsselung BYTE InitB // Initialwert B zur Paßwortverschlüsselung BYTE[20] Password // verschlüsseltes Paßwort
Die Verschlüsselung der Paßwörter funktioniert folgendermaßen: Das Paßwort wird im Klartext in Großschrift in das Password-Array geschrieben; abschließende (nicht genutzte) Felder werden ausgenullt. In einer Schleife wird jedes der 20 Felder von Password verarbeitet:
for (n=0; n<20; n++) { InitA ^= Password[n]; InitB += InitA; Password[n] = InitB & 0xff; }
Die Daten, welche jetzt in Password vorliegen, stellen das verschlüsselte Paßwort dar.
Da es sich hier nicht um eine Einwegfunktion handelt, können verschlüsselte Paßwörter entsprechend auch wieder entschlüsselt werden.
Die Datei ist für die Kreuzungen zuständig und enthält die Kompassrichtungen.
Pro Block 3 Byte, 220x3Byte=660Byte. Die letzten 20 Einträge sind Dummy-Daten.
Die Kompass Flags schalten die entsprechenden Buttons auf dem Kompass frei, wobei nur der visuelle Teil frei geschaltet wird. Ohne die passende Route bzw. den Eintrag in Sections kann diese Richtung trotzdem nicht benutzt werden. Der erste Eintrag bezieht sich wohl auf die Routenplanung und der zweite Eintrag wenn man sich an der Kreuzung befindet.
Flags für Himmelsrichtungen:
Nord = 1, Nordost = 2, Ost = 4, Südost=8, Süden=16, Südwest=32, West=64, Nordwest=128
Byte | Typ | Inhalt |
---|---|---|
0x00 | uint8 | Kompass ID. Wird verwendet um Sections bzw. Ruten zu verbinden. Sie kann anscheinend frei gewählt werden, muss also nicht der Reihenfolge der Einträge entsprechen. |
0x01 | uint8 | Kompass Flags der bekannten/benutzen Richtungen, die der unbekannten Strecken fehlen. |
0x02 | uint8 | Kompass Flags aller möglichen Richtungen. |
Enthält die Pixel für alle 263 Routen des Spiels. Header: 4*262 Bytes, je 4 Bytes pro Route. Der daraus resultierende uint32 Wert stellt den Startpunkt in den Routendaten dar. Startpunkt = Wert/2+1052(Header größe).
Anschließend folgen die Routendaten, je 2 unsigned short (für x- und y-Koordinate). Eine Route wird durch x=0xFFFF, y=0xFFFF abgeschlossen, darauf folgt direkt die nächste Route.
Pro Schule 33Byte. 9x33=297Byte.
Die Schulen sind in der selben Reihenfolge hinterlegt wie im Menü. Genau wie die Zauber, von links nach rechts und oben nach unten wird gezählt.
Also die ersten 33 Byte sind Antimagie, die nächsten Beherschung, Dämonologie, Bewegung, Heilung, Hellsicht, Kampf, Verwandlung und Veränderung.
Byte | Typ | Inhalt |
---|---|---|
0x00 | uint8 | Anzahl der Modifizierten Zauber, max 7. |
0x01-0x02 | uint16 | ID des 1. Zaubers welcher modifiziert werden soll. Fängt bei 1 an, 0 bedeutet kein Zauber. |
0x03-0x04 | uint16 | ID des 2. Zaubers welcher modifiziert werden soll. |
0x05-0x06 | uint16 | ID des 3. Zaubers welcher modifiziert werden soll. |
0x07-0x08 | uint16 | ID des 4. Zaubers welcher modifiziert werden soll. |
0x09-0x0A | uint16 | ID des 5. Zaubers welcher modifiziert werden soll. |
0x0B-0x0C | uint16 | ID des 6. Zaubers welcher modifiziert werden soll. |
0x0D-0x0E | uint16 | ID des 7. Zaubers welcher modifiziert werden soll. |
0x0F-0x10 | int16 | Immer -1. |
0x11-0x12 | int16 | Modifikator für den 1. Zauber. |
0x13-0x14 | int16 | Modifikator für den 2. Zauber. |
0x15-0x16 | int16 | Modifikator für den 3. Zauber. |
0x17-0x18 | int16 | Modifikator für den 4. Zauber. |
0x19-0x1A | int16 | Modifikator für den 5. Zauber. |
0x1B-0x1C | int16 | Modifikator für den 6. Zauber. |
0x1D-0x1E | int16 | Modifikator für den 7. Zauber. |
0x1F-0x20 | int16 | Immer 0. |
Enthält zusätzliche Informationen und Definitionen der Route. Jede Route braucht auch einen Eintrag in dieser Datei. Dabei ist die Reihenfolge Index abhängig und muss in beiden Dateien (SECTION.DAT, ROUTES.DAT) identisch sein.
Pro Block 10Byte, 262x10Byte=2620Byte.
Himmelsrichtungen:
Nord = 0, Nordost = 1, Ost = 2, Südost=3, Süden=4, Südwest=5, West=6, Nordwest=7
Landschaftstypen:
0=Steppe, 1=Wald, 2=Flußaue, 3=Sumpf, 4=Gebirge, 5=Bergtal, 6=Wasser(Boot), 7=Wasser(Fähre)
Straßentypen:
Die Geschwindigkeit meint die Anzahl der Grundschritte pro Tag (8-18Uhr).
Wert | Typ | Geschwindigkeit |
---|---|---|
0x00 | Reichsstraße | 27 |
0x01 | kleine Straße | 25 |
0x02 | guter Weg | 23 |
0x03 | Feld- Wald- Wiesenweg | 21 |
0x04 | guter Pfad | 19 |
0x05 | mittlerer Pfad | 17 |
0x06 | schlechter Pfad | 15 |
0x07 | sehr schlechter Pfad | 13 |
0x08 | Fluß | 11 |
Der Geschwindigkeitsmodifikator ist Teil der Geschwindigkeitsberechnung. Die Streckenlänge wird durch diesen Modifikator geteilt, das Ergebnis auf die erste Nachkommastelle gerundet und zuletzt mit der Geschwindigkeit der Straße multipliziert. Da auch Werte mit 0 vorkommen, nehme ich an wird in diesen Fällen die Streckenlänge benutzt.
Beispiel für die erste Route: 73/62 = 1.1774 ≈ 1.2 x 25 = 30. Also kommt man 30 Schritte pro Tag vorran bzw. 3 pro Stunde.
Byte | Typ | Inhalt |
---|---|---|
0x00 | uint8 | Kreuzungs ID des Startpunktes. Verbindet die Route mit dieser Kreuzung, siehe POINT.DAT. |
0x01 | uint8 | Kreuzungs ID des Endpunktes. Verbindet die Route mit dieser Kreuzung, siehe POINT.DAT. |
0x02 | uint8 | Himmelsrichtung für diese Route bei der Kreuzung des Startpunktes. Klickt man auf die entsprechende Richtung des Kompass wird diese Route benutzt. |
0x03 | uint8 | Himmelsrichtung für diese Route bei der Kreuzung des Endpunktes. Klickt man auf die entsprechende Richtung des Kompass wird diese Route benutzt. |
0x04 | uint8 | Landschaftstyp. |
0x05 | uint8 | Straßentyp. |
0x06 | uint8 | Geschwindigkeitsmodifikator. |
0x07 | Byte | Wahrscheinlich Modifikator für Kräutersuche und Jagd. Höhere Werte vereinfachen die Probe. (0-4) |
0x08 | Byte | Wahrscheinlich hat es etwas mit den Events zu tun. (50, 2, 1, 0) |
0x09 | bool | Bekannter Weg, 0=unbekannt, 1=bekannt. |
Die Reihenfolge scheint mit der aus "SHOP.LTX" zu korrespondieren.
Pro Laden 13 Byte, 25x13Byte=325Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00-0x01 | int16 | Modifikator für Kaufpreise in Prozent. Gibt, in Prozent, den Abschlag oder Aufschlag des Preises an. |
0x02-0x03 | int16 | Modifikator für Verkaufspreise in Prozent. Gibt, in Prozent, den Abschlag oder Aufschlag des Preises an. |
0x04 | uint8 | Art des Ladens. 1=Waffen, 2=Kräuter, 3=Gemischt. |
0x05 | uint8 | Sortiments ID. Siehe Items |
0x06-0x07 | uint16 | ID eines zusätzlichen Items, bei 0 keins. |
0x08-0x09 | uint16 | ID eines zusätzlichen Items, bei 0 keins. |
0x0A-0x0B | uint16 | ID eines zusätzlichen Items, bei 0 keins. |
0x0C | bool | Geschlecht. 0=männlich, 1=weiblich |
Enthält die Talent-Startwerte der einzelnen Heldentypen, je 1 unsigned Byte pro Zauber. Reihenfolge der Heldentypen: DUMMY, Gaukler, Jäger, Krieger, Streuner, Thorwaler, Zwerg, Hexe, Druide, Magier, Auelf, Firnelf, Waldelf
Die Reihenfolge scheint mit der aus "SMITH.LTX" zu korrespondieren.
Pro Schmied 4 Byte. 13x4Byte=52Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00-0x01 | int16 | Preismodifikator. Gibt, in Prozent, den Abschlag oder Aufschlag des Preises an. |
0x02 | uint8 | Schmiedequalität. Werte von 1-20. |
0x03 | bool | Geschlecht. 0=männlich, 1=weiblich |
Enthält die Zauber-Startwerte der einzelnen Heldentypen, je 1 unsigned Byte pro Zauber. Reihenfolge der Heldentypen: Hexe, Druide, Magier, Auelf, Firnelf, Waldelf
Enthält weitere Container für Items. Format ist ziemlich dynamisch, da es von der Anzahl der Einträge abhängt.
Byte | Typ | Inhalt |
---|---|---|
0x00 | uint8 | Anzahl der zu lesenden Bytes bzw. auch Anzahl der Itemsx4. |
0x01 | Byte | Unbekannt, immer 0. |
0x02-03 | uint16 | 1. Item ID. |
0x04-05 | uint16 | 1. Anzahl des Item. |
... | ... | bis Bytes bzw. Items gelesen sind. Danach neuer Container mit neuer Anzahl an Bytes. |
Ist für die Zuodnung von Gebäuden zuständig, also was passiert wenn man ein Gebäude betritt. Die Zuordnung der Einträge erfolgt wahrscheinlich über die Schweif.exe. Es existieren zwar bei einigen MAD-Dateien passende Werte (KVIRASIM nutzt den 1.-9. Eintrag) aber diese werden ignoriert. Ausschlaggebend scheint die Position des Gebäudes auf der Map zu sein. Die jeweiligen Subdateien (SMITH.DAT, HEALER.DAT, SHOP.DAT, usw.) definieren die genauen Daten des Gebäudes (z.B. männlich oder weiblich). Die Bedeutung von Byte 2 und 3 variiert je nach Typ.
Pro Block 3 Byte, 180x3Byte=540.
Gebäude Typen:
Wert | Typ |
---|---|
0 | Nichts |
1 | Tempel |
2 | Taverne |
3 | Herberge |
4 | Gemischtwarenladen |
5 | Schmiede |
6 | Heiler |
7 | Lagerhaus |
8 | Lager (Weltkarte) |
9 | Lager(Stadt) |
10 | noch ein Lager |
11 | Straßenevents |
12 | Bordel |
13 | nichts |
14 | Normales Haus |
15 | Wegweiser |
16 | nichts |
17 | Sondergebäude? z.B. abgebrannte Mühle aus Gashok.ltx |
18 | nichts |
Byte | Typ | Inhalt |
---|---|---|
0x00 | uint8 | Gebäude Typ. |
0x01 | uint8 | Index Wert des jeweiligen Eintrages der Subdatei. Bei einer Taverne z.B. TAVERN.DAT, Einträge von 0-26 möglich. Ansonsten 255. |
0x02 | uint8 | Index Wert des Strings. Bei einer Taverne z.B. TAVERN.LTX. Ansonsten 255. |
Die Reihenfolge scheint mit der aus "TAVERN.LTX" zu korrespondieren.
Pro Taverne 7 Byte, 27x7Byte=189Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00-0x01 | int16 | Preismodifikator. Gibt, in Prozent, den Abschlag oder Aufschlag des Preises an (Essen und Trinken). |
0x02-0x03 | int16 | Qualität der Taverne. Werte zwischen 4 und 20. Höhere Werte bedeuten schlechtere Qualität. Preis und Qualität des Essens hängen zusätzlich davon ab. Bei einem Wert von 25 kostet das Essen nichts, bei noch höheren Werten wird der Preis sogar negativ. Die Bierkosten werden nicht modifiziert. |
0x04 | bool | Geschlecht. 0=männlich, 1=weiblich |
0x05-0x06 | int16 | Unbekannt. Meistens 0, manchmal auch Werte von 20, 30, 40, 50. |
Legt das Geschlecht/Bild der Tempeldiener in den einzelnen Tempeln fest. 00 = männlich, 01=weiblich. Byte 01 ist z.B. der Perainetempel in Kvirasim.
Ist für die Fragen und Antworten bei Info Dialogen zuständig. Es scheint jeweils einen Eintrag pro Topic zu geben, auch die Reihenfolge entspricht der von TOPICS.TOP. Wird im Dialog (TLK) die Konstante LIST_TRUE oder LIST_FALSE verwendet, wird im Rahmen des angegebenen Bereichs, eine zufällige Antwort gewählt.
9 Byte pro Block, 103x9Byte=927Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00-1 | uint16 | Frage (String Index in STDTALKS.LTX) |
0x02-3 | uint16 | Positive Antwort (LIST_TRUE), String Index der STDTALKS.LTX. |
0x04-5 | uint16 | Negative Antwort (LIST_FALSE), String Index der STDTALKS.LTX. |
0x06 | uint8 | Anzahl der Fragen. Wert wird per Zufall ermittelt und zum Index addiert. |
0x07 | uint8 | Anzahl der positiven Antworten. Wert wird per Zufall ermittelt und zum Index addiert. |
0x08 | uint8 | Anzahl der negativen Antworten. Wert wird per Zufall ermittelt und zum Index addiert. |
Eine weitere Datenstruktur für Dialoge. Scheint die Dialoge zu ordnen. Wahrscheinlich wichtig für spezielle Informationen die man bei Gesprächen erhalten kann.
Pro Block 4 Byte, 166x4Byte=664Byte.
Byte | Typ | Inhalt |
---|---|---|
0x00-1 | uint16 | Index der Dialog-Datei in STAR.FN bzw. STAR.DAT. |
0x02 | Byte | Für spezielle Informationen, vielleicht eine ID oder ähnliches. |
0x03 | Byte | Unbekannt, immer 0. |