Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Swafnild und Kolberg
Hier die Info bezüglich Frau Kapitän Swafnild Egilsdotter:

Ob man sie im Hafen trifft oder nicht, entscheidet ein 1W100. Als ich sie traf, hatte ich eine 1 gewürfelt (:ok: ). Geht wohl auch mit anderen Würfen, aber 1 ist 1 in einem DSA-Spiel. Mit Würfen größer 50 traf ich sie jedenfalls nicht an, kann aber auch Zufall gewesen sein.

Ob man nun die Karte von Swafnild gleich angeboten bekommt oder ein zweites Treffen abwarten muss, entscheidet eine CH +5 Probe auf den Anführer. Da ich die Probe mit einer 6 bestanden habe (CH meines Anführers ist 13 -> 6 + 5 = 11), weiß ich jetzt nicht, wie die Proben beim zweiten Treffen ausfallen - wenn überhaupt. Mit gelungener CH-Probe muss man nur noch mit ihr mitfahren, da sie die Karte beim ersten Mal nie dabeihat, aber ist ja nicht weiter schlimm.

Stellt also immer den charismatischsten Helden an die erste Stelle, bevor ihr den Hafen anklickt. :) Und zaubert eventuell vorher noch kurz einen "CH erhöhen" auf ihn. ;) Die Chance ist klein, eine +5 Eigenschaftsprobe nicht leicht, aber mit etwas Glück machbar.
Zum NLT-Wiki: http://nlt-wiki.crystals-dsa-foren.de/doku.php , Zum Drakensang-Wiki: http://drakensang-wiki.crystals-dsa-foren.de/doku.php
KEIN SUPPORT per E-Mail, PN, IRC, ICQ! Lest die Regeln und benutzt das Forum für sämtliche Anfragen! KEINE persönliche Betreuung!
Zitieren
Statt nach der Karte zu fragen, wie es in der Informantenübersicht steht, wähle ich immer die auf Schattenjaeger.de angegebene Dialogoption(Auswahltext = 1/ 2/ 2/ 2/ 2/ 2). Da muss ich die gute Frau nie ein zweites mal suchen. Ich glaube mal nicht dass da noch gewürfelt wird.
Zitieren
Kurze Frage hierzu:
Angenommen ich stehe in Prem am Hafen und gehe immer wieder aufs Schild (Hafen erscheint) und verlasse Ihn wieder. Wird dann immer wieder neu gewürfelt?
Zitieren
Mal angenommen, du machst das, dann wäre die Antwort ja.
For what it's worth, I'm glad it's you. It was nice to be happy ... for a while.
Zitieren
In drei direkt hintereinander gespielten Durchläufen im Sommer letzten Jahres ist es mir jedesmal gelungen Kolberg zu treffen. Leider habe ich von den ersten beiden Treffen keine genauen Daten mehr, sie waren aber ebenfalls um den 15. bis 20. Hesinde 15 Hal. Voraussetzung dafür ist auf jeden Fall nicht zu oft neuladen und auch das Spiel nicht laufen lassen und dabei nichts zu tun.

Beim ersten Treffen Strecke Skjal - Orvil
Beim zweiten Treffen Strecke Prem - Skjal
Beim dritten Treffen Strecke Orvil - Ala (17. Hesinde 15 Hal)
(Denke das Kolberg in dieser Zeit die Strecke Ala - Orvil - Skjal - Prem bereist)

