Jako długoletni fan kart dźwiękowych gravis-a, byłem naprawdę szczęśliwy kiedy zobaczyłem prawdziwą nowość gravis-a. Od długiego czasu planowałem kupić kartę Ultrasound i kupiłem ją z 1 MB RAM-u jak tylko pojawiła się we Francji.
Zainstalowałem ją, i cieszyłem się kiedy została wykryta przez mój Plug'n'Play BIOS, a nawet przez Windows 95 (przepraszam, ale nie ponabijam się dzisiaj z ich marketingu). Więc pomyślałem, że karta mogłaby działać wszędzie...
No to odpaliłem Linux-a, nie miałem problemów, karta została wykryta jako gus rev 3.4, co wydawało się być poprawne, ale nie było...
Jakiś czas później spróbowałem Quake'a i nie miałem dźwięku. Przeczytałem więc podręcznik do gry, i zobaczyłem, że korzysta on z pewnych mechanizmów DMA, których nie było w standardowym gus-ie.
Pomyslałem, że to wcale nie jest zabawne, mieć taką cholernie dobrą kartę i nie mieć dźwięku w takiej fajnej grze. (wersja dos-owa potrzebuje emulacji sound blaster-a, a ja wolę nie mieć dźwięku niż to)
No to co teraz? Powinienem czekać do maja na sterownik PnP dla gus-a? Mam kupić sound blaster-a (sic)? co będzie w następnym odcinku "Akt X"?
No i wróciłem do dos-a i pobawiłem się trochę programem
iwinit. Popatrzyłem na to co mi wyświetlał w trybie
verbose i zobaczyłem coś takiego: CODEC adress 32c
...
Co? gus PnP ma CS4231/CS1848 Codec tak jak gus MAX???
Potem pogrzebałem po moich kopiach zapasowych i znalazłem ostatnie sterowniki gravis-a, wziąłem ultrinit 2.31 i wpisałem:
>set ultrasnd=220,6,5,5,5 >set ultra16=32c,0,0,1,0 >set ultradir=c:\ultrapnp >ultrinit
i wiecie co? Ultrasound MAX detected !!!
Wow. Super! Pomyslałem więc, że muszę tylko to wpisać zanim wystartuje Linux-a i będę miał obsługę gus Max i w końcu ten p**** quake będzie miał dźwięk !
To nie było takie proste 8(
Nie jestem dobrym programistą, ale znam C na tyle, żeby przejrzeć sterownik i zobaczyć co się dzieje (szczególnie jeśli jest tam dużo komentarzy).
Popatrzyłem do pliku gus_card.c
, ale nie znalazłem nic
ciekawego. Potem popatrzyłem do gus_wave.c
i zobaczyłem coś
takiego:
* Value 255 means pre-3.7 which don't have mixer. * Values 5 thru 9 mean v3.7 which has a ICS2101 mixer. * 10 and above is GUS MAX which has the CS4231 codec/mixer.
Super! Po prostu muszę ustawić wartość 10 i będzie działać... Nie!
Zrobienie tego spowoduje, że jądro będzie myślało, że masz gus Max, ale nie wykryje chip-a codec!
Więc musiałem także wymusić wykrycie tego chip-a!
Znalezienie co muszę zrobić nie było łatwe, ale w końcu mi się
udało. W pliku gus_wave.c
była taka linia:
if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))
co znaczyło, że jądro próbuje samo wykryć chip AD1848. Pomyślałem, że nie może go wykryć przez to PnP i miałem rację! Zmieniłem tę linię na:
if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))
skompilowałem jeszcze raz jądro i quake działa teraz na cacy!
Tak przy okazji: W pliku gus_card.c
jest opcja
gus_pnp_flag, ale nie widziałem żadnej różnicy między tym
kiedy była włączona i wyłączona 8( (może robiłem coś źle).
Nie zapomnij, że to nie będzie działać jeśli nie masz RAM-u na
swojej karcie...
Przede wszystkim nie używaj już lilo, ponieważ musisz
zainicjować gus-a PnP zanim wystartujesz Linux-a ([Od
tłumacza] w tej chwili można już inicjować karty (nie
wszystkie) PnP pod Linux-em. Przeczytaj podrozdział
Karty PnP pod Linux-em.). Napisz fdisk
/mbr pod dos-em, przeczytaj odpowiednie HOWTO na ten temat).
W swoim autoexec.bat
wpisz:
set interwave=c:\ultrapnp\iw.ini c:\ultrapnp\iwinit set ultrasnd=220,6,5,5,5 (czy jakie tam są twoje wartości) set ultra16=32c,0,0,1,0 set ultradir=c:\ultrapnp c:\ultrapnp\ultrinit
Ultrinit znajdziesz w gus00045.zip
na każdym ftp z
gravis-em.
Pod Linux-em, otwórz plik gus_wave.c
w katalogu
/usr/src/linux/drivers/sound
(czy gdziekolwiek
indziej). Znajdź linię:
if (val == 255 || val < 5) (line 3049 in 3.5b7)
i w linii wcześniej napisz:
val=10;
Potem znajdź linię:
if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085)
i zmień ją na
if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))
Skompiluj jądro z obsługą gus-a i gus max. U mnie jest to:
BASE = 220 IRQ = 5 DMA1 = 6 DMA2 = 5 DMABUF = 65536
No i miłej zabawy z dźwiękiem!
[Sekcja dodana przez tłumacza.]
Do inicjalizacji karty służy narzędzie o nazwie sapnptools,
które jest do zdobycia np. pod adresem
ftp.icm.edu.pl. Dokładny opis znajduje się razem z
dystrybucją. Ogólnie wygląda to tak: najpierw kompilujesz programy
isapnp i pnpdump. Potem tym drugim generujesz sobie plik
konfiguracyjny, który potem odpowiednio modyfikujesz do własnych
potrzeb. Następnie, żeby zainicjalizować kartę (jeśli używasz
modułu do dźwięku), piszesz isapnp /etc/isapnp.conf
i
insmod sound.
Używałem jądra w wersji 1.3.75, ale powinno być dobrze również z jądrami nowszymi niż 1.3.70 (napisz do mnie jeśli tak nie jest).
To mini-HOWTO zostało napisane przez J-F MAMMETa.
e-mail: mammet@diva.univ-mlv.fr
www: http://diva.univ-mlv.fr/ mammet/
Najnowszą wersję tego dokumentu możesz pobrać z mojej strony WWW pod
adresem
diva.univ-mlv.fr (to w krótce).
Nie biorę żadnej odpowiedzialności za jakiekolwiek szkody, które mogą ci się przytrafić (nawet padnięte win95).
Jeśli zobaczysz jakieś błędy w pisowni czy techniczne, to nie wahaj się napisać do mnie. Jestem tylko biednym Francuzem zagubionym w angielskim świecie, próbującym mówić zrozumiałym językiem.
27 Marca 1996.
Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na
tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu /HOWTO/
.
Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to
wyślij list o treści subscribe jtz Imię Nazwisko
na adres
majordomo@ippt.gov.pl
Zmiany wprowadzone przez tłumacza:
Doadałem sekcję dotyczącą inicjalizacji kart PnP pod Linux-em.