sxt_day23/24

Update: Das American Hero Upscale-Projekt liegt wegen der unklaren rechtlichen Lage auf Eis. Das Upscalen per Freeware funktioniert zwar, dauert aber ewig und ich komme nicht wirklich an die Qualität der restlichen Videos ran.

Zurück zu dem was der Titel dieses Beitrages bereits ankündigt: Ich habe mein nach wie vor unverchromtes Hinterteil tatsächlich wieder in die Höhe bekommen und am SRXT weitergebastelt.

Da ich gerade dabei bin die seit Äonen angedachte Shadowrun 6 Pen & Paper-Runde tatsächlich umzusetzen, (Eigentlich wäre ja am internationalen Tag des Reehs der Termin gewesen, aber irgendwie hatte ein die Welt gerade im Griff habender Virus gemeint er hätte was dagegen…) beschäftige ich mich aktuell verdammt viel mit Shadowrun. Und weil ich natürlich Graham angesteckt habe (Ich will endlich den SinCity-Marv-Charakter sehen! *g*), haben wir bei unserem zur Zeit täglichen Dark Alliance-Gegrinde ebenfalls ausgibt über Shadowrun geredet. Zusätzlich habe ich auch die Shadowrun-Playlist von Orkenspalter-TV für mich entdeckt und auf deren Kanal auch ein Video zu Shadowrun Chronicles: Boston Lockdown gefunden. (Damn, I miss this game! 🙁 ) Letzteres war dann der ausschlaggebende Grund weshalb ich ich mich tatsächlich hingesetzt und wieder reingefuchst habe.

Beim letzten Mal habe ich das Pseudo-OCR fertig gestellt gehabt und es hat auch tatsächlich funktioniert. Für das x(00)y(00)-Tile, welches in meinem Test.zst leer/schwarz ist. Jedes andere Tile hat -nicht- funktioniert und es wurden grandioser Mist ausgelesen.

Looong story short: Die Zeile in der Mitte der Ziffer wurde zwar richtig ausgewertet, allerdings haben die Koordinaten nicht gepasst. Denn das Testimage& beginnt warum-auch-immer bei 0 und nicht bei 1, weshalb die mittige Zeile 4 und nicht 5 ist. Und nein, ich habe keine Ahnung wie ich das übersehen konnte. Aber egal, für den potentiellen Fall weiterer Probleme habe ich jetzt die Kontrollzeilen auskommentiert im Quellcode gelassen.

