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.
16 * Routines to draw the texture mapped scanlines.
39 void c_tmap_scanline_flat()
44 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y ) );
46 /* for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
47 *dest++ = tmap_flat_color;
49 memset(dest,tmap_flat_color,fx_xright-fx_xleft+1);
52 void c_tmap_scanline_shaded()
58 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
60 fade = tmap_flat_shade_value<<8;
61 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
63 *dest++ = gr_fade_table[ fade |(tmp)];
67 void c_tmap_scanline_lin_nolight()
79 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
81 if (!Transparency_on) {
82 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
83 *dest++ = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
88 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
89 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
101 void c_tmap_scanline_lin()
106 fix u,v,l,dudx, dvdx, dldx;
114 dldx = fx_dl_dx/256; // fx_dl_dx>>8 != fx_dl_dx/256 for negative numbers
115 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
117 if (!Transparency_on) {
118 ubyte* pixPtrLocalCopy = pixptr;
119 ubyte* fadeTableLocalCopy = gr_fade_table;
120 unsigned long destlong;
122 x = fx_xright-fx_xleft+1;
124 if ((j = (unsigned long) dest & 3) != 0)
133 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
134 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
147 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
148 destlong = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 24;
153 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
154 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 16;
159 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
160 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ] << 8;
165 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
166 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
171 *((unsigned long *) dest) = destlong;
179 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
180 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint) pixPtrLocalCopy[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
188 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
189 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
190 if ( c!=TRANSPARENCY_COLOR)
191 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
192 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
203 void c_tmap_scanline_lin()
208 fix u,v,l,dudx, dvdx, dldx;
216 dldx = fx_dl_dx/256; // fx_dl_dx>>8 != fx_dl_dx/256 for negative numbers
217 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
219 if (!Transparency_on) {
220 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
221 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
222 *dest++ = gr_fade_table[ (l&(0x7f00)) + (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
229 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
230 c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
232 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
233 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
244 // Used for energy centers. See comments for c_tmap_scanline_per().
245 void c_fp_tmap_scanline_per_nolight()
250 double u, v, z, dudx, dvdx, dzdx, rec_z;
254 v = f2db(fx_v) * 64.0;
256 dudx = f2db(fx_du_dx);
257 dvdx = f2db(fx_dv_dx) * 64.0;
258 dzdx = f2db(fx_dz_dx);
262 dest = (ubyte *) (write_buffer + fx_xleft + (bytes_per_row * fx_y));
264 x = fx_xright - fx_xleft + 1;
265 if (!Transparency_on) {
267 if ((j = (size_t) dest & 7) != 0) {
272 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
273 (((int) (u * rec_z)) & 63)];
285 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
286 (((int) (u * rec_z)) & 63)];
292 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
293 (((int) (u * rec_z)) & 63)] << 8;
299 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
300 (((int) (u * rec_z)) & 63)] << 16;
306 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
307 (((int) (u * rec_z)) & 63)] << 24;
313 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
314 (((int) (u * rec_z)) & 63)] << 32;
320 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
321 (((int) (u * rec_z)) & 63)] << 40;
327 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
328 (((int) (u * rec_z)) & 63)] << 48;
334 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
335 (((int) (u * rec_z)) & 63)] << 56;
341 *((uint64_t *) dest) = destlong;
349 (uint64_t) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
350 (((int) (u * rec_z)) & 63)];
357 x = fx_xright - fx_xleft + 1;
360 if ((j = (size_t) dest & 7) != 0) {
365 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
366 (((int) (u * rec_z)) & 63)];
381 destlong = *((uint64_t *) dest);
382 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
383 (((int) (u * rec_z)) & 63)];
385 destlong &= ~(uint64_t)0xFF;
386 destlong |= (uint64_t) c;
392 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
393 (((int) (u * rec_z)) & 63)];
395 destlong &= ~((uint64_t)0xFF << 8);
396 destlong |= (uint64_t) c << 8;
402 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
403 (((int) (u * rec_z)) & 63)];
405 destlong &= ~((uint64_t)0xFF << 16);
406 destlong |= (uint64_t) c << 16;
412 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
413 (((int) (u * rec_z)) & 63)];
415 destlong &= ~((uint64_t)0xFF << 24);
416 destlong |= (uint64_t) c << 24;
422 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
423 (((int) (u * rec_z)) & 63)];
425 destlong &= ~((uint64_t)0xFF << 32);
426 destlong |= (uint64_t) c << 32;
432 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
433 (((int) (u * rec_z)) & 63)];
435 destlong &= ~((uint64_t)0xFF << 40);
436 destlong |= (uint64_t) c << 40;
442 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
443 (((int) (u * rec_z)) & 63)];
445 destlong &= ~((uint64_t)0xFF << 48);
446 destlong |= (uint64_t) c << 48;
452 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
453 (((int) (u * rec_z)) & 63)];
455 destlong &= ~((uint64_t)0xFF << 56);
456 destlong |= (uint64_t) c << 56;
463 *((uint64_t *) dest) = destlong;
470 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
471 (((int) (u * rec_z)) & 63)];
483 void c_tmap_scanline_per_nolight()
488 fix u,v,z,dudx, dvdx, dzdx;
497 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
499 if (!Transparency_on) {
500 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
501 *dest++ = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
507 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
508 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
519 // This texture mapper uses floating point extensively and writes 8 pixels at once, so it likely works
520 // best on 64 bit RISC processors.
521 // WARNING: it is not endian clean. For big endian, reverse the shift counts in the unrolled loops. I
522 // have no means to test that, so I didn't try it. Please tell me if you get this to work on a big
524 // If you're using an Alpha, use the Compaq compiler for this file for quite some fps more.
525 // Unfortunately, it won't compile the whole source, so simply compile everything, change the
526 // compiler to ccc, remove scanline.o and compile again.
527 // Please send comments/suggestions to falk.hueffner@student.uni-tuebingen.de.
528 void c_fp_tmap_scanline_per()
533 double u, v, z, l, dudx, dvdx, dzdx, dldx, rec_z;
537 v = f2db(fx_v) * 64.0;
540 dudx = f2db(fx_du_dx);
541 dvdx = f2db(fx_dv_dx) * 64.0;
542 dzdx = f2db(fx_dz_dx);
543 dldx = f2db(fx_dl_dx);
545 rec_z = 1.0 / z; // gcc 2.95.2 is won't do this optimization itself
547 dest = (ubyte *) (write_buffer + fx_xleft + (bytes_per_row * fx_y));
548 x = fx_xright - fx_xleft + 1;
550 if (!Transparency_on) {
552 if ((j = (size_t) dest & 7) != 0) {
557 gr_fade_table[((int) fabs(l)) * 256 +
558 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
559 (((int) (u * rec_z)) & 63)]];
573 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
574 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
575 (((int) (u * rec_z)) & 63)]];
582 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
583 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
584 (((int) (u * rec_z)) & 63)]] << 8;
591 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
592 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
593 (((int) (u * rec_z)) & 63)]] << 16;
600 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
601 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
602 (((int) (u * rec_z)) & 63)]] << 24;
609 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
610 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
611 (((int) (u * rec_z)) & 63)]] << 32;
618 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
619 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
620 (((int) (u * rec_z)) & 63)]] << 40;
627 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
628 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
629 (((int) (u * rec_z)) & 63)]] << 48;
636 (uint64_t) gr_fade_table[((int) fabs(l)) * 256 +
637 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) +
638 (((int) (u * rec_z)) & 63)]] << 56;
645 *((uint64_t *) dest) = destlong;
653 gr_fade_table[((int) fabs(l)) * 256 +
654 (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)]];
663 if ((j = (size_t) dest & 7) != 0) {
667 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
669 *dest = gr_fade_table[((int) fabs(l)) * 256 + c];
683 destlong = *((uint64_t *) dest);
684 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
686 destlong &= ~(uint64_t)0xFF;
687 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c];
694 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
696 destlong &= ~((uint64_t)0xFF << 8);
697 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 8;
704 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
706 destlong &= ~((uint64_t)0xFF << 16);
707 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 16;
714 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
716 destlong &= ~((uint64_t)0xFF << 24);
717 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 24;
724 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
726 destlong &= ~((uint64_t)0xFF << 32);
727 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 32;
734 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
736 destlong &= ~((uint64_t)0xFF << 40);
737 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 40;
744 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
746 destlong &= ~((uint64_t)0xFF << 48);
747 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 48;
754 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
756 destlong &= ~((uint64_t)0xFF << 56);
757 destlong |= (uint64_t) gr_fade_table[((int) fabs(l)) * 256 + c] << 56;
765 *((uint64_t *) dest) = destlong;
772 c = (uint) pixptr[(((int) (v * rec_z)) & (64 * 63)) + (((int) (u * rec_z)) & 63)];
774 *dest = gr_fade_table[((int) fabs(l)) * 256 + c];
786 // note the unrolling loop is broken. It is never called, and uses big endian. -- FH
787 void c_tmap_scanline_per()
793 fix dudx, dvdx, dzdx, dldx;
803 dldx = fx_dl_dx/256; // fx_dl_dx>>8 != fx_dl_dx/256 for negative numbers
804 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
806 if (!Transparency_on) {
807 ubyte* pixPtrLocalCopy = pixptr;
808 ubyte* fadeTableLocalCopy = gr_fade_table;
809 unsigned long destlong;
811 x = fx_xright-fx_xleft+1; // x = number of pixels in scanline
813 if ((j = (unsigned long) dest & 3) != 0)
822 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
823 *dest++ = fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
837 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
838 destlong = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 24;
844 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
845 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 16;
851 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
852 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ] << 8;
858 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
859 destlong |= (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
865 *((unsigned long *) dest) = destlong;
873 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
874 *dest++ = (unsigned long) fadeTableLocalCopy[ (l&(0x7f00)) + (uint)pixPtrLocalCopy[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
883 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
884 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
885 if ( c!=TRANSPARENCY_COLOR)
886 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
887 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
899 void c_tmap_scanline_per()
904 fix u,v,z,l,dudx, dvdx, dzdx, dldx;
914 dldx = fx_dl_dx/256; // fx_dl_dx>>8 != fx_dl_dx/256 for negative numbers
915 dest = (ubyte *)(write_buffer + fx_xleft + (bytes_per_row * fx_y) );
917 if (!Transparency_on) {
918 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
919 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
920 *dest++ = gr_fade_table[ (l&(0x7f00)) + (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
928 for (x= fx_xright-fx_xleft+1 ; x > 0; --x ) {
929 c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
931 //edited 05/18/99 Matt Mueller - changed from 0xff00 to 0x7f00 to fix glitches
932 *dest = gr_fade_table[ (l&(0x7f00)) + c ];
945 void (*cur_tmap_scanline_per)(void);
946 void (*cur_tmap_scanline_per_nolight)(void);
947 void (*cur_tmap_scanline_lin)(void);
948 void (*cur_tmap_scanline_lin_nolight)(void);
949 void (*cur_tmap_scanline_flat)(void);
950 void (*cur_tmap_scanline_shaded)(void);
952 //runtime selection of optimized tmappers. 12/07/99 Matthew Mueller
953 //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.
954 void select_tmap(char *type)
958 #if !defined(NO_ASM) && !defined(OGL)
959 #if defined(__pentiumpro__)
961 #elif defined(__pentium__)
971 #if !defined(NO_ASM) && !defined(OGL)
972 if (stricmp(type, "i386")==0)
974 cur_tmap_scanline_per=asm_tmap_scanline_per;
975 cur_tmap_scanline_per_nolight=asm_tmap_scanline_per;
976 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
977 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
978 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
979 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
981 else if (stricmp(type,"pent")==0){
982 cur_tmap_scanline_per=asm_pent_tmap_scanline_per;
983 cur_tmap_scanline_per_nolight=asm_pent_tmap_scanline_per;
984 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
985 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
986 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
987 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
989 else if (stricmp(type,"ppro")==0){
990 cur_tmap_scanline_per=asm_ppro_tmap_scanline_per;
991 cur_tmap_scanline_per_nolight=asm_ppro_tmap_scanline_per;
992 cur_tmap_scanline_lin=asm_tmap_scanline_lin_lighted;
993 cur_tmap_scanline_lin_nolight=asm_tmap_scanline_lin;
994 cur_tmap_scanline_flat=asm_tmap_scanline_flat;
995 cur_tmap_scanline_shaded=asm_tmap_scanline_shaded;
999 if (stricmp(type,"fp")==0){
1000 cur_tmap_scanline_per=c_fp_tmap_scanline_per;
1001 cur_tmap_scanline_per_nolight=c_fp_tmap_scanline_per_nolight;
1002 cur_tmap_scanline_lin=c_tmap_scanline_lin;
1003 cur_tmap_scanline_lin_nolight=c_tmap_scanline_lin_nolight;
1004 cur_tmap_scanline_flat=c_tmap_scanline_flat;
1005 cur_tmap_scanline_shaded=c_tmap_scanline_shaded;
1008 if (stricmp(type,"c")!=0)
1009 printf("unknown tmap requested, using c tmap\n");
1010 cur_tmap_scanline_per=c_tmap_scanline_per;
1011 cur_tmap_scanline_per_nolight=c_tmap_scanline_per_nolight;
1012 cur_tmap_scanline_lin=c_tmap_scanline_lin;
1013 cur_tmap_scanline_lin_nolight=c_tmap_scanline_lin_nolight;
1014 cur_tmap_scanline_flat=c_tmap_scanline_flat;
1015 cur_tmap_scanline_shaded=c_tmap_scanline_shaded;