Was ist das? Wie geht das?
Bilder kombinieren · Bildcharakter ändern · Optimieren
Bilder miteinander zu verknüpfen ist eine Spezialität von GoDot (siehe auch das Tutorial zum Thema Freistellen). Es kann einzelne Bildteile in größere Bilder einfließen lassen (z.B. Logos), kann aber auch ganze Bilder, sowohl klar abgegrenzt als auch mehr oder weniger durchscheinend, miteinander verschmelzen (beides in Bild 1). Somit erreicht GoDot einen Status, der zwischen dem reinen Konvertieren von Bildern und dem künstlerisch freien Gestalten von digitalen Kunstwerken liegt.
Bilder, die von Rechnern mit uneingeschränkten Darstellungsmöglichkeiten zum C64 übertragen wurden, werden - zurecht - von den Pixelkünstlern als seelenlose Bildwerke abgelehnt und rufen allenfalls technische Aufmerksamkeit hervor. Durch seine vielfältigen Gestaltungsfähigkeiten kann GoDot aber auch künstlerisch eigenständige Bilder liefern, die im Ergebnis doch anerkennswerte Leistungen darstellen.
Um näher an eine solche Qualität zu gelangen, soll dieses Tutorial eine Hilfe sein.
Werkzeuge: Membrane, 4Bit&Mask, QuickMask, ClipWorks
Bild 1 ist gleich ein schönes Beispiel für ein Ergebnis, das mit so einer umfangreichen Tool-Palette erzielt werden kann. Es hat drei erkennbare Bestandteile: Im Hintergrund eine Nachpixelung des Bildes einer Astronautin aus dem Amiga-Demo Origin (1993) der Gruppe Complex (ursprünglich vom französischen Pixler Mack, Bild 2). Im Vordergrund sieht man das Avatar-Bild des Programmierers und C128-/Mega65-Experten Goodwell aus Österreich (Bild 3). Und drittens rechts oben in der Ecke ein nachbearbeitetes GoDot-Logo (das hier aber keine Rolle spielen soll).
Erster Arbeitsabschnitt: Angefangen wird mit dem Avatar-Bild. Es liegt bereits als 4Bit-Clip in der Größe 20×20 Kacheln (160×160 Pixel) vor (Download "goodwell.clp", 4Bit-Clip, ∼5 KB)
- ClipWorks installieren und dort einstellen: Wid: 20, Hgt: 20, Row: 5 und Col: 20, mit Accept verlassen
- Lader 4BitGoDot installieren, Load to Clip anwählen und "goodwell.clp" mit Replace laden
- in ClipWorks auf ClrClp, dort grün und Outside anwählen (das füllt den Hintergrund in grün)
- (wer will, kann an dieser Stelle das Bild zur Kontrolle im Multi-Modus rendern mit Exec Area: Full und Display)
- QuickMask installieren, grün anklicken, Make auslösen und mit Exit verlassen (Bild 5)
- das fertige Avatar-Zwischenbild mit Saver 4BitGoDot z.B. als "avatar.4bt" auf Disk speichern
- die mit QuickMask erzeugte Kombinier-Maske in die REU sichern (mit Saver 4BitGoDot auf Unit RAM als "Undo Rendered" oder mit Saver Bitmap z.B. als "Mask" auf Disk)

Zweiter Arbeitsabschnitt: Jetzt die Raumfahrerin (Download "astronautin.gif", ∼12 KB). Für die optimale Umwandlung der Farben des GIF-Bildes auf C64-Farben installieren wir SetColorbase und aktivieren dort die Palette PAL@v1. Da das Bild im Ergebnis in den Hintergrund treten, aber trotzdem erkennbar bleiben soll, laden wir es mit Balancing-Werten von Brt: -3, Ctr: 6 (macht das Bild dunkler). Dazu installieren wir den Lader GIF und das Helfermodul DecodeGIFhir (das eine REU erfordert - wer keine hat, nimmt DecodeGIF64c). Starten mit Load GIF.

