Darstellung möglich oder nicht? (15-Puzzle)

Es gibt 62 Antworten in diesem Thema, welches 9.127 mal aufgerufen wurde. Der letzte Beitrag (31. August 2021 um 10:20) ist von WebFritzi.

  • Die beiden linken Pixelspalten sind in meinem Beispiel in beiden Kacheln gleich, werden also nicht gemischt. Das Schachbrettmuster (Bit 5 bis 0) für die mittelgraue Farbe ist in den Kacheln verschieden, sodass sie beim Wechsel mit 50Hz gut gemischt werden und kaum Flimmern entsteht. Bei dem anderen Bild von Dir wäre das auch so, nur dass die dunkle Spalte als Zeile unten liegt, im mittelgrauen Bereich wieder das Schachbrettmuster, einmal dunkel auf hell, bei der anderen Kachel hell auf dunkel.

    Hab jetzt erst den Trick kapiert. Coole Idee, könnte klappen. Frage ist nur, ob das Hellgrau-Gemisch dem Standard-Hellgrau einigermaßen gleichkommt, was die Hintergrundfarbe sein soll.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Also so sähe es mit ECM zumindest noch anschaulich aus (wenn es nur um Buttons geht):

    Da hast du aber jetzt die Linien außerhalb gemalt, oder? Sonst hättest du ja z.B. oben rechts weiß, hell- und dunkelgrau zusammen in einer Kachel, was nicht geht.

    Das geht natürlich - und so habe ich es auch in Minesweep gemacht - aber damit kannst du nicht zwei Buttons direkt nebeneinander malen. Dazwischen sind immer 14 Pixel Platz.

    Ja, sorry. Das ist ja genau so, wie du das bereits realisiert hattest. Ich habe somit auch keine bessere Idee.

  • Ok, also es soll so sein, dass die beiden direkt aufeinander hocken.

  • Habe hier noch eine leicht optimierte Fassung - zwar nicht ganz, was du suchst - aber oben und unten ist nun weniger Abstand:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die Buttons kann man so dann halt nur entweder vertikal -ODER- horizontal staffeln.

    Edit: Habe noch die horizontale Variante hinzugefügt.

  • aber oben und unten ist nun weniger Abstand:

    Jo, 7 Pixel. :wink:

    EDIT: Huch? Die unteren hatte ich gar nicht gesehen. Schick! Genauso kann man es natürlich horizontal machen. Aber nur eins von beiden geht.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Ich habe mich jetzt für die Variante mit Sprites entschieden. Mal sehen, ob ich das hinkriege. Da mir 64 Zeichen sicher nicht genügen werden, werde ich Hires-Bitmap benutzen. Ohne Raster-Interrupt und Sprite-Multiplexing sieht es erstmal wie unten aus. Beim Wechsel von Buttonzeile 1 zu Zeile 2 sind gerade mal 2 Rasterlines Platz um die Sprites neu zu positionieren.

  • Ohne Raster-Interrupt und Sprite-Multiplexing sieht es erstmal wie unten aus.

    Das entspricht ja grundsätzlich schonmal meinem Vorschlag, die dritte Farbe in das Zeichen links von (bzw. über) dem jeweiligen Zeichen zu verschieben, also ein weiteres Zeichen mitzubenutzen, um die 2-Farben-Beschränkung einzuhalten.

    Ich habe mal geguckt, ob das nicht auch ohne Sprite-Tricks funktionieren kann. Ich kam zu folgendem Ergebnis und finde, damit könnte man doch eigentlich auch schon ganz gut leben – ganz ohne technische Tricks, nur mit Pixeleien. Aber ich will dich nicht davon abhalten, mit Sprites das Ganze weiter zu optimieren.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Ohne Raster-Interrupt und Sprite-Multiplexing sieht es erstmal wie unten aus.

    Das entspricht ja grundsätzlich schonmal meinem Vorschlag, die dritte Farbe in das Zeichen links von (bzw. über) dem jeweiligen Zeichen zu verschieben, also ein weiteres Zeichen mitzubenutzen, um die 2-Farben-Beschränkung einzuhalten.

    Ich hatte das Problem zu Anfang falsch erklärt. Im weiteren Verlauf des Threads habe ich noch ein anderes Problembild gepostet, auf dem dargestellt ist, was ich erreichen möchte. Das sind genau die Lücken in meinem letzten Bild, die ich mit Sprites auffüllen möchte.

    Deinen Vorschlag (Bild) finde ich interessant, aber es ist nunmal nicht das, was ich erreichen möchte. Aber deine Zahlen finde ich schick. :smile:

    Was hältst du eigentlich von 3x6-Fonts? Ich benutze momentan ein 3x7-Font, was in den Buttons ganz ok ist, aber in der Titelleiste des Fensters grenzt die obere Berandung genau an den Titelstring. Das sieht nicht so toll aus.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Deinen Vorschlag (Bild) finde ich interessant, aber es ist nunmal nicht das, was ich erreichen möchte. Aber deine Zahlen finde ich schick.

    Mir ging es auch eher darum, für mich selbst nach einer Lösung zu suchen, die ohne Sprites etc. auskäme. Meine Ziffern kann ich dir gerne überlassen – hier ist eine verbesserte 3x6-Version:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Ich habe mich jetzt für die Variante mit Sprites entschieden. Mal sehen, ob ich das hinkriege....
    Beim Wechsel von Buttonzeile 1 zu Zeile 2 sind gerade mal 2 Rasterlines Platz um die Sprites neu zu positionieren.

    Hast Du schon mal Multiplexer programmiert? Ein paar schnelle Hinweise, die vielleicht unerwartet kommen:

    - Sprites sind technisch immer 21 Pixel hoch, die auch gnadenlos zu Ende gezeichnet werden. Du kannst irgendwo innerhalb dieser 21 Pixel das Sprite um 21 Pixel weiterschieben.

    - Der grafische Inhalt muss sich nicht danach richten. 21 Pixel Grafik sind leicht verständlich und naheliegend, aber 20 sind nützlich, wenn auch verwirrend. Mit den Stichworten Maniac Mansion und Multiplexer sollte sich eine Diskussion dazu finden lassen.

    - Die Spriteblöcke kannst Du alle auf einmal durch umschalten des Bildschirms ändern.

  • Beim Wechsel von Buttonzeile 1 zu Zeile 2 sind gerade mal 2 Rasterlines Platz um die Sprites neu zu positionieren.

    - Sprites sind technisch immer 21 Pixel hoch, die auch gnadenlos zu Ende gezeichnet werden.

    Ich hätte da eine Idee, wie man beide Probleme in einem Rutsch erledigen könnte. Dafür müsste man aber einen weiteren Trick bemühen. Bei der Score-Anzeige von Bomb Jack DX wurde der verwendet, nämlich innerhalb eines Hires-Sprites vertikal einen Farbwechsel durchzuführen (zumindest habe ich das seinerzeit so verstanden – Endurion kann dazu vielleicht mehr erzählen).

    Dann könnte man das so anlegen (links die Bitmap, rechts die Sprites):

    Bitte melde dich an, um diesen Anhang zu sehen. Bitte melde dich an, um diesen Anhang zu sehen.

    Die weißen und grauen Striche (im rechten Bild) sind ja die Sprites, die man ergänzen müsste. In grün habe ich mal 2 Sprite-Backgrounds eingefärbt, damit man die Größe erkennt. Man müsste jetzt "nur" im Sprite einen Farbwechsel erzeugen, dann könnte man beide Striche in ein Sprite packen und hätte am Ende sogar noch Platz bis zum nächsten.

    Oder was evtl. auch funktionieren könnte: Die Sprite-Priorität so ändern, dass sie hinter dem Bitmap-Inhalt liegen. Allerdings weiß ich nicht, wie das bei Hires aussieht. Wenn dadurch die Bitmap-Linien vor dem Sprite lägen, die Background-Color aber dahinter, dann bräuchte man das Sprite nicht umfärben, sondern man könnte einfach ein zweifarbiges Multicolor-Sprite verwenden. Die Hires-Bitmap-Linien würde dann die unerwünschten Teile der doppelt-breiten MC-Sprite-Linien abdecken. Das MC-Sprite könnte dann so aussehen:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Oder was evtl. auch funktionieren könnte: Die Sprite-Priorität so ändern, dass sie hinter dem Bitmap-Inhalt liegen. Allerdings weiß ich nicht, wie das bei Hires aussieht. Wenn dadurch die Bitmap-Linien vor dem Sprite lägen, die Background-Color aber dahinter, dann bräuchte man das Sprite nicht umfärben, sondern man könnte einfach ein zweifarbiges Multicolor-Sprite verwenden. Die Hires-Bitmap-Linien würde dann die unerwünschten Teile der doppelt-breiten MC-Sprite-Linien abdecken. Das MC-Sprite könnte dann so aussehen:

    Das könnte echt funktionieren. Ich habe gerade neulich noch gelesen, dass die beiden Bitmap Nibble-Farben bei der Sprite-Priorisierung eine besondere Rolle spielen. Müsste man sich nochmal angucken oder einfach ausprobieren.

    Mir ist Folgendes noch aufgefallen: Selbst wenn ich das mit nem Sprite-Hack hinbekommen würde, müsste ich auch noch auf Klicks reagieren (die Sprites dementsprechend einfärben - und das nur für einen Button) und auf Dialoge, die über mein Fenster gelegt werden. Das würde super aufwändig werden. Deshalb probiere ich es jetzt doch erstmal mit der Lösung, wo Farben "gemischt" werden.

    Hoogo Vielen Dank für die Bemerkung. Im Moment verstehe ich es so, dass die Tatsache, dass die 21 Zeilen "gnadenlos" durchgezeichnet werden, mir keine Möglichkeit lässt, mein Vorhaben mit Hi-Res Sprites durchzuführen, weil die Farben stets wechseln.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Die beiden linken Pixelspalten sind in meinem Beispiel in beiden Kacheln gleich, werden also nicht gemischt. Das Schachbrettmuster (Bit 5 bis 0) für die mittelgraue Farbe ist in den Kacheln verschieden, sodass sie beim Wechsel mit 50Hz gut gemischt werden und kaum Flimmern entsteht. Bei dem anderen Bild von Dir wäre das auch so, nur dass die dunkle Spalte als Zeile unten liegt, im mittelgrauen Bereich wieder das Schachbrettmuster, einmal dunkel auf hell, bei der anderen Kachel hell auf dunkel.

    Leider ergibt das nicht den gewünschten Effekt (siehe angehängtes Video). Zumindest sieht es im Emulator doof aus. Ich werd's gleich mal auf meinem U64 ausprobieren, glaube aber nicht, dass es dort besser ist. Mein Raster-IRQ sieht wie folgt aus (ich lasse mich bei Rasterline 0 benachrichtigen):

    EDIT: Auf der U64 sieht es ein klein wenig besser aus, aber man sieht schon krass, dass da eine Kachel flimmert.

  • Auf der U64 sieht es ein klein wenig besser aus, aber man sieht schon krass, dass da eine Kachel flimmert.

    Ich würde so Interlace-Darstellungen nur machen, wenn entweder keine großen Flächen flickern müssen oder aber die Helligkeiten der beiden Farben recht nah (1 Stufe) beieinander sind. Bei NTSC ist es natürlich wegen 60 Hz nicht ganz so schlimm.

    ---

    Ich habe Bitte melde dich an, um diesen Link zu sehen. noch ein wenig weiter gesponnen, da sie hier aber (außer den Ziffern) nicht benötigt wird, möchte ich sie für ein Game zur Verfügung stellen, das sich vielleicht jemand ausdenken (und umsetzen) möchte, der sich durch die Grafik inspiriert fühlt.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • aber man sieht schon krass, dass da eine Kachel flimmert

    Ja. ^^ Sollte eigentlich auch kein Vorschlag sein, sondern nur eine Möglichkeit aufzeigen, die aber auch ihre Nachteile hat.

    Wollte eh noch mal was allgemeines dazu sagen. Daaamals hatte ich mich (zu) viel mit technischen Tricks befasst, um eine bestimmte Darstellung oder Funktion zu erreichen. Heutzutage halte ich von solchen Klimmzügen (einschließlich Interlacefarben) nicht mehr viel und tendiere mehr dazu, mit den normalen Möglichkeiten zu arbeiten und die ersparte Rechenzeit lieber für Algorithmen oder nützliche Features zu verwenden.

    Das heißt für dieses Problem hier, dass ich die Darstellung von Wiz und Retro bevorzugen würde. Ich persönlich würde auch von Sprites absehen, erst recht von Multiplexing für so was. Was die 50Hz-Mischfraben angeht, darf man eben nicht vergessen, dass das am TFT meistens nicht synchron ist und nervige Zuckungen verursacht. Allein deswegen ist das auf meiner Trickliste gestrichen. An der Problematik ändert auch die längste retrofundamentalistische Debatte nichts. ;)

    Inwiefern ist denn das Beispiel in Bitte melde dich an, um diesen Link zu sehen. noch nicht passend? Gibt es eine gemalte Vorlage, die das gewünschte Ziel zeigt, zunächst ungeachtet der Restriktionen?

    btw Was die Zahlen von Retro angeht, fiel mir auf, dass "meine" auch so ähnlich aussehen. Ich hatte meinen 3x6-Font für Multicolor Anfang des Jahres bewusst "from scratch" gepixelt. Ziel war eine gute Lesbarkeit ohne Kantenglättung und etwas Style drin. Es ist ähnlich wie mit der Lego-Figur, dem Streit darum und Anwalt Solmeckes Feststellung, dass bei einer stark eingeschränkten Variationsmöglichkeit der Darstellung einer vorgegebenen Form Ähnlichkeiten oder Übereinstimmungen auch dann entstehen, wenn man nicht kopiert. Der Hauptunterschied bei mir dürfte der angestrebte "Sack-Stil" sein.

    Bitte melde dich an, um diesen Anhang zu sehen.

  • atomcode Danke für deine Ausführungen.

    Inwiefern ist denn das Beispiel in Bitte melde dich an, um diesen Link zu sehen. noch nicht passend? Gibt es eine gemalte Vorlage, die das gewünschte Ziel zeigt, zunächst ungeachtet der Restriktionen?

    Naja, stell dir das unten angehängte Bild mit durchgezogenen weißen bzw. grauen Linien vor. Retrofan hat diese geschickt angedeutet bzw. überspielt.

    Retrofan Da mir das Ganze hier zu kompliziert wird bzw. ich nicht weiß, ob es überhaupt realisierbar ist, würde ich gerne deine Vorlage ausprobieren. Wäre das für dich ok? Ich habe vor ein 15-Puzzle-Spiel (Bitte melde dich an, um diesen Link zu sehen.) zu programmieren, siehe unten. Mit wahlweise 3x3-, 4x4-, und 5x5-Feld. Dein Bild aus dem anderen Thread und atomcodes Argumentation haben mich überzeugt.

    Bilder

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

    2 Mal editiert, zuletzt von WebFritzi (19. August 2021 um 20:10)

  • Naja, stell dir das unten angehängte Bild mit durchgezogenen weißen bzw. grauen Linien vor. Retrofan hat diese geschickt angedeutet bzw. überspielt.... Ich habe vor ein 15-Puzzle-Spiel (Bitte melde dich an, um diesen Link zu sehen.) zu programmieren,

    Wieso eigentlich keine Multicolor-Charset für den Zweck? Hellgrau als Hintergrund, Hellblau und Dunkelgrau als MC-Farben, Schwarz für Hires-Zahlen, Weiß+8 für die Rahmen.

    Hoogo Vielen Dank für die Bemerkung. Im Moment verstehe ich es so, dass die Tatsache, dass die 21 Zeilen "gnadenlos" durchgezeichnet werden, mir keine Möglichkeit lässt, mein Vorhaben mit Hi-Res Sprites durchzuführen, weil die Farben stets wechseln.

    Diese 21 Pixel sind sowas wie eine technisch erzwungene Höhe. Es ist kein Problem, per RasterIRQ Farben und Grafik mittendrin umzuschalten.

    Mit Sprites hinter Grafik hab ich früher auch mal einen Bitte melde dich an, um diesen Link zu sehen. gemacht.

  • Wieso eigentlich keine Multicolor-Charset für den Zweck?

    Könnte dann bspw. so ähnlich aussehen. Hat naturgemäß einen etwas gröberen Charakter, aber funktioniert. Die Verschiebe-Animation könnte man wiederum mit drei Sprites machen, zwei Multicolor-Sprites für die Nummernplatte und ein schwarzes HiRes-Sprite für die Zahl. Vorm Verschieben die 9-Char-Platte entfernen, nach dem Verschieben an neuer Stelle einfügen.

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Wieso eigentlich keine Multicolor-Charset für den Zweck? Hellgrau als Hintergrund, Hellblau und Dunkelgrau als MC-Farben, Schwarz für Hires-Zahlen, Weiß+8 für die Rahmen.

    Weil dann die Pixel alle doppelt sind und ich mir nicht vorstellen kann, dass das gut aussieht. Und außerdem, weil man dann für den Text auf den Buttons sehr eingeschränkt ist.

    Mit Sprites hinter Grafik hab ich früher auch mal einen Minesweeper gemacht.

    Ach, du warst das! :smile: Natürlich hatte ich mir mehrere Minesweeper-Programmme angeschaut und habe deins als das beste befunden.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.
  • Wieso eigentlich keine Multicolor-Charset für den Zweck?

    Könnte dann bspw. so ähnlich aussehen.

    Sieht erstmal gar nicht so schlecht aus. Frag mich aber, wie du die Zahlen und Buchstaben so hingekriegt hast. Das geht mMn so nicht.

    Bitte melde dich an, um diesen Link zu sehen. (Bitte melde dich an, um diesen Link zu sehen.)Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.