Welcome, Guest. Please login or register.


Author Topic: SID illesztés EP-hez (Read 24468 times)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #60 on: 2015.June.10. 08:49:39 »
Mennyi a Z80 kod mennyisege, ami az emulaciohoz kell? Hova kerul jelenleg a cimtartomanyban?
Úgy nagyjából 4kb , kevesebb, de szét van szórva D000-DFFF tartományban.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: SID illesztés EP-hez
« Reply #61 on: 2015.June.10. 08:53:17 »
Szamomra amugy az is kerdeses, hogy nem szoktak-e irkalni az 1 -es cimre. Az 6510-n a CPU-ra integralt 6 bites I/O port adat portja (a 0-as az irany, input/output, mondjuk ezt nem szokas birizgalni nagyon ertelemszeruen), ami pl memory bankingra (is, nem csak erre: 3 bit van erre, 3 bit pedig a datasette/magno) van hasznalva, es pl allithato, hogy adott cimtartomanyban (mar ahol tobb dolog lenne) ROM latszodjon vagy RAM, vagy adott esetben az I/O terulet. Nem tudom, hogy pl ez nem okozhat-e gondot ...

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #62 on: 2015.June.10. 08:56:31 »
Jelentem, szól. :-D Most csak egy gyors tesztre volt időm, az eredetileg letöltött pakkban levő zenék közül párra hallgattam rá, de túlzás lenne állítani, hogy mind ismerős. :) Majd előszedek egy saját gyűjteményt, aztán még fülelek! Mindenesetre a jelek biztatóak, köszi!
Szuper, akkor jó értékeket adok át, ez a két regiszteres megoldás tetszik, és nem is lassít semmit a lejátszón, mert ha D400-D4FF-re történt írás, akkor a régi lejátszóban volt 3 CP , és 3 JP Z utasítás, most ez le lett cserélve
Code: [Select]
    out    (0eh),a
     ld      a,(hl)
     out    (0fh),a
-ra, és a megszakítás is jelentősen egyszerűsödött.