Bei allen drei Treffen fand vorher ein Treffen mit Olvir statt (wobei ich denke, das wenn man Olvir zu nahe an einer Zielstatt trifft, es erstmal nicht zu einem Treffen mit Kolberg kommt weil man vorher ja die Stadt erreicht und auch umgekehrt - dieses ist mir in einigen Spielen auch schon passiert).
Zitieren
Den guten Kolberg, hab ich in den meisten meiner Durchgänge angetroffen und meistens ohne von ihm zu wissen -zwischen Vaermhag und Varnheim und zwischen Varnheim und Despoda meistens.
Den Oliver, hingegen hab ich bei ättlichen Spieldurchläufen nur ein einziges mal getroffen und das war auf Hjalland hab mir alles von ihn angehört und ihn begeistert immer wieder ermutigt, anschließend bekam ich von ihn noch einige hilfreiche Informationen. Kurze Zeit danach begegnete ich auf Hjalland auch noch dem guten kolberg, war glaub ich noch am gleichen Tag.
Zitieren
Ich habe mir mal erlaubt, die Frage nach dem Kolberg-Erscheinen durch Debuggen von SCHICKM.EXE etwas genauer mit dem Debugger zu untersuchen. Ich verwende SCHICKM.EXE Version 3.02 von der Gold Games-CD, Größe 556.208 Byte. Das Ergebnis:

  1. Man kann Treborn Kolberg oder Olvir Gundridsson nur begegnen, wenn man mindestens im 4. Monat seit Entgegennahme des Hetmann-Auftrages ist (SCHICKM.EXE ab offset 697C0 sowie ab 69E70). Die Variable "Monate seit Entgegennahme des Hetmann-Auftrages" befindet sich im gespeicherten Spielstand an Offset 062E. Dies widerspricht einigen Angaben im Diskussionsstrang, nachdem es des Hetmann-Auftrages nicht bedürfe.
  2. Sofern diese Bedingung zutrifft, wird bei Beginn jeder Reise W100 gewürfelt, bei 1 oder 2 wird vermerkt (in DS:4244), dass es auf dieser Reise zu einer Begegnung kommt (mit wem, wird an dieser Stelle noch nicht entschieden) und der Wegkilometer ausgewürfelt, ab (nicht an) welchem dies passiert. "Reisebeginn" ist aus Sicht des Programmcodes nicht nur das Verlassen einer Stadt, sondern auch das Aufbrechen nach einem vom Einbruch der Dunkelheit erzwungenen Nachtlager, nicht aber eines freiwilligen Nachtlagers durch Rechtsklick oder Auffinden eines Rastplatzes oder Herberge auf dem Weg.
  3. Während der Reise wird ständig geprüft, ob in DS:4224 eine Begegnung vermerkt ist (SCHICKM.EXE ab Offset 69C12). Ab dem entsprechenden Wegkilometer wird W100 gewürfelt, bei 0-50 wird der Olvir-Dialog, ansonsten der Kolberg-Dialog gestartet.
  4. Kolbergs Dialogcode überprüft, ob man Kolberg schon mal begegnet ist (Variable bei Offset 064F im gespeicherten Spielstand muss 0 sein), falls ja, erscheint gar keine Dialogbox; man merkt allenfalls, dass das Fenster mit dem Horizont flackert, weil es geschlossen wird, bevor der Dialogcode mit der Überprüfung gestartet wird; ähnliches bei Olvir Gundridsson.
  5. Nach der Begegnung wird (fälschlicherweise) DS:4224 nicht zurückgesetzt, weshalb nach der Begegnung ständig Schritt 4 erneut ausgeführt wird. Mit 50%-iger Wahrscheinlichkeit wird wieder die gleiche Person ausgewürfelt, so dass gar nichts passiert (außer dass das Horizontfenster flackert), ansonsten kommt der jeweils andere. Olvir und Kolberg kommen deshalb eigentlich immer im Doppelpack; kommt nur einer, ist entweder der Weg zu kurz oder das Spiel denkt, man sei Treborn schon begegnet (siehe unten).

Ob Treborn Kolberg vom Schwarzen Auge oder Jurge Torfinsson in Skjal erwähnt wurde, ist somit unwichtig; entscheidend ist Punkt 1. Ein ärgerlicher Programmierfehler (denke ich) ist jedoch bei Algrid Trondesdotter in Hjalsingor: Wenn sie erzählt, dass sie ihr Kartenstück an Treborn Kolberg verkauft hat, wird Variable 064F auf 1 gesetzt (SCHICKM.EXE Offset 55451). Hier dachte der Programmierer wohl, damit vermerke er, dass man den Namen Kolbergs kennt; diese Codierung wird bei den anderen Informanten auch verwendet (0=unbekannt, 1=erwähnt, 2=besucht). Tatsächlich steht Wert 1 aber dafür, dass man Kolberg schon getroffen hat (Abfrage im Kolberg-Dialogcode bei 55A0D, wird während des Kolberg-Dialogs gesetzt bei 55A27)! Wer also mit Algrid Trondesdotter in Hjalsingor spricht, wird danach Kolberg nie zu Gesicht bekommen! Dieser Fehler besteht nur bei Algrid Trondesdotter in Hjalsingor, nicht bei Jurge Torfinsson in Skjal oder dem Schwarzen Auge.

