Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #495 on: 2017.February.24. 21:15:52 »
Ideiglenes jelszintekhez, különösen mivel az írás meglehetősen lassú, 72 ciklus az első és a harmadik csatorna között. Egy keveset lehetne gyorsítani, de akkor vagy a kezdőcím számítása lenne lassabb, vagy a felbontás csökkenne. Akkor sem lenne ilyen probléma, ha a táblázat minden csatornán csak monoton növekvő szinteket tartalmazna, de ez is csökkentené a felbontást, tehát valamilyen többé-kevésbé optimális kompromisszumot kell találni. Vannak egyébként olyan konvertáló programok, amelyek ezt a jelenséget is kihasználják, de itt nehezebb lenne.

Kisebb kiugrásokat az interpoláció is eredményez az emulátor kimenetének 48 kHz-re konvertálásakor.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #496 on: 2017.February.25. 09:48:07 »
Közben megcsináltam a gyors verziót, ugyanarra a volume regiszterre kiírni mindent , amiit el is lehet felejteni, roszz a minősége :lol:

Ez a megoldás magasabb frekvenciájú (> 20 kHz) lejátszásnál lenne használható, a 10 kHz még jól hallható.

Szerk.: még egy kisebb problémát találtam: előfordulhat, hogy olyan kódrészlet közben történik megszakítás, amit az módosít, ezért a visszatéréskor néha "véletlenszerű" utasítások futnak. Ez elkerülhető lenne azzal, ha a megszakítás csak a lejátszó ciklus végén található JP-t írná át. Viszont talán gyorsítani is lehetne a lejátszás vezérlésén: az önmódosító részeknél közvetlenül is lehetne írni a kódot átmeneti puffer és LDI-k használata helyett.
« Last Edit: 2017.February.25. 10:35:15 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #497 on: 2017.February.25. 10:37:36 »
Van egy kis gubanc, elméletileg kész van minden módosítás, annyi, hogy a háromszög, zaj, és fűréz táblák csak 15 eleműek az EP-s 31-gyel szemben a "memóriahiány" miatt butítottam le, meg lehetne csinálni a 31-re, de akkor bukunk majd fél percet a zenéből, viszont az önmódosító kód itt, és az, hogy a sepccy megszakíása másképp működik, mint az EP-s okoz egy kis galibát, a program elszáll ha épp az önmódosító kód azon részén volt megszakítás, ahol utasítás méretváltozás történt, a csatolmány is elszáll kb 1 perc után.
Erre 3 ötletem volt:
1 próbáljuk úgy időzíteni a lejátszást, hogy mindig igyanoda kerüljön a megszakítás, kuka, mert szerintem lehetetlen.
2 csekkoljuk a megszakításban, hogy hová térne vissza, és a visszatérési érték alapján módosítsuk azt
3 betenni di-t és ei-t az önmódosító kódokhoz, ez jelentős lassulást eredményezne.

És most jutott eszembe  a 4. megoldás, ha megszakítás történt, akkor csak annyi történjen, hogy a digi lejátszó rutin végén lévő JP utasítást ápdételje, hogy  a megszakító rutinra ugorjon, majd ez befejezés előtt ápdételi újra a JP-t az eredeti értékre, és ugorjon a digi lejátszás elejére.

Egyelőre ez a legszimpatikusabb megoldás ,de lehet neked van jobb, mi a véleményed?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #498 on: 2017.February.25. 10:40:51 »
Egyelőre ez a legszimpatikusabb megoldás ,de lehet neked van jobb, mi a véleményed?

Éppen a JP-s megoldást ajánlottam néhány perccel korábban, de a JP módosítására egyébként is szükség lehetne a sebesség szabályozása miatt.

Quote
3 betenni di-t és ei-t az önmódosító kódokhoz, ez jelentős lassulást eredményezne.

