
	.include "vidstuff.inc"
	.text

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

test_jagpeg::
	move.l	#%11111,d5		; red
	move.l	#%111111,d6		; green
	move.l	#%11111,d7		; blue
	clr.l	d3			; Set subtraction mode.
	bsr	.shiftcolor

;;;;;;;;

	lea	bitmap_addr,a0
	move.l	#199,d2
.yloop:
	move.l	#319,d1
.xloop:
	move.w	d0,(a0)+
	dbra	d1,.xloop

;;;;;;;;

	tst	d3
	bne	.addition

.subtract:
	sub.w	#1,d5
	bpl.s	.setcolor
	clr.l	d5

.try_blue:
	sub.w	#1,d7
	bpl.s	.setcolor
	clr.l	d7

.try_green:
	sub.w	#2,d6
	bpl.s	.setcolor

;;;;;;;;

.set_addition:
	moveq	#-1,d3
	clr.l	d5
	clr.l	d6
	clr.l	d7
	bra	.setcolor

;;;;;;;;

.addition:
	cmpi.w	#$1f,d5
	beq.s	.try_blue2
	add.w	#1,d5
	bra.s	.setcolor

.try_blue2:
	cmpi.w	#$1f,d7
	beq.s	.try_green2
	add.w	#1,d7
	bra.s	.setcolor

.try_green2:
	cmpi.w	#$3f,d6
	bge.s	.clear_addition
	add.w	#2,d6
	cmpi.w	#$3f,d6
	blt.s	.setcolor
	move.w	#%111111,d6
	bra.s	.setcolor

.clear_addition:
	move.l	#%11111,d5		; red
	move.l	#%111111,d6		; green
	move.l	#%11111,d7		; blue
	clr.l	d3			; Clear addition mode

;;;;;;;;

.setcolor:
	bsr	.shiftcolor
.next_y:
	dbra	d2,.yloop

	rts

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

.shiftcolor:
	move.w	d5,d0	; d0 = red, now have [0]-[0]-[0]-[red]
	asl	#5,d0	; shift red up, now have [0]-[0]-[red]-[0]
	or.w	d7,d0	; add in blue, now have [0]-[0]-[red]-[blue]
	asl	#6,d0	; shift red & blue up, now have [0]-[red]-[blue]-[0]
	or.w	d6,d0	; add in green, now have [0]-[red]-[blue]-[green]
	rts