Für die zweite Begegnung in Clanegh gibt es zwar den Dialogtext, aber keinen Dialogcode in SCHICKM.EXE. Insgesamt scheint die Treborn Kolberg-Geschichte programmiertechnisch ein bisschen unausgegoren zu sein.
Zitieren
Zitat:Ob Treborn Kolberg vom Schwarzen Auge oder Jurge Torfinsson in Skjal erwähnt wurde, ist somit unwichtig; entscheidend ist Punkt 1. Ein ärgerlicher Programmierfehler (denke ich) ist jedoch bei Algrid Trondesdotter in Hjalsingor: Wenn sie erzählt, dass sie ihr Kartenstück an Treborn Kolberg verkauft hat, wird Variable 064F auf 1 gesetzt (SCHICKM.EXE Offset 55451). Hier dachte der Programmierer wohl, damit vermerke er, dass man den Namen Kolbergs kennt; diese Codierung wird bei den anderen Informanten auch verwendet (0=unbekannt, 1=erwähnt, 2=besucht). Tatsächlich steht Wert 1 aber dafür, dass man Kolberg schon getroffen hat (Abfrage im Kolberg-Dialogcode bei 55A0D, wird während des Kolberg-Dialogs gesetzt bei 55A27)! Wer also mit Algrid Trondesdotter in Hjalsingor spricht, wird danach Kolberg nie zu Gesicht bekommen! Dieser Fehler besteht nur bei Algrid Trondesdotter in Hjalsingor, nicht bei Jurge Torfinsson in Skjal oder dem Schwarzen Auge.
das erklärt natürlich warum man in manchen Spielen Kolberg nie zu sehen bekommt^^
Danke ich finden das eine sehr hilfreiche Information :)
Zitieren
(26.06.2011, 11:27)NRS schrieb: Ich habe mir mal erlaubt, die Frage nach dem Kolberg-Erscheinen durch Debuggen von SCHICKM.EXE etwas genauer mit dem Debugger zu untersuchen. Ich verwende SCHICKM.EXE Version 3.02 von der Gold Games-CD, Größe 556.208 Byte. Das Ergebnis:
WOW!!! Wenn das alles so stimmt - wovon ich jetzt mal ohne weiteres ausgehe, so sorgfältig und (für Technik-Kundige) wohl nachprüfbar, wie Du das dokumentiert hast -, dann hast Du wohl eines der allerletzten großen Rätsel der NLT gelöst! :respect:

Und das mit Deinem ersten Beitrag hier. Das muß Anlaß sein, für ein ganz besonders herzliches Willkommen im Forum, NRS. :wave:


Ein ganz kleiner Punkt ist mir noch nicht klar: Ich bin ganz sicher, daß ich mehrfach Kolberg getroffen habe, Gundridsson aber nicht auf derselben Strecke. Laut Deinem Punkt 5 ist das möglich, wenn der "Weg zu kurz" kurz ist. Das führt mich zu der Frage, wovon das abhängt.

Du schreibst unter Punkt 2, daß festgelegt wird, "ab (nicht an)" welchem Wegkilometer die Begegnung stattfindet und dann unter Punkt 3, daß "Am entsprechenden Wegkilometer" geprüft wird, wer von beiden kommt. Ich nehme mal an, daß gemeint ist, daß das (aufgrund des Bugs nach dem ersten Treffen) "ab" diesem Wegkilometer ständig geprüft wird. Aber wie oft ist das? Bei jeder Meile, die die Helden laufen? Dann wäre der Weg ja nur zu kurz für die zweite Begegnung, wenn man Kolberg unmittelbar vor dem Zielort trifft. :think:


Besonders interessant finde ich vier Punkte Deiner Feststellungen:

Zum einen, daß "bei Beginn jeder Reise W100 gewürfelt" wird. Das besagt zum einen, daß jede Strecke in Betracht kommt, was wir schon vermutet hatten, aber nun belegt ist. Und zum anderen ist damit festgelegt, daß eine Chance von nur 2 % besteht. - Und es gibt keinen Weg, das Erscheinen von Kolberg ingame gezielt herbeizuführen (wie etwas beim Einhorn). Man hat das Glück oder man hat es nicht.

Außerdem interessant ist, daß 3 Monate verstrichen sein müssen. Das erklärt, weshalb so viele hier ihn gar nicht treffen. Wer die Schicksalsklinge in- und auswendig kennt, der braucht nicht allzuviel Ingame-Zeit, um das Spiel zu beenden, hat dafür also nur eine kurze Zeit.

Weiter wichtig zu wissen ist der Algrid-Bug. Wer erst alle Informanten abgeklappert hat und dann noch ruhig auf Kolberg wartet, kann ihn nicht mehr treffen.

Und schließtlich ist sehr aufschlußreich, daß ein Hinweis auf Treborn und Olvir (vom Algrid-Bug abgesehen) keine Rolle spielt. Das hätte ich nicht gedacht.


Der Mechanismus zu Swafnild Egilsdotter wird insoweit etwas anders funktionieren, denn sie trifft man definitiv erst, wenn man von ihr erfahren hat und die Wahrscheinlichkeit wird auch (soweit ist das schon immer klar gewesen) weit höher als 2 % liegen.


Jedenfalls ein Riesenlob und Dankeschön an Dich, NRS! :) :up:
"Haut die Säbel auffe Schnäbel."
Zitieren
Super Beitrag, das mit den 3 Monaten im Spiel macht Sinn, denn meistens ist man ja schneller :D

