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 - Hanbastan - 24.05.2011 Pascal, C, C++... hehe... in sowas habe ich noch Programmieren gelernt... achja ich habe mir den Vortrag jetzt auch mal angesehen - Henne, du hättest Lehrer werden sollen ... könntest direkt bei uns anfangen RE: Reverse Engineering der NLT - Luigi - 24.05.2011 (24.05.2011, 21:04)Rabenaas schrieb: ... Danke für deine Ausführungen Du hast schon recht mit Modula-2 und Oberon. Ich glaub ich such mir jetzt noch mein Turbo-Pascal 7.10, Pascal for Windows?, Delphi! und schau, ob sie sich noch installieren lassen. Aber zum Thread: Super-Ding was ihr hier durchzieht! Ich war ja bei DOSBOX mit "Schatten über Riva" mit dem Programm DOSIDLE schon hellauf begeistert. Geschweige denn, was ihr hier für einen radikalen Ansatz habt. RE: Reverse Engineering der NLT - Sannah - 25.05.2011 Oy, hier passiert ja glatt noch mal was... Was passiert eigentlich mit den Lizenzen, nachdem JoWooD jetzt die Hufe hoch gemacht hat? Wäre doch mal ne Anfrage wert ob man die für nen Appel und nen Ei im Falle der NLT bekommen könnte... Hab gerade ne Menge mit UFO:Aftershock in Sachen Modding zu tun, ebenfalls noch ein bissi im Wizardry7 und für Biing!1 sollte ich auch noch ein paar wenige Grafiken pixeln, damit das Projekt auch abgeschlossen ist. Freue mich jedenfalls auch hier über Ergebnisse! RE: Reverse Engineering der NLT - thEClaw - 25.05.2011 Gute Frage, das mit den Lizenzen. Haben die Jowood komplett gehört? Wen müsste man fragen, wenn man sie kaufen wollte? RE: Reverse Engineering der NLT - Rabenaas - 25.05.2011 (24.05.2011, 23:14)Luigi schrieb: Ich glaub ich such mir jetzt noch mein Turbo-Pascal 7.10, Pascal for Windows?, Delphi! und schau, ob sie sich noch installieren lassen.Nimm lieber das hier oder das hier. (25.05.2011, 06:53)thEClaw schrieb: Gute Frage, das mit den Lizenzen. Haben die Jowood komplett gehört? Wen müsste man fragen, wenn man sie kaufen wollte?Ich vermute mal, die liegen weiterhin bei Jochen Hamma, und JoWood hatte sie nur lizenziert. RE: Reverse Engineering der NLT - HenneNWH - 25.05.2011 (24.05.2011, 21:44)Hanbastan schrieb: ...Henne, du hättest Lehrer werden sollen ... könntest direkt bei uns anfangen Wo oder wer ist uns Bist Du Lehrer? (25.05.2011, 06:13)Sannah schrieb: Hab gerade ne Menge mit UFO:Aftershock in Sachen Modding zu tun, ebenfalls noch ein bissi im Wizardry7 und für Biing!1 sollte ich auch noch ein paar wenige Grafiken pixeln, damit das Projekt auch abgeschlossen ist. Was genau machst Du denn beim modden? Gibt es da eine Community oder machst Du das "nur" für dich? Kennt von euch jemand OpenDune. Die Entwickler haben einen Decompiler benutzt, der wärend des Spielens Emulator-Quellcode erzeugt. Dieser ist dann compilierbar und wird mit einer selbstgeschriebenen Emulationsbibliothek (libemu) betrieben. Jetzt bauen die Devs jede einzelne Funktion von Emu-C in richtiges C um. Die automatische Codeerzeugung ist schon sehr toll, da sich damit weniger Fehler einschleichen können. Leider gibts den Decompiler (noch?) nicht zum Download. Und die Taktfrequenz kann auch nicht gedrosselt werden. 100% CPU-Last für Dune2 ist imho etwas viel, aber wenn der Code ohne Emu läuft werden die Devs sicher auch daran schrauben. Auf jeden Fall haben die auch schon ca 50 Bugs und Unschönheiten gefixt. RE: Reverse Engineering der NLT - thEClaw - 25.05.2011 Wow. Ich dachte, dass es wenigstens um das erste Dune-Spiel ginge. Aber das zweite? Wo doch danach unzählige Spiele erschienen, die in jeder Hinsicht besser waren? Nicht, dass Dune II schlecht gewesen wäre, aber in Sachen Komfort kann es meiner Meinung nach mit keinem anderen Spiel mithalten - jeder Nachfolger hat das Konzept genommen und deutlich erweitert. Ich habe kaum vier Missionen des Spieles geschafft, bevor mich das viele Geklicke, das nötig war, wahnsinnig gemacht hat. Aber naja, vermutlich spricht irgendwo auf diesem Planeten auch jemand* so abschätzig über meine Lieblingsspiele. *=Verkriech dich in irgendeinem Loch, bevor ich dich finde und dir die Fingernägel pink lackiere! RE: Reverse Engineering der NLT - Rabenaas - 25.05.2011 (25.05.2011, 12:02)thEClaw schrieb: jeder Nachfolger hat das Konzept genommen und deutlich erweitertDas haben die ersten ihrer Art so an sich. RE: Reverse Engineering der NLT - thEClaw - 25.05.2011 (25.05.2011, 12:07)Rabenaas schrieb:Natürlich. Aber im Kontext einer aufwändigen "Neuentwicklung" würde ich mich nicht unbedingt an diesem ersten Testlauf orientieren, sondern mir ein ausgereifteres Produkt vorknöpfen.(25.05.2011, 12:02)thEClaw schrieb: jeder Nachfolger hat das Konzept genommen und deutlich erweitertDas haben die ersten ihrer Art so an sich. Doofes Spiel. RE: Reverse Engineering der NLT - Rabenaas - 25.05.2011 No more Pong for you. RE: Reverse Engineering der NLT - thEClaw - 25.05.2011 (25.05.2011, 12:19)Rabenaas schrieb: No more Pong for you.Da liegst du aber grundfalsch! Habe mir sogar mal ein eigenes programmiert, habe also stets Zugriff! (habe den Netzcode leider nie perfektioniert) Pong ist auch nicht unbedingt ein Spielprinzip, dass man wieder und wieder aufgreifen, erweitern und verbessern kann. Insbesondere kann man es nicht kopieren und mit 'ner anderen Story versorgen um es als völlig neues Spiel zu verkaufen - mit einem Dune II-Nachfolger ginge das problemlos. Damit ist also der Beweis erbracht, dass Dune II und Pong nicht vergleichbar sind . Falls du das gar nicht aussagen wolltest und ich dich missverstanden habe...auch egal. RE: Reverse Engineering der NLT - Hendrik - 25.05.2011 Hier ist ja richtig was los! Darum jetzt ein langes Multiquote: (24.05.2011, 15:54)HenneNWH schrieb:Ja, das ist die Version von der IDA-Datei, die ich vor längerer Zeit mal erstellt habe. Ich habe aber gar nicht die Diskettenversion. Bist du sicher, dass diese "O1.00" nicht die CD-Version ist? Die Sprungpunkte haben jedenfalls bisher mit meiner CD-Version (vermutlich aus Goldgames 1) funktioniert.(23.05.2011, 14:01)Hendrik schrieb: Im Übrigen habe ich letztes WE, inspiriert durch den Vortrag, angefangen, nach dem gleichen Prinzip Sternenschweif aufzurollen. (24.05.2011, 15:54)HenneNWH schrieb: Dankesehr, da ich dazu schon ein fachlich korrektes Paper geschrieben hatte, wollte ich beim Vortrag,Kann man dieses Paper irgendwo lesen, oder ist das noch nicht veröffentlicht? (24.05.2011, 19:29)HenneNWH schrieb: Der Compiler der ersten beiden Teile ist Borland C++ 3.1, welcher C und C++ übersetzen kann. Werde ich das? Ich weiß ehrlich gesagt noch gar nicht, wie man am Assemblercode C und C++ auseinanderhalten kann, geschweige denn, wie ich den Assember-Code von IDA in C++ übersetzen soll. Ich glaube, ich übersetze das erst einmal in C und schaue dann, wo ich Objekte verwenden kann. (24.05.2011, 21:04)Rabenaas schrieb:(24.05.2011, 19:40)Luigi schrieb: Erzähl doch mal Raabenaas! So vor 20 Jahren...Ähm, einen Schwank aus meiner Jugend? Damals war alles - anders. Und ich war - kleiner. Ach ja, die Mauer war gerade gefallen und im Fernsehen gab's Alles Nichts Oder?! und im Radio spielten Roxette. Mein erster Kontakt mit C war "C--", eine obskure Mischung aus C und Assembler. Davor habe ich, wie die meisten in den 90ern, mit Basic und "Turbo-Kalle" angefangen. (25.05.2011, 09:11)HenneNWH schrieb: Kennt von euch jemand OpenDune. Hmm ... das wäre ja so etwas wie erwähntes "C--". C-Code mit eingestreutem Assembler oder sehr kleinen Schritten. (25.05.2011, 12:02)thEClaw schrieb: Wow. Ich dachte, dass es wenigstens um das erste Dune-Spiel ginge. Aber das zweite? Wo doch danach unzählige Spiele erschienen, die in jeder Hinsicht besser waren? Nicht, dass Dune II schlecht gewesen wäre, aber in Sachen Komfort kann es meiner Meinung nach mit keinem anderen Spiel mithalten - jeder Nachfolger hat das Konzept genommen und deutlich erweitert. Ich habe kaum vier Missionen des Spieles geschafft, bevor mich das viele Geklicke, das nötig war, wahnsinnig gemacht hat. Deswegen spielt man das ja auch mit Tastatur + Maus. Aber ich gebe dir recht, Dune2 möchte ich im Original auch nicht mehr spielen. Und Dune2000 sieht zu sehr nach Command&Conquer* aus. Dune 1 hingegen verbreitet immer noch eine großartige Athmosphäre, was zum einen an den wunderschönen Grafiken liegt (diese Farbverläufe beim Sonnenauf- und Untergang!) und zum anderen an der Musik von Stephane Picq. (25.05.2011, 12:19)Rabenaas schrieb: No more Pong for you. Dann halt Plasma Pong. *Zum Thema "Command&Conquer" noch ein Schwank aus den 90ern. Eines Tages meinte ein Mitschüler zu mir, er hätte im Jugendtreff auf einem Rechner ein neues Spiel gefunden, MadTV war es glaub ich. Er hatte im Stammverzeichnis eine Datei namens "mega.exe" gefunden und die gestartet. Danach lag er mir in den Ohren, ich solle doch auf meinem Rechner auch mal danach suchen. Ich: "Nein, Junge, den Rechner habe ich selber aufgesetzt, wie soll da so'n Spiel draufkommen?" Er: "Probiers doch einfach mal! Mega.exe!" Ich: "Nein, wozu denn, ich weiß doch, das da nicht ..." Er: "Mega Punkt EXE. Einfach unter C:!" Ich: "Na gut. 'dir c:'. Siehste, keine Mega.exe." Er: "Eh, was ist das denn? command.com? Das ist bestimmt Command and Comquer!" RE: Reverse Engineering der NLT - Sannah - 25.05.2011 (25.05.2011, 09:11)HenneNWH schrieb: Was genau machst Du denn beim modden? Gibt es da eine Community oder machst Du das "nur" für dich? Och im Prinzip alles gemischt, UFO:AS mach ich für mich aktuell und ggf. iwann wenn ichs veröffentliche nen bissi für Community (vor allem die fehlerhafte deutsche Übersetzung, die ich aber noch net vollständig durch habe), größtenteils scripten und halt die Files über 10 Instanzen entpacken, damit man sie auch verarbeiten kann. Hab vor auch mal ein paar Polymodelle auszutauschen, brauche aber dazu erstmal nen gescheites Proggy um mir ein paar gescheite Modelle bauen zu können und mitunter halt auch die Kompatiblität beim Exportieren gewahrt zu haben. Sollte ich letzteres in Sachen Poly was weiter bringen werde ich mir denke ich auch mal DukeNukem 3D vornehmen, dazu gibts nen netten Polygon Mod, leider ist er mir noch zu unausführlich und hässlich, da könnte man noch ne Menge dran feilen mit ein paar gescheiten Highpoly-Modellen. Für Wizardry7 hab ich ne Menge früher mit Madgod zusammengearbeitet, der hat da nen nettes Proggy zur Contentveränderung für 3 Teile von Wizardry gebastelt, netter Kerl, hab ihn auch mal gefragt ob er interesse am "Dark Eye" hätte, hats aber verneint, schade eigentlich, weil echt nen fähiger Kerl... leider ist in W7 ne Menge hardcode dabei, was die Datenbanken verdammt einschränkt. Größtenteils hab ich hier neue Grafiken und Portraits gebaut... aber man könnte im Falle von Wizardry8 noch ne Menge mit Polys machen. Weil die Polymodelle dort echt zum fürchten sind. Für Biing! arbeite ich mit einem gewissen Dragonling zusammen und mache größtenteils neue Grafiken, wenn ich mal mehr Zeit habe vlt auch mal für Biing2 nen komplettes Makeover, weil der Grafikstil gegenüber dem ersten Teil schon enorme Abstriche hat. Mit Olaf Patzenhauer der das damals mitprogrammeirt habe stehe ich auch noch im Kontakt, nur leider hat er genug eigene Probleme als sich um sowas zu kümmern. €dit: Mir ist da noch Descent3 eingefallen, nur leider gibts da aktuell keine Intentionen mehr Seitens der Community um das Spiel mal ordentlich und kollektiv zu modden. Wäre dort dann beim Levelbau und Polymodelle für Raumgleiter eingestiegen, ist aber ne ziemlich zerstrittene Chauvinisten-Community. xD Was hier die NLT betrifft würde ich gerne auch mitwirken, hab aber nicht sonderlich viel Erfahrung mit dem Disassembling von DOS, wenn ihr da irgendwann durchgestiegen seid und mir das ganze vlt kurz erklärt bin ich jederzeit für Contenterweiterungen und Veränderungen zu haben... so es die Zeit halt erlaubt. RE: Reverse Engineering der NLT - Rabenaas - 25.05.2011 (25.05.2011, 16:17)Hendrik schrieb: Kann man dieses Paper irgendwo lesen, oder ist das noch nicht veröffentlicht?Da wo auch das Video liegt. (25.05.2011, 16:17)Hendrik schrieb: Werde ich das? Ich weiß ehrlich gesagt noch gar nicht, wie man am Assemblercode C und C++ auseinanderhalten kannNaja, virtuelle Funktionen müssen dynamisch gelinkt sein, also wird die Adresse für den Call aus einem Array im Speicher geholt, anstatt eine feste Adresse anzuspringen. Throw/catch müssten auch ziemlich charakteristische Codeabschnitte hinterlassen. RE: Reverse Engineering der NLT - Hendrik - 26.05.2011 (25.05.2011, 17:36)Rabenaas schrieb:(25.05.2011, 16:17)Hendrik schrieb: Kann man dieses Paper irgendwo lesen, oder ist das noch nicht veröffentlicht?Da wo auch das Video liegt. Ja, so könnte man das machen. Das Disassemblieren wird dadurch natürlich nicht einfacher. Ich bin jedenfalls schon gespannt, ob ich das direkt in Klassen umsetzen kann oder doch erst mal ohne OOP übersetze. RE: Reverse Engineering der NLT - Obi-Wahn - 07.07.2011 Gibts hier eigentlich was Neues? Im Git-Repo seh ich regelmäßig Änderungen. RE: Reverse Engineering der NLT - HenneNWH - 08.07.2011 Es gibt (für mich) etwas bahnbrechendes: Ich habe herausgefunden wie man den Emulator aus rekonstruiertem Code wieder aufruft. Das bedeutet, dass ich weniger nachprogrammieren muss und die Entwicklung schneller vor sich geht. Mittlerweile ist fast der ganze Code von Gen V1.05de rekonstruiert. Sogar die MIDI Musik läuft. Die Hauptfunktionfunktion main() ist auch schon ersetzt. Außerdem habe ich schon angefangen ein paar hartcodierte Daten aus dem Datensegment der GEN.EXE in den neuen Quellcode zu übertragen. Dabei handelt es sich um die DSA3 Tabellen, Farbtabellen und alle möglichen globalen Variablen. Danach müssen Ein-/Ausgabe, Grafik und Sound aus der DOSBox entfernt werden und fertig ist das eigenständige Programm. Bevor ich das Programm von der DOSBox trenne, möchte ich es noch in die Lage versetzten mit anderen Versionen der DSAGEN.DAT umgehen zu können. Damit meine ich die deutsche Diskettenversion und die englische Variante. Ansonsten komme ich peux-í -peux dem Ziel nahe. Außerdem habe ich fast den Statusbildschirm fertig, damit der permanente LE-Schaden (Stichwort: "LE 1/1") rot eingefärbt werden kann. Dank der Nachfrage. RE: Reverse Engineering der NLT - Hendrik - 09.07.2011 Hallo HenneNWH, da ich ja angefangen habe, Sternenschweif mit deiner Methode ebenfalls Stück für Stück nachzubauen, würde ich gerne mit dir das weitere Vorgehen besprechen. Wollen wir den Code im gleichen Git-Repository weiterentwickeln (Bright-Eyes), oder hälst du es für sinnvoll, wenn ich dafür ein eigenes Repo aufmache? Wenn wir im gleichen Repo bleiben (was ich befürworten würde, da man einiges an Verwaltungscode beibehalten könnte, müssen wir den Code so schreiben, dass - je nach laufender .exe - die richtigen Handler aufgerufen werden. Du hattest in der custom.h bereits eine Klasse custom_prog dafür vorgesehen, die aber, soweit ich sehe, nicht benutzt wird. Wenn du nichts dagegen hast, würde ich die custom.h/custom.cpp so umschreiben, dass man mehrere Programme (also Instanzen von custom_prog) überwachen kann. Es würde dann die erste (letzte?) Instanz zum aktuellen Programm gewählt, für die die probe()-Funktion true zurückliefert. Wie stehst du zu diesem Plan? Ich würde dann, von solchen Änderungen im allgemeinen Code abgesehen, mit Sternenschweif weitermachen, während du dich weiter der Schicksalsklinge widmen könntest. RE: Reverse Engineering der NLT - Obi-Wahn - 09.07.2011 Das hört sich ja beides richtig gut an! Wnn ihr einen Dummen fürs Testen braucht, steh ich bereit. RE: Reverse Engineering der NLT - HenneNWH - 10.07.2011 (09.07.2011, 18:45)Hendrik schrieb: Wollen wir den Code im gleichen Git-Repository weiterentwickeln (Bright-Eyes), oder hälst du es für sinnvoll, wenn ich dafür ein eigenes Repo aufmache? Es wäre mir eine Freude, wenn du das machen würdest. Die "DesignIdee" hatte ich mir von den Linux-Kerneltreibern abgeschaut, aber in C++ mit Objekten funzt das doch etwas anders. Das selbe Repo zu benutzen ist eine sehr gute Idee, damit "DOSBox custom" sinnvoll genutzt und weiterentwickelt werden kann. Es gibt noch ein paar Kleinigkeiten, welche ich dir nicht vorenthalten möchte:
Ansonsten: Happy H*cking! Ich bin schon mordsmäßig gespannt. (09.07.2011, 20:42)Obi-Wahn schrieb: Das hört sich ja beides richtig gut an! Wnn ihr einen Dummen fürs Testen braucht, steh ich bereit. Du kannst dir gern jederzeit den Code aus dem Repo kompilieren. So hast du die besten Chancen etwas fehlerhaftes zu finden. Prinzipiell sollte es immer funktionieren. Achja, den passenden Thread finde ich jetzt gerade nicht, aber Schweif kann beim Import von Schick abstürzen. Der Grund ist, dass der Gegenstandszähler der Helden einen falschen Wert hat. Das wird in "BrightEyes" mittlerweile mit entsprechender Meldung korrigiert. |