Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
Kleine Zwischenmeldung:
Die Hauptdatei g105de_seg002.cpp des Charaktergenerators (GEN.EXE V1.05) wurde von mir komplett nachgebaut und getestet.
Es gibt an dieser Datei noch einiges zu tun, damit ich damit zufrieden bin.
Um den von mir erzeugten Code mit dem Original vergleichen zu können,
musste ich sehr in meiner Assembler-Trickkiste wühlen.
Dabei habe ich herausgefunden, dass der Befehl NOP (NO OPERATION) in Bytelängen von 1-9 Bytes existiert.
Das hilft ungemein den Code neu auszurichten.
Mir ist aufgefallen, dass nach dem Beenden von GEN.EXE in Bright-Eyes ca. 300 KB Speicher in der DOSBox fehlen.
Das führt zu Problemen, wenn man SCHICK startet und von dort die GEN.EXE aufruft.
Woran das liegt, kann ich im Moment noch nicht beurteilen.
Der Code von GEN.EXE funktioniert jedenfalls wieder. Weiteres später!
Beiträge: 2.507
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
31.03.2025, 19:04
(Dieser Beitrag wurde zuletzt bearbeitet: 31.03.2025, 19:05 von Obi-Wahn.)
Ich find es grandios und faszinierend, dass du nach all den Jahren immer noch solche Funde und Erfolge feiern kannst!
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
Naja, ich möchte ja irgendwann auch mal damit fertig sein.
Der Charaktergenerator in Bright-Eyes ist jetzt an einem Punkt angekommen,
an welchem es dort nicht mehr weiter geht. Die Speicherprobleme wurden von mir gelöst.
Den Quellcode des Charaktergenerators und die DOS/BCC Buildumgebung habe ich in das
BrightEyes-Repo kopiert und arbeite dort auf ähnliche Art und Weise weiter.
Bis jetzt habe ich größtenteils den DOSBox-Code aus dem Charaktergenerator entfernt,
damit der Blick etwas klarer wird.
Die GEN.EXE wird von mir im Moment als Mini-Schicksalsklinge betrachtet und ich taste mich weiter voran.
Heute habe ich ca. 40% der globalen Variablen verdrahtet und mir noch ein kleines Tool geschrieben,
mit welchem ich das Datensegment meiner GEN.EXE mit dem Original vergleichen kann. War ne gute Idee!
Ziel dieser 2. Phase ist es, eine funktionsfähige GEN.EXE aus dem händisch erzeugten Quellcode zu erstellen
und den Quellcode so instand zu setzten, dass auch der GCC etwas daraus erzeugen kann.
In der anschließenden 3. Phase muss ich mir überlegen wie ich das Ganze dann mit der SDL-Bibiliothek zusammenknipper
und auf welche Funktionalitäten (z.B. Audio-CD) verzichtet werden müssen.
Hier ist vorerst die Dateiarbeit, Grafik und Tastatur/Maus wichtig.
Beiträge: 2.507
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
(05.04.2025, 23:06)HenneNWH schrieb: Ziel dieser 2. Phase ist es, eine funktionsfähige GEN.EXE aus dem händisch erzeugten Quellcode zu erstellen
und den Quellcode so instand zu setzten, dass auch der GCC etwas daraus erzeugen kann.
Ah, das beantwortet eine Frage, die ich noch hatte. GCC sollte einfacher zu benutzen sein als die alten Compiler. :-D
Beiträge: 364
Themen: 10
Registriert seit: Oct 2020
Bewertung:
10
07.04.2025, 11:23
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2025, 12:54 von siebenstreich.)
Ich habe diese Diskussion gerade erst gesehen: Der absolute Wahnsinn, dass es hier weitergeht!!
Genau, ein wichtiges Etappenziel wäre es, BrightEyes so langsam auf eigene (SDL-)Beine zu stellen und die Zweckheirat mit der DosBOX zu beenden, die sehr gute Dienste geleistet, aber sich sich so langsam auch überholt hat. Es macht absolut Sinn, das erstmal mit der um ein paar Größenordnungen kleineren GEN.EXE durchzuführen. Ein absoluter Traum, dass man sich irgendwann sein gepatchtes eigenständiges Schicksalsklinge-Binary (für Linux!) selbst kompilieren kann.
(23.03.2025, 01:17)HenneNWH schrieb: hab mich gerade wieder in Bright-Eyes eingearbeitet. Danke an Siebenstreich für die Beiträge! Diese werde ich einarbeiten, sobald ich die Charaktergenerierung erfolgreich abgeschlossen habe.
Damit ginge ein Traum in Erfüllung, an den ich mich vor 2-3 Jahren, als ich an dem Code herumgezimmert hatte, irgendwann nicht mehr zu glauben gewagt hatte. Ich bin aufgeregt!
Meine Änderungen fallen hauptsächlich in zwei Bereiche:
- Quellcode verstehen und dokumentieren in Form von Kommentaren, sinnhaftem Umbenennen von Bezeichnern, Einführen von Konstanten-Bezeichnern für magic numbers, etc.
- Finden und Reparieren von Bugs.
Ich bin absolut willens und motiviert, dabei und darüber hinaus mitzuhelfen! (Im Rahmen meiner Fähigkeiten, Interessen und zeitlichen Kapazitäten, klar!)
Es gibt noch sehr viele Bugs, die auf einen Fix warten. Meine Erfahrung war: Man will einen Bug reparieren, sucht nach der Ursache, und findet dabei 3 weiter Bugs (und traut seinen Augen nicht...)
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
(06.04.2025, 19:43)Obi-Wahn schrieb: (05.04.2025, 23:06)HenneNWH schrieb: Ziel dieser 2. Phase ist es, eine funktionsfähige GEN.EXE aus dem händisch erzeugten Quellcode zu erstellen
und den Quellcode so instand zu setzten, dass auch der GCC etwas daraus erzeugen kann.
Ah, das beantwortet eine Frage, die ich noch hatte. GCC sollte einfacher zu benutzen sein als die alten Compiler. :-D
Das sollte man meinen, im Moment ist das nur das Endziel. Aktuell benutze ich den BCC um möglichst nah am Original zu bleiben.
Damals wurde viel mit 16-Bit-x86-Assemblercode gearbeitet (CD, Sound, Grafik, PowerPack 2.0-Decompressor),
welchen ich vorerst so übernommen habe. In der Anfangsphase habe ich einige Teile davon in DOSBox-C++ nachprogrammiert,
damit es innerhalb der DOSBox funktioniert, aber der von mir erzeugte Code ist nicht-portabel.
Das gehe ich dann in Phase 3 an und erzeuge eine SUPER-GEN.EXE!
Diese soll dann auch mit allen 3 Versionen der DSAGEN.DAT klarkommen.
Kleine Nebeninfo: Die DSAGEN.DAT aus der deutschsprachigen Diskettenversion funktioniert auch mit der deutschsprachigen CD Version der GEN.EXE,
nur ohne MIDI-Sound. Mit der englischsprachigen Diskettenversion funktioniert das noch nicht!
(07.04.2025, 11:23)siebenstreich schrieb: Ich habe diese Diskussion gerade erst gesehen: Der absolute Wahnsinn, dass es hier weitergeht!!
Genau, ein wichtiges Etappenziel wäre es, BrightEyes so langsam auf eigene (SDL-)Beine zu stellen und die Zweckheirat mit der DosBOX zu beenden, die sehr gute Dienste geleistet, aber sich sich so langsam auch überholt hat. Es macht absolut Sinn, das erstmal mit der um ein paar Größenordnungen kleineren GEN.EXE durchzuführen. Ein absoluter Traum, dass man sich irgendwann sein gepatchtes eigenständiges Schicksalsklinge-Binary (für Linux!) selbst kompilieren kann.
Das ist (mit dem Code der GEN.EXE V1.05de) am letzten Freitag passiert.
Dieser ist jetzt im BrightEyes Repo (ohne Bindestrich!!!) zu finden und funktioniert wie bisher,
nur dass ein paar händische Anpassungen notwendig sind - in src/tools/ muss einmal "g++ dump_obj.cpp -o dump_obj" ausgeführt werden,
- in drive_c/BCC31/ muss innerhalb einer DOSBox-Umgebung der BCC3.1 installiert werden
- im Verzeichnis src/gen/ ist dann "./tools/bc_ready.sh" aufzurufen und in "./temp/" liegt dann die "neue GEN.EXE" für DOS, welche aktuell noch nicht benutzbar ist.
Da sind noch weniger als 100 globale Variablen zu verknippern, die Datenstruktur für den Helden zu befüllen und
möglicherweise noch ein paar Differenzen am Code zu beheben.
Beiträge: 194
Themen: 8
Registriert seit: Jul 2013
Bewertung:
0
Ich verstehe kein Wort, aber ich finde es trotzdem super spannend.
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
Hallo Taktikus,
um es einfach zu halten: Ich baue die Schicksalsklinge und den Charaktergenerator möglichst originalgetreu nach.
Wie ich das anstelle ist sehr abenteuerlich, aber es funktioniert (mit laaaangen Unterbrechungen) ganz gut.
Phase 1 (Rekonstruktion des Quellcodes in der DOSBox) ist für beide Programme weitestgehend abgeschlossen.
Phase 2 (Erzeugen von möglichst identischen DOS-Binaries) habe ich für den Charaktergenerator letzten Freitag gestartet.
Phase 3 (Erzeugen von lauffähigen Linux/Windows-Binaries (ohne DOSBox) ist noch Zukunftsmusik, aber es wird!
Beiträge: 364
Themen: 10
Registriert seit: Oct 2020
Bewertung:
10
(07.04.2025, 14:08)HenneNWH schrieb: Dieser ist jetzt im BrightEyes Repo (ohne Bindestrich!!!) zu finden und funktioniert wie bisher,
nur dass ein paar händische Anpassungen notwendig sind
- in src/tools/ muss einmal "g++ dump_obj.cpp -o dump_obj" ausgeführt werden,
- in drive_c/BCC31/ muss innerhalb einer DOSBox-Umgebung der BCC3.1 installiert werden
- im Verzeichnis src/gen/ ist dann "./tools/bc_ready.sh" aufzurufen und in "./temp/" liegt dann die "neue GEN.EXE" für DOS, welche aktuell noch nicht benutzbar ist.
Ich hab gerade diese Anleitung durchgeführt, aber im letzten Schritt passt noch was nicht. Unter dem Aufruf "./tools/bc_ready.sh" findet er nichts. Aber es geht "tools/bc_ready.sh" (vom Verzeichnis src/gen/ aus). Dann kommen Fehlermeldungen, die ich darauf zurückführe, dass ich die originale GEN.EXE nirgends abgelegt und auch nicht disassbliert habe.
Es wäre nett, wenn du nochmal schauen könntest.
(Zur originalen GEN.EXE noch die Frage: Das muss wohl zwingend die deutsche Diskettenversion 1.05 sein? Ich bin mir gar nicht sicher, ob ich die habe.)
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
09.04.2025, 20:36
(Dieser Beitrag wurde zuletzt bearbeitet: 09.04.2025, 21:25 von HenneNWH.)
Oja, ganz so einfach ist es nicht!
Die GEN.EXE (V1.05 CD-Version zwingend erforderlich) kommt in src/gen/tools.
Dort startest du ./disassemble.sh
Das sollte helfen.
Achso: Gestern habe ich das Mainfile mit dem GCC und dem CLang Compiler übersetzt bekommen.
Es gab sehr viele Warnungen und Meldungen, aber auch ein Objektfile! :-D
Beiträge: 364
Themen: 10
Registriert seit: Oct 2020
Bewertung:
10
Vielen Dank!
bc_ready.sh liefert nun
Code: REPORT 4 Files: Good = 4 Fail = 0
Fehler: 4 Dateien wurden geprueft, aber es sollten 7 sein
Ist der Fehler bedenklich?
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
10.04.2025, 07:38
(Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2025, 07:41 von HenneNWH.)
Ich vermute, dass dein BCC nicht richtig configuriert ist.
Der sollte jetzt in drive_c/BCC31 sein.
Vorher war er in drive_c/BORLANDC.
Ruf mal bc.sh auf und schau die Fehlermeldung an.
* git pull
* cd drive_c
* Starte DOSBox mit dosbox
* in der DOSBox
* cd BCC31\BIN
* BC.EXE
* Options => Directories (sollte so aussehen)
Include Directories: C:\BCC31\INCLUDE
Library Directories: C:\BCC31\LIB
Output Directory : C:\SRC
Source Directory : C:\SRC
Anschließend mit bc.sh an einer C-Datei testen.
Wenns funktioniert, sollte auch bc_ready.sh mit 7 Dateien funktionieren.
Beiträge: 364
Themen: 10
Registriert seit: Oct 2020
Bewertung:
10
10.04.2025, 08:31
(Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2025, 08:31 von siebenstreich.)
Ich hatte den BCC einfach vom Verzeichnis BORLANDC von Bright-Eyes (mit Bindestrich) in das Verzeichnis BCC31 von BrightEyes (ohne Bindestrich) reinkopiert. Habe jetzt wie von dir vorgeschlagen unter Options => Directories die gesetzten Verzeichnisse angepasst, die waren natürlich falsch (mit BORLANDC anstelle von BCC31). Dummerweise geht es damit immer noch nicht. Ich sollte wohl den BCC nochmal frisch installieren im Verzeichnis BCC31.
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
Frisch installieren ist eine Option.
In drive_c/BCC31/BIN gibt es noch ein paar Textdateien. Diese habe ich folgendermaßen angepasst:
THELP.CFG:/fC:\BCC31\BIN\TCHELP.TCH
THELP.CFG:/fC:\BCC31\BIN\TVCHELP.TCH
THELP.CFG:/fC:\BCC31\BIN\TASM.TAH
TLINK.CFG:-LC:\BCC31\LIB
TURBOC.CFG:-IC:\BCC31\INCLUDE
TURBOC.CFG:-LC:\BCC31\LIB
Beiträge: 364
Themen: 10
Registriert seit: Oct 2020
Bewertung:
10
Danke, hab die Dateien angepasst, jetzt geht es!
(Ich habe im Verzeichnis BCC31 einen grep drüberlaufen lassen. Der String 'BORLANDC' taucht noch an ein paar anderen Stellen auf (Dokumentation bzw. Beispiele), aber das sollte unkritisch sein.)
Beiträge: 364
Themen: 10
Registriert seit: Oct 2020
Bewertung:
10
10.04.2025, 13:17
(Dieser Beitrag wurde zuletzt bearbeitet: 10.04.2025, 13:42 von siebenstreich.)
Ich könnte anbieten, ein paar Variablennamen aufzupolieren und magic numbers zu ersetzen.
Beispiel:
hero.unkn1 ist hero.rs_be (Rüstungsschutz-Behinderung).
g_hero.skills[3] könnte g_hero.skills[TA_SCHWERTER] lauten
Dabei gibt es ein paar Fragen: - Willst du das zum aktuellen Zeitpunkt überhaupt, oder komme ich dir damit eher in die Quere?
- Falls ja: Wie soll ich die Änderungen machen? Einen Fork erstellen und dann pull request?
- Falls ja: Wie soll z.B. TA_SCHWERTER angelegt werden? In Bright-Eyes war es ein enum in common.h
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
Super das es geklappt hat.
Aktuell kann mir niemand helfen, da ich noch mit Aufräum- und Rekostruktionsarbeiten beschäftig bin.
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
Es gibt noch viel zu tun, aber ich habe eine gute Nachricht:
Heute Nacht habe ich den Code soweit aufbereitet, dass er unter Linux (GCC oder Clang in einer 64-bit Version) lauffähig ist!
Ein paar klein Ungereimtheiten konnte ich beseitigen:
* Die Dateizugriffe funktionieren jetzt auch wie sie sollten.
* Hab nen kleinen 320x200 Framebuffer eingebaut, damit es keine Abstürze gibt!
Sehen kann man aber noch nichts.
* Das Intro läuft durch, aber an dem Auswahlbildschirm (Anfänger/Fortgeschrittene) kann natürlich noch nichts eingegeben werden.
Beiträge: 2.507
Themen: 25
Registriert seit: Aug 2006
Bewertung:
17
Ich freu mich immer, wenn es was Neues gibt!
Beiträge: 609
Themen: 3
Registriert seit: Nov 2007
Bewertung:
17
13.04.2025, 09:30
(Dieser Beitrag wurde zuletzt bearbeitet: 13.04.2025, 09:43 von HenneNWH.)
Da leg ich doch glatt nochmal nach:
Gestern Abend wollte ich's nochmal wissen und hab eine Grafikausgabe eingebaut!
ATTIC
Titelbild
Schwierigkeitsgrad
Charaktergenerierung
Das Ganze ist aktuell noch nicht so benutzbar, wie es am Ende sein soll.
Mir hat das schon weiter geholfen, da ich ein paar Fehler meinerseits in der Umstellung von Phase 1 zu Phase 2 ausbessern konnte.
Außerdem ist es was Tolles, wenn er was zu Sehen gibt!
Weiterhin hab ich eine Übersicht zum aktuellen Stand ins Repo gestellt: TODO.md
@Crystal: Das Einfügen von Bildern mit dem img-tag hat bei mir nicht funktioniert. Falls es in deiner Macht steht das zu Ändern würde ich mich freuen.
|