atarionline.pl Muzyka z Warhawk - nie gra dobrze na Atari - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorblul
    • CommentTime2 Feb 2014
     
    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?
    • 2: CommentAuthormono
    • CommentTime2 Feb 2014
     
    TIMER2 - jeśli masz na myśli przerwanie POKEYa, to nie będzie działał kanał drugi dźwięku. Odpalaj player na VBLKD.
    • 3: CommentAuthorblul
    • CommentTime2 Feb 2014
     
    Dzięki za odpowiedź. Zmieniłem na VBLKD i niestety efekt ten sam...
    • 4: CommentAuthormono
    • CommentTime2 Feb 2014
     
    Być może nie inicjalizujesz POKEYa (choć nie chce mi się wierzyć):
    lda #0
    sta $D20F ;SKCTL
    lda #3
    sta $D20F

    Warto czasem też wyzerować rejestry POKEYa ($D200..$D208).
    • 5: CommentAuthorblul
    • CommentTime2 Feb 2014
     
    A jednak nie inicjalizowałem...
    Nie jestem obeznany z POKEY-em, więc przyjąłem założenie, że init playera załatwia sprawę. Teraz działa. Dzięki! :)
    • 6: CommentAuthormono
    • CommentTime3 Feb 2014
     
    Nie ma za co :)
  1.  
    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.
    • 8: CommentAuthormono
    • CommentTime3 Feb 2014
     
    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.
    • 9:
       
      CommentAuthortdc
    • CommentTime5 Feb 2014
     
    No to jak już działa to miodzio, bo muzyka z Warhawk jest dla mnie super hiper pure klasyczna;)
    • 10: CommentAuthorblul
    • CommentTime5 Feb 2014
     
    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:

    lda #0
    sta audctl
    lda #3
    sta skctl
    • 11: CommentAuthormono
    • CommentTime5 Feb 2014
     
    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
    • 12: CommentAuthor0xF
    • CommentTime5 Feb 2014
     
    Ale po transmisji szeregowej wcale nie trzeba resetować POKEYa. Wystarczy 0 do AUDCTL i 3 do SKCTL jak napisał blul.

    A jeśli chciałbyś zresetować POKEYa, to SKCTL=0 musi być przez co najmniej 17 cykli, bo tyle potrzeba na zresetowanie 17-bitowego poly.
    • 13: CommentAuthormono
    • CommentTime5 Feb 2014
     
    Ooo! Dzięki Fox.