Chilly Willy wrote:The dots are strictly due to WHEN you write the palette.
I understand.
Chilly Willy wrote:If you write to cram during the active video line, the fetched cram is replaced by the value written to cram, regardless of the entry.
I know it too. But, to avoid those dots, I need to do update during inactive video line. Is there so period? How to catch start of it.
Now update start RIGHT after VBLANK interupt occurs.
Chilly Willy wrote:The VINT occurs after the last active display line, which is also the start of the vertical blank period.
Vertical blank period means that no active line? I just want to be sure with meaning of "blank" word. I assume that after VINT, there is some time before next active line (first), and that this delay much longer than delay between two active line in middle.
Chilly Willy wrote:You could do the update IN the vblank int handler, or you could set a flag telling the main task that NOW is the time to do updating.
I do so. wait_vblank - it is "NOW". But, as I see, this "NOW" = bad moment, or update proc takes too much time, so it handles due active lines.
Chilly Willy wrote:This displays an advancing clock, but a few tiles are messed up (w, x, y, and the arrow are trashed... probably every tile from w to the end are trashed).
So, DMA works. Answer to first question of topic is: any size. This "part" of DMA works as expected. Only one thing left: DMA on flag in #1 register clears it's state or not.
Chilly Willy wrote:
Be sure your data being DMAd is not crossing a 128KB boundary.
Not crossing.
Shows Joypad:
http://elektropage.ru/r57shell/GEMS_Player_cut_dma.bin
And, without: move.w #$8174,($C00004).l, so DMA turn ON only once.