Life sucks (yeah yeah yeah)

Well, herauszufinden woher die in meinem Kopf omnipräsente Textzeile „Life sucks (yeah, yeah, yeah)“ stammt, hat jetzt länger gedauert als ich zugeben möchte/sollte. >_<

Anyway, belassen wir es dabei das auch ich gerade „big IRL changes“ durchlebe und widmen uns den hier in diesem Blog essenzielleren Dingen: I’m working on the SXT again.

Um genau zu sein habe ich das gesamte SR:SNES:SRDMM-Projekt wieder ausgegraben und reanimert: [Project 2024] (Ja, einen neuen reißerischeren Namen hab ich dem Ding auch verpasst. xD)

Und da ich mich nicht nur komplett in ESO verkriechen kann … okay, sollte (btw. Ich hab endlich CP1000 geknackt und stehe kurz davor Cadwells Gold abzuschließen…) habe ich auch endlich wieder aktiv am SXT weitergebastelt.

Nach all dem Brainstorming/Hirngewichse im oben verlinkten Text habe ich tatsächlich erfolgreich damit begonnen alle „SLEEP 1„-Pausen gegen tatsächliche Kontrollen auf Änderungen am Bildschirm zu ersetzen. Dies bedeutet zwar einen erheblichen Mehraufwand und etliche Zeilen mehr Code, aber der Geschwindigkeitsgewinn ist unglaublich. Wenn ich den SXT_day19 fertig modifiziert habe, werde ich mir in der Console die Zeiten anzeigen lassen und diese dann vergleichen.

Heute bin ich dabei wieder auf einen Punkt gestoßen an dem eine Eingabe nicht funktioniert, der SXT aber ohne Störung weiter läuft. Um genau zu sein geht es darum das beim Speichern eines Screenshots der vorgeschlagene Dateiname im der Eingabefeld gelöscht werden soll, bevor in dieses via _SCREENPRINT der spezifisch generierte Name eingetragen werden soll. Dies passiert aber nicht. Zum Glück ist der Dateiname markiert, weshalb mit dem ersten eingetragenen Buchstaben der gesamte alte Text verschwindet, aber verlassen möchte ich mich darauf nicht.

Bei meinen Versuchen bin ich darauf gekommen das es ohne Zweifel ein Problem mit dem Timing ist. Wenn ich bis dahin alle Pixel-Kontrollen (fyi Pseudokreativ habe ich die SUB WhatAreYouWaitingFor getauft.) umgesetzt habe kann ich sagen ob ich recht hatte oder das Problem doch tiefgreifender ist.

Was tut sich sonst so?
Uhm, ich habe weder Zeit, Muse oder Lust gehabt am MLSRCYOA oder am  Project: JAST weiterzuarbeiten. Ersteres dümpelt derweilen noch in der Warteschleife, da ich mich irgendwo in den Handlungssträngen verfranst habe (Pun not intended. but welcomed.), und jetzt das gesamte bisherige Skript noch einmal mit verschärftem Augenmerk auf den zeitlichen Ablauf durchackere.

 Project: JAST liegt mangels weiterer Festival-Erfahrungen („big IRL changes„) noch eine Runde auf Eis. Denn genau so wie ich seinerzeit nicht mehr an NichtGruftig.at weitergezeichnet habe als ich aufhörte regelmäßig mit Gruftis abzuhängen, glaube ich auch nicht das der Besuch von zwei Metal-Festivals ausreicht um das entsprechende Feeling rüberbringen zu können. (Falls mich iwer iwohin zu Recherchezwecken mitnehmen mag, bitte kontaktieren! xD) Die Idee an sich ist aber im Gegensatz zu meinem mittlerweile zu Grabe getragenen Outage nicht tot. Denn während heutzutage niemand mehr mit dem 2012er-Weltende etwas anfangen kann, sollten Metal-Festivals mMn. immer Aktualität haben. ^_^

Still alive, sorry.

Obwohl hier (im Vordergund) nix weitergeht, lebe ich tatsächlich noch. Und ich bin sogar nicht komplett untätig . Allerdings befindet sich noch nichts in einem tatsächlich präsentierbaren Zustand weshalb das en gros hier noch auf „privat“ geschaltet ist.

Beginnen wir mal mit dem Updates zu den Themen der letzten Einträge:

