Kein Ende in Sicht

Nachgetragenes Vorwort:

Es war einmal ein Projekt namens [SR:SNES:DRMM]. Superlong story short: Ich möchte eine erweiterte Version des SNES Rollenspiels Shadowrun erstellen. Obwohl das Endprodukt aufgrund mangelnder Lizenzen nichts mehr damit zu tun haben soll, möchte ich um Look und Feel zu erhalten damit beginnen das Original möglichst 1:1 nachzustellen.

Da die Grafiken auf dem Modul gepackt sind und ich sie weder komplett oder korrekt im Internet finde, beginnt dieses Projekt damit selbst einen Weg zu finden diese zu extrahieren. (Diese Grafiken werden btw. NICHT in den weiteren Versionen verwendet sondern in höherer Auflösung und detaillierter nachgesetzt/neuerstellt!)

Ambitioniert wie ich war habe ich dazu sofort eine Webseite gebastelt um meine Gedanken/Fortschritte/usw. festzuhalten. Alles zu dokumentieren, die Grafiken für die Seite anzupassen und das ganze dann funktionierend zu schreiben wurde dann aber mehr Arbeit als jene die ich tatsächlich in das Projekt steckte. Also streckte ich bereits nach dem dritten Eintrag die Füße und überlegte Alternativen. Long story short, im Großen und Ganzen ist [SR:SNES:DRMM] schuld daran das ich nun doch WordPress verwende.

Die Undokumentierbarkeit hat mich allerdings nicht abgehalten weiterzumachen. Und wenn auch keine einzige Zeile Code geschrieben wurde, so habe ich mich dennoch intensiv (und erfolgreich!) mit dem „Exportieren“ der Sprites beschäftigt. Das Tool dazu nennt sich „vSNES“ und ist ein… uhm, zSNES-Savestate-Multieditor? kA, man kann jedenfalls anhand der .zst den aktuellen Screen in seine Layer und in seine Sprites aufteilen.

Mir fällt gerade auf das ich mir seit dem letzten Eintrag tatsächlich einen Haufen theoretischen Wissens zum Thema SNES-Grafiken sowie Praxis in dessen Anwendung angeeignet habe. Das hier jetzt alles abzuhandeln wäre… mir zu viel Arbeit. Das ist etwas das ich @wrk wenn ich Zeit dazu aber keine Möglichkeit zum weiterbasteln habe machen und an den relevanten Stellen einfügen werde.

Abschließend noch der Link zur ursprünglichen Seite und weiter gehts mit meinem aktuellen Versuch [SR:SNES:DRMM] zu realisieren. 🙂

Es wird Zeit endlich mal was zu tun. Die nahende Urlaubswoche biete sich an.
Hier mal der Schlachtplan zum „Exportieren“ der Sprites*.
* = Sprites steht hier stellvertretend für alle im Modul gespeicherten Grafiken, egal ob es sich um Sprites, Tiles, Fonts, etc. handelt. Da afaik alles in 8x8px Feldern hinterlegt ist und ich alles extrahiere ist es mir zu diesem Punkt egal um was es sich handelt.

1)Intros & Morgue(visit#1) sind großteils ge-savestate-ed.
⇒ Ein Tool dazu wäre praktisch, aber da dieses dann auch die Steuerung des Charakters ausführen müsste wäre es eher sinnlos.
2)Von jedem .zst werden in vSNES die einzelnen Layer als .png exportiert.
⇒ Da es sich immer um die selben Schritte handelt ist es nervend und sollte eigentlich automatisierbar werden.
3)Die exportierten .png werden auf Unterschiede kontrolliert.
⇒ Tool dazu ist begonnen worden, funktionierte aber nicht wirklich.
4)Die zu den einzigartigen .png gehörenden .zst werden wieder in vSNES geladen, der Cursor geht dann über die einzelnen sprites. Davon werden Screenshots erstellt. (Enthalten Bild, x-pos, y-pos und Tilenummer)
⇒ Absolut monoton, sollte automatisierbar sein.
5)Die Screenshots werden auf einzigartige sprites kontrolliert.
⇒ Ebenfalls wieder automatisierbar.
6)Die einzigartigen Sprites werden aus dem exportierten .png ausgelesen und gesammelt.
⇒ Definitiv automatisierbar.
7)Die gesammelten Sprites werden auf ihre Einzigartigkeit kontrolliert.
⇒ s.o.
8)Party schmeißen das alles Sprites exportiert sind. 🙂

Future-Brainfart:
In Schritt 5 sollte es machbar sein ein „Karte“ mit den Sprites anzulegen.
Diese Karten sollten später kombinierbar sein um die Map leichter nachbildbar zu machen.

Die schlimmste Arbeit (#1, frame für frame savestate-n) ist afair bis zum verlassen der Morgue(visit#1) schon erledigt. Die Auswertung der erhaltenen Savestates ist aber selbst für mich der monotone Arbeiten nicht scheut ein abartig umfangreiches Unterfangen.

Die (das?) notwendigen Tools um diese Aufgaben zu automatisieren sind, zumindest am Papier, supersimpel. Das einzige Problem ist, das es im Hintergrund laufen und Maus und Tatstaur steuern muss während mit diesen bsnes bedient wird.

Selbst herauszufinden wie man .zst ausliest ist mir nicht möglich. (Ich habe erfolglos versucht die Dokumentation zu verstehen.)
Da QB64 die einzige Sprache ist die ich wirklich beherrsche sollte ich nun herausfinden ob und wie dies möglich ist.

Nope, da ist nix. Auch wenn ich mich dunkel an Forumsbeitrag von Galleon selbst erinnere in dem er berichtete ein Tool geschrieben zu haben welches die Tiles bei Zelda & Co. während dem Spielen auslaß.

Egal, es muss ja nicht QB64 sein, denn was ich benötige ist eigentlich ein simples Makro. Nachdem ich erfolglos nach einer Windowsinternen Lösung gesucht und dann diverse Freeware-Programmen ausprobiert habe, widmete ich mich wieder dem QB64-Wiki und siehe da, diesmal wurde ich fündig.

SEND KEYS ⇒ erzeugt auch einen Screenshot
https://qb64.org/wiki/Windows_Libraries#Send_Keys

Wie faul bin ich? ⇒ OPEN ANOTHER PROGRAM
https://qb64.org/wiki/Windows_Libraries#Open_another_Program

Wichtig: MOUSE AREA!
https://qb64.org/wiki/Windows_Libraries#Mouse_Area