Coppershade tutorialinden blitter'in nasıl çalıştığına şöyle bir baktım. Orda bir uyarı var:
"The Blitter runs on DMA, but shares cycles with the CPU, so that a heavy Blitter operation will block chipmem accesses for the CPU and make the code run slower. You can make the blit finish faster (when the operation is such that not all CPU cycle slots are already taken) by setting the BLTPRI bit in DMACON. Conversely, you can force every fourth cycle to be available for the CPU so that they can work concurrently by clearing this bit."
Peşinden wikipedia'da:
"certain chipset DMA, such as high-resolution graphics with a larger color palette, Copper, or blitter operations, can use any spare cycles, effectively blocking cycles from the CPU. In such situations CPU cycles are only blocked while accessing shared RAM, but never when accessing Fast (CPU-only) RAM (when present) or ROM"
Yani, Blitter (ya da diğer chipset elemanları) Chip Mem üzerinde operasyon yaparken (ki chipset sadece chipmem'e erişebiliyor) CPU sırasını bekler. Bu ne demek oluyor? Zx Spectrum ile bire bir aynı durum. Burada şöyle bir işlem yapabiliyorsunuz: işi blitter'e paslayıp siz fastmem'de CPU ile rahatça çalışabiliyorsunuz. Fakat ekran kaşesi chipmem'de tutulmak zorunda olduğu için bu sırada CPU ile ekrana dokunmanız size zarar yazıyor, çünkü o zaman en iyi ihtimalle CPU'yu %25 hızında kullanabiliyor olacaksınız (Blitter'in bir seçeneği var, 3 çizip 1 bekleyebiliyor CPU için).
Tabii bir ekstra not: ilk alıntıdaki "spare cycles" mantığı da şu, Amigada 68K sadece çift cycle değerlerinde chipram'e erişebiliyormuş. Tek değerlerde chipset erişiyormuş, bu durumda bir çakışmanın önüne geçiliyor. Eğer yaptığınız işlem o "tek değerlerde" halledilebiliyorsa CPU yine rahatça çalışıyor. Anladığım kadarıyla bu boş cycle'ların blitter fill için kullanılması pek mümkün değil. Yanılıyor olabilirim, bu 10 dakikalık bir okumanın sonucuydu. El birliği ile çözeriz zamanla bu sorunu