Als nächstes durfte ich herausfinden das bei aktiviertem CapsLock (Überbleibsel vom Dark Alliance Spielen…) die per _SCREENPRINT übermittelten Texte ebenfalls in Großbuchstaben eingegeben werden. Das ist bei Dateinamen die Sonderzeichen enthalten durchaus ein Problem. („0003_shadowrun (germany)_01_screen_8-bit_BG_mode_1“ wird zu „===§_SHADOWRUN 8GERMANY8_=!_SCREEN_(-BIT_bg_MODE_!“). Durch Zufall habe ich relativ schnell den Wiki-Eintrag gefunden in dem der CapsLock-Status abgefragt wird, allerdings hat es bis heute @wrk gedauert bis ich endlich entdeckt habe das die DEF SEG = 0-Zeile notwendig ist damit PEEK tatsächlich funktioniert.

Soviel zu Problemen auf die man erst mal kommen muss…

Als nächstes werde ich noch einmal kontrollieren ob mein Pseudo-OCR jetzt tatsächlich alle Werte korrekt ausliest. Ist dies der Fall werde ich die Routine die das Tile auswertet einbauen. Wenn das funktioniert (Dann halt mal….) möchte ich paranoider/vorausschauender-weise auch noch die Palette speichern. (Eventuell kann ich für die niemals meine PC verlassende Remake-Version damit Platz bei den eingebetteten Tiles sparen…) wird das Ganze so umgemodelte das alle dargestellten Tiles ausgewertet werden.

Dann beginnt der nächste gröbere Haufen Kopfarbeit. Ich möchte nämlich das bereits beim auslesen (bzw. gleich danach) kontrolliert wird, ob dieses Tile schon einmal verarbeitet wurde. Später einmal soll es eine Art Datenbank geben in der alle Tiles abgespeichert sind und jeweils nur ein einziges mal vorkommen. Ich bin gespannt ob der „tile index“ der in vSNES angegeben ist sich nur auf die aktuelle Scene oder auf das gesamte Rom bezieht. Falls letzteres der Fall wäre, könnte ich die Datenbank ohne Probleme umsetzen.

Wahrscheinlich wird es aber nicht so sein und ich muss mir überlegen wie ich mir Scene-übergreifend einen eigenen „tile index“ aufbaue. Einen möglichst sinnvollen… Wie auch immer das aussehen soll. Das überlege ich mir aber dann wenn es soweit ist.

Damit wäre ich dann auch schon am Ende meines berichtbaren Stoffes angelangt. Eventuell wäre noch erwähnenswert das ich in einem Kamikaze-Test geschaut habe ob der SRXT (inkl. vSNES) auch vom USB-Stick weg auf dem Arbeitsrechner funktioniert. Wider erwarten klappt es tatsächlich und die Richtlinien welche Applikationen laufen und welche nicht (zB. CDEx Portable) stellen für mich ein immer größer werdendes Rätsel dar.

American Hero Uncut

Der Vollständigkeit halber gleich anfangs das Ergebnis der Turbonale: Mein Beitrag hat nicht gewonnen. (Link zur Humaldos Bericht). Well… anyway, auf zu neuen Untaten! *g*

Während ich @wrk von meinem Vorgesetzten einen privaten Ansporn zum Zeichnen bekommen habe (Mehr dazu später einmal wenn ich alles was sich dazu in meinem Hirn angesammelt habe tatsächlich umgesetzt habe…) und sich nebenbei mein Körper entgültig dazu entschlossen hat gegen mich zu rebellieren (Wahrscheinlich „nur“ ein Bandscheibenvorfall, aber ein eindeutiges Ergebnis ist derweilen noch ausständig…) hatte ich mal wieder einen Instabuy auf GOG.

I’m a simple man. I see Musetta Vader and click like/buy/subscribe/download/… und genau das ist wieder einmal passiert. Mir wurde auf GOG das Spiel American Hero vorgeschlagen. Ein bis dato unveröffentlichtes FMV-Game das anno dazumal für den Atari Jaguar CD erscheinen hätte sollen aber aufgrund dessen schlechter Verkaufzahlen dann doch zu einem Film umgewandelt werden hätte sollen. Im Zuge der zusätzlichen Dreharbeiten wurde aber durch einen Unfall Material vernichtet und das ganze Projekt gekübelt. Dank Ziggurat Games (btw. Zitat von deren Seite: „Original Developer: Empty Clip Studios„. Spannenderweise scheint American Hero nicht auf deren „All 32 Games we worked on“-Liste auf!?) wurden die Daten aber restauriert und doch noch umgesetzt. (Mehr dazu weiter unten…) Da ich prizipiell ein Faible für cheesy 90ies FMV-Games habe und American Hero auch noch beabsichtigt over the top acting beinhalten sollte sah ich mir den Trailer gerne an. Und tjo, plötzlich tauchte ein sehr vertrautes Gesicht auf. Eine kurze Googlerecherche später wurde ich bestätigt: Es ist Musetta Vander. Seit Mortal Kombat 2 – Annihilation ist alles von/mit ihr ein Instabuy.

( Original gefunden auf https://www.tumgir.com/esperwatchesfilms )

Das Spiel ist tatsächlich nett und hält was es verspricht: Cheesy over the top acting in einem wirklich extrem abitioniertem und einem tatsächlichem 90er Jahre Action Film entsprechendem Setting inkl. Verfolgungsjagd und Explosionen. Als ich meiner Freundin davon erzählte fragte diese spaßhalber „Ob ich den nun einen Pornofilm spielen würde“ und sehr zu meiner Erheiterung hatte sie nicht ganz Unrecht, den die Handlung begann tatsächlich in einem Stripclub inklusive möglichem Abestecher ins Séparée.

Dabei ging es aber ganz zahm zu. Keine blanken Brüste und keine Darstellung sexueller Akte. Im weiteren Spielverlauf gibt es ebenfalls weitere Möglichgkeiten den Hauptcharakter zwischenmenschliche Begegnungen der intensiven Art durchleben zu lassen. Diese dann nicht mehr ganz so subtil aber immer noch PG13.

Das wäre weder ein Problem noch einen weiteren Gedanken wert wenn es im GOG-Forum nicht einen Thread namens „Still censored?“ gäbe. In diesem wird erklärt das manche der (ohne Aufwand zugänglichen) FMV-Files ein PG13 im Titel tragen. Das machte mich neugierig und so begab ich mich auf die Suche nach dem „fertig gestellten aber unveröffentlichten“ Jaguar-Dateien.

Die CDs konnte ich tatsächlich relativ schnell finden, allerdings waren sie im .cdi-Format und ich schaffte es nicht sie auch nur in einem einzigen der existierenden Jaguar-Emulatoren zum laufen zu bringen. Die Images zu entpacken funktionierte ebenfalls nicht, bzw. hatte ich nicht genug Motivation mich tatsächlich in die Materie einzulesen.

Irgendwann stieß ich aber auf diesen Thread in dem jemand (Username: Tom-Tambo) die Dateien nicht nur entpackt sondern auch bereits sortiert hatte und sich auch sonst schon etliche Gedanken über das Spiel gemacht hatte. Wohlgemerkt bevor es von Ziggurat restauriert wurde.

Der Ordner „American Hero CD 1 – PG 18“ offenbart einen ganz neuen Blickwinkel auf das Spiel und stellt Zigurrats „preserved as faithfully as possible“-Aussage imo in ein seltsames Licht. Gut es gibt da noch den „such distasteful content was wrong when it was filmed, and continues to be wrong today.“-Spruch aber ob das ein, nach Durchsicht des Originalmaterials dermaßen kastriertes Spielerlebnis rechtfertig weiß ich nicht.

Anyway, ich hatte schon von Anfang an aufgrund der unsäglich schlechten Tonqualität (der Ziggurat-Files! Das Jaguar-Original klingt besser ò_Ó) der Dialoge vor den Videos hardgecodete Subtitles zu verpassen. Allerdings war das eine „damit ich mich nicht spoilere erst wenn ich es komplettiert habe und dann auch nur wenn ich noch Lust dazu habe“-Idee.

Jetzt ist auch noch die Idee die PG13-Stellen gegen die PG18-Versionen auszutauschen dabei und das einzige was mich nun noch aufhält ist die Frage wie es dabei mit der legalen Seite aussieht. Bis ich darauf eine Antwort habe bleibt das ganze meine private Spielerei.

Schritt#1 ist es die Jaguar-Videos von 320×192 auf das von Ziggurat verwendete 640×384 hochzurechnen. Das könnte jetzt einfach per Pixelwiederholung oder klassischem upscaling erfolgen oder… ich stöbere mal wie weit und frei zugänglich KI-Upscaling heutzutage schon ist. Spoiler: Verdammt weit!

Ich behaupte nicht zu verstehen wie genau KI-Upscaling funktioniert aber nachdem ich mich durch mehrere Freeware/OpenSource/…-Lösungen durchprobiert habe und dabei etliche unvorstellbar gute Ergebnisse erhalten habe, bin ich schlußendlich bei Cupscale gelandet.

Cupscale ist ein Frontend für ESRGAN (Enhanced Super-Resolution Generative Adversarial Networks) und unterstützt diverse Modelle um unterschiedliche Ergebnisse zu erzielen. Dauert ewig, man kann wenn man will unendlich viel einstellen und je mehr ich mich einlese desto weniger verstehe ich. ABER: Es funktioniert und liefert unglaublich gute Ergebnisse.

So klein sieht man es nicht, aber während 4xBSRGAN klarer wirkt, kann es überhaupt nicht mit Gesichtern umgehen. 1x-RoQ_nRoll hingegen wirkt ein wenig weichgezeichneter, ist aber bei Hautflächen unglaublich gut.

Während ich Cupscale auf der Suche nach dem besten Modell für dieses Unterfangen vor sich hintuckern und Zeit als auch Rechenleistung verschlingen lasse, bin ich einer aufgekeimten Befürchtung nachgegangen. Die geloopten Entscheidungs-Sequenzen sind eigene Dateien aber unter Tom-Tambo’s Dateien befand sich auch ein Screenshot eines Timetables der FMV-Files. Was wenn die .exe des Spiels sich ebenfalls nach hardgecodeten Timestamps richtete und nicht einfach die tatsächliche Länge des Videos als gegeben hinnehmen würde?

Ich habe also die Dateinamen des ersten Videos eines Kapitels das ich schon etliche Male gesehen hatte und daher fast schon auswenig kenne mit dem eines anderen dessen Dauer um einiges höher ist getauscht und das Spiel gestartet. Ich hasse es wenn ich recht habe. Das längere falsche Video wird zwar anstandslos angespielt und wie erwartet werden Jacks Komentare einfach an der ursprünglich vorhergesehen Stelle darüber gelegt aber leider wird das Video auch tatsächlich zu dem Zeitpunkt an dem das original endet abgebrochen und das nächste gestartet.

Da einige der PG18-Videos aufgrund der Darstellung diverser Akte *hust* länger als die PG13-Versionen dauern wird es mir also nicht möglich sein alles wiederherzustellen. Aber zumindest ein bissi Smut werde ich wieder restaurieren können. *g* Außer natürlich es findet sich ein Weg wie ich die .exe bearbeiten kann, aber das wird es wohl nicht spielen.

Legal Disclaimer: Es geht mir wirklich nicht darum unbedingt blanke Brüste und Softpornosexszenen zu sehen. Es ist die Neugier ob und wie ich es schaffen kann. Solche Basteleien bereiten mir unheimlich viel Spaß und ich habe schon oft bei älteren Spielen viel mehr Zeit damit verbracht sie auf modernen System zum laufen zu bringen als sie dann tatsächlich zu spielen.

Kurzfilm

Wie beim letzten mal erwähnt haben die Jungs vom Team Turbo ein Kurzfilmfestival auf die Beine gestellt. Die Kriterien für Beiträge zur „Turbonale“ waren das ein Schwamm sowie der Satz „Wow, sind das Spaghetti? Mjam!“ darin vorkommen müssen. Und das der Film maximal 1 Minute lang sein sollte.

Die Idee etwas zu zeichnen und das dann 1 Minute lang zu animieren hat mich ziemlich sofort angesprochen. Ein Storyboard war auch schnell auf die Beine gestellt:

Der Anfang war recht klassich angedacht, mit den Kameraschwenks habe ich mich vor Jahren schon einmal für einen Wettbewerb @wrk beschäftigt:

Mehr Kopfzerbrechen hat mit der angedachte Zoom an Ende gemacht. Zuerst dachte ich ja, das ich am iPad problemlos zoomen könnte aber das wäre nur gegangen würde ich mit Vektoren arbeiten. Procreate machte mir Auflösungstechnisch ziemlich schnell einen Strich durch die Rechnung. Nach einigem Überlegen entschied ich mich dann dafür doch alles händisch zu zeichnen und dann mit der maximal möglichen Auflösung einzuscannen.

Dabei entstand dann auch die Idee des Endlos-Zooms im Stil der Zoomquilt-Bilder. Und obwohl die Einsendefrist verlängert wurde, hat mich die Kopfarbeit zu der Zoomerei so viel Zeit gekostet das ich erst ca. 10min vor dem Ende fertig wurde. Na gut, der innere Schweinehund war auch nicht unbeteiligt, aber so knapp war es schon lange nimmer. xD

Das ich nach einem Tag lang lles Zoom-relevante über den Haufen geschmissen habe und neu zusammengestellt habe war auch nicht sonderlich zeitsparend. Und das mir aufgrund der Datenmenge (Die größte Zoomstufe sollte in FullHD 1920 x 1080 noch unverpixelt sein.) ständig alle Programme abgeschmiert sind hat mich zusätzlich noch Zeit und Nerven gekostet. Aber im Endeffekt ist sich alles noch ausgegangen:

Tjo, und jetzt heißt es warten und daumendrücken. ^_^

zSNES Movies

Und es hat schon wieder Ewigkeiten gedauert bis ich mein (noch) unverchromtes Hinterteil in die Höhe gehievt habe. Das mag in erster Linie damit zusammenhängen das ich @wrk wirklich keine Zeit mehr für Irgendwas hatte und den ganzen Mist im Kopf mit Heim geschleppt habe dadurch Selbigen nicht mal zum Zocken freibekommen habe. Geschweige denn um mich kreativ oder überhaupt irgendwie produktiv zu betätigen.

Ad acta habe ich SR:SNES:DRMM noch lange nicht gelegt. Zu oft sehe ich Dinge bei denen ich mir denke „In -meinem- Spiel mache ich das auch so bzw. ganz anders.“ Und dann drifte ich ab und tagträume vor mich hin bis ich mich wieder daran erinnere das ich immer noch beim extrahieren bin. Bzw. kurz davor. :-/

Naja, heute bin ich aktiv einem Brainfart gefolgt. Eines meiner Sorgenkinder war ja die Tatsache das mein aktueller Dumpingprozess vorsieht das ich beim Spielen die Geschwindigkeit aufs absolute Minimum runterdrossle und Frame für Frame Savestates anlege. Auf dem Papier funktioniert das super, und in der Praxis auch so irgendwie aber für ein Spiel das wie Shadowrun auf Action ausgelegt ist das vielleicht … na gut, sowas von ziemlich sicher nicht die optimalste Lösung.

Ich weiß nicht warum, aber ich habe mich schon vor längerem von der movie-Funktion von zSNES verabschiedet. Wahrscheinlich war das als ich noch Frames und nicht Savestates grabben wollte.

Jedenfalls habe ich heute ausprobiert ob es möglich ist ein zSNES-movie (.mzt?) in realer Geschwindigkeit aufzunehmen und dann die Wiedergabe runtergedrosselt Frame für Frame abzuspielen: Ja, es geht!

(Soeben habe ich entdeckt das für Savestates einen eigenen Shortcut gibt: F2 \o/)

zSNES legt für jedes aufgenommene Movie einen temporären Folder an. Erstellt man einen Savestate landet dieser ebenfalls darin. Dieser Savestate kann a) abseits der Wiedergabe geladen werden und b) auch von vSNES gelesen werden.