A SID-nél az "elterjedt" digi lejátszás az $FD18-as hangerőregiszterrel történik, ott szerintem nem ez a probléma lesz. Inkább az, hogy a digi lejátszásához nem elég az 50Hz-es megszakítás, ahhoz sajátot fog a lejátszó beállítani magának. Természetesen hardveres regiszterírásokkal. C64-en az I/O terület $D000..$DFFF tartományban van, már ameddig ki nem kapcsolják. :) Szóval várható irkálás a $D400..$D418 terület mellett $D000..$D02F részre (VIC-II) meg $DC00..$DC0F / $DD00..$DD0F (CIA-k) címére is. (Ezek a tartományok a "hivatalos" címek, de a hiányos címdekódolás miatt jó párszor ismétlődnek ezek.)
Ha a fenti alap tartományokat felszabadítod, akkor jó eséllyel a lejátszók zöme nem fogja felülírni a kódod. Ami meg a "másolat" címeket piszkálja, az egyéb galádságokra is képes. :)
Akkor itt a D0xx, DCxx, DDxx bármelyike okozhat galibát, sőt a VIC-II rész, ha jól emléxem a SID tartományig van, úgyhogy kód áthelyezéssel ez nem megy, max az írás figyelésével, ami lassít. :(

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #63 on: 2015.June.10. 09:00:11 »
Szamomra amugy az is kerdeses, hogy nem szoktak-e irkalni az 1 -es cimre. Az 6510-n a CPU-ra integralt 6 bites I/O port adat portja (a 0-as az irany, input/output, mondjuk ezt nem szokas birizgalni nagyon ertelemszeruen), ami pl memory bankingra (is, nem csak erre: 3 bit van erre, 3 bit pedig a datasette/magno) van hasznalva, es pl allithato, hogy adott cimtartomanyban (mar ahol tobb dolog lenne) ROM latszodjon vagy RAM, vagy adott esetben az I/O terulet. Nem tudom, hogy pl ez nem okozhat-e gondot ...
Ha ez a 0001h cím, akkor nem okozhat gondot, z80 kód csak a d000-dfff tartományban van 6510 emuláció alatt, és IM2-t használ, aminek az ugrótáblája is ebben a tartományban van.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: SID illesztés EP-hez
« Reply #64 on: 2015.June.10. 09:19:25 »
Ha ez a 0001h cím, akkor nem okozhat gondot, z80 kód csak a d000-dfff tartományban van 6510 emuláció alatt, és IM2-t használ, aminek az ugrótáblája is ebben a tartományban van.

Nem igy ertettem :) Hanem ugy, hogy 0001h cimre irva valodi C64-en "memorialapozas" (bar ott ezt nem igy hivjak, es messze is van attol amit EP tud) van, ha az nincs emulalva, es hasznalva van pedig a feature az okozhat gondot, aminek amugy nem ahhoz van akkor koze, hogy barmi felulirna a Z80 kodot. Vagy az mar biztos, hogy vmi felulirta, tehat ebbol indulunk ki, hogy ez a gond? Nem tudom (nem sokat hasznaltam ilyet meg), hogy ep128emu-val nem lehetne-e breakpoint-ot beallitani, ha vmi irkalni akar olyan cimre, ahol a Z80 cuccos van. Vagy lemaradtam vmirol es mar ismert, hogy feluliras van, csak az a kerdes, hogy miert? :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID illesztés EP-hez
« Reply #65 on: 2015.June.10. 09:31:09 »
Nem tudom (nem sokat hasznaltam ilyet meg), hogy ep128emu-val nem lehetne-e breakpoint-ot beallitani, ha vmi irkalni akar olyan cimre, ahol a Z80 cuccos van.
Lehet.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #66 on: 2015.June.10. 09:47:30 »
Nem igy ertettem :) Hanem ugy, hogy 0001h cimre irva valodi C64-en "memorialapozas" (bar ott ezt nem igy hivjak, es messze is van attol amit EP tud) van, ha az nincs emulalva, es hasznalva van pedig a feature az okozhat gondot, aminek amugy nem ahhoz van akkor koze, hogy barmi felulirna a Z80 kodot. Vagy az mar biztos, hogy vmi felulirta, tehat ebbol indulunk ki, hogy ez a gond? Nem tudom (nem sokat hasznaltam ilyet meg), hogy ep128emu-val nem lehetne-e breakpoint-ot beallitani, ha vmi irkalni akar olyan cimre, ahol a Z80 cuccos van. Vagy lemaradtam vmirol es mar ismert, hogy feluliras van, csak az a kerdes, hogy miert? :)
99%, hogy valami felülírja, mert lefagy a pléjer, a memórialapozás felülírásban szerintem nem okozhat gondot, mert a D000-DFFF tartományokon kívül nincs kód, az előbb említett terület lapozásától függetlenül, ha abba a tartományba írás történik, mindenképp kódfelülírás lesz az eredmény :) A lapozás olyan gondot okozat még, hogy belapozza a mondjuk a ROM-ot, és onnan hajtana végre rutint, ahol nálunk nincs semmi :D

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: SID illesztés EP-hez
« Reply #67 on: 2015.June.10. 10:07:04 »
99%, hogy valami felülírja, mert lefagy a pléjer, a memórialapozás felülírásban szerintem nem okozhat gondot, mert a D000-DFFF tartományokon kívül nincs kód, az előbb említett terület lapozásától függetlenül, ha abba a tartományba írás történik, mindenképp kódfelülírás lesz az eredmény :) A lapozás olyan gondot okozat még, hogy belapozza a mondjuk a ROM-ot, és onnan hajtana végre rutint, ahol nálunk nincs semmi :D

Valoszinutlen :) C64-en ROM-ban nem igazan van semmi ami hasznalna pl SID-et, hogy vmi ROM rutinnal csinaltassa meg ;) Inkabb vmi olyasmire gondoltam, hogy esetleg ugy mux, hogy a 6510 kod ami lejatszik reszben az I/O terulet "alatt" van, igy kapcsolagatja, hogy adott cimen a kod latszik vagy az I/O. Mondjuk ez kenyelmetlen mar eleve, lehet tenyleg nem tul valoszinu :)

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #68 on: 2015.June.10. 12:04:21 »
az az $FD18 gondolom $D418 akart lenni. :)

