Aktualności: C64 Power - online od stycznia 2000 !

Autor Wątek: siddump proces konwersji.  (Przeczytany 803 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

aldarn__

  • Gość
siddump proces konwersji.
« dnia: 14 Sierpnia 2010, 19:06 »
Witam.
Pare tygodni temu zrobilem sobie przenosny odtwarzacz SIDow (mikrokontroler avr wpisujacy stany rejestrow w odpowiednim czasie do 8580). Chcialbym jednak ulepszyc swoje urzadzenie, by nie trzeba bylo konwertowac sida do postaci wartosci rejestrow (bardzo pamieciochlonne) tylko by mikrokontroler w locie tlumaczyl sobie dane. Szukalem na necie dosyc dlugo czegokolwiek o tym jak zbudowany jest kontener sid, jednak nigdzie nie ma nic wiecej procz opisanego naglowka, a to co mnie interesuje to dane muzyczne.
Dochodzenie do tego algorytmu na podstawie zrodla programu konwertujacego siddump jest niestety nie na moj poziom. Jezeli ktos ma materialy, ktore moglyby mi pomoc, bardzo prosze o ich podanie.



Jacek31

  • Gość
siddump proces konwersji.
« Odpowiedź #1 dnia: 14 Sierpnia 2010, 19:26 »
Troche nie ten dzial, bo twoje pytanie dotyczy programowania, a nie budowy sprzetu jako-tako.
Co do twojego pytania, to nie wydaje mi sie ze firma Commodore stworzyla cos innego niz przyjety standard zapisu danych w pliku. Tzn. naglowek okresla wlasnie jak nalezy interpretowac dane znajdujace sie za nim. Czyli ile wykorzystano kanalow, format zapisu, itp. O szczegoly musisz jednak pytac kolegow koderow, szybciej i klarownie zaiste ci odpowiedza. \"Wink\"

Offline wackee

  • Level 6
  • ******
  • Wiadomości: 2210
siddump proces konwersji.
« Odpowiedź #2 dnia: 14 Sierpnia 2010, 19:39 »
Jacku, wydaje mi sie ze raczej na pewno sie mylisz.
AFAIK w pliku .sid jest po prostu zrzut zaka jako pliku wykonalnego w ML. Kazdy odtwarzacz .sid\'ow emuluje wykonanie kodu z tego pliku i jego wplyw na rejestry SIDa.
Jezeli sie myle, to niech mnie ktos skoryguje \"Smile\"

Offline Kisiel

  • Level 7
  • *******
  • Wiadomości: 11447
  • Number 7 in all users competition...
    • http://wiki.projekt64.filety.pl/doku.php
siddump proces konwersji.
« Odpowiedź #3 dnia: 14 Sierpnia 2010, 22:18 »
podejrzewam ze jeszcze musi byc czestotliwosc odtwarzania. czy 1x czy 12x na ramke.
idz wyprostowany wśród tych co idą na kolanach

...w przypadku checi zakupu UK1541,GA,MA,T8500,T7501 prosze o kontakt na Facebooku, haslo: UK1541....

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7339
  • Wolność, własność, sprawiedliwość
siddump proces konwersji.
« Odpowiedź #4 dnia: 15 Sierpnia 2010, 07:40 »
http://www.swinkels.tvtom.pl/swinsid/ - hardware sid player made in poland
http://kevtris.org/Projects/sid/sidman.html

plik SID to naglowek + RAW DATA - czyli fragment ramu \"Wink\"

format sid:
http://cpansearch.perl.org/src/LALA/Audio-SID-3.11/SID_file_format.txt

btw dla UC najlepszym wyjsciem bylo by uzycie TinySID
http://www.informatik.uni-frankfurt.de/~sinsch/TinySid.htm

szkoda tylko ze autor nie udostepnia zrodel \"Wink\"
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Jacek31

  • Gość
siddump proces konwersji.
« Odpowiedź #5 dnia: 15 Sierpnia 2010, 08:45 »
wackee \"Arrow\"  czyli jak dobrze cie zrozumialem to odtwarzacz SIDow to nic innego jak emulator 6502 (no chyba ze ktos dorwie mikrokomputer z rdzeniem 6502), ktory po prostu wykonuje program zawarty w pliku SIDa  \"Question\"

fenek__

  • Gość
siddump proces konwersji.
« Odpowiedź #6 dnia: 15 Sierpnia 2010, 09:20 »
Plik .SID to czyste dane z C-64+naglowek zawierajacy info o zaku, to wszystko jest opisane w dokumentacji.
Muzyczka na c64 czy w pliku (kontenerze:shock:) to program wykonywalny dla C-64.
Czyste dane to muzyczka czyli kod playera + dane do SIDa w kodzie c-64,
zeby takie cos zagralo kod musi zostac wykonany przez procka w C-64.
Player to program ktory jest krok po kroku wykonywany przez procesor
w C-64 i program ten pobiera dane z pamieci C-64 i wrzuca do rejestrow SIDa.
Nie wiem jak dzis ale kiedys w SIDPlayu trzeba bylo czasem ustawiac cos takiego jak srodowisko pracy SIDPlaya, tzn. jaki stan pamieci dla C-64 ma emulowac aby poprawnie pobieralo dane z pamieci np. zak od $a000-$c000
ktory pokrywal sie z interpreterem Basica nie mogl byc poprawnie odtwarzany jezeli wewnetrzny player w zaku nie ustawial $01 na #$36 itp.itd.

W duzym uproszczeniu player na pc = emulator procesora+obslugi pamieci+
+przerwan CIA-IRQ, VIC-IRQ, CIA-NMI, no i SID, ale moge sie mylic. Nie znam sie.

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7339
  • Wolność, własność, sprawiedliwość
siddump proces konwersji.
« Odpowiedź #7 dnia: 15 Sierpnia 2010, 11:21 »
nio to czym Fenek pisze to prawda \"Wink\" przy czym te srodowiska juz takiej roli nie graja przy nowszym formacie (v2ng - jest to juz wpisane w pliku), warto tez zobaczyc player Swinkelsa.
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

suchy

  • Gość
siddump proces konwersji.
« Odpowiedź #8 dnia: 15 Sierpnia 2010, 19:41 »
Tutaj  jest fajny opis packed SID-playera na multikontrolerze (8in1) Propeller (f-my Parallax).

P8X32A PROPELLER - datasheet tego ciekawego mikrokontrolera, ktory zawiera wewnatrz osiem (!) procesorow.

Niestety w mlodosci \"slon nadepnal mi na ucho\"  \"Wink\"  wiec juz wiecej sie nie wtracam.

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7339
  • Wolność, własność, sprawiedliwość
siddump proces konwersji.
« Odpowiedź #9 dnia: 15 Sierpnia 2010, 19:45 »
http://roboterclub-freiburg.de/atmega_sound/atmegaSID.html - takie cos jeszcze jest godne podejrzenia \"Wink\"
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

aldarn__

  • Gość
siddump proces konwersji.
« Odpowiedź #10 dnia: 18 Sierpnia 2010, 10:52 »
Ok. Od paru dni planuje implementacje emulatora 6502 do atmegi...
Pierwsza czesc kodu SIDa jest calkiem realna do emulowania. Nie rozumiem jeszcze dlaczego SID nadpisuje samego siebie i czemu to sluzy.
Czy potrzeba mi zdumpowac jeszcze jakies obszary pamieci, oprocz pamieci podrecznej na SIDa i mapowania rejestrow 8580, by program realizujacy mial do tego dostep?

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7339
  • Wolność, własność, sprawiedliwość
siddump proces konwersji.
« Odpowiedź #11 dnia: 18 Sierpnia 2010, 11:20 »
jaka pierwsza czesc kodu? ogolnie bardzo chaotycznie to napsiales albo bredzisz \"Wink\" to ze prrgoam (sid) wpisuje dane w obszar w ktorym przebywa jest normlane bo tu przeciez nie ma rozdzialu (nojman) tak jak w atemdze na ram (dane \"dynamiczne\") i program we flashu (ew dane statyczne)

wiekszosc kawalkow bedzie odgrywana jesli bedzie TYLKO emulowany cpu i 8580 + timer 50hz symulujacy przerwanie. czesc mzoe wymagac tez obecnosci romu a czesc WYMAGA emulowania timera bo nie opieraja sie przerwaniu VICa.

btw WTF jaka pamiec podreczna?
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

aldarn__

  • Gość
siddump proces konwersji.
« Odpowiedź #12 dnia: 18 Sierpnia 2010, 13:20 »
Mialem na mysli to, ze caly program musi siedziec w RAMie, nie uruchomie sida z pamieci stalej.

Aha, czyli:
- zaemulowac opcody z 6502
- zmapowac adresy $D4xx jako rejestry 8580
- zainicjowac program z $1000
i co 50Hz puszczac procedure z adresu $1003 i bedzie grac :]

