Wann fetcht der VIC die Farben

Es gibt 16 Antworten in diesem Thema, welches 2.054 mal aufgerufen wurde. Der letzte Beitrag (4. Dezember 2014 um 19:18) ist von Gerrit.

  • Ich bin Neuling was die Grafikdarstellung angeht. Nun wollte ich ein wenig mit dem Multicolor-Charmode spielen.
    Kurze Frage dazu: Ich habe ja in 53281-53283 die Hintergrundfarben für den Screen, wann werden die vom Vic gelesen?
    Einmal pro Screen? Oder pro Badline? Oder gar Pro Zeile oder Zeichen?

    Hintergrund: Ich möchte gern per RasterZeilenInterrupt die Farben ändern, um mehr Farbe auf dem Screen zu haben, bin mir aber nicht sicher ob das so funktionieren kann bzw. wo die Limits sind.
    Kann mir wer einen kurzen Einblick verschaffen?

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • Ich bin Neuling was die Grafikdarstellung angeht. Nun wollte ich ein wenig mit dem Multicolor-Charmode spielen.
    Kurze Frage dazu: Ich habe ja in 53281-53283 die Hintergrundfarben für den Screen, wann werden die vom Vic gelesen?
    Einmal pro Screen? Oder pro Badline? Oder gar Pro Zeile oder Zeichen?


    Zur selben Zeit, zu der die Screen-Daten geholt werden, also während einer Badline. Der VIC hat einen 12 Bit Bus und kann somit 8 Bit aus dem normalen RAM holen und gleichzeitig 4 Bit aus dem Color-RAM.

  • Zitat von BladeRunner

    die Hintergrundfarben für den Screen, wann werden die vom Vic gelesen? Einmal pro Screen? Oder pro Badline? Oder gar Pro Zeile oder Zeichen?


    Eigentlich ständig, also für jedes Pixel. 'Genauer' als zyklenweise geht natürlich nicht. Allerdings wirkt sich die Änderung eines dieser Register durch die CPU je nach VIC entweder mit einem Hirespixel Verzögerung ab 'Charbeginn' aus, oder Du bekommst einen Grey-Dot.

  • Werden die überhaupt nochmal zwischengespeichert, oder gehen die direkt an den Farb-Encoder? (Natürlich kann man die Bits nicht beliebig setzen, weil die CPU im festen Takt-Verhältnis zur, und _viel_ langsamer als die, Pixel-Taktrate arbeitet)

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.

  • Argh, ihr verwirrt mich ;)
    Einer sagt Badlines, der nächste Pixelweise.
    Gibt's denn irgendwo eine vernünftige Dokumentation dazu?
    Ich würde wenn dann eigentlich Pro Charakterzeile ändern wollen, sprich passend zu den Badlines. Wenn das geht bin ich schon mal soweit befriedet.

    Dennoch wäre eine Dokumentation sehr interessant für mich.

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • Definitiv nicht die Badlines, sonst könntest du nicht so einfach tolle Farbbalken rumrotieren lassen

    C64Studio: Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. --- C64Studio WIP: 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 Zeichenfarben (also Vordergrund) werden nur während der Badlines in das interne RAM des VIC (40 x 12 Bits, 8 Bit Zeichencode, 4 Bit Farbe) geladen.

    Die Hintergrundfarben und die Rahmenfarbe werden hingegen in internen Registern des VIC gehalten und die werden vom VIC bei einer Änderung sofort ausgewertet und an den Farbencoder gereicht wenn diese Farbe gewünscht ist. Wie man an den 'grey dots' des 8565 sieht sogar manchmal schneller als das Register beschrieben ist.

  • Argh, ihr verwirrt mich ;)
    Einer sagt Badlines, der nächste Pixelweise.
    Gibt's denn irgendwo eine vernünftige Dokumentation dazu?
    Ich würde wenn dann eigentlich Pro Charakterzeile ändern wollen, sprich passend zu den Badlines. Wenn das geht bin ich schon mal soweit befriedet.

    Dennoch wäre eine Dokumentation sehr interessant für mich.


    Fröhn hat sich vertan. Bzw. er hat ja selbst korrekterweise Color-RAM (er meinte ab $d800) geschrieben, aber vermutlich mißverstanden, was Du meintest. Die Char MC Register funktionieren genauso wie $d020/$d021, wird also 'direkt' geändert - was technisch bedingt maximal 1x pro 'Char'/8Pixel konkret heisst.

  • bedingt maximal 1x pro 'Char'/8Pixel konkret heisst.


    meistens :)
    bei einem ROL $d020 bekommt man mehr als einen grey dot :wink:

    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.

  • Trotzdem gilt, daß die CPU nur einmal pro Char-Breite auf den Bus kommt, also auch nur maximal einmal pro Char-Breite einen 'grey dot' verursachen kann.

    Der Pixeltakt (dot clock) ist beim C64 das 8 fache des CPU-Taktes und ein Char ist genau 8 Bit breit.

    Deine zwei grey dots beim ROL sind also mindestens 8 Pixel auseinander. Gemessen jeweils zwischen Anfang/Anfang.

  • Eigentlich ständig, also für jedes Pixel. 'Genauer' als zyklenweise geht natürlich nicht.

    Kommt drauf an, welche Zyklen gemeint sind. Der VIC ist ja höher getaktet, als die CPU. Die Genauigkeit übertrifft sogar den Pixeltakt, denn Gray-Dots können auch einen halben Pixel groß sein. Aus CPU-Sicht nützt einem diese Genauigkeit aber natürlich nichts.


    Werden die überhaupt nochmal zwischengespeichert, oder gehen die direkt an den Farb-Encoder?

    Offenbar gibt es keinen Zwischenspeicher. Sonst gäbe es den Gray-Dot-Effekt ja nicht.


    Dennoch wäre eine Dokumentation sehr interessant für mich.

    Ist eigentlich nicht schwer zu finden: Bitte melde dich an, um diesen Link zu sehen.

  • Hey, danke für eure ausführlichen Antworten und merci für den Link :)

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • und merci für den Link :)

    Hier gibt's den Artikel auch nochmal in "schön":
    Bitte melde dich an, um diesen Link zu sehen.
    Finde die Textdatei immer nicht so übersichtlich.


  • Fröhn hat sich vertan. Bzw. er hat ja selbst korrekterweise Color-RAM (er meinte ab $d800) geschrieben, aber vermutlich mißverstanden, was Du meintest. Die Char MC Register funktionieren genauso wie $d020/$d021, wird also 'direkt' geändert - was technisch bedingt maximal 1x pro 'Char'/8Pixel konkret heisst.


    Ja. Die Farbregister werden natürlich ziemlich direkt im VIC2 verarbeitet, also kaum Verzögerung.

  • Auch hier nochmal merci, hab mir das Textdokument aber zwischenzeitlich auf PDF gewandelt und in Papierform vor mir. Da bin ich altmodisch ;)

    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?

  • Bitte melde dich an, um diesen Link zu sehen. ist mein Favourite für den VIC-Article :)

  • Bitte melde dich an, um diesen Link zu sehen. ist mein Favourite für den VIC-Article :)

    Interessante Aussage zum DRAM-Refresh... Wird der Counter wirklich in Zeile 0 auf $FF gesetzt? Das ergibt doch einen etwas ungleichmässigen Refresh, ich würde erwarten, daß er einfach losläuft und nach jedem Unterlauf wieder bei $FF anfängt, ohne harten Reset in Zeile 0.