00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <assert.h>
00023 #include "span.h"
00024 #include "Triangle.h"
00025
00026
00027 int32 URight, VRight, RRight,GRight,BRight;
00028
00029
00030
00031 void GENESISCC Span_LightMapSample(void);
00032
00033
00034 typedef struct
00035 {
00036 geROP ROP;
00037
00038 Span_DrawFunction Active;
00039 Span_DrawFunction Function[GE_SPAN_HARDWARE_VERSIONS][GE_SPAN_DESTINATION_FORMATS];
00040 } Span_FunctionTableEntry;
00041
00042
00043 void GENESISCC Span_C_TMAP_LMAP_Z1(void);
00044
00045 #define SPANROP LSHADE
00046 void GENESISCC Span_C_LSHADE_555(void) {
00047 #include "Span_Factory.h"
00048 }
00049 #define SPANROP LSHADE + D565
00050 void GENESISCC Span_C_LSHADE_565(void) {
00051 #include "Span_Factory.h"
00052 }
00053
00054 #define SPANROP LSHADE + ZSET
00055 void GENESISCC Span_C_LSHADE_ZSET_555(void) {
00056 #include "Span_Factory.h"
00057 }
00058 #define SPANROP LSHADE + ZSET + D565
00059 void GENESISCC Span_C_LSHADE_ZSET_565(void) {
00060 #include "Span_Factory.h"
00061 }
00062
00063 #define SPANROP LSHADE + ZTEST
00064 void GENESISCC Span_C_LSHADE_ZTEST_555(void) {
00065 #include "Span_Factory.h"
00066 }
00067 #define SPANROP LSHADE + ZTEST + D565
00068 void GENESISCC Span_C_LSHADE_ZTEST_565(void) {
00069 #include "Span_Factory.h"
00070 }
00071
00072 #define SPANROP LSHADE + ZTEST + ZSET
00073 void GENESISCC Span_C_LSHADE_ZTEST_ZSET_555(void) {
00074 #include "Span_Factory.h"
00075 }
00076 #define SPANROP LSHADE + ZTEST + ZSET + D565
00077 void GENESISCC Span_C_LSHADE_ZTEST_ZSET_565(void) {
00078 #include "Span_Factory.h"
00079 }
00080
00081 #define SPANROP LSHADE + AFLAT
00082 void GENESISCC Span_C_LSHADE_AFLAT_555(void) {
00083 #include "Span_Factory.h"
00084 }
00085 #define SPANROP LSHADE + AFLAT + D565
00086 void GENESISCC Span_C_LSHADE_AFLAT_565(void) {
00087 #include "Span_Factory.h"
00088 }
00089
00090 #define SPANROP LSHADE + AFLAT + ZSET
00091 void GENESISCC Span_C_LSHADE_AFLAT_ZSET_555(void) {
00092 #include "Span_Factory.h"
00093 }
00094 #define SPANROP LSHADE + AFLAT + ZSET + D565
00095 void GENESISCC Span_C_LSHADE_AFLAT_ZSET_565(void) {
00096 #include "Span_Factory.h"
00097 }
00098
00099 #define SPANROP LSHADE + AFLAT + ZTEST
00100 void GENESISCC Span_C_LSHADE_AFLAT_ZTEST_555(void) {
00101 #include "Span_Factory.h"
00102 }
00103 #define SPANROP LSHADE + AFLAT + ZTEST + D565
00104 void GENESISCC Span_C_LSHADE_AFLAT_ZTEST_565(void) {
00105 #include "Span_Factory.h"
00106 }
00107
00108 #define SPANROP LSHADE + AFLAT + ZTEST + ZSET
00109 void GENESISCC Span_C_LSHADE_AFLAT_ZTEST_ZSET_555(void) {
00110 #include "Span_Factory.h"
00111 }
00112 #define SPANROP LSHADE + AFLAT + ZTEST + ZSET + D565
00113 void GENESISCC Span_C_LSHADE_AFLAT_ZTEST_ZSET_565(void) {
00114 #include "Span_Factory.h"
00115 }
00116
00117 #define SPANROP TMAP + LSHADE
00118 void GENESISCC Span_C_TMAP_LSHADE_555(void) {
00119 #include "Span_Factory.h"
00120 }
00121 #define SPANROP TMAP + LSHADE + D565
00122 void GENESISCC Span_C_TMAP_LSHADE_565(void) {
00123 #include "Span_Factory.h"
00124 }
00125
00126 #define SPANROP TMAP + LSHADE + ZSET
00127 void GENESISCC Span_C_TMAP_LSHADE_ZSET_555(void) {
00128 #include "Span_Factory.h"
00129 }
00130 #define SPANROP TMAP + LSHADE + ZSET + D565
00131 void GENESISCC Span_C_TMAP_LSHADE_ZSET_565(void) {
00132 #include "Span_Factory.h"
00133 }
00134
00135 #define SPANROP TMAP + LSHADE + ZTEST
00136 void GENESISCC Span_C_TMAP_LSHADE_ZTEST_555(void) {
00137 #include "Span_Factory.h"
00138 }
00139 #define SPANROP TMAP + LSHADE + ZTEST + D565
00140 void GENESISCC Span_C_TMAP_LSHADE_ZTEST_565(void) {
00141 #include "Span_Factory.h"
00142 }
00143
00144 #define SPANROP TMAP + LSHADE + ZTEST + ZSET
00145 void GENESISCC Span_C_TMAP_LSHADE_ZTEST_ZSET_555(void) {
00146 #include "Span_Factory.h"
00147 }
00148 #define SPANROP TMAP + LSHADE + ZTEST + ZSET + D565
00149 void GENESISCC Span_C_TMAP_LSHADE_ZTEST_ZSET_565(void) {
00150 #include "Span_Factory.h"
00151 }
00152
00153 #define SPANROP TMAP + LMAP + ZSET
00154 void GENESISCC Span_C_TMAP_LMAP_ZSET_555(void) {
00155 #include "Span_Factory.h"
00156 }
00157 #define SPANROP TMAP + LMAP + ZSET + D565
00158 void GENESISCC Span_C_TMAP_LMAP_ZSET_565(void) {
00159 #include "Span_Factory.h"
00160 }
00161
00162 #define SPANROP TMAP + LMAP + ZTEST + ZSET
00163 void GENESISCC Span_C_TMAP_LMAP_ZTEST_ZSET_555(void) {
00164 #include "Span_Factory.h"
00165 }
00166 #define SPANROP TMAP + LMAP + ZTEST + ZSET + D565
00167 void GENESISCC Span_C_TMAP_LMAP_ZTEST_ZSET_565(void) {
00168 #include "Span_Factory.h"
00169 }
00170
00171 #define SPANROP TMAP + LSHADE + AFLAT
00172 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_555(void) {
00173 #include "Span_Factory.h"
00174 }
00175 #define SPANROP TMAP + LSHADE + AFLAT + D565
00176 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_565(void) {
00177 #include "Span_Factory.h"
00178 }
00179
00180 #define SPANROP TMAP + LSHADE + AFLAT + ZSET
00181 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_ZSET_555(void) {
00182 #include "Span_Factory.h"
00183 }
00184 #define SPANROP TMAP + LSHADE + AFLAT + ZSET + D565
00185 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_ZSET_565(void) {
00186 #include "Span_Factory.h"
00187 }
00188
00189 #define SPANROP TMAP + LSHADE + AFLAT + ZTEST
00190 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_ZTEST_555(void) {
00191 #include "Span_Factory.h"
00192 }
00193 #define SPANROP TMAP + LSHADE + AFLAT + ZTEST + D565
00194 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_ZTEST_565(void) {
00195 #include "Span_Factory.h"
00196 }
00197
00198 #define SPANROP TMAP + LSHADE + AFLAT + ZTEST + ZSET
00199 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_ZTEST_ZSET_555(void) {
00200 #include "Span_Factory.h"
00201 }
00202 #define SPANROP TMAP + LSHADE + AFLAT + ZTEST + ZSET + D565
00203 void GENESISCC Span_C_TMAP_LSHADE_AFLAT_ZTEST_ZSET_565(void) {
00204 #include "Span_Factory.h"
00205 }
00206
00207 #define SPANROP TMAP + LSHADE + AMAP
00208 void GENESISCC Span_C_TMAP_LSHADE_AMAP_555(void) {
00209 #include "Span_Factory.h"
00210 }
00211 #define SPANROP TMAP + LSHADE + AMAP + D565
00212 void GENESISCC Span_C_TMAP_LSHADE_AMAP_565(void) {
00213 #include "Span_Factory.h"
00214 }
00215
00216 #define SPANROP TMAP + LSHADE + AMAP + ZSET
00217 void GENESISCC Span_C_TMAP_LSHADE_AMAP_ZSET_555(void) {
00218 #include "Span_Factory.h"
00219 }
00220 #define SPANROP TMAP + LSHADE + AMAP + ZSET + D565
00221 void GENESISCC Span_C_TMAP_LSHADE_AMAP_ZSET_565(void) {
00222 #include "Span_Factory.h"
00223 }
00224
00225 #define SPANROP TMAP + LSHADE + AMAP + ZTEST
00226 void GENESISCC Span_C_TMAP_LSHADE_AMAP_ZTEST_555(void) {
00227 #include "Span_Factory.h"
00228 }
00229 #define SPANROP TMAP + LSHADE + AMAP + ZTEST + D565
00230 void GENESISCC Span_C_TMAP_LSHADE_AMAP_ZTEST_565(void) {
00231 #include "Span_Factory.h"
00232 }
00233
00234 #define SPANROP TMAP + LSHADE + AMAP + ZTEST + ZSET
00235 void GENESISCC Span_C_TMAP_LSHADE_AMAP_ZTEST_ZSET_555(void) {
00236 #include "Span_Factory.h"
00237 }
00238 #define SPANROP TMAP + LSHADE + AMAP + ZTEST + ZSET + D565
00239 void GENESISCC Span_C_TMAP_LSHADE_AMAP_ZTEST_ZSET_565(void) {
00240 #include "Span_Factory.h"
00241 }
00242
00243 #define SPANROP TMAP + LMAP + AMAP
00244 void GENESISCC Span_C_TMAP_LMAP_AMAP_555(void) {
00245 #include "Span_Factory.h"
00246 }
00247 #define SPANROP TMAP + LMAP + AMAP + D565
00248 void GENESISCC Span_C_TMAP_LMAP_AMAP_565(void) {
00249 #include "Span_Factory.h"
00250 }
00251
00252 #define SPANROP TMAP + LMAP + AMAP + ZSET
00253 void GENESISCC Span_C_TMAP_LMAP_AMAP_ZSET_555(void) {
00254 #include "Span_Factory.h"
00255 }
00256 #define SPANROP TMAP + LMAP + AMAP + ZSET + D565
00257 void GENESISCC Span_C_TMAP_LMAP_AMAP_ZSET_565(void) {
00258 #include "Span_Factory.h"
00259 }
00260
00261 #define SPANROP TMAP + LMAP + AMAP + ZTEST
00262 void GENESISCC Span_C_TMAP_LMAP_AMAP_ZTEST_555(void) {
00263 #include "Span_Factory.h"
00264 }
00265 #define SPANROP TMAP + LMAP + AMAP + ZTEST + D565
00266 void GENESISCC Span_C_TMAP_LMAP_AMAP_ZTEST_565(void) {
00267 #include "Span_Factory.h"
00268 }
00269
00270 #define SPANROP TMAP + LMAP + AMAP + ZTEST + ZSET
00271 void GENESISCC Span_C_TMAP_LMAP_AMAP_ZTEST_ZSET_555(void) {
00272 #include "Span_Factory.h"
00273 }
00274 #define SPANROP TMAP + LMAP + AMAP + ZTEST + ZSET + D565
00275 void GENESISCC Span_C_TMAP_LMAP_AMAP_ZTEST_ZSET_565(void) {
00276 #include "Span_Factory.h"
00277 }
00278
00279 #define SPANROP TMAP + LMAP + AFLAT + ZTEST + ZSET
00280 void GENESISCC Span_C_TMAP_LMAP_AFLAT_ZTEST_ZSET_555(void) {
00281 #include "Span_Factory.h"
00282 }
00283 #define SPANROP TMAP + LMAP + AFLAT + ZTEST + ZSET + D565
00284 void GENESISCC Span_C_TMAP_LMAP_AFLAT_ZTEST_ZSET_565(void) {
00285 #include "Span_Factory.h"
00286 }
00287
00288 #define SPANROP TMAP + LSHADE + AMAP + AFLAT
00289 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_555(void) {
00290 #include "Span_Factory.h"
00291 }
00292 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + D565
00293 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_565(void) {
00294 #include "Span_Factory.h"
00295 }
00296
00297 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + ZSET
00298 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_ZSET_555(void) {
00299 #include "Span_Factory.h"
00300 }
00301 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + ZSET + D565
00302 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_ZSET_565(void) {
00303 #include "Span_Factory.h"
00304 }
00305
00306 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + ZTEST
00307 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_555(void) {
00308 #include "Span_Factory.h"
00309 }
00310 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + ZTEST + D565
00311 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_565(void) {
00312 #include "Span_Factory.h"
00313 }
00314
00315 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + ZTEST + ZSET
00316 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_ZSET_555(void) {
00317 #include "Span_Factory.h"
00318 }
00319 #define SPANROP TMAP + LSHADE + AMAP + AFLAT + ZTEST + ZSET + D565
00320 void GENESISCC Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_ZSET_565(void) {
00321 #include "Span_Factory.h"
00322 }
00323
00324
00325 Span_FunctionTableEntry Span_FunctionTable[GE_ROP_END] =
00326 {
00327 {GE_ROP_LSHADE, NULL,{{Span_C_LSHADE_555,Span_C_LSHADE_565},{NULL,NULL},{NULL,NULL}} },
00328 {GE_ROP_LSHADE_ZSET, NULL,{{Span_C_LSHADE_ZSET_555,Span_C_LSHADE_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00329 {GE_ROP_LSHADE_ZTEST, NULL,{{Span_C_LSHADE_ZTEST_555,Span_C_LSHADE_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00330 {GE_ROP_LSHADE_ZTESTSET, NULL,{{Span_C_LSHADE_ZTEST_ZSET_555,Span_C_LSHADE_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00331 {GE_ROP_LSHADE_AFLAT, NULL,{{Span_C_LSHADE_AFLAT_555,Span_C_LSHADE_AFLAT_565},{NULL,NULL},{NULL,NULL}} },
00332 {GE_ROP_LSHADE_AFLAT_ZSET, NULL,{{Span_C_LSHADE_AFLAT_ZSET_555,Span_C_LSHADE_AFLAT_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00333 {GE_ROP_LSHADE_AFLAT_ZTEST, NULL,{{Span_C_LSHADE_AFLAT_ZTEST_555,Span_C_LSHADE_AFLAT_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00334 {GE_ROP_LSHADE_AFLAT_ZTESTSET, NULL,{{Span_C_LSHADE_AFLAT_ZTEST_ZSET_555,Span_C_LSHADE_AFLAT_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00335 {GE_ROP_TMAP_LSHADE, NULL,{{Span_C_TMAP_LSHADE_555,Span_C_TMAP_LSHADE_565},{NULL,NULL},{NULL,NULL}} },
00336 {GE_ROP_TMAP_LSHADE_ZSET, NULL,{{Span_C_TMAP_LSHADE_ZSET_555,Span_C_TMAP_LSHADE_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00337 {GE_ROP_TMAP_LSHADE_ZTEST, NULL,{{Span_C_TMAP_LSHADE_ZTEST_555,Span_C_TMAP_LSHADE_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00338 {GE_ROP_TMAP_LSHADE_ZTESTSET, NULL,{{Span_C_TMAP_LSHADE_ZTEST_ZSET_555,Span_C_TMAP_LSHADE_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00339 {GE_ROP_TMAP_LMAP_ZSET_SBUF, NULL,{{Span_C_TMAP_LMAP_ZSET_555,Span_C_TMAP_LMAP_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00340 {GE_ROP_TMAP_LSHADE_ZSET_SBUF, NULL,{{Span_C_TMAP_LSHADE_ZSET_555,Span_C_TMAP_LSHADE_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00341 {GE_ROP_TMAP_LMAP_ZTESTSET, NULL,{{Span_C_TMAP_LMAP_ZTEST_ZSET_555,Span_C_TMAP_LMAP_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00342 {GE_ROP_TMAP_LSHADE_AFLAT, NULL,{{Span_C_TMAP_LSHADE_AFLAT_555,Span_C_TMAP_LSHADE_AFLAT_565},{NULL,NULL},{NULL,NULL}} },
00343 {GE_ROP_TMAP_LSHADE_AFLAT_ZSET, NULL,{{Span_C_TMAP_LSHADE_AFLAT_ZSET_555,Span_C_TMAP_LSHADE_AFLAT_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00344 {GE_ROP_TMAP_LSHADE_AFLAT_ZTEST, NULL,{{Span_C_TMAP_LSHADE_AFLAT_ZTEST_555,Span_C_TMAP_LSHADE_AFLAT_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00345 {GE_ROP_TMAP_LSHADE_AFLAT_ZTESTSET, NULL,{{Span_C_TMAP_LSHADE_AFLAT_ZTEST_ZSET_555,Span_C_TMAP_LSHADE_AFLAT_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00346 {GE_ROP_TMAP_LSHADE_AMAP, NULL,{{Span_C_TMAP_LSHADE_AMAP_555,Span_C_TMAP_LSHADE_AMAP_565},{NULL,NULL},{NULL,NULL}} },
00347 {GE_ROP_TMAP_LSHADE_AMAP_ZSET, NULL,{{Span_C_TMAP_LSHADE_AMAP_ZSET_555,Span_C_TMAP_LSHADE_AMAP_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00348 {GE_ROP_TMAP_LSHADE_AMAP_ZTEST, NULL,{{Span_C_TMAP_LSHADE_AMAP_ZTEST_555,Span_C_TMAP_LSHADE_AMAP_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00349 {GE_ROP_TMAP_LSHADE_AMAP_ZTESTSET, NULL,{{Span_C_TMAP_LSHADE_AMAP_ZTEST_ZSET_555,Span_C_TMAP_LSHADE_AMAP_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00350 {GE_ROP_TMAP_LMAP_AMAP, NULL,{{Span_C_TMAP_LMAP_AMAP_555,Span_C_TMAP_LMAP_AMAP_565},{NULL,NULL},{NULL,NULL}} },
00351 {GE_ROP_TMAP_LMAP_AMAP_ZSET, NULL,{{Span_C_TMAP_LMAP_AMAP_ZSET_555,Span_C_TMAP_LMAP_AMAP_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00352 {GE_ROP_TMAP_LMAP_AMAP_ZTEST, NULL,{{Span_C_TMAP_LMAP_AMAP_ZTEST_555,Span_C_TMAP_LMAP_AMAP_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00353 {GE_ROP_TMAP_LMAP_AMAP_ZTESTSET, NULL,{{Span_C_TMAP_LMAP_AMAP_ZTEST_ZSET_555,Span_C_TMAP_LMAP_AMAP_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00354 {GE_ROP_TMAP_LMAP_AFLAT_ZTESTSET, NULL,{{Span_C_TMAP_LMAP_AFLAT_ZTEST_ZSET_555,Span_C_TMAP_LMAP_AFLAT_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00355 {GE_ROP_TMAP_LSHADE_AMAP_AFLAT, NULL,{{Span_C_TMAP_LSHADE_AMAP_AFLAT_555,Span_C_TMAP_LSHADE_AMAP_AFLAT_565},{NULL,NULL},{NULL,NULL}} },
00356 {GE_ROP_TMAP_LSHADE_AMAP_AFLAT_ZSET, NULL,{{Span_C_TMAP_LSHADE_AMAP_AFLAT_ZSET_555,Span_C_TMAP_LSHADE_AMAP_AFLAT_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00357 {GE_ROP_TMAP_LSHADE_AMAP_AFLAT_ZTEST, NULL,{{Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_555,Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_565},{NULL,NULL},{NULL,NULL}} },
00358 {GE_ROP_TMAP_LSHADE_AMAP_AFLAT_ZTESTSET,NULL,{{Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_ZSET_555,Span_C_TMAP_LSHADE_AMAP_AFLAT_ZTEST_ZSET_565},{NULL,NULL},{NULL,NULL}} },
00359 };
00360
00361
00362 geBoolean GENESISCC Span_SetOutputMode( geSpan_DestinationFormat DestFormat, geSpan_CPU CPU)
00363 {
00364 int i;
00365
00366 assert( DestFormat >= 0 );
00367 assert( DestFormat < GE_SPAN_DESTINATION_FORMATS );
00368 assert( CPU >= 0 );
00369 assert( CPU < GE_SPAN_HARDWARE_VERSIONS );
00370
00371 for (i=0; i< GE_ROP_END; i++)
00372 {
00373 assert( Span_FunctionTable[i].ROP == i );
00374 Span_FunctionTable[i].Active = Span_FunctionTable[i].Function[GE_SPAN_HARDWARE_INTEL][DestFormat];
00375 if (Span_FunctionTable[i].Function[CPU][DestFormat]!=NULL)
00376 Span_FunctionTable[i].Active = Span_FunctionTable[i].Function[CPU][DestFormat];
00377 }
00378 return GE_TRUE;
00379 }
00380
00381 Span_DrawFunction GENESISCC Span_GetDrawFunction(geROP ROP)
00382 {
00383 assert( ROP >= 0 );
00384 assert( ROP < GE_ROP_END );
00385 assert( Span_FunctionTable[ROP].ROP == ROP );
00386 assert( Span_FunctionTable[ROP].Active != NULL );
00387
00388 return Span_FunctionTable[ROP].Active;
00389 }
00390
00391
00392
00393 #ifdef NOISE_FILTER
00394 *(DestBits++) = (DESTPIXEL) ( (((((Color&0xFF)*R)+Triangle.RandomTable[Triangle.RandomTableIndex++])>>16)&0x7C00)
00395 | ((((((Color&0xFF00)>>8)*G)+Triangle.RandomTable[Triangle.RandomTableIndex++])>>21)&0x3E0)
00396 | (((((Color&0xFF0000)>>16)*B)+Triangle.RandomTable[Triangle.RandomTableIndex++])>>26) );
00397 #endif
00398
00399
00400 void GENESISCC Span_LightMapSample(void)
00401 {
00402 int32 LMU,LMV;
00403 unsigned char *LM0,*LM1;
00404 unsigned char *LM2,*LM3;
00405 int C01,C23;
00406 int UFract01,VFract01;
00407
00408 LMU = ((URight - Triangle.LightMapShiftU)>>8) * Triangle.LightMapScaleU;
00409
00410
00411 if (LMU<0) LMU=0;
00412 if (LMU>Triangle.LightMapMaxU) LMU = Triangle.LightMapMaxU;
00413
00414 LMV = ((VRight - Triangle.LightMapShiftV)>>8) * Triangle.LightMapScaleV;
00415
00416
00417
00418 if (LMV<0) LMV=0;
00419 if (LMV>Triangle.LightMapMaxV) LMV = Triangle.LightMapMaxV;
00420
00421
00422 LM0 = Triangle.LightMapBits + (3*(LMU>>16) + TOPDOWN_OR_BOTTOMUP((LMV>>16) * Triangle.LightMapStride));
00423 #pragma message ("is there a clamping problem here somewhere? see a hi-res lightmap only rendering...")
00424
00425 #if 1
00426
00427 if ((LMV>>16) < (Triangle.LightMapHeight-1))
00428 LM2 = LM0 + TOPDOWN_OR_BOTTOMUP(Triangle.LightMapStride);
00429 else
00430 LM2 = LM0;
00431 if ((LMU>>16) < (Triangle.LightMapWidth-1))
00432 {
00433 LM1 = LM0 + 3;
00434 LM3 = LM2 + 3;
00435 }
00436 else
00437 {
00438 LM1 = LM0;
00439 LM3 = LM2;
00440 }
00441 UFract01 = (LMU&0xFFFF);
00442 VFract01 = (LMV&0xFFFF);
00443 C01 = (*LM0) + ((( *LM1 - *LM0 ) * UFract01)>>16);
00444 C23 = (*LM2) + ((( *LM3 - *LM2 ) * UFract01)>>16);
00445 RRight =( C01 + ((( C23 - C01 ) * VFract01)>>16))<<RGB_FXP_SHIFTER;
00446
00447 LM0++; LM1++;
00448 C01 = (*LM0) + ((( *LM1 - *LM0 ) * UFract01)>>16);
00449
00450 LM2++; LM3++;
00451 C23 = (*LM2) + ((( *LM3 - *LM2 ) * UFract01)>>16);
00452 GRight =( C01 + ((( C23 - C01 ) * VFract01)>>16))<<RGB_FXP_SHIFTER;
00453
00454 LM0++; LM1++;
00455 C01 = (*LM0) + ((( *LM1 - *LM0 ) * UFract01)>>16);
00456
00457 LM2++; LM3++;
00458 C23 = (*LM2) + ((( *LM3 - *LM2 ) * UFract01)>>16);
00459 BRight =( C01 + ((( C23 - C01 ) * VFract01)>>16))<<RGB_FXP_SHIFTER;
00460 #else
00461 RRight = *LM0<<RGB_FXP_SHIFTER; LM0++;
00462 GRight = *LM0<<RGB_FXP_SHIFTER; LM0++;
00463 BRight = *LM0<<RGB_FXP_SHIFTER;
00464 #pragma message ("lightmap filtering disabled")
00465 #endif
00466
00467
00468
00469 }
00470
00471