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

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #15 dnia: 2012.03.17, 11:57:11 »
.stc (o czym już było pisane) to sam "tekst" utworu, bez playera go odtwarzającego. Skompiluj dowolną muzyczkę ST Compilerem (pod wybrany przez siebie adres) i nagraj jako osobne pliki player i skompilowany kawałek. W zasadzie potrzebny będzie Ci tylko player. Tam gdzie się kończy kod playera, dograj sobie swojego .stc (opcją binary w emulatorze).
Adres pod który skompilowałeś utwór wywołuje inicjację (np RANDOMIZE USR 40000), odgrywanie muzyki ma wtedy RANDOMIZE USR 40006 i należy ją wywoływać co ramkę. Powinno to zadziałać.

To nie musi być .stc, może być inny format, np. ay czy .ym bo z tego niewiele rozumiem. Czy miałbym sam najpierw napisać muzykę i skompilować? A jeśli mogę wgrać z pliku .stc to dokąd? Tak jak poprosiłem, przydałby mi się gotowy utwór z playerem, żeby go zdeassemblować i mniej więcej wiedzieć na przyszłość czego szukać w grach/demach. Co ramkę, to ja wiem, bo kiedyś przy wyciąganiu z gier zawsze sprawdzałem z Basic używając PAUSE 1.

Nie wiem czy to dobrze zrozumiałem - miałbym napisać cokolwiek (choćby 1 dźwięk) za pomocą SoundTracker'a,
a później "podmienić" muzykę z pliku .stc, tylko skąd wezmę adres z którego ona chodzi? Jakieś niejasne to wszystko, albo napisałeś w dużym skrócie myślowym. W każym razie spróbuję.
« Ostatnia zmiana: 2012.03.17, 12:15:42 wysłana przez Abrimaal »
AY Music, ULA plus.

Pyza^Illusion

  • *****
  • Wiadomości: 586
  • Miejsce pobytu:
    Lubań, dolnośląskie
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #16 dnia: 2012.03.17, 14:19:44 »
Napisałem jasno, tylko niekoniecznie to zrozumiałeś poprawnie, co też rozumiem, bo nie orientujesz się w tych mechanizmach. No i ja też nieco zaplątałem temat, bo pomyliłem z kompilerem SQTrackera :)

Napisz dowolny utwór (możesz nawet skorzystać z tego co jest wbudowany w ST). Nagrywasz, wgrywasz do Compilera. Kompilujesz (wyświetli Ci się długość skompilowanego utworu), dasz Merge Play Routine, wpisujesz adres pod jakim ma być player. Następnie nagrywasz całość.
W otrzymanym pliku dostajesz player razem z utworem. Sam player zajmuje 1084 bajty:
40000 - player
41084 - skompilowany utwór

Wystarczy, że nagrasz sobie teraz sam player SAVE "STPlay4e4" CODE 40000,1084 i masz sam player. Od adresu 41084 możesz sobie wgrywać dowolną muzykę (z ST!) i nim odgrywać. Oczywiście jak potrzebujesz pod innym adresem playerka, to dowolny utwór należy skompilować pod swój adres i w ten sam sposób zripować.

Można także jednym playerem odgrywać kilka utworów w pamięci. Np.
Player kompilujemy pod 64000.
Utworki wrzucamy od 25000, 30000, 35000, 40000 itd. (zależy ile tam mają).

Pod "adres skompilowanego utworu" + 187 (w naszym przypadku 64187) wpisujemy początek dowolnego utworu (dwa bajty!) i odgrywamy. Za każdą zmianą utworu konieczne jest wpisanie adresu jego początku i inicjacja!
ZX Spectrum+ (128kB by STAVI), FDD3000, TI-OF-TTL/ZXVGS, Masterface2b, MacFace II, DivIDE plus, Just Speccy 128...

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #17 dnia: 2012.03.18, 04:55:50 »
Teraz wszystko jasne. Udało się skompilować i zapisać utwór z galerii ST Compiler.
Udało się podmienić inny utwór i gra prawidłowo (tylko trzeba pamiętać jego długość przy zapisywaniu kodu).
Dzięki Ci ogromne. Teraz ja mogę służyć pomocą.

Wrzucam kilka załączników, które być może innym się przydadzą.

-ST Compiler z galerią muzyki (chodzi na Sinclair Joystick, lub klawisze 8,9,0)
  przez LOAD z menu można ładować i kompilować kolejne utwory.
-Skompilowany i zapisany utwór z playerem w BASIC (startuje od adresu 33536, tak mi pasowało)
-Plik z podmienioną muzyką przez LOAD BINARY
-Sam player 1084B do "doklejania" plików stc