Dritter Arbeitsabschnitt (die Verknüpfung): Membrane kommt ins Spiel, installieren und ausführen. Einstellen auf Multi, 50%, mit Apply aktivieren und über Leave verlassen. Jetzt kommt die Verknüpfung: Lader 4Bit&Mask installieren und aufrufen. (Get 4Bit from) Temp einstellen (das adressiert das Avatar-Bild, ist es auf Disk und nicht in der REU, dann statt Temp auf Disk stellen) und den Verknüpfungsprozess mit Get 4Bit starten. Wenn man danach mit Display rendert, sieht man bereits, wie sich beide Bilder vermischt haben. Nur der Avatar muss noch in den Vordergrund. Dazu den Lader erneut aufrufen, ganz oben im Requester (Get Mask from) Undo einstellen (wenn sie auf Diskette ist, dann bei der Vorgabeeinstellung Disk belassen) und mit Get Mask ("Mask") sofort ausführen. Vor der Anwendung muss diese Maske (kann man sich mit View Mask anschauen, Bild 5) noch invertiert werden, da sie im Moment den überschriebenen Avatar-Bereich schützt, den wir aber aufs Original zurücksetzen wollen, also: Invert Mask. Vor dem letzten Schritt stellen wir die Bildquelle zuerst zurück auf (Get 4Bit from) Disk (wo sich "avatar.4bt" befindet). Dann kommt endlich der Abschluss mit Get 4Bit "avatar.4bt".
Rendern. Fertig! (Abgesehen vom GoDot-Logo aus Bild 1 -- dessen Einbindung funktioniert aber ansonsten genauso, wie hier im ersten Arbeitsabschnitt beschrieben). Der beste Darstellungsmodus für das Ergebnisbild ist (wegen der aufgerasterten Farben im Avatar) der IFLI-Modus. Dazu sollte man mit ClearFLIBug noch die linken drei Bildspalten ansehnlicher erscheinen lassen, was auch ein eigenes GoDot-Logo mit sich bringt (Bild 6).
Heller? Dunkler? Mit Farbstich?
Fangen wir mit dem Farbstich an. Hier eine normale Vorlage und drei Versionen in rötlich, grünlich und bläulich.



Und dann heller und dunkler, und schließlich noch im Standard-C64-Screen-Format.



Die Vorgehensweise dafür ist immer die gleiche. Das Vorlagebild muss im 4Bit-Format auf Disk vorliegen (oder dann als Undo 4Bit auf einer REU). Zuerst löscht man den gesamten Canvas (das Bild im Speicher) mit der gewünschten Färbung (mit ClipWorks/ClrClp/Farbe/Inside). Dann erstellt man mit Membrane/Apply eine 50%-Hires-Maske (ist voreingestellt). Membrane verlassen mit Leave. Den Lader 4Bit&Mask installieren und aufrufen. Wenn sich das Vorlagebild auf Disk befindet, jetzt Get 4Bit (from Disk) auslösen (sonst Disk auf Undo ändern) und den Lader danach mit Leave verlassen. Rendern im Multi-Modus. Dadurch entsteht das bearbeitete Bild auf dem C64-Bildschirm in Rasterlinienform. Intern liegt es allerdings im True-Hires-Format vor, wie die Bilder 8 bis 12 hier zeigen. Weitere Bildbeispiele in der Beschreibung zu Membrane.
Wenn Bilder mit vielen Farben auf C64-Verhältnisse konvertiert werden sollen, steht man oft vor der frustrierenden 16-Farben-Einschränkung (die begleitet ist von weiteren Einschränkungen, was die Darstellbarkeit dieser 16 Farben angeht). Zum Glück ließ das die wahren C64-Koryphäen nicht ruhen und sie fanden (z.B. mit dem IFLI-Modus) einen Weg, die Frustrationsgrenze hier stark anzuheben. Die folgenden Bilder sind solche beeindruckenden IFLIs (für die Darstellung im Internet haben wir hier die scheinbaren Farben des IFLI-Modus in echte Farben umgerechnet):







