Hello, Guest the thread was called913 times and contains 26 replays

last post from Vernunftmensch at the

Standalone Explosionseffekt (alles auf, von oben bis unten Sprites, Textbildschirm intakt)

  • Hi, Freunde des guten ASM.


    Hucky und ich haben ein Problem und ich hoffe, daß Leute, die es wissen nicht schon tot oder verschollen sind.


    Ich möchte die oberste Zeile nach rechts und links aufmachen UND den Textbildschirm anzeigen. Allerdings hält der CPU an und die grüne Linie startet vor der Zeile und endet damit nach der Zeile.


    Im Anhang der Effekt, den ich will.. (also leider noch ohne alles auf)

  • Quote from schumi

    VM: rahmen auf mit badlines geht nicht mit mehr als 4 sprites


    es geht halt nicht, bei mehr als 4 sprites ist der cycle wo du den rahmen aufmachen musst schon vom sprite dma besetzt

    Kann das sein? Ich habe eine Demo von Half-Life gesehen, da meine ich, daß es acht sind. Oder benutzen die einen Trick? Wenn ja, wie ist dieser?

  • Der Trick wäre, Badlines zu vermeiden.

    Dann werden allerdings auch nie neue 40 Zeichen aus dem Screen gelesen, die ersten 40 werden bis unten durchgezogen, im Prinzip sogar immer weiter wiederholt, bis sie auf dem nächsten Frame nochmal dargestellt werden.

    Im Bitmap-Modus lässt sich am einfachsten noch was hübsches draus machen.

  • Ich hatte Vernunftmensch auf der DoReCo Party den Trick erklärt wie man für Sprites den Rahmen links und rechts aufbekommt.

    Das ganze hab ich Anfang der 90'er zuletzt gemacht und musste erstmal ne Intro von mir von damals zerlegen weil im Kopf fast alles weg war.

    Ich weiß nur noch, dass es mit den vier oberen Sprites funktioniert. Damals meinte wer, dass es auch mit fünf ginge - hab ich nirgends gesehen.

    So.

    Auf der Party hatte Vernunftmensch 8 Sprites in X und Y vergrössert nebeneinander auf dem Screen.

    Ich hab ihm drei Linien aufgemacht um zu erklären wie es funktioniert.

    Komischerweise funktionierte es mit 8(!) Sprites nebeneinander bei eingeschaltetem Screen ?!

    Allerdings ausserhalb einer Badline. Ich hab nur noch in Erinnerung das Badlines doof sind und das Timing damals für meinen No-Border-Kram total nervig war.

    Ich hab das aber in Erinnerung, dass das mit den Sprites NUR mit den oberen 4 ging. Ob Badline oder nicht.

    Beim 5 Sprite auf selber Y-Koordinate verschwanden die anderen aus dem Rahmen obwohl ich mit dem Timing an passender Stelle war.

    Kapier nich nicht so ganz warum es mit 8 ging ?! ?(

    Die obere Linie hab ich nie aufbekommen - weiß nicht wie das geht, oder ob ich einfach nur an der falschen Stelle DEC$D016, INC$D016 gemacht habe.

    Brauchte es aber auch nicht wirklich.

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Bride Of Pinbot + Getaway
    C64, C65, C66, Gammel+Mist...

  • Ich sehe jetzt erstmal keinen Weg, das genau so hinzubekommen.


    Im Bitmap-Modus müsstest Du die Grafik komplett auf reines Schwarz + Weiss oder 2 andere Farben beschränken. Das kann bei passendem Design auch cool aussehen, siehe "Thrust"... Oder halt zu Multicolor wechseln.


    Im Zeichensatz-Modus weiss ich jetzt nicht, wie sich das Badline-Unterdrücken auswirkt.

    Wiederholt es immer die Pixel-Zeile, oder ist der Effekt der wiederholten Char-Zeile auch ohne Badline?So oder so: Die Farbigkeit wäre ebenfalls dahin, und die Grafik wäre auch nur eine simulierte Bitmap, die sich über den ganzen Speicher verteilt. Für Demos ja vielleicht nützlich, aber für ein Spiel irgendwie nicht so.

  • Hier gibt's Timing-Diagramme: http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt


    Wenn man sich das Beispiel mit Sprites 2-7 in einer Badline anschaut wird schnell klar, dass die CPU keine Chance hat, zur richtigen Zeit D016 zu schreiben.


    Also, entweder Badlines, oder mehr als 4 Sprites, oder Rahmen bleibt zu ;)

  • es geht doch jetzt darum die Badlines NICHT abzuschalten, bzw. den kompletten ZS-Screen darzustellen ? ?(

    Also ursprünglich hab ich verstanden, ob man 8 Sprites + offenen Rahmen + normale Grafik hinbekommt. Geht nicht.

    Danach war die Frage, was man tricksen kann...


    So im nachhinein: Man könnte sich auch mit 4 Sprites begnügen, damit geht es ja.

  • ok

    Das ist doch ne Aussage ;)

    Ich hab mich ja damals mit vier Sprites begnügt ;)

    No Border ZS-Scroller.

    Oder nen FLD Logo mit Rahmen oben, links + rechts auf.

    Vergesse ich nie. Bei jeder Y-Koordinate vom Logo ein anderes Timing für die No-Border-Sprites ?(

    Himmel - war das ein Mist !

    Muss '89 oder so gewesen sein...

    Hier mal nen Link...

    Hab den Intropart hier mal verwurschtelt...

    Extra dafür das Logo angepasst.

    Früher war es "Dualis"

    '89 hatte ich kein Vice - da reichte noch ein Sprite links und eins rechts im Rahmen :facepalm:


    https://csdb.dk/release/?id=52210

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Bride Of Pinbot + Getaway
    C64, C65, C66, Gammel+Mist...

    Edited once, last by Hucky ().

  • hier mal was wo ich "getrickst" habe...

    Falls es wen interessiert :rolleyes:

    Ist sogar noch garnicht soooo lange her....

    Und ja, bei Vice flackert es oben links. Ist auf echter Hardware nicht so !

    Files

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Bride Of Pinbot + Getaway
    C64, C65, C66, Gammel+Mist...

    Edited once, last by Hucky ().

  • ok, es flackert wohl doch.

    Muss auf meinem Moni ausserhalb des sichtbaren Bereichs gewesen sein.

    Viel erst bei der Willowparty beim präsentieren mit Beamer auf :wand

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Bride Of Pinbot + Getaway
    C64, C65, C66, Gammel+Mist...

  • Acht Sprites mit offenem Sideborder bei regulärer Bitmap ist nicht möglich.


    Benutze lediglich die obersten 4 Sprites (also die Sprites 4-7, ab 0 zählend) und verzichte auf dec $d016 und inc $d016, sondern benutze die absoluten Werte. Somit gilt für die Badlines (X = 0, Wartezyklen entsprechend Deinem Code anpassen):

  • Noch 2 Ideen, wie man drumherum tricksen könnte:


    - Statt dieser Explosionen mehr so Partikelwolken designen, die weniger dicht sind und hoffentlich auch noch gut aussehen, wenn jede 8. Zeile unsichtbar bleibt. Am besten gleich so zeichnen, dass jede 8. Zeile frei bleibt.

    - Die Explosionen könnten die Grafik "zerstören". Wenn erstmal eine komplette Zeile Schwarz ist, dann kannst Du sie durch FLD ersetzen, und dann sind an den Stellen auch keine Badlines mehr.


    Und grad fallen mir noch mehr Sachen auf:

    - Die Grafik oben sieht zwar vom Design her Hires aus, ist aber eigentlich doch nur 160 Pixel, also MC-Auflösung. Dann ist die Farbe nicht ganz so arg beschränkt, wenn man Badlines abschaltet.

    - Ich sehe in dem Beispiel-Bild 8 zufällig verteilte Sprites. Schwebt Dir vor, "einfach nur" den Sideborder bei zufällig positionierten Sprites zu öffnen? Also wenn unendlich viele Rolands unendlich lange in unendlich viele SMONS tippen, dann ist da am Ende bestimmt auch so eine Routine mit dabei... Vergesse es einfach!
    - Stattdessen solltest Du zunächst einen Mulitplexer schaffen, der den ganzen interessanten Teil komplett mit 8 Sprites bedeckt, so vong Rasterzeit her.

    - Tipp: Lasse nicht alle Sprites auf gleicher Höhe starten, also gleiche Y-Position haben. Alle 2 Rasterzeilen das nächste Sprite anfangen lassen.

    - DANN den Sideborder öffnen, DANN zusehen, wie Du die Spriteblöcle im Multiplexer umsetzt und X-Positionen änderst.

  • Tipp: Lasse nicht alle Sprites auf gleicher Höhe starten, also gleiche Y-Position haben. Alle 2 Rasterzeilen das nächste Sprite anfangen lassen.

    Ich versuche ḿal klein anzufangen. Die obersten Sprites sind auf uns sichtbar. Ganz oben rechts ist nun der schwarze Balken genau ein Zeichen lang ganz rechts.


    Ist das schonmal gut?

  • Ist ein guter erster Schritt :thumbup:

    Du planst also mit 4 Sprites je Zeile, dafür den ganzen Schirm füllen?


    Deine 4 Sprites sind jetzt alle in gleicher Höhe. Probier mal, jedes Sprite 5 Pixel weiter in Y nach unten zu schieben. Dann sehen die Grafiken später besser verteilt aus, ohne dass Du clevere Klimmzüge mit versetzten Sprite-Inhalten machen musst.


    Mehr guck ich mir zu Hause an...

  • Hab mir nun den Code angesehen.

    Was Dir vielleicht nützlich sein könnte:

    - So, wie Du die 4 Sprites gerade nebeneinander stehen hast, kannst Du bequem das Timing austesten. Ist ja alles da: normale Zeilen, Badlines...

    - Ich hab das damals oft mit Unterprogrammen gemacht. Primitiver, langer Code, aber sehr bequem:

    ...Einmal das Timing austesten und ausrechnen, danach lässt sich bequem die ganze Kette von JSRs zusammenfügen.

    - Füll so erstmal den Schirm mit Sprites und mach den Rahmen überall auf.

    - Nicht vergessen, am Ende alle Sprites wieder auf ihre Startposition zu setzen! (lda #50, sta 53249,y...)


    Wenn Du das erstmal hast, dann sehen wir weiter.

  • afair sind grundsätzlich mehr als 4 sprites in gleicher y Ebene mit bitmap/charset möglich. Man schaue z.b das intro von spritemania ( https://csdb.dk/release/?id=40733 ).

    und wo siehst du da mehr als 4 Sprites mit gleicher Y Koordinate links und rechts im Rahmen während auf gleicher Höhe der Screen dargestellt wird ?

    ?(

    Arcade: Twinliner, Fashion Vision,
    "Cosmic Guerilla" cocktail table
    Pins: Bride Of Pinbot + Getaway
    C64, C65, C66, Gammel+Mist...

  • afair sind grundsätzlich mehr als 4 sprites in gleicher y Ebene mit bitmap/charset möglich. Man schaue z.b das intro von spritemania ( https://csdb.dk/release/?id=40733 ).

    und wo siehst du da mehr als 4 Sprites mit gleicher Y Koordinate links und rechts im Rahmen während auf gleicher Höhe der Screen dargestellt wird ?

    ?(

    Der Teil 'project' besteht aus 6 sprites und der Rahmen ist offen.