
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/alpha.c
	mc68030
	mc68881
	XREF	_gl_error
	XREF	_gl_problem
	XREF	_CC

	SECTION "_gl_AlphaFunc:0",CODE


;void gl_AlphaFunc( GLcontext* ctx, GLenum func, GLclampf ref )
	XDEF	_gl_AlphaFunc
_gl_AlphaFunc
	move.l	$8(a7),d0
	move.l	4(a7),a0
	fmove.s	$C(a7),fp0
L35
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d1
	cmp.l	#$1A00,d1
	beq.b	L37
L36
;      gl_error( ctx, GL_INVALID_OPERATION, "glAlphaFunc" );
	move.l	#L33,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L37
;   switch (func)
	move.l	d0,d1
	sub.l	#$200,d1
	cmp.l	#7,d1
	bhi.b	L45
	move.l	L47(pc,d1.l*4),a1
	jmp	(a1)
L47
	dc.l	L38
	dc.l	L38
	dc.l	L38
	dc.l	L38
	dc.l	L38
	dc.l	L38
	dc.l	L38
	dc.l	L38
;      
L38
;         ctx->Color.AlphaFunc = func;
	move.l	d0,$21E8(a0)
;         ctx->Color.AlphaRef = (GLubyte) (CLAMP(ref, 0.0F, 
	fcmp.s	#$.00000000,fp0
	fboge.b	L40
L39
	fmove.s	#$.00000000,fp0
	bra.b	L44
L40
	fcmp.s	#$.3F800000,fp0
	fbole.b	L44
L41
	fmove.s	#$.3F800000,fp0
L42
L43
L44
	fmul.s	#$.437F0000,fp0
	fadd.s	#$.3F000000,fp0
	fmove.l	fp0,d0
	move.b	d0,$21EC(a0)
;         
	bra.b	L46
L45
;         gl_error( ctx, GL_INVALID_ENUM, "glAlphaFunc(func)
	move.l	#L34,-(a7)
	pea	$500.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
;         
L46
	rts

L33
	dc.b	'glAlphaFunc',0
L34
	dc.b	'glAlphaFunc(func)',0

	SECTION "_gl_alpha_test:0",CODE

	rts

;GLint gl_alpha_test( const GLcontext* ctx,
	XDEF	_gl_alpha_test
_gl_alpha_test
	movem.l	d2-d4/a2/a3,-(a7)
	movem.l	$1C(a7),d2/a1
	move.l	$24(a7),a0
	move.l	$18(a7),a2
L49
;   GLubyte ref = ctx->Color.AlphaRef;
	move.l	#$21C4,d0
	add.l	a2,d0
	move.l	d0,a3
	move.b	$28(a3),d1
;   switch (ctx->Color.AlphaFunc)
	move.l	#$21C4,d0
	add.l	a2,d0
	move.l	d0,a3
	move.l	$24(a3),d0
	sub.l	#$200,d0
	cmp.l	#7,d0
	bhi	L76
	move.l	L77(pc,d0.l*4),a3
	jmp	(a3)
L77
	dc.l	L75
	dc.l	L50
	dc.l	L70
	dc.l	L54
	dc.l	L62
	dc.l	L66
	dc.l	L58
	dc.l	L74
;      
L50
;         for (i=0;
	moveq	#0,d0
	bra.b	L52
L51
;	    mask[i] &= (rgba[i][ACOMP] < ref);
	lea	0(a1,d0.l*4),a2
	move.b	3(a2),d3
	cmp.b	d1,d3
	slo	d3
	and.l	#1,d3
	move.b	d3,d4
	lea	0(a0,d0.l),a2
	and.b	d4,(a2)
	addq.l	#1,d0
L52
	cmp.l	d2,d0
	blo.b	L51
L53
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L54
;         for (i=0;
	moveq	#0,d0
	bra.b	L56
L55
;	    mask[i] &= (rgba[i][ACOMP] <= ref);
	lea	0(a1,d0.l*4),a2
	move.b	3(a2),d3
	cmp.b	d1,d3
	sls	d3
	and.l	#1,d3
	move.b	d3,d4
	lea	0(a0,d0.l),a2
	and.b	d4,(a2)
	addq.l	#1,d0
L56
	cmp.l	d2,d0
	blo.b	L55
L57
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L58
;         for (i=0;
	moveq	#0,d0
	bra.b	L60
L59
;	    mask[i] &= (rgba[i][ACOMP] >= ref);
	lea	0(a1,d0.l*4),a2
	move.b	3(a2),d3
	cmp.b	d1,d3
	shs	d3
	and.l	#1,d3
	move.b	d3,d4
	lea	0(a0,d0.l),a2
	and.b	d4,(a2)
	addq.l	#1,d0
L60
	cmp.l	d2,d0
	blo.b	L59
L61
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L62
;         for (i=0;
	moveq	#0,d0
	bra.b	L64
L63
;	    mask[i] &= (rgba[i][ACOMP] > ref);
	lea	0(a1,d0.l*4),a2
	move.b	3(a2),d3
	cmp.b	d1,d3
	shi	d3
	and.l	#1,d3
	move.b	d3,d4
	lea	0(a0,d0.l),a2
	and.b	d4,(a2)
	addq.l	#1,d0
L64
	cmp.l	d2,d0
	blo.b	L63
L65
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L66
;         for (i=0;
	moveq	#0,d0
	bra.b	L68
L67
;	    mask[i] &= (rgba[i][ACOMP] != ref);
	lea	0(a1,d0.l*4),a2
	move.b	3(a2),d3
	cmp.b	d1,d3
	sne	d3
	and.l	#1,d3
	move.b	d3,d4
	lea	0(a0,d0.l),a2
	and.b	d4,(a2)
	addq.l	#1,d0
L68
	cmp.l	d2,d0
	blo.b	L67
L69
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L70
;         for (i=0;
	moveq	#0,d0
	bra.b	L72
L71
;	    mask[i] &= (rgba[i][ACOMP] == ref);
	lea	0(a1,d0.l*4),a2
	move.b	3(a2),d3
	cmp.b	d1,d3
	seq	d3
	and.l	#1,d3
	move.b	d3,d4
	lea	0(a0,d0.l),a2
	and.b	d4,(a2)
	addq.l	#1,d0
L72
	cmp.l	d2,d0
	blo.b	L71
L73
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L74
	moveq	#1,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L75
	moveq	#0,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts
L76
;	 gl_problem( ctx, "Invalid alpha test in gl_alpha_test" );
	move.l	#L48,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_problem
	addq.w	#$8,a7
	moveq	#0,d0
	movem.l	(a7)+,d2-d4/a2/a3
	rts

L48
	dc.b	'Invalid alpha test in gl_alpha_test',0

	END
