home *** CD-ROM | disk | FTP | other *** search
- XDEF _showline
- XDEF _showlines
-
- _showlines
-
- movem.l d0-a6,-(a7) ;60 bytes
-
- ;-------------------------------------
- ; step 1: 24bit to 8bit chunky
-
- lea (rtab+1,pc),a4
- lea (gtab+1,pc),a5
- lea (btab,pc),a6
-
- move.l (60+4,a7),a0 ;*data 60
- move.l (chunkypt,pc),a1
- move.l (72+4,a7),d0 ;bpr
- lea (a1,d0*8),a2
-
- move.l (80+4,a7),d7 ;width
- subq #1,d7
-
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- .loop0 move.b (a0)+,d0
- move.b (a0)+,d1
- move.b (a0)+,d2
- move.b (a4,d0.l*2),(a1)+ r
- move.b (a5,d1.l*2),(a1)+ g
- move (a6,d2.l*2),(a2)+ b
- dbf d7,.on0
- bra.b .end0
- .on0 addq.l #3,a0
- dbf d7,.loop0
- .end0
-
-
- ;-------------------------------------
- ; step 2: 8bit chunky to planar
- move.l (chunkypt,pc),a0
- move.l (64+4,a7),a1 ;*bm0
- move.l (72+4,a7),d1 ;bpr
- move.l (68+4,a7),d0 ;line
- mulu d1,d0
- lea (a1,d0.l),a1
-
- move d1,d6
- subq #1,d6
-
- move.l (76+4,a7),a6 ;psize
- lea (a1,a6.l*2),a2
- lea (a2,a6.l),a2
-
- move.l #$0f0f0f0f,a3
- move.l #$33333333,a4
- move.l #$5555aaaa,a5
-
- .c2p_loop **16 pixels per loop**
- swap d6
-
- move (a0)+,d0
- move d0,d4
- lsl #8,d4
- move (a0)+,d1
- move d1,d5
- lsl #8,d5
- move (a0)+,d2
- move d2,d6
- lsl #8,d6
- move (a0)+,d3
- move d3,d7
- lsl #8,d7
- move.b (a0)+,d0
- swap d0
- move.b (a0)+,d4
- move d4,d0
- move.b (a0)+,d1
- swap d1
- move.b (a0)+,d5
- move d5,d1
- move.b (a0)+,d2
- swap d2
- move.b (a0)+,d6
- move d6,d2
- move.b (a0)+,d3
- swap d3
- move.b (a0)+,d7
- move d7,d3
-
- move.l a3,d7
- move.l d0,d4
- and.l d7,d0
- eor.l d0,d4
- lsl.l #4,d0
- move.l d2,d5
- and.l d7,d5
- eor.l d5,d2
- lsr.l #4,d2
- or.l d5,d0
- or.l d4,d2
- move.l d1,d4
- and.l d7,d1
- eor.l d1,d4
- lsl.l #4,d1
- move.l d3,d5
- and.l d7,d5
- eor.l d5,d3
- lsr.l #4,d3
- or.l d5,d1
- or.l d4,d3
-
- move.l a4,d7
- move.l d0,d4
- and.l d7,d0
- eor.l d0,d4
- lsl.l #2,d0
- move.l d1,d5
- and.l d7,d5
- eor.l d5,d1
- lsr.l #2,d1
- or.l d5,d0
- or.l d4,d1
- move.l d2,d4
- and.l d7,d2
- eor.l d2,d4
- lsl.l #2,d2
- move.l d3,d5
- and.l d7,d5
- eor.l d5,d3
- lsr.l #2,d3
- or.l d5,d2
- or.l d4,d3
-
- move.l a5,d7
- move.l d0,d4
- and.l d7,d0
- eor.l d0,d4
- lsr d0
- swap d0
- add d0,d0
- or.l d0,d4
- move d4,(a1)+ plane 1
- swap d4
- move d4,(-2,a1,a6.l) plane 2
- move.l d1,d5
- and.l d7,d1
- eor.l d1,d5
- lsr d1
- swap d1
- add d1,d1
- or.l d1,d5
- move d5,(-2,a1,a6.l*2) plane 3
- swap d5
- move d5,(a2)+ plane 4
- move.l d2,d4
- and.l d7,d2
- eor.l d2,d4
- lsr d2
- swap d2
- add d2,d2
- or.l d2,d4
- move d4,(-2,a1,a6.l*4) plane 5
- swap d4
- move d4,(-2,a2,a6.l*2) plane 6
- move.l d3,d5
- and.l d7,d3
- eor.l d3,d5
- lsr d3
- swap d3
- add d3,d3
- or.l d3,d5
- move.l a1,d0
- lea (a1,a6.l*2),a1
- move d5,(-2,a1,a6.l*4) plane 7
- move.l d0,a1
- swap d5
- move d5,(-2,a2,a6.l*4) plane 8
- swap d6
- dbf d6,.c2p_loop
-
-
- movem.l (a7)+,d0-a6
- rts
-
-
-
-
-
-
- _showline
-
- movem.l d0-a6,-(a7) ;60 bytes
-
- ;-------------------------------------
- ; step 1: 24bit to 8bit chunky
-
- lea (rtab+1,pc),a4
- lea (gtab+1,pc),a5
- lea (btab,pc),a6
-
- move.l (60+4,a7),a0 ;*data 60
- move.l (chunkypt,pc),a1
- move.l (72+4,a7),d0 ;bpr
- lea (a1,d0*8),a2
-
- move.l (80+4,a7),d7 ;width
- subq #1,d7
-
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- .loop0 move.b (a0)+,d0
- move.b (a0)+,d1
- move.b (a0)+,d2
- move.b (a4,d0.l*2),(a1)+ r
- move.b (a5,d1.l*2),(a1)+ g
- move (a6,d2.l*2),(a2)+ b
- dbf d7,.loop0
- .end0
-
-
- ;-------------------------------------
- ; step 2: 8bit chunky to planar
- move.l (chunkypt,pc),a0
- move.l (64+4,a7),a1 ;*bm0
- move.l (72+4,a7),d1 ;bpr
- move.l (68+4,a7),d0 ;line
- mulu d1,d0
- lea (a1,d0.l),a1
-
- move d1,d6
- subq #1,d6
-
- move.l (76+4,a7),a6 ;psize
- lea (a1,a6.l*2),a2
- lea (a2,a6.l),a2
-
- move.l #$0f0f0f0f,a3
- move.l #$33333333,a4
- move.l #$5555aaaa,a5
-
- .c2p_loop **16 pixels per loop**
- swap d6
-
- move (a0)+,d0
- move d0,d4
- lsl #8,d4
- move (a0)+,d1
- move d1,d5
- lsl #8,d5
- move (a0)+,d2
- move d2,d6
- lsl #8,d6
- move (a0)+,d3
- move d3,d7
- lsl #8,d7
- move.b (a0)+,d0
- swap d0
- move.b (a0)+,d4
- move d4,d0
- move.b (a0)+,d1
- swap d1
- move.b (a0)+,d5
- move d5,d1
- move.b (a0)+,d2
- swap d2
- move.b (a0)+,d6
- move d6,d2
- move.b (a0)+,d3
- swap d3
- move.b (a0)+,d7
- move d7,d3
-
- move.l a3,d7
- move.l d0,d4
- and.l d7,d0
- eor.l d0,d4
- lsl.l #4,d0
- move.l d2,d5
- and.l d7,d5
- eor.l d5,d2
- lsr.l #4,d2
- or.l d5,d0
- or.l d4,d2
- move.l d1,d4
- and.l d7,d1
- eor.l d1,d4
- lsl.l #4,d1
- move.l d3,d5
- and.l d7,d5
- eor.l d5,d3
- lsr.l #4,d3
- or.l d5,d1
- or.l d4,d3
-
- move.l a4,d7
- move.l d0,d4
- and.l d7,d0
- eor.l d0,d4
- lsl.l #2,d0
- move.l d1,d5
- and.l d7,d5
- eor.l d5,d1
- lsr.l #2,d1
- or.l d5,d0
- or.l d4,d1
- move.l d2,d4
- and.l d7,d2
- eor.l d2,d4
- lsl.l #2,d2
- move.l d3,d5
- and.l d7,d5
- eor.l d5,d3
- lsr.l #2,d3
- or.l d5,d2
- or.l d4,d3
-
- move.l a5,d7
- move.l d0,d4
- and.l d7,d0
- eor.l d0,d4
- lsr d0
- swap d0
- add d0,d0
- or.l d0,d4
- move d4,(a1)+ plane 1
- swap d4
- move d4,(-2,a1,a6.l) plane 2
- move.l d1,d5
- and.l d7,d1
- eor.l d1,d5
- lsr d1
- swap d1
- add d1,d1
- or.l d1,d5
- move d5,(-2,a1,a6.l*2) plane 3
- swap d5
- move d5,(a2)+ plane 4
- move.l d2,d4
- and.l d7,d2
- eor.l d2,d4
- lsr d2
- swap d2
- add d2,d2
- or.l d2,d4
- move d4,(-2,a1,a6.l*4) plane 5
- swap d4
- move d4,(-2,a2,a6.l*2) plane 6
- move.l d3,d5
- and.l d7,d3
- eor.l d3,d5
- lsr d3
- swap d3
- add d3,d3
- or.l d3,d5
- move.l a1,d0
- lea (a1,a6.l*2),a1
- move d5,(-2,a1,a6.l*4) plane 7
- move.l d0,a1
- swap d5
- move d5,(-2,a2,a6.l*4) plane 8
- swap d6
- dbf d6,.c2p_loop
-
-
- movem.l (a7)+,d0-a6
- rts
-
-
-
-
-
-
-
- ;colors 0-75
- rtab
- i set 0
- rept 255
- i set i+1
- dc i*76/256
- endr
- dc 75
-
-
- ;colors 76-225
- gtab
- i set 0
- rept 255
- i set i+1
- dc i*150/256+76
- endr
- dc 225
-
-
- ;colors 226-255
- btab
- i set 0
- rept 255
- i set i+1
- dc i*30/256+226
- endr
- dc 255
-
-
-
- chunkypt dc.l chunkybuffer
-
- section bbbb,bss
- chunkybuffer ds.b 50*1024
-
-
-
-
-
-
-
-