Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

W tym artykule dowiesz sie jak bawic sie kolorami wykorzystujac do tego nasza starenka VGA. Co prawda pewnie nikt z was nie ma juz prawdziwej VGA, ale chyba kazda z tych dzisiejszych super-mega-rakiet potrafi VGA emulowac (np. tryb 13h).

 

Na poczatek troche teorii. Obraz na ekranie jest rysowany tak (w duuuzym uproszczeniu oczywiscie), ze karta bierze sobie zawartosc kolejnej komorki pamieci z segmentu 0a000h i znajduje odpowiedni dla tej zawartosci kolor z palety. Jezeli w komorce pierwszej bedzie np. 36, to na monitorze zobaczymy w tym miejscu kropke w kolorze jaki jest zdefiniowany na 36 miejscu w palecie.

 

Kolor definiujemy przez okreslenie nasycenia 3 barwami - czerwona, zielona i niebieska. (jak sie przyblizysz odpowiednio blisko do monitora (albo lepiej TV) to na pewno zobaczysz takie male kolorowe kropeczki - wlasnie w tych kolorach). W trybie 13h mozemy ustalic wartosci RGB na 0-63. Przy ustawieniu 0,0,0 mamy kolor idealnie czarny, przy 63,63,63 - idealna biel. Color najbardziej czerwony to 63,0,0. Kolor zolty to mieszanka zielonego i czerwonego - czyli np. 50,50,0 - im mniejsze beda wartosci tym bardziej bedzie on przypominal brazowy. Mozesz sie tak bawic tymi kombinacjami caly dzien :-)

 

A jak definiuje sie kolor w palecie za pomoca assemblera? Bardzo prosto :-) Musimy tylko wyslac do portu 03c8h numer koloru, ktory chcemy zdefiniowac, a nastepnie do 03c9h po kolei trzy wartosci - R, G i B.

 

Aby wyslac cos do portu uzywamy instrukcji:

 

 

out dx,al

 

gdzie dx to numer portu a al wartosc tam wysylana

 

Aby ustawic kolor tla na niebieski trzeba wykonac nastepujacy kod:

 

 

mov dx,03c8h

xor al,al

out dx,al

inc dx

out dx,al

out dx,al

mov al,60

out dx,al

 

 

Jest jeszcze jedna rzecz ktora powinienes wiedziec. Po ustawieniu koloru n - karta jest gotowa do przyjmowania ustawien koloru n+1. Nie musimy wiec ciagle wpisywac numeru koloru do 03c8h. Wystarczy ciagle pisac do 03c9h.

×
×
  • Dodaj nową pozycję...