Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #750 on: 2017.April.13. 16:30:05 »
Most néztem az LPT-t, elméletileg 100 raszter sorra mehet a VINT bit, 48 a volume kijelző alatt az Enterprise feliratig, és 52 a reload bitig, mivel nem akarunk interruptot, csak a figyelni a VINT beállítást, így pakolhatunk egymás utáni LPB-kbe VINT bitet, működnie kell, nem?

Nem probléma, ha több egymást követő LPB-ben van beállítva a VINT bit, az is folyamatosnak számít, a NICK egyébként is minden sorban újraolvassa. :) A pozíció és hosszúság választásánál fontos, hogy ne villoghasson a raszter. A VINT lefutó élét egyszerűbb figyelni, akkor törölhető a CPL utasítás.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #751 on: 2017.April.13. 17:37:44 »
Nem probléma, ha több egymást követő LPB-ben van beállítva a VINT bit, az is folyamatosnak számít, a NICK egyébként is minden sorban újraolvassa. :) A pozíció és hosszúság választásánál fontos, hogy ne villoghasson a raszter. A VINT lefutó élét egyszerűbb figyelni, akkor törölhető a CPL utasítás.
azért is tettem a video irq elejére, amúgy lehet a mostani teszt verzióban se villogna, ha elől lenne :-)  A lefuto el figyelese jó ötlet, ha beallitom fixen az egész aktív képre a vint bitet, csak az otolso 100 sorra nem az jó megoldás is rá, nem ?
Viszont ezzel a megoldással bonyolultabb, legalábbis annak érzem, a két ciklusvaltozo szamolasi értéke, mert mind a kettőnek változnia kell különböző vezerlesi frekvenciaknal, hogy a lehető legpontosabbak legyünk.

szerk.: vagyis jó lenne a második ciklus értékét is valtozova tenni a vezerlesi  frekvenciatől függően, 100Hz fölött 2 és 200 Hz és afölött, törölni a második ciklust,ha másképp nem megy, egy ugro utasítással, de szerintem simán lehet kodmodositassal.
« Last Edit: 2017.April.13. 17:53:51 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #752 on: 2017.April.13. 18:03:55 »
Viszont ezzel a megoldással bonyolultabb, legalábbis annak érzem, a két ciklusvaltozo szamolasi értéke, mert mind a kettőnek változnia kell különböző vezerlesi frekvenciaknal, hogy a lehető legpontosabbak legyünk.

Ez eddig is így lett volna, de most rosszabb a pontosság vagy nagyobb tartományban kell keresni. Például:

12500, 50 Hz: 12500 / 50 / 5 = 250 / 5 = 50
12500, 60 Hz: 12500 / 52 / 4 = 240.4 / 4 = 60.1
11905, 100 Hz: 11905 / 60 / 2 = 198.4 / 2 = 99.2
11364, 150 Hz: 11364 / 40 / 2 = 284.1 / 2 = 142
11364, 200 Hz: 11364 / 57 / 1 = 199.4 / 1 = 199.4
« Last Edit: 2017.April.13. 18:36:18 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #753 on: 2017.April.13. 18:23:48 »
A raszter megjelenítésén is lehetne módosítani, mivel annak a villogása okoz problémát, a teljes háttér mentése és visszaállítása helyett például csak egy vagy két sorban (előtte/utána az iránytól függően) visszaállítani az eredeti háttérszínt, amit lehetne fixen az egyik nem használt paletta színben is tárolni. Ez rövidebb ideig fut és kevésbé villog ha nem jó az időzítés.

A kivezérlésjelzőnél már említettem az egy LPB-s megoldást, ez ugyan nem sok időt takarít meg, de jobb a semminél.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #754 on: 2017.April.13. 18:48:11 »
A raszter megjelenítésén is lehetne módosítani, mivel annak a villogása okoz problémát, a teljes háttér mentése és visszaállítása helyett például csak egy vagy két sorban (előtte/utána az iránytól függően) visszaállítani az eredeti háttérszínt, amit lehetne fixen az egyik nem használt paletta színben is tárolni. Ez rövidebb ideig fut és kevésbé villog ha nem jó az időzítés.

