Farbauti hat geschrieben:Ich habe jetzt ein wenig über die Thematik nachgedacht und bin mir aber noch nicht sicher was der elegantere Weg ist.
Als Programmierer hat man ja nun die Möglichkeit dem Grafiker zu sagen, dass er mit den Farben klar kommen muss. Heißt der Grafiker hätte
für BG1(256Farben Palette) nur noch die 256Farben - 16Farben(BG2) - 16Farben(für eine SpritePalette) = 224 Farben. Gleichzeitig muss dafür gesorgt werden, dass die ersten 16 Farbslots für die BG2 Palette leer bleiben und die letzen 16 für die Spritepalette.
Du kannst es ja auch so sehen:
Dein Grafiker hat immer noch 256 Farben zur Auswahl, es ist nur so, dass er 32 von dir bzw. sich selbst vorgegeben bekommt.

Um d4s' Argument noch einmal zu untermauern (auch wenn es nicht nötig ist), dass gute Grafiker mit erheblich weniger als 256 auskommen, habe ich nochmal bei Pixeljoint ein paar Beispiele rausgesucht, wo z. T. besonders quietschebunte Bilder mit (z. T. weit) weniger als hundert Farben gemacht wurden (Die Farbenanzahl steht jeweils dabei:
1,
2,
3,
4,
5,
6). Diese Bilder geben, finde ich, ein direktes Gefühl dafür, was für eine gigantische Möglichkeit allein hundert Farben geben... das ist alles so viel bunter als das SNES-LotR.
Farbauti hat geschrieben:Die 2. Grafikerfreundlichere Möglichkeit wäre, die Palletten erst im Code zu mischen.
Das stelle ich mir in der Theorie nicht so schwer vor.
Wir haben 3 Palletten, BG1(256Farben), BG2(16Farben) und Sprite(16Farben).
Die beiden letzteren Paletten bleiben identisch und werden an Platz 0-15 bzw 249-255 positioniert.
Als nächstes schaue ich mir die einzelnen Farben der originalen 256farben-Palette an, die von den anderen beiden überschrieben wurden, und Suche mir in der bereits gemischten Pallete die Farbe, die dieser am meisten ähnelt. Wenn ich die gefunden habe, muss ich dann nur noch im Tileset die original Farbe suchen und mit der neu gefundenen überschreiben.
Das sorgt dafür, dass sich die Tilesets von BG1 automatisch an die die neue Palette anpassen.
Nachteil hiervon wäre allerdings, dass die Farben der Tilesets von BG1 abhängig von den anderen Paletten aussehen würden.
Ich hoffe das war verständlich formuliert...
Was denkt ihr darüber?(speziell die 2. Möglichkeit) brauchbar?unbrauchbar?totaler scheiß ?

Ich kann nur sagen, wie ich es probieren würde.
Ich benutze PCX2SNES für die Umwandlung von PCX in die PIC/CLR-Dateien (du auch, oder nimmst du was anderes?).
Ich würde per Experiment gucken, in welcher Reihenfolge PCX2SNES die Farben in der CLR-Datei umwandelt. Ich gehe davon aus, dass es die Farben in der Reihenfolge anordnet, wie sie das erste Mal in der Grafikdatei auftreten. Und wenn das so ist, dann hast du eigentlich leichtes Spiel: Dann muss nämlich dein Grafiker im ersten (oder zweiten, es wäre besser, wenn das erste komplett leer/transparent ist) Tile deines 256-Farben-Tilesets jeden Pixel für die Palette nutzen. Und dann machst du in die erste Zeile (d. h. die ersten 16 Pixel) dieses Tiles die Farben deiner Textbox, und in die letzte Zeile die Farben des Sprites.*
Wenn du am Ende eine dieser Grafiken fertig hast und definitiv weißt, dass du (länger) nichts mehr an ihr ändern wirst, kannst du ja mit einem Hexeditor dieses "Palettentile" per Hand löschen; die Farben sind ja bereits in der CLR-Datei und dementsprechend wird sich an ihrer Reihenfolge nichts ändern.
Übrigens, wenn das so funktioniert, wie ich mir das denke, erspart dir das außerdem auch Arbeit, weil du dann am Ende alle Farben schon in einer CLR-Datei hast und nur noch einmal vorzugsweise per DMA den Kram in den CGRAM übertragen musst.
Es so zu machen wird dir viel nachträgliche Arbeit ersparen, denn, wenn ich deine Lösung richtig verstanden habe, würdest du dann die Tiles durchgehen und per Hand jede Zahlennummer ändern, weil du ebenso per Hand nach der Konvertierung die Reihenfolge der Farben änderst.
Kannst du mir folgen?
Macht das Sinn, was ich schreibe?
*
(SCHLAUMEIER)
Wobei es dann natürlich zu Komplikationen kommen kann, wenn dein Grafiker eine schiefe Zahl (d. h. eine, die nicht teilbar durch 16 ist) von Farben nutzt, weil dann deine Spritepalette z. B. zur Hälfte in Palette 101, zur anderen Hälfte in Palette 110 liegt.
(/SCHLAUMEIER)