Adam Klobukowski napisał/a:Blokowanie szyny podczas pracy (nawet w trybie HOG),
 a który blitter tak nie robi? Pamięć RAM ma to do siebie że na raz korzystać z niej może tylko jedno urządzenie. Więc 68000 w zależności od sytuacji blokowany jest przez MMU/Shiftera, ACSI, FDC no i blittera.
Ale chyba wiem co chciałeś powiedzieć - w trybie HOG blitter przejmuje szynę danych na cały proces blittowania. W trybie Blit-mode dzieli się szyną z procesorem w czasie pracy. 
Zgaduję że problemem w/g ciebie jest współdzielenie szyny 64/64 (64 cykle dla blittera i 64 dla procesora) w Blit-mode.
No nie wiem, dla mnie to jest ok. Oczywiście pewnie Atari mogło lepiej rozwiązać współdzielenie szyny w Blit-mode ale dla "chcącego nic trudnego". Jakieś 7 lat temu na Atari-Forum dodałem skromy wpis, w jaki sposób używać CPU i blitter równocześnie. 
Tutaj np. masz screen z 3D Full Leonarda/Oxygene. Jest to overscan połączony z obiektem 3d wypełnianym blitterem:

Adam Klobukowski napisał/a:nie do wyeliminowania trzaski a dźwięku DMA itp.
 szczerze mówiąc nigdy nie słyszałem o tym problemie. masz może jakiś konkretny przykład? jakieś demo, aplikację?
jury napisał/a:Znaczy się, że np jeśli chciałbym skopiować zwykłą bitmapę 32x64 pikseli procesorem i blitterem, to blitter zrobiłby nieporównywalnie ( bo "wielokrotnie" tak rozumiem ) szybciej?
 ok, chcemy tylko przekopiować sprite 32x64. 
Mój kod, licząc samą pętlę zrobi to w 3072 cylki:
    lea        Dane(PC),A0
    lea        Dane+1000(PC),A7
    moveq    #63,D0
Petla3
    move.l    (A0)+,(A7)+        ;20 cycles
    lea        156(A0),A0        ;8 cycles
    lea        156(A7),A7        ;8 cycles
    dbra.w    D0,Petla3        ;12 cycles
Blitter w 1024 cykle
Jeśli jednak chcemy przesuwać sprite po ekranie to trzeba go rolować. Poniższy kod roluje o 3 pikseli w prawo i zajmuje mu to w 4224 cykli
    lea        Dane(PC),A0
    lea        Dane+1000(PC),A7
    moveq    #63,D0
Petla4
    move.l    (A0)+,D1        ;12 cycles
    ror.l    #7,D1            ;24 cycles
    move.l    D1,(A7)+        ;12 cycles
    lea        156(A0),A0        ;8 cycles
    lea        156(A7),A7        ;8 cycles
    dbra.w    D0,Petla4        ;12 cycles
Blitter potrzebuje 1024 cykle
maciekm napisał/a:1)  czyścisz ekran na wszystkich 4 bitplanach. jestem w stanie napisać do tego szybki kod CPU:  movem na wzystkich rejestrach z ujemnym indeksowaniem oraz z unrollowanym loop'em. To jest już dość szybkie. Blitter będzie szybszy, ale różnica biorąc pod wzgląd, że kodujesz cały efekt a to tylko jakiś element nie będzie znacząca.
 blitter czyści lub wypełnia paternem pamięć w tempie jedno słowo na 4 cykle.
Tutaj właśnie widać zaletę blittera vs unrolowany kod. Blitter zrobi to szybciej no i procedura zajmie zaledwie parę bajtów.
maciekm napisał/a:moja osobista opinia ogólna jest taka, że blitter od strony technicznej używa się łatwo i przyjemnie (oprócz paru problemów które napisał Adam), ale cieżko jest znaleźć dla niego zastosowanie praktyczne w efektach. tzn napisać efekt tak by byl z założenia oparty na blitterze i był jako całość 2 razy szybszy niż na CPU. nie mówię, że się nie da (patrz cieniowanie o którym pisał Cyprian), ale jest to trudne. dlatego częściej jest używany imho tylko pomocniczo... (gdzie w Amidze koder dostawał od razu szybkie rysowanie linii, wypełnianie polygonów itp)
czyli nie mowię tutaj o matematycznej różnicy szybkości operacji... a raczej o praktycznych obserwacjach, które ja mam.
 Nie znam się na scenowym programowaniu (chyba się zapiszę na lekcje do Ciebie :) ), nie będę się więc wypowiadał na temat konkretnych efektów.
Wiem tylko że blitter nie jest odpowiednikiem np. CPU czy GPU - nie jest uniwersalny. Został zaprojektowany do ściśle określonych prostych zadań. Najważniejsze żeby mieć pomysł jak go wykorzystać.
Co do czyszczenia pamięci, to nie myślałeś wykorzystać do tego blitter i Makra?
Jedno makro inicjujące blitter na początku programu, drugie uruchamiające operację blittera ?
						ATW800/2 / Atari V4sa / Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
SUB/AVGcart / FujiNet / DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org