Frage: Ich treffe Olvir kurz vor Erreichen einer Stadt, wenn ich dann umkehre, bleibt die Chance auf Kolberg bestehen?

Viele Grüße

Recke
Zitieren
Zugrimm schrieb:Ich bin ganz sicher, daß ich mehrfach Kolberg getroffen habe, Gundridsson aber nicht auf derselben Strecke.
Ich überlege gerade, wie es anhand des Programmcodes möglich sein soll, Kolberg mehrmals zu treffen, da beim erstmaligen Treffen im Dialogcode eben die Variable auf 1 gesetzt wird und dies dazu führt, dass bei allen darauf folgenden Aufrufen des Dialogcodes dieser eben nicht mehr erscheint.

Allerdings habe ich wie gesagt nur Version 3.02 angeschaut, welches meines Wissens die aktuellste überhaupt ist. Ich besitze noch Original-in-box Version 1.00; da könnte ich bei Gelegenheit auch mal anschauen. Da dies wohl die früheste Fassung ist, sollten zumindest die beiden Enden der Spielverhalten-Bandbreite dann abgedeckt sein.

Zugrimm schrieb:Ich nehme mal an, daß gemeint ist, daß das (aufgrund des Bugs nach dem ersten Treffen) "ab" diesem Wegkilometer ständig geprüft wird.
Richtig, bis zum Ende dieser Reise oder Zwangsnachtlager.
Zugrimm schrieb:Aber wie oft ist das? Bei jeder Meile, die die Helden laufen? Dann wäre der Weg ja nur zu kurz für die zweite Begegnung, wenn man Kolberg unmittelbar vor dem Zielort trifft.
Soweit ich den Code richtig verstehe (und verzeiht's mir, wenn nicht, aber unkommentierter Maschinencode aus dem Disassembler ist nicht gerade selbsterklärend...) prüft er's bei jedem "Routen-Bildpunkt".

Beispiel: Annahme 5ter Monat nach Auftragserteilung durch Hetmann, weder Kolberg noch Barde bereits getroffen:
  1. Beginn: W100=1: Begegnung möglich. Wegstrecke: 20 Bildpunkte, streckenspezifischer Wert Entfernung-pro-Bildpunkt 10 -> Wegkilometer für Begegnung = Zufallzahl von 1 bis 20*10, hier 171.
  2. Bei Kilometer 0-170 passiert nichts. (Da nur bei jedem Bildpunkt überprüft wird, wird der Kilometerzähler in 10er-Schritten erhöht und schlägt somit erst bei Kilometerstand 180 an.)
  3. Bei Kilometer 180: W100=31 => Aufruf Bardendialog. Dialog wird angezeigt, weil BardenFlag==0. Setze BardenFlag=1.
  4. Bei Kilometer 190: W100=20 => Aufruf Bardendialog. Dialog wird nicht angezeigt, weil BardenFlag==1.
  5. Bei Kilometer 200: W100=17 => Aufruf Bardendialog. Dialog wird nicht angezeigt, weil BardenFlag==1.
Und so kann's passieren, dass man nur einen von beiden trifft, weil die wenigen verbleibenden W100-Würfe bei jedem Wegstrecken-Punkt immer nur über 50 oder unter 50 sind.

Zugrimm schrieb:Zum einen, daß "bei Beginn jeder Reise W100 gewürfelt" wird.
Ich habe den Ursprungsbeitrag noch geändert. Die Zufallsbegegnungen (dazu zählen auch Zufallskämpfe, auf die ich hier nicht weiter eingehe) werden auch nach jedem Zwangsnachtlager für die Reststrecke neu ausgewürfelt.

Zugrimm schrieb:Der Mechanismus zu Swafnild Egilsdotter wird insoweit etwas anders funktionieren, denn sie trifft man definitiv erst, wenn man von ihr erfahren hat und die Wahrscheinlichkeit wird auch (soweit ist das schon immer klar gewesen) weit höher als 2 % liegen.
Die Bootsfraumechanik ist wie folgt (SCHICKM.EXE offset 4C32F):

Sie erscheint grundsätzlich nur, wenn man von ihr gehört hat oder sie schon mal getroffen hat, ihr Kartenstück noch nicht hat und mindestens im 3. Monat ist. Dann wird W100 gewürfelt; Swafnild ist im Hafen, wenn W100 <= (Anzahl Monate seit Annahme des Hetmann-Auftrages +4), also mindestens 7%, mit jedem Monat ein Prozentpunkt mehr. Dieser Wurf wird bei jedem Betreten jeden Hafens neu gemacht. Man muss also nicht die Stadt verlassen oder eine Nacht schlafen. Dass solche "Veränderungen der Spielwelt" trotzdem einen Einfluss zu haben scheinen, kann entweder Placebo sein, oder der Zufallszahlengenerator des Spiels ist eben nicht von so hoher Zufälligkeit, wie es wünschenswert ist. Das wäre noch genauer zu untersuchen.
Zitieren
(26.06.2011, 15:07)NRS schrieb: Ich überlege gerade, wie es anhand des Programmcodes möglich sein soll, Kolberg mehrmals zu treffen,
Nein nein, da hatte ich mich mißverständlich ausgedrückt. Ich meinte mehrmals in meinem Leben, nicht mehrmals innerhalb eines NLT-Durchlaufs.

(26.06.2011, 15:07)NRS schrieb: Und so kann's passieren, dass man nur einen von beiden trifft, weil die wenigen verbleibenden W100-Würfe bei jedem Wegstrecken-Punkt immer nur über 50 oder unter 50 sind.
:idea: - O.K., ich denke, jetzt habe ich es verstanden. Danke. - Bei jeder Meile/Bildpunkt ab dem eingangs ermittelten "Startpunkt" besteht eine 50:50 Chance jeden der beiden zu treffen. Trifft man zuerst Kolberg und danach bis zum Ende der Tagesreise (Erreichen des Reiseziels oder Zwangsnachtlager) immer wieder Kolberg (was dann aber nicht mehr angezeigt wird), dann kommt Olvir nicht mehr. Wenn man den ersten also spät am Tage tifft und dann ein "Zwangsnachtlager" aufschlägt, werden die Karten am nächsten Tag neu gemischt (d.h. man trifft wahrscheinlich keinen mehr).

Daraus könnte man die Handlungsanleitung ableiten, wenn man einen der beiden getroffen hat, möglichst manuell ein Lager aufzuschlagen, bevor es dämmert und die Helden dazu gezwungen sind. :think:

(26.06.2011, 15:07)NRS schrieb: Die Bootsfraumechanik ist wie folgt (SCHICKM.EXE offset 4C32F):

Sie erscheint grundsätzlich nur, wenn man von ihr gehört hat oder sie schon mal getroffen hat, ihr Kartenstück noch nicht hat und mindestens im 3. Monat ist.
Auch nicht uninteressant! :ok:

Wenn man also sehr früh von ihr hört (z.B. bei Isleif Olgardsson), dauert es dennoch mehrere Ingame-Monate, bis man sie trifft. Und wenn das Einhorn ihr Kartenstück gebracht hat, kann man sie auch nicht mehr treffen. Auch das hätte ich so nicht angenommen.
"Haut die Säbel auffe Schnäbel."
Zitieren
Besteht in diesem Forum eigentlich Interesse an selbstgemachten Patches? Da der Fehler bei Algrid Trondesdotter doch den Spielablauf meines Erachtens empfindlich stört, wäre so etwas vielleicht nicht völlig absurd. Entweder als Anleitung zum Selbermachen ("ändere mit Hex-Editor in SCHICKM.EXE an Position (pppp) den Wert (aa) in (bb)"), als gepatchte SCHICKM.EXE direkt (das könnte urheberrechtliche Probleme geben, wobei dem Nichtkäufer des Spiels nur diese eine Datei eh nichts bringen würde) oder als Binary-Diff (wo dann auch nicht jeder wüsste, wie er das anwenden soll).

Recke schrieb:Ich treffe Olvir kurz vor Erreichen einer Stadt, wenn ich dann umkehre, bleibt die Chance auf Kolberg bestehen?
Ja.
Zugrimm schrieb:Daraus könnte man die Handlungsanleitung ableiten, wenn man einen der beiden getroffen hat, möglichst manuell ein Lager aufzuschlagen, bevor es dämmert und die Helden dazu gezwungen sind.
Genau.
Zitieren
Hallo NRS,

auch von meiner Seite ein herzliches Willkommen hier im Forum und Gratulation zu deinem gelungenen Einstand.

(26.06.2011, 16:39)NRS schrieb: Besteht in diesem Forum eigentlich Interesse an selbstgemachten Patches? Da der Fehler bei Algrid Trondesdotter doch den Spielablauf meines Erachtens empfindlich stört, wäre so etwas vielleicht nicht völlig absurd. Entweder als Anleitung zum Selbermachen ("ändere mit Hex-Editor in SCHICKM.EXE an Position (pppp) den Wert (aa) in (bb)"), als gepatchte SCHICKM.EXE direkt (das könnte urheberrechtliche Probleme geben, wobei dem Nichtkäufer des Spiels nur diese eine Datei eh nichts bringen würde) oder als Binary-Diff (wo dann auch nicht jeder wüsste, wie er das anwenden soll).

Definitiv. Ich habe selber schon so einen Patch gemacht (siehe MR-Bug in Schicksalsklinge beheben?). Das Tool, das ich für die Binärpatches verwende, ist recht komfortabel und kann direkt in der DosBox ausgeführt werden.

Andererseits könnte sich bei dem Tempo, das HenneNWH mit "Bright Eyes" vorlegt, die Frage nach einem Binärpatch für die SCHICKM.EXE schon bald erledigt haben - dann gibt es richtige Source-Patches :ok:
Hallo, ich bin's - der Bart von Fidel Castro. Und mir ist total langweilich nie geschnitten wurde.
I'm a roleplayer. My dice are like my relationships: platonic and unlucky.
Zitieren
Ich hatte eigentlich eher an bspatch gedacht, aber das Argument, dass das Patch-Programm selbst unter DosBox lauffähig sein sollte, hat was. Mal sehen.

Es stellt sich die Frage, wie umfangreich die Korrektur sein soll. Die Minimalvariante wäre, einfach nur das fehlerhafte Setzen der Kolberg-Variable in Hjalsingor durch NOP zu ersetzen und den Rest zu lassen. Eine größere Korrektur wäre, nach dem Erscheinen von Kolberg oder Olvir die Variable DS:4224 zurückzusetzen, so dass nicht immer beide im Doppelpack erscheinen, sofern man unterstellt, dass es sich dabei um einen Bug handelt. Dieser Meinung bin ich, aber man könnte es auch unterschiedlich sehen.

Zuletzt spiele ich ernsthaft mit dem Gedanken, die zweite Kolberg-Begegnung in Clanegh zu implementieren. Der Dialogtext ist ja schon da, und der Code für den 1. Kolberg-Dialog ist in SCHICKM.EXE ja schon als Vorlage identifiziert. Die Schwierigkeit besteht vor allem daran, zusätzlichen Code zu SCHICKM.EXE hinzuzufügen --- ein Byte hier und da zu verändern ist einfach, aber was in ein bestehendes Binärprogramm einzufügen ist etwas aufwändiger. Ich habe so etwas allerdings schon erfolgreich für andere Patches gemacht (zum Eigengebrauch, nicht veröffentlicht), also ist nicht so, dass das völlig ausgeschlossen wäre.

Zitat:Andererseits könnte sich bei dem Tempo, das HenneNWH mit "Bright Eyes" vorlegt, die Frage nach einem Binärpatch für die SCHICKM.EXE schon bald erledigt haben - dann gibt es richtige Source-Patches
Wenn ein Spiel Fehler hat, würde ich sie gerne in der Originalversion des Spiels korrigieren und nicht in irgendwelchen nachprogrammierten Versionen, wie gut die auch immer sein mögen. Mich ärgert es zum Beispiel nach wie vor extrem, dass die Korrekturen zu Skriptfehlern in Ultima 7 und Serpent Isle nur unter Exult lauffähig sind und nicht im Original.
Zitieren
(27.06.2011, 20:11)NRS schrieb: Ich hatte eigentlich eher an bspatch gedacht, aber das Argument, dass das Patch-Programm selbst unter DosBox lauffähig sein sollte, hat was. Mal sehen.

Es stellt sich die Frage, wie umfangreich die Korrektur sein soll. Die Minimalvariante wäre, einfach nur das fehlerhafte Setzen der Kolberg-Variable in Hjalsingor durch NOP zu ersetzen und den Rest zu lassen. Eine größere Korrektur wäre, nach dem Erscheinen von Kolberg oder Olvir die Variable DS:4224 zurückzusetzen, so dass nicht immer beide im Doppelpack erscheinen, sofern man unterstellt, dass es sich dabei um einen Bug handelt. Dieser Meinung bin ich, aber man könnte es auch unterschiedlich sehen.
Ich habe auch zunächst auf bspatch gesetzt, es dann aber verworfen, weil die DosBox-Variante einfacher ist. Das von mir verwendete Programm (cracker.exe) ist speziell fürs Patchen von .exe-Dateien gedacht (wenn auch zu anderen Zwecken, wie der Titel vermuten lässt) und hat noch einen weiteren Vorteil: Man kann beliebig viele Patches in einer Datei zusammenfassen und bekommt diese dann in einem schönen Menü zur Auswahl gestellt. Zudem lassen sich die Patches auch wieder rückgängig machen. Eine einfache Prüfung, ob es sich um die richtige Datei handelt, ist dabei: Neben dem neuen Wert eines Bytes muss auch immer der alte mit angegeben werden.

(27.06.2011, 20:11)NRS schrieb: Zuletzt spiele ich ernsthaft mit dem Gedanken, die zweite Kolberg-Begegnung in Clanegh zu implementieren. Der Dialogtext ist ja schon da, und der Code für den 1. Kolberg-Dialog ist in SCHICKM.EXE ja schon als Vorlage identifiziert. Die Schwierigkeit besteht vor allem daran, zusätzlichen Code zu SCHICKM.EXE hinzuzufügen --- ein Byte hier und da zu verändern ist einfach, aber was in ein bestehendes Binärprogramm einzufügen ist etwas aufwändiger. Ich habe so etwas allerdings schon erfolgreich für andere Patches gemacht (zum Eigengebrauch, nicht veröffentlicht), also ist nicht so, dass das völlig ausgeschlossen wäre.
Das klingt interessant (und nach Virusprogrammierung :bigsmile:). Ich vermute, du hast den Code hinten an die .exe gehängt, die Laufzeit-Adresse deines Codefragmentes bestimmt und einen entsprechenden Sprung/Call auf diesen Code an passender Stelle platziert, richtig?

Edit: Merke gerade, das wir hier etwas off-topic sind. Diesen technischen Teil sollten wir dann vielleicht eher im Technikbereich weiterbesprechen.
Hallo, ich bin's - der Bart von Fidel Castro. Und mir ist total langweilich nie geschnitten wurde.
I'm a roleplayer. My dice are like my relationships: platonic and unlucky.
Zitieren
Herzlich wilkommen im Forum (und im Wiki) NRS,

Ich habe sehr viel Respekt vor dieser Ausgezeichneten Detektivarbeit.

(26.06.2011, 11:27)NRS schrieb:
  1. Man kann Treborn Kolberg oder Olvir Gundridsson nur begegnen, wenn man mindestens im 4. Monat seit Entgegennahme des Hetmann-Auftrages ist ... Dies widerspricht einigen Angaben im Diskussionsstrang, nachdem es des Hetmann-Auftrages nicht bedürfe.

Das kann ich bestätigen.

(27.06.2011, 20:11)NRS schrieb: Es stellt sich die Frage, wie umfangreich die Korrektur sein soll. Die Minimalvariante wäre, einfach nur das fehlerhafte Setzen der Kolberg-Variable in Hjalsingor durch NOP zu ersetzen und den Rest zu lassen. Eine größere Korrektur wäre, nach dem Erscheinen von Kolberg oder Olvir die Variable DS:4224 zurückzusetzen, so dass nicht immer beide im Doppelpack erscheinen, sofern man unterstellt, dass es sich dabei um einen Bug handelt. Dieser Meinung bin ich, aber man könnte es auch unterschiedlich sehen.

Das klingt beides sehr gut.

(27.06.2011, 20:11)NRS schrieb: Zuletzt spiele ich ernsthaft mit dem Gedanken, die zweite Kolberg-Begegnung in Clanegh zu implementieren. Der Dialogtext ist ja schon da, und der Code für den 1. Kolberg-Dialog ist in SCHICKM.EXE ja schon als Vorlage identifiziert. Die Schwierigkeit besteht vor allem daran, zusätzlichen Code zu SCHICKM.EXE hinzuzufügen --- ein Byte hier und da zu verändern ist einfach, aber was in ein bestehendes Binärprogramm einzufügen ist etwas aufwändiger. Ich habe so etwas allerdings schon erfolgreich für andere Patches gemacht (zum Eigengebrauch, nicht veröffentlicht), also ist nicht so, dass das völlig ausgeschlossen wäre.

Du kannst ja den Platz von unbenutzten Funktionen für den neuen Code nutzen.
Z.B. an Offsett 0x7d21 - 0x7d7e, 0x8e1b - 0x8e92 oder 0x1228f - 0x12317 (136 byte).

Dann müssen noch im EXE-Header die Anzahl der Relocationen und die Relocationstabelle angepasst werden.
Zitieren
Hendrik schrieb:Ich vermute, du hast den Code hinten an die .exe gehängt, die Laufzeit-Adresse deines Codefragmentes bestimmt und einen entsprechenden Sprung/Call auf diesen Code an passender Stelle platziert, richtig?
Hinten ist immer schlecht, weil dort eigentlich der BSS-Bereich beginnt, welcher ziemlich schnell nach Programmstart mit Programmdaten und ggf. Stapelspeicher befüllt wird. Ich hatte mal zwischen Code und Datensegment versucht, aber auch das geht bei der Adressarithmetik manchen Programmes schief. Als in allen versuchten Fällen unproblematischste Variante hat es sich herausgestellt, nach dem EXE-Kopf und vor den eigentlichen Binärdaten einzufügen. Dann muss man einfach nur zu allen Relokationseinträge im Kopf entsprechend Anzahl eingefügte Byte durch 16 hinzuaddieren, gleiches an den Stellen, auf die hingezeigt wird, und gut is'. Dadurch bleibt alle Adressarithmetik erhalten; das einzige, was sich ändert, ist der Abstand von Programmsegmentpräfix und ursprünglicher Ladeadresse, aber ich hab noch nie erlebt, dass der irgendein Programm interessiert hätte.

Hab ich bei SCHICKM.EXE auch schon gemacht, als ich die in der CD-ROM-Version fehlende Schiffsreisemusik und "Down at the Blue" von der Soundtrack-CD als zweite Dungeonmusik hinzugefügt habe. Und so könnte man das auch beim Kolberg-Dialog machen (womit ich wieder die Kurve zum Thema gefunden hätte! :)) Ein bisschen komplizierter wird's allerdings, wenn man nicht im normalen EXE-Teil, sondern im Overlay rumwurschelt, da jeder Overlay-Manager dortige Relokationen auf eigene Weise behandelt.