Nehmen wir "Afghan Girl" (ein berühmtes Foto von Steve McCurry) als Beispiel, wie man solche Bilder auf den C64 "portiert".
Die erste unabdingbare Maßnahme ist das Skalieren des Bildes auf C64-Verhältnisse, also eine Verkleinerung auf eine Größe in der Nähe von 320×200 Pixeln. Die nächste wichtige Maßnahme ist eine Vorreduzierung der Farben auf die C64-Farben, und zwar nicht auf 16 Farben, sondern auf die 136 IFLI-Farben, die vom Lader GIF/DecodeGIF64c verwendet werden. Seit v1.04 von DecodeGIF64c ist das die PALettev1 (von Forum64-User @tobias). Die Reduzierung möglichst mit einer Option zum Dithern während der Farbreduktion durchführen. Damit sieht das Bild dann immer noch beinahe wie das Original aus, ist jetzt aber bestens für die endgültige Konversion gerüstet (s. Bild 25). Abgespeichert wird das Bild im GIF-Format (256 Farben).
Jetzt kommt GoDot ins Spiel. Zuerst (ganz wichtig!) stellen wir mit SetColorBase die PALettev1 ein (nennt sich dort PAL@v1). Dann laden wir das Bild mit ldr.GIF und dem Helper-Modul DecodeGIF64c (64c steht für "64 colors"). Dieser Vorgang erzeugt eine 4Bit-Datei, in der zwei FLI-Bilder pixelweise abwechselnd im Speicher vorliegen, wie es für ein IFLI-Bild gebraucht wird. Da wir im Zielbild möglichst wenig IFLI-Flackern wollen, mischt der Lader im nächsten Schritt automatisch (mit OddSwap) die beiden Halbbilder schachbrettartig ineinander (Bild 26). Dieses Bild hat Hires-Auflösung (bitte als 4Bit abspeichern!), lässt sich aber auf einem C64 nicht im Hires-Modus anzeigen, da dessen Farbrestriktionen dies verhindern würden. In diesem Zustand ist das Bild zwar schon für eine Anzeige in IFLI auf dem Bildschirm geeignet, es kann aber noch verbessert werden.
Den letzten Schliff erhält das Bild nämlich mit einer weiteren Maßnahme: Es wird noch einmal geladen, diesmal aber mit aufgehellten Farben und erhöhtem Kontrast. Dazu brauchen wir die Balancing-Einstellungen. Brightness erhält dort den Wert 2 und Contrast den Wert 5. Diese Werte akzeptieren wir und starten erneut den Ladevorgang wie eben.
Und jetzt der entscheidende Schritt, beide Bilder werden miteinander verknüpft. Wir starten Membrane und stellen dort die nötigen Voraussetzungen her: Opacity wird auf 25% geändert (der helle Bildanteil kann so nur einen Beitrag von 25 Prozent ins Ergebnis einbringen) und der Modus wird von Hires auf Multi umgestellt (wir erfassen somit beim gleich nachfolgenden Verknüpfungsvorgang Doppelpixel, behalten also die IFLI-Farbkombinationen, die beim Laden erzeugt wurden, bei). Diese Einstellung wird mit Apply angewendet, und mit Leave verlassen wir Membrane.
Wir wechseln den Lader zu 4Bit&Mask und laden die vorhin abgespeicherte (dunklere) Version des Bildes mit Get 4Bit (from Disk) nach. Das dunklere Bild überschreibt nun auf 75 Prozent der Fläche das im Speicher befindliche hellere Bild und wir erhalten ein insgesamt ausgewogenes Ergebnisbild. Da es sich links am Rand des Bildschirms befindet, schieben wir es mit ClearFLIBug noch an die für IFLI richtige Position. Damit haben wir Bild 28.
Hier die ganze Entwicklungskette:





Die anderen Bilder (Bild 17 bis 21) sind auf ähnliche Weise entstanden. Mit den Balancing-Werten muss man vielleicht ein wenig experimentieren, aber die Ergebnisse lohnen den Aufwand.