Aufbau der DAT-Files für Vehicles ?

  • Hallo zusammen,
    hat zufällig einer von euch Ahnung, wie die Dat-Files aufgebaut sind?
    Würde gerne ein PNG auf einer Dat auslesen ohne locotool.exe zu verwenden.


    Leider sind die PNGs in den Dats nicht direkt im PNG-Format gespeichert. Die scheinen irgendwie vorher verschlüsselt/komprimiert zu sein.


    Also falls sich zufällig schonmal jemand von euch damit beschäftigt hat, soll er sich bitte bei mir melden.
    Viele Grüße

  • Wozu benötigtst du denn diese Informationen? mit Locotool kommst du doch ganz leicht an die PNGs. Mir fällt nur Josef Drexler, der Ersteller des Locotools, als Ansprechpartner ein. Wie du ihn kontacktieren kannst weis ich nicht, aber vielleicht findest du in einer Readme eine Mailadresse.
    EDIT: Hier steht eine Adresse

  • Hallo


    Würde gerne ein PNG auf einer Dat auslesen ohne locotool.exe zu verwenden.


    Darf ich fragen, warum diese Bedingung so wichtig ist? Mit Locotool kannst du die DAT entpacken und hast Zugriff auf alle Bestandteile. Ob du alle Dateien oder auch nur eine PNG-Graphik bearbeitest, ist völlig egal. Das Programm genügt also deinen Anforderungen, wenn auch nicht so, wie du dir das wünschst. Aus- und wieder einpacken musst du die DAT oder einen ihrer Bestandteile so oder so, wobei es – meines Wissens nach – keine Lösung für den zweiten Ansatz gibt.


    Außerdem sind die Dats nach ISO 8859-1 verschlüsselt. Weiss nicht ob dir das weiterhilft.


    Das gilt nur für die enthaltene XML-Datei (warum Mr. Sawyer das auch immer gemacht hat, normal ist für XML die Kodierung UTF-8). Die PNGs sind Binärdateien, für die die Zeichenkodierung keine Rolle spielt.


    Tschö, Auge

  • Darf ich fragen, warum diese Bedingung so wichtig ist?


    Zum Beispiel um sich die Objekte in Dats ansehen zu können ohne zusätzliche Datei erzeugen zu müssen. ;)


    Ich hab mir das Wissen über den Aufbau einer Dat von diversen Seiten und mit Hilfe von Locotool und einem Hex-Editor (ein Viewer würde wohl auch reichen) zusammengesucht.
    Im Zusammenhang mit den Grafiken dürften folgende Seiten nützlich sein:
    http://www.strategyplanet.com/rctuk/tid/LocoObjdata.html
    http://www.strategyplanet.com/rctuk/tid/csg/csg.html (bezieht sich zwar auf RCT, aber Loco nutzt das selbe Format)


    Den Teil vor den Grafiken kann man entschlüsseln, indem man sich eine Dat mit Locotool zerlegt (unbedingt auch unbekannte Variablen ausgeben lassen) und die entstandene XML mit den Bytes der Dat vergleicht (Hex-Editor/Viewer).
    Die Bedeutung der einzelnen Felder wird hier ganz gut erklärt: http://wiki.locomotiondepot.ne…x.php?title=Variable:List


    :!: Wichtig: Die Dats sind noch auf bestimmte Arten kodiert und müssen noch dekodiert werden bevor man die oben genannten Sachen benutzen kann: http://wiki.locomotiondepot.ne…le=ScenarioFiles:Encoding


    Zum Thema XML und PNG: Diese Dateitypen wurden von Josef Drexler wahrscheinlich nur wegen der Übersichtlichkeit bzw. der Bearbeitung gewählt, sie haben nichts mit dem internen Aufbau einer Dat zu tun.


    Wer noch Fragen hat möge sich melden.

  • Schon mal vielen Dank für die Antworten. Besonders der Link zum Encoding im Wiki wird mir sicherlich helfen.
    Wusste zwar schon, dass ich die Daten Decodieren muss, auch Lauflängenkodierung ist mir schon über den Weg gelaufen. Aber dort scheints ja richtig gut dokumentiert zu sein.
    Jetzt kann ich erstmal weiter basteln.
    Vielen Dank


    EDIT:

    Den Teil vor den Grafiken kann man entschlüsseln, indem man sich eine Dat mit Locotool zerlegt (unbedingt auch unbekannte Variablen ausgeben lassen) und die entstandene XML mit den Bytes der Dat vergleicht (Hex-Editor/Viewer).
    Die Bedeutung der einzelnen Felder wird hier ganz gut erklärt: http://wiki.locomotiondepot.net/index.ph…e=Variable:List


    Hab ich ja noch garnicht gemacht..... wird aber nachgeholt

  • Im Anhang ist ein PNG und die Dat, mit der ich am testen bin.


    Wenn ich bisher richtig gelesen haben, müsste das erste Byte eigentlich (17) sein. Ist aber (97). Naja das interessiert mich ja eigentlich nicht also weiter.
    Das nächst interessante ist das 4. Byte (11). Das sagt aus, dass es sich um eine Loco-Dat handelt.


    die nächsten 8 Byte sind der DAT-Name. Die nächsten 4 Checksummen.


    Das 17. Byte (01 blau makiert) sagt aus, dass hier dekodiert werden muss. Undzwar RLE.
    So jetzt denke ich, dass die nächsten 4 Byte die ?Länge? angeben. Welche Länge?
    EDIT: Lösung: 4Byte Little-Endian! Die Zahl passt in meinem Beispiel ziemlich genau auf den Rest der Datei


    Ab dem nächsten Byte (FD) habe ich RLE-dekodiert. Klappt auch wunderbar.
    Wie komme ich jetzt aber an die Stelle, wo die erste Grafik anfängt?

  • Habe ich schon längst hier liegen. Da ich mich aber nicht täglich damit beschäftige, ist das doch recht schwer für mich zu lesen. Zumal, wenn jedes "überlesene" byte alles durcheinander bringen kann.


    Wollte euch aber meinen Fortschritt präsentieren.
    http://locomotion.abfahrtstafel.de/dataufbau.php


    Wo ich dringend noch Hilfe benötige ist zum einen bei den "Group Info" (Rot markierte Zeile)


    sowie die das richtige lesen der "Graphic Data"


    Ich habe zwar bereits einmal den empfohlenen Artikel "RCT GRAPHICS FILES" gelesen, jedoch ist der Funke noch nicht so recht übergesprungen.
    Was für meinen Fall wichtig ist, ist dass bei mir bei allen Grafiken das Flag 5 gesetzt ist. also "Compacted Bitmap".
    - Was ist z.B. genau mit Scanline gemeint?
    - Wie genau ist das mit Startadresse Offset gemeint? Hmm...


    Weiter interessiert mich noch, was die 200 byte am Anfang der Grafikdaten zu sagen haben.

  • Wo ich dringend noch Hilfe benötige ist zum einen bei den "Group Info" (Rot markierte Zeile)


    Wenn ich mich nicht irre, müssten das die Cargo-Slots sein, wie genau die aufgebaut sind weiß ich gerade nicht, aber ich schau es mir im Laufe des Tages nochmal an.



    Weiter interessiert mich noch, was die 200 byte am Anfang der Grafikdaten zu sagen haben.


    Diese 200 Bytes sind eigentlich 100*2 Bytes. Damit wird für jede Zeile des Bildes angegeben, wo die Grafikdaten für diese Zeile zu finden sind (Offset), da die Größe der Grafikdaten pro Zeile nicht festgelegt ist.

    Flags = 5: Compacted bitmap - the StartAddress points to a table of row start offsets (word wide).

  • Wenn ich mich nicht irre, müssten das die Cargo-Slots sein, wie genau die aufgebaut sind weiß ich gerade nicht, aber ich schau es mir im Laufe des Tages nochmal an.


    Wäre super, wenn du dir das mal anschauen könntest. Wenn ich es mit der XML vergleiche sind genau dort die Cargo-Slots.
    Ich brauch jetzt also was, womit ich unabhängig von den definierten Cargo-Daten den Anfang des "Image Directory" finden kann.

  • Also es sind immer beide Cargo-Slots in der Dat eingetragen, egal ob sie benutzt werden oder nicht.
    Das erste Byte für einen Slot gibt die Kapazität an, ist diese 0 kommt direkt der nächste Slot.
    Sonst folgen jeweils 3 Byte für die möglichen Frachtarten(*) und das Ende des Slots wird mit zwei voll gesetzten Bytes markiert (FF FF).


    Nach meinem bisherigen Wissensstand stehen die Cargo-Slots übrigens immer hinter den benötigten Trackmods.


    (*): Laut Locotool ein Byte für die Fracht-Id und 2 Bytes, die angeben welche Sprites für die Frachtart benutzt werden sollen, da das mittlere der 3 Bytes aber immer 0 ist halte ich eine Aufteilung 2/1 für wahrscheinlicher (möglicherweise auch 1/1/1).


    Edit: In der Beispiel-Dat kann das Fahrzeug also 79 Passagiere (ID=12) im ersten Slot transportieren und nichts im zweiten.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!