Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #360 on: 2017.February.09. 21:21:25 »
elméletileg működik az 50x Hz frekvencián való lejátszás max 300Hz-ig, ezt most fogom tesztelni majd a paperboyjal.

Nekem működik, azaz túl gyors (mint eredetileg). :)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #361 on: 2017.February.09. 21:27:06 »
Nekem működik, azaz túl gyors (mint eredetileg). :)
:smt043
Egy picit nekem is gyorsabbnak tűnt, mint emlékeimben, de a SID hosszúságok is azt bizonyítják, hogy ez a túl gyors a jó gyors :lol: , amúgy amikor 50Hz-en ment a lejátszás, az első, és a második zene tök ugyanaz volt, ekkor meg ez volt a furcsa :D
Akkor már csak az a kérdés, hogy csináljak-e saját LPT-t soronkénti LPB-vel a megszakítások jobbá tételére, esetleg jobb Logoval ,vagy maradjon így?

Ergognomiknak : :) (hasonlít)
[ Guests cannot view attachments ]
« Last Edit: 2017.February.09. 21:51:41 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #362 on: 2017.February.10. 19:04:14 »
Egyszerű script több file konvertálásához:
[ Guests cannot view attachments ]

ls
DEMOS  DOCUMENTS  MUSICIANS  sid2m64.sh  sid_conv  sid_dump

find MUSICIANS -type f -name "*.sid" -exec ./sid2m64.sh "{}" \;


Mivel minden kimeneti file az aktuális könyvtárba kerül, több azonos nevű esetén felülíródnak. Valószínűleg nem működik jól, ha szóköz vagy egyéb problémás karakterek vannak a file névben, és akkor sem, ha véletlenül tartalmazza azt, hogy ".raw-" (bár ez valószínűtlen). :oops:

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #363 on: 2017.February.11. 12:31:00 »
Az aufmonty.sid-nél hibásan működött a sid_dump.cpp, javított verzió:
[ Guests cannot view attachments ]

A problémát az okozta, hogy a file egy részét felülírta a ROM területen található rutin ($EA20-$EA3F), ilyen esetben a program most áthelyezi a rutint $0420 kezdőcímre, egyébként marad az eredeti helyén.

Szerk.: néhány ezek közül továbbra sem működik, három a fejléc szerint hangmintát használ, kettőnél lefagy az init rutin, és egy túl sok zenét/effektust tartalmaz (ami ugyan könnyen javítható lenne, jelenleg a program legfeljebb 32-t fogad el).

Próba konverzió, még nem ellenőriztem, hogy jó-e az eredménye:
[ Guests cannot view attachments ]
« Last Edit: 2017.February.11. 15:44:53 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #364 on: 2017.February.11. 19:48:07 »
Szerk.: néhány ezek közül továbbra sem működik, három a fejléc szerint hangmintát használ, kettőnél lefagy az init rutin, és egy túl sok zenét/effektust tartalmaz (ami ugyan könnyen javítható lenne, jelenleg a program legfeljebb 32-t fogad el).
A MYTH-ről, és  a GPC-ről tudom, hogy digi van bennük (anno sokat játszottam velük), a Mythben a második tune a digi (Welcome to Myth szöveg), sidplay-jel azt átugrottam, és úgy vettem fel a harmadikat, a GPC-ben digi gitár van, lehet az első kettő tune-ban.
Próba konverzió, még nem ellenőriztem, hogy jó-e az eredménye:
A Last Ninja 2, Cybernoid tuti jó, azokat konvertáltam én is, és teszteltem is :), a Paperboy első számában (a gyorsban) mintha ez egyik csatorna túl halk lenne, a többi jó.
« Last Edit: 2017.February.11. 19:54:22 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #365 on: 2017.February.11. 19:52:04 »
Itt az új verzió, saját LPT-t használ, új logoval, még azon gondolkoztam, hogy egy mozgó raster bart be lehetne tenni.
Egy hibát találtam, a rövid sid-ek lejátszása nem volt jó, mert azt nem figyeltem, hogy az első kicsomagolás a csomag végére is ért-e, javítva.
« Last Edit: 2017.February.11. 20:33:48 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #366 on: 2017.February.11. 20:55:17 »
a Paperboy első számában (a gyorsban) mintha ez egyik csatorna túl halk lenne, a többi jó.

