Themabewertung:
  • 5 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Reverse Engineering der NLT
(09.09.2015, 07:41)Borbaradwurm schrieb: Das ist das Easter Egg in der Feste, das nur gesehen werden kann wenn ein Zwerg der Partyanführer ist.
In der Feste (zu Riva, Zwergenbinge oder welcher?) gibt es ein Easter Egg? Schon im Original oder nur in Eurer reverse-engineerten Version?

Falls im Original, wieso ist das hier nirgends dokumentiert? Von irgendetwas, das man nur mit einem Zwergen als Anführer sehen kann, lese ich, glaube ich, hier zum ersten Mal. Ist das eine neue Erkenntnis aus dem Reverse Engineering oder ist das schon länger bekannt (und nur an mir vorbeigegangen)?
"Haut die Säbel auffe Schnäbel."
Ich wusste davon auch noch nichts. (Hab' mich nur nicht getraut, zu fragen.) :pfeif:
(09.09.2015, 12:26)Zurgrimm schrieb: In der Feste (zu Riva, Zwergenbinge oder welcher?) gibt es ein Easter Egg? Schon im Original oder nur in Eurer reverse-engineerten Version?

Falls im Original, wieso ist das hier nirgends dokumentiert? Von irgendetwas, das man nur mit einem Zwergen als Anführer sehen kann, lese ich, glaube ich, hier zum ersten Mal. Ist das eine neue Erkenntnis aus dem Reverse Engineering oder ist das schon länger bekannt (und nur an mir vorbeigegangen)?
FE_PINUP.PIX ist die Textur des Traci-Lords-Ostereis in der Feste zu Riva (das Prefix "FE_" steht bei den Dateinamen für die Feste und die Farbpalette ist FESTE01.PAL). Das es dieses Osterei im Original gibt war bekannt. Das scheint hier im Forum aber tatsächlich noch nicht erwähnt worden zu sein. Durchsucht man das Netz nach Traci Lords Schatten über Riva Crystals DSA Foren kommt man zum Die-Nordlantrilogie-Thread des Larian Forums, wo sich Crystal und Pergor darüber unterhalten. Dort heisst es das Osterei wäre in einem Schrank ohne genauer darüber einzugehen wo der sich befindet. Mir wurde früher immer gesagt man müsste einen Zwerg als Anführer haben um es sehen zu können. Das Wissen habe ich allerdings auch nur aus zweiter Hand, da ich mir selbst nie die Mühe gemacht habe nach diesem Osterei zu suchen.
(02.08.2015, 20:56)tommy schrieb: @Henne
erstmal ein großes lob von mir, wie du die Entwicklung von Brighteyes in letzter Zeit vorangetrieben hast. Ich habe im moment leider nicht mehr so viel Zeit um wirklich aktiv mitzuhelfen. Durch die Arbeit bin ich im Moment gut ausgelastet und hab da leider wenig Zeit für anderes...
Ich habe jetzt schon wieder eine Weile nicht reingeschaut, in dieses Forum. Das ist nicht das erste Mal, dass so eine lange Zeit vergeht, bis ich mal wieder reinschaue (und Dinge poste). Aber richtig los, werdet ihr mich nicht. :D

Ihr arbeitet fleißig an der Weiterentwicklung von BrightEyes, wie ich oben las. Da ich auch über einige Programmierkenntnisse verfüge, jedenfalls was die Grundlagen betrifft (Schleifen, Bedingungen, Funktionen, etc.), möchte ich mich gerne an dem Projekt beteiligen, wenn ich kann.

Zwar ist mir klar, dass ein langfristiges Mitwirken gewünscht ist, möchte mein Engagement aber ersteinmal auf die kommenden 14 Tage beschränken, in denen ich Urlaub (und somit Zeit) habe. Ich habe nämlich seit einiger Zeit einen Job und der lastet mich aus, wenn ich nicht gerade Urlaub habe. Das heißt aber nicht, dass ich nebenbei absolut gar nichts machen kann. Aber das muss ich noch sehen.

Die Frage, die ich habe, ist jetzt, was kann ich konkret für das Projekt tun? Wo kann/soll ich ansetzen? Den Code checke ich jetzt aus. Und ich denke, der erste Schritt wäre, dass ich den Code studiere, um zu sehen, wie alles funktioniert. Seht ihr das auch so? (Oder meint ihr gar, dass man zu "tiefes" Wissen benötigt, um mitmachen zu können, sodass ihr mir abraten würdet?)

Schreibt mir mal eure Meinung, vielleicht mit einem Hinweis, wie ich anfangen soll/kann. Das könnt ihr auch per PM tun (wenn es in diesem Thread nicht gern gesehen ist).
"Save early and save often!" - Speichere oft und speichere früh! - Ist eine alte Zockerweisheit.
Ich wollte z.B. als nächstes überlegen, wie man die Ausgaben (also Sound/Grafik) auf SDL umlegt. Du könntest im Code alle Stellen suchen, bei denen etwas auf die Hardware ausgeben wird (also Zugriffe auf CD-ROM und VGA) und diese loggen. Ich würde die neuen Codestücke per Präprozessor abschaltbar machen. Aber Henne hat sicher ganz andere Pläne und Prioritäten.
@wiese.hano:
Vielen Dank für die angebotene Unterstützung
Im Moment sind folgende Aufgaben frei:
  • Lokale Variablen: In vielen Funktionen haben die lokalen Variablen Namen wie z.B. "l_si","l_di" oder "l4".
    Hier wäre es hilfreich, wenn Du a) einen passenden Namen für die Variable findest, b) sie in der ganzen Funktion umbenennst und c) mir den Patch zukommen lässt (ein Patch pro Funktion).
  • Globale Variablen: Auf ganz viele globale Variablen wird mit z.B. ds_readb(0xdead) zugegriffen. Diesen Hex-Werten sind auch sinnvolle Namen zu geben und a) ein Eintrag in symbols.h zu machen, b) ./tools/add2sym.h laufen lassen und c) mir den Patch zukommen lassen (ein Patch pro Zeile in symbols.h)
  • Doxygen: Es soll Doxygen für die automatische Dokumentation benutzt werden und viele Funktionen haben noch keine Beschreibung oder einen in einem "nicht-Doxygen"-Stil.
    a) Beschreibung der Funktion, Parameter und Rückgabewert (falls vorhanden) im Doxygen-Stil schreiben und b) mir den Patch zukommen lassen (ein Patch pro Funktion).
  • Kommentare: Alles, was nicht selbsterklärend ist kann mit nützlichen :) Kommentaren versehen werden. (Ein Patch pro Funktion).
  • Fehlersuche: Beim gedanklichen Durchspielen von Codeteilen kann man auf einen der vielen Fehler in Schick stoßen. Endlosschleifen sind unter bestimmten Bedingungen sehr Häufig in SCHICK anzutreffen. a) Fehler und Trigger melden b) Fehler beheben.

