FLI

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Die erste FLI-Grafik.

FLI steht für Flexible Line Interpretation, eine Technik, um auf dem C64 im Grafikmodus bestimmte in der Arbeitsweise des Grafikchips VIC liegenden Begrenzungen bei der Menge der möglichen Farben innerhalb einer Kachel (Cursorblock) zu lockern.


Grundlagen[Bearbeiten]

Standard-Grafikmodi und der VIC[Bearbeiten]

Die Standard-Grafikmodi des C64 - Multicolor und Hires - werden durch den VIC selbständig dargestellt. Man muss lediglich bestimmte Register programmieren, um diesem mitzuteilen, wo sich die Bitmap und (bei Multicolor) das dazugehörige Screen-RAM befindet, sowie ebenfalls das Farb-RAM mit den passenden Daten füllen. Dabei gelten bekannte Grenzen: Bei Multicolor (160×200) hat man pro Kachel neben der Hintergrundfarbe noch drei weitere Farben aus der Palette von 16 zur Auswahl, bei Hires (320×200) ist die Hintergrundfarbe nicht zu sehen und man hat nur zwei Farben pro Kachel. Der Prozessor des C64 muss, ist das Bild einmal zu sehen, nichts weiter tun.

Erweiterung durch ständige Neuprogrammierung des VIC[Bearbeiten]

FLI ist die Erweiterung der bestehenden Modi mithilfe geschickter Programmierung. Der Prozessor wird dabei aktiv dazu genutzt, die oben beschriebenen Grenzen bei der Farbwahl zu lockern. Dazu wird, synchron zum Rasterstrahl, eine spezielle Routine durchlaufen, die in jeder Zeile (Line) den VIC umprogrammiert, so dass er die Information, welche Farben dargestellt werden sollen, in jeder Zeile neu einliest (interpretiert). Statt drei Farben (plus Hintergrund) pro Kachel erlaubt FLI nun drei Farben pro "Kachel-Zeile" (8×1). Dadurch werden viel buntere Grafiken möglich. Der Nachteil ist jedoch, dass der Prozessor dafür dauerhaft aktiv sein muss und die CPU-Zeit an anderer Stelle fehlt, weshalb FLI äußerst selten in Spielen bzw. bei bewegter Grafik zum Einsatz kommt.

Entstehung[Bearbeiten]

Im Jahr 1989 arbeitete der Programmierer ASP der Gruppe Blackmail am Demo So-Phisticated II, in dem er einen Rekord für die meisten Rastersplits aufstellen wollte. Da sich echte Rasterbars auch bei exzellenter Programmierung nur begrenzt oft vertikal splitten lassen, ging er einen anderen Weg, der schließlich zur Entwicklung des FLI führte. Das erste FLI-Bild wurde dann vom selben Entwickler im Nachfolge-Demo, So-Phisticated III, präsentiert.

Sieht aus wie Rastersplit, ist aber FLI
Die erste FLI-Grafik



FLI im Multicolor-Modus[Bearbeiten]

Der VIC holt sich normalerweise alle 8 Rasterzeilen die Informationen aus dem RAM, was er für die nächsten 8 Zeilen zeichnen soll. FLI zwingt den VIC durch geschicktes Programmieren des Registers $D011 dazu, dies jede Zeile zu tun. Damit dies dann auch tatsächlich zu einem sichtbaren Effekt führt, muss auch das Register $D018 in jeder Rasterzeile umprogrammiert werden, denn welche Farben die Pixel in der Bitmap haben sollen, liest der VIC aus dem Bildschirmspeicher, der in diesem Fall anstelle von Zeichen die Farbwerte für die Bitpaar-Kombinationen 01 und 10 in der Multicolor-Bitmap enthält. Auch die Hintergrundfarbe, die dem Bitpaar 00 zugeordnet ist, kann geändert werden. Dagegen bleibt die Farbe für das Bitpaar 11, die vom Farb-RAM bestimmt wird, für die Kachel gleich, denn für ein Umkopieren des Farb-RAMs ist keine Zeit.

Da die Entwickler des VIC diese Art Programmierung nicht voraussahen oder eingeplant haben, reagiert der Grafikchip nicht sofort auf die Umprogrammierung pro Zeile. Erst nachdem drei Kacheln dargestellt wurden, liest er die neuen Farbinformationen. Deshalb kommt es links in den ersten drei Kachel-Spalten bei FLI zum sogenannten FLI-Bug. Dabei liest der VIC statt der Farbwerte aus dem Bildschirmspeicher immer $FF und statt des Wertes aus dem Farb-RAM den Opcode, der dem Schreiben in $D011 folgt - i.a. $A9 für LDA. Die drei möglichen Farben in diesen Kacheln sind daher Hellgrau für die Bitpaare 01 und 10, meistens Braun (je nach Programmcode ev. auch eine andere Farbe) für das Bitpaar 11 und die Hintergrundfarbe aus $D021 für das Bitpaar 00. Um diesen Bereich zu verdecken, werden ggf. Sprites darüber gelegt.

Hires-FLI (AFLI)[Bearbeiten]

Eine Variante von FLI ist AFLI, kurz für Advanced Flexible Line Interpretation. Genau genommen ist jedoch nichts daran besonders "advanced" (fortgeschritten), vielmehr handelt es sich um einen FLI im Hires-Modus. Deshalb wird gern auch korrekter von Hires-FLI gesprochen, da FLI für sich allein stehend primär im Multicolor-Modus anzutreffen ist.