(Apropos vSNES: In diesem gibt es einen Movie Editor der SMV/ZMV verarbeiten kann. Ich schaffe es aber gerade nicht Daten in diesen zu laden. Sollte ich mir auf jeden Fall ansehen. Im optimalsten Fall kann ich direkt auf die Daten im zSNES-movie zugreifen und sie ohne Umwege von dort aus exportieren.

UPDATE: „ZMV support is still incomplete.“ Tjo, das wars damit. Anyway, es sah im Screenshot eh mehr danach aus als ob im SMV nur die Tastendrücke gespeichert werden und man im Editor diese Liste bearbeiten könnte.)

Die Idee der ich nun (bzw. wenn der SXT fertig ist) nachgehen möchte ist das ich dem SXT eine Vorstufe erstelle in dem die Movies angespielt und die Savestates die später zerlegt werden hier automatisch exportiert werden. Im Endeffekt würde ich dann „nur“ die Szene spielen, dabei das movie aufnehmen und dann den SXT sein Ding machen lassen.

Was sich abseits von SXT getan hat? Weder mein neuer Versuch mein Iso-Ascii-Engine-Projekt zum Laufen zu bringen noch der beim letzten Mal erwähnte neuerliche Mono-X-Anlauf sind aus den eingangs erwähnten Gründen weit gekommen. Bei beiden habe ich wieder viel neues gelernt aber sobald ich andeutungsweise in Fahrt gekommen bin habe ich wieder keinerlei Zeit für irgendwas gefunden. Egal, dieses Kapitel meines Lebens lasse ich in Kürze hinter mir und genau aus diesem Grund möchte ich hier auch wieder aktiver werden.

