wtorek, 12 marca 2013

EX5 - Emulacja karty 3dfx/Glide wrapper

Dzisiaj będzie króciutko, jako że sam temat jest bardzo do ogarnięcia. Cała zabawa jest łatwa - chcesz zagrać w klasyka, ale ten się zawiesza, wysypują się kolory, pojawiają się artefakty graficzne czy w ogólnie nie można przyciąć w innym trybie, niż software rendering? Nie lękaj się, wierny towarzyszu, albowiem i na to jest sposób, który ma szansę na wyeliminowanie tego nieprzyjemnego problemu - emulacja akceleratora graficznego 3dfx'a oraz API Glide'a.

Szybciutka powtórka dla wszystkich nowicjuszy, wyjadacze mogą spokojnie przejść akapit dalej - 3dfx Interactive to firma, która specjalizowała się w tworzeniu wszelakich tzw. „akceleratorów graficznych” - innymi słowy kart graficznych, które dodawały kopa komputerowi i wspierały go w renderowaniu grafiki 3D. Ich pierwszy produkt, dostępny dla wszystkich obywateli (za, w miarę, normalne pieniądze) - karta Voodoo, wydana w 1996 roku, wywróciła świat informatyczny do góry nogami. Komputery w końcu wyzbyły się wszelkich kompleksów graficznych i potrafiły wyświetlać śliczną grafikę 3D. Dodatkowo procesor został odciążony z większości obliczeń, niezbędnych do renderowania warstwy graficznej, co pozwoliło na spokojną grę użytkownikom, którzy nie posiadali mocnych sprzętów (np. gra na komputerze P166 + akcelerator, działała szybciej, niż na maszynie z P266, ale bez odpowiedniej karty). Wszystkie akceleratory ze stajni 3dfx korzystały z interfejsu aplikacyjnego o nazwie Glide API, który nie był kompatybilny z OpenGL'em czy Direct3D. Co za tym idzie - jeżeli nie dołączono obsługi kart D3D/OGL ich rendering sprzętowy działał tylko na kartach 3dfx'a, na wszelkich innych komputerach możliwa była zabawa tylko w trybie software (bez używania akceleratora graficznego - gorsze kolory i efekty, mniejsza wydajność). Co prawda do większości gier, w późniejszym czasie, zostały wydane odpowiednie patche, dodające obsługę Direct3D, jednak co niektóre obsługiwały jedynie API Glide'a. A jakby jeszcze tego było mało, to w dzisiejszych czasach zainstalowanie odpowiedniej łatki wcale nie musi oznaczać rozwiązania problemu - sterowniki kart graficznych przestały być w pełni kompatybilne wstecz ze starszymi, niskopoziomowymi bibliotekami. To najlepiej można zobaczyć na przykładzie kart ATI/AMD, gdzie gra w niektóre starsze tytuły, w trybie Direct3D jest niemożliwa - drivery już nie obsługują starych, 16-bitowych instrukcji graficznych, co powoduje, że grafika w kilkunastu starszych grach najnormalniej w świecie się wykrzacza (popularnym przykładem jest Croc: Legend of the Gobbos czy Omikron: The Nomad Soul). Inne niewspierane instrukcje mogą spowodować zawieszenie się gry, czy nawet całego komputera, przy próbie uruchomienia. Na szczęście jednak istnieją tzw. glide wrappery, czyli emulatory API graficznego 3dfx'a, które umożliwią odpalenie takowych tytułów na nowych komputerach.

Uf, to nam się wstęp nieco wydłużył. Ale nic, jedziem z tym śledziem, panowie. Istnieje kilka różnych wrapperów, których możemy użyć. Wśród nich są m.in. zeckensack's Glide wrapper czy Glide3-to-OpenGL wrapper. Ja osobiście polecam nGlide firmy ZeusSoft. Jest on darmowy, obecnie w wersji 1.01 i oferuje największą kompatybilność ze starszymi gierkami. Ściągnąć go można ot chociażby stąd. Wystarczy zainstalować i teoretycznie to wszystko!

...a teoretycznie to dlatego, że programik na początek wypadałoby skonfigurować. Wbijaj do Menu Start, wyszukaj pozycję „nGlide” i odpal Configurator, a twym oczętom ukaże się oto okienko:


