Welcome, Guest. Please login or register.


Author Topic: SID lejátszó (Read 249411 times)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID lejátszó
« Reply #345 on: 2017.February.08. 17:09:29 »
Van pölö a SizPlay, ami képes PSID fájlokat lejátszani SID-kártyán. A forrását el lehet érni a szerző saját oldalán. Ebből, meg némi Lua szkriptből talán össze lehetne eszkábálni valamilyen automatizált eszközt.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #346 on: 2017.February.08. 21:15:22 »
Sikerült befordítani a sid_conv.cpp-t :) , a balfaszságom miatt pár óra alatt :D , ezt nem részletezném, de convertáltam a két példa SID-edet, így holnap szüttyögök majd az új betöltéssel a sidbintben.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #347 on: 2017.February.09. 09:23:48 »
Valamennyire már működik a PSID konvertáló, de a hosszúság automatikus felismerésére az ötletem nem vált be, a lejátszókban sok az önmódosító kód, és így nem ismétlődik a memória tartalma. Egyelőre csak a parancssorban lesz megadható, ez még mindig automatizálható egy shell script és a Songlengths.txt használatával. Sok file azonban hiányzik a Songlengths.txt-ből (vagy valahol van újabb verziója?).

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID lejátszó
« Reply #348 on: 2017.February.09. 10:40:32 »
Valamennyire már működik a PSID konvertáló, de a hosszúság automatikus felismerésére az ötletem nem vált be, a lejátszókban sok az önmódosító kód, és így nem ismétlődik a memória tartalma. Egyelőre csak a parancssorban lesz megadható, ez még mindig automatizálható egy shell script és a Songlengths.txt használatával. Sok file azonban hiányzik a Songlengths.txt-ből (vagy valahol van újabb verziója?).
Csak arról a Songlengths.txt tudok, ami HVSC csomagban van. Azonban létezik egy SOASC, vagy valami hasonló nevezetű gyűjtemény, ami elvileg az összes HVSC-ben megtalálható SID átkonvertálva MP3-ba. Abból esetleg ki lehet olvasni a hosszakat.

Más lehetőség a zene hosszak megállapításra lehetne egy olyasféle algoritmus, ami gyűjti a SID írásokat vagy regiszter állapotokat és ezekben keres valamilyen megadott minimális hosszúságú (15-30s?) szekvencia ismétlődést. De ezen kicsit hosszabban kellene gondolkodni.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #349 on: 2017.February.09. 10:42:31 »
Sok file azonban hiányzik a Songlengths.txt-ből (vagy valahol van újabb verziója?).
Én is a legfrissebb HVSC csomagból szedtem ki a songlengthet, 48943 entry van benne, amiket én néztem, mind benne volt :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #350 on: 2017.February.09. 10:52:59 »
Én is a legfrissebb HVSC csomagból szedtem ki a songlengthet, 48943 entry van benne, amiket én néztem, mind benne volt :)

Most valóban megtaláltam például a Paperboy-t, de az md5sum különbözik:

grep -C1 -e "Paperboy\.sid" C64Music/DOCUMENTS/Songlengths.txt
; /DEMOS/M-R/Paperboy.sid
d8b2d332788b272838cbab54f6e412dc=0:30
--
; /MUSICIANS/C/Cooksey_Mark/Paperboy.sid
c50dc3428cc1b95e75a8179da4092866=1:16 3:46 0:31 0:15(G) 0:29

md5sum -b C64Music/MUSICIANS/C/Cooksey_Mark/Paperboy.sid
3b50c8047c7921e8937164505ef158ed *C64Music/MUSICIANS/C/Cooksey_Mark/Paperboy.sid

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #351 on: 2017.February.09. 11:09:49 »
Most valóban megtaláltam például a Paperboy-t, de az md5sum különbözik:
Ilyen apróságokkal nem kell foglalkozni ;)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #352 on: 2017.February.09. 12:31:20 »
Ez a verzió még hibás lehet, de valamennyire már használható:
[ Guests cannot view attachments ]
sid_conv.cpp pontosabb 50 és 60 Hz-es időzítéssel (a tényleges PAL és NTSC C64 frekvenciákat tételezi fel a burkológörbe emulációnál):
[ Guests cannot view attachments ]

Fordítás és példa a program használatára:

g++ -Wall -O2 -march=native -I../plus4emu -I../plus4emu/src -L../plus4emu sid_dump.cpp -o sid_dump -lplus4emu -lpthread -lm -s

./sid_dump C64Music/MUSICIANS/C/Cooksey_Mark/Paperboy.sid paperboy.raw C64Music/DOCUMENTS/Songlengths.txt MUSICIANS/C/Cooksey_Mark/Paperboy.sid
./sid_dump GARFIELD.SID garfield.raw C64Music/DOCUMENTS/Songlengths.txt MUSICIANS/B/Baldwin_Neil/Garfield.sid


Az időtartamok a parancssorban közvetlenül is megadhatók, az alapértelmezés 4 perc.
« Last Edit: 2017.February.10. 22:06:43 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #353 on: 2017.February.09. 13:58:03 »
Ez a verzió még hibás lehet, de valamennyire már használható:
sid_conv.cpp pontosabb 50 és 60 Hz-es időzítéssel (a tényleges PAL és NTSC C64 frekvenciákat tételezi fel a burkológörbe emulációnál):