Die Aufgaben sind nach Schwierigkeit/Aufwand geordnet. Die Patches würde ich am Liebste über Github mergen.

Viele Grüße,
Henne

P.S.: Es gibt im Moment noch den Speicherbug bei welchem ich im Moment auch noch keine Lösung habe. :wall:
Der ist sogar dringend.
Um diesen Aufgaben nachzugehen, muss ich keine Quelltexte kompilieren, richtig?

Unabhängig davon, habe ich erst versucht, das original DOSBox-Projekt zu kompilieren (mit VC2013). Das hat nach einigen Problemen dann auch funktioniert. Dann habe ich versucht, BrightEyes zu kompilieren. Das funktioniert par tout nicht.

Bei der DOSBox-Kompilier-Aktion bin ich nach dieser Anleitung vorgegangen: Anleitung

Kann ich diese prinzipiell auch für die BE-Kompilier-Aktion nutzen? Oder muss ich da weitere Dinge beachten?

Ich bekomme u.a. die folgenden Fehler:
Code:
Fehler    3    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl custom_calln(unsigned short)" (?custom_calln@@YAHG@Z)" in Funktion ""int __cdecl CPU_Core_Normal_Run(void)" (?CPU_Core_Normal_Run@@YAHXZ)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\core_normal.obj    dosbox
Fehler    4    error LNK2001: Nicht aufgelöstes externes Symbol ""int __cdecl custom_calln(unsigned short)" (?custom_calln@@YAHG@Z)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\core_prefetch.obj    dosbox
Fehler    5    error LNK2001: Nicht aufgelöstes externes Symbol ""int __cdecl custom_calln(unsigned short)" (?custom_calln@@YAHG@Z)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\core_simple.obj    dosbox
Fehler    6    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl custom_callf(unsigned int,unsigned int)" (?custom_callf@@YAHII@Z)" in Funktion ""void __cdecl CPU_CALL(bool,unsigned int,unsigned int,unsigned int)" (?CPU_CALL@@YAX_NIII@Z)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\cpu.obj    dosbox
Fehler    7    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl custom_init(class Section *)" (?custom_init@@YAXPAVSection@@@Z)" in Funktion ""void __cdecl DOSBOX_Init(void)" (?DOSBOX_Init@@YAXXZ)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\dosbox.obj    dosbox
Fehler    8    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl custom_init_prog(char *,unsigned short,unsigned short,unsigned short)" (?custom_init_prog@@YAXPADGGG@Z)" in Funktion ""bool __cdecl DOS_Execute(char *,unsigned long,unsigned char)" (?DOS_Execute@@YA_NPADKE@Z)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\dos_execute.obj    dosbox
Fehler    9    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl custom_exit_prog(unsigned char)" (?custom_exit_prog@@YAXE@Z)" in Funktion ""void __cdecl DOS_Terminate(unsigned short,bool,unsigned char)" (?DOS_Terminate@@YAXG_NE@Z)".    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\dos_execute.obj    dosbox
Fehler    10    error LNK1120: 5 nicht aufgelöste Externe    C:\Andreas\Programmierung\Projekte\Bright-Eyes\visualc_net\Release\dosbox.exe    dosbox