Ezt talán az okozhatja, hogy csak a lejátszás gyorsabb, de a burkológörbék A,D,R paraméterei ugyanazok maradtak, mint az 50 Hz-es változatban. SID kimenetet használva is bizonytalan a lejátszás, illetve a SIDPLAY-nél változik a hang a Z80 órajeltől függően. De még megnézem, nincs-e valamilyen hiba. Az is lehet, hogy ha a sid_conv.cpp nem emulálná az ADSR bugot, az javítana a konvertálás eredményén.

Itt az új verzió, saját LPT-t használ, új logoval, még azon gondolkoztam, hogy egy mozgó raster bart be lehetne tenni.

Jó lett, elvileg 4 MHz-es gépen még problémás lehet az 50 Hz-nél lényegesen nagyobb sebesség, de úgy látom, 150-nél még marad elég idő, ennél gyorsabb file pedig még nem volt eddig:
[ Guests cannot view attachments ]
Ezen egy keveset sikerült javítani a frekvencia szorzó rutin átalakításával, de így nagyobb és bonyolultabb lett, tehát nem igazán érné meg:
[ Guests cannot view attachments ]

Bár ez csak a konvertáló programot érinti, lehetőség lenne még arra is, hogy eredetileg 50 Hz-es file is nagyobb frekvenciájú (pl. 100 Hz-es) burkológörbe emulációt használjon, de ez növelné a kimenet méretét.
« Last Edit: 2017.February.11. 21:20:59 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #367 on: 2017.February.11. 21:26:09 »
Jó lett, elvileg 4 MHz-es gépen még problémás lehet az 50 Hz-nél lényegesen nagyobb sebesség, de úgy látom, 150-nél még marad elég idő, ennél gyorsabb file pedig még nem volt eddig:
Köszi :) , eggyel találkoztam, a HVSC.SID 200Hz-es volt, az is ment gond nélkül, még azon gondolkozom, hogy a volume display csak 50Hz-enként legyen frissítve, csak ezt akkor át kell tennem a FILE-t tartalmazó lapra, mert már nem tudom besuvasztani a 0000-0500h területre.
Ezen egy keveset sikerült javítani a frekvencia szorzó rutin átalakításával, de így nagyobb és bonyolultabb lett, tehát nem igazán érné meg:

Bár ez csak a konvertáló programot érinti, lehetőség lenne még arra is, hogy eredetileg 50 Hz-es file is nagyobb frekvenciájú (pl. 100 Hz-es) burkológörbe emulációt használjon, de ez növelné a kimenet méretét.
Attól függ mennyivel lett nagyobb, és bonyolultabb, egyelőre 3 byte szabad a fent említett területen, ha a volume display elköltözne, akkor kb 30 byte felszabadulna, és esetleg a 0000h-002eh területet használhatnánk még, meg a 007a-009fh-t
Nagyon jó lett a SID_CONV, és SID_DUMP kombó így 50Hz-en is, nem tudom érdemes-e felmenni 100Hz-re, lehet akkor már lapoznunk kéne a megnövekedett file méret miatt, az IK konvertálásakor 6:32-re kellett lemennem a múltkor (érdekes az IK+ jóval tömöríthetőbb, abból a teljes hossz, több mint 7 perc is 20Kb alatt volt)

A Monty On the Run-nal bezárólag teszteltem (hol rövidebben, hol hosszabban), minden fasza volt, a következőkben hallottam érdekességet:
clystron - néha recseg , lehet valami spéci fícsört használ
Dragon Ninja1 - néha recseg , lehet valami spéci fícsört használ
Expfist el vannak tolódva a hosszak, ez a songlengths.txt hibája (úgy emékszem, eggyel több hossz van a txt-ben, mint ahány tune a sid-ben :D )
IK cheatelni kell, mert több,mint 10 perces, a 3-as SID regiszter nem használt bitjének használata előtt 6:32 még belefért az 5e00h hosszba
ln-07 az elején hallottam érdekességet, gondolom itt valami filtert használ

Továbbmentem a Ninja-ig, a Navy Seals első három (tovább ezt nem néztem) csupa 0-át csomagol ki.
Rambo-01-ben a 3. byte végig 0 (volume-ot is tartalmazó byte)

Végül a végére értem (pár kihagyással, ott ahol nagyon sok volt, csak párat töltöttem be)
« Last Edit: 2017.February.11. 21:39:24 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #368 on: 2017.February.11. 21:52:19 »
Köszi :) , eggyel találkoztam, a HVSC.SID 200Hz-es volt, az is ment gond nélkül, még azon gondolkozom, hogy a volume display csak 50Hz-enként legyen frissítve, csak ezt akkor át kell tennem a FILE-t tartalmazó lapra, mert már nem tudom besuvasztani a 0000-0500h területre.Attól függ mennyivel lett nagyobb, és bonyolultabb, egyelőre 3 byte szabad a fent említett területen, ha a volume display elköltözne, akkor kb 30 byte felszabadulna, és esetleg a 0000h-002eh területet használhatnánk még, meg a 007a-009fh-t

