2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
14 * $Source: /cvs/cvsroot/d2x/texmap/scanline.c,v $
17 * $Date: 2001-11-14 20:13:19 $
19 * Routines to draw the texture mapped scanlines.
21 * $Log: not supported by cvs2svn $
22 * Revision 1.4 2001/10/25 08:25:34 bradleyb
23 * Finished moving stuff to arch/blah. I know, it's ugly, but It'll be easier to sync with d1x.
25 * Revision 1.3 2001/10/25 02:22:46 bradleyb
26 * adding support for runtime selection of tmap funcs
28 * Revision 1.2 2001/01/31 15:18:04 bradleyb
29 * Makefile and conf.h fixes
31 * Revision 1.1.1.1 2001/01/19 03:30:16 bradleyb
34 * Revision 1.4 1999/10/18 00:31:01 donut
35 * more alpha fixes from Falk Hueffner
37 * Revision 1.3 1999/10/14 04:48:21 donut
38 * alpha fixes, and gl_font args
40 * Revision 1.2 1999/09/21 07:22:40 sekmu
41 * remove unused var warning
43 * Revision 1.1.1.1 1999/06/14 22:14:08 donut
44 * Import of d1x 1.37 source.
46 * Revision 1.2 1995/02/20 18:23:39 john
47 * Added new module for C versions of inner loops.
49 * Revision 1.1 1995/02/20 17:42:27 john
60 static char rcsid[] = "$Id: scanline.c,v 1.5 2001-11-14 20:13:19 bradleyb Exp $";
78 void c_tmap_scanline_flat()
83 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y ) );
85 /* for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
86 *dest++ = tmap_flat_color;
88 memset(dest,tmap_flat_color,fx_xright-fx_xleft+1);
91 void c_tmap_scanline_shaded()
97 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
99 fade = tmap_flat_shade_value<<8;
100 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
102 *dest++ = gr_fade_table[ fade |(tmp)];
106 void c_tmap_scanline_lin_nolight()
118 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
120 if (!Transparency_on) {
121 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
122 *dest++ = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
127 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
128 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
140 void c_tmap_scanline_lin()
145 fix u,v,l,dudx, dvdx, dldx;
154 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
156 if (!Transparency_on) {
157 ubyte* pixPtrLocalCopy = pixptr;
158 ubyte* fadeTableLocalCopy = gr_fade_table;
159 unsigned long destlong;
161 x = fx_xright-fx_xleft+1;
163 if ((j = (unsigned long) dest & 3) != 0)
172 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
173 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
186 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
187 destlong = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 24;
192 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
193 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 16;
198 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
199 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 8;
204 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
205 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
210 *((unsigned long *) dest) = destlong;
218 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
219 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
227 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
228 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
229 if ( c!=TRANSPARENCY_COLOR)
230 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
231 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
242 void c_tmap_scanline_lin()
247 fix u,v,l,dudx, dvdx, dldx;
256 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
258 if (!Transparency_on) {
259 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
260 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
261 *dest++ = gr_fade_table[ (l&(0x7f00)) + (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
268 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
269 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
271 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
272 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
283 // Used for energy centers. See comments for c_tmap_scanline_per().
284 void c_fp_tmap_scanline_per_nolight()
289 double u, v, z, dudx, dvdx, dzdx, rec_z;
293 v = f2db(fx_v) * 64.0;
295 dudx = f2db(fx_du_dx);
296 dvdx = f2db(fx_dv_dx) * 64.0;
297 dzdx = f2db(fx_dz_dx);
301 dest = (ubyte *) (write_buffer + fx_xleft + (bytes_per_row * fx_y));
303 x = fx_xright - fx_xleft + 1;
304 if (!Transparency_on) {
306 if ((j = (size_t) dest & 7) != 0) {
311 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
312 (((int) (u * rec_z)) & 63)];
324 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
325 (((int) (u * rec_z)) & 63)];
331 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
332 (((int) (u * rec_z)) & 63)] << 8;
338 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
339 (((int) (u * rec_z)) & 63)] << 16;
345 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
346 (((int) (u * rec_z)) & 63)] << 24;
352 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
353 (((int) (u * rec_z)) & 63)] << 32;
359 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
360 (((int) (u * rec_z)) & 63)] << 40;
366 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
367 (((int) (u * rec_z)) & 63)] << 48;
373 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
374 (((int) (u * rec_z)) & 63)] << 56;
380 *((u_int64_t *) dest) = destlong;
388 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
389 (((int) (u * rec_z)) & 63)];
396 x = fx_xright - fx_xleft + 1;
399 if ((j = (size_t) dest & 7) != 0) {
404 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
405 (((int) (u * rec_z)) & 63)];
420 destlong = *((u_int64_t *) dest);
421 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
422 (((int) (u * rec_z)) & 63)];
424 destlong &= ~(u_int64_t)0xFF;
425 destlong |= (u_int64_t) c;
431 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
432 (((int) (u * rec_z)) & 63)];
434 destlong &= ~((u_int64_t)0xFF << 8);
435 destlong |= (u_int64_t) c << 8;
441 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
442 (((int) (u * rec_z)) & 63)];
444 destlong &= ~((u_int64_t)0xFF << 16);
445 destlong |= (u_int64_t) c << 16;
451 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
452 (((int) (u * rec_z)) & 63)];
454 destlong &= ~((u_int64_t)0xFF << 24);
455 destlong |= (u_int64_t) c << 24;
461 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
462 (((int) (u * rec_z)) & 63)];
464 destlong &= ~((u_int64_t)0xFF << 32);
465 destlong |= (u_int64_t) c << 32;
471 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
472 (((int) (u * rec_z)) & 63)];
474 destlong &= ~((u_int64_t)0xFF << 40);
475 destlong |= (u_int64_t) c << 40;
481 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
482 (((int) (u * rec_z)) & 63)];
484 destlong &= ~((u_int64_t)0xFF << 48);
485 destlong |= (u_int64_t) c << 48;
491 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
492 (((int) (u * rec_z)) & 63)];
494 destlong &= ~((u_int64_t)0xFF << 56);
495 destlong |= (u_int64_t) c << 56;
502 *((u_int64_t *) dest) = destlong;
509 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
510 (((int) (u * rec_z)) & 63)];
522 void c_tmap_scanline_per_nolight()
527 fix u,v,z,dudx, dvdx, dzdx;
536 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
538 if (!Transparency_on) {
539 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
540 *dest++ = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
546 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
547 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
558 // This texture mapper uses floating point extensively and writes 8 pixels at once, so it likely works
559 // best on 64 bit RISC processors.
560 // WARNING: it is not endian clean. For big endian, reverse the shift counts in the unrolled loops. I
561 // have no means to test that, so I didn't try it. Please tell me if you get this to work on a big
563 // If you're using an Alpha, use the Compaq compiler for this file for quite some fps more.
564 // Unfortunately, it won't compile the whole source, so simply compile everything, change the
565 // compiler to ccc, remove scanline.o and compile again.
566 // Please send comments/suggestions to falk.hueffner@student.uni-tuebingen.de.
567 void c_fp_tmap_scanline_per()
572 double u, v, z, l, dudx, dvdx, dzdx, dldx, rec_z;
576 v = f2db(fx_v) * 64.0;
579 dudx = f2db(fx_du_dx);
580 dvdx = f2db(fx_dv_dx) * 64.0;
581 dzdx = f2db(fx_dz_dx);
582 dldx = f2db(fx_dl_dx);
584 rec_z = 1.0 / z; // gcc 2.95.2 is won't do this optimization itself
586 dest = (ubyte *) (write_buffer + fx_xleft + (bytes_per_row * fx_y));
587 x = fx_xright - fx_xleft + 1;
589 if (!Transparency_on) {
591 if ((j = (size_t) dest & 7) != 0) {
596 gr_fade_table[((int) fabs(l)) * 256 +
597 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
598 (((int) (u * rec_z)) & 63)]];
612 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
613 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
614 (((int) (u * rec_z)) & 63)]];
621 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
622 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
623 (((int) (u * rec_z)) & 63)]] << 8;
630 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
631 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
632 (((int) (u * rec_z)) & 63)]] << 16;
639 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
640 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
641 (((int) (u * rec_z)) & 63)]] << 24;
648 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
649 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
650 (((int) (u * rec_z)) & 63)]] << 32;
657 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
658 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
659 (((int) (u * rec_z)) & 63)]] << 40;
666 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
667 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
668 (((int) (u * rec_z)) & 63)]] << 48;
675 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
676 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
677 (((int) (u * rec_z)) & 63)]] << 56;
684 *((u_int64_t *) dest) = destlong;
692 gr_fade_table[((int) fabs(l)) * 256 +
693 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)]];
702 if ((j = (size_t) dest & 7) != 0) {
706 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
708 *dest = gr_fade_table[((int) fabs(l)) * 256 + c];
722 destlong = *((u_int64_t *) dest);
723 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
725 destlong &= ~(u_int64_t)0xFF;
726 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c];
733 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
735 destlong &= ~((u_int64_t)0xFF << 8);
736 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 8;
743 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
745 destlong &= ~((u_int64_t)0xFF << 16);
746 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 16;
753 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
755 destlong &= ~((u_int64_t)0xFF << 24);
756 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 24;
763 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
765 destlong &= ~((u_int64_t)0xFF << 32);
766 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 32;
773 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
775 destlong &= ~((u_int64_t)0xFF << 40);
776 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 40;
783 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
785 destlong &= ~((u_int64_t)0xFF << 48);
786 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 48;
793 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
795 destlong &= ~((u_int64_t)0xFF << 56);
796 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 56;
804 *((u_int64_t *) dest) = destlong;
811 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
813 *dest = gr_fade_table[((int) fabs(l)) * 256 + c];
825 // note the unrolling loop is broken. It is never called, and uses big endian. -- FH
826 void c_tmap_scanline_per()
832 fix dudx, dvdx, dzdx, dldx;
843 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
845 if (!Transparency_on) {
846 ubyte* pixPtrLocalCopy = pixptr;
847 ubyte* fadeTableLocalCopy = gr_fade_table;
848 unsigned long destlong;
850 x = fx_xright-fx_xleft+1;
852 if ((j = (unsigned long) dest & 3) != 0)
861 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
862 *dest++ = fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
876 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
877 destlong = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 24;
883 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
884 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 16;
890 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
891 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 8;
897 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
898 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
904 *((unsigned long *) dest) = destlong;
912 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
913 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
922 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
923 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
924 if ( c!=TRANSPARENCY_COLOR)
925 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
926 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
938 void c_tmap_scanline_per()
943 fix u,v,z,l,dudx, dvdx, dzdx, dldx;
954 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
956 if (!Transparency_on) {
957 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
958 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
959 *dest++ = gr_fade_table[ (l&(0x7f00)) + (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
967 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
968 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
970 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
971 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
984 void (*cur_tmap_scanline_per)(void);
985 void (*cur_tmap_scanline_per_nolight)(void);
986 void (*cur_tmap_scanline_lin)(void);
987 void (*cur_tmap_scanline_lin_nolight)(void);
988 void (*cur_tmap_scanline_flat)(void);
989 void (*cur_tmap_scanline_shaded)(void);
991 //runtime selection of optimized tmappers. 12/07/99 Matthew Mueller
992 //the reason I did it this way rather than having a *tmap_funcs that then points to a c_tmap or fp_tmap struct thats already filled in, is to avoid a second pointer dereference.
993 void select_tmap(char *type){
996 #if defined(__pentiumpro__)
998 #elif defined(__pentium__)
1001 select_tmap("i386");
1009 if (stricmp(type,"i386")==0){
1010 cur_tmap_scanline_per=asm_tmap_scanline_per;
1011 cur_tmap_scanline_per_nolight=asm_tmap_scanline_per;
1012 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
1013 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
1014 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
1015 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
1017 else if (stricmp(type,"pent")==0){
1018 cur_tmap_scanline_per=asm_pent_tmap_scanline_per;
1019 cur_tmap_scanline_per_nolight=asm_pent_tmap_scanline_per;
1020 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
1021 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
1022 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
1023 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
1025 else if (stricmp(type,"ppro")==0){
1026 cur_tmap_scanline_per=asm_ppro_tmap_scanline_per;
1027 cur_tmap_scanline_per_nolight=asm_ppro_tmap_scanline_per;
1028 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
1029 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
1030 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
1031 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
1035 if (stricmp(type,"fp")==0){
1036 cur_tmap_scanline_per=c_fp_tmap_scanline_per;
1037 cur_tmap_scanline_per_nolight=c_fp_tmap_scanline_per_nolight;
1038 cur_tmap_scanline_lin=c_tmap_scanline_lin;
1039 cur_tmap_scanline_lin_nolight=c_tmap_scanline_lin_nolight;
1040 cur_tmap_scanline_flat=c_tmap_scanline_flat;
1041 cur_tmap_scanline_shaded=c_tmap_scanline_shaded;
1044 if (stricmp(type,"c")!=0)
1045 printf("unknown tmap requested, using c tmap\n");
1046 cur_tmap_scanline_per=c_tmap_scanline_per;
1047 cur_tmap_scanline_per_nolight=c_tmap_scanline_per_nolight;
1048 cur_tmap_scanline_lin=c_tmap_scanline_lin;
1049 cur_tmap_scanline_lin_nolight=c_tmap_scanline_lin_nolight;
1050 cur_tmap_scanline_flat=c_tmap_scanline_flat;
1051 cur_tmap_scanline_shaded=c_tmap_scanline_shaded;