Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #600 on: 2017.March.02. 15:02:13 »
Itt a csomag újból, benne a TZX fájlok, TAP-ok, és az új forrás, így jó lesz?
Ha igen, ezt linkelem be a WOS-on.

Egyelőre csak a TAP/YM verziót néztem és a 150 Hz-es Paperboy-t, ami jónak látszik, de a következő file töltése lefagy.

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #601 on: 2017.March.02. 15:05:44 »
Egyelőre csak a TAP/YM verziót néztem és a 150 Hz-es Paperboy-t, ami jónak látszik, de a következő file töltése lefagy.
Hm, ilyet tapasztaltam én is tegnap, de minden verziónál csak egyszer, és én is egyszer a paperboy után, aztán betöltöttem még vagy 3x, és semmi se történt, ez vajon miért lehet? Én csak a megszakításra tudok gondolni, egész program alatt tiltott, a kis genya ROM loader engedélyezi visszatéréskor, és random a fagyi.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #602 on: 2017.March.02. 15:09:03 »
Az 556H rutin fagy le, talán a ROM nem szereti, ha felülíródik az 5B00-5Cxx terület? Ezért lehet az, hogy a TZX működik. Talán elég lenne csak néhány fontos rendszerváltozót (pl. 5B5Ch = 7FFDh port) beállítani.
« Last Edit: 2017.March.02. 15:14:01 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #603 on: 2017.March.02. 15:20:40 »
Itt kellene a call tapeload elé egy ld (5b5ch), a:
Code: ZiLOG Z80 Assembler
  1.     if USE_ROM_LOADER == 0
  2.         ld      hl, input_buf   ; M64 input file
  3.         ld      de, 364dh
  4.         call    readBlock
  5.     else
  6.         ld      a,10h
  7.         out     (0fdh),a
  8.         call    tapeload
  9.     endif
De az is probléma lehet még, ha a ROM esetleg felülírja a már betöltött adatot.

Szerk.: az működhetne, ha csak a TAP verzióban (USE_ROM_LOADER != 0) átmenetileg tiltott lenne a megszakítás IM 2 és egyszerű RET utasításól álló IRQ rutin használatával? Az IM 2-es táblázatnak van hely például a 4500h-4600h területen.

Szerk. 2: egyéb változókkal is problémák vannak még, például 5C3Dh-n a veremmutató található.
« Last Edit: 2017.March.02. 15:39:16 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #604 on: 2017.March.02. 15:38:03 »
Itt kellene a call tapeload elé egy ld (5b5ch), a:
Code: ZiLOG Z80 Assembler
  1.     if USE_ROM_LOADER == 0
  2.         ld      hl, input_buf   ; M64 input file
  3.         ld      de, 364dh
  4.         call    readBlock
  5.     else
  6.         ld      a,10h
  7.         out     (0fdh),a
  8.         call    tapeload
  9.     endif
De az is probléma lehet még, ha a ROM esetleg felülírja a már betöltött adatot.