HenneNWH schrieb:Z.B. an Offset 0x7d21 - 0x7d7e, 0x8e1b - 0x8e92 oder 0x1228f - 0x12317 (136 byte). Dann müssen noch im EXE-Header die Anzahl der Relocationen und die Relocationstabelle angepasst werden.
Danke für den Hinweis. Muss mal sehen, wie lang das dann tatsächlich wird.

CLANEGH.DAT muss ich dann ja auch verändern, da im Moment kein Haus für einen Informanten ab offset 0x140 markiert ist. Welches Haus soll ich denn nehmen? :)

Übrigens: so, wie der Informantendialog-Code implementiert ist, kann man durch entsprechende Änderung der Stadtdaten das Einhorn in einem Haus wohnen lassen. ;)
Zitieren
Den Zwölfen zum Gruße!

(26.06.2011, 11:27)NRS schrieb: Ich habe mir mal erlaubt, die Frage nach dem Kolberg-Erscheinen durch Debuggen von SCHICKM.EXE etwas genauer mit dem Debugger zu untersuchen. Ich verwende SCHICKM.EXE Version 3.02 von der Gold Games-CD, Größe 556.208 Byte. Das Ergebnis:

(...)

Man kann Treborn Kolberg oder Olvir Gundridsson nur begegnen, wenn man mindestens im 4. Monat seit Entgegennahme des Hetmann-Auftrages ist (SCHICKM.EXE ab offset 697C0 sowie ab 69E70). Die Variable "Monate seit Entgegennahme des Hetmann-Auftrages" befindet sich im gespeicherten Spielstand an Offset 062E. Dies widerspricht einigen Angaben im Diskussionsstrang, nachdem es des Hetmann-Auftrages nicht bedürfe.

