Blok danych SID

Forum, na którym możemy pogadać o wszelakim oprogramowaniu na C64, grach, programach.
Wiadomość
Autor
Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Blok danych SID

#1 Post autor: yovish »

Co dokładnie zawiera blok danych w pliku SID? Nie mogę tego nigdzie znaleźć...

Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

Re: Blok danych SID

#2 Post autor: wegi »

2021.06.16 "U mnie w okolicy też nikt nie umarł - ale nie będę na tej podstawie twierdził, że Covid nie istnieje ani że nie jest żadnym zagrożeniem"

2023.09.09 U mnie też nikt nie umarł włącznie z ciotką chorą na białaczkę. Dwukrotnie zaszczepiona dostała covida w szpitalu - żyje. Ta plandemia to już jak Bóg - wszędzie jest i nikt go nie widział.

Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Re: Blok danych SID

#3 Post autor: yovish »

Tyle się domyśliłem, ale dokładnie to co: kod maszynowy?
Przymierzam się do podłączenia SID do arduino i chciałbym napisać jakiś player do tego, więc muszę się do tego jakoś dobrać.

Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

Re: Blok danych SID

#4 Post autor: wegi »

A czego się spodziewasz? Kodu źródłowego? Pythona? Jakiegos przesłania "Graj żeby było fajnie"?

W załączeniu song Trackera w Voicetrackerze

Plik SID i plik DAT, który został wyekstrachowany z SIDa za pomocą sidplay2w.
Plik DAT jest dokładnie plikiem PRG, który można zmienić rozszerzenie i wgrać do VICe.
Załączniki
Song_4.zip
(4.07 KiB) Pobrany 83 razy
2021.06.16 "U mnie w okolicy też nikt nie umarł - ale nie będę na tej podstawie twierdził, że Covid nie istnieje ani że nie jest żadnym zagrożeniem"

2023.09.09 U mnie też nikt nie umarł włącznie z ciotką chorą na białaczkę. Dwukrotnie zaszczepiona dostała covida w szpitalu - żyje. Ta plandemia to już jak Bóg - wszędzie jest i nikt go nie widział.

Awatar użytkownika
Steffan
Posty: 854
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: Blok danych SID

#5 Post autor: Steffan »

Pewnie Wegi Cie trochę wystraszył. Zaręczam, że po bliższym poznaniu spoko z niego ziom! Ale do rzeczy. Nie wiem na ile Ci pomogę (na pewno koledzy koderzy powiedzieliby więcej na ten temat). Ja napisze z perspektywy zapalonego użytkownika komody.
Więc plik sid to nic innego jak plik prg (kodo maszynowy zaka) + nagłowek (dla programów odtwarzających muzyczki np. na łindołsie). Jeśli wywalisz ten nagłówek otrzymasz kod ("plajera"). Zawiera się w nim procedura inicjująca oraz główny "plajer" - kod maszynowy muzyczki. Co ten kod zawiera? Ano instrukcje zapisujące dane z tego pliku do rejestrów, które widzi układ SID. :lol:
On to widzi i żre, czyli konfiguruje swoje parametry zgodnie z zapisem tych rejestrów (parametry), mówiąc proście "gra". Oczywiście musisz wracać / (odpalać) kod cyklicznie np. PAL 50x/s lub NTSC 60x/s (lub częściej / rzadziej tak jak autor sobie życzy). Z pomocą idą np. przerwania rastra.