Persze. :) (Hogy ezt a címet hogy raktam össze... Mondjuk sejtem. :ds_icon_cheesygrin: )

A modern digi lejátszók már nem a hangerő bitekkel manipulálnak. Korábban volt ötlet a négyszögjel kitöltési tényező vezérlés segítségével lejátszani hangmintákat, de az tudtommal nem terjedt el. A legutóbbi fejlesztés valahogyan a háromszög (vagy fűrészfog - franc se tudja) abuzálásával éri el a kívánt hatást. Emellé még megmarad két natív SID csatorna és természetesen a szűrők használatának lehetősége.

A hangerős verzió a legrégebbi, ez tény. A másik verzióhoz viszont cikluspontos időzítés kell (ami C64-en is igencsak elviszi a CPU jelentős idejét...), az EP-n még natív kódból is húzós, nem hogy emulált 6502-vel. :)

Szamomra amugy az is kerdeses, hogy nem szoktak-e irkalni az 1 -es cimre.

Szoktak. :) "Normál" zenénél azért nem jellemző, diginél meg bármi előfordulhat.

Akkor itt a D0xx, DCxx, DDxx bármelyike okozhat galibát, sőt a VIC-II rész, ha jól emléxem a SID tartományig van, úgyhogy kód áthelyezéssel ez nem megy, max az írás figyelésével, ami lassít. :(

Szerintem elég az "alap" tartományok kihagyása, mivel annak maximum szívatási értéke van, ha a programozó nem az eredeti címet, hanem valamelyik "másolat-regisztert" használja. Persze van ilyen is, de elég lesz ám a közel tökéletes lejátszó is a tökéletes helyett. :)

99%, hogy valami felülírja, mert lefagy a pléjer

Ezt viszont - szerintem - emu alatt egyszerű leellenőrizni, csak meg kell a "fagyás" után nézni, hogy az ismert (C64-es) regiszterek (címeinek a) környékén sérült-e a kód.

A lapozás olyan gondot okozat még, hogy belapozza a mondjuk a ROM-ot, és onnan hajtana végre rutint, ahol nálunk nincs semmi :D

A C64-es ROM semmilyen segítséget nem nyújt ezekhez a feladatokhoz, azt kötve hiszem, hogy hívogatná bármi is. :)

Viszont jól sejtem-e, hogy a problémás zenék nagy része digis, és itt most erről megy a csevej? A digi lejátszása az eredeti vason is erőforrás-igényes, szerintem a CPU emuláció így is - úgy is lassú lesz hozzá. Maximum nem fagy... :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: SID illesztés EP-hez
« Reply #69 on: 2015.June.10. 13:02:19 »
Quote
A C64-es ROM semmilyen segítséget nem nyújt ezekhez a feladatokhoz, azt kötve hiszem, hogy hívogatná bármi is. :)

Az biztos :)

Quote
Viszont jól sejtem-e, hogy a problémás zenék nagy része digis, és itt most erről megy a csevej? A digi lejátszása az eredeti vason is erőforrás-igényes, szerintem a CPU emuláció így is - úgy is lassú lesz hozzá. Maximum nem fagy... :)

