ALL: Huge upstream synch + PerRom DelaySI & CountPerOp parameters
[mupen64plus-pandora.git] / source / gles2glide64 / src / Glitch64 / inc / glidesys.h
1 /*
2 ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
3 ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
4 ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
5 ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE 
6 ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com). 
7 ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER 
8 ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
9 ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.  
10 ** 
11 ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
12 ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
13 ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
14 ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
15 ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
16 ** THE UNITED STATES.  
17 ** 
18 ** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
19 **
20 ** $Header: /cvsroot/glide/glide3x/h5/glide3/src/glidesys.h,v 1.3.4.3 2003/07/24 03:51:08 anholt Exp $
21 ** $Log: 
22 **  3    3dfx      1.0.1.0.1.0 10/11/00 Brent           Forced check in to enforce
23 **       branching.
24 **  2    3dfx      1.0.1.0     06/20/00 Joseph Kain     Changes to support the
25 **       Napalm Glide open source release.  Changes include cleaned up offensive
26 **       comments and new legal headers.
27 **  1    3dfx      1.0         09/11/99 StarTeam VTS Administrator 
28 ** $
29 ** 
30 ** 4     11/05/98 11:18a Russp
31 ** Fix GLIDE_NUM_TMU error check (change "&&" to "||")
32 ** 
33 ** 3     7/24/98 1:41p Hohn
34 ** 
35 ** 2     6/15/98 10:50a Peter
36 ** made csim compile time option
37  * 
38  * 1     1/16/98 4:29p Atai
39  * create glide 3 src
40  * 
41  * 10    12/09/97 12:20p Peter
42  * mac glide port
43  * 
44  * 9     11/04/97 4:00p Dow
45  * Banshee Mods
46  * 
47  * 8     8/18/97 3:52p Peter
48  * pre-hw arrival fixes/cleanup
49  * 
50  * 7     6/02/97 4:09p Peter
51  * Compile w/ gcc for Dural
52  * 
53  * 6     5/27/97 1:16p Peter
54  * Basic cvg, w/o cmd fifo stuff. 
55  * 
56  * 5     5/21/97 6:05a Peter
57 */
58 #ifndef __GLIDESYS_H__
59 #define __GLIDESYS_H__
60
61 /*
62 n** -----------------------------------------------------------------------
63 ** COMPILER/ENVIRONMENT CONFIGURATION
64 ** -----------------------------------------------------------------------
65 */
66
67 /* Endianness is stored in bits [30:31] */
68 #define GLIDE_ENDIAN_SHIFT      30
69 #define GLIDE_ENDIAN_LITTLE     (0x1 << GLIDE_ENDIAN_SHIFT)
70 #define GLIDE_ENDIAN_BIG        (0x2 << GLIDE_ENDIAN_SHIFT)
71
72 /* OS is stored in bits [0:6] */
73 #define GLIDE_OS_SHIFT          0
74 #define GLIDE_OS_UNIX           0x1
75 #define GLIDE_OS_DOS32          0x2
76 #define GLIDE_OS_WIN32          0x4
77 #define GLIDE_OS_MACOS          0x8
78 #define GLIDE_OS_OS2            0x10
79 #define GLIDE_OS_OTHER          0x40 /* For Proprietary Arcade HW */
80
81 /* Sim vs. Hardware is stored in bits [7:8] */
82 #define GLIDE_SST_SHIFT         7
83 #define GLIDE_SST_SIM           (0x1 << GLIDE_SST_SHIFT)
84 #define GLIDE_SST_HW            (0x2 << GLIDE_SST_SHIFT)
85
86 /* Hardware Type is stored in bits [9:13] */
87 #define GLIDE_HW_SHIFT          9
88 #define GLIDE_HW_SST1           (0x1 << GLIDE_HW_SHIFT)
89 #define GLIDE_HW_SST96          (0x2 << GLIDE_HW_SHIFT)
90 #define GLIDE_HW_H3             (0x4 << GLIDE_HW_SHIFT)
91 #define GLIDE_HW_SST2           (0x8 << GLIDE_HW_SHIFT)
92 #define GLIDE_HW_CVG            (0x10 << GLIDE_HW_SHIFT)
93
94 /*
95 ** Make sure we handle all instances of WIN32
96 */
97 #ifndef __WIN32__
98 #  if defined (_WIN32) || defined (WIN32) || defined(__NT__)
99 #    define __WIN32__
100 #  endif
101 #endif
102
103 /* We need two checks on the OS: one for endian, the other for OS */
104 /* Check for endianness */
105 #if defined(__IRIX__) || defined(__sparc__) || defined(MACOS)
106 #  define GLIDE_ENDIAN    GLIDE_ENDIAN_BIG
107 #else
108 #  define GLIDE_ENDIAN    GLIDE_ENDIAN_LITTLE
109 #endif
110
111 /* Check for OS */
112 #if defined(__IRIX__) || defined(__sparc__) || defined(__linux__) || \
113    defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
114    defined(__FreeBSD_kernel__) || defined(__GNU__)
115 #  define GLIDE_OS        GLIDE_OS_UNIX
116 #elif defined(__DOS__)
117 #  define GLIDE_OS        GLIDE_OS_DOS32
118 #elif defined(__WIN32__)
119 #  define GLIDE_OS        GLIDE_OS_WIN32
120 #elif defined(macintosh) || defined(__APPLE__)
121 #  define GLIDE_OS        GLIDE_OS_MACOS
122 #else
123 #error "Unknown OS"
124 #endif
125
126 /* Check for Simulator vs. Hardware */
127 #if HAL_CSIM || HWC_CSIM
128 #  define GLIDE_SST       GLIDE_SST_SIM
129 #else
130 #  define GLIDE_SST       GLIDE_SST_HW
131 #endif
132
133 /* Check for type of hardware */
134 #ifdef SST96
135 #  define GLIDE_HW        GLIDE_HW_SST96
136 #elif defined(H3)
137 #  define GLIDE_HW        GLIDE_HW_H3
138 #elif defined(SST2)
139 #  define GLIDE_HW        GLIDE_HW_SST2
140 #elif defined(CVG)
141 #  define GLIDE_HW        GLIDE_HW_CVG
142 #else /* Default to SST1 */
143 #  define GLIDE_HW        GLIDE_HW_SST1
144 #endif
145
146
147 #define GLIDE_PLATFORM (GLIDE_ENDIAN | GLIDE_OS | GLIDE_SST | GLIDE_HW)
148
149 /*
150 ** Control the number of TMUs
151 */
152 #ifndef GLIDE_NUM_TMU
153 #  define GLIDE_NUM_TMU 2
154 #endif
155
156
157 #if ((GLIDE_NUM_TMU < 0) || (GLIDE_NUM_TMU > 3))
158 #  error "GLIDE_NUM_TMU set to an invalid value"
159 #endif
160
161 #endif /* __GLIDESYS_H__ */