jezeli cos pominalem, bardzo prosze o poprawienie.

Offline Raf

  • Master of disaster
  • Administrator
  • Level 7
  • **********
  • Wiadomości: 7339
  • Wolność, własność, sprawiedliwość
siddump proces konwersji.
« Odpowiedź #13 dnia: 18 Sierpnia 2010, 13:29 »
-dolaczasz 64k sramu do uC (choc pobawic sie mozna juz przy 8k zakladajac ze chcesz odgrywac tylko kawalki ktore siedza np 1000-2ffff w ramie)
-wykonujesz playera na emulowanym 6502 50 razy na sekunde (i to niekoniecznie $1003 - wlasciwy adres znajdziesz w naglowku sida)
dwie opcje:
-zczytujesz to co wyplul po kazdym wywoalniu player spod $d400-$d41f
wpisujesz te dane do rejestrow sida
lub
-po wykryciu jakiegokolwiek wpisu w adresy sida odrazu wpisywac do scalaka (pierwsza mniej procka zre ale moga wystapic roznice w odgrywaniu muzy wzgledem prawdziwego c64, druga nie bedzie miala tego rpoblemu ale wiecej cpu zre)

dopiero atmega128 ma wystarczajaco duzo ramu (4k) zeby myslec o wykonywaniu kodu z jej wewnetrznego ramu zamiast ext sram, ale wtedy wybor muzyki jest juz dosc mocno ograniczony.
"Cokolwiek powiesz albo napiszesz, znajdzie się ktoś, kto słyszy lub czyta coś zupełnie innego i jeszcze bezczelnie wmawia Ci to"

Jacek31

  • Gość
siddump proces konwersji.
« Odpowiedź #14 dnia: 18 Sierpnia 2010, 14:07 »
Jak kolega chce sie bawic na AVR to zestaw AVT-3505 ma na pokladzie ATMege 162 8MHz(16KB Flash + 1KB Internal RAM), 32KB zewnetrznego RAM, zlacze rozszerzen (magistrala CPU) bezproblemowo podepniesz na nim SIDa, RS232 i dodatkowo plytke z 2 przyciskowa klawiatura wyswietlaczem LED 4 cyfry i mozliwoscia wpiecia wyswietlacza LCD 16 znakow na 2 wiersze. Jak by co moge wrzucic fotke bo mam ten zestaw.