In der Hoffnung, dass hier noch viel folgen möge, habe ich gleich mal einen neuen Faden angefangen. Um es kurz zu machen: Hiermit veröffentliche ich die Alpha-Version meines NLT-Universal-Packers. Wie bereits beim Dosbox-Patch gibt es den Quellcode und eine vorkompilierte Binary für Windows-User.
Das Programm läuft auf der Kommandozeile und hat bisher nur wenige Optionen. Man kann für alle drei Teile der NLT (hoffentlich ) die Archive anschauen, entpacken und wieder einpacken. Der Haken dabei: Neu gepackte DSA3-Archive (.ALF) funktionieren derzeit nicht im Spiel. Den Packer für die dsagen.dat reiche ich ebenfalls später nach.
Ich werde demnächst den Quellcode auch ins Repository einpflegen und mich auf der Developerseite über die Archivformate und meine Arbeit auslassen. Und natürlich den Packer verbessern.
Zur Bedienung:
Das Tool kann mit
Code:
nltpack Modus Archiv Optionen
gestartet werden. Dabei ist Modus entweder "l" (das ist ein kleines "L") für das Auflisten der Dateien im Archiv, "x" für das Entpacken und "c" für das Erstellen eines neuen Archives. Archiv ist einfach der Name der Archivdatei. Der Packer erkennt am Dateinamen, um welches Archivformat es sich handelt.
An Optionen gibt es derzeit nicht viel. Für das Erstellen eines Archives folgt an dieser Stelle die Liste der zu packenden Dateien. Im Moment müssen diese Dateien im aktuellen Verzeichnis liegen. Beim Auflisten und Entpacken kann man mit -p Pattern ein Suchmuster Pattern angeben, so dass nur die diesem Muster entsprechenden Dateien berücksichtigt werden. Pattern funktioniert dabei wie die bekannten Wildcards: Ein Fragezeichen (?) steht für einen beliebigen Buchstaben, ein Sternchen (*) für eine beliebige Buchstabenfolge.
Besonderheiten zu den einzelnen Archivformaten
- Die schick.dat/blade.dat hat eine feste Liste von Dateien. Fehlt beim Packen eine dieser Dateien, kann nltpack das Archiv nicht anlegen und bricht ab.
- Für DSA2-Archive gehört zu jeder .DAT eine .FN, die im gleichen Verzeichnis liegen und das gleiche Präfix haben muss (also z.B. STAR.DAT --> STAR.FN).
- Über die Schwierigkeiten mit DSA3-Archiven werde ich mich noch im Developer-Tagebuch auslassen.
Ich hoffe, das das Tool nützlich ist und hier bald die ersten Mods auftauchen
Hallo, ich bin's - der Bart von Fidel Castro. Und mir ist total langweilich nie geschnitten wurde.
I'm a roleplayer. My dice are like my relationships: platonic and unlucky.
(14.12.2008, 21:05)Hendrik schrieb: Man kann für alle drei Teile der NLT (hoffentlich ) die Archive anschauen, entpacken und wieder einpacken.
Dir fehlt das INTRODAT.VOL/INTRODAT.DIR-Archiveformat. Frag aber nicht wie man INTRODAT.DIR wieder so zusammenpackt das es vom Introprogramm akzeptiert wird.
(19.12.2008, 14:29)Borbaradwurm schrieb: Dir fehlt das INTRODAT.VOL/INTRODAT.DIR-Archiveformat. Frag aber nicht wie man INTRODAT.DIR wieder so zusammenpackt das es vom Introprogramm akzeptiert wird.
Danke für den Hinweis. Da ich das Intro schon auswendig kenne, starte ich die Schicksalsklinge immer gleich über die SCHICKM.EXE und habe daher gar nicht mehr an die Introdaten gedacht.
(21.12.2008, 18:45)Rabenaas schrieb: Wie entpackt man eine ALF-Datei?
Bei mir hat's bislang nicht geklappt, und bevor ich ggf. unnötig gdb anschmeiße, frage ich lieber noch mal nach.
Für die RIVA.ALF reicht beispielsweise:
Code:
nltpack x riva.alf
Das Resultat sind eine Reihe Verzeichnisse, deren Namen den Modulnamen entsprechen, und die alle Dateien in diesem Modul enthalten.
Hallo, ich bin's - der Bart von Fidel Castro. Und mir ist total langweilich nie geschnitten wurde.
I'm a roleplayer. My dice are like my relationships: platonic and unlucky.
23.12.2008, 21:48 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2008, 21:50 von Rabenaas.)
(23.12.2008, 21:22)Hendrik schrieb: Für die RIVA.ALF reicht beispielsweise:
Code:
nltpack x riva.alf
Das Resultat sind eine Reihe Verzeichnisse, deren Namen den Modulnamen entsprechen, und die alle Dateien in diesem Modul enthalten.
Ich habe das mal mit riva.alf probiert. Mein PC ist eigentlich nicht langsam, aber es dauert Minuten, bis "Creating Module Directory" erscheint. Bei spex.alf habe ich nach ein paar Minuten ziemlich oft denselben Zeichensalat bekommen (Einzelheiten per PM). Bei riva.alf warte ich noch auf ein Ergebnis.
Ich glaube, da hat sich noch ein Bug verschanzt. (Ich benutze übrigens Linux. Vllt. hängt das mit den Systemfunktionen zusammen?)
Edit: Wie man sieht, gibts da den Ordner MODULEAUTOMAP und da sind Dateien mit der Endung *.AIF enthalten. Zum Beispiel "RI_MAP.AIF". Hat jemand ne Ahnung was für eine Datei-Endung das ist? Oder wie man die entpacken könnte? Ich hab nur ein Audio-Format namens *aif(f) gefunden, und Audio ist ja vermutlich im Map-Order eher nicht zu finden.
31.12.2008, 15:16 (Dieser Beitrag wurde zuletzt bearbeitet: 31.12.2008, 15:16 von Boneman.)
(29.12.2008, 06:16)Boneman schrieb: Bei mir unter XP geht's ganz flott.
Oder sagen wir so: Die DUNGEON.ALF zu extrahieren, ging ganz flott. Gerade versuche ich es mit der SCHICK.DAT und da dauert es auch ewig bis irgendeine Meldung erscheint. Im Verzeichnis sind aber sofort 307 extrahierte Dateien vorhanden.
Dafür frisst das Programm anscheinend meinen Festplattenspeicher. Gerade waren noch ein paar GB frei und jetzt will Windows alte Daten löschen. Ich seh auch schon den Grund dafür: Die Datei FX18.VOC hat so um die 2,5 GB (zum Zeitpunkt, an dem ich das Programm abgebrochen hatte). Vielleicht sollte Rabenaas mal seinen freien Festplattenspeicher prüfen.
01.01.2009, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 01.01.2009, 11:13 von Rabenaas.)
Ok, meine speziellen Probleme kommen vielleicht daher, dass ich ein 64bit-Linux benutze. Wenn ich die vorkompilierte nltpack.exe mit wine verwende, dann ist die Situation genau so, wie von Bones beschrieben (ALF funktioniert, DAT macht noch Probleme).
Meine selbst kompilierte Version schafft bei genauerer Betrachtung weder noch.
(Wird in ALF eigentlich little- oder big-endian bei Zahlen verwendet?)
Vielleicht wäre ein Sanity-Check der Header-Daten sinnvoll, solange low-level I/O nicht überall funktioniert?
klasse Sache das mit dem Entpacker.
Ich hatte genau dieselben Probleme wie Rabenaas, aber das sind wirklich _nur_ 64bit Geschichten welche sicher leicht behoben werden können.
Jetzt bin ich grad unter 32bit und teste ein bissl rum....
...bei Riva hat alles ausser die RIVA.ALF aus der Demoversion:
02.01.2009, 00:51 (Dieser Beitrag wurde zuletzt bearbeitet: 02.01.2009, 01:05 von Borbaradwurm.)
(01.01.2009, 18:00)HenneNWH schrieb: Der Sourcecode ist aus dem Anhang aus Beitrag 1 dieses Threads.
Hm da war er aber als ich das zum ersten mal runtergeladen habe noch nicht.
Ich hab nltpack zwar selber noch nicht auspropiert aber ich habe es schon mal kompiliert
Erstens hier mal ein besseres Makefile (zumindest für Linux/gnu make/g++):
Zweitens: was mir damit aufgefallen ist: wenn du Variablen vergleichst solltest du dafür sorgen das du für deine lokalen Variablen den richtigen Datentyp verwendest (Wertebereich bei signed vs. unsigned, das könnte auch an dem x GB Fehler schuld sein).
Mein Fehler, versuchs nochmal, da war ein typo im meinem Post: da muss natürlich "nltpack_OBJ=nltpack.o fileutils.o" und nicht "nltpack_OBJ:nltpack.o fileutils.o" stehen. Ab jetzt werden auch noch so kurze Texte durch die Katze gejagt...
(31.12.2008, 15:16)Boneman schrieb: Gerade versuche ich es mit der SCHICK.DAT und da dauert es auch ewig bis irgendeine Meldung erscheint. Im Verzeichnis sind aber sofort 307 extrahierte Dateien vorhanden.
Dafür frisst das Programm anscheinend meinen Festplattenspeicher. Gerade waren noch ein paar GB frei und jetzt will Windows alte Daten löschen. Ich seh auch schon den Grund dafür: Die Datei FX18.VOC hat so um die 2,5 GB (zum Zeitpunkt, an dem ich das Programm abgebrochen hatte). Vielleicht sollte Rabenaas mal seinen freien Festplattenspeicher prüfen.
Das dürfte an der 308. und letzten Datei im Archiv liegen, der OUTRO.XMI, die ein ungültiges Offset hat und daher ignoriert werden muss. Wird sie es nicht, versucht NLTPACK astronomische Mengen an Bytes zu kopieren, die gar nicht da sind. Das wird in der kommenden Version behoben.
Hallo, ich bin's - der Bart von Fidel Castro. Und mir ist total langweilich nie geschnitten wurde.
I'm a roleplayer. My dice are like my relationships: platonic and unlucky.