Autor Wątek: Muzyka w grach i pliki muzyczne  (Przeczytany 32650 razy)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #30 dnia: 2012.04.25, 21:52:04 »
nie ma załącznika  :(
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #31 dnia: 2012.04.25, 22:48:23 »
No masz... Najpierw forum marudziło, że nie mogę załączyć pliku .bin a jak już go zzipowałem to w ogóle nie wzięło załączników.

Teraz powinno być lepiej ;)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #32 dnia: 2012.04.26, 04:00:11 »
AY w Spectrum jest taktowany około 1.77MHz i muzyka gra rzeczywiście wyżej i gdyby nie użyto w niej trójkątnych fal na generatorze obwiedni, grałaby idealnie. A tymczasem te dźwięki "wyszły" poza zakres, który AY w Spectrum jest w stanie zagrać i w sumie została tylko "sekcja rytmiczna", główna melodia uciekła w powietrze, ale to nie problem, ważne że coś podobnego do Dark Fusion gra :)
Te "tony tablic" to najprawdopodobniej przeliczenia wartości nutowych z trackera na wartości zapisywane do rejestrów AY.
Mam tylko pytanie, czy przerabiałeś tą muzykę za pomocą jakiegoś narzędzia, czy wszystko ręczna robota?
Jeśli to pierwsze, to daj mi namiary, bo jest wiele gier na CPC, które mają muzykę na AY a na Spectrum jest beeper albo brak.
Przydałaby się w intrach które robię.
« Ostatnia zmiana: 2012.04.26, 05:31:33 wysłana przez Abrimaal »
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #33 dnia: 2012.04.26, 08:01:53 »
Hmmm... Jeśli zależność częstotliwości między Spectrum a CPC dałaby się opisać liniowo albo jakimś niezbyt skomplikowanym algorytmem to wydaje mi się, że dałoby się poprawić procedurę wysyłającą do portów AYgreka tak, żeby w locie robił konwersję częstotliwości. Ale ktoś ze słuchem muzycznym musiałby posłuchać obu wersji i się wypowiedzieć bo ja niestety mam pierwszy stopień umuzykalnienia - jak gra to słyszę ;)

Co do metody - nie mam żadnych narzędzi automatyzujących. Wziąłem plik binarny wyrzucony przez splitter, przepuściłem go przez dekompilator Z80 wynik przemieliłem własnym skryptem, który generuje etykiety i przetwarza kod do formatu zgodnego z pasmo. Potem analiza kodu, namierzenie istotnych kawałków (w tym wypadku trzy procedury), podmiana kodu tak, żeby nie zmienić jego rozmiaru i dopisanie Spectrumowych odwołań do AYgreka w osobnej procedurce na końcu kodu dopiętej w miejscu oryginalnych procedur CPC.

A wcześniej jakieś półtorej godziny kombinowania czy da się kod doprowadzić do takiego stanu, żeby się kompilował pod dowolnego ORGa i wniosek, że jest za dużo tablic, których nie chce mi się analizować ;)

Najważniejszy pozytywny efekt całości to to, że w końcu zamiast za każdym razem dłubać ręcznie zrobiłem sobie skrypt dopasowujący kod dla pasmo ;)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #34 dnia: 2012.04.26, 10:06:07 »
W takim razie jeśli będę robił intro do jakiejś gry np. 1943, Antiriad czy Barbarian, o ile uda mi się zdobyć oryginalne pliki .ay lub .ym z Amstrada to podrzucę, jeśli już masz automatyczny skrypt.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #35 dnia: 2012.04.26, 10:52:55 »
Skrypt automatyzuje przetworzenie binarnych danych na coś na czym mogę pracować symbolicznie. Zmiana procedur wysyłających dane do AYgreka to zawsze ręczna analiza i poprawianie kodu.

