Welcome, Guest. Please login or register.


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

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 #330 on: 2017.February.07. 10:27:10 »
majd szóljatok ha lehet csinálni videót! megcsinálom szívesen. c64-eseknek mutogatjuk majd :)
Vigyázat! Szektás vagyok! :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #331 on: 2017.February.07. 15:26:56 »
[ Guests cannot view attachments ]    (szerk.: kisebb javítás)
[ Guests cannot view attachments ]

Ez még lehet, hogy hibás, de elvileg támogatja a nem 50 Hz-es lejátszást (5 kHz-es DAVE megszakítás osztásával) és a burkológörbe újraindítását a PWM regiszter nem használt felső bitjével.
« Last Edit: 2017.February.07. 20:06:32 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #332 on: 2017.February.08. 11:25:12 »
Továbbfejlesztett sidrecn.lua:
[ Guests cannot view attachments ]    (szerk.: playtime számítása javítva)
[ Guests cannot view attachments ]

A 0E/0F portok helyett a D400-D41F terület írását figyeli, így működik az alapértelmezett DAVE módban is. A kiírt sebesség értéket a video memóriából olvassa és tárolja az első blokkban. A PWM regiszter felső bitjét csak akkor állítja, ha az valóban jelent különbséget (konvertálásnál nincs jelentősége, de a SID kártyával lejátszható "nyers" formátum talán jobban tömöríthető így).
« Last Edit: 2017.February.08. 12:04:04 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #333 on: 2017.February.08. 11:47:32 »
Továbbfejlesztett sidrecn.lua:
:smt041
Nem néztem még meg, de tuti jól működik, nem úgy, mint az én első memóriaolvasós verzióm, ami nem állította a PWM bit felső bitjét. A sebesség értéket mindig fix pozícióból veszi, vagy LPT alapján ( még nem néztem, majd este ) mert EXOS LPT-t buherálom.
« Last Edit: 2017.February.08. 21:20:19 by szipucsu, Reason: Túl hosszú idézet lerövidítése »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #334 on: 2017.February.08. 11:57:25 »
A sebesség értéket mindig fix pozícióból veszi, vagy LPT alapján ( még nem néztem, majd este ) mert EXOS LPT-t buherálom.

Az LPT alapján, de a playtime számításánál nem vette figyelembe (ott maradt a fix 50 érték), amit most javítottam, és ahol még 50 Hz-et tételezett fel a kód, a sid_conv.cpp-ben is.

[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
« Last Edit: 2017.February.08. 12:13:28 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #335 on: 2017.February.08. 12:19:22 »
A 150 Hz-es Paperboy snapshotban akadozik a zene, bár elsősorban azért, mert a felvétel 4 MHz-es konfiguráción készült. :oops:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #336 on: 2017.February.08. 13:16:29 »
A 150 Hz-es Paperboy snapshotban akadozik a zene, bár elsősorban azért, mert a felvétel 4 MHz-es konfiguráción készült. :oops:
Van pár cucc, ami reprodukálásra vár, Cybernoid (ebből mindkettő, vagy csak a második? ) Paperboy )

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #337 on: 2017.February.08. 14:16:01 »
Ha a Z80 órajel növelésének nincs hátránya (nem tudom, a CIA időzítőket a lejátszó hogyan emulálja), akkor talán a legbiztosabb lenne mindet 10-20 MHz-en felvenni. :) SID kártya emuláció nélkül még így is elég gyors Alt+W-vel.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #338 on: 2017.February.08. 14:20:14 »
Ha a Z80 órajel növelésének nincs hátránya (nem tudom, a CIA időzítőket a lejátszó hogyan emulálja), akkor talán a legbiztosabb lenne mindet 10-20 MHz-en felvenni. :) SID kártya emuláció nélkül még így is elég gyors Alt+W-vel.
CIA időzítőkre sincs káros hatással, CIA értéktől függően helyez el VINT biteket az LPT-ben :) 10-20 MHz-en tuti nem lesz gond  :), én csak a 6-ra gondoltam, de egy 10-est lehet tolni neki majd.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #339 on: 2017.February.08. 14:46:41 »
Sok file konvertálására talán a leghatékonyabb lenne PC-s programot írni, csak nem tudom biztosan, a SID formátumból mi a lényeges, és mennyit kell emulálni a C64 hardveréből. Ha a teljes támogatás nem is cél, annyit talán tudhatna, amit a PLAYSID is. A CPU egyszerű, fel tudom használni a plus4emu forráskódjából. Esetleg a zenék hosszát is fel lehetne ismerni automatikusan, például hogy mikor lesz a memória tartalma azonos az első megszakítás utáni állapottal, de ez lehet, hogy nem megbízható.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #340 on: 2017.February.08. 14:58:17 »
Tuti ez lenne a legjobb megoldás, de ez iszonyú munka, nem?
Ergognomik vetette fel, hogy PLUS4emu-ban játsszuk le a SID-eket, és onnan nyerjük ki a regiszter értékeket, gondolom a megszakítások ugyanolyan pontosan mennek, mint C64-en mennének.
Amit most láttam, a CIA, és a SID regiszterek figyelése van megoldva a sidplay-ben, egyelőre más nem rémlik.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #341 on: 2017.February.08. 15:08:53 »
Tuti ez lenne a legjobb megoldás, de ez iszonyú munka, nem?

