Level-/Karteneditor für Historyline 1914-18

  • Für den geplanten Editor sind aber andere Infos ja eigentlich noch viel wichtiger: Die UNIT.DAT im Hauptverzeichnis des Spiels mit den Wertden der einzelnen Einheiten!

    Hat vielleich jemand, auch von denen ohne Programmiererfahrung :), gerade Zeit und Lust ein bisschen mit einemHexeditor und dem Spiel auszuprobieren, wofür die einzelnen Bytes stehen?


    Der Anfang der (entpackten) Datei sieht so aus:

    Es gibt also auf jeden Fall Datensätze, die mit einem Kategorienamen und dem Namen der Einheit enden. Der erste Datensatz ist also der Spähpanzer.


    Laut Handbuch hat der folgende Werte:


    Angriffswerte:

    gegen Luftziele 0/0

    gegen Landziele 1/35 (in Hex 01/23)

    gegen Wasserziele 1/35


    Verteidigungswert 30 (1E als Hexwert)

    Geschwindigkeit 6

    Gewicht 3

    Gruppenstärke 6

    Produktionskosten 55 (37 als Hexwert)


    Das zweite Byte könnte also die Geschwindgkeit oder die Gruppenstärke sein. Das dritte ist höchstwahrscheinlich der Verteidigungswert.

    Die Bytes 11,12,13 sind wohl die Angriffswerte.....


    Also probiert doch mal aus, ob ihr durch Ändern einen Super-Spähpanzer erschaffen könnt :D

    Ich hänge die entpackte UNIT.DAT mal mit an, dann könnt ihr euch die einfach runterladen und editieren.

    Dateien

    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

    Die UNIT.DAT im Hauptverzeichnis des Spiels mit den Wertden der einzelnen Einheiten!

    Ist die auch in so einem Lib-Format?

    Es gibt zwei Dateien mit dem Namen! Einmal im Unterverzeichnis "LIB", die enthält die IDs aus UNIT.LIB in der für die Nummerierung im Spiel passenden Reihenfolge.

    Und noch einmal im Hauptverzeichnis des Spiels. Das ist die, die ich hier meine.


    Die ist nicht im LIB Format. Es scheinen einfach Datenblöcke von etwa 70 Byte pro Einheit zu sein. Direkt die Bytes an den Offsets 0 und 1 der Datei ändern Reichweite/Geschwindingkeit des Spähpanzers.

    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.

  • Was ich in deinem Screenshot gerade sehe: Einheiten, die über zwei Felder gehen, stehen (wie auch bei der Nummeriereung) zweimal drin. Das bedeutet ja, man könnte z.B. dem Bug des Schlachtschiffs andere Angriffswerte geben, als dem Heck... Das muss ich nachher dringend mal ausprobieren :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.

  • Zitat

    Es scheinen einfach Datenblöcke von etwa 70 Byte pro Einheit zu sein.

    eher 69 bytes - filesize(UNIT.DAT) / 69 = 51 ohne Rest

    ich muss mal fragen - wo spiele ich mit Einträgen rum - im Hexeditor Bereich vor der Unit-Bezeichnung? Und mit welchen Werten starte ich da sinnvollerweise - also Hexwerte für 0, 1, 2 etc?

  • Zitat

    ich muss mal fragen - wo spiele ich mit Einträgen rum - im Hexeditor Bereich vor der Unit-Bezeichnung? Und mit welchen Werten starte ich da sinnvollerweise - also Hexwerte für 0, 1, 2 etc?

    ich hab keine Ahnung - gibt es eine Möglichkeit die "Stärken" irgendwo im Spiel zu sehen - dann schauen ob das mit den Werte aus der .DAT zugeordnet werden kann - das ergibt dann langsam ein Schema

    Wertegrenzen sind schwierig es könnte was lineares sein 0,1,2,3, 8- oder 16bit oder eine Auflistung z.B. 1,5,7,9


    in diesem Post hat Dragonsphere ja schon ein wenig angefangen das zu verstehen


    also Handbuch-Werte mit der Datei vergleichen oder so wäre wohl sinnvoll

    2 Mal editiert, zuletzt von llm ()

  • hier ist das Handbuch: https://www.kaiserlich.com/ftp/_dos/hl14_18.pdf


    auf Seite 46 steht wie man sich die Einheitenwerte anschauen kann - für den Spähpanzer prüfen ob die Werte irgendwo in den ersten 69 bytes zu finden

    sind und dann bei einem (einer nach dem anderen mal +1 oder -1 machen) und schauen was das Spiel dazu sagt - dafür muss man aber sicherlich immer wieder das Spiel neu starten - denke nicht das die Werte immer wieder eingelesen werden sonder vielleicht nur 1 mal am Anfang

  • Mir ist aufgefallen, dass die Datei erst geladen wird, wenn eine Karte geladen wird. Wenn man DosBox und einen Hexeditor nebeneinander offen hat, muss man also nicht nach jeder Änderung das Spiel komplett neu starten, es reicht zurück ins Hauptmenü zu gehen, die Datei im anderen Fenster zu ändern und dann in HL wieder ein Spiel zu starten und zu gucken, was das Spiel draus macht.

    Ich habe für meine bisherigen Tests TROLL genommen, da hat man den Spähpanzer direkt neben dem HQ stehen und als 2-Spieler Karte kann man sie schnell beenden, ohne die alten Zeitungsartikel o.ä. überspringen zu müssen.

    ich hab keine Ahnung - gibt es eine Möglichkeit die "Stärken" irgendwo im Spiel zu sehen

    Einheit anklicken und Maus bei gedrückter Maustaste nach unten ziehen. Dann erscheint ein ? und wenn die Maustaste los gelassen wird ein Fenster mit den Einheitendetails.

    Das Handbuch ist natürlich praktisch, wenn man die Werte mehrerer Einheiten in der Datei schnell abgleichen will.

    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.

  • Bei der Musik bin ich wieder ein kleines bisschen weiter:

    Alles nach der TRCK-ID und der seltsamen Größenangabe, zu der ja llm schon etwas schrieb, scheint sich als Stream aus einem Befehlsbyte, dem dann unterschiedlich viele Datenbytes folgen, interpretieren zu lassen.

    In der MNU.ADL beginnen die TRCK Daten mit 0x40 gefolgt von den Instrument-Registerdaten für Channel 0, dann 0x41 und die Instrument-Daten für Channel 1 usw.

    0x40 + Channel scheint also der Code für "Set instrument data" zu sein.Generell scheinen 10er Hexzahlen für die Kommandos zu stehen.


    Was dann kommt, versuche ich mal als Tabelle darzustellen (alle Zahlen in Hex):

    Daten in der ADL
    Ergibt OPL-2 Befehle (aus der RAW)
    Bedeutung
    60 06 A9
    War nicht zu finden...
    Eventuell Timing über den PIT und daher nicht in den OPL-2 Befehlen?
    30 D6
    Schreibe 7F in Register 43
    Setze Lautstärke für Channel 0
    10 CA 29
    Schreibe CA in Register A0
    Schreibe 29 in Register B0
    Spiele Note F-2 auf Channel 0
    31 FE
    Schreibe FF in Register 44
    Setze Lautstärke für Channel 1
    32 A2
    Schreibe 3F in Register 45
    Setze Lautstärke für Channel 2
    12 CA 2D
    Schreibe CA in Register A2
    Schreibe 2D in Register B2
    Spiele Note F-3 auf Channel 3
    33 FE
    Schreibe 3F in Register 4B
    Setze Lautstärke für Channel 3
    13 CA 2DSchreibe CA in Register A3
    Schreibe 2D in Register B3
    Spiele Note F-3 auf Channel 4
    34 7E
    Schreibe BF in Register 4C
    Setze Lautstärke für Channel 4
    14 CA 31
    Schreibe CA in Register A4
    Schreibe 31 in Register B4
    Spiele Note C-4 auf Channel 5
    35 BE
    Schreibe 3F ind Register 4D
    Setze Lautstärke für Channel 5
    36 BE
    Schreibe 3F in Register 53Setze Lautstärke für Channel 6
    37 BE
    Schreibe 3F in Register 54Setze Lautstärke für Channel 7
    E9 23 24
    Timer des OPL-2 wird programmiert und Register 43 -54 erhalten neue Werte
    Scheint ein Volume Slide Effekt o.ä. auf allen Channeln zu sein
    E9 22Schreibe 0D an Register B3,11 an Register B4, 2x neue Werte für Register 43 -54
    Key-off Channel 4, geänderte Frequenz Channel 5, Volume slide geht weiter
    12 CA 2D
    Schreibe CA in Register A2
    Schreibe 2D in Register B2
    Spiele Note F-3 auf Channel 3
    14 57 31
    Schreibe 57 in Register A4
    Schreibe 31 in Register B4
    Spiele Note C-4 auf Channel 5
    ...



    Das sieht schon mal sehr vielversprechend aus. Allerdings gibt es haufenweise offene Fragen und von einem Player bin ich noch weit entfernt.

    Unklar sind zum Beispiel die Registerwerte. Wenn eine Note gespielt werden soll, stehen die entsprechenden Werte für die OPL-Register korrekt in der ADL-Datei.

    Bei einem "35 BE" in der ADL Datei, wird aber zum Beispiel 3F geschrieben, nicht BE. Die Lautstärkeangaben passen aber durchgehend nicht. Schon beim setzen der Instrumentendaten werden vom Spiel andere Lautstärkeangaben verwendet, als in der ADL Datei stehen.

    Und wenn Ex komplexe Effekte, wie bei einem Tracker, auslöst, wird es natürlich richtig spaßig. Auch das auf E9 anscheinend unterschiedlich viele Datenbytes folgen können, macht es nicht leichter.


    Und generell ist noch völlig offen, wie das Timing funktioniert. Auch die Angaben im Header sind noch ein großes Rätsel.

    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.

    Einmal editiert, zuletzt von Dragonsphere ()

  • Zitat

    Das sieht schon mal sehr vielversprechend aus. Allerdings gibt es haufenweise offene Fragen und von einem Player bin ich noch weit entfernt.

    Ein Anfang ist gemacht - d.h. die Befehle sind oft 4bit+4bit kodiert + Daten


    Code
    Spiele Note (1):
    0b|0001|cccc|8 bit A register value|8bit B register value
            ----> Channel 0..8
    
    Setze Lautstärke (3):
    0b|0011|ssss|??? hab hier ist es mir nicht mehr klar wie die Umsetzung funktioniert
            ----> Slots 0..17 ???
    
    und die anderen scheinen ja gezielte Befehle zu sein


    hier eine Doku für den OLP2: http://www.shipbrook.net/jeff/sb.html die für mich ganz brauchbar ist
    die hat mir auch ein guten Einblick gegeben https://saxxonpike.github.io/TechDocs/oplref.html


    hätte fast Bock mir so ein
    https://www.tindie.com/products/cheerful/opl2-audio-board/

    oder

    RetroWave OPL3 Express
    Hardware OPL3 sound card with blazing fast USB interface. Supported by DOSBox-X, ScummVM and OPL3BankEditor. Works with modern DAWs and MIDI keyboards. Audio…
    shop.sudomaker.com

    zu kaufen

    7 Mal editiert, zuletzt von llm ()

  • Habe am Wochende die Zeit gefunden mal Visual Studio einzurichten und etwas Code zu schreiben :)



    Ich bekomme jetzt eine History Line Karte korrekt in ein Windows-Fenster gezeichnet. Alle Grafiken werden aus den komprimierten, originalen Spieldateien geladen.

    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 bekomme jetzt eine History Line Karte korrekt in ein Windows-Fenster gezeichnet. Alle Grafiken werden aus den komprimierten, originalen Spieldateien geladen.

    kurz ne Woche Urlaub und schon gehts in grossen Schritten weiter - sieht ja schon fast aus wie ein Editor :)


    hast du auch ein Github Projekt oder sowas?

  • hast du auch ein Github Projekt oder sowas?

    Kommt :)

    Ich habe erstmal nur etwas rumprobiert. Ist auch mein erstes Windows-Projekt seit bestimmt 10 Jahren, da musste ich mich erstmal wieder etwas reindenken.

    Beruflich brauche ich nur ab und an etwas SQL, ansonsten ist Programmieren bei mir inzwischen reines Hobby und da hauptsächlich unter DOS :D

    Werde den Code in den nächsten Tagen mal etwas aufhübschen und dann bei Github einstellen.

    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

    Ich habe erstmal nur etwas rumprobiert. Ist auch mein erstes Windows-Projekt seit bestimmt 10 Jahren, da musste ich mich erstmal wieder etwas reindenken.

    stell einfach mal ein Zip ein dann kann ich das CMaken und auch linuxen

    Einmal editiert, zuletzt von llm ()

Jetzt mitmachen!

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