Ah, endlich ne Erklärung, warum die Lesebefehle mit ,Y einen Takt schneller sein können. Konnte ich mir bis heute nicht merken, musste ich immer nachschlagen.
Beiträge von Hoogo im Thema „Rasterlines und 8 Sprites in einer Linie?“
-
-
Es hat zumindest einen internen Zyklus vor dem Schreiben, laut AAY 5 Takte. Das scheint zu reichen, um die VIC-Sperre zu überlisten.
Es wundert mich aber grad, daß ein Seitenüberlauf in dem Befehl keinen weiteren Takt frisst? Ich hätte schwören können, daß da irgendein Befehl 2 Extra-Takte vor dem Schreiben verbrät.
-
Mach das mal, Sideborder öffnen ist ne interessante Sache.
-Stable Raster, ohne Sprites in den Zeilen ist das am problemlosesten.
-Darunter dann die Sprites positioneren, XPos its egal.
-Die Hintergrundfarbe muß zwischen 2 Werten gewechselt werden. Passende Stelle, um von Wert 1 nach 2 zu wechseln ist 1 Char vor dem rechten Rand. Das zurückwechseln ist relativ beliebig, aber am besten sofort.
-Am besten erstmal mit NOPs oder BITs timen, schön machen kann man das Programm immer noch, wenn das Timing erstmal passt.
-In den Badlines wirst Du zum Umschalten "exotische" Befehle brauchen, z.B. Sta $CFFF,y. Die müssen halt noch ein paar Extra-Takte ohne Lesezugriffe verbraten.Und wenn DU dann am Ende doch keine Lust hast, Zeichen in die Sprites zu kopieren, dan hast Du immerhin 2 Sprites in der Zeile frei, um z.B. einen rechten rahmen zu simulieren oder andere Faxen zu machen.
-
Wie die Sprites in X-Richtung verteilt sind ist unwichtig, das ändert nichts am Timing. Es sind immer genau die gleichen Takte, die für die Sprites draufgehen.
Mit Scrolltext im rechten Border?
Sieht ansonsten insgesamt nicht so aus, als ob man dafür mehr als 4 Sprites + offenem Border bräuchte, und das ist eigentlich recht harmlos.
- 1 Schwarzes Ausblend-Sprite links
- 2 Hires Sprites für die Schrift im Border
- 1 X-Panded Multicolor-Sprite im rechten Border für den Farbeffekt.Wenn Du Dich ans Borderöffnen wagen willst, nimm Sprites 4-7, nicht 0-3!
-
Hab nicht alles verstanden, aber den Rahmen links/rechts unterschiedlich mit 8 Sprites ist schwer, wenn auch noch Badlines ins Spiel kommen.
Mit 8 Sprites ohne Badlines könnte man den rechten Border öffnen, hab das oben falsch beschrieben mit dem Block, der vor dem Rahmen anfängt.
Eventuell liesse sich in diesem Falle die Badline aber unterdrücken. An einer bestimmten Stelle $d011 beschrieben wiederholt die letzte Textzeil, ohne daß 40 Takte fürs Holen verbraucht werden. Ich bin mir aber nicht sicher, ob man in dieser Konstellation auch den passenden Moment treffen kann, ich hab den Effekt immer nur aus Versehen erzeugt.
Den 2*2 -Charste müsste man dann per Charset-Umschaltung hinbiegen, das würde auch außerhalb der spannenden 8. Zeile gehen.
-
Was heißt "splitten"? Die üblichen Rastersplits, bei denen Du jede Rasterzeile mehrmals nacheinander zur gleichen X-Position irgendein Farbregister ändern musst, damit man mehrere Rasterbalken nebeneinander sieht?
Das Anzeigen von Sprites klaut auch Rasterzeit, bei 8 Sprites ist da sein Block von 16-19 Takten, der schon vor dem rechten Border anfängt. In Badlines bleibt da nicht mehr viel Rasterzeit.
Kennst Du den schlauen VIC-Text? In dem finden sich ganz gute Timing-Diagramme. Die können sehr nützlich für das Abschätzen sein, ob ein Befehl überhaupt passend ausgeführt werden kann.