Nem feltétlenül, ha a "C64 emulátor" rész nagyon kezdetleges. Azaz gyakorlatilag csak a CPU, és a program bizonyos fix időközönként megszakításokat generál. Ez már csak azért is előnyös lenne, mert a SID, 2xCIA, VIC-II, stb. emulációja lassítaná a konvertálást.

Quote
Ergognomik vetette fel, hogy PLUS4emu-ban játsszuk le a SID-eket, és onnan nyerjük ki a regiszter értékeket, gondolom a megszakítások ugyanolyan pontosan mennek, mint C64-en mennének.

A Plus/4-ben nincs CIA (de van programozható 16 bites időzítő) és más az órajel, de talán vannak SID lejátszó programok a gépre, mivel kártyából több is készült. A PC-s program előnye elsősorban a nehézkes kézi felvétel (időtartam beállítása, zenék kiválasztása egyenként, stb.) elkerülés lenne.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #342 on: 2017.February.08. 15:26:36 »
Nem feltétlenül, ha a "C64 emulátor" rész nagyon kezdetleges. Azaz gyakorlatilag csak a CPU, és a program bizonyos fix időközönként megszakításokat generál. Ez már csak azért is előnyös lenne, mert a SID, 2xCIA, VIC-II, stb. emulációja lassítaná a konvertálást.
Gyanúsan ennyi, ami rémlik, NTSC bit, ha be van állítva, akkor 60Hz, egyébként vagy user interrupt (CIA), vagy 50Hz.
A Plus/4-ben nincs CIA (de van programozható 16 bites időzítő) és más az órajel, de talán vannak SID lejátszó programok a gépre, mivel kártyából több is készült. A PC-s program előnye elsősorban a nehézkes kézi felvétel (időtartam beállítása, zenék kiválasztása egyenként, stb.) elkerülés lenne.
jogos.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID lejátszó
« Reply #343 on: 2017.February.08. 15:26:54 »
A könnyen kezelhető PC-s megoldás az szerintem sokaknak tetszene!

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #344 on: 2017.February.08. 15:41:04 »
Ezeket használja a program:

m6502_nmi:     equ  $fffa           ; nmi vector address
m6502_reset:   equ  $fffc           ; reset vector address
m6502_int:     equ  $fffe           ; int vector address (also for BRK)

c64_irq_vec:   equ  $0314           ; C64 IRQ vector
c64_irq_cont:  equ  $ea31           ; C64 ROM IRQ chaining
c64_cia_timer: equ  $dc04           ; C64 CIA#1 timer

D400-D41f   SID registers
DC00-DC0f   CIA#1 registers
DD00-DD17   CIA#2 registers

A SID inicializálás után meghívja a set_speed rutint, ami ha CIA 0 (csak a DC04-05-öt nézi), akkor csekkolja, hogy NTSC-vagy PAL-e a SID, és ennek megfelelően állítja be a megszakítást, ha CIA nem 0, akkor annak megfelelően, és utána futtatja a fő kódot.
CIA#2 regiszterre hivatkozást nem láttam.