Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #540 on: 2017.February.27. 15:48:59 »
Ezzel sztem sokat nyerhetnénk, nagyon jó ötlet.Erre gondoltam én is, igaz nem erre a direkt önmódosító kódosra, hanem az eredetit bemásolva mindenhová

A fenti kódrészlet csak példa, nem feltétlenül optimális megoldás.

Quote
a 7-es regiszterbe 3fh írása javít a minőségen?

Ezt egyelőre nem tudtam összehasonlítani, de hangosabb. :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #541 on: 2017.February.27. 16:00:50 »
A fenti kódrészlet csak példa, nem feltétlenül optimális megoldás.
Ahogy számolgatok, talán picit gyorsabb az LD (HL),xx, INC L .

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #542 on: 2017.February.27. 19:15:53 »
Jónak tűnik még Hikaru ötlete is a WOS fórumról, megszakítás helyett egy számláló használata. Erre a célra használható lehetne a még szabad E regiszter, vagy (valamivel nagyobb átalakítás után) a B. 10 kHz-es lejátszási frekvenciánál 200-ról kellene számolni 0-ig (illetve kb. 197-198 figyelembe venné az 1-1.5% lassulást is), tehát 8 bites regiszter megfelelő erre a célra. Viszont a sidSynth lassulna (DEC E = +4 ciklus, DJNZ = +3 ciklus), bár a dacTable B800h-ra helyezésével megtakarítható lenne egy LD A,8, helyette OUT (C),H választhatná a 8. AY regisztert.

A számláló a vezérlés több részre osztása (150 Hz és egyszerre csak egy csatorna) nélkül is gyorsabb lenne a megszakításnál, és a frekvencia sem lenne fix. Ezen kívül még megtakarítaná az IM 2-es táblázatot.

videoIRQ tiltása = -57 ciklus
EI törlése = -4 ciklus
jumpvl egyszerűbb módosítása = -10 ciklus
számláló újratöltése = +7 ciklus

Tehát 64 ciklus gyorsulás.
« Last Edit: 2017.February.27. 19:38:37 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #543 on: 2017.February.27. 19:43:35 »
Jónak tűnik még Hikaru ötlete is a WOS fórumról, megszakítás helyett egy számláló használata. Erre a célra használható lehetne a még szabad E regiszter, vagy (valamivel nagyobb átalakítás után) a B. 10 kHz-es lejátszási frekvenciánál 200-ról kellene számolni 0-ig (illetve kb. 197-198 figyelembe venné az 1-1.5% lassulást is), tehát 8 bites regiszter megfelelő erre a célra. Viszont a sidSynth lassulna (DEC E = +4 ciklus, DJNZ = +3 ciklus), bár a dacTable B800h-ra helyezésével megtakarítható lenne egy LD A,8, helyette OUT (C),H választhatná a 8. AY regisztert.

A számláló a vezérlés több részre osztása (150 Hz és egyszerre csak egy csatorna) nélkül is gyorsabb lenne a megszakításnál, és a frekvencia sem lenne fix. Ezen kívül még megtakarítaná az IM 2-es táblázatot.

videoIRQ tiltása = -57 ciklus
EI törlése = -4 ciklus
jumpvl egyszerűbb módosítása = -10 ciklus
számláló újratöltése = +7 ciklus

Tehát 64 ciklus gyorsulás.
Basszus, ha nem mondod Hikarut, akkor észre se veszem, 5 előtt olvastam, amit írt, csak a spoilert nem vettem észre.
Módosítom majd eszerint, előbb megcsinálom a délelőtti javaslatod, ha az sikerült, akkor nekiesek ennek.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #544 on: 2017.February.27. 19:54:27 »
A D/A résznél valójában mindegyik csatornát lehetne OUT (C),H utasításokkal választani az INC H-k miatt (B8h, B9h, BAh), ha a dacTable B800h kezdőcímre kerül. Így felszabadul a DE' regiszter, ami még hasznos lehet.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #545 on: 2017.February.27. 20:04:34 »
A D/A résznél valójában mindegyik csatornát lehetne OUT (C),H utasításokkal választani az INC H-k miatt (B8h, B9h, BAh), ha a dacTable B800h kezdőcímre kerül. Így felszabadul a DE' regiszter, ami még hasznos lehet.
Értem, fasza ötlet :), már át is tettem pár dolgot 4200h-ra előkészítve a b800h-ra tételt :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #546 on: 2017.February.27. 20:20:21 »
Az IM 2-es megszakítás hiánya megtakarít 257 byte-ot (illetve valamivel kevesebbet, mert a delaytbl felülírja az elejét), tehát valójában több a szabad hely, eseleg a dacTable elé is kerülhetne kód a lassú video szegmens helyett.

