Welcome, Guest. Please login or register.


Author Topic: Assembly programozás (Read 254545 times)

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #660 on: 2013.November.04. 15:54:34 »
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #661 on: 2013.November.04. 15:58:39 »
Quote from: IstvanV
Én erre külön táblázatot használtam, ami hanggenerátoronként elfogyaszt 14 ciklust. :oops: Viszont kevesebb memória használatával lehet 15-nél több szint (ami a burkológörbe generátorral előfordulhat), és a sok táblázatos PWM emulációval kombinálva nem lesz elfogadhatatlanul nagy a memória igény. Azaz valami ilyesmire gondoltam:
- 2 * 256 byte táblázat a fűrészjelhez és háromszögjelhez
- 1 * 256 byte táblázat rossz minőségű (rövid ciklusban ismétlődő) "zaj" emulációhoz; a másik megoldás a DAVE 17 bites polinom számlálójának a használata
- 16384 byte táblázat 6 bites hangerőhöz (ha az előző táblázatok csak 6 bites értékeket tartalmaznak, akkor valójában 256 byte-onként 192 byte-os "lyukakat" tartalmazna, amelyeket egyéb célra is fel lehetne használni)
- 8192 byte táblázat 5 bites PWM emulációhoz (tulajdonképpen 8448 byte kellene ahhoz, hogy 0 és 1 között 1/32 lépésekben lehessen állítani a kitöltési tényezőt)
- 32 KB területen még marad 7 KB szabad memória további táblázatokhoz

2 belapozott szegmensen a különböző táblázatok lennének, egyen a kód és egyéb adatok/változók, egyen pedig a lejátszandó zene.
Na, én ezt a 15 - nél több hangerő szintet nem vettem figyelembe, mondjuk ami adatot ki tudok nyerni, az csak 15 szintű.
Először én is a kinyert zaj sample alkalmazására gondoltam, de aztán arra hutottam, hogy a zajt tök jól le tudnánk játszani a 17 bites polinom számláló beállításával, csak akkor kell egy nagyobb frekvencia konverziós tábla is, vagy eleve a zajnál a konvertált regiszter tartalmat kimenteni, és nem a SID regiszter értékeket.
Ezt a 16k-s hangerő táblázatot nem értem, azt hittem, hogy csak 256 byte-nyi az is

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Assembly programozás
« Reply #662 on: 2013.November.04. 16:37:33 »
Quote from: geco
Először én is a kinyert zaj sample alkalmazására gondoltam, de aztán arra hutottam, hogy a zajt tök jól le tudnánk játszani a 17 bites polinom számláló beállításával, csak akkor kell egy nagyobb frekvencia konverziós tábla is, vagy eleve a zajnál a konvertált regiszter tartalmat kimenteni, és nem a SID regiszter értékeket.
A táblázatos zaj generálás egyszerűbb, mert csak 256 véletlenszerű (a négyszögjel alacsony és magas értéke közötti tartományban) byte-ot kell írni a táblázatba, és a frekvenciát 16-al osztani, illetve az eredeti SID frekvenciához képest 4 helyett 64-el. Azonban az így lejátszott "zaj" zavaróan ismétlődik, és a Plus/4 zajgenerátorához (ami egy 8 bites polinom számláló) hasonló, ha nem is használhatatlanul rossz. Ezt javítaná a DAVE polinom számláló használata, bár annak csak 2 értékű kimenete van, és bonyolultabb a konverzió: fDAVE = 250000 / (fSID * 0.939606) - 1, ha a SID órajele 985249 Hz (PAL C64); a hangerőt is csökkenteni kell, de ez egyszerűen megoldható a "hullámforma" táblázatba 256 fix értéket írva, ami beállítja a helyes hangerőt. Nagy méretű táblázat is jó megoldás lenne, csak túl lassú.

