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-10-25 08:25:34 $
19 * Routines to draw the texture mapped scanlines.
21 * $Log: not supported by cvs2svn $
22 * Revision 1.3 2001/10/25 02:22:46 bradleyb
23 * adding support for runtime selection of tmap funcs
25 * Revision 1.2 2001/01/31 15:18:04 bradleyb
26 * Makefile and conf.h fixes
28 * Revision 1.1.1.1 2001/01/19 03:30:16 bradleyb
31 * Revision 1.4 1999/10/18 00:31:01 donut
32 * more alpha fixes from Falk Hueffner
34 * Revision 1.3 1999/10/14 04:48:21 donut
35 * alpha fixes, and gl_font args
37 * Revision 1.2 1999/09/21 07:22:40 sekmu
38 * remove unused var warning
40 * Revision 1.1.1.1 1999/06/14 22:14:08 donut
41 * Import of d1x 1.37 source.
43 * Revision 1.2 1995/02/20 18:23:39 john
44 * Added new module for C versions of inner loops.
46 * Revision 1.1 1995/02/20 17:42:27 john
57 static char rcsid[] = "$Id: scanline.c,v 1.4 2001-10-25 08:25:34 bradleyb Exp $";
75 void c_tmap_scanline_flat()
80 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y ) );
82 /* for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
83 *dest++ = tmap_flat_color;
85 memset(dest,tmap_flat_color,fx_xright-fx_xleft+1);
88 void c_tmap_scanline_shaded()
94 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
96 fade = tmap_flat_shade_value<<8;
97 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
99 *dest++ = gr_fade_table[ fade |(tmp)];
103 void c_tmap_scanline_lin_nolight()
115 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
117 if (!Transparency_on) {
118 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
119 *dest++ = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
124 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
125 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
137 void c_tmap_scanline_lin()
142 fix u,v,l,dudx, dvdx, dldx;
151 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
153 if (!Transparency_on) {
154 ubyte* pixPtrLocalCopy = pixptr;
155 ubyte* fadeTableLocalCopy = gr_fade_table;
156 unsigned long destlong;
158 x = fx_xright-fx_xleft+1;
160 if ((j = (unsigned long) dest & 3) != 0)
169 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
170 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
183 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
184 destlong = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 24;
189 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
190 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 16;
195 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
196 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 8;
201 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
202 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
207 *((unsigned long *) dest) = destlong;
215 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
216 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
224 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
225 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
226 if ( c!=TRANSPARENCY_COLOR)
227 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
228 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
239 void c_tmap_scanline_lin()
244 fix u,v,l,dudx, dvdx, dldx;
253 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
255 if (!Transparency_on) {
256 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
257 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
258 *dest++ = gr_fade_table[ (l&(0x7f00)) + (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
265 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
266 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
268 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
269 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
280 // Used for energy centers. See comments for c_tmap_scanline_per().
281 void c_fp_tmap_scanline_per_nolight()
286 double u, v, z, dudx, dvdx, dzdx, rec_z;
290 v = f2db(fx_v) * 64.0;
292 dudx = f2db(fx_du_dx);
293 dvdx = f2db(fx_dv_dx) * 64.0;
294 dzdx = f2db(fx_dz_dx);
298 dest = (ubyte *) (write_buffer + fx_xleft + (bytes_per_row * fx_y));
300 x = fx_xright - fx_xleft + 1;
301 if (!Transparency_on) {
303 if ((j = (size_t) dest & 7) != 0) {
308 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
309 (((int) (u * rec_z)) & 63)];
321 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
322 (((int) (u * rec_z)) & 63)];
328 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
329 (((int) (u * rec_z)) & 63)] << 8;
335 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
336 (((int) (u * rec_z)) & 63)] << 16;
342 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
343 (((int) (u * rec_z)) & 63)] << 24;
349 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
350 (((int) (u * rec_z)) & 63)] << 32;
356 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
357 (((int) (u * rec_z)) & 63)] << 40;
363 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
364 (((int) (u * rec_z)) & 63)] << 48;
370 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
371 (((int) (u * rec_z)) & 63)] << 56;
377 *((u_int64_t *) dest) = destlong;
385 (u_int64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
386 (((int) (u * rec_z)) & 63)];
393 x = fx_xright - fx_xleft + 1;
396 if ((j = (size_t) dest & 7) != 0) {
401 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
402 (((int) (u * rec_z)) & 63)];
417 destlong = *((u_int64_t *) dest);
418 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
419 (((int) (u * rec_z)) & 63)];
421 destlong &= ~(u_int64_t)0xFF;
422 destlong |= (u_int64_t) c;
428 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
429 (((int) (u * rec_z)) & 63)];
431 destlong &= ~((u_int64_t)0xFF << 8);
432 destlong |= (u_int64_t) c << 8;
438 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
439 (((int) (u * rec_z)) & 63)];
441 destlong &= ~((u_int64_t)0xFF << 16);
442 destlong |= (u_int64_t) c << 16;
448 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
449 (((int) (u * rec_z)) & 63)];
451 destlong &= ~((u_int64_t)0xFF << 24);
452 destlong |= (u_int64_t) c << 24;
458 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
459 (((int) (u * rec_z)) & 63)];
461 destlong &= ~((u_int64_t)0xFF << 32);
462 destlong |= (u_int64_t) c << 32;
468 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
469 (((int) (u * rec_z)) & 63)];
471 destlong &= ~((u_int64_t)0xFF << 40);
472 destlong |= (u_int64_t) c << 40;
478 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
479 (((int) (u * rec_z)) & 63)];
481 destlong &= ~((u_int64_t)0xFF << 48);
482 destlong |= (u_int64_t) c << 48;
488 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
489 (((int) (u * rec_z)) & 63)];
491 destlong &= ~((u_int64_t)0xFF << 56);
492 destlong |= (u_int64_t) c << 56;
499 *((u_int64_t *) dest) = destlong;
506 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
507 (((int) (u * rec_z)) & 63)];
519 void c_tmap_scanline_per_nolight()
524 fix u,v,z,dudx, dvdx, dzdx;
533 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
535 if (!Transparency_on) {
536 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
537 *dest++ = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
543 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
544 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
555 // This texture mapper uses floating point extensively and writes 8 pixels at once, so it likely works
556 // best on 64 bit RISC processors.
557 // WARNING: it is not endian clean. For big endian, reverse the shift counts in the unrolled loops. I
558 // have no means to test that, so I didn't try it. Please tell me if you get this to work on a big
560 // If you're using an Alpha, use the Compaq compiler for this file for quite some fps more.
561 // Unfortunately, it won't compile the whole source, so simply compile everything, change the
562 // compiler to ccc, remove scanline.o and compile again.
563 // Please send comments/suggestions to falk.hueffner@student.uni-tuebingen.de.
564 void c_fp_tmap_scanline_per()
569 double u, v, z, l, dudx, dvdx, dzdx, dldx, rec_z;
573 v = f2db(fx_v) * 64.0;
576 dudx = f2db(fx_du_dx);
577 dvdx = f2db(fx_dv_dx) * 64.0;
578 dzdx = f2db(fx_dz_dx);
579 dldx = f2db(fx_dl_dx);
581 rec_z = 1.0 / z; // gcc 2.95.2 is won't do this optimization itself
583 dest = (ubyte *) (write_buffer + fx_xleft + (bytes_per_row * fx_y));
584 x = fx_xright - fx_xleft + 1;
586 if (!Transparency_on) {
588 if ((j = (size_t) dest & 7) != 0) {
593 gr_fade_table[((int) fabs(l)) * 256 +
594 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
595 (((int) (u * rec_z)) & 63)]];
609 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
610 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
611 (((int) (u * rec_z)) & 63)]];
618 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
619 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
620 (((int) (u * rec_z)) & 63)]] << 8;
627 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
628 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
629 (((int) (u * rec_z)) & 63)]] << 16;
636 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
637 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
638 (((int) (u * rec_z)) & 63)]] << 24;
645 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
646 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
647 (((int) (u * rec_z)) & 63)]] << 32;
654 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
655 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
656 (((int) (u * rec_z)) & 63)]] << 40;
663 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
664 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
665 (((int) (u * rec_z)) & 63)]] << 48;
672 (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 +
673 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
674 (((int) (u * rec_z)) & 63)]] << 56;
681 *((u_int64_t *) dest) = destlong;
689 gr_fade_table[((int) fabs(l)) * 256 +
690 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)]];
699 if ((j = (size_t) dest & 7) != 0) {
703 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
705 *dest = gr_fade_table[((int) fabs(l)) * 256 + c];
719 destlong = *((u_int64_t *) dest);
720 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
722 destlong &= ~(u_int64_t)0xFF;
723 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c];
730 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
732 destlong &= ~((u_int64_t)0xFF << 8);
733 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 8;
740 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
742 destlong &= ~((u_int64_t)0xFF << 16);
743 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 16;
750 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
752 destlong &= ~((u_int64_t)0xFF << 24);
753 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 24;
760 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
762 destlong &= ~((u_int64_t)0xFF << 32);
763 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 32;
770 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
772 destlong &= ~((u_int64_t)0xFF << 40);
773 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 40;
780 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
782 destlong &= ~((u_int64_t)0xFF << 48);
783 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 48;
790 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
792 destlong &= ~((u_int64_t)0xFF << 56);
793 destlong |= (u_int64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 56;
801 *((u_int64_t *) dest) = destlong;
808 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
810 *dest = gr_fade_table[((int) fabs(l)) * 256 + c];
822 // note the unrolling loop is broken. It is never called, and uses big endian. -- FH
823 void c_tmap_scanline_per()
829 fix dudx, dvdx, dzdx, dldx;
840 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
842 if (!Transparency_on) {
843 ubyte* pixPtrLocalCopy = pixptr;
844 ubyte* fadeTableLocalCopy = gr_fade_table;
845 unsigned long destlong;
847 x = fx_xright-fx_xleft+1;
849 if ((j = (unsigned long) dest & 3) != 0)
858 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
859 *dest++ = fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
873 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
874 destlong = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 24;
880 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
881 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 16;
887 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
888 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 8;
894 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
895 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
901 *((unsigned long *) dest) = destlong;
909 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
910 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
919 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
920 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
921 if ( c!=TRANSPARENCY_COLOR)
922 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
923 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
935 void c_tmap_scanline_per()
940 fix u,v,z,l,dudx, dvdx, dzdx, dldx;
951 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
953 if (!Transparency_on) {
954 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
955 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
956 *dest++ = gr_fade_table[ (l&(0x7f00)) + (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
964 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
965 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
967 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
968 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
981 void (*cur_tmap_scanline_per)(void);
982 void (*cur_tmap_scanline_per_nolight)(void);
983 void (*cur_tmap_scanline_lin)(void);
984 void (*cur_tmap_scanline_lin_nolight)(void);
985 void (*cur_tmap_scanline_flat)(void);
986 void (*cur_tmap_scanline_shaded)(void);
988 //runtime selection of optimized tmappers. 12/07/99 Matthew Mueller
989 //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.
990 void select_tmap(char *type){
1000 if (stricmp(type,"i386")==0){
1001 cur_tmap_scanline_per=asm_tmap_scanline_per;
1002 cur_tmap_scanline_per_nolight=asm_tmap_scanline_per;
1003 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
1004 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
1005 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
1006 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
1008 else if (stricmp(type,"pent")==0){
1009 cur_tmap_scanline_per=asm_pent_tmap_scanline_per;
1010 cur_tmap_scanline_per_nolight=asm_pent_tmap_scanline_per;
1011 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
1012 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
1013 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
1014 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
1016 else if (stricmp(type,"ppro")==0){
1017 cur_tmap_scanline_per=asm_ppro_tmap_scanline_per;
1018 cur_tmap_scanline_per_nolight=asm_ppro_tmap_scanline_per;
1019 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
1020 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
1021 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
1022 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
1026 if (stricmp(type,"fp")==0){
1027 cur_tmap_scanline_per=c_fp_tmap_scanline_per;
1028 cur_tmap_scanline_per_nolight=c_fp_tmap_scanline_per_nolight;
1029 cur_tmap_scanline_lin=c_tmap_scanline_lin;
1030 cur_tmap_scanline_lin_nolight=c_tmap_scanline_lin_nolight;
1031 cur_tmap_scanline_flat=c_tmap_scanline_flat;
1032 cur_tmap_scanline_shaded=c_tmap_scanline_shaded;
1035 if (stricmp(type,"c")!=0)
1036 printf("unknown tmap requested, using c tmap\n");
1037 cur_tmap_scanline_per=c_tmap_scanline_per;
1038 cur_tmap_scanline_per_nolight=c_tmap_scanline_per_nolight;
1039 cur_tmap_scanline_lin=c_tmap_scanline_lin;
1040 cur_tmap_scanline_lin_nolight=c_tmap_scanline_lin_nolight;
1041 cur_tmap_scanline_flat=c_tmap_scanline_flat;
1042 cur_tmap_scanline_shaded=c_tmap_scanline_shaded;