System Windows 95 miał pulpit o jednolitym kolorze, nazwijmy go morskim. Dlaczego instalator nie ustawiał domyślnie żadnej tapetki? A gdybym powiedział wam, że taki obrazek mógłby zająć ponad połowę całej pamięci operacyjnej?
Nie ma w tym wiele przesady, wybierzmy się więc trzy dekady w przeszłość i sprawdźmy, jak sprawy miały się w okolicach premiery Windows 95.
W roku 1995 typowy rozmiar pamięci RAM pecetów w domach i biurach wynosił 4 MB czyli jakieś dwa tysiące razy mniej, niż obecnie. Ile zajęłaby bitmapa do umieszczenia na pulpicie? Policzmy! Przyjmijmy rozdzielczość 1024×768 pikseli – to przecież czasy sprzed „filmowych” proporcji 16:10. Mamy więc tych pikseli 786.432. Każdy piksel naszej tapetki ma składowe RGB (czerwony-zielony-niebieski) o nasyceniu od 0 do 255, co oznacza, że na każdy piksel potrzebujemy trzech bajtów.
Przeprowadzamy mnożenie i otrzymujemy 2304 kilobajty czyli 2.25 megabajta (jeśli terminy te nie są do końca jasne, przeczytaj artykuł Kilobajt, megabajt, gigabajt, terabajt). To oznacza, że pełnoekranowa fotka wstawiona na pulpit zajmie ponad połowę z 4 MB pamięci komputera. Takie marnotrawstwo zasobów miałoby dramatyczny wpływ na funkcjonowanie programów uruchamianych na tej maszynie.
Ale przecież…
Wielu czytelników formułuje w tym momencie zarzuty do poprzedniego akapitu. Odniosę się do nich, zanim pojawią się w komentarzach:
Ale przecież bitmapa trafi do pamięci karty graficznej
Mamy rok 1995 a w typowym pececie siedzi karta graficzna marki S3, Tseng albo Trident, zgodna ze standardem SVGA (a raczej obsługująca kilka popularnych trybów graficznych utożsamianych ze skrótem Super Video Graphics Array). Były to konstrukcje bardzo proste – realizowały jedynie tak zwany bufor ramki. Procesor komputera pisał bezpośrednio do pamięci karty graficznej, zmiana koloru piksela wymagała zapisania nowej wartości do jednej lub kilku komórek pamięci.
Układy elektroniczne składające się na kartę graficzną kilkadziesiąt razy na sekundę odczytywały zawartość kości pamięci i w oparciu o pozyskane dane kodowały analogowy sygnał niosący informacje o kolorach (oraz synchronizacji pionowej i poziomej), przesyłany przez złącze D-Sub do monitora ekranowego.
Jeśli więc okienko jakiegoś programu przesłaniało część pulpitu, ale zostało zamknięte, odpowiedni fragment tapetki należało skopiować z pamięci RAM komputera do pamięci karty graficznej. Konieczne było więc trzymanie bitmapy w pamięci operacyjnej, aby dostęp do niej był natychmiastowy.
Dodajmy, że „akceleratory 2D”, jak S3 ViRGE czy ATI Rage, odciążały procesor jedynie w takich funkcjach, jak szybkie rysowanie wypełnionych prostokątów (co skądinąd bardzo przydawało się w systemie Windows). Dopiero 2-3 lata później popularność zaczęły zdobywać prawdziwe akceleratory 3D, które przechowują w pamięci bitmapy i sprzętowo realizują polecenia w rodzaju „przeskaluj obraz do rozmiarów X1/Y1, obróć o S stopni, i umieść na ekranie począwszy od współrzędnych X2/Y2”. Procesor nie zajmuje się wtedy bezpośrednio obróbką pikseli widocznych na monitorze, znika też bezpośrednie przełożenie zawartości pamięci wideo na obraz prezentowany użytkownikowi.
Ale przecież bitmapa może być skompresowana, np. jako JPEG albo PNG
W systemie Windows 95 tworzeniem zawartości ekranu – i zapisywaniem rezultatu do bufora ramki – zajmował się moduł GDI, relatywnie nieskomplikowany. Nie potrafił on ładować fragmentów obrazu „na żądanie” ani przechowywać ich w formie skompresowanej.
Co gorsza – nawet bitmapa o mniejszych rozmiarach, ale wyświetlana na całym ekranie, musiała być przeskalowana w górę do pełnych rozmiarów pulpitu. W razie potrzeby dokonywany był też tzw. dithering, czyli zamiana oryginalnych kolorów obrazka na występujące w używanej aktualnie palecie. Wrócimy do tego za chwilę.
Ale przecież karta SVGA z 512 kilobajtami pamięci nie pomieści bufora ramki o rozmiarze 2 megabajtów
To prawda! Tanie, a więc i popularne karty graficzne z połowy lat ‘90 miały 512 lub 1024 kilobajty pamięci (0.5-1 MB). To w naturalny sposób ograniczało możliwości graficzne pecetów.
Zacznijmy od tego, że tryby graficzne True Color z 24-bitową głębią kolorów (16,7 mln barw) nie były zbyt popularne, bo możliwość ich użycia kończyła się de facto na rozdzielczości 640×480. Ta wystarczała do gier, lecz była zbyt niska do jakichkolwiek zastosowań biurowo-zawodowych.
Rozwiązaniem były tryby 16-bitowe High Color, w których na każdy kanał przypadało 5 lub 6 bitów. Przy zużyciu pamięci zredukowanym o 33% mogliśmy korzystać z 65.536 kolorów w popularnej rozdzielczości 800×600 pikseli, wystarczała do tego karta z 1 MB pamięci.
W trybie 256 kolorów (jeden bajt na piksel) ten sam 1 MB bufora ramki wystarczał na pracę w rozdzielczości 1024×768 pikseli. Zmienna paleta barw, używana w tym trybie, skutkuje jednak problemem, któremu przyjrzymy się za chwilę.
Widzimy, że alarm podniesiony na samym początku tekstu nie miał przełożenia na rzeczywistość. Typowy pecet mógł wyświetlić jedynie bitmapy o rozmiarach nie przekraczających pamięci karty graficznej, czyli – przypomnijmy – 0.5-1 MB.
32-bitowe tryby graficzne (RGB + alpha channel czyli informacja o przezroczystości piksela) były wówczas wyłącznie ciekawostką, bo Windows 95 nie obsługiwał tej funkcji w GUI a wymagania dotyczące rozmiaru pamięci karty graficznej były o 1/3 większe, niż w trybach 24-bitowych. Jedyną korzyścią były szybsze operacje na blokach pamięci możliwe dzięki dopasowaniu rozmiaru „piksela RGBA” do rozmiaru szyny adresowej, co mogło zwiększać np. płynność przewijania zawartości okien.
Dygresja – owo przewijanie i tak nie było zbyt szybkie z powodu niskiej przepustowości szyny ISA. Osoby zainteresowane historią pecetów mogą sprawdzić, czym były magistrale VESA Local Bus (VLB) oraz Accelerated Graphics Port (AGP).
Chmurka
Jedyną większą tapetką, jaką Microsoft dołączył do systemu Windows 95, był plik clouds.bmp
. Ma on rozmiar 640×480 pikseli i używa 8-bitowej palety indeksowanej, sam obrazek składa się z 65 kolorów. Z nieznanych przyczyn plik ten zniknął już w wersji systemu 95 OSR2.
Podczas instalacji widzimy plik setup.bmp
, o takich samych rozmiarach, lecz jednobitowej palecie z kolorami niebieskim i czarnym. Dzięki temu zajmował na dysku jedynie 38 kilobajtów.
Desenie i kafelki
Efektywny brak możliwości użycia dużych obrazków nie oznaczał, że pulpit zawsze był nudnym, jednokolorowym prostokątem.
Pierwszą możliwością urozmaicenia były tzw. desenie czyli powtarzalne wzorki rysowane na pulpicie. Dostępnych było kilkanaście gotowych deseni, oprócz tego w prostym edytorze można było realizować własne projekty. Zużycie pamięci było prawie żadne zaś rysowanie – bardzo szybkie.
Inna opcja to użycie małego obrazka i wyświetlanie go „sąsiadująco” czyli w formacie powtarzalnych kafelków. Dzięki temu nawet dwukolorowy obrazek czyni pulpit bardziej interesującym, w przypadku tapetki „kółka” kosztem niespełna dwustu bajtów pamięci.
Powyżej bitmapa 32×32 piksele, tu jej użycie:
Wszystkie kafelki dostępne w Windows 95 można znaleźć na tej stronie.
O co chodzi z paletami
Gdy Windows 95 pracował w trybie 16 kolorów, były to zawsze te same kolory. Debiutował z nimi pół dekady wcześniej Windows 3.0 i nadal pojawiają się one tu i ówdzie w najnowszej odsłonie Windows 11.
W trybie 8-bitowym na ekranie można wyświetlić jednocześnie do 256 kolorów, ale pod Windows aplikacje mają do dyspozycji jedynie 236 barw do swobodnego wykorzystania. Windows 95 – oprócz 16 zawsze dostępnych kolorów podstawowych – rezerwował cztery pozycje palety na potrzeby specjalne (możliwość użycia „prywatnych” kopii bieli i czerni z opcją szybkiej modyfikacji tych barw).
Co działo się, gdy dwa różne programy próbowały wyświetlić grafikę korzystającą z różnych palet? Sprawdźmy! Na potrzeby eksperymentu przygotowałem dwa obrazki – bardziej zielony i bardziej czerwony, każdy z osobną paletą 230 zoptymalizowanych kolorów.
Potem obrazki te otworzyłem pod Windows 95 w dwóch instancjach programu Paint, zajmujących po połowie ekranu. Okazuje się, że wykorzystywana paleta barw zawsze jest podporządkowana programowi działającemu na pierwszym planie. Tapeta i okienka programów drugoplanowych są poddawane ditheringowi i rysowane przy użyciu kolorów możliwie bliskich oryginałowi.
Powyższa animacja ilustruje przełączanie aktywnego okna – paleta zmieniana jest natychmiast, przez ułamek sekundy widzimy okno w tle z przekłamanymi barwami, potem system odrysowuje widok z użyciem kolorów przybliżonych.
Ciekawostka – umiejętnie przygotowany obrazek i cykliczna zmiana części kolorów palety pozwalały na realizację animacji nie zajmującej w ogóle miejsca na dysku ani w pamięci komputera. Sztuczka ta była szczególnie popularna w grach na komputery 16-bitowe.
Przykłady wielu historycznych palet kolorów można znaleźć w tym artykule na Wikipedii.
Windows XP i pierwsza domyślna tapeta
System Microsoft Windows XP, który trafił na rynek pod koniec roku 2001, jako pierwszy pokazywał po instalacji domyślną tapetkę, czyli bliss.jpg
z zieloną łąką i niebieskim niebem (rozdzielczość 800×600, 51 KB na dysku). Nie zdarzyło się to we wcześniejszych Windows 98, Windows ME ani serii Windows NT/2000. Czemu więc XP?
Wyjaśnienie jest banalnie proste – na przełomie tysiącleci komponenty składowe pecetów zaczęły gwałtownie tanieć a producenci oprogramowania skwapliwie z tego korzystali. O ile w 1995 roku typowym rozmiarem pamięci RAM było 4-8 MB, to w 2001 – co najmniej 128 MB, często 256 MB. Dygresja – z tego samego powodu dwu-trzyletni komputer był już wtedy złomem, tymczasem dziś maszyna mająca 10 lat nadal nadaje się do pracy.
Tym samym nasza hipotetyczna tapetka zajmująca w pamięci 2 MB nie zjadała już połowy dostępnych zasobów. Nawet na komputerze z 64 MB RAM (minimalna konfiguracja wymagana przez Microsoft) byłoby to zaledwie 3% całości. W Windows XP tapeta musiała nadal rezydować w pamięci RAM, jednak uznano, że względy estetyczne uzasadniają jej domyślne użycie.
Podsumowanie
Od roku 2001 każdej kolejnej wersji systemu Windows towarzyszyła nowa tapetka. Na stronie Windows Wallpaper Wiki można znaleźć nie tylko obrazki domyślne, lecz także wszystkie tapety z każdej edycji systemu. Warto tam zajrzeć choćby po to, by obejrzeć przepiękne krajobrazy z mało znanej wersji Windows 10 China Government Edition.
O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.