A kivezérlésjelzőnél már említettem az egy LPB-s megoldást, ez ugyan nem sok időt takarít meg, de jobb a semminél.
Nagyon jó ötlet az előtte/mögötte szín visszaallitas, meg is csinálom majd holnap, ma sörözős, zsibbados nap van :-D
A kivezerlo egy LPB-s megvalósítását megnézem, már nem emlékszem pontosan miért csináltam külön LPB-sre, lehet helysporolas miatt, de az új megoldással az LPT-n is lehet spórolni, úgyhogy sztem menni fog.
Az 5,4,2,2,1 szimpi, vagy megnézem mi sül ki a 4,4,2,2,1-gyel kerekitessel.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #755 on: 2017.April.14. 11:51:07 »
Osztó kereső rutin:
[ Guests cannot view attachments ]    (javított verzió)

Lehet, hogy jobban is meg lehetett volna írni, de a fenti példáknál ugyanazt az eredményt adja mint az eredetileg használt Python script.

Szerk.: a 150 Hz-es példa pontosabb lehetne 11364 / 38 / 2 osztással (142 helyett 149.5 Hz).

Szerk. 2: a keresés pontossága javítható a bemeneti paramétereket (HL és DE) balra léptetve amíg a HL felső bitje nem 0.
« Last Edit: 2017.April.14. 18:34:35 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #756 on: 2017.April.14. 20:17:37 »
Van egy kis gond, előre tettem a videó rutint (gyorsított mindennel), és még így is fagy 12,5KHz-en a Last Ninja 2 12-es számában, előbb jön egy hangvezérlés "megszakítás", és mikor már jól televágta a vermet az adatokkal, és elkezdi feldolgozni, jön egy videó "megszakítás", és ez már rossz helyre tér vissza. Vygy  a lapozás okozza a gondot, vagy a verem, mára elfáradtam, szerintem majd holnap nézegetem még.
Mit szólsz a gagyi megoldásomhoz?
Frekvenciának megfelelően beállítja a második ciklus értékét, majd ez az érték x (Dave osztó+1) x vezérlési frekvencia = az osztó
500000 / osztó / 2 , ha van carry, akkor felfelé kerekítés adja meg az első ciklus értékét.

Szerk.:
A lapozással van gond, lehet a vezérlő rutin elején ki kéne kapcsolni a visszalapozást, és a végén meg bekapcsolni?

Szerk. 2:
Hú de nehezen jöttem rá a megoldásra, az aktuális 2. lapot el kell menteni a verembe :ds_icon_cheesygrin: , probléma megoldva, csatoltam a forrást is, még a vezérlési sebességektől függő beállításokat módosítani kell a gagyi beállításomhoz is, pláne ha beépül a freqdiv.s.

Csatolmányok törölve.
« Last Edit: 2017.April.18. 20:13:59 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #757 on: 2017.April.15. 11:14:51 »
Van egy kis gond, előre tettem a videó rutint (gyorsított mindennel)

Talán célszerűbb lenne először a vezérlést futtatni, akkor a video megszakítás nem zavarja a lejátszás időzítését, bár nem tudom, ez hallható különbséget jelent-e. A lenti módosítás ezt próbálja megoldani, de nem támogatja a második osztás és kijelzés nélküli speciális esetet. Viszont csak 50 Hz-es frekvencián figyeli a billentyűzetet, és a vezérlésen gyorsít egy keveset.

Quote
Hú de nehezen jöttem rá a megoldásra, az aktuális 2. lapot el kell menteni a verembe :ds_icon_cheesygrin: , probléma megoldva, csatoltam a forrást

Elvileg a 3. lap is problémát okozhatna, de ilyen eset az időzítés miatt talán nem fordulhat elő.

Quote
is, még a vezérlési sebességektől függő beállításokat módosítani kell a gagyi beállításomhoz is, pláne ha beépül a freqdiv.s.

Ennek az az előnye lenne, hogy tetszőleges frekvencián futhatna, és nem csak 50 Hz többszörösein fix osztókkal.

