Probleme mit Farbpalette

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
Brueggi

Probleme mit Farbpalette

Beitrag von Brueggi »

Ich hab ein kleines Problem: Ich schreibe gerade ein Patch für Rick Dangerous. Klappt soweit auch gut - aber egal was ich tue, es wird immer nur eine Hälfe (glaube Farbe 0-6) geändert. Zur Funktionsweise: Ich "klinke" mit in den INT $10 ein und wenn auf einen Grafikmodus geschaltet wird, lasse ich diese Funktion zum Grafik-BIOS durch und ändere anschließend die Farbpalette. Natürlich habe ich schon an die Gruppierung der PAlette gedacht. Egal ob ich nun per OUT direkt die Register änder, oder per BIOS - entweder ist eine Hälfte immer schwarz (zumindest sieht es von Bild her so aus), oder nur die untere Hälfte der Palette wird gepatcht. Habt ihr einen Tip?
wobo
DOS-Guru
Beiträge: 614
Registriert: So 17. Okt 2010, 14:40

Re: Probleme mit Farbpalette

Beitrag von wobo »

Palette nach Setzen des Videomodes, aber vor Setzen der neuen Palettenwerte neu ausrichten?

Code: Alles auswählen

  var r:registers;
        i:byte;
  ...
  for i := 0 to 15 do
  begin
      r.ax := $1000;
      r.bx := word(i) shl 8+ i;
      intr($10, r);
  end;
Brueggi

Re: Probleme mit Farbpalette

Beitrag von Brueggi »

Hi Wobo! Dich gibts noch? ;-)

Also ich hau mich in den INT $10 rein. Alles was nicht mit dem Wechsel in den Grafikmodus zu tun hat, wird 1:1 weitergereicht. Beim Wechsel in den Grafikmodus lasse ich erstmal den echten INT $10 ausführen (klaro - muss ja in den Grafikmodus), und danach setze ich die neue Palette.

Und genau das ist das Problem...irgendwie... ich hab schon alles mögliche probiert. Mit Palettengruppierung auf 16 Farben, auf 64 Farben, ohne Palettengruppierung, per OUT direkt, per INT $10-Funktion... dann hab ich probiert, vor dem Wechsel in den Grafikmodus die Palette zu setzen und das AutoInit der Palette zu unterbinden - klappt aber auch nicht - dann kommen irgendwelche Grün-Töne raus.

Das beste Ergebnis ist das, dass offenbar Color 0-6 geändert wird (bei 7 bin ich nicht sicher), alle anderen Farben bleiben auf Vorgabe. Im schlimmsten Fall erscheint die 16-Farb-Auflösung in 8 Farben (sieht auf jeden Fall so aus) oder bleibt komplett schwarz. Ich hatte diese Probleme bisher immer nur im Textmodus, konnte dies aber mit der Neugruppierung der Palette (muss jetzt kurz überlegen..$1013 is es glaub ich) beheben. Nur in dem 320x200x16 Col-Modus stellt sich die GraKa einfach auf stur (laut Vesa-Dok ist das wohl Mode $0D der EGA/VGA-kompatibel ist). Dabei wollte ich doch nur die (hässlichen) CGA-Farben weg haben :-( Natürlich habe ich schon das Color-Mask-Register mit $FF belegt - weil ich dachte, die GraKa maskiert irgendwie die oberen 4 Bits der Farbnummer (0-15) aus - oder warum werden nur die ersten 6/7 Farben geändert? Hat(te) das damals einen Grund?

Kennt noch irgendwer einen Trick? Rick Dangerous sieht nämlich cool aus mit den neuen farben :-) Und ich gebe die Hoffnung nicht auf, dass ich das mit anderen DOS-Programmen auch machen kann (so eine optimierte Palette wirkt oft wunder).

@Wobo: Ich probier das mal. Danke sehr. Gleich mal an den 486 setzen :-) Wenn das mal klappt - hammääärrr :-)
Brueggi

Re: Probleme mit Farbpalette

Beitrag von Brueggi »

Habs probiert - keine Änderung. Habe dann einfach mal 16x die Farbpalette per OUT rausgeschickt - dann kam aber wieder das 8-Farb-Spielchen (wobei das eher wie halbe Helligkeit aussieht und deshalb viel Schwarz im Bild ist).
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Probleme mit Farbpalette

Beitrag von DOSferatu »

Im Textmodus werden 16 Farben aus einer 64Farb Palette benutzt (jeweils 4 Stufen für Rot, Grün, Blau)
Die normalen 16 Farben des Textmodes entsprechen folgenden Farben dieser 64 Farb Palette:
0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63

(Ja, ich weiß, die 20 da sieht komisch aus. Aber es stimmt, denn die "dunkle" Farbe zum "Gelb" ist im Textmode bekanntlich nicht Dunkelgelb, sondern dieses Orange-Braun. Ich habe das damals getestet.)
Brueggi

Re: Probleme mit Farbpalette

Beitrag von Brueggi »

Die Frage ist: Wieso können nur 7 Farben geändert werden? Wobei ich im Textmode durch Neugruppierung mit $1013 und OUT der VGA-Farben ja alle Farben frei ändern konnte. Nur jetzt im Mode $0D klappt das iwie nicht...
Antworten