Opcje do zmiany powinny być rozumiane same-przez-się, ale dla tych, którzy są na bakier z pojęciami technicznymi czy angielskim - szybkie objaśnienie:
  • Screen resolution - tutaj można wymusić rozdzielczość aplikacji, która będzie korzystać z wrappera. Ciekawostką jest fakt, że wcale nie jesteś limitowany do klasycznego 1024x768, możesz ustawić nawet rozdzielczość HD, aż do 2560x1600!
  • Aspect ratio - czyli po ludzku proporcja ekranu, 4:3 (starsze, kwadratowate ekrany) lub 16:9 (szerokie ekrany). Fit to screen oznacza, że obraz zostanie rozciągnięty, aby dopasować się do twojego aktualnie używanego ekranu
  • Refresh rate - wartość odświeżania ekranu, od 60 do 120 Herców. Domyślnie lepiej tutaj nie kombinować i zostawić domyślnie (default)
  • Vertical synchronization - czyli v-sync, znane w Polandii jako synchronizacja pionowa, innymi słowy dopasowanie wyświetlania obrazu przez monitor, z dopływającymi do niego danymi o renderowanym obrazie, zapewniające płynność zabawy i stałą ilość klatek (60). Najlepiej zostawić włączone - wyłączyć, jeżeli szybkość gry jest niestabilna
  • Gamma correction - jasność, mówiąc po polskiemu - wyższe wartości rozjaśniają obraz, mniejsze - przyciemniają
  • 3Dfx logo splash screen - za każdym razem jak odpalisz gierkę, korzystającą z wrappera, zobaczysz na początku krótki logos 3dfx'a. Tutaj możesz go wyłączyć (lub włączyć, jak wolisz)

Jak widzisz, ilość opcji do ustawienia jest dość imponująca - możliwe jest uruchamianie starych gierek w rozdzielczościach HD, czy nawet nagrywanie gameplay'ów przez np. FRAPSa, gdyż emulacja API Glide'a jest rozwiązywana sprzętowo. Ale chwilka! Konfiguracja programu to jedno, należy także osobno skonfigurować grę, którą chcemy odpalić. W niektórych przypadkach dany tytuł sam się domyśli, że ma do czynienia z kartą 3dfx'a (nawet i udawaną), jednak w niektórych należy manualnie wskazać, z czego konkretnie ma korzystać. Odpal program konfiguracyjny danej gry i wybierz coś w stylu Render Settings, Driver Settings, Video Options lub Graphics Settings - wiesz, coś w ten deseń. Tam należy wybrać kartę 3Dfx Glide, 3Dfx Voodoo czy 3Dfx (or compatible) - podobnie, nazwa może się różnić, ale na pewno będzie miała Glide albo 3dfx w nazwie. Zatwierdź opcje i spróbuj odpalić. Poniżej przykłady wyboru karty - tutaj w Croc'u i Diablo II:

Croc: Legend of the Gobbos

Diablo II: 

Po odpowiednim wyborze kary i skonfigurowaniu wszystkiego pozostaje tylko odpalenie gierki i sprawdzenie czy działa. Działa? Super, życzę miłego grania! Nadal nie działa? Cóż, to trzeba zakasać rękawy i sprawdzić dwie rzeczy:
  • Oficjalna lista kompatybilności nGlide - gdyż niektóre tytuły wymagają odpowiedniego patcha, lub ustawienia trybu zgodności. Wszelkie wymagane łatki znajdują się już na stronie. 
  • Przeskanowanie katalogu z grą, czy przypadkiem nie ma tam własnego pliku *.dll Glide'a - niektóre tytuły miały już załączone biblioteki Glide'a i uparcie próbowały z nich korzystać, jeżeli w ustawieniach wybrało się kartę 3dfx. To oczywiście nie zadziała, gdyż nGlide korzysta ze swoich własnych dll'ek - jeżeli gra, mimo wszystko, nadal się rozkracza to wpadnij do katalogu, w którym ta jest zainstalowana i usuń wszelkie pliki z Glide w tytule. Rób to jedynie w ostateczności, gdyż po takim zabiegu gierka w ogóle może odmówić posłuszeństwa.

Po takich zabiegach gra powinna spokojnie się odpalić. Tak też nie pozostaje mi nic innego, jak życzyć miłego giercowania!


1 komentarz:

  1. 3dfx. Oj to były czasy..

    PS. Bardzo dobry i przydatny artykuł.

    OdpowiedzUsuń

Komentarze, sugestie, przemyślenia? Wal śmiało!