Ezeket a változtatásokat nem tudtam tesztelni, mert hiányzik a kép:
Code: Diff
  1. @@ -1887,12 +1887,12 @@
  2.  videoIRQHandler
  3.          push    bc
  4.          push    de
  5.          push    hl
  6. +        jp      nz,display
  7.  cyc2val ld      a,05h
  8.  cyc2off ld      (sidSynth.l23+1),a
  9. -dispon  jp      nz,displayonly
  10. -        call    c,display
  11. +        push    af
  12.  siddata ld      hl,0000h
  13.          inc     hl
  14.  ;        ld      (siddata+1),hl
  15.          ld      a,l
  16. @@ -1962,43 +1962,40 @@
  17.          ld      d,high (freqmulttable + 256)
  18.          ld      a,(de)
  19.          scf
  20.          adc     a,(hl)
  21. -        ld      e,a
  22.          inc     h
  23. -        ld      a,00h
  24. -        adc     a,(hl)
  25. -        ld      l,e
  26. +        ld      h, (hl)
  27. +        jr      nc, .l1
  28. +        inc     h
  29. +.l1:    srl     h
  30.          rra
  31. -        ld      h,a
  32. -        rr      l
  33. +        ld      l, a
  34.          pop     bc              ;b pulse waveform, c b7 ring mod, b6-b5 waveforms, b4-b0 volume (00h triangle, 20 sawtooth, 40h pulse, 60h noise)
  35.          ld      a,c
  36.          and     1fh
  37.          ld      (v1vol+1),a
  38. -        ld      d,b
  39. -;        and     80h
  40. -;        ld      e,a
  41. -        ld      b,high volumeConvTable
  42. -        ld      a,(bc)
  43. -        inc     b
  44. +        ld      e, c
  45. +        inc     d               ; D = high volumeConvTable
  46. +        ld      a,(de)
  47. +        inc     d               ; D = high ringmodtable
  48.          rra
  49.          jr      c,pulse1
  50.          ld      (otherw+2),a    ;triangle sawtooth noise
  51. -        ld      a,(bc)          ;xor a/and d
  52. +        ld      a,(de)          ;xor a/and d
  53.          di  
  54.          ld      (sidSynth.l1+1),hl
  55.          ld      hl,otherw
  56.          jp      wavtab1
  57.  pulse1  rrca                            ; * 8-bit d/a: add a, a (87h)
  58.          ld      (pulsevl+1),a   ;volume value
  59. -        ld      a,d
  60. +        ld      a,b
  61.          ld      (pulsew+1),a    ;pwm
  62. -        ld      a,(bc)          ;xor a/and d
  63. +        ld      a,(de)          ;xor a/and d
  64.          di  
  65.          ld      (sidSynth.l1+1),hl
  66.          ld      hl,pulsew
  67. -wavtab1 ;ld      a,e             ;ring mod
  68. +wavtab1 ;ld      a,(de)          ;ring mod
  69.          ld      (sidSynth.l2),a
  70.          ld      de,sidSynth.l3
  71.          ldi
  72.          ldi
  73. @@ -2040,43 +2037,40 @@
  74.          ld      d,high (freqmulttable + 256)
  75.          ld      a,(de)
  76.          scf
  77.          adc     a,(hl)
  78. -        ld      e,a
  79.          inc     h
  80. -        ld      a,00h
  81. -        adc     a,(hl)
  82. -        ld      l,e
  83. +        ld      h, (hl)
  84. +        jr      nc, .l1
  85. +        inc     h
  86. +.l1:    srl     h
  87.          rra
  88. -        ld      h,a
  89. -        rr      l
  90. +        ld      l, a
  91.          pop     bc              ;b pulse waveform, c b7 ring mod, b6-b5 waveforms, b4-b0 volume (00h triangle, 20 sawtooth, 40h pulse, 60h noise)
  92.          ld      a,c
  93.          and     1fh
  94.          ld      (v2vol+1),a
  95. -        ld      d,b
  96. -;        and     80h
  97. -;        ld      e,a
  98. -        ld      b,high volumeConvTable
  99. -        ld      a,(bc)
  100. -        inc     b
  101. +        ld      e, c
  102. +        inc     d               ; D = high volumeConvTable
  103. +        ld      a,(de)
  104. +        inc     d               ; D = high ringmodtable
  105.          rra
  106.          jr      c,pulse2
  107.          ld      (otherw+2),a    ;triangle sawtooth noise
  108. -        ld      a,(bc)          ;xor a/and d
  109. +        ld      a,(de)          ;xor a/and d
  110.          di  
  111.          ld      (sidSynth.l5+1),hl
  112.          ld      hl,otherw
  113.          jp      wavtab2
  114.  pulse2  rrca                            ; * 8-bit d/a: add a, a (87h)
  115.          ld      (pulsevl+1),a   ;volume value
  116. -        ld      a,d
  117. +        ld      a,b
  118.          ld      (pulsew+1),a    ;pwm
  119. -        ld      a,(bc)          ;xor a/and d
  120. +        ld      a,(de)          ;xor a/and d
  121.          di  
  122.          ld      (sidSynth.l5+1),hl
  123.          ld      hl,pulsew
  124. -wavtab2 ;ld      a,e             ;ring mod
  125. +wavtab2 ;ld      a,(de)          ;ring mod
  126.          ld      (sidSynth.l6),a
  127.          ld      de,sidSynth.l7
  128.          ldi
  129.          ldi
  130. @@ -2117,43 +2111,40 @@
  131.          ld      d,high (freqmulttable + 256)
  132.          ld      a,(de)
  133.          scf
  134.          adc     a,(hl)
  135. -        ld      e,a
  136.          inc     h
  137. -        ld      a,00h
  138. -        adc     a,(hl)
  139. -        ld      l,e
  140. +        ld      h, (hl)
  141. +        jr      nc, .l1
  142. +        inc     h
  143. +.l1:    srl     h
  144.          rra
  145. -        ld      h,a
  146. -        rr      l
  147. +        ld      l, a
  148.          pop     bc              ;b pulse waveform, c b7 ring mod, b6-b5 waveforms, b4-b0 volume (00h triangle, 20 sawtooth, 40h pulse, 60h noise)
  149.          ld      a,c
  150.          and     1fh
  151.          ld      (v3vol+1),a
  152. -        ld      d,b
  153. -;        and     80h
  154. -;        ld      e,a
  155. -        ld      b,high volumeConvTable
  156. -        ld      a,(bc)
  157. -        inc     b
  158. +        ld      e, c
  159. +        inc     d               ; D = high volumeConvTable
  160. +        ld      a,(de)
  161. +        inc     d               ; D = high ringmodtable
  162.          rra
  163.          jr      c,pulse3
  164.          ld      (otherw+2),a    ;triangle sawtooth noise
  165. -        ld      a,(bc)          ;xor a/and d
  166. +        ld      a,(de)          ;xor a/and d
  167.          di  
  168.          ld      (sidSynth.l9+1),hl
  169.          ld      hl,otherw
  170.          jp      wavtab3
  171.  pulse3  rrca                            ; * 8-bit d/a: add a, a (87h)
  172.          ld      (pulsevl+1),a   ;volume value
  173. -        ld      a,d
  174. +        ld      a,b
  175.          ld      (pulsew+1),a    ;pwm
  176. -        ld      a,(bc)          ;xor a/and d
  177. +        ld      a,(de)          ;xor a/and d
  178.          di  
  179.          ld      (sidSynth.l9+1),hl
  180.          ld      hl,pulsew
  181. -wavtab3 ;ld      a,e             ;ring mod
  182. +wavtab3 ;ld      a,(de)          ;ring mod
  183.          ld      (sidSynth.l10),a
  184.          ld      de,sidSynth.l11
  185.          ldi
  186.          ldi
  187. @@ -2190,8 +2181,88 @@
  188.  ;        ldi
  189.  
  190.  ;        ei
  191.  
  192. +        pop     af
  193. +        jp      nc, nokey
  194. +
  195. +display:
  196. +vidp1   ld      a,0ffh
  197. +        out     (0b3h),a
  198. +
  199. +;        ld      hl,intcnt
  200. +;        dec     (hl)
  201. +;        jr      nz,novolbardisp
  202. +;intcntx ld      (hl),00h
  203. +
  204. +volbhi  ;ld      de,0e01fh
  205. +        ld      d,0e0h
  206. +v1vol   ld      a,00h
  207. +;        and     e
  208. +        add     a,d
  209. +        ld      (lptaddr+4000h+(60-18h)*10h+75*10h+53*10h+05h),a    ;volume bar 1
  210. +v2vol   ld      a,00h
  211. +;        and     e
  212. +        add     a,d
  213. +        ld      (lptaddr+4000h+(60-18h)*10h+75*10h+55*10h+05h),a    ;volume bar 2
  214. +v3vol   ld      a,00h
  215. +;        and     e
  216. +        add     a,d
  217. +        ld      (lptaddr+4000h+(60-18h)*10h+75*10h+57*10h+05h),a    ;volume bar 3
  218. +novolbardisp
  219. +calrast jr      dataseg
  220. +restadd ld      hl,lptaddr+028h+4000h       ;c1b0 cbb0
  221. +        
  222. +counter ld      a,098h
  223. +        dec     a
  224. +        ld      (counter+1),a
  225. +        jr      nz,noend
  226. +        ld      a,098h
  227. +        ld      (counter+1),a
  228. +updwn   ld      a,0aah
  229. +        rrca
  230. +        ld      (updwn+1),a
  231. +        ld      bc,0010h
  232. +        jr      c,godown
  233. +        ld      bc,0fff0h
  234. +godown  ld      (rastadd+1),bc
  235. +noend  
  236. +rastadd ld      bc,0010h
  237. +        add     hl,bc
  238. +        ld      (restadd+1),hl
  239. +        ld      bc,0010h
  240. +        set     2,l
  241. +        ld      a,(hl)
  242. +        res     2,l
  243. +        ld      (hl),a
  244. +        add     hl,bc
  245. +        ld      (hl),80h+20h
  246. +ncol2   add     hl,bc
  247. +        ld      (hl),10h+20h
  248. +ncol3   add     hl,bc
  249. +        ld      (hl),90h+20h
  250. +ncol4   add     hl,bc
  251. +        ld      (hl),02h+20h
  252. +ncol5   add     hl,bc
  253. +        ld      (hl),082h+20h
  254. +ncol6   add     hl,bc
  255. +        ld      (hl),082h+20h
  256. +ncol7   add     hl,bc
  257. +        ld      (hl),02h+20h
  258. +ncol8   add     hl,bc
  259. +        ld      (hl),90h+20h
  260. +ncol9   add     hl,bc
  261. +        ld      (hl),10h+20h
  262. +ncol10  add     hl,bc
  263. +        ld      (hl),80h+20h
  264. +        add     hl,bc
  265. +        set     2,l
  266. +        ld      a,(hl)
  267. +        res     2,l
  268. +        ld      (hl),a
  269. +dataseg ld      a,0ffh
  270. +        out     (0b3h),a
  271. +
  272.  nosndc  in      a,(0b5h)
  273.          inc     a
  274.          jr      nz,keyprs
  275.  nokey   pop     hl
  276. @@ -2331,103 +2402,11 @@
  277.  ;        nop        
  278.  ;        scf
  279.  ;        ret
  280.  
  281. -displayonly:
  282. -        ld      hl,nosndc
  283. -        push    hl
  284. -display:
  285. -        push    de
  286. -vidp1   ld      a,0ffh
  287. -        out     (0b3h),a
  288. -
  289. -;        ld      hl,intcnt
  290. -;        dec     (hl)
  291. -;        jr      nz,novolbardisp
  292. -;intcntx ld      (hl),00h
  293. -
  294. -volbhi  ;ld      de,0e01fh
  295. -        ld      d,0e0h
  296. -v1vol   ld      a,00h
  297. -;        and     e
  298. -        add     a,d
  299. -        ld      (lptaddr+4000h+(60-18h)*10h+75*10h+53*10h+05h),a    ;volume bar 1
  300. -v2vol   ld      a,00h
  301. -;        and     e
  302. -        add     a,d
  303. -        ld      (lptaddr+4000h+(60-18h)*10h+75*10h+55*10h+05h),a    ;volume bar 2
  304. -v3vol   ld      a,00h
  305. -;        and     e
  306. -        add     a,d
  307. -        ld      (lptaddr+4000h+(60-18h)*10h+75*10h+57*10h+05h),a    ;volume bar 3
  308. -novolbardisp
  309. -calrast jr      dataseg
  310. -restadd ld      hl,lptaddr+028h+4000h       ;c1b0 cbb0
  311. -        
  312. -counter ld      a,098h
  313. -        dec     a
  314. -        ld      (counter+1),a
  315. -        jr      nz,noend
  316. -        ld      a,098h
  317. -        ld      (counter+1),a
  318. -updwn   ld      a,0aah
  319. -        rrca
  320. -        ld      (updwn+1),a
  321. -        ld      bc,0010h
  322. -        jr      c,godown
  323. -        ld      bc,0fff0h
  324. -godown  ld      (rastadd+1),bc
  325. -noend  
  326. -rastadd ld      bc,0010h
  327. -        add     hl,bc
  328. -        ld      (restadd+1),hl
  329. -        ld      bc,0010h
  330. -        set     2,l
  331. -        ld      a,(hl)
  332. -        res     2,l
  333. -        ld      (hl),a
  334. -        add     hl,bc
  335. -        ld      (hl),80h+20h
  336. -ncol2   add     hl,bc
  337. -        ld      (hl),10h+20h
  338. -ncol3   add     hl,bc
  339. -        ld      (hl),90h+20h
  340. -ncol4   add     hl,bc
  341. -        ld      (hl),02h+20h
  342. -ncol5   add     hl,bc
  343. -        ld      (hl),082h+20h
  344. -ncol6   add     hl,bc
  345. -        ld      (hl),082h+20h
  346. -ncol7   add     hl,bc
  347. -        ld      (hl),02h+20h
  348. -ncol8   add     hl,bc
  349. -        ld      (hl),90h+20h
  350. -ncol9   add     hl,bc
  351. -        ld      (hl),10h+20h
  352. -ncol10  add     hl,bc
  353. -        ld      (hl),80h+20h
  354. -        add     hl,bc
  355. -        set     2,l
  356. -        ld      a,(hl)
  357. -        res     2,l
  358. -        ld      (hl),a
  359. -dataseg ld      a,0ffh
  360. -        out     (0b3h),a
  361. -        pop     de
  362. -ncol11  ret
  363. -
  364. -fillsquare
  365. -        xor     a
  366. -        ld      b,20h
  367. -.l1     inc     a
  368. -        ld      (hl),a
  369. -        inc     l
  370. -        dec     a
  371. -        add     a,e
  372. -        djnz    .l1
  373. -        ret
  374. -
  375.          defs    low -$
  376. +freqmulttable
  377. +        defs    0200h
  378.  volumeConvTable
  379.  ;        db      01h                  ,high triangletable+00,high triangletable+01,high triangletable+02,high triangletable+03,high triangletable+04,high triangletable+05,high triangletable+06
  380.  ;        db      high triangletable+07,high triangletable+08,high triangletable+09,high triangletable+10,high triangletable+11,high triangletable+12,high triangletable+13,high triangletable+14
  381.  ;        db      01h                  ,high sawtoothtable+00,high sawtoothtable+01,high sawtoothtable+02,high sawtoothtable+03,high sawtoothtable+04,high sawtoothtable+05,high sawtoothtable+06
  382. @@ -2439,10 +2418,8 @@
  383.          defs    0100h
  384.  ringmodtable    defs    80h,0afh
  385.          defs    80h,0a2h
  386.  ;b pulse waveform, c b7 ring mod, b6-b5 waveforms, b4-b0 volume (00h triangle, 20 sawtooth, 40h pulse, 60h noise)
  387. -freqmulttable
  388. -        defs    0200h
  389.          dephase
  390.          
  391.  savexos defs    syntlen
  392.  
  393. @@ -2533,23 +2510,23 @@
  394.          xor     a
  395.          ld      (raston+4000h+1),a
  396.          ld      a,18h           ;jr xxxx
  397.  setrast ld      (calrast+4000h),a
  398. -        ld      a,b
  399. -        dec     a
  400. -        ld      a,3ah
  401. -        ld      (cyc2off+4000h),a
  402. -        ld      a,021h          ;ld hl,xxxx
  403. -        ld      hl,intend1
  404. -        jr      z,cyc2v00
  405. +;       ld      a,b
  406. +;       dec     a
  407. +;       ld      a,3ah
  408. +;       ld      (cyc2off+4000h),a
  409. +;       ld      a,021h          ;ld hl,xxxx
  410. +;       ld      hl,intend1
  411. +;       jr      z,cyc2v00
  412.          ld      a,32h
  413.          ld      (cyc2off+4000h),a
  414.          ld      a,b
  415.          ld      (intendx+1),a
  416.          ld      (cyc2val+1+4000h),a
  417.          ld      hl,intendx
  418. -        ld      a,0c2h          ;jp z,xxxx
  419. -cyc2v00 ld      (dispon+4000h),a
  420. +;       ld      a,0c2h          ;jp nz,xxxx
  421. +;cyc2v00 ld      (dispon+4000h),a
  422.          push    bc
  423.          push    bc
  424.          ld      de,intcopy      ;sidSynth.l23
  425.          ld      bc,000ch