Elég nagy a méretkülönbség, mert ciklus helyett egyszerűen "kiírtam" ezt 8-szor, illetve az ADD HL,DE-k helyére FEh (CP utasítás) byte került a szorzó 0 bitjeinél:

Code: ZiLOG Z80 Assembler
  1.         add   hl, hl
  2.         rla
  3.         add   hl, de
  4.         adc   a, c

Ez természetesen csak a 0-2Eh területen fért el, és minden szorzó más kódot igényelne (bár a generálása történhet a FILE-os szegmensen). A CP-k helyett tulajdonképpen ki is lehetne hagyni az utasításokat, ami még gyorsabb valamivel. A hívásokat RST 0-kra lehetne cserélni, ami viszont megtakarít egy kevés helyet, és az eredeti rutin (amit ugyan használ a sebesség tesztelő kód, de ott lehetne másolata) törlése is. Azonban amint az a képeken látható, nem nagy a különbség az eredeti kódhoz képest, ezért nem biztos, hogy megéri.

A kivezérlésjelző "költöztetése" nem igényelné a hangminta megszakítás tiltását?

Quote
Továbbmentem a Ninja-ig, a Navy Seals első három (tovább ezt nem néztem) csupa 0-át csomagol ki.

Ez sid_dump bug lehet (lefagyott a 6502 kód?), holnap megnézem.

Az IK tömörítésén talán lehetne javítani a minőség romlása árán, például a PWM, vagy eseteg a frekvencia vagy hangerő felbontásának a csökkentésével.
« Last Edit: 2017.February.11. 21:56:17 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #369 on: 2017.February.11. 22:08:07 »
Elég nagy a méretkülönbség, mert ciklus helyett egyszerűen "kiírtam" ezt 8-szor, illetve az ADD HL,DE-k helyére FEh (CP utasítás) byte került a szorzó 0 bitjeinél:

Code: ZiLOG Z80 Assembler
  1.         add   hl, hl
  2.         rla
  3.         add   hl, de
  4.         adc   a, c

Ez természetesen csak a 0-2Eh területen fért el, és minden szorzó más kódot igényelne (bár a generálása történhet a FILE-os szegmensen). A CP-k helyett tulajdonképpen ki is lehetne hagyni az utasításokat, ami még gyorsabb valamivel. A hívásokat RST 0-kra lehetne cserélni, ami viszont megtakarít egy kevés helyet, és az eredeti rutin (amit ugyan használ a sebesség tesztelő kód, de ott lehetne másolata) törlése is. Azonban amint az a képeken látható, nem nagy a különbség az eredeti kódhoz képest, ezért nem biztos, hogy megéri.
Hm, holnap megnézem, lehet jól jön majd egyszer az a kis gyorsulás is :D
A kivezérlésjelző "költöztetése" nem igényelné a hangminta megszakítás tiltását?
Elméletileg nem, mert a 3-as lapra kerülne a kivezérlés, ez csak akkor okozhatna gondot, ha ezalatt az idő alatt történne még egy videó megszakítás.
Ez sid_dump bug lehet (lefagyott a 6502 kód?), holnap megnézem.

Az IK tömörítésén talán lehetne javítani a minőség romlása árán, például a PWM, vagy eseteg a frekvencia vagy hangerő felbontásának a csökkentésével.
simán lehet, mert gyanúsan az összes üres :)
Ááá, szerintem pont jó így az IK miatt nem érdemes sztem belenyúlni, legalább 6 percet át lehet alakítani, és ugyi a SID_DUMPnak időtartamot is meg lehet adni :) Én még anno a LUA-val mentettem a 6:32-es hosszú IK-t :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #370 on: 2017.February.12. 08:31:18 »
Elméletileg nem, mert a 3-as lapra kerülne a kivezérlés, ez csak akkor okozhatna gondot, ha ezalatt az idő alatt történne még egy videó megszakítás.

