Welcome, Guest. Please login or register.


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

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #585 on: 2017.March.02. 10:46:28 »
A fent említett módosítások már elkészültek, csak még tesztelem. Ezen kívül még megpróbálom egy forrásba építeni a TAP és TZX verziót feltételes fordítással.
Oké :) Én mókolással csináltam a tapot, elkészítettem a TZX-et, és a Basic adatblokkot átmásoltam TAP-ba, majd beszúrtam mögé a kódot broken data blokként :D
Ha a sidSynthPacked is átkerül a 4200h-s területre, akkor ez könnyen megoldható. Mást talán nem is kellene oda másolni.
Bőven, annyi, hogy át tettem a 4400h-ra a decompresstable-t, azt kell még elmozgatni 4600h-ra, vagy 4700h-ra, és a tap verzióban a töltési hosszat átállítani 5f10h-ra

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #586 on: 2017.March.02. 11:49:01 »
Hm elszúrtam a lapozó regisztert, pedig több programban 7dh-t használtak, és a gyors 0B8h-s ay regiszter választás nem működik mindenhol, ezt írta Hikaru a WOS-on, de gondolom láttad te is :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #587 on: 2017.March.02. 11:51:19 »
Hm elszúrtam a lapozó regisztert, pedig több programban 7dh-t használtak, és a gyors 0B8h-s ay regiszter választás nem működik mindenhol, ezt írta Hikaru a WOS-on, de gondolom láttad te is :)

Az AY regiszter valójában most már 88h, az sem megbízható? Szerk.: úgy látom, az sem. :( Bár nem tudom miért, az AY címzése csak 4 bites. Mindenesetre átalakítom, bár így valamivel rosszabb lesz a minőség (7 ciklus lassulás a hangminta lejátszásnál, és még 10 ciklus a vezérlésnél). Ha a C0FDh sem jó, akkor lehet, hogy a táblázatos D/A helyett érdemesebb lenne a 3 külön 4 bites csatornát visszaállítani.

A lapozási hiba javításához csak az összes OUT (7DH),A-t kell FDh-ra cserélni?
« Last Edit: 2017.March.02. 11:56:08 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #588 on: 2017.March.02. 12:02:36 »
Egyelőre cseréltem az OUT (7DH),A-kat és elvégeztem a korábban említett módosításokat:
[ Guests cannot view attachments ]
A TAP verziót még nem teszteltem.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #589 on: 2017.March.02. 12:24:25 »
YM kompatibilis változat:
[ Guests cannot view attachments ]

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #590 on: 2017.March.02. 13:11:43 »
A fenti csomagok egyébként nagyjából már késznek (vagy legalábbis használhatónak) tűnnek, eltekintve az esetleges hibáktól vagy további optimalizálási lehetőségektől. A WOS-on érdemes lenne említeni a "kompatibilitási" verziót, mert úgy látszik, a Spectrum emulátorok többsége YM-et emulál. :oops:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #591 on: 2017.March.02. 13:21:42 »
A fenti csomagok egyébként nagyjából már késznek (vagy legalábbis használhatónak) tűnnek, eltekintve az esetleges hibáktól vagy további optimalizálási lehetőségektől. A WOS-on érdemes lenne említeni a "kompatibilitási" verziót, mert úgy látszik, a Spectrum emulátorok többsége YM-et emulál. :oops:
Nagyon gyors vagy, mindent megcsináltál, amit a WOS-on mondtak, meg ami ma, tegnap itt előkerült :)
Tesztelni majd otthon tudom, a forrásokkal szemezgettem :)
Érdemes mind a kettő verziót megemlíteni? Mondjuk talán jobb az AY-s, mert az picivel gyorsabb, tehát érdemes lehet, viszont sztem addig nem kéne a linket is megosztani ott, amíg nincs benne a TAP verzió a csomagban, nem?

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #592 on: 2017.March.02. 13:28:43 »
Írtam a WOS-ra, a tapo-t meg megpróbálom most megcsinálni.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #593 on: 2017.March.02. 13:36:00 »
Érdemes mind a kettő verziót megemlíteni? Mondjuk talán jobb az AY-s, mert az picivel gyorsabb, tehát érdemes lehet