A VINT hosszúságát szerintem nem érdemes 156 sornál nagyobbra állítani, a figyelésénél a 0 és az 1 állapot is fontos, 50% kitöltési tényezőnél lehet a legritkábban tesztelni megszakítás elvesztése nélkül.

Van egy kis gond, előre tettem a videó rutint (gyorsított mindennel), és még így is fagy 12,5KHz-en a Last Ninja 2 12-es számában, előbb jön egy hangvezérlés "megszakítás", és mikor már jól televágta a vermet az adatokkal

Ha kevés a hely a veremben, akkor a jelenleg 75h címen kezdődő kód kerülhetne az IRQ rutin elé is, az EXOS terület már egyébként is felülíródik.
« Last Edit: 2017.April.15. 11:28:07 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #758 on: 2017.April.15. 11:45:13 »
Talán célszerűbb lenne először a vezérlést futtatni, akkor a video megszakítás nem zavarja a lejátszás időzítését, bár nem tudom, ez hallható különbséget jelent-e. A lenti módosítás ezt próbálja megoldani, de nem támogatja a második osztás és kijelzés nélküli speciális esetet. Viszont csak 50 Hz-es frekvencián figyeli a billentyűzetet, és a vezérlésen gyorsít egy keveset.
Igen ,erre gondoltam én is, csak attól tartottam ,hogy akkor meg villog, mert a vezérlés a leghosszabb, bár a VINT bites range mozgatásával ez is orvosolható, mert nagyjából konstans hosszú a vezérlés :)
Elvileg a 3. lap is problémát okozhatna, de ilyen eset az időzítés miatt talán nem fordulhat elő.
Igen, ilyen még nem fordult elő, ezért nem bolygattam :)

