Hi(gh)!
Ja, das habe ich zwischenzeitlich dann auch gesehen bzw. bin darauf
hingewiesen worden... mittlerweile bin ich, siehe Betreff, ein ganzes
Stück weiter in der Programmierung (oder besser im manuellen Debugging),
aber die Funktion c64multicolor_correct() macht immer noch nicht, was
sie soll.
Zur besseren Verdeutlichung hier erst mal ein Link auf das komplette
Paket mit Quelltexten, Log und einem Beispielbild:
http://www.rock-o-data.de/yip_20180707.tar.gz
Das Bild muss mit folgendem yip-Kommando bearbeitet werden:
yip -c64 koeln_160x200.tga multicolor 0 1
Konkret passiert gegenwärtig Folgendes: wenn ich eine Reihe von 4 x
8-Pixelbereichen auf überzählige Farben (zur Erinnerung: das Programm
soll RGB-Bilder so umrechnen, als würden sie auf einem C 64 im
Multicolor-Modus dargestellt werden, also pro 4 x 8-Pixel-Bereich nur 4
aus 16 Farben), dann stimmen die Pixelanzahlen für die gefundenen
Farben, teilweise sogar die gefundenen Farben selbst nicht mit dem
(vorläufig ohne diese Korrektur) abgespeicherten Bild überein.
Zwei Beispiele:
Im 4 x 8-Bereich 8/128 bis 12/136 sollten laut gespeichertem "C
64-Rohbild" gefunden werden:
1 x türkisgrün - rgb <48,230,198>
4 x "weiß" - rgb <253,254,252>
12 x hellgrau - rgb <164,167,162>
10 x mittelgrau - rgb <112,116,111>
4 x schwarz - rgb <0, 0, 0>
1 x dunkelblau - rgb <33,27,174>
Tatsächlich findet c64multicolor_correct():
1 x türkisgrün - rgb <48,230,198>
4 x "weiß" - rgb <253,254,252>
12 x hellgrau - rgb <164,167,162>
10 x mittelgrau - rgb <112,116,111>
4 x dunkelgrau - rgb <66,69,64> // Abweichung!
1 x dunkelblau - rgb <33,27,174>
Ein anderes Beispiel, 4 x 8-Bereich 16/128 bis 20/136:
Sollwerte laut gespeichertem Bild:
14 x mittelgrau - rgb <112,116,111>
8 x schwarz - rgb <0, 0, 0>
7 x dunkelgrau - rgb <66,69,64>
2 x hellrot - rgb <254, 74, 87>
1 x orange - rgb <184, 65, 4>
Tatsächlich gefunden:
14 x mittelgrau - rgb <112,116,111>
4 x schwarz - rgb <0,0,0> // Abweichung!
7 x dunkelgrau - rgb <66,69,64>
4 x hellgrau - rgb <164,167,162> // Abweichung!
2 x hellrot - rgb <254,74,87>
1 x orange - rgb <184,65,4>
Hier stimmt nicht einmal die Anzahl der Farben überein!