Szoval ugy tunik, hogy lehet vele badline-t elhalasztani, de nem teljesen vilagos, hogy mikor-hogyan mukodik. Egyszer kiprobaltam, hogy eroszkosan csak minden masodik sorban engedtem noni, ennek egy ketszeres kepernyo nyulas volt az eredmenye. Tehat badline valszeg elhalasztodott. Viszont ha csak ugy atalitod mondjuk a kepernyo kozepen, akkor a badlineok ugyanott jonnek csak a karakterek "korbecsusznak".
Ja es van egy olyan sideeffektje a kododnak, hogy a double speed-es burst resz a sor vegen nem indul el, ott is single clockban megy a proci, ezert kell annyit irnod a masodik $ff1e-be amennyit irsz.
Na akkor meseld el, hogy ez mi! Mert tenyleg allitanom kellett masodik irast, hogy stabil legyen.
Double clock modban a sor vegen van egy 16 ciklus-os resz a bekapcsolt kepernyos sorokban, amit burst-nek hivnak, itt megkapja a CPU a double clock ciklusokat is. Az hogy ez elinduljon szinten $ff1e-hez van kotve, ha kihagyod azt a ciklust a $ff1e-ben ami ezt elinditja, akkor ez nem indul el. Mivel atirod az $ff1e-t, es soha nem veszi fel azt az erteket ami ezt elinditja ezert ki is marad.
Tulajdonkeppen ott nincs DMA, hanem ket modul a TED-en belul, az egyik csak annyit csinal hogy elhozza a bitmap-et. Ennek bemeneti parameterei a kulonbozo mode regiszterek, hogy ki tudja szamitani a cimet ahonna el kell hoznia, es DMA buffer-ben levo character kod.
A masik modul, pedig semmi mast nem csinal csak vegig megy a belso DMA buffer-en (amit a DMA sor mar feltoltott) es adja ezeket az offseteket az elsonek.
Az effektem vegul is annyit csinalt hogy az elso modult elinditotta korabban, es kesobben allitotta le, mig a masik modult nem tudta befolyasolni. Ezert van az hogy a ket extra karakter character kodnak es szinnek is 0-at kap, valoszinuleg ez a default allapot azokon a vezetekeken ami a ket modult osszekoti, amig nem megy a masodik.
Tenyleg, ezt mar akartam is egyszer kerdezni. A 40 karaktert meg megmagyarazhatjuk a DMA buffer meretevel. De ezek szerint ha jol ertem a color/character DMA az FF1E-tol fuggetlenul mindig ugyanazon kepernyopizicioban indul el? Ez erdekes.
Nem biztos, csak lehet hogy hamarabb kellene irni $ff1e-t mint ahol irok, csak akkor meg szet esne a kep, mert a Hblank nem fejezodne be.
Masik dolog ami nem tiszta nekem, hogy a color DMA ugye mar a 7. rasztersor elejen beindul a kovetkezo karaktersorra. Viszont meg azelott, hogy a kirakando aktualis karakter szinet meg utoljara hasznalnank, es igy elvileg felul kene irodnia... Van itt valami belso latch-eles a TED-ben? Double buffer valoszinuleg.
a DMA-t nem befolyasolja, az stabilan ugyanott marad ahol eredetileg volt, es a merete sem valtozik 40 karatert olvas tovabbra is
Tenyleg, ezt mar akartam is egyszer kerdezni. A 40 karaktert meg megmagyarazhatjuk a DMA buffer meretevel. De ezek szerint ha jol ertem a color/character DMA az FF1E-tol fuggetlenul mindig ugyanazon kepernyopizicioban indul el? Ez erdekes.
Masik dolog ami nem tiszta nekem, hogy a color DMA ugye mar a 7. rasztersor elejen beindul a kovetkezo karaktersorra. Viszont meg azelott, hogy a kirakando aktualis karakter szinet meg utoljara hasznalnank, es igy elvileg felul kene irodnia... Van itt valami belso latch-eles a TED-ben?
Egyebkent az miert van, hogy meg kikapcsolt kepernyonel is ugy tunik, hogy single clock uzemmodba kapcsol a TED a rasztersor vege fele.
5 ciklus RAM refresh.
Egyebkent olvasd vegig a plus4 lista archivumat, fennt van a plus4.emucamp.com-on.
Elso level:
http://plus4.emucamp.com/ma.php?maid=1
next-el mehetsz a kovetkezore, eleg sok van, de erdemes vegignezni, mert sok info van elszorva.
Ajanlom peldaul ezt:
http://plus4.emucamp.com/ma.php?maid=15
Csabo nem akarod megfixalni az idezetek szinet kulonben? Nem valami olvashato, pl:
http://plus4.emucamp.com/ma.php?maid=18
A five magic-ban egyebkent tulkeppen mi van? Meg nem sikerult megneznem.
Ott minden sor sima nem DMA-s sor. Harom $ff1e iras van a sorban, az elso meg joval a kepernyo kezdete elott a hblank utan, ez elorebb allitja a $ff1e erteket, igy kivaltja, hogy a bitmap fetcheles hamarabb indul be, a masodik a sor kozepen van, kisebbre allitja az $ff1e-t meg annal is mint aminek ott lennie kellene, ezzel biztositja, hogy a bitmap fetcheles kesobb alljon le mint kellene neki, es a harmadik iras pedig a sor vegen helyre allitja az $ff1e-t. Gyakorlatilag ugyanaz mint az $ff1d-s kep bovites. Viszont erdekes modon a DMA-t nem befolyasolja, az stabilan ugyanott marad ahol eredetileg volt, es a merete sem valtozik 40 karatert olvas tovabbra is. A ket extra karakternek a sor elejen es vegen stabilan 0-as szine van, es a karakterkodja is 0. (Hogy mas jelenjen meg az utolsoban mint az elsoben a sor kozepen es vegen atirom a character bitmap-jet is). A jobb oldalan lehetett volna meg egy karakter, de nincs eleg ciklus hogy annak is updateljem a bitmap-jet, az ugyanaz lett volna mint a 42. ugyhogy azt hanyagoltam.
Igen nekem is ez a masik modszerem. Az fli-nel asszem igy csinalom. Igyenkor viszont dupla megszak kell, azaz lassabb a dolog. Es a kitudja hany nop miatt nem is feltetlenul rovidebb.
single clock uzemmodba kapcsol a TED a rasztersor vege fele
Ennek ket oka lehet, vagy letiltottad explicite a double clock-ot (FF13, bit #1) vagy bizonyara a DRAM refresh-re gondolsz, ahol 5 ciklusban single clock-kal megy a proci...
Ja es van egy olyan sideeffektje a kododnak, hogy a double speed-es burst resz a sor vegen nem indul el, ott is single clockban megy a proci, ezert kell annyit irnod a masodik $ff1e-be amennyit irsz.
Na akkor meseld el, hogy ez mi! Mert tenyleg allitanom kellett masodik irast, hogy stabil legyen.
Na nekem is el kellene mar olvasnom a doksikat amik fellelhetok, nem csak mindig kiserletezni! :)
Egyebkent az miert van, hogy meg kikapcsolt kepernyonel is ugy tunik, hogy single clock uzemmodba kapcsol a TED a rasztersor vege fele.
Ha igazad van, akkor: a fenebe! :) Marpedig valszeg igazad van, mert eddig tenyleg nem sikerult semmit rakni oda. :( (Egyebkent az eor #$ff-el kapcs igazatok volt.)
A five magic-ban egyebkent tulkeppen mi van? Meg nem sikerult megneznem.
Ja es van egy olyan sideeffektje a kododnak, hogy a double speed-es burst resz a sor vegen nem indul el, ott is single clockban megy a proci, ezert kell annyit irnod a masodik $ff1e-be amennyit irsz.
Ha biztositja az ember, hogy az interrupt NOP-okon tortenjen ami eleg egyszeru, akkor egy sokkal rovidebb kodreszlettel lehet stabilizalni.
De az is megcsinalhato, hogy meg az interrupt elott stabilizalod ezen NOP-ok es az interrupt egymashoz viszonyitott fazisat, es akkor az interruptban mar nincs szukseg semmilyen szinkronizalasra, mar a kivaltas is stabil helyen tortenik.
Bubis meg este megneztem a kododat, csak aztan a UPC megallt, ugyhogy most mondom a kommenteket.
Ez amit irtal gyakorlatilag ugyanaz mintha 38/40 valtassal szedned le a keretet, tehat az extra helyeken csak a hatterszint latod semmi mast. Ha lecsereled a ket $ff1e irast $ff07 irasra, mukodik is rendesen (persze az A es X erteket updateld). A $9a ciklusban van az elso $ff1e iras, ez a ciklus ugye 2 cpu altal hasznalhato ciklussal van a DMA vege utan, es pont az utolso megjelenitett karakter elso feleben fut, ezert meg a latchelesbe belefer a keret inditas kesleltetese, de mivel a bitmap fetcheles mar regen leallt es mar az elozo ciklusban RAM refresh ment, ezert nem is fog a TED semmi megjelenitheto informaciot beolvasni ezekre a teruletekre.
Szinte szóról-szóra ugyanezt a módszert használtam, azzal a különbséggel hogy nem jutott eszembe a cmp #$c9-es poén ;-), ezért a 2x ciklussal NOP-okkal, a maradék 0+1 ciklussal pedig egy feltételesen végre- vagy végre-nem hajtódó bcs *+1 -gyel bántam el :-).
Ami engem illet, a kov. TED-es dolog amit meg szeretnek csinalni az a DMA delay. Bar nem az, csak hasonlo, de mind1. :) Termeszetesen annak a forrasat is kozre adom majd.
Heh, nyilvantartanak :-) Nyilvan tartanak tolem ( (C) Kontroll Csoport? ) :-) A problemat Luca jelezte. Ha kiprobalsz olyan zeneket, mint pl. ami a Treasure Island-ben van akkor hallhato... Az utolso pillanatban attertem a Te pwm tablad hasznalatara a regi helyett, es abban faltol-falig ertekek voltak (0-65535). Ezt ugyan normaltam 0-255-re, mert 8-bites a buffer, amit hasznalok, am a regi tablamban 0-127 kozotti ertekek voltak. Na most ha ketszolamban mindket csatorna ugyanazon frekin jatszik akkor interferencia helyett ilyen recsegesfele lesz belole (ezt hallhatod is a 0.46-ban, sajnos). A filternek nincs ra hatasa... Ezt egyelore ugy oldottam meg, hogy 0-255 helyett 0-127-re normaltam a tablazatot. Van ezzel meg mas gondom is, de majd talan jobb ezt privatban ;-)
Jut szembe: mit szoltok Bionic/Synergy "talalmanyahoz"? Nagyon erdekelte a noise sample, elkuldtem neki is, es erre masnap meglepett a shift regiszter feltetelezett rajzaval... :-)
Hasonlo tema: kozben probaltam atirni a DirectSound kodomat, mert neha betorzit (olyankor gyors oda-vissza kell kapcsolni mas alkalmazas es a Yape kozott). Sikerult is egy szepen jatszo kodot csinalni, de ez most meg neha akar egy mp kesesbe kerul az emuhoz kepest. A hajamat teptem :-( Mindegy, ennek majd igyekszem utanajarni, amennyire idom engedi, es akkor majd kicserelem a DSound kodot az ujra.
Tenyleg! Latjatok, hogy hogyan stabilizalom ki a raszter megszakot. Ha nem lenne vilagos ff1e alapjan a bpl-el beleugrok egy kodba (sok cmp, vegen nop) aminek az a jo tulajdonsaga, hogy ha barhol egy byte-al kesobb ugrassz bele, akkor egy ciklussal gyorsabban hajtodik vegre. Igy meg ugyanazon a rasztersoron ahol a megszak tortent stabilizalni lehet. A kereten egy kicsit modusul a kod, ez screenen jo, ahol nincs badline.
A kerdesem az, hogy milyen stabil raszter eloallitasokat ismertek meg!