Ennek az az előnye lenne, hogy tetszőleges frekvencián futhatna, és nem csak 50 Hz többszörösein fix osztókkal.
Miután említetted a tetszőleges frekvenciát a ciklusos megoldásnál, jutott eszembe, hogy ezt így is meg lehetne csinálni, nem tudom gyakorlatban mekkora jelentősége van, van-e olyan SID, ami extrém vezérlési frekvenciát használ, annyi, hogy a turbós gépekre még nincs kész a ciklus érték módosítás, azon még egylőre csak gondolkoztam, a legpontosabb talán az lenne, ha az 500000-es osztót szoroznánk fel a sebesség függvényében, és utána osztani, és a kapott értéknek függvényében beállítani a két ciklusváltozót, a legegyszerűbb meg a kapott ciklusáltozókkal játszani a gép sebességétől függően.

Ezeket a változtatásokat nem tudtam tesztelni, mert hiányzik a kép:
Bocs, nem szeretem annyira az INCLUDE-ot, meg INCBIN-t használni, mert mindig megfeledkezem a fájlokról, most pótlom.

A VINT hosszúságát szerintem nem érdemes 156 sornál nagyobbra állítani, a figyelésénél a 0 és az 1 állapot is fontos, 50% kitöltési tényezőnél lehet a legritkábban tesztelni megszakítás elvesztése nélkül.

