Level-/Karteneditor für Historyline 1914-18

  • Lovely work, it's always good to read about this kind of project!

    Ich habe es ausprobiert und das Entpacken der Spieldateien funktioniert ganz problemlos!

    It's always a great moment, defeating the compression of the data files and seeing it all open up before our eyes :)

    Entschuldigen Sie mein nicht vorhandenes Deutsch. Fühlen Sie sich frei, auf meine Nachrichten in der von Ihnen bevorzugten Sprache zu antworten. :)


    https://www.raceforkicks.com/

  • Hey Dragonsphere, wusstest Du, dass es eine Demo von HL 1914 gibt? Wenn Du Interesse hast, könntet ich die Dir zur Verfügung stellen. Es ist das erste Level, aber um diverse Einheiten ergänzt. Vielleicht kann Dir das irgendwie helfen? Schönen Gruß

  • Klingt auf jeden Fall interessant und gucke ich mir gerne mal an :)

    Danke!

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Sie war als Diskette Beilage des Heftes PCGames 1/93, musste also käuflich erworben werden. Ok, dann schicke ich Euch das als Nachricht.

    Stimmt. Die Ausgabe hatte ich!

    root42 auf YouTube


    80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, GUSar Lite & TNDY & SnarkBarker, PC MIDI Card + SC55 + MT-32, XT CF Lite, OSSC 1.6

  • Ich hoffe das ist ok: auf archive.org gibt es die originale Floppy Images


    ich nutze archive.org floppies immer gerne beim Reverse engineering um sicher zu sein das ich unmodifizierte Dateien anschaue

  • Gibt es einen Unterschied zwischen Kampagnen Karten und Multiplayer Maps? Als ich die mal aus Spaß gegen den Computer gespielt habe, ist mir aufgefallen, dass er eigentlich nie versucht hat, neutrale oder meine eigenen Depots zu besetzten ?(

  • Gibt es einen Unterschied zwischen Kampagnen Karten und Multiplayer Maps? Als ich die mal aus Spaß gegen den Computer gespielt habe, ist mir aufgefallen, dass er eigentlich nie versucht hat, neutrale oder meine eigenen Depots zu besetzten ?(

    Ich vermute, dass die eher für die Zwischensequenzen zu neu verfügbaren Einheiten und die Zeitungsmeldungen sind und weniger für Strategien des Computergegners. Wobei natürlich

    Technisch gibt es den Unterschied, dass zu den Kampagnen-Karten immer noch eine COM-Datei gehört, die die Multiplayer-Maps nicht haben. Der Dateiname könnte natürlich darauf hindeuten, dass hier weitere Infos/Strategien für den Computergegner drin stehen, ausführbaren Code enthalten diese Com-Dateien nämlich nicht. Die könnten aber auch einfach für die Zwischensequenzen zu neu verfügbaren Einheiten und die Zeitungsmeldungen wichtig sein. Bei Gelegenheit teste ich mal, ob der Computer noch dämlicher wird, wenn man die Dateien verändert oder mit denen von einer anderen Karte austauscht.


    Mir war mal auch schon mal aufgefallen, dass der Computer auf manchen Karten gar nicht versucht Gebäude zu erobern. Auf anderen dann aber wieder schon.

    Der Computergegner ist ja leider wirklich die Schwachstelle dieses sonst tollen Spiels und macht generell einige sehr seltsame Dinge. Der benutzt auch keine Transportfahrzeuge, verwendet Einheiten mit großer Reichweite im Nahkampf, produziert neue Einheiten die für ihn strategisch keinen Sinn machen und benutzt Pioniere nie zum Ausheben von Schützengräben sondern als reines Kanonenfutter an vorderster Front. Ebenso Transportfahrzeuge und Depoteinheiten, die sind auch nur Kanonenfutter für ihn....


    Mit eigenen Karten kann man dann ja auch noch mal sehr gut testen, wie sich der Computergegner in bestimmten Situationen verhält. :)

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Es gibt ja die Möglichkeit, Savegames zu erstellen und zu laden. In diesen müsste doch dann auch die Anzahl einer Einheit und deren Erfahrung mit gespeichert werden. Meinst Du es wäre im Editor auch möglich, z. B. eine Einheit statt mit voller Gruppenstärke schon "dezimiert" zu platzieren oder vielleicht eine mit bereits voller Kampferfahrung?

  • Es gibt ja die Möglichkeit, Savegames zu erstellen und zu laden. In diesen müsste doch dann auch die Anzahl einer Einheit und deren Erfahrung mit gespeichert werden. Meinst Du es wäre im Editor auch möglich, z. B. eine Einheit statt mit voller Gruppenstärke schon "dezimiert" zu platzieren oder vielleicht eine mit bereits voller Kampferfahrung?


    Ich fürchte, die Spieldateien geben das so nicht her. :(

    In den .fin Dateien gibt es ja keine Daten zu Gruppenstärke oder Erfahrung. Was mir auch fehlt, sind weitere Angaben zur Position der Einheiten. Im Spiel können die ja z.B. auch schräg stehen, aber in der .fin Datei gibt es keine Möglichkeit dafür und bei jeder Karte stehen alle Einheiten zu Beginn ja auch gerade, die deutschen weisen nach Süden und die französichen nach

    Norden und alle mit voller Gruppenstärke und ohne Erfahrung.


    Möglch wäre aber natürlich, ein Savgeames und nicht die Kartendateien selbst entsprechend zu editieren ((01.dat bis 09.dat im Hauptverzeichnis des Spiels sind die Savegames).

    Da steht nämlich wirklich alles drin, denn um den Spielstand zu speichern werden vom Spiel einfach die Speicherbereiche mit den Daten/Variablen zum aktuellen Spielgeschehen komplett in eine Datei geschrieben.

    Was ich schon gesehen habe ist, dass am Beginn einer Savegamedatei die Infos zum aktuellen Spielstand stehen, so wie sie auch im Spiel angezeigt werden, also welche Karte, welche Runde ob ein Zuglimit eingestellt ist, Rohsotffeinnahmen, Gebäude usw.

    Etwas darunter kommen dann die Kartendaten mit der aktuellen Position der Einheiten im selben Format wie die .fin Dateien. Hier wird anscheinend immer der komplett mögliche Buffer für Kartendaten in die Datei geschrieben und bei kleineren Karten stehen dann da auch Speicherinhalte, die gar nichts mit dem Spiel zu tun haben. Bei mir stehen dann da z.B. unter den Kartendaten, plötzlich Meldungen vom Norton Commander im Savegame und daher bin ich mir sicher, dass ein Savegame einfach ein Speicherauszug ist :D Weiter unten in der Datei, kommen dann die Gebäude, deren Inhalt und aktueller Besitzer im selben Format wie die .shp Dateien. Irgendwo muss dazwischen auch die aktuelle Erfahrung der einzelnen Einheiten stehen und auch, wenn diese schräg stehen muss das ja irgendwo definiert sein. Kannst ja mal suchen und mit 'nem Hexeditor ausprobieren. Die letzten vier Byte in der Datei sind auf jeden Fall die aktuellen Rohstoffvorräte von Seite A und B.

    Die Savegames sind auch nicht komprimiert, können also ohne Probleme editiert werden.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Die Grafiken bereiten mir übrigens noch immer Kopfzerbrechen:


    Das Format der LIB-Dateien ist simpel und schnell nachzuvollziehen. Die bestehen aus zwei Abschnitten, der erste enthält hintereinender die Daten, also z.B. die einzelnen Grafiken, der zweite einen Index, mit einem 8-Stelligen ID String für die jeweilige Grafik und dem Startoffset. Die ersten vier Byte in der Datei enthalten den Startoffset des zweiten Abschnitts.


    Aber die einzelnen Grafiken sind schwierig. Hier mal die erste in PARTS.LIB gespeicherte Grafik als Hex-View:

    Es scheint einen Header zu geben, der Aufbau ist aber nicht der aus einer LBM/IFF Datei und entspricht auch nicht dem BMHD Chunk aus diesen Dateien.

    Viele Bytes sind ja auf 0 gesetzt, nur die 20h und 55h an den Offsets 08h und 09h und 18h an Offset 0Eh und 10h scheinen Header Daten zu sein. Im LBM/IFF Format kommt hinter dem ID-String normalerweise die Größe des Chunks, hier scheinen aber weder die 20h noch die 55h zu passen, schon gar nicht als word. 21792 Byte hat die Datei nicht, 32 Byte oder 55 Byte sind dagegen zu wenig.
    Also keine Ahnung wofür die stehen. 20h könnte auch noch als abschließendes Leerzeichen zum INFOILBM-String gehören. Die beiden 18h, also 24 dezimal, könnten gut die Größe des Bildes sein. 24x24 Pixel würde recht gut für ein Hexagon in HL passen.

    Käme auch mit der Größe der Daten hin. 24x24 ergibt 576, 601 Byte hat die Grafik (danach folgt in der LIB der nächste INFOILBM String), blieben also 25 Byte für Header und den "INFOILBM" String.
    Das würde aber bedeuten, dass es sich hier um die reinen, unkomprimieren Bilddaten handelt. Alle meine Versuche die Grafik am Bildschirm anzuzeigen, führten aber nur zu Grafiksalat.


    Wenn wir uns im Vergleich die erste Grafik aus der UNIT.LIB anschauen, also die eine Einheit, wahrscheinlich den Spähpanzer, dann gibt es einige interessante Unterschiede:



    Das Format scheint das gleiche zu sein, nur ist hier der ID-String nur "ILBM", die restlichen vier Byte sind auf 20h gesetzt. Dann kommen wieder zwei Byte, diesmal 09h un 50h und an den Offsets 0Eh und 10h wieder die 18h. Die stehen übrigens bei allen Grafiken an dieser Stelle, was ja Sinn macht, wenn wir von lauter 24x24 Pixel Bitmaps ausgehen.

    Jetzt haben wir aber das Problem, dass diese Datei nur 306 Byte lang ist. Also doch eine Bildkomprimierung.

    Die Bilddaten wie die in einer IFF/LBM Datei zu lesen, hat bisher nicht funktioniert. Hier fehlen ja auch Angaben zur Zahl der Bitplanes usw. Da werde ich noch mal weiter probieren, wenn ich etwas Zeit habe.


    Vielleicht hat ja von euch auch noch jemand Lust, sich daran zu versuchen?

    Ich hänge die beiden Grafiken als Testgrafiken aus PARTS.LIB und UNIT.LIB.zip mit an, dann müsst ihr zum Testen nicht mit den kompletten LIB-Dateien hantieren.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • ich hab ein wenig im IDA gestöbert und ein paar Routinen und Bezüge zu "TPMW", "PBM ", "ILBM", "BMHD", "CMAP", "BODY" gefunden


    z.B. eine (bisher die einzige) Routine die nach den Grafik Tags/Ids? in einem Puffer sucht



    für anderen Spiele habe ich kleine Dosbox Staging Forks mit denen ich z.B. Datei-Operationen verfolgen kann - oder Testweise emulierten Code durch nativen Code ersetzen kann - um z.B. zu prüfen ob ein Algorithmus-Port richtig funktioniert - auch wenn nur mitten im Spiel genutzt, oder procs Hooken und schauen was da für Daten durchfließen usw. - ich denke für HL wäre so was auch ganz nett


    jetzt könnte man im Dosbox Debugger einen Breakpoint auf die Routine setzen und mal schauen was da so für Daten durchgeschoben werden

    2 Mal editiert, zuletzt von llm ()


  • die ID-Suchroutine ist auch richtig schön "handgemalter" Assembler-Code, wenn der "cmp bx, es:[di]" vergleich in Zeile 9 fehlschlägt hüpft er einfach wieder in die Suchschleife mit repne scasw die dann sofort beendet wird (da cx schon 0 ist) und dann Sprung auf loc_3AFB6 - also sollte das Label in dem jnz unter cmp bx,es:[di] eigentlich direkt auf loc_3AFB6 gehen

    und ich finde es komisch das die Routine nur Word-weise sucht d.h. die IDs/Tags müssen auf Word-Grenzen liegen sonst findet die Routine nix


    ein Quick&Dirty Port davon sieht wohl so aus:


    2 Mal editiert, zuletzt von llm ()

  • und ich finde es komisch das die Routine nur Word-weise sucht d.h. die IDs/Tags müssen auf Word-Grenzen liegen sonst findet die Routine nix

    Das Spiel wurde sicherlich zuerst auf dem Amiga entwickelt/programmiert (darum sicherlich auch das Grafikformat) und auf der Basis dann die PC -Version entwickelt, da würde das Sinn machen, mit den word-sized Routinen (16 Bit).

Jetzt mitmachen!

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