1 /*---------------------------------------------------------------------------*
2   Project:  Dolphin GX library
3   File:     GXTev.h
4 
5   Copyright 1998-2002 Nintendo.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Log: GXTev.h,v $
14   Revision 1.2  2006/02/04 11:56:46  hashida
15   (none)
16 
17   Revision 1.1.1.1  2005/12/29 06:53:28  hiratsu
18   Initial import.
19 
20   Revision 1.1.1.1  2005/05/12 02:41:07  yasuh-to
21   transitioned from the Dolphin source tree
22 
23 
24     4     02/07/24 09:07:00 Hirose
25     Resolved version conflicts.
26 
27     3     10/18/00 4:05p Carl
28     Latest round of HW2 modifications and minor updates.
29 
30     2     10/03/00 7:55p Hirose
31     Update for HW2(Rev.B) GX API extensions
32 
33     9     10/29/99 3:33p Hirose
34     changed GXSetTevStages(GXTevStageID) to GXSetNumTevStages(u8)
35 
36     8     10/26/99 8:04p Alligator
37     added s10-bit color
38 
39     7     10/13/99 5:20p Alligator
40     remove GXSetTevClrSwap
41 
42     6     9/30/99 10:40p Yasu
43     Renamed some GX functions and enums
44 
45     5     9/29/99 10:10a Alligator
46     changed TEV api, separate input selection from ops
47 
48     4     9/01/99 3:33p Ryan
49 
50     3     8/17/99 1:02p Alligator
51     updated commented functions to match current api
52 
53     2     7/28/99 4:07p Alligator
54     update header files and emulator for hw changes
55 
56     1     7/14/99 4:20p Alligator
57     split gx.h into individual header files for each major section of API
58   $NoKeywords: $
59  *---------------------------------------------------------------------------*/
60 
61 #ifndef __GXTEV_H__
62 #define __GXTEV_H__
63 
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67 
68 /*---------------------------------------------------------------------------*/
69 #include <revolution/types.h>
70 #include <revolution/gx/GXEnum.h>
71 #include <revolution/gx/GXStruct.h>
72 
73 /*---------------------------------------------------------------------------*/
74 void GXSetTevOp(GXTevStageID id, GXTevMode mode);
75 
76 void GXSetTevColorIn(
77     GXTevStageID    stage,
78     GXTevColorArg   a,
79     GXTevColorArg   b,
80     GXTevColorArg   c,
81     GXTevColorArg   d );
82 
83 void GXSetTevAlphaIn(
84     GXTevStageID    stage,
85     GXTevAlphaArg   a,
86     GXTevAlphaArg   b,
87     GXTevAlphaArg   c,
88     GXTevAlphaArg   d );
89 
90 void GXSetTevColorOp(
91     GXTevStageID    stage,
92     GXTevOp         op,
93     GXTevBias       bias,
94     GXTevScale      scale,
95     GXBool          clamp,
96     GXTevRegID      out_reg );
97 
98 void GXSetTevAlphaOp(
99     GXTevStageID    stage,
100     GXTevOp         op,
101     GXTevBias       bias,
102     GXTevScale      scale,
103     GXBool          clamp,
104     GXTevRegID      out_reg );
105 
106 void GXSetTevColor( GXTevRegID id, GXColor color );
107 void GXSetTevColorS10( GXTevRegID id, GXColorS10 color );
108 
109 // Feature available in GX chip revision 1 only
110 // Revision 2 version is defined, but only prints error msg
111 void GXSetTevClampMode ( GXTevStageID stage, GXTevClampMode mode );
112 
113 void GXSetAlphaCompare(
114     GXCompare       comp0,
115     u8              ref0,
116     GXAlphaOp       op,
117     GXCompare       comp1,
118     u8              ref1 );
119 
120 void GXSetTevOrder(
121     GXTevStageID    stage,
122     GXTexCoordID    coord,
123     GXTexMapID      map,
124     GXChannelID     color );
125 
126 void GXSetZTexture ( GXZTexOp op, GXTexFmt fmt, u32 bias );
127 void GXSetNumTevStages( u8 nStages );
128 
129 #if ( GX_REV != 1 )
130 // Features available in GX chip revision 2 or later only
131 void GXSetTevKColor( GXTevKColorID id, GXColor color );
132 void GXSetTevKColorSel( GXTevStageID stage, GXTevKColorSel sel );
133 void GXSetTevKAlphaSel( GXTevStageID stage, GXTevKAlphaSel sel );
134 
135 void GXSetTevSwapMode(
136     GXTevStageID    stage,
137     GXTevSwapSel    ras_sel,
138     GXTevSwapSel    tex_sel );
139 
140 void GXSetTevSwapModeTable(
141     GXTevSwapSel    table,
142     GXTevColorChan  red,
143     GXTevColorChan  green,
144     GXTevColorChan  blue,
145     GXTevColorChan  alpha );
146 
147 #endif // ( GX_REV != 1 )
148 
149 /*---------------------------------------------------------------------------*/
150 #ifdef __cplusplus
151 }
152 #endif
153 
154 #endif // __GXTEV_H__
155