Level-/Karteneditor für Historyline 1914-18

  • Letztes Rätsel zur Grafik ist auch gelöst: :)


    Farbe in der Bitmap + 32

    pasted-from-clipboard.png


    Farbe in der Bitmap + 48



    Zitat

    Auf dem PC ist es Adlib. Weiß der Geier welches Format… :)

    Dann muss man das analysieren :)

    Dazu haben wir ein paar eindeutige Dateien im Spielverzeichnis:

    MNU.ADL

    MNUHI.ADL

    ONGAME1.ADL

    ONGAME2.ADL

    ONGAME3.ADL

    Da es ja eine Titelmusik im Hauptmenü, eine Musik für die Highscoreliste und drei verschiedene Stücke während des Spiels gibt, sollte es das wohl sein :D

    Der Header dieser Dateien sieht so aus:

    Code
    00000000 41 44 4C 58 00 00 12 02 41 48 44 52 00 00 00 0A 02 00 08 00 5F 8B A4 ADLX....AHDR........_..
    00000017 01 A9 06 49 4D 41 50 00 00 00 00 54 52 43 4B 02 12 00 00 40 B1 8B 71 ...IMAP....TRCK....@..q
    0000002E 11 00 61 40 42 15 01 06 41 64 DB FF 01 00 33 C0 F5 F3 00 04 42 01 4F ..a@B...Ad....3.....B.O
    00000045 F1 53 00 11 00 D2 74 00 06 43 00 0B A8 4C 00 00 15 D6 4F 00 00 44 F0 .S....t..C...L....O..D.

    Müsste man mal gucken, ob das irgend ein bekannteres Format ist und wahrscheinlich wird Blue Byte einen Adlib-Player für mehrere Spiele genutzt haben.

    Ansonsten würde ich vorschlagen, für eine Windows/Linux Version einfach die MOD-files der Amiga-Version des Spiels zu nehmen. MOD-Playercode gibt es problemlos, wir müssten nicht extra mit OPL2-Emulationscode hantieren und die Musik hätte zudem eine höhere Qualität.

    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.

  • Und weil es gerade so gut läuft, hier noch einer hinterher: :D


    Farbe der Bitmap +64 ergbit die Sepia-Töne für die alten Fotos in BIGUNIT.LIB

    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.

  • Zitat

    Da kann ich gerne auch bisserl unterstützen. Ich empfehle CMake -- das kann Makefiles, Ninja, VisualStudio, xcode solutions bauen. Ist am Anfang etwas ungewohnt, hat aber den Vorteil, dass alles Textdateien sind, die man einchecken kann.

    CMake ist ok - damit mache ich auch meine VStdio und GCC builds usw. - soweit ich das gesehen haben gibt es auch direkt support für Open Watcom d.h. für DOS könnte man das auch benutzten


    hier ein Mini-Beispiel für ein Uncompress-Tool von mir: https://github.com/LowLevelMah…ompress_cc/CMakelists.txt
    damit kann man sofort unter Windows/Linux bauen - out of the box


    mit Open Watcom haben ich das noch nicht probiert - da habe ich bisher immer nur Batch-Dateien verwendet, aber wenn es geht wär es super


    hier ein Beispiel wie man CMake und Open Watcom nutzt - direkt von dem Open Watcom Maintainer:
    Discussion: https://github.com/open-watcom…discussioncomment-1040368

    Wiki: https://github.com/open-watcom…OW-tools-usage-with-CMake

    Wäre natürlich auch schön wenn das für den Borland C++ 3.1 oder so gehen würde - wobei der Watcom auch mit dem 64bit Kompiler/Linker für DOS bauen kann :)

    2 Mal editiert, zuletzt von llm ()

  • Zitat

    Und weil es gerade so gut läuft, hier noch einer hinterher:

    hast ja einen richtig guten Lauf - vielleicht noch gleich den Sound analysieren :)

  • Müsste man mal gucken, ob das irgend ein bekannteres Format ist und wahrscheinlich wird Blue Byte einen Adlib-Player für mehrere Spiele genutzt haben.

    Ansonsten würde ich vorschlagen, für eine Windows/Linux Version einfach die MOD-files der Amiga-Version des Spiels zu nehmen. MOD-Playercode gibt es problemlos, wir müssten nicht extra mit OPL2-Emulationscode hantieren und die Musik hätte zudem eine höhere Qualität.

    Das ist geschmackssache! :) Ich finde OPL2 toll. :)

    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

  • Müsste man mal gucken, ob das irgend ein bekannteres Format ist und wahrscheinlich wird Blue Byte einen Adlib-Player für mehrere Spiele genutzt haben.

    Ansonsten würde ich vorschlagen, für eine Windows/Linux Version einfach die MOD-files der Amiga-Version des Spiels zu nehmen. MOD-Playercode gibt es problemlos, wir müssten nicht extra mit OPL2-Emulationscode hantieren und die Musik hätte zudem eine höhere Qualität.

    Das ist geschmackssache! :) Ich finde OPL2 toll. :)

    OPL2 finde ich auch cool

  • brauchen wir Bitmap-Skalierer?: https://en.wikipedia.org/wiki/Pixel-art_scaling_algorithms so hqx oder xBR oder sowas? viele sind in C oder C++ geschrieben - also recht problemlos zu integrieren

    oder reicht dir Pixelskalierung - 2x,3x,4x - damits so richtig nostalgisch bleibt :)



    Zitat

    Farbe in der Bitmap + 32

    Farbe in der Bitmap + 48

    Farbe der Bitmap +64 ergbit die Sepia-Töne für die alten Fotos in BIGUNIT.LIB

    was ist mit den Farben 0..31 und 80..255 ? reserviert?

    3 Mal editiert, zuletzt von llm ()

  • brauchen wir Bitmap-Skalierer?: https://en.wikipedia.org/wiki/Pixel-art_scaling_algorithms so hqx oder xBR oder sowas? viele sind in C oder C++ geschrieben - also recht problemlos zu integrieren

    oder reicht dir Pixelskalierung - 2x,3x,4x - damits so richtig nostalgisch bleibt :)

    Also aus meiner Sicht kann es ruhig nostalgisch pixelig bleiben. Mir reicht Pixelskalierung. :)


    Zitat

    Farbe in der Bitmap + 32

    Farbe in der Bitmap + 48

    Farbe der Bitmap +64 ergbit die Sepia-Töne für die alten Fotos in BIGUNIT.LIB

    was ist mit den Farben 0..31 und 80..255 ? reserviert?

    Gute Frage. Vielleicht gibt es noch Grafiken, wo diese Bereiche verwendet werden. Für den Rahmen und die Schrift braucht man ja zum Beispiel auch noch ein paar Farben.


    Das war damals ja wirklich eine ordentliche Herausforderung, alles in einer Palette unterzubringen: Mehrere Schattierungen zwei gut zu unterscheidender Farben für die Einheiten jeder Seite und dabei jeweils genug, um noch Details darzustellen zu können. Dann genug Grau- bzw. Braunstufen für die alten Fotos, aber auch kräftige Farben für die Übersichtskarte. und Farben für Menüs und Rahmen und dann daneben trotzdem möglichst viele Farben für schöne und detailreich Geländegrafiken. Da sind 256 Farben nicht viel, weshalb alles farblich so abgestimmt sein muss, dass sich möglichst viele Farben für mehrere Grafiken verwenden lassen. Das ist schon wirklich eine Leistung, finde ich.


    Das ist geschmackssache! :) Ich finde OPL2 toll. :)

    OPL2 finde ich auch cool

    Versteht mich nicht falsch, ich liebe gute OPL-2 Musik und in einer DOS Version hätte ich sie sehr gerne als ein schönes Extra.

    Nur unter Windows bräuchte ich sie nicht unbedingt. Und man müsste dort ja nicht nur das Format herausbekommen und einen Player schreiben, sondern auch die OPL-2 Hardware emulieren. Da könnte man Code z.B. aus DOSBox nehmen, dennoch einiges an Aufwand.

    Stattdessen einfach die MODs aus der Amiga Version eben als Ressourcen mit einzubinden und einen kleinen MOD Player (wie ihn früher fast jedes Keygen mitbrachte ;)) zu ergänzen, wäre wohl deutlich weniger Aufwand um das kleine Gimick "Spielmusik beim Editieren" schön umzusetzen. Das meine ich nur.

    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 beim stöbern auf jeden Fall mal 1-2 Routinen gefunden die "ADLX","AHDR","IMAP" und "TRCK" suchen - vielleicht für gaaanz viel später wenn die schreckliche Langeweile hochkommt :)

    (Side-Story: für das Spiel Stunts hab ich mal den MT15.DRV (Roland MT-32-Treiber) reverse engineeered und nach C portiert: https://github.com/LowLevelMahn/UnifiedMT15)


    hier eine der Funktion aus der HL.EXE die mit ADLX usw. rumspielt - ab Label loc_3FC60


    die Routine scheint direkt in Assembler programmiert zu sein - enter/leave ist nicht so typisch für Kompiler, und dieses ständige re-initalisierung von es:bx mit les bx, dword ptr [bp+var_4.ofs] alle paar Zeilen sieht auch nicht aus wie der sonstige Code den der Kompiler generiert hat

  • Mir ist noch aufgefallen, dass die Reihenfolge der Grafiken in der PARTS.LIB und UNIT.LIB nicht den Zahlen entspricht, die in den Kartendaten in den .FIN Dateien stehen.

    0 steht in den Kartendaten für ein leeres Gras-Feld. In der PARTS.LIB ist die erste Grafik aber der Eingang vom franz. HQ.


    In der PARTS.DAT und UNIT.DAT stehen nur die IDs der Grafiken, anscheinend aber in der den Nummern entsprechenden Reihenfolge.

    Und wieder frage ich mich, warum es die Jungs von BlueByte das damals so kompliziert gelöst haben :D

    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.

  • Und wieder frage ich mich, warum es die Jungs von BlueByte das damals so kompliziert gelöst haben :D

    Die Frage stelle ich mir auch schon die ganze Zeit. Man könnte ja meinen das man es Moddern extra schwer machen wollte...

    Oder gibt es am Ende ne technische Erklärung dafür?

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • der Hintergrund bei Bluebyte ist historisch: Battle Isle, auf dem History Line basiert, wurde von Bernhard Ewers programmiert, war sein erster Job ,ehr oder weniger direkt nachm Abi, auf dem Amiga wurde es zuerst programmiert, ich glaube das war auch sein erstes großes Programmierprojekt auf dem Amiga.


    => unter diesem Gesichtspunkt betrachtet...


    (Stay Forever Podcast Folge zu Battle Isle dazu ist empfehlenswert)

  • Was die Reihenfolge der Grafiken angeht, müsste man mal gucken, ob die Reihenfolge von Gebäuden/Lanschaft in der LIB vielleicht mit den Numemrn in den Karten von Battle Isle besser zusammenpasst.

    Ich könnte mir nämlich auch gut vorstellen, dass diejenigen, die die Grafiken für HL erstelltt haben, zunächst die Reihenfolge von Gebäude- und Landschaftsfeldern aus Battle Isle beibehalten haben. Und aus irgendeinem Grund stellte sich dann später heraus, dass für HL eine andere Reihenfolge sinnvoller wäre. Vielleicht wurden auch spät im Produktionsprozess noch Grafiken ergänzt und dann hat man es auf die Schnelle mit einem zweiten Index der IDs gelöst. Durch diesen zweiten Index in den .DAT Dateien kann man ja auch einfacher die Nummerierung der Grafiken im Spiel nochmal ändern/verschieben, ohne immer gleich die kompletten LIB Dateien neu zusammenstellen zu müssen.

    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.

  • Noch gute Nachrichten zum Wochenende für Nelson :

    Wäre es mit den gewonnenen Erkenntnissen auch möglich einen Einheiteneditor zu erstellen? z.B. um Grafiken, Werte und Beschreibungen zu ändern? Oder zumindest eine Batchdatei welche die einzelnen Assets wieder bündelt? Dann könnte ich mich z.B. an "Datadisks" oder ein anderes Setting wagen.

    Im Hauptverzeichnis des Spiels liegt eine zweite UNIT.DAT. Hat man die entpackt stehen dort die Klarnamen der Einheiten und... die Werte. :D

    Allerdigs noch ein paar Zahlen mehr als nur 7 für Gruppenstärke, Angriff gegen Luft- und Bodenziele, Verteidigung, Gewicht, Geschwindigkeit und Produktionskosten. Da müssen wir noch ein bisschen ausprobieren, was sich dadurch noch verändern lässt.


    Die Grafiken in UNIT.LIB lassen sich wohl austauschen und auch die großen Fotos in BIGUNIT.LIB. Da ließe sich ein kleines Tool schreiben, dass Grafikdateien in das HL-Format konvertieren und Bitmaps in der .LIB damit ersetzen kann.

    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.

  • Am Wochenden musst du dich echt langsam hinsetzen und eine moddingwiki.shikadi.net Seite anfangen - wird ja langsam so viel das man schon den Überblick verliert :)

  • die AFX-Dateien haben einen LIB-artigen Aufbau - die ersten 4 bytes sind ein Offset in einen Id/Data-Offset Table

    hinter dem Offset am Anfang kommt dann eine Liste mit ADLX+AHDR+IMAP+TRACK Blöcken



    den ADL Datei-Aufbau hab ich bisher so weit verstanden (jeder Block in einer AFX sieht auch so aus)



    Es gibt scheinbar paar Varianten von dem AHDR Aufbau - nicht suber relevant für einen Editor aber ich wollte wissen wie schnell ich aus dem Code die Struktur rauslesen kann

    4 Mal editiert, zuletzt von llm ()

  • Am Wochenden musst du dich echt langsam hinsetzen und eine moddingwiki.shikadi.net Seite anfangen - wird ja langsam so viel das man schon den Überblick verliert :)

    Request für einen Account ist raus :) Bisher war ich dort noch nicht angemeldet.



    den ADL Datei-Aufbau hab ich bisher so weit verstanden (jeder Block in einer AFX sieht auch so aus)

    Den Aufbau der Daten der Tracks könnte man sich eventuell erschließen, in dem man mal mit DOSBox die Adlib-Ausgabe als RAW speichert und etwas analysiert. Dann hat man ja alles, was an den OPL2 geschrieben wird und kann sich z.B. die erste abgespielte Frequenz aus den Werten für Registern 0xA0 und 0xB0 ziehen und zu Note/Oktave umrechnen.

    Wenn es ein Tracker Format ist, müssten diese Informationen dann ja auch am Anfang von Track 0 stehen. Eventuell aber in einem Byte zusammengefasst oder auch als Midi-Befehle.

    Noch einfacher wäre es, wenn die Tracks auch einfach einen Stream aus Werten für den OPL2 und Timing-Befehlen enthalten, was es in selteneren Fällen ja auch gibt.


    Battle Isle verwendet übrigens ganz normale Midi-Dateien (GAME.SND, GAME.PND) und Instrument-Daten für den OPL2 (wahrscheinlich GAME.PXX). Zwischen Battle Isle und History Line hat BlueByte also anscheinend ein eigenes Programm/Format für die Spielemusik entwickelt.

    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.

Jetzt mitmachen!

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