Welcome, Guest. Please login or register.


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

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #300 on: 2017.February.05. 10:41:35 »
Egyelőre csak a GARFIELD.SID-et néztem, de ott valóban sidrec.lua probléma van:

[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

Az első felvétel a javítás nélküli változattal készült, ez teljesen rossz, a másodiknál a sidrec.lua tartalmazta ezt:
Code: Lua
  1.       if sidReg == 0x04 or sidReg == 0x0B or sidReg == 0x12 then
  2.         if AND(v, 0x01) > AND(sidState[sidReg], 0x01) and frameCnt > 0 then
  3.           local p = sidReg * 655 + frameCnt - 1
  4.           outBuf[p] = AND(outBuf[p], 0xFE)
  5.         end
  6.       end
Így sem tűnik tökéletesnek, de talán újra össze kellene hasonlítani az eredetivel. :oops: Elméletileg SID kártyával a sid.com és a SIDPLAY kimenetének azonosnak kellene lennie, egyébként a sidrec.lua hibás felvételt készített.

Szerk.: a Last Ninja 2-nél ilyen lett a felvétel:
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

Ez a "javított" script, az 1-es felvételek a fenti kódrészlet törlése után készültek:
[ Guests cannot view attachments ]
« Last Edit: 2017.February.05. 11:16:30 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #301 on: 2017.February.05. 11:32:20 »
Esetleg a sidrec.lua kimeneti formátumát tovább lehetne fejleszteni, hogy valamelyik nem használt bit (pl. a 3-as regiszter felső bitje) legyen a trigger kezdeti állapota az adott megszakítási ciklusban, így nem veszik el ez az információ.

Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #302 on: 2017.February.05. 12:44:55 »
Ez így hangzásra megegyezik az eredetivel :)
Azt nem értem, hogy egy általam módosított lua-t (sidrecn.lua lejjebb csatoltam) használtam tegnap, ami minden megszakításban kiírja a d400-d418h-t a tömbbe, miért rossz, amikor a módosított sidplay-ben ugyanezt teszem, igaz ott már a volume értékek envelope "emuláltak", de az envelope emuláció is csak a megszakításokban történik, tehát elméletileg ugyanennek a hibának ki kéne jönnie.
A trigger alatt a gate bitet érted?
« Last Edit: 2017.February.05. 13:02:22 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #303 on: 2017.February.05. 13:08:32 »
Azt nem értem, hogy egy általam módosított lua-t (sidrecn.lua lejjebb csatoltam) használtam tegnap, ami minden megszakításban kiírja a d400-d418h-t a tömbbe, miért rossz, amikor a módosított sidplay-ben ugyanezt teszem, igaz ott már a volume értékek envelope "emuláltak", de az envelope emuláció is csak a megszakításokban történik, tehát elméletileg ugyanennek a hibának ki kéne jönnie.

Nem tudom pontosan, hogyan működik a burkológörbe emuláció a SIDPLAY-ben. :oops: De például a GARFIELD.SID-ben a problémás hangok burkológörbéje 0,9,0,9, azaz nulla a sustain, talán nem cseng le erre a szintre? Szerk.: ha jól látom, van még az 50 Hz-es burkológörbe emuláción kívül ellenőrzés a regiszterek írásakor hogy változik-e az érték, és ha igen, akkor (bár ebben nem vagyok biztos) újraindítja a burkológörbét:
Code: ZiLOG Z80 Assembler
  1. .   D06E  21 1F 00     LD    HL, 001F
  2. .   D071  19           ADD   HL, DE
  3. .   D072  1A           LD    A, (DE)
  4. .   D073  BE           CP    (HL)
  5. .   D074  77           LD    (HL), A
  6. .   D075  28 03        JR    Z, D07A
  7. .   D077  2C           INC   L
  8. .   D078  36 00        LD    (HL), 00
  9. .   D07A  D1           POP   DE
  10. .   D07B  DD E9        JP    (IX)

Quote
A trigger alatt a gate bitet érted?

Igen.
« Last Edit: 2017.February.05. 13:31:48 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #304 on: 2017.February.05. 13:41:17 »
Nem tudom pontosan, hogyan működik a burkológörbe emuláció a SIDPLAY-ben. :oops: De például a GARFIELD.SID-ben a problémás hangok burkológörbéje 0,9,0,9, azaz nulla a sustain, talán nem cseng le erre a szintre? Szerk.: ha jól látom, van még az 50 Hz-es burkológörbe emuláción kívül ellenőrzés a regiszterek írásakor hogy változik-e az érték, és ha igen, akkor (bár ebben nem vagyok biztos) újraindítja a burkológörbét.

Már én sem :D ,de nem az igazi.
Összehasonlítottam a két kimenetet (az általam módosítottat, és az újat), a régiben a 4. byte fix 41h, míg az újban van 40h is, vagyis egy release után kezdődhet az attack.
A burkológörbe elindítás elképzelhető, biztosat nem állíthatok :)
« Last Edit: 2017.February.05. 13:53:24 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #305 on: 2017.February.05. 14:37:20 »
Esetleg a sidrec.lua kimeneti formátumát tovább lehetne fejleszteni, hogy valamelyik nem használt bit (pl. a 3-as regiszter felső bitje) legyen a trigger kezdeti állapota az adott megszakítási ciklusban, így nem veszik el ez az információ.
Így gondoltad?

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 #306 on: 2017.February.05. 14:56:03 »
össze kéne a jobb sid-eket gyűjteni amik jól szólnak ep-n is, és egy videóba összerakni, és megmutatni a c64-eseknek. szerintem érdekesnek találnák.
azt ne áruljuk el hogy a teljes cpu időt elviszi a lejátszás : o )
Vigyázat! Szektás vagyok! :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #307 on: 2017.February.05. 15:14:50 »
Így gondoltad?