Az is biztos. Foleg a modernebb trukkok, ahol vmi test bittel operalnak, es orajelciklus pontossagra allitjak aztan at a dolgokat, stb (oszinten: olvastam leirast ilyen modszerrol, nem mondom, hogy ertem ...). Ezek tuti nem fognak mukodni (meg az egyszerubb volume register iras digihez sem, mert ugye lassabb mint "kene") ... Az mas kerdes, hogy regen volt a maniam, hogy kene 65xx CPU is a cuccra, sajat memoriaval amit pl I/O portokon at lehet felolteni stb. Ennek meglenne az a vicces kovetkezmenye is, hogy adott esetben lehetne tobb procis rendszernek hasznalni, 65xx futtat vmit elvan magaban, addig az EP/Z80 is, aztan max neha adatot cserelnek. Az nyilvan mar bonyolultabb, ha kozvetlenul is latjak mindketten uazt a memoriatartomanyt, bar akkor meg pl a VIC20 emulator sebessege urgrana meg jelentosen azonnal :) Na jo, visszaterek a foldre ezennel ...
« Last Edit: 2015.June.10. 13:16:29 by lgb »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #70 on: 2015.June.10. 13:52:04 »
Szerintem elég az "alap" tartományok kihagyása, mivel annak maximum szívatási értéke van, ha a programozó nem az eredeti címet, hanem valamelyik "másolat-regisztert" használja. Persze van ilyen is, de elég lesz ám a közel tökéletes lejátszó is a tökéletes helyett. :)
3 lehetőség van, vagy kihagyjuk a full D000-D3FF, és D41A-DFFF tartományt íráskor, vagy teszünk az egészre nagy ívben (így van most), vagy a kódot próbálom meg úgy elrendezni, hogy csak a regiszterismétlésekre essen.

Viszont jól sejtem-e, hogy a problémás zenék nagy része digis, és itt most erről megy a csevej? A digi lejátszása az eredeti vason is erőforrás-igényes, szerintem a CPU emuláció így is - úgy is lassú lesz hozzá. Maximum nem fagy... :)
Úgy vettem észre, hogy igen, nem is az a baj, hogy a digit nem játsza le, hanem az, hogy van jópár SID, ahol az egyik rész digi, a többi meg nem, és ha véletlenül rámegy az ember a digire, akkor lefagy.
Pl a MYTH fagyizik, a GPC nem , csak simán kimaradnak a digi dobok, érdekes módon nem lassul be a lejátszás.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #71 on: 2015.June.10. 13:54:10 »
Az mas kerdes, hogy regen volt a maniam, hogy kene 65xx CPU is a cuccra, sajat memoriaval amit pl I/O portokon at lehet felolteni stb. Ennek meglenne az a vicces kovetkezmenye is, hogy adott esetben lehetne tobb procis rendszernek hasznalni, 65xx futtat vmit elvan magaban, addig az EP/Z80 is, aztan max neha adatot cserelnek. Az nyilvan mar bonyolultabb, ha kozvetlenul is latjak mindketten uazt a memoriatartomanyt, bar akkor meg pl a VIC20 emulator sebessege urgrana meg jelentosen azonnal :) Na jo, visszaterek a foldre ezennel ...
Az oroszok valami ehhez hasonlót csináltak speccyre ZXBlaster néven, majdnem egy full C64-et kötöttek a gépre :lol:

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: SID illesztés EP-hez
« Reply #72 on: 2015.June.10. 13:56:28 »
A C64-es ROM semmilyen segítséget nem nyújt ezekhez a feladatokhoz, azt kötve hiszem, hogy hívogatná bármi is. :)

Így igaz, viszont maguknak a .sid fájloknak a lejátszásához előfordulhat hogy szükséges (mert mondjuk például olyan lejátszó rutint használ, ami a KERNAL megszakításkezelőjét módosítja). Gondolom azon az alapon, hogy a Windows-os lejátszónak van opciója teljes valós környezet, illetve memória lapozás szimuláció beállítására. Csak nem dolgoztak olyan szolgáltatáson aminek nincs semmi haszna.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: SID illesztés EP-hez
« Reply #73 on: 2015.June.10. 14:13:14 »
Így igaz, viszont maguknak a .sid fájloknak a lejátszásához előfordulhat hogy szükséges (mert mondjuk például olyan lejátszó rutint használ, ami a KERNAL megszakításkezelőjét módosítja). Gondolom azon az alapon, hogy a Windows-os lejátszónak van opciója teljes valós környezet, illetve memória lapozás szimuláció beállítására. Csak nem dolgoztak olyan szolgáltatáson aminek nincs semmi haszna.