Ein weiteres Anliegen ist meine Zeichnerei. Danke dem ipad das ich von der Besten der Besten geschenkt bekommen habe, bin ich bei meiner Tim Turbo Fanfiction dabei die Bleistiftzeichnungen digital zu inken und in Graustufen zu colorieren. Klingt zach, ist zach und geht genauso zach voran. Aber bald habe ich alles bereits existierende überarbeitet und kann an der Geschichte weiterspinnen… uhm. Weitermachen.

Meanwhile haben die Jungs aufgerufen Beiträge für ihren eigenen Kurzfilmwettbewerb zu erstellen und die Idee (und auch die gewünschte Maximallänge von 1min) hat mich angesprochen.

Storyboard existiert bereits und wer weiß, vielleicht geht es sich ja aus *g*

(( btw. das Beitragsbild stammt aus Solitaire Conspiracy ( https://www.bithellgames.com/the-solitaire-conspiracy .))

Cyberpunkiges

Long time no see, choomba… uhm.. chummer *g*

Es ist soweit CyberPunk 2077 ist draußen. Einhergehend damit bin ich nun ziemlich komplett von meinem treuen Dell-Notebook auf meinen neuen Stand-PC gewechselt. Was das für SR:SNES:DRMM bedeutet? Nichts, mag nur auch hier mit meinem neuen Rig angeben. xD

Anyway, an der SXT-Front gibt es so gut wie nichts neues. Das Pseudo-OCR ist fertig umgesetzt und dem nächste Schritt (Tiles auslesen) steht nur mein Status als gebranntes Kind im Weg.

Ich möchte nämlilch nicht einfach drauflos schreiben sondern im Vorfeld bereits ein zivilisiertes Library/Ablage-System verwenden. Und da hänge ich gerade ein wenig. Alternativ könnte ich alle Daten irgendwie ablegen und im Nachhinein auswerten und sortieren. Auf jeden Fall möchte ich später nicht draufkommen das mir bestimmte Informationen fehlen oder das System so nicht verwendbar ist.

(Beim Mono-XL-PixelMe habe ich kurz bevor ich komplett fertig war entdeckt das es nicht mögllich war beim Speichern zwischen System, Tiles und Sprites zu wechseln. Nachdem das Speichersystem aber so tief verwurzelt war musste ich einen kompletten Rewrite starten…. und bei dem bin ich bis dato nicht mehr in die Gängte gekommen.)

Aus ‚kreativer Langeweile‘ (All © Felicia Day „feeling creativly bored“) habe ich @wrk spasshalber Mono-X wieder ausgegraben. Ursprünglich um mich zu beschäftigen, später aber mit dem Vorsatz darin für SR:SNES:DRMM ein Mapsystem und das Scripten zu erstellen. Da Mono-X seit Anbeginn der Zeit (Erzähle ich eines Tages vielleicht mal…) reines ASCII ist geht es dabei tatsächlich ohen jegliche gestalterische Ablenkung nur darum die zu Grunde liegendenden Abläufe zu erschaffen.

Trotzdem, aktuell läuft fast ausnahmslos (Wenn ich nicht gerade den in Stone Story RPG offline ergrindeten Loot zerlege…) CyberPunk 2077 am heimischen PC. (Auf der PS5 im Nebenzimmer auch, aber das ist eine andere Geschichte. *g*). Als Vollblut-Shadowrunner der auch schon seit seiner allerfrühesten Kindheit ein stark ausgeprägtes Faible für das Genre Cyberpunk hat bin ich natürlich restlos… nicht ganz restlos, aber doch schon zimelich sehr begeistert von dem Spiel.

Warum nicht komplett? Mir geht irgendwie der RPG-Ansatz ab, selbst ein Gut-Böse-System konnte ich noch nicht entdecken. Nur die Entscheidung ob die Mission im Stealth oder eben >nicht unauffällig< absolviert (bzw. probiert *hüstl*) wird. Mein absichtlich so erstellter Grindgossenpunk ist nur optisch ein Grindgossenpunk. Vom Verhalten her… naja, mal schauen, so weit im Spiel bin ich noch nicht, vielleicht kommt ja irgendwann auch Charaktertechnische Freiheit.

Was mich als Shadowrunner ein bissichen sehr irritiert ist, das fast jeder Bewohner von Night City offensichtliche Cyberware trägt. Egal welche Schicht er angehört, welchen Job er ausübt… unvercyberte Menschen muss man mit der Lupe suchen.

Worauf ich ebenfalls noch gespannt bin, ist ob noch irgendwelche Minigames auftauchen werden. Normalerweise verteufle ich dank vielen Jahren Final Fantasy alle Minigames, aber eine OpenWorld in der ich nur hacken oder mörschern/stealthen kann ist fühlt sich schon ein wenig leer an.

Hier also die ersten Punkte meiner „SR:SNES:DRMM machth’s besser“-Liste:

• Minigames: Und sei es nur ein einziger bescheuerter Billard-Tisch den ich mir einbilde seit ich auf dem MegaDrive im Jump House gelandet bin und im Gegensatz zu Duke Nukem 3D nicht mit den Tischen interagieren konnte. Sollte ich tatsächlich eines Tages den Coop-Modus umsetzen können würde sich gerade Billard als Coop-Spiel anbieten. *g*

• Questdesign: Die simplen „Gehe-von-A-nach-B-und-töte-alles-dazwischen“-Quests der SNES-Version möchte ich um jeden Preis verhindern. Überhaupt möchte ich die Anzahl der möglichen Optionen sogar im Vergleich zu Returns/Dragonfall/HongKong noch in die Höhe schrauben. Am liebsten wäre es mir wenn ich es schaffen würde mich an die Pen&Paper-Vorlage zu halten und schon beim der Vorbereitung freie Hand haben. (Statt „Kontaktiere NPC xyz um Informationen zu bekommen“ soll es auch bei den eigenen Connections passende Dialogoptionen geben.)

Aber das ist alles ferne Zukunftsmusik. Zuerst muss mal der Remake-Teil fertig werden…

sxt_day17.7z

Theoretisch ist seit dem letzten Eintrag nicht viel passiert. Praktisch habe ich mich erfolgreich vor dem Start des Fake-OCRs gedrückt indem ich weitere Baustellen abgearbeitet habe:

In der SUB Konfiguration () werden jetzt alle Pixel-Koordinaten die davor hardgecoded waren in einem Array eingetragen. Da mehrere Positionen von der Windows-Umgebung wie z.B. der Breite der Titelleiste oder den Dimensionen der Fenster-Modus-Schaltfläche abhängig sind, möchte ich mich selbst davor bewahren eines Tages alle Werte manuell suchen und ausbessern zu müssen. Ja, mein Glaube daran den SXT noch innerhalb der Lebensezit von WIndows 10 fertigzustellen ist gar nicht mal sooo gefestigt. (Der R:SNES:DRMM jemals fertig zu bekommen ebenfalls nicht wirklich…) Eventuell werden diese Werte eines fernen Tages in einem externes .cfg-File gespeichert. Wahrscheinlicher ist aber das sie in der SUB bleiben und ich nur einen beschrifteten Screenshot mit der Position der Punkte beilege.

Eine allgemeingültige Losung für den Zeilenumbruch sobald eine der letztes Mal erwähnten Statusmeldungen im Konsolenfenster mehr als 80 Zeichen umfasst habe ich noch nicht gefunden. Nur das ich aufpasse dies Meldungen unter diesem Limit zu halten. Es würde natürlich mit MID$ funktionieren aber so viele durch Variabeln generierte Statusmeldungen gabe ich nicht und den Rest kann ich manuel kürzen. Immerhin ist jeder MID$-Aufruf eine weitere Aktion die, zwar nur minimal aber doch, Zeit verschlingt. In Summe käme da schon einiges zusammen und eigentlich sollte ich gerade als QB64-Benutzer schauen das ich so effizient wie möglich schreibe. Eigentlich…

Was noch? Die QB64-Version habe ich gewechselt. Von 1.2 auf 1.4. Das Problem mit den Sonderzeichen ist nach wie vor nicht behoben, aber schoen langsam werde ich richtig gut darin Umlaute zu umgehen. Die restlichen Benefits treffen mich laut dem was ich dem Changelog entnehmen kann nicht wirklich. Aber hey: Hilft’s nix, schad’s nix.

Damit dieser Eintrag endlich einmal fertig wird und nicht komplett leer wirkt, hier meine aktuellen relevanten Recherche-Ergebnisse zum Thema SR(SNES):

  1. 08/15-Eintrag auf Wikipedia.org (.pdf)
  2. Detaillierterer Eintrag im Fandom Wiki (.pdf)
  3. Detailierte Geschicht auf Hardcore Gaming 101.net (.pdf)
  4. Walkthrough & Stuff auf RPG Classics (.pdf)
  5. Schnittbericht auf The Cutting Room Floor (.pdf)
  6. Testberichtscans auf Kultboy.com (.pdf)
  7. Testberichtscans auf Ninretro.de (.pdf)
  8. Retro-Special auf PCGames.de (.pdf)

Ein wahnsinnig interessantes Projekt aus dem Jahr 2013 findet sich hier. Unheimlich schade das es dazu keine weiteren Infos gibt.

Und weil es mir über beim Suchen über den Weg gelaufen ist: 1001 Video Games You Must Play Before You Die beinhaltet ebenfalls einen SR-SNES-Eintrag. Vielleicht organisiere ich mir das Buch eines Tages und gehe die 1001 Spiele durch… wenn ich alle Ultimas durch habe. Und alle Elder Scrolls. Und alle Final Fantasies. Stimmt, die Witcher und Assassin’s Creed-Reihen habe ich ebenfalls begonnen… Vielleicht lasse ich das mit dem Buch lieber xD

5 days

Seit dem letzten Beitrag bin ich bei SXT_day14.bas angelangt und habe diese (Spätschicht-)Woche jeden Tag daran gebastelt. Zum OCR bin ich zwar immer noch nicht gekommen, aber dafür habe ich etliche andere Sachen repariert.

Als erstes und wichtigstes wäre da die Sache mit den Dateinamen. Aus mir nicht begreiflichen Gründen hat vSNES beim exportieren der Screens manchmal die ersten paar Zeichen des Dateinamens nicht übernommen.

Dieses Problem habe ich nun umgangen indem ich nach dem Speichern (inkl. einer SLEEP 1 Pause da vSNES langsamer schreibt als der SXT kontrolliert.) die erstellte Datei überprüfe und gegebenenfalls den Dateinamen ändere.

Als nächstes gab es noch die „Erster Start des Tages“-Problematik. Jedes mal wenn ich den SXT (Egal ob neuer oder alter build.) zum ersten Mal gestartet habe, ertönte zweimal der Windows-Fehler-„Ding“-Sound beim exportieren. Bei allen weiteren Starts nicht.

Abhilfe hat hier die Umsetzung eines anderen Features geschafft. Long Story short : Nach dem Start wird nun das „Scene Viewer“-Fenster per Mausklick manuell in den Vordergrund gehoben. Warum dies nicht automatisch der Fall war und wieso das bei allen weiteren Starts nicht gestört hat bzw. von alleine geschehen ist weiß ich nicht.

Eine weitere Sache die ich umgesetzt habe betrifft das Konsolenfenster. Da ich brav alles auskommentiert habe, lasse ich mir mittlerweile auch in diesem Fenster die meisten für mich relevanten Informationen anzeigen. Da vSNES aber im Vollbild darüber thront, ist das für die Katz.

Per _SCREENMOVE wird das Konsolenfenster in der rechten obere Ecke des Bildschirms plaziert. Sobald vSNES gestartet wird, wird es per Mausklick aus dem Vollbildmodus in den kleinstmöglichen noch sinnvollen Fenstermodus gesetzt. Dadurch kann ich sogar hier auf auf meinem Notebook beide Fenster zeitgleich nebeneinander sehen.

Durch Zufall habe ich entdeckt das der SXT warum auch immer nicht mehr fähig war die vSNES.ini korrekt und komplett zu editieren. Vor allem das „Scene Viewer“-Fenster wurde nicht mehr richtig plaziert. Dies fiel mir auf als ich entdeckte das vSNES im Fall einer fehlenden vSNES.ini zwar sofort eine neue erstellt, diese aber erst NACH der Beendigung des Programmes schreibt.

Hier blieb mir nichts anderes übrig als die komplette „vSNESanpassen“ SUB neu zu schreiben. Dafür wird jetzt auch der PaletteViewer angezeigt (auch wenn sich das Fenster aus sich mir nicht erschließenden gründen nicht per Variabeln plazieren läßt) und vSNES kann jetzt ohne „Sind Sie Sicher?“-Kontrolldialog geschlossen werden.

(Die Lösung zu dem keine-vSNES.ini-Problem ist sehr simpel ausgfallen: SXT kontrolliert ob eine exisitiert und sollte dem nicht der Fall sein beendet es sich mit dem Hinweis das vSNES einmal manuell geöffnet und geschlossen werden soll. Nach wie vor gehe ich nicht davon aus das außer mir jemand dieses Programm verwenden wird, und defacto spare ich mir die kompletten Luxusfeatures.)

Script done, OCR coming up next

Eigentlich ist der Titel aussagekräftig genug, aber wenn ich schon diesen Blog führe um zu schwaffeln dann tue ich das auch. *g*

Der SXT ist mittlerweile bei Tag 9 angelang und endlich ist auch der Teil der mit einem einfachen Script umsetzbar gewesen wäre abgeschlossen. Das bedeutet das der SXT jetzt „eigenständig“ den IN-Folder auswertet, vSNES öffnet, ein im Vorfeld definiertes .zst lädt und dann den Screen sowie die einzelnen Layer exportiert.

Da es bei den Layern BG1, BG2, BG3 und bg4 zum auswählen gibt, und bg4 bis jetzt immer „leer“ war woraufhin vSNES mit einer Fehlermeldung reagiert hat wenn man diesen zu exportieren versucht habe ich hier die am 07. Jänner 2019 erwähnte Flächenkontrolle eingebaut.

Zuerst wollte ich mich an dem Vorschaufenster in der „tile info“ im „MemViewer“ orientieren da dieses Grau bleibt sobal ein BG „leer“ ist, allerdings befürchtete ich dann das eines Tages irgendein Tile genau dieses Grau verwenden würde. Ergo habe ich nach einer weiteren Möglichkeit gesucht und sie in den Angaben unter der Vorschau gefunden. Ist der BG „leer“ wird auch hier nichts angezeigt. Sollte etwas vorhanden sein werden die Daten mit schwarzer Schrift angezeigt. Meine Lösung ist nun das ich in dem Feld in dem die äußersten Ziffer angezeigt wird alle _RED32-Werte addiere. Ergibt diese Summe 10800 so ist das Feld Grau und der BG „leer und es nicht notwendig ist ihn zu speichern. (bzw. würde der Versuch die Fehlermeldung provozieren.)

Der nächste Schritt ist dann das Auswerten des Vorschaufensters. Damit diese Daten g’scheit katalogisiert werden können, ist es auch notwenig mein „Pseudo-OCR“ umzusetzen. Am 10. Jänner 2019 habe ich mich noch gefreut die Ziffern über die mittlere Zeile eindeutig identifizieren zu können… Jetzt bin ich draufgekommen das mir die „5“ einen Strich durch die Rechnung macht. Wäre der Querstrich eine Zeile weiter unten, wäre die Welt in Ordnung aber so sind „0“ und „5“ ident.

Da ich wirklich keine Lust habe wirklich alle Pixel zu kontrollieren, habe ich vor im Fall der 0/5-Linie zusätzlich den linken oberen Pixel abzufragen. Ist dieser leer handelt es sich um die „0“. Ist dieser schwarz handelt es sich um die „5“

Eine weitere Sache die ich entdeckt habe ist, das bei x/y-pos nicht nur Pixelwert (in 8er-Schritten) angegeben wird, sonder in den Klammern auch das wievielte Tile es ist. Bis jetzt sind alle SR-Szenen 64×32 Tiles groß. (0-63 und 0 bis 31) Keine Ahnung ob es größere/kleine Szenen gibt aber zumindest zur Nachvollziehbarekeit der Herkunft des Tiles (zB. Map 034 | X-pos 25 | Y-pos 17) sollte diese Erkenntnis sehr hilfreich sein.

Überhaupt sollte ich mir langsam ernsthafte Gedanken machen wie ich die extrahierten Daten ablegen möchte. Seit ich vor ewiger Zeit Kontakt mit den .wad-Files (Where’s All the Data“) habe ich ein Faible für Sammlungen aber ich bin bis dato noch nie weit genug gekommen um herauszufinden ob ein Tilesheet nicht doch schneller wäre. „Sicherer“ wäre die Sammlung, da die Daten erst „mühsam“ exttrahiert werden müssten.

to be continued…

Da geht ja tatsächlich was weiter…

Während ich warum auch immer daheim nicht und nicht in Fahrt komme (Dafür aber stattdessen SR:HK „recherchiere“. *hüstel*) habe ich dank dem aktuellen Dreischichtbetrieb @wrk aber dort Zeit und interessamterweise Muse genug mich mit dem SpriteXtraktor zu beshäftigen.

Zuerst habe ich die am 18.09.2020 in Klammern erwähnte „Screenshot-Folder erstellen“-Option eingefügt. Funktioniert soweit, allerdings habe ich hier @wrk den originalen Folder nicht gelöscht sondern nur verschoben und Windows hat daraufhin neu erstellte Screenshots weiterhin in den originalen Folder gespeichert. Egal wo sich dieser befand.

Muss ich eventuell auf einem weiteren Rechner ausprobieren, aber aktuell frage ich mich sowieso ob ich tatsächlich die Screenshot-Option verwenden möchte. Mal schauen…

Als nächstes habe ich mir Gedanken über das Ablagesystem gemacht und beschlossen ich benötige den Inhalt des IN-Folders als Feld im Speicher. Nur um nach ein paar Zeilen draufzukommen das ich das damals bereits getan habe.

Weiter ging es mit der Umsetzung des auskommentierten Textes in AllesExtrahieren. Bei „Save Scene“ entdeckte ich das ich dem meinem Ablagesystem entsprechend pervertierten Dateinamen eingeben muss. Zum Glück gibt es den QB64-Befehl _SCREENPRINT der einem das für jedes Zeichen des Strings qualvoll die jeweiligen Tasten der Reihe nach ansteuern abnimmt. Zum Glück habe ich mich daran erinnert bevor ich die ersten 25 Tasten des Keyboards zusammengeschrieben habe… uhm. Ja.

Beim Zusammenbasteln der Dateinamen habe ich entdeckt das ich das Dateinamen-Feld nie ausgiebig genug getestet habe und es nur innerhalb der SUB in der es per REDIM erstellt und daraufhin befüllt wird funktioniert. Long Story short: REDIM SHARED funktioniert nicht in einer SUB und deswegen ist meine INFolderAuswerten-SUB jetzt zweigeteilt damit sie zwischendurch wieder zurück springen und das Feld korrekt und geshared dimensionieren kann. Schaut blöd aus, ist hoffnungslos unelegant, funktioniert aber…

Beim Austesten habe ich entdeckt das vSNES meckert wenn sich im OUT-Folder bereits eine Datei selben Namens befindet. Da ich keine Lust habe herauszufinden wie ich dieses Dialogfeld bediene bzw. ich nicht wüßte wie ich herausfinde ob die Datei überrschreibbar ist oder nicht kontrolliert die SUB VerzeichnisseEruieren jetzt auch ob sich etwas im OUT-Folder befindet. Sollte dies der Fall sein, wird ein mit Datum und Uhrzeit im Namen versehener Backup-Folder erstellt und alle Dateien dorthin verschoben.

Tjo, und soweit wäre ich dann mal. Mal schauen ob und was heute geht. 🙂

Ain’t got no time *rant*

Ich habe es in der Zwischenzeit gerade einmal geschafft, die vSNES.ini auf dem Laptop zu sichern, vSNES zu starten, die Verzeichnisse manuell zu suchen und die nun korrekte vSNES.ini seperat abzuspeichern. Hineinzuschauem um herauszufinden wo die Pfadangaben eingetragen werden ging sich noch nicht aus.

Dafür habe ich entdeckt das es zwar schön ist das ich die Cartridge lade, diese aber aufgrund der Durchnummerierung meiner Savestates einen anderen Dateinamen hat und vSNES jetzt trotzdem herummmeckert.

Update: Dieser Umstand wurde damals bereits erkannt und „gelöst“. (Beim Laden des Roms wird einmal zusätzlich „I“ für „Ignore“ gesendet. *g*)

Na gut, dank eines Serverabsturzes kann ich gerade @wrk ein bisschen Zeit abzwicken. Mal schauen ob ich zumindest die Pfadagaben-G’schicht abhaken kann.

((Tja, hab’s verschrien… mehr als diesen Text habe ich heute (22/09/2020) nicht zusammen gebracht. trotz Serverarbsturz zu viel zu tun… @_@ ))

Die erste Pfadangabe befindet sich am Ende des [Form_Cart]-Blocks, die schlicht und ergreifend nur „Paths=“ lauten. Gegen Ende des [Form-Main]-Blocks befinde sich dann „Menu_Cart.Hints=“, „Menu_Cart.ItemCaptions=“ und „Menu_SNES.ItemCaptions=“ wobei “ Menu_Cart.ItemCaptions=“ für das Rom und „Menu_SNES.ItemCaptions=“ für das Savestate steht. Unter [Form_Open] gibt es bei „Path=“ und „LV_Status.ItemCaptions=“ ebenfalls Verweise zu den Savestates.

((Hier das Ende meines Eintrags vom 28/09/2020… Es folgt die Fortsetzung vom 29/09/2020))

Die von mir verwendeten Verzeichnisvariabeln lauten: VerzeichnisProgramm$, VerzeichnisIN$, VerzeichnisOUT$, VerzeichnisScreenshots$ und VerzeichnisVSNES$

Die Pfadangabe die NICHT geändert wird, ist die in [Form_Open] und ich habe aktuell keine Ahnung wieso.

Ich hab’s geschafft. Wo auch immer der Unterschied zwischen „LV-Sl“ und … okay. Beim hier zur gegenüberstellung in den Text kopieren habe ich ich es entdeckt. *facepalm* „LV-Sl“ versus „LV_Sl“ wobei letzteres richtig ist.

Kein Wunder das dieser Abschnitt nicht gefunden wird. Ich kann nur annehmen das ich damals mit einer bereits bearbeiteten vSNES.ini gearbeitet habe und mir nicht aufgefallen ist das diese Pfadangaben nicht geändert wurden da sie bereits korrekt in der .ini standen. Oder so. kA. Herauszufinden warum etwas funktioniert hat das nicht funktionieren sollte gehört jetzt nicht mit zu den Dingen die für mich eine andeutungsweise hohe Priorität haben.

vSNES komplett aus dem SXT gesteuert.

(Weil ich neugierig bin kann ich eventuell mal in den bisherigen Versionen herumstöbern ab wann aus dem Bindestrich ein Unterstrich wurde…)

Anyway, der SXT läuft wieder korrekt bis zum derzeitigen Ende meiner Kommandos durch. (Vllt. sollte ich das @wrk mit den anderen Pfäden sicherheitshalber auch nochmal testen…). Und somit kann ich endlich damit weitermachen meinen Code nachzuvollziehen…

Ich bin das letzte Mal bei SaveStateOeffnen 4 stehen geblieben und finde sofort das nächste Problem.

Während die 4 angibt das ich bei „cartridges“ per Cursor-Tasten den vierte Savestate anwählen möchte, startet die Auswahl nicht automatisch beim ersten File, weshalb mir jetzt zB. das 0007er-File geladen wurde.

Ich bin mir sicher auch dazu gibt es einen Eintrag in der vSNES.ini, allerdings habe ich zuerst entdeckt das mich ein Druck auf POS1/Home ebenfalls an den Anfang der Liste bringt. Während ersteres sicherlich eleganter wäre, ist letztes wahrscheinlich effektiver und für die geplante Stappelverarbeitung zweckdienlicher.

Die im Send_Keys-Eintrag im QB64-Wiki aufgelisteten Tastaturcodes funktionieren nicht. (Zumindest der für POS1 nicht.) Die hier gelisteten schon.

.pdf Datei: 005_vba-tutorial_Tastatur_&_Maus_29_09_2020.pdf

Was ich noch soeben entdeckt habe ist, das ich aktuell mit der 4 nicht das vierte File anwähle sondern da 4x nach unten gedrückt wird das fünfte. Sollte ich ebenfalls zur erleichterten Nachvollziehbarkeit ändern.

So. Der nächst Punkt ist AllesExtrahieren und der besteht zZt. aus folgendem Text:

SUB Alles Extrahieren
   'STR+S -> Save Scene
   'ALT+L -> switch to "layers"
   'ALT+B -> switch to "regular backgrounds"
   '-MAUS auf BG1
   '-STR+S -> Save Scene
   '-MAUS auf BG2
   '-STR+S -> Save Scene
   '-MAUS auf BG3
   '-STR+S -> Save Scene
   'NICHT? -MAUS auf BG4
   'NICHT? -STR+S -> Save Scene
END SUB

Hier habe ich seinerzeit also aufgehört und ab hier sollte ich jetzt weitermachen…

Ich habe tatsächlich @wrk Zeit gefunden und das am 18.09.2020 angedachte Sreenshot-Folder-erstellen-Feature eingebaut.