/* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ #pragma off (unreferenced) static char rcsid[] = "$Id: scanline.c 1.3 1996/01/24 16:38:16 champaign Exp $"; #pragma on (unreferenced) #include #include #include #include #include #include "fix.h" #include "mono.h" #include "gr.h" #include "grdef.h" #include "texmap.h" #include "texmapl.h" #include "scanline.h" extern ubyte * dest_row_data; extern int loop_count; void c_tmap_scanline_flat() { ubyte *dest; int x; dest = dest_row_data; for (x=loop_count; x >= 0; x-- ) { *dest++ = tmap_flat_color; } } void c_tmap_scanline_shaded() { int fade; ubyte *dest; int x; dest = dest_row_data; fade = tmap_flat_shade_value<<8; for (x=loop_count; x >= 0; x-- ) { *dest++ = gr_fade_table[ fade |(*dest)]; } } void c_tmap_scanline_lin_nolight() { ubyte *dest; uint c; int x; fix u,v,dudx, dvdx; u = fx_u; v = fx_v*64; dudx = fx_du_dx; dvdx = fx_dv_dx*64; dest = dest_row_data; if (!Transparency_on) { for (x=loop_count; x >= 0; x-- ) { *dest++ = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ]; u += dudx; v += dvdx; } } else { for (x=loop_count; x >= 0; x-- ) { c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ]; if ( c!=255) *dest = c; dest++; u += dudx; v += dvdx; } } } void c_tmap_scanline_lin() { ubyte *dest; uint c; int x; fix u,v,l,dudx, dvdx, dldx; u = fx_u; v = fx_v*64; dudx = fx_du_dx; dvdx = fx_dv_dx*64; l = fx_l; dldx = fx_dl_dx; dest = dest_row_data; if (!Transparency_on) { for (x=loop_count; x >= 0; x-- ) { *dest++ = gr_fade_table[ (l&(0xff00)) + (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ]; l += dldx; u += dudx; v += dvdx; } } else { for (x=loop_count; x >= 0; x-- ) { c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ]; if ( c!=255) *dest = gr_fade_table[ (l&(0xff00)) + c ]; dest++; l += dldx; u += dudx; v += dvdx; } } } void c_tmap_scanline_per_nolight() { ubyte *dest; uint c; int x; fix u,v,z,dudx, dvdx, dzdx; u = fx_u; v = fx_v*64; z = fx_z; dudx = fx_du_dx; dvdx = fx_dv_dx*64; dzdx = fx_dz_dx; dest = dest_row_data; if (!Transparency_on) { for (x=loop_count; x >= 0; x-- ) { *dest++ = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ]; u += dudx; v += dvdx; z += dzdx; } } else { for (x=loop_count; x >= 0; x-- ) { c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ]; if ( c!=255) *dest = c; dest++; u += dudx; v += dvdx; z += dzdx; } } } void c_tmap_scanline_per() { ubyte *dest; uint c; int x; fix u,v,z,l,dudx, dvdx, dzdx, dldx; u = fx_u; v = fx_v*64; z = fx_z; dudx = fx_du_dx; dvdx = fx_dv_dx*64; dzdx = fx_dz_dx; l = fx_l; dldx = fx_dl_dx; dest = dest_row_data; if (!Transparency_on) { for (x=loop_count; x >= 0; x-- ) { *dest++ = gr_fade_table[ (l&(0xff00)) + (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ]; l += dldx; u += dudx; v += dvdx; z += dzdx; } } else { for (x=loop_count; x >= 0; x-- ) { c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ]; if ( c!=255) *dest = gr_fade_table[ (l&(0xff00)) + c ]; dest++; l += dldx; u += dudx; v += dvdx; z += dzdx; } } } #define zonk 1 void c_tmap_scanline_editor() { ubyte *dest; uint c; int x; fix u,v,z,dudx, dvdx, dzdx; u = fx_u; v = fx_v*64; z = fx_z; dudx = fx_du_dx; dvdx = fx_dv_dx*64; dzdx = fx_dz_dx; dest = dest_row_data; if (!Transparency_on) { for (x=loop_count; x >= 0; x-- ) { *dest++ = zonk; //(uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ]; u += dudx; v += dvdx; z += dzdx; } } else { for (x=loop_count; x >= 0; x-- ) { c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ]; if ( c!=255) *dest = zonk; dest++; u += dudx; v += dvdx; z += dzdx; } } }