04.09.2007, 12:44
SiENcE schrieb:Ich habe mal im Xentax Forum (für fileformate) nachgefragt ob Sie uns helfen. Die Grafikdateien scheinen gepackt zu sein. Momentan beschäftigen mich die TLK und TAB dateien.Ich glaube nicht das die Grafiken generell gepackt sind, es gibt zwar Dateien die mit dem Amiga PowerPacker kompimiert sind doch das ist nicht die Regel (siehe auch DSAGEN.DAT Dokumentation. Es gibt ein Containerformat für mehrere Grafiken, das NVF Format: Ich bin in der Lage die FONT.NVF aus den Hauptverzeichnis von Die Schicksalsklinge zu lesen (komischerweise wird diese Datei vom Spiel nicht benutzt da sie die kleinen Buchstaben enthält). Dies ist die Einfachste NVF Datei die in der gesamten Nordlandtrilogie enthalten ist (nur zwei "Farbwerte" 00 = transparenz, 01 = sichtbar). Die Datei beginnt anscheinend mit 2 Bytes mit dem Offset zum Pixeldata (Achtung: diese 2 Bytes sind in Big Endian Byteorder gespreichert: hex 0151 ist z.B. dec 340 und nicht 21505!), danach folgen 84 4 bytes (2 Bytes Breite, und 2 Bytes Höhe, wieder Big Endian Byteorder). Dies gilt leider bisher nur für diese eine Datei, wie z. B. die Palette von farbigen Grafiken gespeichert wird, oder woran man erkennt wieviele Grafiken die Datei enthält ist mir noch nicht ganz klar. z.B IN_HEADS.NVF ist nicht im NVF Format sonderen nur Pixeldata (8 bpp).
SiENcE schrieb:Könnt mir jemand sagen, wie der header der TLKs strukturiert ist?Ich bin mir noch nicht prozentig sicher ob es so ist (hatte noch nicht die Zeit es genaugenug zu testen) und auch unvollständig aber:
Der Header ist sechs Bytes groß: Die ersten vier Bytes Datei enthalten den Offset des C-String Text Block, (der Offset muss allerdings +6 (größe des Headers selbst) gerechnet werden. Die restlichen 2 bytes des Headers ist die Anzahl der Gesprächspartner, danach folgen idenifikatoren der einzelnen Gesprächspartener (jeweils 38 Bytes, name, Bild in IN_HEADS.NVF, welche Bytes von den 38 was beschreibt finde ich auf die schnelle gerade nicht). Danach kommen die auch schon von TeraBlight beschiebenen 8 Byte Blöcke der Dialogstruktur (Antworten/Goto/usw. mir ist nicht klar wie diese Einträge den Gesprächspartnern zugeordnet werden) die Anzahl der Einträge dieser Art erreche ich anhand des Offsets der C-Strings.