Reverse Engineering der NLT - Druckversion +- Crystals-DSA-Foren (https://www.crystals-dsa-foren.de) +-- Forum: Allgemeines zur Nordlandtrilogie DOS (https://www.crystals-dsa-foren.de/forumdisplay.php?fid=20) +--- Forum: Technische Werkstatt (https://www.crystals-dsa-foren.de/forumdisplay.php?fid=34) +--- Thema: Reverse Engineering der NLT (/showthread.php?tid=700) |
RE: Reverse Engineering der NLT - HenneNWH - 11.08.2014 (11.08.2014, 18:19)Rabenaas schrieb: Sind die Segmentnummern Deine eigene Aufteilung, tatsächliche Segmente des Binaries oder logische Einheiten. Die Nummerierung hat sich IDA-Pro ausgedacht (aufsteigend vom Anfang des Binaries). Ein Segment entspricht dem Inhalt einer Objekt-Datei, und im Fall von Bright-Eyes auch einer C-Datei. (11.08.2014, 18:43)Obi-Wahn schrieb: P.S.: Das Wiki sollte jetzt wieder etwas schneller laufen. Mehr Serverleistung. Danke Obi! RE: Reverse Engineering der NLT - Lippens die Ente - 12.08.2014 (08.08.2014, 16:19)Helios schrieb: Welche genau meinst du? na alle Kämpfe, die kommen, sobald man ein bestimmtes Feld betritt. So wie in den Städten ein Tempel betreten wird, wird dort eben ein Kampf betreten. Alle mir fehlenden Kämpfe werden auf solchen Feldern ausgetragen, dazu kommen noch sämtliche Zufallskämpfe beim Übernachten in Dungeons, genau die, die ich verändern wollte... RE: Reverse Engineering der NLT - Helios - 12.08.2014 Meine Frage bezog sich auf "Feldinhalte der Dungeonfelder". Die Zuordnung dieser Kämpfe läuft über die noch nicht ganz entschlüsselten Dats. Ich meine es wäre FNEIBOUR.DAT gewesen aber keine Garantie, ist schon eine Weile her. RE: Reverse Engineering der NLT - HenneNWH - 16.08.2014 Soo, eine produktive Woche mit Bright-Eyes liegt hinter mir, mit folgenden Ergebnissen: Ersetzte Funktionen (Segmente sind komplett identisch)
Behobene Fehler (Bright-Eyes):
Behobene Fehler, Verbesserungen (Original):
Zu Statistik: Mehr als 50% aller Funktionen von Schick sind jetzt nachprogrammiert, davon sind über 2/3 nachgeprüft identisch mit dem Original (d.h. 1/3 oder 33% vom gesamten Spiel). Viel Spaß, Henne RE: Reverse Engineering der NLT - Obi-Wahn - 17.08.2014 Unter Linux klappt das Bauen leider nicht: Code: make[5]: Edit: Hier noch der BuildLog von Windows: BuildLog.zip (Größe: 5,97 KB / Downloads: 0) RE: Reverse Engineering der NLT - Rabenaas - 17.08.2014 (16.08.2014, 16:50)HenneNWH schrieb: Zu Statistik: Mehr als 50% aller Funktionen von Schick sind jetzt nachprogrammiert, davon sind über 2/3 nachgeprüft identisch mit dem Original (d.h. 1/3 oder 33% vom gesamten Spiel). Um es mal so zu sagen: Das ist einfach nur irre. Super Leistung. RE: Reverse Engineering der NLT - Shihan - 17.08.2014 Krass! Großartige Sache, Henne, einfach großartig! Nur eine Frage hätte ich, nach einem Blick in den Code: Wie könnte ein mögliches, in der unbestimmten Zukunft liegendes Refaktoring aussehen? Ich blick' da nämlich überhaupt nicht durch RE: Reverse Engineering der NLT - Obi-Wahn - 17.08.2014 Neue Version vom 17.08.2014! RE: Reverse Engineering der NLT - HenneNWH - 17.08.2014 Vielen Dank! (17.08.2014, 10:45)Obi-Wahn schrieb: Unter Linux klappt das Bauen leider nicht: Manchmal lass ich mich von GIT doch noch austricksen. Die fehlenden Dateien sind jetzt im Repo. (17.08.2014, 12:05)Shihan schrieb: Nur eine Frage hätte ich, nach einem Blick in den Code: Wie könnte ein mögliches, in der unbestimmten Zukunft liegendes Refaktoring aussehen? Ich blick' da nämlich überhaupt nicht durch Ja, Shihan, der Code ist momentan sehr unleserlich, was viele Ursachen hat. Der grobe Entwicklungsfahrplan hat 3 Stufen:
Zu Punkt 2: Eine kleine Ursache ist, dass einige Funktionen und Variablen noch keine sinnvollen Namen haben. Das liegt daran, dass ich mich im Moment aus Zeitgründen nicht damit auseinandersetzen möchte, was jede einzelne Variable bedeutet, sondern lieber Programmcode erzeuge welcher 1:1 übereinstimmt. Die sinnvolle Namensgebung, kann dann in Ruhe im Nachgang erledigt werden. Die Hauptursache ist, dass sämtliche Speicherzugriffe auf globale Daten und dynamisch allokierten Speicher mittels Funktionen oder Makros durchgeführt werden. Das wird sich, bis der Code von wirklich allen Funktionen nachgebaut ist, auch nicht ändern. Danach können alle Zugriffe auf die globalen Daten im Quellcode leserlich gemacht werden, indem die entsprechenden Variablen angelegt, exportiert und vom ganzen Programm benutzt werden. Zum Beispiel: aus diesem Code, welcher einfach einen 32bit Wert kopiert... Code: ds_writed(SPELLUSER, ds_readd(ITEMUSER)); Code: spelluser = itemuser; Auch verschwindet das Konvertieren von Zeigern mit Real2Host(), welches einen Zeiger in RealMode-Addressierung, in einen Zeiger für unsere Systeme umwandelt. Bei dynamischem Speicher kann ähnlich verfahren werden wie bei Globalem, wobei hier noch etwas behutsamer auf korrekte Endianess geachtet werden muss wenn Daten aus Dateien eingelesen werden. War die Auskunft hilfreich? RE: Reverse Engineering der NLT - NewProggie - 17.08.2014 Hey HenneNWH, vielleicht wäre es ganz hilfreich ein paar Zeilen zum Aufbau und Struktur des Codes zu schreiben, so dass sich "Neue" leichter einfinden und bei dem Projekt helfen könnten. Ich hatte mir vor einiger Zeit mal den Code angeschaut und gedacht, dass ein kleines Buildsystem evtl. ganz nett wäre (wie z.B. CMake), was auch das Bauen für die verschiedenen Betriebssysteme vereinfachen würde. Ich könnte das auch übernehmen, sofern du das als nützlich erachtest. RE: Reverse Engineering der NLT - HenneNWH - 17.08.2014 (17.08.2014, 19:38)NewProggie schrieb: Hey HenneNWH, Die Idee ist gut, ich überlege mir mal welche Informationen wichtig sind. Was interessiert sich denn? (17.08.2014, 19:38)NewProggie schrieb: Ich hatte mir vor einiger Zeit mal den Code angeschaut und gedacht, dass ein kleines Buildsystem evtl. ganz nett wäre (wie z.B. CMake), was auch das Bauen für die verschiedenen Betriebssysteme vereinfachen würde. Ich könnte das auch übernehmen, sofern du das als nützlich erachtest. Vielen Dank für das Angebot, NewProggie. Im Moment ist Bright-Eyes ein Teil von DOSBox, welche schon GNU Autotools als Buildsystem nutzt. Wenn es dann ohne DOSBox laufen soll, dann ist CMake eine sehr gute Wahl, aber bis dahin wird noch viel Zeit vergehen. RE: Reverse Engineering der NLT - NewProggie - 17.08.2014 (17.08.2014, 20:09)HenneNWH schrieb: Die Idee ist gut, ich überlege mir mal welche Informationen wichtig sind. (Vielleicht steht das auch schon irgendwo und ich hab das bisher noch nicht gefunden) Also z.B. mein bisheriger Wissensstand ist:
Mich würde interessieren:
Ich hoffe, ich erschlage dich jetzt nicht mit den vielen Fragen, aber vielleicht ist das für einige mehr hier ganz nützlich zu verstehen. Mir würde es jedenfalls helfen, um mich etwas besser zurecht zu finden im Code und auch konstruktiv mitzuhelfen. RE: Reverse Engineering der NLT - Rabenaas - 17.08.2014 Ein paar der Fragen kann ich auch schon mal beantworten. Die DosBox ist nötig, weil Schick nicht in einem Rutsch neu implementiert wird, sondern Funktion für Funktion. D.h. im Moment läuft Schick in der DosBox und für einzelne, bereits neu implementierte Funktionen springt es aus der Emulation heraus in den nativen Code. Wenn alle Funktionen neu implementiert sind, ist die DosBox überflüssig. Ansonsten ist das Werkzeug der Wahl IDA, der interaktive Disassembler. RE: Reverse Engineering der NLT - Shihan - 18.08.2014 Henne, viele Dank für die Erläuterungen! Dann weiß ich ja, warum es so aussieht, wie es aussieht. Alles klar. Hatte mir nur gedacht, dass es einfacher wäre, Deine Arbeit zu unterstützen, wenn der Code ein wenig anders aussehen würde. Aber ich verstehe Deine Vorgehensweise! RE: Reverse Engineering der NLT - Rabenaas - 25.08.2014 Wäre es vielleicht sinnvoll, BrightEyes statt auf der Vanilla-DosBox auf Daums gepatchte Sourcen aufsetzen zu lassen? http://ykhwong.x-y.net/ RE: Reverse Engineering der NLT - Rabenaas - 25.08.2014 Bitte gebt mir einen Account im BrightEyes-Wiki. RE: Reverse Engineering der NLT - Shihan - 25.08.2014 (25.08.2014, 10:13)Rabenaas schrieb: Wäre es vielleicht sinnvoll, BrightEyes statt auf der Vanilla-DosBox auf Daums gepatchte Sourcen aufsetzen zu lassen? http://ykhwong.x-y.net/ Magst Du kurz erklären, was es damit auf sich hat? Habe noch nie davon gehört... RE: Reverse Engineering der NLT - Rabenaas - 25.08.2014 Daums Version der DosBox beinhaltet einige mehr oder weniger nützliche Patches, welche die Standard-DosBox aufbrezeln. Während uns z.B. der Glide-Support herzlich egal sein kann, wären Savestates uU zum debuggen ganz nützlich. RE: Reverse Engineering der NLT - Obi-Wahn - 25.08.2014 (25.08.2014, 10:54)Rabenaas schrieb: Bitte gebt mir einen Account im BrightEyes-Wiki. Email ist an die Adresse raus, die du auch hier im Forum verwendest. RE: Reverse Engineering der NLT - Rabenaas - 25.08.2014 Kthx! Bin ich schon drin, oder was... |