;C prototype: void CopyScreenBufferToScreen3 (void *src, void *dest1, void *dest2); ; ;void CopyScreenBufferToScreen3 (register void *src asm("%a0"), ; register void *dest1 asm("%a1"), ; register void *dest2 asm("%a2")); xdef CopyScreenBufferToScreen3 CopyScreenBufferToScreen3: move.l d3,-(a7) move.l d4,-(a7) moveq.l #99,d4 bcl_allline: moveq.l #4,d3 bcl_line: ;lightplane ;-------- ;Partie 1 move.l (a0),d0 ;1 move.l d0,d1 and.l #%11000000000000001100000000000000,d1 and.l #%00001110011100110000111001110011,d0 lsl.l #2,d0 or.l d0,d1 and.l #%11111000000000001111100000000000,d1 ;2 and.l #%00000001110011000000000111001100,d0 lsl.l #2,d0 or.l d0,d1 and.l #%11111111000000001111111100000000,d1 ;3 and.l #%00000000001100000000000000110000,d0 lsl.l #2,d0 or.l d0,d1 and.l #%11111111110000001111111111000000,d1 ;Fusion move.l d1,d0 and.l #%00000000000000001111111111000000,d1 lsl.l #6,d1 and.l #%11111111110000000000000000000000,d0 or.l d0,d1 ;Partie3 move.w 4(a0),d0 ;1 move.w d0,d2 or.w d0,d2 and.w #%1100000000000000,d2 add.w d0,d0 and.w #%0011101101110110,d0 or.w d0,d2 and.w #%1111100000000000,d2 ;2 add.w d0,d0 and.w #%0000011011101100,d0 or.w d0,d2 and.w #%1111111000000000,d2 ;3 add.w d0,d0 and.w #%0001110111011000,d0 or.w d0,d2 and.w #%1111111111000000,d2 ;4 add.w d0,d0 and.w #%0000000000110000,d0 or.w d0,d2 and.w #%1111111111110000,d2 lsr.w #4,d2 or.w d2,d1 move.l d1,(a1) ;darkplane ;-------- ;Partie 1 move.l 6000(a0),d0 ;1 move.l d0,d1 and.l #%11000000000000001100000000000000,d1 and.l #%00001110011100110000111001110011,d0 lsl.l #2,d0 or.l d0,d1 and.l #%11111000000000001111100000000000,d1 ;2 and.l #%00000001110011000000000111001100,d0 lsl.l #2,d0 or.l d0,d1 and.l #%11111111000000001111111100000000,d1 ;3 and.l #%00000000001100000000000000110000,d0 lsl.l #2,d0 or.l d0,d1 and.l #%11111111110000001111111111000000,d1 ;Fusion moveq.l #0,d0 move.l d1,d0 and.l #%00000000000000001111111111000000,d1 lsl.l #6,d1 and.l #%11111111110000000000000000000000,d0 or.l d0,d1 ;Partie3 move.w 6000+4(a0),d0 ;1 move.w d0,d2 or.w d0,d2 and.w #%1100000000000000,d2 add.w d0,d0 and.w #%0011101101110110,d0 or.w d0,d2 and.w #%1111100000000000,d2 ;2 add.w d0,d0 and.w #%0000011011101100,d0 or.w d0,d2 and.w #%1111111000000000,d2 ;3 add.w d0,d0 and.w #%0001110111011000,d0 or.w d0,d2 and.w #%1111111111000000,d2 ;4 add.w d0,d0 and.w #%0000000000110000,d0 or.w d0,d2 and.w #%1111111111110000,d2 lsr.w #4,d2 or.w d2,d1 move.l d1,(a2) addq.l #6,a0 addq.l #4,a1 addq.l #4,a2 dbf d3,bcl_line lea.l 30(a0),a0 lea.l 10(a1),a1 lea.l 10(a2),a2 dbf d4,bcl_allline move.l (a7)+,d4 move.l (a7)+,d3 rts