31.03.2014, 21:42 (Dieser Beitrag wurde zuletzt bearbeitet: 31.03.2014, 21:46 von Lippens die Ente.)
(22.03.2014, 09:31)HenneNWH schrieb: Danke für das Angebot.
Ich sehe drei Möglichkeiten
a) mit IDA im disassemblierten Code des ganzen Spiels rumsuchen, oder
b) im Bright-Eyes Code einigen Variablennamen mehr Sinn verleihen oder zu dokumentieren, oder
c) Du hast eigene Ideen.
Wie möchtest Du denn vorgehen?
hier schulde ich noch eine Antwort, eines vorweg: ich habe auf Grund meines Praktikums und meiner anderen Freizeitbeschäftigungen nun doch nicht so viel Zeit, mich der Sache sofort anzunehmen.
erst einmal muss ich sagen, dass ich mich hauptsächlich mit den Inhalten der Schick.dat, star.dat oder riva.alf beschäftige, um eine individuelle NLT erstellen zu können. Und bisher habe ich eigentlich immer nur in den Dateien bestimmte bytes gezielt verändert und nachgesehen, was es im Spiel bewirkt. Da steckt aber kein Super System dahinter, sondern einfach nur gesunde Neugier. Sicher könnte ich mit einem professionellen System effektiver arbeiten, aber ich bezweifle, dass ich genug vom Programmieren verstehe, um das einsetzen zu können.
Wenn ich etwas herausfinde, poste ich es einfach hier und auch in der Wiki (noch einmal danke an Obi-Wahn, der mir dort das Recht zu schreiben eingeräumt hat)
Hacke Tau, Kumpels!
Ihr seid Freunde der alten NLT? Freunde des Mikromanagements? Ihr sucht eine neue Herausforderung, weil euch die NLT zu leicht war?
Dann spielt doch mal Schicksalsklinge HD 1.36 von Crafty Studios!
Bei mir ist es noch zu den folgenden weiteren Abstürzen gekommen.
-Talentheilung von Held zu Held im Travia-Tempel in Thorwal
-Kämpfe mit Piraten, wenn der Pirat links unterhalb eines Helden (Südwest) diesen angreift bzw. der Held von rechts oberhalb einen Piraten (Nordost) angreift
-Kämpfe mit Beteiligung von Magiern, Priestern, und Hohepriestern (Spinnenhöhle, verfallene Herberge, Tempel des Namenlosen)
-In Kämpfen, wenn ein Vierbeiner (Waldlöwe, Steppenhund, Grimwolf) die Flucht antreten will und sein "Wendekreis" blockiert ist
-Verschiede Situationen, wenn Gegner nachrücken (Grimwölfe im Wolfsbau, Harpyien bei Gorah)
(04.04.2014, 22:25)HenneNWH schrieb: Schweif:
Ersetzt: Talentproben, Positionssuche von Gegenständen
05.04.2014, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 05.04.2014, 10:59 von HenneNWH.)
(05.04.2014, 08:14)Fíonlaighrí schrieb: Liest sich gut. Wo ist die aktuelle Version denn aufgelistet?
Den Quellcode gibt es zu selbst Bauen im Bright-Eyes Repository auf Github. Ein Windows Binary (also eine EXE-Datei) wird von Obi-Wahn meist zeitnah unter Bright-Eyes Download bereitgestellt,
was Dir aber sicher schon bekannt ist.
Das heißt, dass der Heiler vorerst wieder mit dem Code aus der SCHICKM.EXE von DOSBox emuliert wird,
statt mit dem Code den ich nachgeschrieben habe. Für den Spieler macht das keinen Unterschied.
Der Grund für die Abstürze, welche mit der Fehlermeldung "Unknown call instruction" ausgeben ist folgender:
1) Die SCHICKM.EXE benutzt eine Technik names Overlays, die es ermöglicht verschieden Codeteile bei Bedarf nachzuladen. Diese Codeteile können sich dann im Speicher an verschiedenen Stellen befinden.
Das korrekte Auffinden dieser Codes habe ich in Bright-Eyes eingebaut.
2) Um nicht alles nachprogrammieren zu müssen habe ich einige Funktionen von DOSBox benutzt,
welche als CALLBACKS bezeichnet werden.
Die Funktionsweise bisher:
Programm wird von DOSBox emuliert -> Sprung zu nachprogrammierter Funktion -> nachprogrammierte Funktion wird ausgeführt -> Emulation dieser Funktion wird übersprungen und danach weiter Emuliert.
Mit CALLBACKS kann ich aus meinem Code wieder Code aus der SCHICKM.EXE aufrufen.
Das funktioniert aber scheinbar nur zuverlässig, wenn ich keinen Code aufrufe (direkt und indirekt),
der sich in Overlay-Segmenten befindet.
Beim Heiler wird eine Funktion für die Eingabe von Tastatur und Maus benutzt names handle_gui_input().
Diese hatte ich mit einem CALLBACK ersetzt und es funktionierte für mich.
Über diese Funktion ist es allerdings möglich die Talentheilung oder das Vertauschen der Reihenfolge von Helden
zu triggern, welche sich in Overlay-Segmenten befinden.
Das heißt für mich: Erst wenn ich diese Abhängigkeiten aufgelöst habe, kann ich handle_gui_input()
ersetzten und danach den Heiler wieder freischalten.
(05.04.2014, 08:14)Fíonlaighrí schrieb: Bei mir ist es noch zu den folgenden weiteren Abstürzen gekommen.
-Talentheilung von Held zu Held im Travia-Tempel in Thorwal
-Kämpfe mit Piraten, wenn der Pirat links unterhalb eines Helden (Südwest) diesen angreift bzw. der Held von rechts oberhalb einen Piraten (Nordost) angreift
-Kämpfe mit Beteiligung von Magiern, Priestern, und Hohepriestern (Spinnenhöhle, verfallene Herberge, Tempel des Namenlosen)
-In Kämpfen, wenn ein Vierbeiner (Waldlöwe, Steppenhund, Grimwolf) die Flucht antreten will und sein "Wendekreis" blockiert ist
-Verschiede Situationen, wenn Gegner nachrücken (Grimwölfe im Wolfsbau, Harpyien bei Gorah)
Talentheilung funktioniert wieder.
Wie äußert sich denn der Absturz? Diegleiche Fehlermeldung wie oben, hängenbleiben mit geringer CPU-Last oder hängenbleiben mit hoher CPU-Last?
Gib bei Kämpfen auch mal die Nummer des Kampfes an, die wird bei Start des Kampfes in der Console ausgegeben.
Da kann ich leichter reproduzieren.
(05.04.2014, 10:57)HenneNWH schrieb: Ein Windows Binary (also eine EXE-Datei) wird von Obi-Wahn meist zeitnah unter Bright-Eyes Download bereitgestellt, was Dir aber sicher schon bekannt ist.
"zeitnah" ist relativ, meistens mach ich es innerhalb weniger Tage.
Leider kommt es beim neusten Build zu einem Hänger in der Schweif-Abteilung. Log ist im Anhang. Ich habe versucht, den Schweif-Teil einfach auf einen alten Stand zu bringen und dann zumindest mit den Änderungen für Schick eine neue Version zu bauen, aber leider sträubt sich mein Git die fehlende Datei zurückzusetzen, die wohl auch zu dem Build-Error führt. *gnfmpf*
(05.04.2014, 10:57)HenneNWH schrieb: Wie äußert sich denn der Absturz? Diegleiche Fehlermeldung wie oben, hängenbleiben mit geringer CPU-Last oder hängenbleiben mit hoher CPU-Last?
Gib bei Kämpfen auch mal die Nummer des Kampfes an, die wird bei Start des Kampfes in der Console ausgegeben.
Das Spiel läuft nicht weiter, stattdessen erscheint die Meldung "dosbox.exe funktioniert nicht". CPU ist niedrig.
Beispiel für einen Kampf: Kampf-Nr.42 Name "F05107". Das ist der Kampf in der Spinnenhöhle, gleich wenn man reinkommt.
05.04.2014, 13:21 (Dieser Beitrag wurde zuletzt bearbeitet: 05.04.2014, 13:22 von Obi-Wahn.)
Das Ersetzen der Funktionen fürs Laufen und vielleicht auch der Musik hat noch einmal einen ordentlich Geschwindigkeitsboost ergeben. Ich kann jetzt mit Bright-Eyes bei ca. 70 Cycles flüssig durch Thorwal laufen. Sonst brauchte ich mindestens 100 Cycles oder so.
05.04.2014, 13:26 (Dieser Beitrag wurde zuletzt bearbeitet: 05.04.2014, 13:32 von HenneNWH.)
Vielen Dank für die hilfreichen Hinweise!
Es kommt zu einem Speicherzugriffsfehler bei Fernkampfangriffen von Feinden.
Ich kann vorerst einen kleinen Bugfix einreichen und werde den entsprechenden Code als nächstes genauer unter die Lupe nehmen
um herauszufinden ob das ein Fehler von mir oder vom Original war.
Das tritt aber nur unter Windows auf.
Warte Obi, ich schicks gleich los. EDIT: Abgeschickt!
in der Schickm.exe wurden schon ganze Datensätze von Dungeons ausgeforscht. Dort steht aber bisher nur die Mine in Prem, die Zwingfeste und die Piratenhöhle samt Truheneinhalten. Weiß man schon, wo die anderen Dungeons aufgelistet sind?
Hacke Tau, Kumpels!
Ihr seid Freunde der alten NLT? Freunde des Mikromanagements? Ihr sucht eine neue Herausforderung, weil euch die NLT zu leicht war?
Dann spielt doch mal Schicksalsklinge HD 1.36 von Crafty Studios!
Habe es jetzt selbst herausgefunden: ich habe einfach nach der Truhe mit den 10 Araxflaschen in der Spinnenhöhle gesucht und herausgefunden, dass ich nicht nach 38 0A (10xAraxgift), sondern nach 38 38 38 38... (Araxgift, Araxgift...) suchen musste. Demnach enthalten bestimmte Dungeons nur Einzelgegenstände, andere nur gestapelte Gegenstände.
Hacke Tau, Kumpels!
Ihr seid Freunde der alten NLT? Freunde des Mikromanagements? Ihr sucht eine neue Herausforderung, weil euch die NLT zu leicht war?
Dann spielt doch mal Schicksalsklinge HD 1.36 von Crafty Studios!
Passt das nicht auch zu dem Vorkommen der Gegenstände nach einigen Kämpfen außerhalb von Dungeons? Ich meine mich zu erinnern, dass an einer Stelle (wohl irgendwo im Gebirge, glaube ich) 10x ein einzelner Pfeil aufgelistet wurde...
Du meinst also, als sei auch die Kampfbeute hier hardgecodet? Ich schau jetzt mal, ob nicht auch eine der Truhen 10 einzelne Pfeile enthält. Steht denn irgendwo hier im Forum, in welchem Kampf welche Gegenstände erbeutet werden können. Ich bräuchte sie auch in der richtigen Reihenfolge, damit ich nach einer Reihenfolge von bytes suchen kann. Sonst müsste ich immer umständlich suchen. Irgendwo in diesem Forum stehen die Truheninhalte, die auf Crystals Hilfeseite noch fehlen, aber wo? Ich weiß, dass Zurgrimm es geschrieben hat, finde aber die Stelle nicht mehr.
Hacke Tau, Kumpels!
Ihr seid Freunde der alten NLT? Freunde des Mikromanagements? Ihr sucht eine neue Herausforderung, weil euch die NLT zu leicht war?
Dann spielt doch mal Schicksalsklinge HD 1.36 von Crafty Studios!