Az is egy lehetőség, hogy a video megszakítás nagy része átkerüljön a FILE-os szegmensre. Ha a hangminta lejátszás nem használja a 2. és 3. lapot, akkor a kód kerülhet a 2. lapra, a video szegmens pedig átmenetileg a 3. lapra. A szegmensek mentése, beállítása és visszaállítása ugyan lassulást eredményezne, de a több hely miatt talán jobban optimalizálható lenne a kód. Csak a szorzás gyorsítása megoldható lapozás nélkül is, ezért ennek az átalakításnak elsősorban az lehetne az előnye, ha 400h alatt is elférne a lejátszó a 0. lapon.

Ha nem probléma a nagyobb verem használat, akkor valamivel gyorsabb lehetne először mind a 12 regisztert kiolvasni (fordított sorrendben) és a verembe menteni, majd a megfelelő helyeken POP utasításokkal olvasni. Ennek az is előnye, hogy az adat feldolgozása közben már nincs szükség a kicsomagolt blokk szegmensére, így az kilapozható.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #371 on: 2017.February.12. 08:52:16 »
Az is egy lehetőség, hogy a video megszakítás nagy része átkerüljön a FILE-os szegmensre. Ha a hangminta lejátszás nem használja a 2. és 3. lapot, akkor a kód kerülhet a 2. lapra, a video szegmens pedig átmenetileg a 3. lapra. A szegmensek mentése, beállítása és visszaállítása ugyan lassulást eredményezne, de a több hely miatt talán jobban optimalizálható lenne a kód. Csak a szorzás gyorsítása megoldható lapozás nélkül is, ezért ennek az átalakításnak elsősorban az lehetne az előnye, ha 400h alatt is elférne a lejátszó a 0. lapon.
Ez megfontolandó :) , és elméletileg nem is kell menteni a szegmenseket, simán mehetnek előre beállított értékekkel.
Ha nem probléma a nagyobb verem használat, akkor valamivel gyorsabb lehetne először mind a 12 regisztert kiolvasni (fordított sorrendben) és a verembe menteni, majd a megfelelő helyeken POP utasításokkal olvasni. Ennek az is előnye, hogy az adat feldolgozása közben már nincs szükség a kicsomagolt blokk szegmensére, így az kilapozható.
Elméletileg nem, a hiba rutin került 00a0h-ra, a verem 0100h-n, és lejátszás közben +6-7 érték kerül be, a FILE-nak kellett más helyre tenni a vermet, mert az belecsúszott a hiba rutinba.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #372 on: 2017.February.12. 09:01:01 »
és elméletileg nem is kell menteni a szegmenseket, simán mehetnek előre beállított értékekkel.

A mentés akkor lehetne hasznos, ha video megszakítás kezelése közben történik újabb video megszakítás. Ilyesmi normál esetben ugyan nem fordul elő, esetleg a lejátszás indításakor vagy ha a megszakítás egyéb okból hosszabb ideig tiltott volt, de a probléma elkerülhető az engedélyezés előtt a B4 porton törölve a tárolókat.

A Navy Seals azért nem működik, mert felülírja nullákkal az FFFE-FFFF címen az IRQ vektort. Ha valójában nem hasznos adatot tárol ott, akkor javítható lenne az IRQ cím beállításával az init rutin futása után.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #373 on: 2017.February.12. 09:31:23 »
A mentés akkor lehetne hasznos, ha video megszakítás kezelése közben történik újabb video megszakítás. Ilyesmi normál esetben ugyan nem fordul elő, esetleg a lejátszás indításakor vagy ha a megszakítás egyéb okból hosszabb ideig tiltott volt, de a probléma elkerülhető az engedélyezés előtt a B4 porton törölve a tárolókat.
Végülis nem nagy időveszteség, és gondolom nem a vermet kéne hassználni a problémák elkerülése végett :), igaz nekem a 2. megoldás szimpatikusabb, még egy megoldás jutott eszembe, de ez gyanúsan lassabb, mint a regiszter mentés, ha aktív a videó megszakítás, annak elejére egy ret-et tenni, és amikor lefut az első videó megszakítás, akkor visszakerülne a push af.
A Navy Seals azért nem működik, mert felülírja nullákkal az FFFE-FFFF címen az IRQ vektort. Ha valójában nem hasznos adatot tárol ott, akkor javítható lenne az IRQ cím beállításával az init rutin futása után.
Sidplay-jel műxik, nem tudom mi lehet a különbésg, egyelőre csak a kód relokálás jut eszembe, de az IRQ vektor felülírást az nem orvosolná.
« Last Edit: 2017.February.12. 09:37:20 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #374 on: 2017.February.12. 09:36:38 »
megnéztem, úgy látom a int vector címmel direktben a sidplay nem csinál semmit.