(Die beiden Warnungen, die aufgetreten sind, sind hier jetzt nicht mit aufgeführt.)
"Save early and save often!" - Speichere oft und speichere früh! - Ist eine alte Zockerweisheit.
Ich glaube du hast den die dosbox.vcproj aus dem Ordner "visualc_net" genommen. Probier mal die aus "visualc_2008".
(26.09.2015, 13:59)wiese.hano schrieb: Um diesen Aufgaben nachzugehen, muss ich keine Quelltexte kompilieren, richtig?
Notwendig ist es nicht, aber manchmal ist es sinnvoll schnell ein paar Debugmeldungen einzufügen,
um die Werte in den Variablen auszulesen.

Hast du schon "visualc_2008" probiert?
Jup. Mit "visualc_2008" funktioniert es.
"Save early and save often!" - Speichere oft und speichere früh! - Ist eine alte Zockerweisheit.
Ein neues Release steht an:

Ersetzte Funktionen (Segmente sind komplett identisch)
  • seg051: Wildnisscamp
  • seg059: Taverne und einige Funktionen für Seereise-Events
  • seg060: Tavernenunterhaltung (Reden)
  • seg116: Reisebegegnungen 8 / 10
  • seg117: Reisebegegnungen 9 / 10 + Jagdfunktionen

Ersetzte Funktionen
  • Reisebegegnungen: Kräuter- und Jagdplätze, Furten, Hütten, Fähren
  • Dialoge: Sämtliche Informanten, Alte Frau, Suche nach der Ruine, Eremit
  • Sonstiges: Endkampf-Intro, Markt

Bugfixes:
  • Verlust von Helden beim Speichern behoben.

Original-Bugfixes:
  • Furt: Alle misslungenen Proben (<= 0) können negative Konsequenzen haben, nicht nur die mit Ergebnis 0
  • Jagdplatz: Unter Umständen (kein Held an erster und zweiter Position) konnte keine Jagd durchgeführt werden, da angeblich alle Versuche für Jagd aufgebraucht waren.

Dokumentation: Keine

TODO-Liste:
  • Location: Hafen
  • Location: Besondere Gebäude: Thorwal
  • Dungeon: Spinnenhöhle
  • mehr Dungeon-Handler nachbauen
  • Animationssequenzen
  • Städtefunktionen
  • Reiseevents
  • Check: Skripte zum Vergleichen der Binärdateien (erfordert eigenen Borland C++ 3.1 Compiler)

Statistik:
  • Es sind 916 von 1236 Funktionen nachgebaut (74,11%).
  • Davon sind 881 identisch mit dem Originalcode.
  • Nach Byte-Metrik sind schon 90,95% fertig.

Viele Spaß beim Testen,
HenneNWH
Hui, da wurde ja viel ersetzt und damit gibt es viel zu testen. :)

