forum speccy.pl
ZX Spectrum => MUZYKA => Wątek zaczęty przez: Abrimaal w 2012.02.27, 00:39:16
-
1. Kiedyś to robiłem z łatwością, teraz wszystko wypłynęło. Jak znaleźć muzykę na AY w kodzie gry? Wiem, że zaczynało się to od jakiś dwóch OUT, przypomnijcie proszę.
2. Czy istnieje możliwość skonvertowania muzyki z pliku .ay z powrotem do kodu maszynowego? Jeśli tak, to za pomocą jakiego programu?
-
1. Kiedyś to robiłem z łatwością, teraz wszystko wypłynęło. Jak znaleźć muzykę na AY w kodzie gry? Wiem, że zaczynało się to od jakiś dwóch OUT, przypomnijcie proszę.
2. Czy istnieje możliwość skonvertowania muzyki z pliku .ay z powrotem do kodu maszynowego? Jeśli tak, to za pomocą jakiego programu?
1. to co musisz znaleźć to:
LD BC,65533 ; hex: 1,$fd,$ff
OUT (C),A; hex: $ED $79
albo
LD BC,49149 ; hex; 1,$fd,$bf
OUT (C),A ; hex: $ED $79
albo wariacje tych powyższych ;) Zazwyczaj player jest usytuowany na początku banku pamięci, czyli od 49152.
Długość bloku z muzyką zawsze była dla mnie tajemnicą ;) i kopiowałem blok pamięci 'na wyczucie'.
2. Na pewno się da. Trzeba poczytać o formacie AY i wyodrębnić blok binarny z playerem i danymi.
W sumie to ciekawy temat na artykuł. Ktoś chętny do napisania ? (tak, pytanie retoryczne).
-
Widziałem na youtube, jak Yerzmyey ładował pliki .stc do ZX 81,
spytałem go o nie: tu odpowiedź.
Pliki STC są właściwie natywnymi plikami Spectrum.
Są to skompilowane songi SoundTrackera 1.1 (bez ustawionego Randomize).
Co innego puszczenie ich w przerwaniach - do tego trzeba się znać na kodowaniu. Umie to uczynić MAT.
Btw, do użycia we własnym programie trzeba im nadać już jakiś adres.
Ja natomiast mam pytanie - jak załadować .stc do emu ZX Spectrum,
czy wystarczy zmienić rozszerzenie np. na tap lub sna? Czy wymaga to bardziej skomplikowanej metody?
-
Plik trzeba załadować jako binarny pod konkretny adres. Wiele emulatorów ma taką możliwość.
-
Widziałem na youtube, jak Yerzmyey ładował pliki .stc do ZX 81,
Nooo, tu jest trochę różnica, bo ZX81 ma player przystosowany bezpośrednio do ładowania tych plików (i zczytywania ich z FAT).
Na Spectrum robią to też playery, ale wciąż nie widze chętnego, by przerobić WildPlayer na 128K. ;)
-
Plik trzeba załadować jako binarny pod konkretny adres. Wiele emulatorów ma taką możliwość.
... a czy istnieje możliwość wyczytania skądś tego adresu, czy metodą prób i błędów ładować po kolei?
-
... a czy istnieje możliwość wyczytania skądś tego adresu, czy metodą prób i błędów ładować po kolei?
W zależności od potrzeb, adres może być różny, a do tego zależny od innych programów/danych.
Napisz konkretnie co chciałbyś zrobić, a ja postaram się pomóc.
-
Chciałbym w przerabianych loaderach, kiedy wyświetla się screen
aby grała muzyka (z tej gry lub inna).
Mogę to zrobić w Basic (PAUSE 1 i oczekiwanie na klawisz) lub w asm.
Do tej pory szukałem w jednym nieskompresowanym demo.
Znalazłem taki fragment kodu, jednak puszczając go w pętli cały czas gra tylko pierwszy dźwięk:
ORG 50221
LD C, 253
LD B, 255 (tutaj wykonuje LOOP przy JP P)
OUT (C),A
LD B,191
OUT (C),A
DEC A
JP P, 50223
RET
Może trzeba załadować inicjalne wartości do rejestrów?
-
Może trzeba załadować inicjalne wartości do rejestrów?
Nawet trzeba. Kod który pokazałeś programuje AY w sposób chaotyczny, i z tego dźwięku (sensownego) nie będzie.
Troche na temat AY i jego rejestrów można poczytać tu: http://www.spectrum.8bit.pl/ay38910/aygrek.htm
Spróbuj najpierw poćwiczyć pisząc program w BASICu.
-
O graniu muzyki przez AY można też poczytać np. w podręczniku do Timexa.
-
Może trzeba załadować inicjalne wartości do rejestrów?
Nawet trzeba. Kod który pokazałeś programuje AY w sposób chaotyczny, i z tego dźwięku (sensownego) nie będzie.
Troche na temat AY i jego rejestrów można poczytać tu: http://www.spectrum.8bit.pl/ay38910/aygrek.htm
Spróbuj najpierw poćwiczyć pisząc program w BASICu.
Mój "AY Controller" najprostszy w BASIC, był jednym z pierwszych załączników na tym forum:
http://www.speccy.pl/forum/index.php/topic,150.msg1705.html#msg1705 (http://www.speccy.pl/forum/index.php/topic,150.msg1705.html#msg1705)
Poszukam jeszcze w demach i grach innego playera, który ruszy.
-
Czy jest jakaś reguła, w którym banku najczęściej umieszczona jest muzyka w ZX 128?
Dotyczy to gier, które na 48 nie mają muzyki, bo jeśli AY gra na 48 to musi być w MAIN RAM
-
Nie ma. Zwykle raczej w banku, który nie jest contended (czyli 0, 2, 4 lub 6) choć w wypadku gier nie ma to aż takiego strategicznego znaczenia więc zasadniczo może być w dowolnym poza 5 i 2 (podstawowy screen i pamięć $8000-$BFFF).
-
Próbuję już wszystkiego, męczę się ponad tydzień aby znaleźć adres uruchamiający muzę w demach.
Na początek wziąłem jedno proste na ZX48, Znalazłem pętlę, w której jest scroll i analyzer,
chodzi ona w kółko, zaraz po wywołaniu obrazka. Po obrazku jest jeden CALL ale on nie gra muzyki (nie wiem co robi).
Wgranie pliku .stc jako binary też nic nie daje, debugger nie znajduje tam żadnych OUT, które z łatwością znajduje w demo.
Czy mógłby ktoś podrzucić jakiś utwór na AY (jako binary, tap/tzx czy snapshot) wraz z adresem startowym?
Zrobiłem trainer do Action Force 2 i bardzo chciałbym w intro wrzucić jakąś muzę. Ratujcie, bo sobie strzelę w łeb :-[
-
.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ć.
-
.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ę.
-
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!
-
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
-
Czy ktoś potrafi "rozgryźć" SpecAY (program na DOS)
http://www.worldofspectrum.org/utilities.html (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?
-
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.
-
To niewiele się pomyliłem analizując kod i umieszczając CodeAddress pod 33045.
Dzięki za namiary na apilkacje.
-
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.
-
W tej sprawie musi ci odpowiedzieć kto inny - nie używam Windowsów a pod Wine Spin się wywala.
-
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.
-
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.
-
Sprawdziłem na Spectaculatorze. Muzyka startuje sama.
-
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
-
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 ;)
-
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.
-
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.
-
nie ma załącznika :(
-
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 ;)
-
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ę.
-
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 ;)
-
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.
-
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.
-
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ć :)
-
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 ;)
-
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 ;)
-
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.
-
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.
-
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.
-
Z jakich portów (IN) Spectrum odczytuje wartości AY?
-
FFFD - wybór rejestru, BFFD - zapis wartości do rejestru, FFFD - odczyt wybranego rejestru. Odczyt BFFD daje wartości nieustalone. O to chodziło?
-
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?
-
No wydawało mi się, że to, co trojacek napisał jest wystarczająco jasne... Wybór rejesstru to FFFD - jeśli po tym nastąpi odczyt z FFFD to będzie to własnie wartość wybranego rejestru.