Czy da się przedefiniować paletę w trybie tekstowym

fatalbomb

Uwaga: aby zrozumieć w pełni ten kod, przeczytaj najpierw poprzednią wskazówkę ("jak zdefiniować kolor w trybie graficznym", u dołu zamieściłem link). Będę się do tego odwoływał.
Aby przedefiniować paletę w trybie tekstowym, trzeba (chyba?) trochę oszukać system. Wchodzimy do trybu graficznego, po czym z niego wychodzimy, wybierając tryb tekstowy. Potem majstrujemy jak chcemy, używając SetRGBPalette (uwaga: tutaj też kolory 9, 10, 11 itp jako 57, 58, 59 itd...!). Zaczynamy tak:

 <b>uses</b> crt, graph;
 <b>var</b> Gd, Gm:Integer;
 <b>begin</b>
 Gd := VGA;
 Gm := VGAHi;
 InitGraph (Gd, Gm);
 TextMode (CO80); { Nie używać w tym miejscu CloseGraph! }
 { --- I tu majstrujemy z paletą i całą resztą --- }
<b>end</b>.

I to cała filozofia! Polecam.
Artykuł "jak zdefiniować kolor w trybie graficznym" . Jakby nie chodziło, to piszcie.

FAQ

3 komentarzy

Mozna chyba prosciej:
bez trybu graficznego:

port[$3c8] := 7; {numer koloru ktory chcesz zmienic 7 standardowo j.szary}
port[$3c9] := 63; {Skladowa R - czerwonego koloru 0-63}
port[$3c9] := 63; {Skladowa G - zielonego koloru}
port[$3c9] := 0; {Skladowa B - niebieskiego koloru}

przy czym mozesz korzystac tylko z kolorow 0-63 -> niestety tylko 2^16 ale to i tak chyba wystarczy 16 bitow
powodzenia,

Kamil (http://www.programowanie.vsz.pl)

Dodaj link do tej poprzedniej wskazówki - z czasem dojdą kolejne artykuły i nikt nie znajdzie "poprzedniej wskazówki".