Ale jak już wiem jak CPC gada z AYgrekiem (robi to zresztą wyjątkowo pokrętnie - chip jest podpięty za pośrednictwem 8255 i transmisja leci za jego pośrednictwem) to - jeśli tylko muzyka nie siedzi pod niewłaściwym adresem to przerobienie jej na Spectruma nie powinno być wielkim problemem. A jak ktoś jeszcze powie jak robić translację częstotliwości to zrobię sobie gotowca i będzie można transponować muzyczki do poziomu Spectruma.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #36 dnia: 2012.04.26, 14:16:30 »
Zaparłem się i znalazłem babola ;)

W załączniku testowy tap odpalający dokładnie to samo co poprzednio, ale tym razem kod razem z "odpalaczką" łądowany jest od $8000. Okazało się, że w jednym miejscu są dwie tabele które zawierały wspólnie adresy fragmentów muzyki ale przechowywane tak, że najpierw była tablica młodszych bajtów a potem tablica starczych bajtów adresów. Jak już poprawiłem ten jeden kawałek to muzyczka oczywiście zaczęła grać :)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #37 dnia: 2012.04.26, 14:28:25 »
Wyizolowałem też kawałek kodu odpowiedzialny za wysyłanie do AYgreka częstotliwości poszczególnych kanałów - brakuje tylko tablicy transpozycji (bo prosty SUB nie załatwia sprawy) i można poprawić muzyczkę tak, żeby dobrze brzmiała na Spectrum.

Jedyny problem w tym, że nie specjalnie potrafię sobie wyobrazić zrobienie automatu, który potrafiłby zrobić to wszystko sam ;)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #38 dnia: 2012.04.26, 15:34:41 »
No dobra. Kończę zabawę - ostatni efekt w załączniku. Nie jestem pewien jak grało w oryginale, ale gdzieś znalazłem wzory na częstotliwości wyjściowe AYgreka w zależności od częstotliwości taktowania i na tej podstawie zrobiłem sobie przybliżoną tabelę transpozycji. Nie dotykam obwiedni, szumu itp. więc efekt na pewno będzie inny, ale powinno być trochę niżej niż dotychczas.

Osobna kwestia to to, że plik się zwiększył o 8 kilo tablicy ;)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #39 dnia: 2012.04.27, 01:02:36 »
W pierwszej wersji utwór idealnie gra, tak jak w AYEmul, czyli tak jak na CPC :)
Czyli najlepiej zostać przy tym algorytmie, bez tworzenia nowych tablic.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #40 dnia: 2012.04.27, 01:41:34 »
To, że gdzieś ci gra "idealnie" to nie znaczy, że jak na CPC. Tutaj jest filmik w którym słychać kawałek muzyczki przed grą : http://www.youtube.com/watch?v=fAGuOSpI_HQ

Nie brzmi ani tak jak w mojej pierwszej wersji ani tak jak w drugiej. Jest sporo niżej niż bezpośrednia konwersja i oczywiście moje tablice transpozycji są całkowicie spaprane.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #41 dnia: 2012.04.27, 03:46:33 »
Sprawdzałem grę na emu CPC, różnica jest naprawdę niewielka, zostań przy tej pierwszej versji (która zajmuje niecałe 3kB).
Utwór z nowymi tablicami zajmujący ponad 10kB nie zawsze da się upchnąć w intro lub cokolwiek, a i tak gra on dużo wyżej.
AY Music, ULA plus.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #42 dnia: 2012.08.03, 23:53:58 »
Z jakich portów (IN) Spectrum odczytuje wartości AY?
AY Music, ULA plus.

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #43 dnia: 2012.08.04, 00:03:02 »
FFFD - wybór rejestru, BFFD - zapis wartości do rejestru, FFFD - odczyt wybranego rejestru. Odczyt BFFD daje wartości nieustalone. O to chodziło?

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #44 dnia: 2012.08.04, 13:53:52 »
to jeszcze jedno - w jaki sposób wybiera się, z którego rejestru ma odczytywać, czy robi się to przez OUT 65533,n  ($FFFD,n) i następnie z niego się odczytuje?
AY Music, ULA plus.