include "includes.i" xref InstallColorPalette xref PokeBitplanePointers xref copperList xref copperListAlternate Entry: lea CUSTOM,a6 jsr Init .mainLoop: jsr WaitVerticalBlank if INTERLACE==1 btst #VPOSRLOFBIT,VPOSR(a6) beq.s .lof lea copperListAlternate(pc),a0 move.l a0,COP1LC(a6) bra .done .lof: lea copperList(pc),a0 move.l a0,COP1LC(a6) .done endif ; INTERLACE==1 bra .mainLoop PokeBitplanePointers: ; d0 = frame offset in bytes, a0 = BPLP copper list address movem.l d0-a6,-(sp) lea bitplanes(pc),a1 add.l d0,a1 ; Offset for odd/even frames moveq #SCREEN_BIT_DEPTH-1,d0 .bitplaneloop: move.l a1,d1 move.w d1,2(a0) swap d1 move.w d1,6(a0) lea SCREEN_WIDTH_BYTES(a1),a1 addq #8,a0 dbra d0,.bitplaneloop movem.l (sp)+,d0-a6 rts InstallColorPalette: include "out/image-palette.s" rts if INTERLACE==1 copperListAlternate: ;; bitplane pointers must be first else poking addresses will be incorrect dc.w BPL1PTL,0 dc.w BPL1PTH,0 dc.w BPL2PTL,0 dc.w BPL2PTH,0 dc.w BPL3PTL,0 dc.w BPL3PTH,0 dc.w BPL4PTL,0 dc.w BPL4PTH,0 dc.w BPL5PTL,0 dc.w BPL5PTH,0 dc.w BPL6PTL,0 dc.w BPL6PTH,0 dc.l $fffffffe endif; INTERLACE==1 copperList: ;; bitplane pointers must be first else poking addresses will be incorrect dc.w BPL1PTL,0 dc.w BPL1PTH,0 dc.w BPL2PTL,0 dc.w BPL2PTH,0 dc.w BPL3PTL,0 dc.w BPL3PTH,0 dc.w BPL4PTL,0 dc.w BPL4PTH,0 dc.w BPL5PTL,0 dc.w BPL5PTH,0 dc.w BPL6PTL,0 dc.w BPL6PTH,0 dc.l $fffffffe bitplanes: if HAM_MODE==1 incbin "out/image-ham.bin" else incbin "out/image.bin" endif