Szerk.: a Spectrumosoknak nem tetszik a turbósított magnó betöltő rutin, ezért annak a törlésével is szabadulhatna fel valamennyi hely. :)
« Last Edit: 2017.February.27. 20:25:34 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #547 on: 2017.February.27. 20:44:41 »
Az IM 2-es megszakítás hiánya megtakarít 257 byte-ot (illetve valamivel kevesebbet, mert a delaytbl felülírja az elejét), tehát valójában több a szabad hely, eseleg a dacTable elé is kerülhetne kód a lassú video szegmens helyett.
Igen, azt is beleszámítottam :) Azt akarom elérni, hogy az 5d00h töltési hossz megmaradjon :)
Szerk.: a Spectrumosoknak nem tetszik a turbósított magnó betöltő rutin, ezért annak a törlésével is szabadulhatna fel valamennyi hely. :)
Én csak egy ilyen hozzászólást láttam, pedig jó gyors lett a töltés, egyelőre én benthagyom, de látod, a speccysek másként gondolkoznak, nem szeretik a tömörített programot, és a gyorstöltőt se :D

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #548 on: 2017.February.27. 21:01:50 »
Úgy tűnik a módosításoknak köszönhetően az 5 raszter sorról lementünk 3-ra, és lehet csak bebeszélem, de mintha hallható is lenne a javulás.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #549 on: 2017.February.27. 21:27:10 »
Tényleg a TAP-ot akarják, szerintem legalább a lejátszóból lesz turbósított is.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #550 on: 2017.February.27. 21:37:22 »
Úgy tűnik a módosításoknak köszönhetően az 5 raszter sorról lementünk 3-ra, és lehet csak bebeszélem, de mintha hallható is lenne a javulás.

Ha jól számolom, kb. 140 ciklust gyorsult, és még tovább lehet javítani a számlálós megoldással.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #551 on: 2017.February.27. 21:39:11 »
Ha jól számolom, kb. 140 ciklust gyorsult, és még tovább lehet javítani a számlálós megoldással.
Az jön most, vagyis elkezdem :), de lehet csak szerdán fejezem be .
A ciklusos megoldásnak köszönhetően az SP-t se kell menteni sehol, ez gyorsít 60 ciklust,  a DE lett az IX helyett a számlálója, hogy hány csatornán van négyszögjel, így felszabadult a PUSH , POP IX, és igaz, csak 7 ciklus gyorulás, de észrevettem ,hogy a 7dh portra 00h-t írok, és rögtön mögötte van az IN A,(0FEh), így töröltem az LD A,7Fh-t. A teszt van hátra, és a szétbontás, de ez okozhat egy kis lassulást, mert a DE' regisztert kellene használni, plusz még vezérelni, hogy mikor hová ugorjunk, lehet mégse éri meg?
« Last Edit: 2017.February.27. 22:40:20 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #552 on: 2017.February.27. 22:43:10 »
Vagy mi lenne, ha a vezérlő rutinból hívnánk meg 3x vagy akár többször JP-vel, és DE'-ben lenne a visszatérési cím?

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: SID lejátszó
« Reply #553 on: 2017.February.27. 22:49:59 »
akkor ep-n is gyorsabb lenne interrupt nélkül, nem?
persze nem lenne elég kompatibilis :) haha ez lassítja a pc-ket is :)
Vigyázat! Szektás vagyok! :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #554 on: 2017.February.27. 23:59:00 »
akkor ep-n is gyorsabb lenne interrupt nélkül, nem?
persze nem lenne elég kompatibilis :) haha ez lassítja a pc-ket is :)
gyorsabb lenne, viszont nem menne az on the fly kicsomagolas, amúgy meg interrupttal is menne 11 khz-en.