Wreszcie ulga, masz u mnie duuuże pivo. :D
« Ostatnia zmiana: 2012.04.02, 03:32:10 wysłana przez Abrimaal »
AY Music, ULA plus.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #18 dnia: 2012.04.02, 03:40:34 »
Czy ktoś potrafi "rozgryźć" SpecAY (program na DOS)
http://www.worldofspectrum.org/utilities.html
Konkretnie, to jak on to robi, że potrafi odegrać prawie każdy utwór zapisany w formacie AY?
Jak z niego wyciągnąć adresy, żeby można było dodać muzykę do własnego programu?
Przykładowa muzyka w załączniku - z loaderem SpecAY gra prawidłowo,
jednak już po znalezieniu głównej pętli i umieszczeniu pliku pod (zdaje mi się) właściwym adresem,
muzyka nie startuje.

Załączam plik wygenerowany przez SpecAY i snapshot, z którego próbowałem uruchomić utwór
Może ktoś będzie wiedział, co jest źle?
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #19 dnia: 2012.04.02, 08:24:09 »
Nie rozumiem w czym masz problem... Czytałeś specyfikację formatu AY?

Opis zasady postępowania z plikami AY jest tu: http://www.worldofspectrum.org/projectay/tech.htm

Tam masz też link do AYMakeRa w archiwum którego w readme jest pełna specyfikacja formatu AY.

Jest też AYSplieR, który bierze plik AY i wyjmuje z niego binarne kawałki tworząc przy tym plik INI zgodny z AYMakeRem. Te dane binarne i informacja z pliku INI wystarczają w zupełności do tego, żeby dowolną dającą się odtworzyć na Spectrum muzyczkę wyjąć z pliku i uruchomić w emulatorze bądź na fizycznym sprzęcie.

W wypadku twojego przykładu - jak rozumiem w pliku SNA jest ta sama muzyczka co w TAP (czyli Fuxoftowy Indiana Jones) - to zupełnie nie wiem skąd wziąłeś te adresy.

Wyjąłem z TAPa plik AY (zaczyna się stringiem ZXAYEMUL) po czym potraktowałem ten plik AYSpliteRem, który wypluł mi takie ini:
Author=Frantisek Fuka
Misc=(C) 1990
FirstSong=0
FileVersion=0
PlayerVersion=0
NewSong
Name=Indiana Jones 3
Stack=0
INIT=33050
INTERRUPT=33056
HiReg=0
LoReg=0
SongLength=5900
FadeLength=50
CodeName=ind_0_1.BIN
CodeAddress=33050

Zgodnie ze specyfikacją to, co jest istotne to dane z CodeAddress, INIT i INTERRUPT. To pierwsze to adres pod który ładujesz binarny kawałek kodu wycięty przez splitera. Drugie i trzecie to adresy inicjalizacji i wywołania na przerwaniach samego playera. Dla twojego przykładu kod odpalający (zakładając, że binarny plik masz nagrany na taśmie za loaderem) byłby mniej więcej taki:

10 CLEAR 33049
20 LOAD "" CODE 33050
30 RANDOMIZE USR 33050
40 PAUSE 1 : RANDOMIZE USR 33056
50 GOTO 40

Biorąc pod uwagę to, że wychodzisz z pliku, w formacie którego wszystkie potrzebne informacje masz podane na tacy, do którego wszystkie potrzebne narzędzia są dostępne nawet ze źródłami nie rozumiem co masz na myśli pisząc o znajdowaniu głównej pętli itp. i skąd wzięły ci się te adresy, które poustawiałeś w swoim przykładzie.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #20 dnia: 2012.04.02, 16:33:09 »
To niewiele się pomyliłem analizując kod i umieszczając CodeAddress pod 33045.
Dzięki za namiary na apilkacje.
AY Music, ULA plus.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #21 dnia: 2012.04.04, 03:23:42 »
Może to raczej temat do działu Emulatory, jednak tutaj chyba szybciej dostanę odpowiedź.
Zrobiłem muzykę na beeper, która powinna włączać się po wyświetleniu screenu.
Działa to we wszystkich emulatorach z wyjątkiem Spin, niezależnie od konfiguracji
48k, 128k, v0.666, v0.7 - wszystkie milczą, czekają tylko na klawisz,
a wystarczy wpisać RANDOMIZE USR 50350 i muzyka gra.

Czy coś jest nie tak w loaderze, czy w konfiguracji emulatora?
Sprawdzałem w Fuse, Unreal i Real Spectrum i też gra, tylko w Spin nie gra.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #22 dnia: 2012.04.04, 07:08:42 »
W tej sprawie musi ci odpowiedzieć kto inny - nie używam Windowsów a pod Wine Spin się wywala.

YERZMYEY/HOOY-PROGRAM

  • *****
  • Wiadomości: 1187
  • Miejsce pobytu:
    Rubber Planet
  • AY RIDERS
    • ZX Spectrum demos/games
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #23 dnia: 2012.04.04, 16:23:21 »
Może to raczej temat do działu Emulatory, jednak tutaj chyba szybciej dostanę odpowiedź.
Zrobiłem muzykę na beeper, która powinna włączać się po wyświetleniu screenu.
Działa to we wszystkich emulatorach z wyjątkiem Spin, niezależnie od konfiguracji
48k, 128k, v0.666, v0.7 - wszystkie milczą, czekają tylko na klawisz,
a wystarczy wpisać RANDOMIZE USR 50350 i muzyka gra.
Czy coś jest nie tak w loaderze, czy w konfiguracji emulatora?
Sprawdzałem w Fuse, Unreal i Real Spectrum i też gra, tylko w Spin nie gra.

