mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
306 lines
7.4 KiB
306 lines
7.4 KiB
/*
|
|
** Copyright 1993 Silicon Graphics, Inc.
|
|
** All Rights Reserved.
|
|
**
|
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
|
|
** the contents of this file may not be disclosed to third parties, copied or
|
|
** duplicated in any form, in whole or in part, without the prior written
|
|
** permission of Silicon Graphics, Inc.
|
|
**
|
|
** RESTRICTED RIGHTS LEGEND:
|
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
|
** rights reserved under the Copyright Laws of the United States.
|
|
*/
|
|
|
|
#include <ksalpha.h>
|
|
#include "glalpha.h"
|
|
|
|
// kxalpha.h (unlike kxmips.h) doesn't define v1 - use t10 for this
|
|
#define v1 t10
|
|
|
|
#define TW_0 t7
|
|
#define TW_1 v0
|
|
#define TW_2 a2
|
|
#define TW_3 t5
|
|
#define TW a3
|
|
#define TZ_0 t6
|
|
#define TZ_1 t8
|
|
#define TZ_2 v1
|
|
#define TZ_3 t4
|
|
#define TZ a2
|
|
#define TY_0 t5
|
|
#define TY_1 t7
|
|
#define TY_2 v0
|
|
#define TY_3 t3
|
|
#define TY v1
|
|
#define TX_0 t4
|
|
#define TX_1 t6
|
|
#define TX_2 t8
|
|
#define TX_3 t2
|
|
#define TX v0
|
|
#define ALPHA_0 t4
|
|
#define ALPHA_1 t5
|
|
#define ALPHA_ t1
|
|
#define BLUE_0 t3
|
|
#define BLUE_1 t4
|
|
#define BLUE t0
|
|
#define GREEN_0 t2
|
|
#define GREEN_1 t3
|
|
#define GREEN a3
|
|
#define RED_0 t1
|
|
#define RED_1 t2
|
|
#define RED a2
|
|
#define COLORS_0 t0
|
|
#define COLORS_1 t1
|
|
#define COLORS v1
|
|
#define INDEX a3
|
|
#define NZ_0 t3
|
|
#define NZ_1 a2
|
|
#define NZ_2 t7
|
|
#define NZ t8
|
|
#define NY_0 t2
|
|
#define NY_1 v1
|
|
#define NY_2 t6
|
|
#define NY t7
|
|
#define NX_0 t1
|
|
#define NX_1 v0
|
|
#define NX_2 t5
|
|
#define NX t6
|
|
#define VERTEXPROC t9
|
|
#define VX a1
|
|
#define GC a0
|
|
|
|
#ifdef __GL_ASM_SAVEN
|
|
/*
|
|
** __glSaveN
|
|
*/
|
|
.globl __glSaveN
|
|
.ent __glSaveN
|
|
__glSaveN:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
ldl NX_1, __GC_CURRENT_NORMAL_X(GC)
|
|
ldl NY_1, __GC_CURRENT_NORMAL_Y(GC)
|
|
ldl NZ_1, __GC_CURRENT_NORMAL_Z(GC)
|
|
stl NX_1, __VX_NORMAL_X(VX)
|
|
stl NY_1, __VX_NORMAL_Y(VX)
|
|
stl NZ_1, __VX_NORMAL_Z(VX)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveN
|
|
#endif /* __GL_ASM_SAVEN */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVECI
|
|
/*
|
|
** __glSaveCI
|
|
*/
|
|
.globl __glSaveCI
|
|
.ent __glSaveCI
|
|
__glSaveCI:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
ldl INDEX, __GC_CURRENT_USERCOLORINDEX(GC)
|
|
addl VX, __VX_COLORS, COLORS_0
|
|
stl INDEX, __COLOR_R(COLORS_0)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveCI
|
|
#endif /* __GL_ASM_SAVECI */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVEC
|
|
/*
|
|
** __glSaveC
|
|
*/
|
|
.globl __glSaveC
|
|
.ent __glSaveC
|
|
__glSaveC:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
addl VX, __VX_COLORS, COLORS_1
|
|
ldl RED_1, __GC_CURRENT_COLOR_R(GC)
|
|
ldl GREEN_1, __GC_CURRENT_COLOR_G(GC)
|
|
ldl BLUE_1, __GC_CURRENT_COLOR_B(GC)
|
|
ldl ALPHA_1, __GC_CURRENT_COLOR_A(GC)
|
|
stl RED_1, __COLOR_R(COLORS_1)
|
|
stl GREEN_1, __COLOR_G(COLORS_1)
|
|
stl BLUE_1, __COLOR_B(COLORS_1)
|
|
stl ALPHA_1, __COLOR_A(COLORS_1)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveC
|
|
#endif /* __GL_ASM_SAVEC */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVET
|
|
/*
|
|
** __glSaveT
|
|
*/
|
|
.globl __glSaveT
|
|
.ent __glSaveT
|
|
__glSaveT:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
ldl TX_1, __GC_CURRENT_TEXTURE_X(GC)
|
|
ldl TY_1, __GC_CURRENT_TEXTURE_Y(GC)
|
|
ldl TZ_1, __GC_CURRENT_TEXTURE_Z(GC)
|
|
ldl TW_1, __GC_CURRENT_TEXTURE_W(GC)
|
|
stl TX_1, __VX_TEXTURE_X(VX)
|
|
stl TY_1, __VX_TEXTURE_Y(VX)
|
|
stl TZ_1, __VX_TEXTURE_Z(VX)
|
|
stl TW_1, __VX_TEXTURE_W(VX)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveT
|
|
#endif /* __GL_ASM_SAVET */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVECT
|
|
/*
|
|
** __glSaveCT
|
|
*/
|
|
.globl __glSaveCT
|
|
.ent __glSaveCT
|
|
__glSaveCT:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
addl VX, __VX_COLORS, COLORS
|
|
ldl RED, __GC_CURRENT_COLOR_R(GC)
|
|
ldl GREEN, __GC_CURRENT_COLOR_G(GC)
|
|
ldl BLUE, __GC_CURRENT_COLOR_B(GC)
|
|
ldl ALPHA_, __GC_CURRENT_COLOR_A(GC)
|
|
stl RED, __COLOR_R(COLORS)
|
|
stl GREEN, __COLOR_G(COLORS)
|
|
stl BLUE, __COLOR_B(COLORS)
|
|
stl ALPHA_, __COLOR_A(COLORS)
|
|
ldl TX_3, __GC_CURRENT_TEXTURE_X(GC)
|
|
ldl TY_3, __GC_CURRENT_TEXTURE_Y(GC)
|
|
ldl TZ_3, __GC_CURRENT_TEXTURE_Z(GC)
|
|
ldl TW_3, __GC_CURRENT_TEXTURE_W(GC)
|
|
stl TX_3, __VX_TEXTURE_X(VX)
|
|
stl TY_3, __VX_TEXTURE_Y(VX)
|
|
stl TZ_3, __VX_TEXTURE_Z(VX)
|
|
stl TW_3, __VX_TEXTURE_W(VX)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveCT
|
|
#endif /* __GL_ASM_SAVECT */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVENT
|
|
/*
|
|
** __glSaveNT
|
|
*/
|
|
.globl __glSaveNT
|
|
.ent __glSaveNT
|
|
__glSaveNT:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
ldl NX, __GC_CURRENT_NORMAL_X(GC)
|
|
ldl NY, __GC_CURRENT_NORMAL_Y(GC)
|
|
ldl NZ, __GC_CURRENT_NORMAL_Z(GC)
|
|
stl NX, __VX_NORMAL_X(VX)
|
|
stl NY, __VX_NORMAL_Y(VX)
|
|
stl NZ, __VX_NORMAL_Z(VX)
|
|
ldl TX, __GC_CURRENT_TEXTURE_X(GC)
|
|
ldl TY, __GC_CURRENT_TEXTURE_Y(GC)
|
|
ldl TZ, __GC_CURRENT_TEXTURE_Z(GC)
|
|
ldl TW, __GC_CURRENT_TEXTURE_W(GC)
|
|
stl TX, __VX_TEXTURE_X(VX)
|
|
stl TY, __VX_TEXTURE_Y(VX)
|
|
stl TZ, __VX_TEXTURE_Z(VX)
|
|
stl TW, __VX_TEXTURE_W(VX)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveNT
|
|
#endif /* __GL_ASM_SAVENT */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVECALL
|
|
/*
|
|
** __glSaveCAll
|
|
*/
|
|
.globl __glSaveCAll
|
|
.ent __glSaveCAll
|
|
__glSaveCAll:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
addl VX, __VX_COLORS, COLORS_0
|
|
ldl RED_0, __GC_CURRENT_COLOR_R(GC)
|
|
ldl GREEN_0, __GC_CURRENT_COLOR_G(GC)
|
|
ldl BLUE_0, __GC_CURRENT_COLOR_B(GC)
|
|
ldl ALPHA_0, __GC_CURRENT_COLOR_A(GC)
|
|
stl RED_0, __COLOR_R(COLORS_0)
|
|
stl GREEN_0, __COLOR_G(COLORS_0)
|
|
stl BLUE_0, __COLOR_B(COLORS_0)
|
|
stl ALPHA_0, __COLOR_A(COLORS_0)
|
|
ldl NX_2, __GC_CURRENT_NORMAL_X(GC)
|
|
ldl NY_2, __GC_CURRENT_NORMAL_Y(GC)
|
|
ldl NZ_2, __GC_CURRENT_NORMAL_Z(GC)
|
|
stl NX_2, __VX_NORMAL_X(VX)
|
|
stl NY_2, __VX_NORMAL_Y(VX)
|
|
stl NZ_2, __VX_NORMAL_Z(VX)
|
|
ldl TX_2, __GC_CURRENT_TEXTURE_X(GC)
|
|
ldl TY_2, __GC_CURRENT_TEXTURE_Y(GC)
|
|
ldl TZ_2, __GC_CURRENT_TEXTURE_Z(GC)
|
|
ldl TW_2, __GC_CURRENT_TEXTURE_W(GC)
|
|
stl TX_2, __VX_TEXTURE_X(VX)
|
|
stl TY_2, __VX_TEXTURE_Y(VX)
|
|
stl TZ_2, __VX_TEXTURE_Z(VX)
|
|
stl TW_2, __VX_TEXTURE_W(VX)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveCAll
|
|
#endif /* __GL_ASM_SAVECALL */
|
|
|
|
|
|
#ifdef __GL_ASM_SAVECIALL
|
|
/*
|
|
** __glSaveCIAll
|
|
*/
|
|
.globl __glSaveCIAll
|
|
.ent __glSaveCIAll
|
|
__glSaveCIAll:
|
|
/* :invars GC = a0, VX = a1 */
|
|
.set noreorder
|
|
ldl INDEX, __GC_CURRENT_USERCOLORINDEX(GC)
|
|
ldl VERTEXPROC, __GC_PROCS_VERTEX(GC)
|
|
addl VX, __VX_COLORS, COLORS_0
|
|
stl INDEX, __COLOR_R(COLORS_0)
|
|
ldl NX_0, __GC_CURRENT_NORMAL_X(GC)
|
|
ldl NY_0, __GC_CURRENT_NORMAL_Y(GC)
|
|
ldl NZ_0, __GC_CURRENT_NORMAL_Z(GC)
|
|
stl NX_0, __VX_NORMAL_X(VX)
|
|
stl NY_0, __VX_NORMAL_Y(VX)
|
|
stl NZ_0, __VX_NORMAL_Z(VX)
|
|
ldl TX_0, __GC_CURRENT_TEXTURE_X(GC)
|
|
ldl TY_0, __GC_CURRENT_TEXTURE_Y(GC)
|
|
ldl TZ_0, __GC_CURRENT_TEXTURE_Z(GC)
|
|
ldl TW_0, __GC_CURRENT_TEXTURE_W(GC)
|
|
stl TX_0, __VX_TEXTURE_X(VX)
|
|
stl TY_0, __VX_TEXTURE_Y(VX)
|
|
stl TZ_0, __VX_TEXTURE_Z(VX)
|
|
stl TW_0, __VX_TEXTURE_W(VX)
|
|
jmp zero, (VERTEXPROC), 0x0
|
|
/* :outvars GC = a0, VX = a1, VERTEXPROC = t9 */
|
|
.set reorder
|
|
.end __glSaveCIAll
|
|
#endif /* __GL_ASM_SAVECIALL */
|