Hallo Besucher, der Thread wurde 9,5k mal aufgerufen und enthält 24 Antworten

letzter Beitrag von spindizzy am

RasterBars flackerfrei über Screen bewegen

  • bitte nicht die hitze erwähnen.... :bmotz:


    Zitat

    Weiss jemand von euch wie man flackerfrei Rasterbars über den Screen bewegt ?


    da solltest du dir erstmal klar werden und sagen was *genau* du machen willst ... eventuell mal auf irgendein intro/demo verlinken wo so ein effekt drin ist.


    allerdings dürfte es bei den allermeissten fällen so aussehen: die rasterroutine steht fest und ändert sich nie - das einzige was geändert wird ist die farbtabelle. für den anfang würde ich dir auch empfehlen genau das zu tun und damit rumzuspielen - schon auf die art lassen sich einige hübsche sachen machen.

  • [achtung alles nur geraten, ich hab nicht in den code geguckt - vermutlich wird es aber schon so sein]


    crypt intro: hier wird nur die farbtabelle geändert


    exodus intro: hier wird der scroller mit einem FLD in Y richtung bewegt, die rasterroutine UND die farbtabelle ändern sich _nicht_ sondern bewegen sich automisch mit in Y richtung


    Fantasy und Fucked beyond Repair 1: hier wird wieder nur die farbtabelle geändert


    System of Devil: wieder nur die farbtabelle


    Vision: ähnlich dem exodus intro, das logo wird per FLD in Y bewegt, die beiden rasterbalken über/unter dem logo bewegen sich automatisch mit. die raster "hinter" dem logo werden wieder per manipulation der farbtabelle bewegt.


    FLD würde ich übrigens für eine gute übung halten wenn du das mit den rasterbalken verstanden hast.....ein sehr einfacher aber auch sehr essentieller vic trick :)

  • Hi Leute ;),


    >Sauhund
    ich hab mir das mal versucht mit dem ändern der Farbtabelle !
    Prinzipiell funktioniert das auch so wie Du gesagt hast, ich kann die Bar nach Oben oder nach unten scrollen lassen nur durch das Ändern der Farbtabelle !
    Versuche ich aber ein Up / Down klappt das nicht mehr, ich krieg das einfach nicht hin, obwohls doch eigentlich ganz einfach sein müsste, erst raufzählen dann wieder runter ;(!


    Wäre super wenn Du ihr mir da weiterhelfen könntet !
    Hier ist mal der Code:



    Vielen Dank für Eure Mühe schonmal vorab
    ;)
    Spindizzy

  • sieht doch soweit gut aus, das einzige was du jetzt brauchst wär ein schnipsel code der alle paar sekunden (oder was auch immer) die richtung umschaltet?


    ich würde irgendwie sowas stricken:




    an der stelle solltest du aber ruhig mal rumspielen was man alles so machen kann :)

  • da ist einmal ein counter der einfach von einem startwert runter gezählt wird, so lange er nicht null ist wird der folgende teil übersprungen; wenn doch wird der counter von vorne gestartet und der nachfolgende code ausgeführt. das sorgt dafür das der besagte code alle X frames einmal ausgeführt wird.


    dann ist da das flag zum hin und her schalten zwischen den beiden zuständen, also hoch oder runter. dafür wird einfach immer wenn die richtung umgeschaltet werden soll ein weiterer zaehler hochgezählt, und das unterste bit auf 0 oder 1 geprüft, wenns 0 ist dann wird der code für "hoch" ausgeführt und wenns 1 ist dann der für runter.


    irgendwie so halt, wie gesagt, spiel mal mit rum :)


    achja, und mein beispiel da verwendet selbstmodifizeirten code, dh der zähler und das flag sind jeweils direkt das argument des LDA befehls (falls dich das verwirrt :=P)


    (ausserdem war da ein kleiner fehler in meinem beispiel sehe ich grade *hust*) ... so sollte es gehen


  • Hai Sauhund ;)) :roll2:;


    Danke jetzt funzt das ganze mir ist auch prinzipiell klar wie das ganze abläuft, aber die Sache mit dem sich selbst modifizierenden Code ist ziemlich abgefahren :schreck!: :juhu: das klingt irgendwie nach "Der Mann mit den zwei Gehirnen" :freude ;) !
    Gibts dazu Tuts oder articles oder sonstiges Material ???


    Auf jeden Fall vielen Dank Sauhund für Deine Hilfe
    ;)
    Spindizzy



    P.S.:

    Zitat

    ich würde irgendwie sowas stricken


    Coole Strickliese !! ;)

  • Zitat

    Originally posted by spindizzy
    aber die Sache mit dem sich selbst modifizierenden Code ist ziemlich abgefahren :schreck!: :juhu: das klingt irgendwie nach "Der Mann mit den zwei Gehirnen" :freude ;) !


    Das ist aber gang und gebe auf Systemen mit wenig Megaschmerz, selbst in älteren PC-Games mit in Software gerenderter 3D-Grafik wird das gerne gemacht.
    Aufm Cevi ist das eine Frage zwischen 4 und 5(bzw. 6 bei Seitensprung) Zyklen, bei nem Loop der mal eben 1000 mal laufen darf macht das schon einen Unterschied.


    Auch eine nette Sache, wenn du nicht grade unter Bytedruck hängst, ist das hier:

  • Zitat

    das klingt irgendwie nach "Der Mann mit den zwei Gehirnen" ! Gibts dazu Tuts oder articles oder sonstiges Material ???


    mmmh, nicht das ich wüsste ... solche sachen sind der grund warum ich immer jedem empfehle erstmal in einem maschinensprache-monitor zu programmieren, da sieht man finde ich viel besser wie sowas funktioniert und wie man darauf kommt.


    Zitat

    gibts ne Möchlichkeit Dir was zu schicken ?


    poste doch lieber hier, dann haben alle was davon :)

  • Zitat

    poste doch lieber hier, dann haben alle was davon


    Hast recht :



    nach etwa 20 Sekunden Laufzeit löst sich Die Rasterbar auf ?!?!?!?!


    Weisst Du woran das liegen könnte ?


    Danke für die Hilfe
    ;)
    Spindizzy

  • äääh, die zweite kopierschleife (runter) sieht schonmal verdächtig aus.... sicher das das ldy#00 nicht ldy#$3e oder so heissen müsste? :)


    bei solchen schleifen solltest du immer durchspielen was im ersten durchlauf und was im letzten durchlauf passiert...speziell wenn du rückwärts zählst kann man sich da schnell mal um einen verzählen...

  • hi...mal wieder mein senf dazu :)


    ich würde grundsätzlich nicht den speicherbereich, der die farben zum DARSTELLEN ($0f00-$0fxx) enthält auch als ablagequelle benutzen.
    Soll heissen, ich würde einen bereich nehmen, der alles enthält was dargestellt werden soll (eben $0f00 - $0fxx), und einen anderen bereich, von wo die farben herkopiert werden (z.b. $3000- xxxx)


    Eine Ursache dafür ist natürlich, dass ich immer im monitor programmiert habe.
    Und wenn man da das programm dann genau während so ein umkopieraktion abbricht, wäre wir anzeigende farbtabelle kaputt..(ok, wenn man das immer wieder neu kopiliert, passiert sowas nicht).
    Aber trotzdem, wenn man die kopierroutinen (rauf/runter) nicht sauber hat, dann
    "lösst" sich die tabelle irgendwann auf :)


    Und ein weitere punkt, der mit 2 tabelle viel einfacher ist:
    Wenn du dann noch weitere Rasterbar über den scrollenen "Hintergrund" drüber
    rumhüpfen lassen willst, dann kannst du das eigentlich nur machen, wenn
    du den "sauberen" Hintergrund aus einer anderen tabelle kopierst.


    Weiterer Punkt: Wenn du den Hintergrund Sinusmässig rauf-und-runter bewegen
    willst, ist das mit 2 tabellen auch viiiiiel einfacher.


    Und noch ein punkt: wenn du ein riesiges rasterfarbmuster hast, das grösser als der angezeigte bereich ist, dann musst du nicht die ganze farbtabelle rauf oder runterkopieren, sondern nur den bereich, der auch dargestellt wird.
    also z.b: du hast farben von $3000 - 3400 (das sind 1024 zeilen). Anzeigen tust du ja aber immer nur so ca. 62 (von $0f00-$0f3e). Da wäre es ja unsinnig, alle 1024 zeile rauf oder runter zu kopieren, sondern immer nur einen 62 zeilen grossen abschnitt von tabelle 2 nach $0f00