To znaczy, że spin jest zje.bany i tyle. Nasza gra "ByteMe" też na tym szmelcu nie chodziła.
Jak chodzi w Spectaculatorze, to powinno iść wszędzie.
Nieee wiem, nie mam tu dźwięku w pracy. Kolejność wgrywania czsami daje rezultat. CLEAR odpowiedni.
Ale mówię Ci, że nie testuj na Spin, tylko wykasuj go.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #24 dnia: 2012.04.04, 17:57:46 »
To znaczy, że spin jest zje.bany i tyle. Nasza gra "ByteMe" też na tym szmelcu nie chodziła.
Jak chodzi w Spectaculatorze, to powinno iść wszędzie.
Nieee wiem, nie mam tu dźwięku w pracy. Kolejność wgrywania czsami daje rezultat. CLEAR odpowiedni.
Ale mówię Ci, że nie testuj na Spin, tylko wykasuj go.
U mnie Byte Me dobrze chodzi na Spin z wyjątkiem jednej rzeczy, gdy podczas grania muzyki digi wciśnie się spację,
to wraca do systemu, ale już się przyzwyczaiłem żeby wciskać inny klawisz, wtedy startuje OK.
AY Music, ULA plus.

YERZMYEY/HOOY-PROGRAM

  • *****
  • Wiadomości: 1187
  • Miejsce pobytu:
    Rubber Planet
  • AY RIDERS
    • ZX Spectrum demos/games
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #25 dnia: 2012.04.04, 20:07:16 »
Sprawdziłem na Spectaculatorze. Muzyka startuje sama.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #26 dnia: 2012.04.25, 07:50:08 »
Czy AY SplittR może się mylić?
Chciałbym wykorzystać muzykę na AY z Dark Fusion,
Gra ona prawidłowo w AY Emul
AY SplittR podaje wiarygodne wartości,  muzyka jest wgrana pod adres 27392,
startująca z INIT 27394, INTERRUPT 27397
i nie wydaje żadnego dźwięku.
Czy możliwe, że ten plik jest uszkodzony lub AY Splitter go źle rozszyfrowuje?
To jest teoretycznie możliwe, bo dla Dark Fusion zrobiono 2 utwory, na beeper i na AY,
i ten na AY nie pojawił się w grze. Ben Daglish mówił, że zrobił 2, ale już nie pamięta dlaczego nie użyto drugiego.
...ale wtedy nie chodziłby na AY Emul
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #27 dnia: 2012.04.25, 08:27:39 »
Ta... A popatrzyłeś, że to, czego usiłujesz użyć to muzyczka na AYgreka ale z Amstrada CPC? ;) Stąd takie głupie adresy poniżej 32768 (w wolnej pamięci) i dlatego też muzyka nie gra, bo odwołania do AYgreka są Amstradowe.

Rozkompilowałem sobie ten kod i tam w środku OUTy są jakoś dziwnie zrobione - muszę poszukać jakiegoś doca jak AYgrek był podłączany do Amstradów i zobaczyć czy da się z tym coś zrobić. Ciekawa rozrywka intelektualna na początek dnia ;)


Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #28 dnia: 2012.04.25, 08:42:30 »
A to ciekawe, pliki która mam dla Amstrada mają wszystkie rozszerzenie .ym
Ten był w folderze Spectrum i miał rozszerzenie .ay
Swoją drogą ktoś w dawnych czasach wyciągał muzę z CPC,
pamiętam w jakimś polskim demo na Spectrum jest utwór Great Gurianos.
Może coś Ci się uda z tym Dark Fusion, właśnie robię do niej trainer
i pasowałaby w intro.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Muzyka w grach i pliki muzyczne
« Odpowiedź #29 dnia: 2012.04.25, 12:49:57 »
Ok. Powalczyłem chwilę... Muzyczka ma tonę tablic w których są adresy do jakichś wewnętrznych struktur. Przy próbie przekompilowania pod inny adres tablice oczywiście przestają trafiać w cokolwiek sensownego.

Wrzuciłem ją więc pod oryginalny adres (27392) modyfikując samą procedurę zapisującą do AYgreka... Nie wiem jak to grało w oryginale, ale coś gra... Mam obawę, że wysokości dźwięków mogą się nie zgadzać bo z tego co przeczytałem AYgrek w CPC był taktowany 1 MHz a nie 1.5 jak w Spectrumach.

W załączniku masz snapshota z BASICowym playerem grającego muzyczkę i plik bin, który musisz sobie wrzucić do pamięci pod adres 27392 a potem zapisać w formacie, który ci jest potrzebny. Inicjalizacja muzyki to adres 27392 (a nie 27394 jak w pliku .ay bo tam brakuje LD A,0 na początku), odtworzenie kolejnej ramki to 27397.