Az időtartamok a parancssorban közvetlenül is megadhatók, az alapértelmezés 4 perc.
Tehát ha jól értem, akkor már el is készült a direkt SID-ből konvertáló program első verziója?
Gratula :)
Az új sid_conv.cpp használható továbbra is EP-ből mentett raw-ra is?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #354 on: 2017.February.09. 20:27:39 »
Az új sid_conv.cpp használható továbbra is EP-ből mentett raw-ra is?

Igen. A formátum ugyanaz maradt, bár ebben a verzióban még kiegészítettem CIA megszakításnál a tényleges számláló értékkel (a pontosság talán hasznos lehet az ADSR bug miatt) a 3FFB-3FFCh pozíciónál az első blokkban:
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
A CIA számláló sebességét is pontosítottam. A régebbi felvételek továbbra is használhatók, illetve az újakat a sid.s le tudja játszani tömörítés után.

A Paperboy nem jó, ugyan 150 Hz-es frekvenciát ismer fel a program, de így túl gyors a felvétel, 50 Hz-en lejátszva viszont jobbnak tűnik. Egyszerű 50 Hz-es video megszakítást használó SID file jól konvertálható, ezek például már a fenti programokkal készültek (az EXOS fejlécet levágtam az elejéről, hogy a SIDBINT le tudja játszani):
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
« Last Edit: 2017.February.09. 20:37:26 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #355 on: 2017.February.09. 20:40:12 »
A Paperboy nem jó, ugyan 150 Hz-es frekvenciát ismer fel a program, de így túl gyors a felvétel, 50 Hz-en lejátszva viszont jobbnak tűnik.
Úgy rémlik az igazi játékból is, hogy az elején a zenét tök gyorsan játsza, és játék közben lassabban, és a SID lejátszása közben is így műxik, az első zene ugyanaz, mint a 2. csak az 150Hz-es, míg a 2. 50Hz-es, kiszámoltam a múltkor a CIA megszakítás alapján, majdnem kereken 150Hz jön ki az elsőre.
A file headerben a megszakítási sebesség csak 60, és 50 többszöröse lehet? Mert ha igen, akkor nem szórakozok a kicsomagolt első blokkból való megállapítással, hanem veszem a file headert, ez egyszerűbbnek tűnik.
Befordítottam a dumpot, és a convot (ma már ment, mint a villám, csak a plus4emut kellett előtte befordítani, sikertelenül ,mert a libpng-t nem találta, de ez nekem pont elég volt a libplus4emuhoz :D ), tetszik a működési mechanizmus, nem beszélve a gyorsaságról, most jönne majd a teszt :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #356 on: 2017.February.09. 20:44:54 »
A file headerben a megszakítási sebesség csak 60, és 50 többszöröse lehet? Mert ha igen, akkor nem szórakozok a kicsomagolt első blokkból való megállapítással, hanem veszem a file headert, ez egyszerűbbnek tűnik.

Az első blokk végén már csak a "raw" formátum tartalmazza a sebességet, konvertáltnál az EXOS fejlécben található. Itt egyszerű 16 bites érték Hz-ben, és elvileg bármi lehet, de valószínűleg csak ritkán nem 50 vagy 60 többszöröse, tehát az ilyenek támogatása nem igazán lényeges.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #357 on: 2017.February.09. 20:53:48 »
Az első blokk végén már csak a "raw" formátum tartalmazza a sebességet, konvertáltnál az EXOS fejlécben található. Itt egyszerű 16 bites érték Hz-ben, és elvileg bármi lehet, de valószínűleg csak ritkán nem 50 vagy 60 többszöröse, tehát az ilyenek támogatása nem igazán lényeges.
Ok, köszi, így is álltam neki végülis, itt is max 300Hz-ig megy majd a beállítás (és csak 50 Hz-enként) némi pontatlansággal az EXOS LPT egyenetlensége miatt, vagy álljak át egy saját LPT-re? (mert amúgy is van szabad szegmens)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #358 on: 2017.February.09. 21:17:09 »
Itt az újabb verzió, még csak egy konvertált zenével próbáltam (50Hz-es volt), kezeli az új file headert, ha nem modul volt a betöltött file,vagy nem 4fh-s modul (ezt elszúrtam, M-re gondoltam, a 4fh meg O, de mindegy, ez lesz a modul headerünk :) ),vagy a mérete nagyobb, mint 5e00h, akkor új fájlt kér, elméletileg működik az 50x Hz frekvencián való lejátszás max 300Hz-ig, ezt most fogom tesztelni majd a paperboyjal.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #359 on: 2017.February.09. 21:18:05 »
Ok, köszi, így is álltam neki végülis, itt is max 300Hz-ig megy majd a beállítás (és csak 50 Hz-enként) némi pontatlansággal az EXOS LPT egyenetlensége miatt, vagy álljak át egy saját LPT-re? (mert amúgy is van szabad szegmens)

50 Hz többszöröseihez szerintem elég az EXOS LPT az LPB-ket jól választva, bár egyes bővítők (pl. ZozoTools) módosíthatják. De az elején mindig van 28 9 soros LPB, ami összesen 252 sor, utána az alsó keret 14 vagy 6 (ZT esetén) sor. Ha nem is teljesen pontos az időzítés, a hiba 1 ms alatt lehet, ami nem igazán hallható.

A külön LPT előnye lehetne, hogy ha minden sor külön LPB, akkor 15611 Hz tetszőlegesen osztható a VINT-es LPB folyamatos változtatásával, de nem tudom, megérné-e ez a lejátszó kód bonyolítását, ha a legtöbb SID file 50 Hz-es.