артефачат обе атомно, не смотря на то, что все кадры в непожатом виде укладываются в 5 кб
Ну, во-первых 5кб это с dma. 'Процессорно' будет в 2раза меньше, около 2-3кб, и то при том, что каждая строчка будет этим заниматься, например каждая строчка перекидывает 4 байта :
lea $c00000,a1 ; vdp data
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
и т.д.
В гинце же это выглядит так, всего 1 строчка перекидывает 2 байта (0xD00), остальные вспомогательно (всякие там счётчики размеров карты, циклы, сброс адреса после каждого ряда и прочее) :
ROM:00000CAA next_column: ; CODE XREF: sub_0_C98+74j
ROM:00000CAA cmp.w arg_6(a6),d4
ROM:00000CAE beq.s loc_0_D0E
ROM:00000CB0 move.w d6,d0
ROM:00000CB2 mulu.w (word_0_FF97D4).l,d0
ROM:00000CB8 add.w arg_0(a6),d0
ROM:00000CBC lsl.w #1,d0
ROM:00000CBE add.w arg_C(a6),d0
ROM:00000CC2 moveq #0,d1
ROM:00000CC4 move.w d0,d1
ROM:00000CC6 move.l d1,d3
ROM:00000CC8 movea.l #$C00004,a3
ROM:00000CCE move.l d3,d0
ROM:00000CD0 and.l #$3FFF,d0
ROM:00000CD6 add.l #$4000,d0
ROM:00000CDC moveq #$10,d1
ROM:00000CDE lsl.l d1,d0
ROM:00000CE0 move.l d3,d1
ROM:00000CE2 moveq #$E,d2
ROM:00000CE4 lsr.l d2,d1
ROM:00000CE6 add.l d1,d0
ROM:00000CE8 move.l d0,(a3)
ROM:00000CEA movea.l #$C00000,a4
ROM:00000CF0 moveq #0,d5
ROM:00000CF2
ROM:00000CF2 write_line: ; CODE XREF: sub_0_C98+6Ej
ROM:00000CF2 cmp.w arg_4(a6),d5
ROM:00000CF6 beq.s loc_0_D08
ROM:00000CF8 movea.l d7,a0
ROM:00000CFA move.w (a0),d0
ROM:00000CFC add.w arg_E(a6),d0
ROM:00000D00 move.w d0,(a4) ; vdp_data
ROM:00000D02 addq.l #2,d7
ROM:00000D04 addq.w #1,d5
ROM:00000D06 bra.s write_line
ROM:00000D08 ; ---------------------------------------------------------------------------
ROM:00000D08
ROM:00000D08 loc_0_D08: ; CODE XREF: sub_0_C98+5Ej
ROM:00000D08 addq.w #1,d6
ROM:00000D0A addq.w #1,d4
ROM:00000D0C bra.s next_column