Szerk.: az működhetne, ha csak a TAP verzióban (USE_ROM_LOADER != 0) átmenetileg tiltott lenne a megszakítás IM 2 és egyszerű RET utasításól álló IRQ rutin használatával? Az IM 2-es táblázatnak van hely például a 4500h-4600h területen.
Nekem az jutott eszembe, hogy lehet az interrupt rutin száll el, mert felülírtuk a rendszerváltozós területet, lehet az IM 2-es megoldás lesz a legjobb, meg ami eszembe jutott, megnézni a ROM rutint, hogy meg tudom-e hívni úgy, hogy ne legyen engedélyezett interrupt visszatéréskor.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #605 on: 2017.March.02. 15:43:58 »
Az RST 8 rutin 5C3Dh címről olvassa a veremmutató értékét, ez is hibát okoz.

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #606 on: 2017.March.02. 15:44:56 »
Úgy látom, meg tudom hívni úgy, hogy ne legyen a vége EI. 0562-t kell meghívni, es a meghívás előtt pár utasítást kiadni, sztem ezt választom, így kihagyjuk az RST 08-at, ami ha jól tudom a hibakezelés.

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #607 on: 2017.March.02. 16:17:03 »
Jó lesz, már csak a space megnyomása okoz problémát, ezt kell lekezelni.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #608 on: 2017.March.02. 16:47:08 »
Az AY-YM verzióknál még azt kellene megnézni, hogy a D/A nem igényel-e különböző táblázatot a legjobb minőséghez, lehet, hogy ugyanaz a hangerő érték eltérő szintet eredményez a két IC-nél.

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #609 on: 2017.March.02. 18:33:22 »
Az AY-YM verzióknál még azt kellene megnézni, hogy a D/A nem igényel-e különböző táblázatot a legjobb minőséghez, lehet, hogy ugyanaz a hangerő érték eltérő szintet eredményez a két IC-nél.
Mikre nem gondolsz :)
Megpróbálok én is keresgélni.
Elméletileg a tap problémát orvosoltam, most nem akadt ki egyszer sem a program, a lenti csatolmányt lecseréltem.

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #610 on: 2017.March.02. 18:51:45 »
Úgy látom ugyanazok az értékek vannak, csak az YM dupla olyan felbontású, a leírás alapján 32 lépcsőben éri el a maximumot az AY 16 lépcsőjével szemben, de minden 2. érték ugyanaz az YM-en, mint az AY-n, az YM2149-et néztem, az YM2149F-re még nem találtam doksit

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #611 on: 2017.March.02. 21:28:29 »
Feltettem tesztelésre az új verziót a WOS-ra

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #612 on: 2017.March.02. 21:35:49 »
Úgy látom ugyanazok az értékek vannak, csak az YM dupla olyan felbontású, a leírás alapján 32 lépcsőben éri el a maximumot az AY 16 lépcsőjével szemben, de minden 2. érték ugyanaz az YM-en, mint az AY-n, az YM2149-et néztem, az YM2149F-re még nem találtam doksit

Megnéztem egy pár emulátor forráskódját, és van eltérés, de az emulátorok között is. :) Az ay_da_opt.cpp (és az ep128emu) ugyanazt a táblázatot használja, mint a FUSE. Lehet, hogy valamelyik másik emulátor pontosabb, ezt talán a WOS fórumon lenne érdemes kérdezni. Azonban gyártási pontatlanságok miatt is lehetnek eltérések, ha az egyes emulátorok valódi gépről mért értékeket használnak is, azok bizonyos mértékben különbözőek minden gépen.

Offline geco

  • EP addict
  • *
  • Posts: 7113
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #613 on: 2017.March.02. 21:44:33 »
Megnéztem egy pár emulátor forráskódját, és van eltérés, de az emulátorok között is. :)
:lol:
Az ay_da_opt.cpp (és az ep128emu) ugyanazt a táblázatot használja, mint a FUSE. Lehet, hogy valamelyik másik emulátor pontosabb, ezt talán a WOS fórumon lenne érdemes kérdezni. Azonban gyártási pontatlanságok miatt is lehetnek eltérések, ha az egyes emulátorok valódi gépről mért értékeket használnak is, azok bizonyos mértékben különbözőek minden gépen.
Megkérdezzem?
Én csak a két chip envelope grafikonját néztem (mert csak azt találtam), ott nem láttam eltérést.
Toltam egy kis reklámot az EP128emunak is, hátha a Speccysek is megszeretik :D
« Last Edit: 2017.March.02. 22:00:37 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #614 on: 2017.March.03. 11:38:20 »
Úgy látszik, az "AY" mód valójában AY-n sem megbízható, a WOS-on mutatott módszer az IC típusának a felismerésére csak a lebegő adatbusz miatt működik, és nem azért mert nem teljes a címdekódolás.

A TAP verziónál talán az is megoldás lehetne, ha a program induláskor mentené az 5B00-5CFFh területet valahol a video memória elején (pl. 4500-46FFh), és utána a tapeload rutin egyszerűen visszamásolná. Így "szabványosabb" módon lehetne használni a ROM rutinokat, ami esetleg javíthatná a kompatibilitást.