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!

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.