Ha kevés a hely a veremben, akkor a jelenleg 75h címen kezdődő kód kerülhetne az IRQ rutin elé is, az EXOS terület már egyébként is felülíródik.
Jogos, én csak azt tartottam szem előtt, hogy képen való ténykedés véletlenül se történjen, amikor épp azon jár az elektronsugár, amúgy a ciklusváltozóink miatt a jelenlegi beállítás mellett se volt bukta :)
Egyelőre nem volt gond a verem mérettel, mindig a lapozás okozta galiba miatt írta túl azt is, most kb 110 byte van szabadon a veremre.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #759 on: 2017.April.15. 11:58:37 »
Miután említetted a tetszőleges frekvenciát a ciklusos megoldásnál, jutott eszembe, hogy ezt így is meg lehetne csinálni, nem tudom gyakorlatban mekkora jelentősége van, van-e olyan SID, ami extrém vezérlési frekvenciát használ, annyi, hogy a turbós gépekre még nincs kész a ciklus érték módosítás, azon még egylőre csak gondolkoztam, a legpontosabb talán az lenne, ha az 500000-es osztót szoroznánk fel a sebesség függvényében, és utána osztani, és a kapott értéknek függvényében beállítani a két ciklusváltozót, a legegyszerűbb meg a kapott ciklusáltozókkal játszani a gép sebességétől függően.