Igen, csak kisebb módosítással:
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

Ez a 3. regiszter 7. bitjét beállítja, ha az adott periódusban felfutó él fordult elő, egyébként a bit 0 marad. A konvertáló program most már ezt a bitet is figyeli ha a gate bit 1:
Code: Diff
  1.  unsigned char SID_Channel::calculateVolume(int nCycles)
  2.  {
  3.    double        tmp = 0.0;
  4.    unsigned char sustainLevel = (unsigned char) (((r[6] >> 4) & 0x0F) * 17);
  5. -  if ((r[4] & 0x01) != 0 && envState == 2) {
  6. +  if ((r[4] & 0x01) != 0 && (envState == 2 || (r[3] & 0x80) != 0)) {
  7.      envState = 0;
  8.    }
  9.    else if ((r[4] & 0x01) == 0) {
  10.      if (envState == 0)
Még a sid.s lejátszót kellene módosítani hogy figyelembe vegye ezt a változtatást. Esetleg a lefutó éleket is figyelni lehetne, bár azok valószínűleg kevésbé fontosak.
« Last Edit: 2017.February.05. 16:05:40 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #308 on: 2017.February.05. 15:33:51 »
Köszi, lassan kezdem elölről a konvertálást, most gyűjtöttem ki a kiválasztott sid-ek hosszait.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #309 on: 2017.February.05. 15:48:23 »
azt ne áruljuk el hogy a teljes cpu időt elviszi a lejátszás : o )

Miért ne vinné el, ha a legjobb minőség a cél? :) Természetesen játékba vagy demóba épített lejátszónál lehetséges 8 kHz-es frekvencia, a gyűrűmoduláció effektus törlése, vagy egyéb gyorsítás.

Köszi, lassan kezdem elölről a konvertálást, most gyűjtöttem ki a kiválasztott sid-ek hosszait.

Szerintem érdemes lenne gyűjteni a még nem konvertált file-okat is, így esetleges újabb konvertáló programnál nem kell mindet újra felvenni, és lehetőség lenne SID kártyás lejátszásra is.

Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #310 on: 2017.February.05. 16:00:51 »
Miért ne vinné el, ha a legjobb minőség a cél? :) Természetesen játékba vagy demóba épített lejátszónál lehetséges 8 kHz-es frekvencia, a gyűrűmoduláció effektus törlése, vagy egyéb gyorsítás,de 11KHz-en még jó volt.

Igen, és amúgy is van kb 20% szabad CPU-nk :D , kipróbáltam 12,5 KHz-en, úgy már volt fagyi, gondolom olyan blokkoknál, aminek kicsomagolása tovább tartott.
Szerintem érdemes lenne gyűjteni a még nem konvertált file-okat is, így esetleges újabb konvertáló programnál nem kell mindet újra felvenni, és lehetőség lenne SID kártyás lejátszásra is.
Igen, erre jutottam én is, egyrészt egyszerűbb mindent külön file-ba menteni, és nem egyesével konvertálni, másrészt meg jól jöhet, igen a forrás file :)
Egy hibát jelzett a sid_conv.cpp fordulás közben, de azt még én is tudtam javítani :D (78. sor bezáró zárójel hiány :) )

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #311 on: 2017.February.05. 16:05:20 »
Egy hibát jelzett a sid_conv.cpp fordulás közben, de azt még én is tudtam javítani :D (78. sor bezáró zárójel hiány :) )

Javítottam a feltöltött verziót. :oops:

Offline nyuzga

  • EP addict
  • *
  • Posts: 2282
  • Country: hu
Re: SID lejátszó
« Reply #312 on: 2017.February.05. 19:10:09 »
Ha már SID, akkor itt van egy ismert zene. Nagyon szépen szól a C64 emun.
A .prg az önindulós lejátszó.



Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #313 on: 2017.February.05. 20:10:10 »
Itt a konverzió eredménye, amit eddig hallgattam, az jó volt, kivéve az Armalyte1 és a Dragon Ninja, előbbinél sztem vagy kevés a 10KHz, vagy használnak valami spéci cuccot, másodiknál meg a lejátszás is trükkös volt, lehet ez kevert be. Ghosts'n'Goblins1 érdekes, brekeg :D
Eredeti SID-ek: [ Guests cannot view attachments ]
SIDPlay-jel kinyert adatok: [ Guests cannot view attachments ]
SID_CONV-val konvertált adatok: [ Guests cannot view attachments ]
Lejátszható M64 fájlok: [ Guests cannot view attachments ]
« Last Edit: 2017.February.05. 20:14:07 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7109
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #314 on: 2017.February.05. 20:39:17 »
Valami odapiszkított háromszögtábla elejére, lehet ez okozza a hibákat.
Megnézem holnap.