9 odpowiedzi na “Dlaczego Windows 95 nie miał domyślnej tapety”
Mam do owego morskiego koloru ciekawostkę. Monitor LG Flatron któryśtam był sprzedawany z wydrukowanym próbnikiem właśnie tego morskiego koloru. Można było próbować kalibracji mając próbnik przyklejony do ekranu.
dziękuję za przypomnienie tych czasów pełnych pudełek z dyskietkami i wojnami o każdy KB pamięci RAM. Pozdr. cAP
Dzień dobry, w ramach małego uzupełnienia – warianty wspomnianego TSENG (et4000w32) jak i modele S3 (np bardzo popularne Trio) w czasach windows 95 już nie były zwykłymi framebufferami dla 2d, bo miały „solidne” dopalacze graficzne z których korzystało GDI windowsa. niemniej – nie zmieniało to chyba wiele w kwestii wyświetlania bitmap, bo żaden z tych dopałów i tak nie wspierał dekompresji bitmap. Pozdrawiam – fajny artykuł z gatunku nostalgii za prostymi rozwiązaniami (których teraz jak na mój gust – brakuje).
w czasach premiery Windowsa 95, nikt nie używał rozdzielczości 1024×768. Typowa rozdzielczość to było 640×489, a ekstrawagancja to 800×600. Tylko wyjątkowo zdeterminowany masochista odpalał Win95 na Tridencie 512kb, bo nawet skrollowanie okienek się przycinało. Także ta tapeta nie zjadłaby połowy ramu, aczkolwiek faktycznie dlatego jej domyślnie nie było.
Rozdzielczość 640×480 dawała radę w Windows 3.x, ale w Windows 95 było nieużywalna. Nawet niektóre systemowe okienka się nie mieściły.
Ja pamiętam, że na Win 95 używałem wyłącznie 640×480, a dopiero na Win 98 800×600, a 1024×768 dopiero bodaj na Win XP 😉
przycinał się, bo trident to był zwykły framebuffer. ja miałem S3 Trio i działał fajnie nawet na win 3.11 przy 1280×1024 – bo miał wsparcie w HW dla operacji GDI takich jak rysowanie linii, prostokątów itp. Rzecz jasna w win95 też to tak działało.
W epoce późnego Windows 95 miałem monitor 17″ z rozdzielczością 1024×768 (nawet dało się ustawić większą, ale obraz był nieostry), a milionerem nie byłem. To był wtedy sprzęt lepszy od przeciętnego, typowe było 15″ i 800×600, ale nie jakoś kosmicznie drogi. Ekstrawagancja to były monitory 20″ i większe, nie widziałem żeby ktoś miał w domu czy zwykłym biurze.
Ogólnie dobry artykuł, choć jak na ironię właśnie pierwsze założenie jest trochę tendencyjne i poniekąd błędne.
Otóż autor zakłada dość wymagającą tapetę. Na tamte czasy obraz w rozdzielczości 800*600 przy 256 kolorach byłby całkiem przyzwoity, a takie parametry to już znacznie mniejsze wymagania. Także było to do udźwignięcia, natomiast zgadzam się, że chodziło o oszczędność.
W zasadzie już Windows 98 wchodził na rynek w okolicznościach, gdzie sporo komputerów miała 16 MB RAM, co umożliwiało dodanie tapet nawet w rozdzielczości 1024*768 przy 65 tys. Kolorów