Im Standard-Hires-Modus sind pro Kachel zwei Farben möglich. Welche dies sind wird durch Farbinformationen definiert, die im Bildschirmspeicher abgelegt werden. Die Hintergrundfarbe und das Farbram spielen dabei keine Rolle. Im Hires-FLI werden folglich dann zwei Farben pro Kachel-Zeile möglich, was sehr viel filigranere Hires-Bilder ermöglicht, die Einschränkung ist allerdings immer noch relativ limitierend im Vergleich zu Multicolor.

Auch in diesem Modus tritt der FLI-Bug auf. Da im Hires-Modus Vorder- und Hintergrund-Farbe aus dem Bildschirmspeicher genommen werden, sind die drei Kacheln hier immer Hellgrau. Wenn der Gesamthintergrund des Bildes nicht auch gerade Hellgrau ist, werden üblicherweise (schwarze) Sprites verwendet, um das Hellgrau zu verdecken.

FLI in Spielen[Bearbeiten]

Mit der Erfindung von FLI begann auch ein Phänomen, das später für viele weitere Dinge gelten sollte: Es handelt sich bei FLI lediglich um einen "Effekt", der so gut wie nie in Spielen Verwendung findet. Vielmehr bleiben FLI-Bilder fast ausschließlich Demos und Stand-Alone-Grafiken vorbehalten, ähnlich wie die schnelle Vektorgrafik aus so manchem C64-Demo es nie in Spiele geschafft hat. Beim FLI bleibt nicht genug CPU-Zeit für ein Spiel übrig und aufgrund des empfindlichen Timings lassen sich auch Sprites nur schwer über FLI-Bilder bewegen. Dennoch wäre die Nutzung in Spielen denkbar, z.B. wären ganze Grafik-Adventures in FLI möglich. Doch bis auf einige Titelbilder ist FLI fast nie in Spielen eingesetzt worden.

  • Le Parc ist das einzige bekannte Spiel, das komplett in FLI läuft
  • Clystron von X-Ample hat ein Titelbild in Hires-FLI
  • Last Ninja 3 wurde seitens DMAgic mit einem eigens erstellen Hires-FLI-Titelbild versehen


Le Parc - ein Puzzlespiel komplett in FLI
Clystron - eines der wenigen Spiele mit einem AFLI-Titelbild
DMAgic versah Last Ninja 3 mit einem eigenen AFLI-Titelbild



IFLI und mehr[Bearbeiten]

Das Erscheinen von FLI befeuerte die Inspiration der gesamten Demoszene und viele entwickelten neue Ideen, mit den unterschiedlichsten Tricks die Standard-Grafikmodi des C64 zu verbessern. Auf Basis von FLI entstanden diverse Varianten, darunter als bekannteste IFLI (Interlace FLI), bei dem die Auflösung von Multicolor-FLI mit einem Trick horizontal verdoppelt wird, allerdings zum Preis eines starken Bildflackerns. Interessant ist auch der UFLI (Underlayed FLI), bei dem ein Hires-FLI zum Einsatz kommt, allerdings nur in jeder zweiten Zeile. Dies ermöglicht es, zusätzlich eine einfarbige Sprite-Ebene zur Ergänzung hinzu zu ziehen.

Das Tool-Problem[Bearbeiten]

Bei aller Begeisterung darüber, dem C64 Grafikfähigkeiten zu entlocken, die Commodore so nie vorgesehen hatte, darf eins nicht vergessen werden: Jeder neue "Grafikmodus" brachte das Problem mit sich, dass es keinerlei Werkzeuge, sprich Tools wie Malprogramme oder Konverter gab, mit denen entsprechende Bilder hätten erzeugt werden können. So mussten die Erfinder der jeweiligen Modi und deren frühe Nutzer meist, basierend auf einem Standard-Modus, per Maschinensprachemonitor die Grafik binär in den Speicher des C64 eintippen! Zum Glück wurden für die gängigeren Neuformate (wie FLI, IFLI, AFLI) von findigen Szene-Programmierern bald entsprechende Editor-Tools geschrieben. Ebenso lieferten die Entwickler von GoDot Unterstützung, so dass mit erstaunlich gutem Ergebnis Bilder beispielsweise vom PC bzw. aus dem Internet auf den C64 konvertiert werden konnten.

NUFLI - die Revolution[Bearbeiten]

20 Jahre nach dem Erscheinen des ersten FLI auf dem C64 stellte die Gruppe Crest im Jahr 2009 NUFLI vor. Von der Auflösung ist er mit IFLI und Hires vergleichbar, bringt allerdings einige Restriktionen mit. Genauer ausgedrückt verschiebt er die Grenzen der Farbnutzung nicht so weit wie IFLI, hat dafür aber auch nicht den Nachteil des heftigen Flackerns. Das zuvor beschriebene Tool-Problem wurde in diesem Fall durch die Entwickler relativ zeitnah nach dem Erscheinen der ersten Grafiken mit dem Bereitstellen sehr guter Werkzeuge gelöst.

Weblinks[Bearbeiten]


Artikel des Monats.gif Dieser Artikel wurde Artikel des Monats.