(...)

Ein ärgerlicher Programmierfehler (denke ich) ist jedoch bei Algrid Trondesdotter in Hjalsingor: Wenn sie erzählt, dass sie ihr Kartenstück an Treborn Kolberg verkauft hat, wird Variable 064F auf 1 gesetzt (SCHICKM.EXE Offset 55451). Hier dachte der Programmierer wohl, damit vermerke er, dass man den Namen Kolbergs kennt; diese Codierung wird bei den anderen Informanten auch verwendet (0=unbekannt, 1=erwähnt, 2=besucht). Tatsächlich steht Wert 1 aber dafür, dass man Kolberg schon getroffen hat (Abfrage im Kolberg-Dialogcode bei 55A0D, wird während des Kolberg-Dialogs gesetzt bei 55A27)! Wer also mit Algrid Trondesdotter in Hjalsingor spricht, wird danach Kolberg nie zu Gesicht bekommen!

Das ist ja nun wirklich unglaublich, nach so vielen Jahren des Herumrätselns eine so gute Aufstellung zu bekommen! Das ist ja auf dem Niveau der Sphärenriss- und Einhornforschung! Einfach nur großartig!

Selbst wenn man nun gar nichts mit Patch oder Hexeditor macht, bleiben ja zwei gravierende Erkenntnisse übrig:
1. Man muss schon im 4. Monat seit Beauftragung durch den Hetmann unterwegs sein.
2. Auf keinen Fall in Hjalsingor mit Algrid Trondesdotter reden, bevor man die Begegnungen hatte.
Beides ist recht leicht einzuhalten.

Wie gesagt, eine Sternstunde dieses Forums! Man sieht, was passiert, wenn man systematisch ungelöste Fragen dokumentiert.
Ärger im Svellttal? Auf der Suche nach dem Salamanderstein? Dann hilft der Sternenschweif-Reiseführer von Kunar!
Zitieren
(28.06.2011, 18:26)NRS schrieb: CLANEGH.DAT muss ich dann ja auch verändern, da im Moment kein Haus für einen Informanten ab offset 0x140 markiert ist. Welches Haus soll ich denn nehmen? :)
Ich warte noch auf Vorschläge, in welchem Haus in Clanegh die zweite Kolberg-Begegnung stattfinden soll. Ansonsten werde ich einfach irgendein "Wollt ihr einbrechen?"-Haus aussuchen.
Zitieren




Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste