Crystals-DSA-Foren

Normale Version: Reverse Engineering der NLT
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Läuft alles wie geschmiert. :)
(10.07.2011, 19:02)HenneNWH schrieb: [ -> ]Es gibt noch ein paar Kleinigkeiten, welche ich dir nicht vorenthalten möchte:
  • Verzeichnislayout
    Pro Spiel sollte ein Verzeichnis in src/custom erstellt werden, in deinem Fall "schweif".
    In diesem sollten alle Dateien liegen, die nur in Verbindung mit DOSBox sinnvoll sind und
    nach erfolgter Migration weggeworfen werden. In diesem Verzeichnis solltest Du dann ein
    Verzeichnis mit dem Namen "rewrite_c100de" anlegen, in welches dann der Spielecode deiner
    Version kommen sollte.
    Das ist kein Muss, aber meiner Meinung nach die sinnvollste und ordentlichste Variante.
Schon passiert :D

(10.07.2011, 19:02)HenneNWH schrieb: [ -> ]
  • Dateinamen
    Mit "MS VisualC++ 2008" bin ich auf ein Problem gestoßen.
    Dieser Compiler legt alle Objektdateien in ein Verzeichnis.
    Existiert mehrmals der gleiche Dateiname in verschiedenen Verzeichnissen,
    so werden beim kompilieren nur die Objektdateien immer überschrieben und es gibt einen Linker-Fehler.
    Desswegen sollten die Dateinamen mit einem eindeutigen Prefix versehen werden.
    In dem Fall schlage ich vor: z.B "c100de_seg001.cpp" für den Code für seg001
  • Namespaces
    Um bei soviel ähnlichem Code nicht in Schwierigkeiten zu kommen ist es sinnvoll soviel es geht in
    Namespaces zu packen, damit wir keine Namenskonflikte bekommen.

  • Ansonsten: Happy H*cking!
    Ich bin schon mordsmäßig gespannt. :jippie:

    Werd ich machen. Happy Hocken. Vor dem Rechner. :ok:
    Ich schau auch mal wieder rein und lass nen Gruß hier... Klingt alles recht nett... ^^
    (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?
    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
    Moin!

    Leider stürzt das Generierungsprogramm reproduzierbar ab:
    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.
    Ich sehe da auch ein "/" zuviel. Normalerweise macht das fopen(...) nichts aus, aber das wäre auch eine mögliche Fehlerquelle.
    ja, die kleinschreibung war schuld. bei mir ist leider alles kleingeschrieben... ;)
    (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.
    Oha, es geht mal wieder weiter. :)
    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.
    (03.10.2011, 18:41)HenneNWH schrieb: [ -> ]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. ;)

    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. :D
    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.
    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?
    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.
    Da war viel los, ... aber keine Ahnung was genau. ;) http://www.wiki-aventurica.de/wiki/Chronik:1010
    (06.10.2011, 17:46)HenneNWH schrieb: [ -> ]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?
    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. :up: 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... :shy:
    Diplomatische Probleme infolge des Bruchs des Garether Vertrags? (Die Thorwaler besetzen im Hesinde Salzerhaven)
    (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. :up: 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. :bigsmile:


    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