Quote from: geco
Ezt a 16k-s hangerő táblázatot nem értem, azt hittem, hogy csak 256 byte-nyi az is
A táblázat címzése két értékkel történik: az eredeti hangmintával, és a hangerővel. A mérete tehát ezek lehetséges értékei számának a szorzata (pl. 64 * 64, de a 64 * 256 címzése gyorsabb).
« Last Edit: 2013.November.04. 16:41:32 by IstvanV »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Assembly programozás
« Reply #663 on: 2013.November.04. 19:12:46 »
Apropo SID ... Van egy project ami AVR mikrokontrollerrel emulal SID-et - allitolag egesz jol - es hw szinten compatible, azaz pl a C64 SID helyere odarakhato. Persze ez sajna EP-n kevesbe segit, 24MHz-en hajtott RISC CPU-val (ami ugyan 8 bites, de a legtobb utasitasa egyetlen orajelciklust igenyel csak) az EP 4MHz-en futo Z80-a nehezen tudna felvenni a versenyt. Mindazonaltal esetleg mint otlet hasznalhato nehany teruleten legelabbis, ha valaki ert az AVR assembly-hez. En sajna zene teren egy nulla vagyok :(

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #664 on: 2013.November.04. 19:37:10 »
Van is egy német internetes bazár, ahol kb. 13 Euróért lehet vásárolni abból a kivitelből (SwinSID Nano) ami a DIL 28-as tok helyén elfér, 12/9V-ról egyaránt megy és választható hogy 6581-et vagy 8580-at emuláljon. Már ha esetleg valakinek gusztusa támadna hozzábarkácsolni ilyesmit az EP-hoz. Bár szerintem ez még sokkal típusidegenebb dolog, mint a plus/4-et bővíteni SID-del. A Z80-as világban inkább az YM2149/AY-3-8910 volt a jellemző, szóval ha valamit, akkor inkább azt. Szerintem.

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Assembly programozás
« Reply #665 on: 2013.November.04. 19:38:22 »
ohohóóó, látom fertőző Z80System betegsége, már mindenki komondort akar faragni az EP-ből
:twisted:
Vigyázat! Szektás vagyok! :)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Assembly programozás
« Reply #666 on: 2013.November.04. 19:42:22 »
Nem bátorítok én senkit, csak ha ilyesmire támadna valakinek ingerenciája - fene a gusztusát - akkor legalább könnyen tervezhesse merre rohamozzon. :lol:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Assembly programozás
« Reply #667 on: 2013.November.04. 20:53:29 »
Quote from: IstvanV
Ezt javítaná a DAVE polinom számláló használata, bár annak csak 2 értékű kimenete van, és bonyolultabb a konverzió: fDAVE = 250000 / (fSID * 0.939606) - 1, ha a SID órajele 985249 Hz (PAL C64); a hangerőt is csökkenteni kell, de ez egyszerűen megoldható a "hullámforma" táblázatba 256 fix értéket írva, ami beállítja a helyes hangerőt. Nagy méretű táblázat is jó megoldás lenne, csak túl lassú.
A sid playerben van egy 4096 elemű konverziós táblázat, ha a zajhoz azokat az értékeket mentenénk le, akkor csak be kell tolni a Dave-nek, erre gondoltam, Meg az egészet úgy, hogy van két verzióm, az egyik sid player a SID regisztereket menti, a másik meg a Dave ragisztereket lejátszás közben, minden megszakításban, a kettőt összegyúrva, miből mi kell, lehetne talán a legkevesebb lejátszás közbeni adatátalakítással megúszni az egészet. ( a freki, és a hullámforma értékeket a SID regisztereket mentő változatból, a zaj freki, és a hangerő értékeket meg a Dave regisztereket mentő változatból, vagy esetleg csinálni egy 3. verziót, ami azt menti le, amit kell :D ) Ezt összenyomni egy egyszerű, és gyors tömörítéssel, hogy ne legyen nagy a file, az eddigi pár zenénél ezt manuálisan csináltam :D
Quote
A táblázat címzése két értékkel történik: az eredeti hangmintával, és a hangerővel. A mérete tehát ezek lehetséges értékei számának a szorzata (pl. 64 * 64, de a 64 * 256 címzése gyorsabb).
Akkor nem egyszerűbb a 2 hullámformára megcsinálni a 15 volume változatot, ami kevesebb, mint 8k, és azt változó frekivel lejátszani? :ooops:
A négyszögjelnél meg az említett 32-t, és azt a megfelelő volume értékkel lejátszani?

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Assembly programozás
« Reply #668 on: 2013.November.04. 21:01:38 »
Quote from: endi
ohohóóó, látom fertőző Z80System betegsége, már mindenki komondort akar faragni az EP-ből
:twisted:

:D Oh, szo sincs rola, max csak arrol, hogy lehet programbol is generalni sample hangmintat, erre egy pelda a SID emulalasa. Nem azt mondtam, hogy pont ez kene EP-be ...

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #669 on: 2013.November.05. 08:18:03 »
tud valaki abban segíteni, hogy hogyan kell grafikus lapot létrehozni (nem EXOS-szal)? Arra gondolok, hogy le van foglalva szabályosan egy videoszegmens, és egy szegmensen van az egész videomemória, szegmenshatáron kezdődően. 16 színű, hi-res, 160x240 képernyő kéne. Az lenne a legjobb, ha lennének kommentek, hogy hol lehet palettát, BIAS-t állítani, hol lehet nagyobb (több pixelsort) állítani, színmódot állítani (tudom, hogy az LPT-t kell birizgálni hozzá, de bevallom férfiasan, hogy nem nagyon értem...)
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #670 on: 2013.November.05. 08:53:31 »
Ide raktam be ilyesmi példát. Az ugyan 320x200 4 szín, de talán rájössz, hol kell átírni :-)
Nehezítés, hogy a 240 sorhoz már 2 videószegmens kell.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #671 on: 2013.November.05. 08:58:24 »
köszi, ilyenre gondoltam :-)
rémlett is, mintha már lett volna ilyen kód valahol
fölrakhatom az EP-WIKI-re, hogy nem merüljön el a fórumok mélyén?

egyébként valószínűleg elég lesz a 200 pixeles magasság is...
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #672 on: 2013.November.05. 09:05:41 »
Quote from: Povi
fölrakhatom az EP-WIKI-re, hogy nem merüljön el a fórumok mélyén?
Nyugodtan!

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Assembly programozás
« Reply #673 on: 2013.November.05. 09:27:02 »
Zozo, bocs a béna kérdésért... de:
a VIDCIM1-en eltárolt cím mutatja meg, hol kezdődik a grafikus memória (bal felső pixel címe).
a VIDCIM1-re eltárolt videomemória cím az abszolút Z80 cím? (nem tudom, érthető-e a kérdés...). Mert azt látom, hogy az igényelt videoszegmens a 3-as lapra lesz belapozva. Vagyis VIDCIM1 értéke >= 0C000H? Vagy ez mindig 0C000H lesz?
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Assembly programozás
« Reply #674 on: 2013.November.05. 09:42:54 »
A VIDCIM1 az videócím, a kapott szegmens számából van számolva (ahogy a fórum beszámozta, a 44-54 sorokban), tehát változhat.
Mivel a 3. lapra van belapozva, a képernyő memória Z80-as címe az 0C000h, fixen (hacsak nem lesz átlapozva).