Az AY-s 2 százalékkal gyorsabb, a lejátszás és a vezérlés is, de ha működik az adott gépen, akkor ez az előny is több a semminél. :) Bár csak ezért két külön verziót fejleszteni talán nem éri meg. Esetleg lehetne feltételesen fordítani, ez a különbség:
Code: Diff
  1. diff -rdNU4 ay/sidbintSP.s ym/sidbintSP.s
  2. --- ay/sidbintSP.s      2017-03-02 13:04:06.000000000 +0100
  3. +++ ym/sidbintSP.s      2017-03-02 13:28:26.000000000 +0100
  4. @@ -8,14 +8,14 @@
  5.  convertC64Img   equ     4700h
  6.  input_buf       equ     5b00h
  7.  reoradd         equ     input_buf+300h
  8.  stack           equ     0c000h
  9. -; sidSynth loop time = 338 cycles
  10. -; sample rate = fSR = 17734475 / 5 / 338 = 10494 Hz
  11. -; frequency multiplier = 512 * (17734475 / 18 / 256) / fSR = 188
  12. -FREQ_MULT       equ     188
  13. +; sidSynth loop time = 345 cycles
  14. +; sample rate = fSR = 17734475 / 5 / 345 = 10281 Hz
  15. +; frequency multiplier = 512 * (17734475 / 18 / 256) / fSR = 192
  16. +FREQ_MULT       equ     192
  17.  ; frame duration should be 17734475 / 5 / (17734475 / 18 / 63 / 312) = 70762 Z80 cycles
  18. -SMPS_PER_FRAME  equ     208
  19. +SMPS_PER_FRAME  equ     204
  20.  
  21.          phase   start
  22.  
  23.  startpr di
  24. @@ -759,14 +759,14 @@
  25.          jr      c,error
  26.  ; fIRQ = (17734475 / 18 / 63 / 312) * (fM64 / 50)
  27.  ; fZ80 = 17734475 / 5
  28.  ; Z80 cycles per frame = fZ80 / fIRQ
  29. -; Z80 cycles per sample = 338
  30. -; IRQ cost = ~480 cycles
  31. -; N = (fZ80 / fIRQ - 480) / 338 = 10467.69 / fM64 - 1.42
  32. +; Z80 cycles per sample = 345
  33. +; IRQ cost = ~490 cycles
  34. +; N = (fZ80 / fIRQ - 490) / 345 = 10255.304 / fM64 - 1.42
  35.          ld      b, a
  36.          ld      de, 1
  37. -        ld      hl, 0e3b1h              ; 10467.69 * 256 = 28E3B1h
  38. +        ld      hl, 0f4eh               ; 10255.304 * 256 = 280F4Eh
  39.          ld      a, 28h
  40.  spdlp1  add     hl, hl
  41.          rla
  42.          sub     b
  43. diff -rdNU4 ay/sidsynth.s ym/sidsynth.s
  44. --- ay/sidsynth.s       2017-03-02 13:03:36.000000000 +0100
  45. +++ ym/sidsynth.s       2017-03-02 13:12:52.000000000 +0100
  46. @@ -61,9 +61,9 @@
  47.          ld      (.l4 + 1), hl           ; freq2
  48.          pop     hl
  49.          ld      (.l7 + 1), hl           ; freq3
  50.          ld      bc, 0c0fdh
  51. -;       ld      d, high dacTable
  52. +        ld      de, 090ah
  53.          exx
  54.          xor     a
  55.          out     (0fdh), a
  56.  
  57. @@ -118,19 +118,19 @@
  58.      endif
  59.          add     a, c
  60.          exx
  61.          ld      l, a
  62. -;       ld      h, d
  63.          ld      h, high dacTable
  64. -        out     (c), h
  65. +        ld      a, 8
  66. +        out     (c), a
  67.          outi
  68.          inc     b
  69.          inc     h
  70. -        out     (c), h
  71. +        out     (c), d
  72.          outd
  73.          inc     b
  74.          inc     h
  75. -        out     (c), h
  76. +        out     (c), e
  77.          outi
  78.          inc     b
  79.          exx
  80.          djnz    .sidSynth

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #594 on: 2017.March.02. 13:41:28 »
2% is több, mint a semmi, és lehet jelentkezik hangminőségben is :)
Engem nem zavar a külön fordítás, és úgy érzem a mostani verzió már a kész verzió :)
Az UnrealSpeccy-n, és a RealSpec-en működik :) , no meg az EP128emun :D , én nem is használok mást, hacsak nem TRD-s fájlokról van szó, meg is voltam lőve a Wolf2004-nél, mert amiatt az UnrealSpeccyt kellett használnom :ds_icon_cheesygrin:

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID lejátszó
« Reply #595 on: 2017.March.02. 14:09:39 »
én nem is használok mást, hacsak nem TRD-s fájlokról van szó, meg is voltam lőve a Wolf2004-nél, mert amiatt az UnrealSpeccyt kellett használnom :ds_icon_cheesygrin:
Pedig írtam már LUA scriptet erre a problémára :-)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #596 on: 2017.March.02. 14:34:36 »
Ez ugyan csak minimális optimalizálás amiért nem érdemes új verziót kiadni, de a C64 képet konvertáló rutint valójában nem kell 4700h címre másolni, ahol még lassabb is. Meg lehet oldani, hogy az eredeti helyén (E700h) fusson:

Code: Diff
  1. diff -rdNU4 ym/cod47scr.s ym2/cod47scr.s
  2. --- ym/cod47scr.s       2017-03-02 12:00:12.000000000 +0100
  3. +++ ym2/cod47scr.s      2017-03-02 15:54:29.097551234 +0100
  4. @@ -1,6 +1,6 @@
  5.  
  6. -        org     4700h
  7. +        org     0e700h
  8.  
  9.  convertC64Img:
  10.          ld      hl, 0f800h
  11.          ld      de, 5800h
  12. @@ -36,7 +36,7 @@
  13.          and     0f8h
  14.          ld      d, a
  15.          jp      .l1
  16.  
  17. -        block   4800h - $, 00h
  18. +        block   0e800h - $, 00h
  19.          incbin  "sidc64.scr"
  20.  
  21. diff -rdNU4 ym/sidbintSP.s ym2/sidbintSP.s
  22. --- ym/sidbintSP.s      2017-03-02 13:28:26.000000000 +0100
  23. +++ ym2/sidbintSP.s     2017-03-02 15:53:55.685549793 +0100
  24. @@ -4,9 +4,9 @@
  25.  decodeTablesBegin   equ start+16
  26.  triangletable   equ     8b00h
  27.  sawtoothtable   equ     triangletable+0f00h
  28.  noisetable      equ     triangletable+1e00h
  29. -convertC64Img   equ     4700h
  30. +convertC64Img   equ     0e700h
  31.  input_buf       equ     5b00h
  32.  reoradd         equ     input_buf+300h
  33.  stack           equ     0c000h
  34.  ; sidSynth loop time = 345 cycles
  35. @@ -21,9 +21,9 @@
  36.  startpr di
  37.          ld      hl,startp2
  38.          push    hl
  39.          ld      ix,screen+1
  40. -        ld      de,convertC64Img+0a000h
  41. +        ld      de,convertC64Img
  42.          ld      a,80h
  43.          jp      decompressDataBlock
  44.  
  45.          db      "Töki,Drazsé,Gombóc,Gyurmi,Bogyó,Lizi,Maszat,Gombóc.."
  46. @@ -941,13 +941,9 @@
  47.          dephase
  48.  
  49.  screen  incbin  "cod47scr.bin"
  50.  
  51. -startp2 ld      hl,convertC64Img+0a000h
  52. -        ld      de,convertC64Img
  53. -        ld      bc,100h
  54. -        ldir
  55. -        call    convertC64Img
  56. +startp2 call    convertC64Img
  57.          ld      hl,cod4200
  58.          ld      de,4200h
  59.          ld      bc,c4200ln
  60.          ldir
« Last Edit: 2017.March.02. 14:49:52 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #597 on: 2017.March.02. 14:43:15 »
Pedig írtam már LUA scriptet erre a problémára :-)
Óóóó, ha ezt tudom, olyan régen volt, hogy addig vissza se nyúlik a memóriám :lol:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #598 on: 2017.March.02. 14:49:25 »
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.
« Last Edit: 2017.March.02. 22:28:17 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #599 on: 2017.March.02. 14:52:47 »
Ez ugyan csak minimális optimalizálás amiért nem érdemes új verziót kiadni, de a C64 képet konvertáló rutint valójában nem kell 4700h címre másolni, ahol még lassabb is. Meg lehet oldani, hogy az eredeti helyén (E700h) fusson:

Azt a pár pikoszekundumot már észre se veszi senki, a súlyos konvertáló másodpercek mellett ;)