Podsumowując:
-odpalasz init (większość zaków ładuje się pod adres $1000 i init ma ten sam adres (tam jest jmp do procedury inita) a potem cyklicznie wywołujesz dane "plajera" (pisze w cudzysłowie bo tak naprawde to nie plajer (np. tak jak to było na Amidze z modułkami) adres np. $1003
Możesz sobie nawet takiego sida (oczywiście bez nagłówka załadować do pamięci i potem odtwarzać przez bajzika. Będzie grało ch...owo i nie w czas (ale do obczajenia wystarczająco) :lol: :lol: :lol: :lol:

Kod: Zaznacz cały

	'zaladuj do komorki 780, numer sub-sida, np. dla pierwszej muzyczki =0
	'wywolanie sys najpierw zaladuje akumulator wartoscia z komorki 780
	'i wykona skok do programu inicjujacego player w ML pod adresem $1000 -> 4096 dziesietnie
	
	0 poke 780,0:sys 4096

	'odswiezaj playera w ML adres: $1003
	
	1 sys 4096+3
	
	'petla opozniajaca, co by nie zap.. grało za szybko
	2 forx=1to9 :next
	
	'i powtorka
	3 goto 1
	
Najpierw napisz kod bejzika, a potem dograj zaka pod $1000. Jak zrobisz odwrotnie, gwarantuje że interpreter bejzika popiepszy pamięć w $1000+ i dupa z grania. Najlepiej zobacz monitorem czy zak tam się załadował po napisaniu kodu.

UWAGA! zak do $1000 bez naglowka oraz dwóch bajtow (adresowych pliku) - czysty kod!

np. Vice monitor pozwala załadować komendą "l" jak dobrze pamiętam (sprawdź w helpie)

Nie jestę koderę! :lol: :lol: To nie była porada koderska. Przed użyciem skonsultuj się z koderem lub farmaceutą!

Wiec u Ciebie będziesz musiał zemulować robotę procka 6510/6502 (wywoływać kod procedur cyklicznie).

ZAZNACZAM: Mocno to uprościłem!

Ale się tu rozpisałem. Przepraszam za zdania wielokrotnie złożone, ale nie chce mi się tego edytować.

powodzenia w boju
Steffan
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Re: Blok danych SID

#6 Post autor: yovish »

Rzeczywiście Wegi nie zrobił dobrego 1 i 2 wrażenia, ale spoko.

Dzięki za ten opis, wiele rozjaśnia. Ale pojawiają się pytania dodatkowe. Skoro sam będę musiał dekodować kod maszynowy (właściwie będzie to robiło Arduino), to na ile pliki SID są podobnie zbudowane, albo na ile nie są podobne?

Wiem, że różni koderzy/muzycy piszą czasem swoje playery, ale czy one są "schematyczne"?
Zostaje jeszcze sposób upchania kilku muzyczek w 1 pliku...

Awatar użytkownika
Steffan
Posty: 854
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: Blok danych SID

#7 Post autor: Steffan »

yovish pisze:
04 gru 2020, 15:44
Wiem, że różni koderzy/muzycy piszą czasem swoje playery, ale czy one są "schematyczne"?
Zostaje jeszcze sposób upchania kilku muzyczek w 1 pliku...
Źle do tego podchodzisz. To nie są plajery. Jeśli nawet ludzie używają swoich edytorów muzycznych, bo tak trzeba do tego podejść. To te i inne globalnie dostępne edytory wypluwają kod maszynowy dla procesora 6510/6520, który ustawia potem te rejestry o których pisałem wyżej. Nie wyobrażam sobie, że siedzi sobie muzyk i pisze w dzisiejszych czasach muzykę w asm i kompiluje za każdym razem żeby sobie posłuchać co zrobił. Panie, toż to byłby kosmos. Ale ręki nie dam sobie uciąć, że nie ma / nie było takich artystów - himalaistów. :lol: :lol: :lol: Więc każdy edytor może robić to po swojemu. Na końcu i tak trzeba to (kod) odpalać cyklicznie, a ten kod musi sterować sidem (przez jego rejestry). Zresztą cała komoda tak działa. Proc rzeźbi po ramie, a układy sobie ten ram "podglądają" w większym lub mniejszym stopniu i "wykonują / ustawiają" się zgodnie z zawartością ram / romu (carty). Np.VIC=II, CIA itd.

Z tego co widzę to długa droga przed Tobą. Nie da się na skróty. Musisz zrozumieć maszynę. Na pocieszenie dodam, że jeszcze 1,5 roku temu nie wiedziałem jak podłączyć stacje do komody, o ładowaniu plików nie wspomnę. Dzisiaj jestem trochę dalej, ale dużo przede mną. Mnie strasznie to kręci, odkrywanie nowego (starego :D ). Oby starczyło Ci zapału. Czego oczywiście Tobie życzę.

Aha jeszcze jedno, tak na dobicie leżącego. :mrgreen: Ten kod maszynowy który wykonuje się cyklicznie korzysta dodatkowo z wybranych przez kodera (edytora) części pamięci. W celu przechowywania np. liczników i innych zmiennych. Najczęściej są to komórki ze strony zerowej, ale to nie jest regułą.

Więc to nie jest tak jak z plikami samplowanymi (bo mam wrażenie że tak to sobie wyobrażasz). Tam przesuwasz się w dowolne miejsce pliku i jazda już "gra". Tu się tak nie da, nie wiesz jak będzie "wyglądała" pamięć po odsłuchaniu np 30sek, jeśli cpu nie wykona kodu z tych 30sek. Kod na bieżąco ustawia liczniki, zmienne itd. Nie da się skoczyć do 30sek w pliku i jazda. Tak to przynajmniej ja rozumiem na mój chłopski rozum. Oczywiście da się za symulować, w krótkim czasie te 30 sek, a potem normalnie odtwarzać. Taki "cpu fast run", ale normalnie nie da się zacząć grać od środka pliku, bo zmienne "plajera" nie będą ustawione na ten moment. Wiem, motam i upraszczam. Jak się mocno mylę, to niech mnie koledzy koderzy poprawią.

Zdaje sobie sprawę, że zamiast pomóc jeszcze zagmatwałem. Ale tak to wygląda. Ucz się ucz a później sam powiesz jakie to było proste (i jak zmyślnie wykombinowane). Pomyśl o sidzie jak o odrębnym syntezatorze, którym sterujesz kodem, to nie jest sampling jak na Amidze. BTW. sampla też sid odtworzy, ale to inna para kaloszy.

Dużo zapału życzę!
Steffan
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Re: Blok danych SID

#8 Post autor: yovish »

To jest całkiem pomocne. Fakt, znam się bardzo dobrze na samplowaniu, ale znam też C64 i SIDa w szczególności. Już widzę, że to nie "kaszka z mleczkiem", bo wcześniej tylko słuchałem muzyki albo dłubałem sobie coś na edytorach. Popatrzę jak inni zaimplementowali odgrywanie SIDów na Arduino, bo są takie projekty, ale nie do końca to, o co mi chodziło.
Trzeba będzie poprzeglądać monitorem co siedzi w środku, i może coś się rozjaśni.

Mam też zamiar do Arduino dołączać inne soundchipy, takie jak AY 3-8910/2, SAA 1099 i POKEY (bo takie mam). Chociaż z tym ostatnim, to nie wiążę dużych planów... Po SIDzie, na 2 miejscu stoi u mnie AY.

Awatar użytkownika
carrion
Posty: 2329
Rejestracja: 27 lut 2009, 17:38
Kontakt:

Re: Blok danych SID

#9 Post autor: carrion »

Steffan sporo wyjaśnił, a ja dodam tylko chyba podsumowanie

Jeśli nie napiszesz emulatora co najmniej procesora 6502/6510 i emulatora SIDa (3 kanały, obwiednie ADSR, filtry itp) to to inaczej nie zadziała. Pliki .sid (format PSID) to tak jakby zrzuty z pamięci. ich odegranie np na pc to dokładnie to co napisałem wyżej. Czyli emulacja CPU pobieranie instrukcji po instrukcji i wykonywanie ich w emulowanym układzie SID. tylko tyle i aż tyle. O Arduino wiem tyle co nic, ale na RPI to pewnie dał byś radę odpalić jeden z emulatorów i jakoś go opakować w GUI czy inne interfejsy.
... ale dawaj znać z postępów i nie poddawaj się. fajny byłby z tego materiał do opowiedzenia.
c64portal.pl, retronavigator.com

Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Re: Blok danych SID

#10 Post autor: yovish »

To nie chodzi o emulację samego SIDa, jako scalaka, bo on będzie fizycznie podłączony do Arduino, tylko trzeba mu jakoś podać, co ma grać. Niektórzy preparują różnie dane dla SIDa, ale jest baza HVSC (pliki *.SID), tylko korzystać...

Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

Re: Blok danych SID

#11 Post autor: wegi »

To na 3cie wrażenie - to z czym się mierzysz to chcesz stworzyć emulację 6502 na atmedze.

Nie musi byś w tym wypadku cycle exact, ale ważne żeby dane do rejestrów SIDa wrzucało co 1/50 (PAL) lub 1/60 sekundy w przypadku NTSC.

Ważne jest też żeby tych danych nie wrzucać za szybko, bo SID będzie miauczau.

Nie ujmuję tobie, ale wydaje mi się że nie jesteś w stanie zrobić emulacji 6502 na atmedze, ani podchodząc do tematu nie zdawałeś sobie sprawy z czym się porywasz. Ot taki sobie pomysł "a machnę sobie na arduino bo fajne jest i proste i są biblioteki..."

Do takich celów polecam:

https://kamami.pl/stm32-discovery/56134 ... 407vg.html


Procesor o zupełnie innych możliwościach, prędkości, osiągach oraz ZASOBACH.
2021.06.16 "U mnie w okolicy też nikt nie umarł - ale nie będę na tej podstawie twierdził, że Covid nie istnieje ani że nie jest żadnym zagrożeniem"

2023.09.09 U mnie też nikt nie umarł włącznie z ciotką chorą na białaczkę. Dwukrotnie zaszczepiona dostała covida w szpitalu - żyje. Ta plandemia to już jak Bóg - wszędzie jest i nikt go nie widział.

Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Re: Blok danych SID

#12 Post autor: yovish »

To fakt, że nie zdawałem sobie sprawy z czym się mierzę, ale mam zestawy związane z AVR i przy nim pozostanę, bo to tylko dla zabawy.
Przyjdzie skorzystać z gotowców:
https://github.com/atbrask/RealSIDShield
https://www.flickr.com/photos/toonfox42/14154080304
http://www.afox-consulting.com/product/SID-Shield.html

Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

Re: Blok danych SID

#13 Post autor: wegi »

O ile dobrze rozumiem to do tego jest potrzebny komputer z windowsem, który emuluje 6502 i za pomocą serial portu wrzuca dane do arduino, który wbija to w SID'a ?

Jaki to ma sens?

To nie prościej wbić VICE czy jakiś sidplayer w raspberrypi i odtwarzać te SIDy na słuchawkach?
2021.06.16 "U mnie w okolicy też nikt nie umarł - ale nie będę na tej podstawie twierdził, że Covid nie istnieje ani że nie jest żadnym zagrożeniem"

2023.09.09 U mnie też nikt nie umarł włącznie z ciotką chorą na białaczkę. Dwukrotnie zaszczepiona dostała covida w szpitalu - żyje. Ta plandemia to już jak Bóg - wszędzie jest i nikt go nie widział.

Awatar użytkownika
Steffan
Posty: 854
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: Blok danych SID

#14 Post autor: Steffan »

Nieraz najlepiej przedstawić sytuacje na obrazku. Wtedy wszystko jest jasne. Więc zaczynamy.

@Yovish - Ciebie wcielam w role bad boya - kata na usługach Krzyżaków, pragnącego robić eksperymenty na biednym sidziku (Zbyszku)

@Wegi gra Danusie która chce uratować sidzika przed "odczłonkowaniem" od płyty matki.
To tyle w formie wprowadzenia. Obsada jest. Statyści są! Akcja!
moj ci jest!.png
moj ci jest!.png (465.84 KiB) Przejrzano 2491 razy
MÓJ CI JEST!

Podczas kręcenia nie ucierpiał żaden Sid! Zapraszam do kin!

Uprzedzam pytania. Nie! Nic nie paliłem.
pozdro
Steffan
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

Awatar użytkownika
yovish
Posty: 64
Rejestracja: 30 mar 2010, 00:23

Re: Blok danych SID

#15 Post autor: yovish »

Nie zamierzam być "katem", ja siebie widzę (może chciałbym widzieć) jako "Danuśkę"...
Wegi, nie doczytałem jeszcze szczegółów tych projektów, ale jeśli jest tak jak napisałeś, to nie o to mi chodziło. Widziałem takie playery zrobione z Arduino połączonym z AY lub SAA, które zaczytywały z karty SD pliki i je odgrywały. Sądziłem, że można też tak zrobić z SIDem, ale jeśli nie, to skupię się na wykorzystywaniu Arduino, jako "chwytacza" danych z przełączników, potencjometrów i sterowania SIDem, może nie po to aby zrobić jakiś super syntezator, ale żeby szukać brzmień.
Na moim biurku, razem z PC stoi cały czas C64C ze swoim majdanem i tego nie mam zamiaru zmieniać...

Awatar użytkownika
Steffan
Posty: 854
Rejestracja: 04 maja 2019, 19:43
Grupa: BooM!

Re: Blok danych SID

#16 Post autor: Steffan »

yovish pisze:
05 gru 2020, 12:09
Nie zamierzam być "katem", ja siebie widzę (może chciałbym widzieć) jako "Danuśkę"...
Nie da się Wegi zapłacił za Danusie. Przekupił mnie Ogryzkami.
Oczywiście wszystko w ramach żartu. :lol: :lol: :lol:
pozdro
S.
B O O M !
we are the commodore terrorists
-------------------------------------
TEDDY BEER C=64 PARTY [csdb]

Awatar użytkownika
KB777reborn
Posty: 207
Rejestracja: 12 lut 2020, 08:30
Grupa: 1100°Crew
Kontakt:

Re: Blok danych SID

#17 Post autor: KB777reborn »

yovish pisze:
03 gru 2020, 22:06
Przymierzam się do podłączenia SID do arduino
"Pamięcioobszerne", ale nie trzeba bawić się w emulację 6502:

https://github.com/FrankBoesing/Teensy- ... ras/SDCARD

Zrzuty rejestrów. Może nie tak "modne" jak DRO w świecie OPL, ale zawsze to coś.
1100°C


Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

Re: Blok danych SID

#19 Post autor: wegi »

Sikam ogniem że na takim małym pyrtku jak blue pill zrobiłeś odtwarzarkę SID'ów.


PS Wielkie podziękowania dla usera mooha za zaimportowanie projektów kung fu flash i LCFM meter do AC6!

Dziękuję Daniel

Przy okazji ta odtwarzarka SIDów na NUCLEO zrobiona przez Daniela:

https://youtu.be/iWPdefzpD-Q
2021.06.16 "U mnie w okolicy też nikt nie umarł - ale nie będę na tej podstawie twierdził, że Covid nie istnieje ani że nie jest żadnym zagrożeniem"

2023.09.09 U mnie też nikt nie umarł włącznie z ciotką chorą na białaczkę. Dwukrotnie zaszczepiona dostała covida w szpitalu - żyje. Ta plandemia to już jak Bóg - wszędzie jest i nikt go nie widział.

Awatar użytkownika
Nitro
Posty: 1544
Rejestracja: 03 wrz 2008, 20:23
Grupa: Black Sun

Re: Blok danych SID

#20 Post autor: Nitro »

Łał, super projekt!

ODPOWIEDZ