Der Build lief gerade durch, der Download kommt allerdings erst morgen. Ich bin gerade zu müde/kaputt um das ganze ordentlich zu machen. ;) Außerdem kann ich hier auf dem Laptop nur die Version mit VSE-2013 bauen. VSE 2008 habe ich hier nicht (wieder) installiert. :(
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Neue Version vom 13.10.2015!
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Bitte mehr testen! :D
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
(23.09.2015, 20:14)HenneNWH schrieb: P.S.: Es gibt im Moment noch den Speicherbug bei welchem ich im Moment auch noch keine Lösung habe. :wall:
Der ist sogar dringend.
(04.10.2015, 19:45)HenneNWH schrieb: Bugfixes:
  • Verlust von Helden beim Speichern behoben.
Ich gratuliere! Wie hast du den Bug behoben?
Ich wollte mich ja auch mal am Projekt beteiligen (und will es immer noch), aber weil ich nicht so recht wusste, wo ich ansetzen soll, ist es nicht dazu gekommen. (Dein Post hat mir leider nicht sehr geholfen.)
"Save early and save often!" - Speichere oft und speichere früh! - Ist eine alte Zockerweisheit.
:xmas:-Release:

In der neuen Bright-Eyes Version sind die Städte und jetzt auch alle
Loacations (Tempel, Taverne, Hafen, Camp, etc.) vollständig ersetzt worden. :jippie:

Ein ärgerlicher Fehler in meiner Statistik hatte eine etwas zu hohe Byte-Metrik (> 90%)zur Folge.
Nach der Korrektur ist er sehr nahe an dem Wert für den Prozentsatz der ersetzten Funktionen,
was wenigstens Konsistent wirkt. :ok:

Als nächstes werde ich an den Reiseevents arbeiten und als letztes die Dungeons in Angriff nehmen.

Wenn das vollbracht ist gilt Phase 1 als abgeschlossen. :jippie:

Ersetzte Funktionen (Segmente sind komplett identisch)
  • seg063: Hafen
  • seg065: Spezialanimationen: Markt, Hyggelik überreicht Grimring, Zeit abgelaufen und Outro
  • seg066: Stadtlogik
  • seg068: Spezialgebäude: Thorwal (1/2)
  • seg069: Spezialgebäude: Thorwal (1/2)

Bugfixes:
  • Absturz beim Gespräch mit Hyggelik
  • Überschreiben eines Wertes an einer falschen Adresse (Beim Dialog mit dem Eremit)

Original-Bugfixes:
  • Die 20 Dukaten beim Betreten des alten Ugdalf gibt es nur noch genau einmal.

Dokumentation: Keine

TODO-Liste:
  • Reiseevents
  • Dungeon: Spinnenhöhle
  • mehr Dungeon-Handler nachbauen
  • Check: Skripte zum Vergleichen der Binärdateien (erfordert eigenen Borland C++ 3.1 Compiler)

Statistik:
  • Es sind 954 von 1236 Funktionen nachgebaut (77,18%).
  • Davon sind 922 identisch mit dem Originalcode.
  • Nach Byte-Metrik sind schon 76,83% (korrigiert) fertig.

Viele Spaß beim Testen,
HenneNWH
Super! :) Ein schöner Jahresabschluss! :D

Leider kann ich im Moment kein neues Windows-Paket bauen, da ich im Moment nur mit dem Laptop unterwegs bin und ich hier kein VisualStudio2008 mehr installiert habe, welches eine aktive Lizenz hat. ;)
Es dauert also vermutlich noch bis in neue Jahr. :( ;)

Edit: Ich habe einen Weg gefunden, die Version zu aktivieren. Erschreckend, wie trivial das ist.
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Neue Version vom 27.12.2015!

Edit: Das Geld beim Betreten des alten Ugdalf gibt es jetzt wirklich nur einmal. Allerdings erst beim Betreten des Dungeons. Müsste es das Geld nicht schon nach dem Gespräch mit dem Zwerg geben?
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)
Super! :thx:

(27.12.2015, 18:44)Obi-Wahn schrieb: Neue Version vom 27.12.2015!

(27.12.2015, 18:44)Obi-Wahn schrieb: Edit: Das Geld beim Betreten des alten Ugdalf gibt es jetzt wirklich nur einmal. Allerdings erst beim Betreten des Dungeons. Müsste es das Geld nicht schon nach dem Gespräch mit dem Zwerg geben?

Das wäre zwar logisch, wurde aber nicht so programmiert.
Seltsam! :think:
Es gibt neue Commits im git-Repo. Lohnt es sich schon eine neue Version zu bauen?
--------
Warnung! Geschichte kann zu Einsichten führen und verursacht Bewusstsein!
Avatar by: Keven Law (CC BY-SA 2.0)




Benutzer, die gerade dieses Thema anschauen: 9 Gast/Gäste