Autor Wątek: Proof of a Concept - muzyka na 2 x ZX  (Przeczytany 7271 razy)

Abrimaal

  • *****
  • Wiadomości: 963
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Proof of a Concept - muzyka na 2 x ZX
« dnia: 2015.10.27, 00:38:17 »
Istnieje utwór napisany na 2x ZX Spectrum. Jeden komputer gra digi, drugi soundtracker. Próbuję to uruchomić na jednym w schemacie TurboSound (AY przełączany OUT 65533,254 i 255).
Player Soundtracker jest załadowany na ekran, od 16384. Po uruchomieniu widać, że chodzi na przerwaniach digi playera.
Digi tracker też używa przerwań, skok do STC znajduje się pod koniec obsługi przerwania. (załączniki -c.sna i -c.asm)

Po załadowaniu do emulatora oba grają, ale bardzo nieciekawie. Sprawdzałem na pojedynczym AY. Nie znam emulatora który obsługuje turbo i byłbym pewien, że w tym samym schemacie.
Dołączam 2 snapshoty - z oryginalną muzyką i z podmienionym na inny utworem dla STC. Ten drugi tylko dlatego, że jest krótszy i nie ładuje się na zmienne systemowe ani na Basic, ale to całkiem inny utwór.

Teraz próba zrobienia pliku .ay z tego kodu i gra okropnie (sprawdzałem w Modo, ktory obsługuje turbo)
Gdzie tkwi problem? Nie wyrabia z przerwaniem?
Stos jest ustawiony na 65500. Może tutaj coś jest nie tak?
Jeśli autor nie zrobił tego na jednym komputerze, choć mógł, wygląda że miał pomysł, ale ZX odmówił współpracy.
Zamiana chipów (pierwszy AY dla stc, drugi dla digi) nie dała nic.

W załączniku .zip pliki dla AY Maker. Różnica pomiędzy plikiem -c i -d to zamiana chipów.
Plik .ay dla każdego z utworów osobno nie ma najmniejszych problemów z zagraniem.




« Ostatnia zmiana: 2015.10.27, 00:52:04 wysłana przez Abrimaal »
AY Music, ULA plus.

Abrimaal

  • *****
  • Wiadomości: 963
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Proof of a Concept - muzyka na 2 x ZX
« Odpowiedź #1 dnia: 2015.10.27, 00:58:32 »
Próba przeniesienia stosu w inne miejsce (np. 15000 nie zmienia nic).
Z tego, co słyszę na emulatorze, to Soundtracker w slow RAM jest problemem, ale w pliku .ay nie ma różnicy, muzyka może być nawet poniżej 16384.
« Ostatnia zmiana: 2015.10.27, 01:06:11 wysłana przez Abrimaal »
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 1858
  • Miejsce pobytu:
    Toruń/Poland
Odp: Proof of a Concept - muzyka na 2 x ZX
« Odpowiedź #2 dnia: 2015.10.27, 08:43:43 »
Ja tam sobie głowy nie dam uciąć, ale jeśli digi jest porządnie zrobione a nie jakieś pierdzące, to znaczy, że wymaga pełnej synchronizacji i całego procesora. Jak będziesz mu próbował wepchnąć drugi kawał playera, który zjada jakieś 20% ramki to moim zdaniem nie ma szans, żeby to mogło działać.

ZX Freeq

  • *****
  • Wiadomości: 1731
  • Miejsce pobytu:
    Warszawa
Odp: Proof of a Concept - muzyka na 2 x ZX
« Odpowiedź #3 dnia: 2015.10.27, 10:21:24 »
Nie znam emulatora który obsługuje turbo i byłbym pewien, że w tym samym schemacie.



Nie jestem pewien, ale chyba Unreal Speccy obsługuje. Teraz nie mogę sprawdzić.
link np tu: http://sourceforge.net/projects/unrealspeccyp/
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega/Next|QL+QIDE|JS128|Timex 2048+2040|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

Abrimaal

  • *****
  • Wiadomości: 963
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Proof of a Concept - muzyka na 2 x ZX
« Odpowiedź #4 dnia: 2015.10.27, 17:50:39 »
Digi jest najwyższej jakości zrobiony w Sample Tracker. Możesz go posłuchać w pliku .ay, piątym od góry w pierwszym poscie. W nim każdy z utworów jest osobno. Jeśli jednak sam soundtracker umieszczony w pamięci ekranu "tnie się", to spróbuję jeszcze jednej możliwości - przenieść dane sampli w dół, a soundtracker dać gdzieś pomiędzy sample a digi player.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 1858
  • Miejsce pobytu:
    Toruń/Poland
Odp: Proof of a Concept - muzyka na 2 x ZX
« Odpowiedź #5 dnia: 2015.10.28, 09:25:47 »
Powtórzę - jeśli emulacja w playerze jest zgodna z oryginalnym sprzętem (wliczając w to czasy wykonania i możliwe do osiągnięcia częstotliwości) na tyle, żeby poprawnie odtworzyć dobrej jakości samplowany dźwięk to ja nie widzę możliwości, żeby z tej emulacji wyrwać jakieś 15-20% ramki (a do tego bardzo nierówno - player Sound Trackera wykonuje się w różnym czasie zależnie od tego co dokładnie gra) żeby to się wszystko nie wywaliło. Żeby ci dobrze grało musiałbyś nie tylko emulować dwa chipy ale też dwa procesory inaczej po prostu nie da się tego zrobić i żadne przekładanie w różne miejsca w pamięci tego nie zmieni.

Abrimaal

  • *****
  • Wiadomości: 963
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Proof of a Concept - muzyka na 2 x ZX
« Odpowiedź #6 dnia: 2015.11.18, 09:18:43 »
Jak do tej pory nie chodzi mimo przestawiania bloków. Przyznaję się do karygodnego błędu użycia LD E,254 po nim CALL a następnie INC E. Miało to przełączać chipy  ;D ??? Po poprawce niewiele zmienia. Poprawkę załączam dla formalności.

Nie walczę z tym dłużej na pojedynczym komputerze. Mam inną wiadomość, prawdopodobnie dobrą.

Będzie to emulowane w formacie .ay, PlayerVersion=16, czyli DualCore.
Dlaczego akurat 16, gdy używane są tylko playery 0-3? Chodzi o ustawienie bitu. Taka wartość, aby można było łączyć go z istniejącymi playerami np. 16+3.
Zostawiając wolne numery 4-15 dla bardziej przyziemnych rozwiązań, a wyższe dla rzeczy niewynalezionych jeszcze, wybór padł na bit 5, który będzie nazywał się "merge" i będzie informował emulator, że w tym pliku utwory mają być grane po dwa jednocześnie.
Taki plik musi zawierać parzystą ilość utworów, a czas grania par utworów musi być jednakowy.

AY Music, ULA plus.