![]() |
Reverse Engineering der NLT II - 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 II (/showthread.php?tid=5383) |
RE: Reverse Engineering der NLT II - HenneNWH - 19.06.2025 (18.06.2025, 10:48)siebenstreich schrieb:(17.06.2025, 12:34)HenneNWH schrieb: Beim BCC (DOS) gibt es einige Optimierungsstufen (-O1, -O2) welche nicht korrekten Code erzeugen. Es sieht ganz danach aus. Diese Funktion halte ich für ein Paradebeispiel, da sie sich sehr leicht formal beweisen lässt. Ein 32-bit Wert hat 4 Bytes v = (a,b,c,d). Der Wert der Funktion swap_u32(v) = (d,c,b,a), wenn alles richtig vom Compiler umgesetzt wurde. Der Clang hat das sogar noch bestätigt. Die in Gen gewählte Implementierung habe ich jetzt, optimiert mit (-O2), mit meiner neuen Implementierung verglichen. Beispiel: Code: v = 0x1'21'93 new = 0x93'21'01'00 old = 0x1'01'00 In der professionellen Anwendungsentwicklung benutzt man automatische Unit-Tests um solchen Fehlern auf die Schliche zu kommen. Die gibt's bei BrightEyes noch nicht werden von mir aber in Erwägung gezogen, wenn die Zeit dafür reif ist. Solche Warnungen wie: "Blos nicht die Optimierung einschalten." werden (manchmal zu Recht) immer noch in Programmiererkreisen geflüstert. Daher sind meine Anforderungen an korrekte, portable Programmierung berechtigt. Ich bin mir allerdings auch bewusst, dass 1992 das Entwickeln von Software sehr mühselig und frustrieren war und ziehe den Hut vor Guido und Jochen. Das gleiche gilt auch für die Entwickler von Compilern. Nach schlimmer als unter Windows etwas zu entwickeln war es unter DOS. Dieser mögliche Fehler tritt übrigens in GEN nicht auf, da die Optimierung ausgeschaltet ist und imho. diese Funktion gar nicht benutzt wird. Zum Schiffsreisebug: Es scheint so, dass das, was ich aus dem Assemblercode zurück entwickelt habe, mehrdeutig ist. Manchmal wird bei unterschiedlicher signedness vom BCC derselbe Code erzeugt, manchmal nicht. ![]() Im aktuellen Zustand von Schick in Bright-Eyes fällt es mir im Moment auch schwer etwas verlässliches zu sagen. Hab das aber im Hinterkopf. RE: Reverse Engineering der NLT II - Obi-Wahn - 19.06.2025 Die Bildvergößerung geht jetzt wieder unter Linux. RE: Reverse Engineering der NLT II - Obi-Wahn - 21.06.2025 (19.06.2025, 12:24)Obi-Wahn schrieb: Die Bildvergößerung geht jetzt wieder unter Linux.Und wieder nicht. Keine Ahnung, ob es vielleicht ein Fehler auf meiner Seite ist... RE: Reverse Engineering der NLT II - HenneNWH - 21.06.2025 Es sieht ganz danach aus. An diesen Codeteilen hab ich lange nichts mehr gemacht und halte das bisher theoretisch für stabil. Mit dem Clang und OpenMP hab ich auch einen kleinen Erfolg gehabt. Da sind händisch im Makefile_old die Variablen CC und CFLAGS auszukommen Tieren und bei den beiden Clang-Varianten die # am Anfang der Zeile zu entfernen. RE: Reverse Engineering der NLT II - HenneNWH - 21.06.2025 (21.06.2025, 10:47)Obi-Wahn schrieb:(19.06.2025, 12:24)Obi-Wahn schrieb: Die Bildvergößerung geht jetzt wieder unter Linux.Und wieder nicht. Keine Ahnung, ob es vielleicht ein Fehler auf meiner Seite ist... Hab gerade noch paar Tests dazu gemacht und konnte manchmal soetwas reproduzieren. Nach dem Resize habe ich jetzt ein Neuzeichnen des Fensterinhalts angestoßen. Probier mal ob es jetzt bei dir besser ist. P.S.: Unter Linux mit Clang ist die installation des Pakets libomp-dev notwendig. RE: Reverse Engineering der NLT II - Obi-Wahn - 22.06.2025 Ja. scheint zu funktionieren. Super! :-) RE: Reverse Engineering der NLT II - HenneNWH - 22.06.2025 Na Klasse. Hab gerade noch ein unentdecktes "Feature" mit den deutschsprachigen DSAGEN.DAT Files freigelegt. Das sieht man im Expertenmodus. ;-) Schönen Sonntag! RE: Reverse Engineering der NLT II - Alrik Alrikson - 23.06.2025 (22.06.2025, 14:55)HenneNWH schrieb: Na Klasse. Welches "Feature" wäre das denn? ![]() RE: Reverse Engineering der NLT II - HenneNWH - 23.06.2025 Erzähls uns, nachdem du es ausprobiert hast. RE: Reverse Engineering der NLT II - HenneNWH - 23.06.2025 Hab noch zwei weitere Features hinzugefügt, die nicht ganz so offensichtlich sind: * positive Attribute sind jetzt DSA3-Regelkonform: 8 * W6+7, ein minimaler Wert wird weggelassen * der Hintergrund von Zeichen bleibt erhalten (keine unfreiwilligen schwarzen Boxen) RE: Reverse Engineering der NLT II - Obi-Wahn - 26.06.2025 Mein Standard-Test des neuen Builds hat unter Windows einen potentiellen Fehler ergeben. Ich kann bei der Umwandlung der Talentsteigerungen nichts mehr eingeben. Siehe Screenshot. Eine andere Sache noch, die schon längst ansprechen wollte. Beim Build mit cmake gibt es einen Fehler bei der Benennung. Die Exe bekommt den folgenden Namen "ngen_cc.exe.exe" ein ".exe" zu viel. Kannst du das "kürzen"? RE: Reverse Engineering der NLT II - HenneNWH - 27.06.2025 Thx, das ist nur ein Darstellungsfehler. Die Eingabe funktioniert weiterhin, nur wird im Moment die Zahl nicht angezeigt. Ich bin noch in der Überarbeitung der modernen Grafikausgabe und bin noch nicht ganz am vorderen Ende des Bildschirms angekommen. ;-) Das periodische Rendern habe ich entfernt, da es seltsamerweise auf dem Raspi nicht funktioniert hat. ![]() Mit CMake unter Windows hatte ich bisher noch gar keinen Erfolg. Was hast du denn installiert und welche Variante benutzt du (NMake, MSYS, Mingw)? RE: Reverse Engineering der NLT II - Obi-Wahn - 27.06.2025 Ich habe MSYS installiert und dort mingw64. Für SDL2 habe ich einfach dieser Anleitung biz. Hinweisen gefolgt: https://gist.github.com/thales17/fb2e4cff60890a51d9dddd4c6e832ad2 MSYS erscheint mir als Laie als die "einfachste" Umgebung. RE: Reverse Engineering der NLT II - HenneNWH - 27.06.2025 Okay, Danke. Aktuell gibt es noch mehr solcher Unstimmigkeiten. RE: Reverse Engineering der NLT II - HenneNWH - 27.06.2025 Bin jetzt wieder zufrieden mit NGEN. :-) Mit der Taste '6' kann jetzt als mini-Feature zwischen Anfänger- und Fortgeschrittenenmodus gewechselt werden. Mit Msys2 sieht das Ganze schon etwas erfreulicher und komfortabler aus. :-) RE: Reverse Engineering der NLT II - Obi-Wahn - 28.06.2025 Da war aber jemand heute morgen echt fleißig! ![]() ![]() Anbei ein neuer Windows-Build.[attachment=7119] RE: Reverse Engineering der NLT II - HenneNWH - 28.06.2025 Danke, Obi-Wahn. Mit Msys bin ich gestern Abend abgestorben und weiß noch nicht, wann ich in dieser Hinsicht weitermache. Heute habe ich etwas Aufräumarbeiten in der Grafikabteilung gemacht, was sich ausgezahlt hat. Es gibt kaum noch unnötige Grafikupdates und NGEN läuft schon sehr flüssig, siehe Ausgabe am Ende in der Textkonsole. Das einzige was hierbei noch unperformant mit SDL2 ist, sind die GUI-Elemente (info- und radiobox). Aktuell wird noch bei jeder Zeichenkette und jeder Kachelzeile in GUI-Elementen ein Textur-Update gemacht. Natürlich arbeite ich daran. Weiterhin wurden einige globale Variablen entfernt um den Code nachvollziehbarer (u.U sogar formal beweisbar oder automatisiert testbar) zu machen. Dafür hab ich ein Auge entwickelt und sehe schnell, wenn etwas nicht stimmt. Beispielsweise wurde eine Unstimmigkeit von mir behoben, welche im Anfängermodus dazu führt, dass ein Held eine negative Anzahl von Talent- und Zaubersteigerungen hat. Test: Im Anfängermodus einen Typus auswählen => mit '6' in den Fortgeschrittenenmodus wechseln => feststellen dass alles passt. :-) RE: Reverse Engineering der NLT II - Obi-Wahn - 29.06.2025 Läuft bei mir gut. Einmal war kurzzeitig die Eingabe durch Maus oder Tastatur nicht mehr möglich, dass konnte ich aber nicht reproduzieren. (Edit: Ich hatte die Namenseingabe offen) Edit: Gibt es jetzt eigentlich etwas beim Char-Gen, was noch gar nicht funktioniert? Oder geht es jetzt "nur" noch ums Optimieren? RE: Reverse Engineering der NLT II - HenneNWH - 30.06.2025 (29.06.2025, 10:37)Obi-Wahn schrieb: Läuft bei mir gut. Einmal war kurzzeitig die Eingabe durch Maus oder Tastatur nicht mehr möglich, dass konnte ich aber nicht reproduzieren. (Edit: Ich hatte die Namenseingabe offen) So etwas hatte ich vor einiger Zeit auch schon erlebt. Mittlerweile ist dieser Fehler schon lange nicht mehr aufgetreten. (29.06.2025, 10:37)Obi-Wahn schrieb: Edit: Gibt es jetzt eigentlich etwas beim Char-Gen, was noch gar nicht funktioniert? Oder geht es jetzt "nur" noch ums Optimieren? Die Funktionalität, abgesehen von der MIDI/AWS-Musik, ist aus meiner Sicht vollständig. Die Fehler, welche ich gefunden habe, wurden schon behoben. Aktuell ist es eher wie eine große Formel umstellen, damit man "etwas sieht". :-) Heute habe ich ein paar Unstimmigkeiten beim Lesen aus der DSAGEN.DAT entfernt. Technische DOS-Limits. Mein Bestreben ist es, die Abhängigkeiten zu reduzieren, die Software flexibler zu machen und an aktuelle Anforderungen anzupassen. Das sind große Vorhaben, aber es geht gut voran. Ein wichtiger Punkt ist, die Nutzdaten (Held) weitestgehend von der Darstellung zu trennen. Probier mal die neue Version. ;-) RE: Reverse Engineering der NLT II - Obi-Wahn - 30.06.2025 (30.06.2025, 09:35)HenneNWH schrieb: Mein Bestreben ist es, die Abhängigkeiten zu reduzieren, die Software flexibler zu machen und an aktuelle Anforderungen anzupassen. Sehr gut, wenn wir mal irgendwann BrightEyes für den "normalen" Spieler nutzbar machen wollen, wären etwas weniger Abhängigkeiten bestimmt hilfreich! Im Moment bekomme ich BrightEyes leider auch nicht mehr auf dem SteamDeck zum Laufen. Da SteamOS ein immutable OS ist, bekomme ich gerade SDL2_Mixer nicht zur Verfügung gestellt... Wobei man für Linux natürlich auch ein Flatpak/AppImage/Snap erstellen könnte. Zum neusten Build: Ist ein bisschen grau geworden. ![]() ![]() |