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 - Obi-Wahn - 10.07.2011 Läuft alles wie geschmiert. RE: Reverse Engineering der NLT - Hendrik - 11.07.2011 (10.07.2011, 19:02)HenneNWH schrieb: Es gibt noch ein paar Kleinigkeiten, welche ich dir nicht vorenthalten möchte:Schon passiert (10.07.2011, 19:02)HenneNWH schrieb: Werd ich machen. Happy Hocken. Vor dem Rechner. RE: Reverse Engineering der NLT - Sannah - 30.07.2011 Ich schau auch mal wieder rein und lass nen Gruß hier... Klingt alles recht nett... ^^ RE: Reverse Engineering der NLT - llm - 31.07.2011 (08.07.2011, 09:13)HenneNWH schrieb: Es gibt (für mich) etwas bahnbrechendes: Ich habe herausgefunden wie man den Emulator aus rekonstruiertem Code wieder aufruft. Ich hoffe wirklich das deine Extensions irgndwann in den Main DOSBox Branch einfliessen - auch wenns bestimmt schwer wird Wo kann man denn solche Aufrufe in deinem Code finden? RE: Reverse Engineering der NLT - HenneNWH - 01.08.2011 Hallo llm und willkommen im Forum, Zu deiner Frage kann ich dir folgenden Link src/custom/schick/rewrite_g105de/g105de_seg006.cpp anbieten. Diese Datei enthält alle Aufrufe ins Miles-Sound-System. Etwas technische Details: Unter DOSBox existiert folgende Funktion: void CALLBACK_RunRealFar(segment, offset); mit dieser kann man far-call Aufrufe in Programmcode des DOS-Programms auslösen. Die Funktion endet nachdem der entsprechende RET Befehl ausgeführt wurde. Zeile 7-10 zeigen eine Funktion ohne Paramter und Rückgabewert. Diese kann ich jetzt ganz bequem aus anderem Code aufrufen, ohne diese Funktion nachprogrammieren zu müssen. Zeile 12-17 zeigen eine Funktion ohne Rückgabewert mit einem Parameter. Der Parameter wird auf den Stack gepackt, die Funktion aufgerufen und wieder vom Stack entfernt. Rückgabewerte, sofern die aufzurufenden Funktionen welche haben, liegen in reg_al (8 Bit), reg_ax (16 Bit) oder (reg_dx << 16) || reg_ax. Einschränkungen: Dieses Verfahren funktioniert nicht bei Overlay-Segmenten. Warum das so ist, weiß ich auch noch nicht. Sinnvolle Anwendungen: Sämtliche Low-Level-Funktionen, die man nicht (oder noch nicht) nachprogrammieren will: C-Library (Dateiverwaltung, Speicherverwaltung), CD-Audio, Soundsystem RE: Reverse Engineering der NLT - Obi-Wahn - 15.08.2011 Moin! Leider stürzt das Generierungsprogramm reproduzierbar ab: RE: Reverse Engineering der NLT - HenneNWH - 15.08.2011 Das Programm kann die DSAGEN.DAT unter /home/obi/Dokumente/Spiele/dsa/SCHICKSAL//DSAGEN.DAT nicht öffnen. Guck mal in dem Verzeichnis, ob die Datei da ist und ob sie großgeschrieben ist. RE: Reverse Engineering der NLT - Hendrik - 15.08.2011 Ich sehe da auch ein "/" zuviel. Normalerweise macht das fopen(...) nichts aus, aber das wäre auch eine mögliche Fehlerquelle. RE: Reverse Engineering der NLT - Obi-Wahn - 15.08.2011 ja, die kleinschreibung war schuld. bei mir ist leider alles kleingeschrieben... RE: Reverse Engineering der NLT - HenneNWH - 16.08.2011 (15.08.2011, 21:05)Obi-Wahn schrieb: ja, die kleinschreibung war schuld. bei mir ist leider alles kleingeschrieben... Das kann ich sehen Innerhalb von DOSBox werden alle neu angelegten Dateinamen großgeschrieben. Das werde ich allerdings erst ändern wenn GEN.EXE eingenständig läuft und eine eigene Konfigurationsdatei hat. Im Moment schreibe ich ein Programm (genripper), welches die ganzen Tabellen und Farbpaletten aus allen mir bekannten Versionen von GEN.EXE ausliest und in benutzbaren C-Code umwandelt. Meine Versionen sind (V1.01de, V1.03de, V1.04de, V1.05de und V3.00en). Bis jetzt sind alle Tabellen identisch. Wenn ich doch noch Unterschiede finden sollte, werde ich davon berichten. Sollte jemand eine V1.00de oder V1.02de haben oder von deren Existenz wissen, wäre es nett mich davon in Kenntnis zu setzten. Sobald alle Tabellen übertragen sind, werde ich das Programm so schreiben, dass es mit den 3 mir bekannten verschiedenen Versionen der DSAGEN.DAT klarkommt. Das sind die deutschsprachige Diskettenversion, die deutschsprachige CD-Version und die englischsprachige Diskettenversion. Danach werden Tastatur- und Mauseingaben, die Grafik und der Sound auf SDL umgestellt, eine Konfigurationsdatei erstellt, sämtliche SEGFAULTS beseitigt und das autonome Programm vom Bright-Eyes ins BrightEyes Repo kopiert. Fertig! P.S.: Ich habe in GEN.EXE einen Bug gefixt, der auftreten kann, wenn im Anfängermodus die Talente und Zaubersprüche automatisch gesteigert werden. Dieser Bug hat zu folge, dass man eine negative Anzahl von übrigen Steigerungen hat. Beim nächsten Stufenanstieg, bei welchem die neue Anzahl der Steigerungen dazu gerechnet wird, kann man 1 oder 2 Steigerungspunkte weniger haben. Das sieht man allerdings nur, wenn man im Expertenmodus spielt. RE: Reverse Engineering der NLT - Obi-Wahn - 01.10.2011 Oha, es geht mal wieder weiter. RE: Reverse Engineering der NLT - HenneNWH - 03.10.2011 Es hat nie aufgehört weiterzugehen, aber ich hielt es vorm Studienbeginn sinnvoll ein kleines Resümee des letzten halben Jahres zu ziehen und den weiteren Entwicklungsverlauf bekanntzugeben. Sicherlich können nur Wenige mit den Commit-Messages aus dem Repository etwas anfangen, und ehrlich gesagt sind sie für Spieler nicht sonderlich interessant. Als kleiner Vorgeschmack auf Kommendes: Die nächsten Funktionen die ich ersetzte sind die Dialoge. Ab diesem Punkt werden Story-relevante Funktionen ersetzt (Reisebegegnungen, NPCs, spezielle Gebäude, evtl sogar Dungeons). Das geht meistens sehr schnell. Wenn ich ein Segment (mehrere Funktionen) fertig hab, werde ich natürlich meine Erkentnisse hier zum Besten geben. Falls jemand eine Frage zu einem bestimmten Detail hat kann ich auch gern mal einen Blick auf den Code werfen und in etwas Menschenverständliches übersetzen. RE: Reverse Engineering der NLT - Obi-Wahn - 03.10.2011 (03.10.2011, 18:41)HenneNWH schrieb: Sicherlich können nur Wenige mit den Commit-Messages aus dem Repository etwas anfangen, Na, mit etwas Fantasie (sich bitte einen Regenbogen denken) kann man sich schon vorstellen, was ungefähr passiert ist. Ich finde es einfach nur großartig, dass du weiter dran bleibst und das Ganze nicht versanden lässt. Einen regelmäßigen Besucher und Aus-Checker hast du mit Sicherheit. RE: Reverse Engineering der NLT - HenneNWH - 06.10.2011 Sehr gut! Es freut mich zu hören, dass Du die aktuellste Version benutzt. (Und dass Du bis jetzt auch noch keinen Bug gepostet hast spricht für die Qualität dieser Arbeitsmethode ) Heute hab ich den Ecliptifactus ersetzt und den Grammatik-Bug behoben. Die Funktion fürs Gegenstände entfernen/wegwerfen und das Immanstadion und der Müller in Thorwal waren auch noch in meinem Wirkungsfeld. Am Wochenende werd ich allerdings nichts machen können, da ich unterwegs bin. RE: Reverse Engineering der NLT - Obi-Wahn - 06.10.2011 Naja, ich spiele nicht richtig. Meistens starte ich nur und lauf nen bisschen in Thorwal rum. Wenn du mir Tipps/Anweisungen gibst, kann ich aber gezielt Funktionen usw testen und gucken, ob die funktionieren. Was hast du denn mit dem Immanstadion usw. gemacht? RE: Reverse Engineering der NLT - HenneNWH - 06.10.2011 Jedes spezielle Gebäude hat eine eigene Funktion, welche ich z.T. auch schon ersetzen konnte. Beim Müller z.B. Kommt eine ja/nein Frage ob man den Müller besuchen will. Antwortet man mit Ja, wird der Text angezeigt, dass man etwas zu mahlen hätte mitbringen sollen und eine Variable im Spielstand wird gesetzt. Geht man wieder zum Müller, so ist dieser nun genervt. In der Botschaft des Mittelreiches wird ab TSA 17 Hal ein andrer Text angezeigt. Dort ist ab diesem Zeitpunkt die Tür auf geheiß des Hetmans vernagelt. Weiß jemand was um diese Zeit in Aventurien los war? Der Swafnir-Tempel war auch als ein spezielle Gebäude gedacht, er ist aber durch einen normale Tempel ersetzt worden. RE: Reverse Engineering der NLT - Obi-Wahn - 06.10.2011 Da war viel los, ... aber keine Ahnung was genau. http://www.wiki-aventurica.de/wiki/Chronik:1010 RE: Reverse Engineering der NLT - Zurgrimm - 06.10.2011 (06.10.2011, 17:46)HenneNWH schrieb: In der Botschaft des Mittelreiches wird ab TSA 17 Hal ein andrer Text angezeigt.Keine Ahnung, die Zeittafel des Jahres bei der Wiki-Aventuica enthält kein Ereignis, das sich dafür aufdrängen würde: http://www.wiki-aventurica.de/wiki/Chronik:1010 Aber es ist jedenfalls interessant, daß das eingebaut wurde. Wer läuft schon gegen Ende des Spiels nochmal in dieses (spieltechnisch) unwichtige Gebäude? Das hätte ich wohl nie herausgefunden. EDIT: Zu spät... RE: Reverse Engineering der NLT - Alter Ugdalf - 06.10.2011 Diplomatische Probleme infolge des Bruchs des Garether Vertrags? (Die Thorwaler besetzen im Hesinde Salzerhaven) RE: Reverse Engineering der NLT - HenneNWH - 07.10.2011 (06.10.2011, 18:21)Alter Ugdalf schrieb: Diplomatische Probleme infolge des Bruchs des Garether Vertrags? (Die Thorwaler besetzen im Hesinde Salzerhaven) Es scheint so, als wäre genau das damit gemeint. (06.10.2011, 18:05)Zurgrimm schrieb: Aber es ist jedenfalls interessant, daß das eingebaut wurde. Wer läuft schon gegen Ende des Spiels nochmal in dieses (spieltechnisch) unwichtige Gebäude? Das hätte ich wohl nie herausgefunden. Das sind die kleinen unentdeckten Gimmiks der Programmierer. Hier noch ein paar vielleicht unbekannte Infos zu den Zaubersprüchen: Grosse Gier: Der Gegner verliert permanent 2 AT und 2 PA Punkte. Der Spruch kann mehrmals angewendet werden. Er funktioniert nicht bei Skeletten FlimFlam/Dunkelheit: Dauert Level des Zauberers + 3 Stunden |