Das American Hero Upscale-Projekt ist komplett gekübelt. Warum? Weil Zigurat Games ohne diesbezüglicher Ankündigung (afaik) selbst eine Unrated-Version davon veröffentlicht hat. Zuerst nur via Limited Run Games, aber dann auch auf GOG. Zum selben Preis und ohne Rabatt für Besitzer der Rated-Version aber einem geschenkten Gaul schaut man nicht ins Maul.

Die Jungs vom Team Turbo haben mittlerweile ihr eigenes Turbonale 2021-Video hochgeladen. Der relevante Teil, also der bei dem man sehen kann wie mein Beitrag nicht gewinnt, beginnt bei „5:42 Beste Animation/VFX“ 😉

Der SXT liegt auf Eis, das Projekt „SR-SNES-DRMM“ ebenfalls. Warum? Erstens kann ich @wrk QB64PE nicht mehr ausführen, da der supertolle M$-Defender sofort Alarm schlägt. Dann wäre da noch das ichTwinStick-Shooter eigentlich nicht mag/beherrsche und somit auch keinen kreieren sollte/möchte und drittens komme ich einfach nicht und nicht in die Gänge…

Soviel dazu. Was gibt es jetzt tatsächlich Neues?

Auf der einen Seite wäre da mal das MLSRCYOA.
Hinter dem Acronym versteckt sich der Arbeitstitel „My little Shadowrun choose your own adventure“ und der Name ist Programm. Aktuell arbeite ich mit Robert H.s Unterstützung noch am Plot aber im Endeffekt soll es ein Abenteurspielcomic werden. Viiieeel Arbeit aber auch schon sehr weit fortgeschritten.

Bei Project: JAST steckt hinter dem Acronym einfach nur „Just another stupid tale“ und es geht um ein dumme aber imho sehr sehr spannende Idee für einen Comic der in der Welt der Metal Festivals spielt und (Trommelwirbel bitte!) zum allerersten Mal keine wahnsinnig gewordene KI als Atagonisten hat. Während die Story ebenfalls schon sehr weit fortgeschritten ist, versuche ich aktuell die Protagonisten so zu zeichnen das sie den Bildern in meinem Kopf entsprechen.

Ich wäre nicht ich wenn ich nicht an irgendeinem Projekt mit Shadowrun-Bezug herumprogrammieren würde. Wie schon erwähnt, blockt mich @wrk der M$-Defender. Aus diesem Grund bin ich bei QBJS gelandet. Dabei handelt es sich um ein im Browser laufendes an QB64 angelehntes Basic das den Code allerdings in Javascript, und nicht in C und C++ umwandelt.

Aus einer Laune heraus wurde SR-SNES-DRMM zu SRRDM. Diese Acronym entschlüssle ich vorerst nicht, nur so viel Shadowrun meets the GameBoy. Aktuell sitze ich am PixelEditor der in mir gewohnter wahnsinnigerweise selbstgeschrieben und auf 8x8px-Tiles basierend sein soll. Warum? Um so viel GameBoy-Feeling wie möglich herauszuholen, möchte ich die Grafiken im Spiel ebenfalls nur aus 8x8px-Tiles zusammenstückeln, und je früher ich mich daran gewöhne so zu arbeiten desto leichter sollte ich mir im finalen Programm dann damit tun. Außerdem kann werde ich entliche Routinen wiederverwenden können und muss mir nur einmal den Kopf zerbrechen. 😉

Warum verwende ich nicht einfach das GB Studio?
Weil @wrk sogar die Dokumentation geblockt wird und ich gar nicht probieren will ob ich das Studio selbst ausführen kann, ohne das die ohne Alarmglocken bis hinauf zur IT läuten. Zweitens will ich kein richtiges GameBoy-Spiel machen, sondern ein daran angelehntes. Eines das Look & Feel einfängt aber durch moderne Features erweitert. So wie es TMNT Shreddes Revenge mit den SNES-Turtles Beat’em’Ups gemacht hat.

Und sonst?

Sonst bin ich unvorsichtigerweise schlußendlich nun doch an ein MMORPG herangeführt worden und für alle Beteiligten wenig überraschend picken geblieben. Und so jage ich also nun tagein tagaus meine entsetzlich verskillten aber für mich lustig zu spielenden Bosmer Nachtklingen DD durch die Gegend.

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.

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.