A freqdiv.s egyszerűen minden lehetséges osztóval próbálkozik egy bizonyos tartományban, és azt használja, amelyikkel a legpontosabb a frekvencia  (egyenlő pontosságnál pedig azt, amelyikkel az első osztó nagyobb). Ez kissé pazarló megoldás, bár a 40 és 62 közötti kereséssel 22-25 ms a futásideje (156 soros VINT esetén nagyobb értékek is lehetnének). Esetleg kereshetne a második osztó alapján, annak kisebb a használható tartománya, 1-10 elég lenne turbós gépeken is.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #760 on: 2017.April.15. 12:13:10 »
A freqdiv.s egyszerűen minden lehetséges osztóval próbálkozik egy bizonyos tartományban, és azt használja, amelyikkel a legpontosabb a frekvencia  (egyenlő pontosságnál pedig azt, amelyikkel az első osztó nagyobb). Ez kissé pazarló megoldás, bár a 40 és 62 közötti kereséssel 22-25 ms a futásideje (156 soros VINT esetén nagyobb értékek is lehetnének). Esetleg kereshetne a második osztó alapján, annak kisebb a használható tartománya, 1-10 elég lenne turbós gépeken is.
Jó ötlet, nekem tegnap az jutott eszembe, amikor megláttam a freqdiv.s-t, hogy adhatná a második osztót, és az alapján már külön lenne számítva az első a 150 Hz pontatlansága miatt.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #761 on: 2017.April.15. 14:30:01 »
Továbbfejlesztett freqdiv.s:
[ Guests cannot view attachments ]

