Próbowałem wstawić muzę z Warhawk do prostego demka. Wyciąłem zawartość SAPa i załadowałem do pamięci zgodnie z nagłówkiem, czyli od adresu $B478:
SAP AUTHOR "Rob Hubbard" NAME "Warhawk" DATE "1986" TYPE B INIT B478 PLAYER B47E TIME 03:37.40 LOOP
W programie odpalam init pod adresem $B478 a potem w przerwaniach TIMER2 skaczę pod $B47E. Na emulatorze gra pięknie, natomiast na Atari nie słychać linii melodycznej - jest tylko akompaniament. Brzmi to tak, jakby nie działał jeden kanał dźwiękowy. Z tego samego SAP-a wygenerowałem WASAP-em plik xex, który gra jak trzeba, zarówno na emulatorze, jak i na sprzęcie. Jakieś sugestie co robię nie tak?
Kurde, miałem ostatnio to samo :) Zgłupiałem, bo ładując grę pod SDX przez SIO działało dobrze, a z partycji SDX źle. Albo na odwrót, nie pamiętam już.
Odłożyłem problem na półkę, ale ponieważ w kodzie nie mam inicjacji pokeya, to już wiadomo o co chodziło.
Trzeba było pytać :) Newdevicecs nie używają POKEYa, bo i po co więc z hdd raczej działało bezproblemowo. Za komunikację szeregową odpowiada POKEY, jak również za generowanie dźwięku i to za pomocą tych samych generatorów (3,4 z fdd, 1,2 z tape). Podczas transmisji POKEY jest rekonfigurowany, więc po jej zakończeniu należy go zresetować. Ot i cała filozofia.
Demko ma być dodatkiem do prezentu urodzinowego (65XE), więc wybór muzyki został podyktowany preferencjami solenizanta. Osobiście wybrałbym Jet Set Willy :) A propos inicjalizacji - czy nie powinna przypadkiem wyglądać tak:
To nie zresetuje POKEYa, lecz przestawia go w normalny roboczy stan (odczyt klawiatury i eliminacja drgań zestyków). RESET POKEYa to 0 do SKCTL. Zerowanie AUDCTL jest opcjonalne, choć playery które nie dotykają AUDCTL będą oczywiście źle grać, więc warto to zrobić. Analogicznie a resztą rejestrów, dlatego napisałem: - zerować $d200..$d208 - SKCTL=0 - SKCTL=3