{"id":414,"date":"2019-01-10T10:33:26","date_gmt":"2019-01-10T09:33:26","guid":{"rendered":"http:\/\/www.acidpool.at\/005_wordpress\/?p=414"},"modified":"2019-05-07T17:53:35","modified_gmt":"2019-05-07T15:53:35","slug":"acht-mal-acht","status":"publish","type":"post","link":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/2019\/01\/10\/acht-mal-acht\/","title":{"rendered":"Acht mal acht"},"content":{"rendered":"\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1004\" height=\"288\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_header.jpg\" alt=\"\" class=\"wp-image-415\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_header.jpg 1004w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_header-300x86.jpg 300w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_header-768x220.jpg 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n<p>Eine Sache die ich beim Herumspielen entdeckt habe und die mir in Folge Kopfzerbrechen bereitet hat, war das manche Scenes gr\u00f6\u00dfer als der Bildschirm (<em>512x488px<\/em>) sind.<\/p>\n<p>Ein gutes (<em>und afaik das erste<\/em>) Beispiel hierf\u00fcr sind die Einzelteile des Parallax-Scrolling-Skyline-Intros. zB. ist der Skyline-Layer.<\/p>\n<p>Kommando zur\u00fcck. Wie ich jetzt beim Auslesen der Werte entdeckt habe, ist der fertige Screen 512x488px und der Skyline-Layer 512x256px. Und das obwohl im Screen nur ein Ausschnitt des Layers zu sehen ist. Wie das geht? Durch Zoom aka Pixelwiederholung. Ich habe im Screen keinen einzigen einzelnen Pixel gefunden, alle waren 2&#215;2 Pixel gro\u00df.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-423 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Skylines.jpg\" alt=\"\" width=\"1027\" height=\"514\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Skylines.jpg 1027w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Skylines-300x150.jpg 300w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Skylines-768x384.jpg 768w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Skylines-1024x512.jpg 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Was bedeutet das jetzt f\u00fcr mich? Nichts. Nach wie vor werden rechts und unten im Scene_View-Fenster Zeilen ausgeblendet wenn man die 1:1 Ansicht w\u00e4hlt. Da ich in der <code>vsnes.ini<\/code> keinen Eintrag \u00fcber die Zoomstufe finde, und ich mich nicht darauf verlassen m\u00f6chte das tats\u00e4chlich niemals ein Layer einen gr\u00f6\u00dferen Wert als 512 aufwei\u00dft, bleibe ich meiner urspr\u00fcnglichen Idee mit einer verkleinerten Zoomstufe zu arbeiten treu.<\/p>\n<p>Warum? Im ersten Schritt werden ja alle Layer exportiert. Im zweiten werden sie miteinander verglichen um herauszufinden in welchen es tats\u00e4chlich \u00c4nderungen gab (<em>zB. wird sich der Skyline-Layer die gesamte Sequenz lang nicht \u00e4ndern.<\/em>). Dann werden die Savestates die diese Undikat-Layer enthalten wieder geladen und die Sprites exportiert. Da geschickte Grafiker Sprites so designed haben, da\u00df ein und das selbe mehrmals verwendet werden kann und ich schon im Vorfeld verhindern m\u00f6chte das zumindest pro Savestate nicht x-mal das selbe Sprite gespeichert wird, mache ich mir ein weiteres vSNES-Feature zu eigen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-418 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_im_Detail.jpg\" alt=\"\" width=\"706\" height=\"457\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_im_Detail.jpg 706w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/8x8_im_Detail-300x194.jpg 300w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/p>\n<p>Bewegt man den Mauscursor im Reiter &#8222;layers&#8220; \u00fcber das Bild, werden rechts unter &#8222;tile info&#8220; Details \u00fcber das sich aktuell unter dem Cursor befindliche Sprite angezeigt. zB. auch &#8222;tile index&#8220;. Wenn ich es schaffe diese Infos auszulesen (<em>Pseudo-OCR incoming&#8230;<\/em>) kann ich Duplikate vermeiden.<\/p>\n<p>Das war jetzt viel Bla, von dem ich afair einiges schonmal erw\u00e4hnt hatte, aber daf\u00fcr sollte das Gesamtbild jetzt auch au\u00dferhalb meines Kopfes klar(<em>er<\/em>) sein. *g*<\/p>\n<p>Womit ich heute Teile des Vormittages verschwendet habe, war die verschiedenen Zoomstufen in die entsprechenden Quadrate zu zerlegen. Bei 1:1 war es logisch:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-419 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu1.jpg\" alt=\"\" width=\"1336\" height=\"849\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu1.jpg 1336w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu1-300x191.jpg 300w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu1-768x488.jpg 768w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu1-1024x651.jpg 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Bei 1:2 ebenfalls. Ein Quadrat hat 4&#215;4 Pixel. Geht man davon aus das die Skyline 512x256px gro\u00df ist, kann man in dieser Zoomstufe 1024x512px gro\u00dfe Layer zerlegen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-420 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu2.jpg\" alt=\"\" width=\"1336\" height=\"849\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu2.jpg 1336w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu2-300x191.jpg 300w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu2-768x488.jpg 768w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu2-1024x651.jpg 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Eigentlich hatte ich photoshopgesch\u00e4digt mit kreativen Zoomstufen wie 1:3 oder 1:2,75 gerechnet, aber die n\u00e4chste Stufe die vSNES anbiete ist 1:4. Hier entspricht ein Quadrat (<em>Trommelwirbel bitte<\/em>) 2&#215;2 Pixel und es sind 2048x1024px gro\u00dfe Layer m\u00f6glich.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-421 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu4.jpg\" alt=\"\" width=\"1336\" height=\"849\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu4.jpg 1336w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu4-300x191.jpg 300w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu4-768x488.jpg 768w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/SceneView1zu4-1024x651.jpg 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Es g\u00e4be noch die Stufe 1:8 bei der jeder Pixel einem Sprite entspricht und Layer bis 4096x2048px auswertbar sind aber ich behaupte mal das ich diese Stufe nie ben\u00f6tigen werde. (<em>Auch wenn es verf\u00fchrerisch w\u00e4re den Curosr immer nur einen Pixel weiter zu verschieben und fix davon ausgehen zu k\u00f6nnen das der Layer immer komplett angezeigt wird. Hm&#8230;<\/em>)<\/p>\n<p>Und damit w\u00e4re das Kapitel Zoomstufen und alle Sorgen die ich mir diesbez\u00fcglich gemacht habe abgehakt. Als n\u00e4chstes sollte ich mich entweder mit dem erkennen der ausgeblendeten bg-Reiter oder meinem Pseudo-OCR auseinander setzen&#8230;<\/p>\n<p>Da ich die ausgeblendeten Reiter allerdings mit hoher Wahrscheinlichkeit \u00fcber die Kontrolle einzelner Pixel (<em>Schwarz = aktiv, Dunkelgrau = inaktiv<\/em>) l\u00f6sen k\u00f6nnen werde, wird es wohl das Pseudo-OCR werden *g*<\/p>\n<p>[~1h sp\u00e4ter ] Das war einfacher als erwartet.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-428 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Ziffernposition.jpg\" alt=\"\" width=\"641\" height=\"375\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Ziffernposition.jpg 641w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Ziffernposition-300x176.jpg 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/p>\n<p>Gl\u00fccklicherweise hat creaothceann eine 5x9px Schrift verwendet deren Position sich (<em>zumindest bei den Ziffern, mehr habe ich mir nicht angesehen..<\/em>) nicht \u00e4ndert\/anpasst. Die Felder in welchen sich die auszulesenden Pixel befinden \u00e4ndern sich also nicht.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-429 aligncenter\" src=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Ziffern.jpg\" alt=\"\" width=\"529\" height=\"369\" srcset=\"http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Ziffern.jpg 529w, http:\/\/www.acidpool.at\/005_wordpress\/wp-content\/uploads\/2019\/01\/Ziffern-300x209.jpg 300w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/p>\n<p>Ich hatte die Hoffnung das ich in jeder Ziffer einen Pixel finden der sich nur in dieser Ziffer befindet, habe aber keinen gefunden. Dann setzte ich darauf das die Summer der ausgef\u00fcllten Pixel in einer Zeile\/Spalte R\u00fcckschl\u00fc\u00dfe zuliese aber dem war auch nicht so, auch \u00fcber die Gesamtsumme aller Pixel zu gehen wurde durch &#8222;6&#8220; und &#8222;9&#8220; zerst\u00f6rt. Sollte ich also nicht noch den ultimativen Geistesblitz haben, muss ich tats\u00e4chlich mindestens die H\u00e4lfte aller Pixel &#8230; warte mal&#8230;<\/p>\n<p>0 = X&#8230;X&nbsp;&nbsp; 1 = ..X..&nbsp;&nbsp; 2 = &#8230;X.&nbsp;&nbsp; 3 = ..XX.&nbsp;&nbsp; 4 = .X.X. 5 = X&#8230;X&nbsp; 6 = XXXX.&nbsp;&nbsp; 7 = ..X..&nbsp; 8 = .XXX.&nbsp; 9 = .XXXX<\/p>\n<p>Youp, die mittlere Zeile ist bei jeder Ziffer einzigartig. Damit habe ich 45 zu kontrollierende Pixel auf 5 reduziert. \\o\/ Wohoo!<\/p>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine Sache die ich beim Herumspielen entdeckt habe und die mir in Folge Kopfzerbrechen bereitet hat, war das manche Scenes gr\u00f6\u00dfer als der Bildschirm (512x488px) sind. Ein gutes (und afaik das erste) Beispiel hierf\u00fcr sind die Einzelteile des Parallax-Scrolling-Skyline-Intros. zB. ist der Skyline-Layer. Kommando zur\u00fcck. Wie ich jetzt beim Auslesen der Werte entdeckt habe, ist &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/2019\/01\/10\/acht-mal-acht\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eAcht mal acht\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":415,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-414","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-srsnesdrmm"],"_links":{"self":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/posts\/414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=414"}],"version-history":[{"count":6,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/posts\/414\/revisions"}],"predecessor-version":[{"id":487,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/posts\/414\/revisions\/487"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/media\/415"}],"wp:attachment":[{"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=414"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.acidpool.at\/005_wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}