Megkeresi a legjobb pontosságot (vagy azonos pontosságnál kisebb CPU használatot) eredményező osztókat amelyekkel az alábbi (egyszerűen módosítható) feltételek teljesülnek:
- első osztó 50 és 255 között
- az ezzel osztott frekvencia >= 125 Hz (VINT teszt legfeljebb 8 ms időközönként)
- második osztó 1 és 10 között
« Last Edit: 2017.April.15. 15:04:23 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #762 on: 2017.April.15. 19:01:05 »
Újabb próbálkozás:
[ Guests cannot view attachments ]     (szerk.: javítottam az LPT hibákat)
« Last Edit: 2017.April.15. 19:47:46 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #763 on: 2017.April.16. 10:36:52 »
Továbbfejlesztett freqdiv.s:
Megkeresi a legjobb pontosságot (vagy azonos pontosságnál kisebb CPU használatot) eredményező osztókat amelyekkel az alábbi (egyszerűen módosítható) feltételek teljesülnek:
- első osztó 50 és 255 között
- az ezzel osztott frekvencia >= 125 Hz (VINT teszt legfeljebb 8 ms időközönként)
- második osztó 1 és 10 között
Nagyon jól hangzik, egyelőre még csak letöltöttem, remélem holnap lesz időm egy picit foglalkozni vele, no meg az LPT hibák javítását is :), kíváncsi vagyok mit szúrtam el :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #764 on: 2017.April.17. 14:15:01 »
Nagyon jól hangzik, egyelőre még csak letöltöttem, remélem holnap lesz időm egy picit foglalkozni vele, no meg az LPT hibák javítását is :), kíváncsi vagyok mit szúrtam el :)

Az LPT-t valójában részben én rontottam el, de a státuszsor korábban is hibás volt (margók).

Kisebb optimalizálás az előző változathoz képest, de kevesebb szabad hely marad a vermben (-5 byte):
[ Guests cannot view attachments ]

A kicsomagolásra várakozás hibás volt, ezt javítottam, néhány további (minimális) optimalizálás mellett.
[ Guests cannot view attachments ]