Valójában elég lenne csak egy DI/EI pár, és egy (nem módosított) utasítás idejére engedélyezni a megszakítást, bár az is 8 ciklus.

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #499 on: 2017.February.25. 10:59:11 »
Éppen a JP-s megoldást ajánlottam néhány perccel korábban, de a JP módosítására egyébként is szükség lehetne a sebesség szabályozása miatt.
Bocs, amikor először olvastam azt a hozzászólásod, akkor még nem volt ott, utána meg már írtam, és a fórum nem jelzett, hogy eksön történt, lehet módosításnál nem jelez. :) A JP módosul is már, attól függően hány négyszögjel lejátszás van.
0 esetén egy NOP-bal bővül ki a lejátszás
1 esetén egy CP (HL)-lel
2 esetén egy NOP, INC BC-vel
3 esetén egy CP (HL), INC BC-vel
Valójában elég lenne csak egy DI/EI pár, és egy (nem módosított) utasítás idejére engedélyezni a megszakítást, bár az is 8 ciklus.
Ebben nem vagyok biztos a Speccy megszakításkezelése miatt, amikor letiltottam a megszakítást a volume regiszterek írásának idejére, akkor kb a megszakítások fele ugrott. :(

Akkor a jp módosítást fogom használni, a direkt önmódosító kódon gondolkoztam én is, viszont LDI-nként csak 2 t-stat-et nyernénk + 10-et az LD DE,xxxx elhagyása miatt, abban az esetben lenne ez jó, ha be tudnám tenni a waveform, és hangerő állító függvénybe.
Elméletileg be tudom ,csak kell 2 ex de,hl.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #500 on: 2017.February.25. 11:09:02 »
Ebben nem vagyok biztos a Speccy megszakításkezelése miatt, amikor letiltottam a megszakítást a volume regiszterek írásának idejére, akkor kb a megszakítások fele ugrott. :(

Valóban, a Spectrum nem tárolja a megszakítás kérést, hanem csak rövid időre generálja, ami gyakorlatilag arra elég, hogy a leglassabb (DD/FD CB-s) utasítások közben ne vesszen el. :oops: Tehát marad a JP-s megoldás.

Még az 50 Hz-es megszakítás kezelésén lenne jó valahogyan gyorsítani, mert jól hallhatóan torzítja a hangot. :( És valószínűleg a dacTable is lehetne jobb.

[ Guests cannot view attachments ]
« Last Edit: 2017.February.25. 11:14:10 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #501 on: 2017.February.25. 11:13:00 »
Még az 50 Hz-es megszakítás kezelésén lenne jó valahogyan gyorsítani, mert jól hallhatóan torzítja a hangot. :( És valószínűleg a dacTable is lehetne jobb.
Csinálom most a direkt módosító kódot, többet gyorsít, mint gondoltam, sajnos a torzítást nem fogjuk tudni elkerülni, de ha kész az 50Hz-es megszakításkezelés felteszem a forrást, tuti találsz rajta még gyorsítási lehetőséget :)

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #502 on: 2017.February.25. 11:56:02 »
Itt a javított megszakításos és direkt ápdétes verzió, az eredetihez képest (mikor még nem volt hangformának megfelelő késleltetés állítás sem) egy picit lassult az 50Hz-es vezérlőrutin ,akkor picit több volt, mint 4 képsor, most 5.
« Last Edit: 2017.February.25. 12:14:29 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #503 on: 2017.February.25. 12:01:25 »
A forráskód régebbi verziónak tűnik. :oops:

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #504 on: 2017.February.25. 12:15:10 »
A forráskód régebbi verziónak tűnik. :oops:
Jól tűnik :oops: , lecseréltem a csatolmányt.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #505 on: 2017.February.25. 15:04:11 »
TZX változat, valamiért hibásan működik, egyelőre nem sikerült javítani.

Szerk.: a copydat rutinban inicializálatlan volt a D' regiszter.
« Last Edit: 2017.February.25. 21:18:00 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #506 on: 2017.February.25. 21:13:31 »
TZX változat, valamiért hibásan működik, egyelőre nem sikerült javítani:

Szerk.: a copydat rutinban inicializálatlan volt a D' regiszter.
Az nem lehet, hogy rossz a loaderem? Vagy esetleg valami rendszerváltozó van az 5c00-5d00 területen?
Még nem próbáltam taposítani a cuccot, arra gondoltam, hogy amikor nagyjából véglegesnek tűnik ez a rész, akkor tesztelem a töltést, és ha az is jó, akkor taposítom.

Más, az EP-s SIDBasicben is előkerült két hiba az EP klubban, az egyik az LPT 313 sor volt, azt ott javítottam, a FILE-ban nem lett lecserélve a hosszú fájlnév ~ karaktere, ezeket javítom majd, és felmerült az igény, hogy a sebességet minden zene előtt tesztelje, még az bekerül.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #507 on: 2017.February.25. 21:17:36 »
Ez már működik, bár a minőség továbbra sem túl jó (talán a táblázatos D/A miatt sem?):
[ Guests cannot view attachments ]

Offline geco

  • EP addict
  • *
  • Posts: 7224
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #508 on: 2017.February.25. 21:20:44 »
Ez már működik, bár a minőség továbbra sem túl jó (talán a táblázatos D/A miatt sem?):
Szerintem nem a táblázatos D/A, nézz meg egy régebbi verziót ,ami külön regiszter írós, az se jobb szerintem, az 50Hz-es vezérlés torzít sokat szerintem, de ha gondolod, csinálok egy külön regiszter írós legfrissebb változatot is összehasonlításképp.
Mi volt a gond? az inicializálatlan D'?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #509 on: 2017.February.25. 21:23:00 »
Mi volt a gond? az inicializálatlan D'?

Igen.

Az 50 Hz-es megszakításon ebben a verzióban sikerült egy keveset gyorsítani, illetve a lejátszáson is 1 ciklust (most 9991 Hz-es). A kód egy részét csak akkor frissíti, ha változik a hullámforma, de ez csak akkor éri meg, ha legfeljebb egy csatornán változik, tehát nem biztos, hogy jó ötlet. Bár az ~1000 ciklus futásidőhöz képest egyik irányban sem jelent nagy eltérést.
« Last Edit: 2017.February.25. 21:34:20 by IstvanV »