Mondjuk spec ezt sose ertettem teljesen: mivel a SID file-okban 6510 gepi kod van, elvileg lehetne benne barmi. Node, aki ilyen file-okat csinal csak nem hagyja benne az egesz eredeti programot, aminek semmi koze a hangkelteshez, elvegre akkor SID file helyett lehetne az eredeti program is, es egy teljes es pontos C64 emulator kell hozza, hogy meg lehessen hallgatni :) Szoval mi alapjan es hogyan szoktak ezeket eloallitani? Nem mintha nem C64-eztem volna eleget gyerekkorom ota, de ez kimaradt :)

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #74 on: 2015.June.10. 15:00:48 »
Az mas kerdes, hogy regen volt a maniam, hogy kene 65xx CPU is a cuccra, sajat memoriaval amit pl I/O portokon at lehet felolteni stb. Ennek meglenne az a vicces kovetkezmenye is, hogy adott esetben lehetne tobb procis rendszernek hasznalni, 65xx futtat vmit elvan magaban, addig az EP/Z80 is, aztan max neha adatot cserelnek. Az nyilvan mar bonyolultabb, ha kozvetlenul is latjak mindketten uazt a memoriatartomanyt, bar akkor meg pl a VIC20 emulator sebessege urgrana meg jelentosen azonnal :)

Szép ötletek. De egy 6502 nem lenne-e teljesen típusidegen? :) Ha már ilyen, én tuti "osztott" memóriát csinálnék hozzá, de szerintem itt ez most azért erősen overkill. Ha már plusz CPU, akkor legyen az jó tényleg másra is. :)

3 lehetőség van, vagy kihagyjuk a full D000-D3FF, és D41A-DFFF tartományt íráskor, vagy teszünk az egészre nagy ívben (így van most), vagy a kódot próbálom meg úgy elrendezni, hogy csak a regiszterismétlésekre essen.

Szerintem a legutolsó verzió önmagában sokat segíthet! (De ezt persze semmilyen statisztikával nem tudom alátámasztani. :) )

Úgy vettem észre, hogy igen, nem is az a baj, hogy a digit nem játsza le, hanem az, hogy van jópár SID, ahol az egyik rész digi, a többi meg nem, és ha véletlenül rámegy az ember a digire, akkor lefagy.
Pl a MYTH fagyizik, a GPC nem , csak simán kimaradnak a digi dobok, érdekes módon nem lassul be a lejátszás.

Mivel nincs fix megoldás arra, hogy ezt hogyan is csinálják, ezért mindenre maximum a teljes gép emulációjával lehet felkészülni. De szerintem ez nem is lehet cél. Van bőven sok olyan zene, ami mindenféle extra nélkül is kiváló. :) (Persze ez az én véleményem.)

Így igaz, viszont maguknak a .sid fájloknak a lejátszásához előfordulhat hogy szükséges (mert mondjuk például olyan lejátszó rutint használ, ami a KERNAL megszakításkezelőjét módosítja).

Ez persze előfordulhat, de mintha erre láttam volna valamit a lejátszó forrásában. :) (Itt a $0314/$0315-ös "szoft-vektorról" van szó, amivel az eredeti IRQ rutin "eltéríthető".) Mást a ROM-ból nem gondolnám, hogy használnának. (Persze ez a nagy átlag, kivételeket tuti lehet találni...)

Node, aki ilyen file-okat csinal csak nem hagyja benne az egesz eredeti programot, aminek semmi koze a hangkelteshez, elvegre akkor SID file helyett lehetne az eredeti program is, es egy teljes es pontos C64 emulator kell hozza, hogy meg lehessen hallgatni :)

Azért egy 64K-s adathalomból nem mindig egyértelmű, hogy mi tartozik a zenéhez, illetve mi nem. :) Azoknál a zenéknél, amiknél ismert a lejátszó kód, ott ezt persze nem annyira nehéz megállapítani, de ilyenből azért elég sok fajta van. A régebbiek közül még az sem biztos, hogy mind zeneszerkesztő programmal készült! :)