// // R_ExecuteSetViewSize // void R_ExecuteSetViewSize(void) { fixed_t cosadj; fixed_t dy; int i; int j; int level; int startmap; setsizeneeded = false; if (setblocks == 11) { scaledviewwidth = SCREENWIDTH; viewheight = SCREENHEIGHT; } else { scaledviewwidth = setblocks * 64; viewheight = ((setblocks * 168 / 10) & ~7) * 2; } viewwidth = scaledviewwidth; viewheightfrac = viewheight << FRACBITS; centery = viewheight / 2; centerx = viewwidth / 2; centerxfrac = centerx << FRACBITS; centeryfrac = centery << FRACBITS; projection = centerxfrac; projectiony = ((SCREENHEIGHT * centerx * ORIGINALWIDTH) / ORIGINALHEIGHT) / SCREENWIDTH * FRACUNIT; colfunc = basecolfunc = R_DrawColumn; fuzzcolfunc = R_DrawFuzzColumn; tlcolfunc = R_DrawTranslucentColumn; tl50colfunc = R_DrawTranslucent50Column; tl33colfunc = R_DrawTranslucent33Column; tlgreencolfunc = R_DrawTranslucentGreenColumn; tlredcolfunc = R_DrawTranslucentRedColumn; tlredwhitecolfunc = R_DrawTranslucentRedWhiteColumn; tlbluecolfunc = R_DrawTranslucentBlueColumn; tlgreen50colfunc = R_DrawTranslucentGreen50Column; tlred50colfunc = R_DrawTranslucentRed50Column; tlredwhite50colfunc = R_DrawTranslucentRedWhite50Column; tlblue50colfunc = R_DrawTranslucentBlue50Column; redtobluecolfunc = R_DrawRedToBlueColumn; tlredtoblue50colfunc = R_DrawTranslucentRedToBlue50Column; transcolfunc = R_DrawTranslatedColumn; spanfunc = R_DrawSpan; skycolfunc = R_DrawSkyColumn; redtogreencolfunc = R_DrawRedToGreenColumn; tlredtogreen50colfunc = R_DrawTranslucentRedToGreen50Column; wallcolfunc = R_DrawWallColumn; fbwallcolfunc = R_DrawFullbrightWallColumn; psprcolfunc = R_DrawPlayerSpriteColumn; R_InitBuffer(scaledviewwidth, viewheight); R_InitTextureMapping(); // psprite scales pspritexscale = (centerx << FRACBITS) / (ORIGINALWIDTH / 2); pspriteyscale = (((SCREENHEIGHT * viewwidth) / SCREENWIDTH) << FRACBITS) / ORIGINALHEIGHT; pspriteiscale = FixedDiv(FRACUNIT, pspritexscale); // thing clipping for (i = 0; i < viewwidth; i++) screenheightarray[i] = viewheight; // planes for (i = 0; i < viewheight; i++) { dy = ABS(((i - viewheight / 2) << FRACBITS) + FRACUNIT / 2); yslope[i] = FixedDiv(projectiony, dy); } for (i = 0; i < viewwidth; i++) { cosadj = ABS(finecosine[xtoviewangle[i] >> ANGLETOFINESHIFT]); distscale[i] = FixedDiv(FRACUNIT, cosadj); } // Calculate the light levels to use // for each level / scale combination. for (i = 0; i < LIGHTLEVELS; i++) { startmap = ((LIGHTLEVELS - 1 - i) * 2) * NUMCOLORMAPS / LIGHTLEVELS; for (j = 0; j < MAXLIGHTSCALE; j++) { level = startmap - j * SCREENWIDTH / (viewwidth * DISTMAP); if (level < 0) level = 0; else if (level >= NUMCOLORMAPS) level = NUMCOLORMAPS - 1; scalelight[i][j] = colormaps + level * 256; // [BH] calculate separate light levels to use when drawing // player's weapon, so it stays consistent regardless of view size level = startmap - j / DISTMAP; if (level < 0) level = 0; else if (level >= NUMCOLORMAPS) level = NUMCOLORMAPS - 1; scalelight2[i][j] = colormaps + level * 256; } } }
void R_ExecuteSetViewSize (void) { int i; setsizeneeded = false; if (setblocks == 11) { scaledviewwidth = SCREENWIDTH; viewheight = SCREENHEIGHT; } // proff 09/24/98: Added for high-res else if (setblocks == 10) { scaledviewwidth = SCREENWIDTH; viewheight = SCREENHEIGHT-ST_SCALED_HEIGHT; } else { // proff 08/17/98: Changed for high-res scaledviewwidth = setblocks*SCREENWIDTH/10; viewheight = (setblocks*(SCREENHEIGHT-ST_SCALED_HEIGHT)/10) & ~7; } viewwidth = scaledviewwidth; centery = viewheight/2; centerx = viewwidth/2; centerxfrac = centerx<<FRACBITS; centeryfrac = centery<<FRACBITS; projection = centerxfrac; // proff 11/06/98: Added for high-res projectiony = ((SCREENHEIGHT * centerx * 320) / 200) / SCREENWIDTH * FRACUNIT; R_InitBuffer (scaledviewwidth, viewheight); R_InitTextureMapping(); // psprite scales // proff 08/17/98: Changed for high-res pspritescale = FRACUNIT*viewwidth/320; pspriteiscale = FRACUNIT*320/viewwidth; // proff 11/06/98: Added for high-res pspriteyscale = (((SCREENHEIGHT*viewwidth)/SCREENWIDTH) << FRACBITS) / 200; // thing clipping for (i=0 ; i<viewwidth ; i++) screenheightarray[i] = viewheight; // planes for (i=0 ; i<viewheight ; i++) { // killough 5/2/98: reformatted fixed_t dy = D_abs(((i-viewheight/2)<<FRACBITS)+FRACUNIT/2); // proff 08/17/98: Changed for high-res yslope[i] = FixedDiv(projectiony, dy); } for (i=0 ; i<viewwidth ; i++) { fixed_t cosadj = D_abs(finecosine[xtoviewangle[i]>>ANGLETOFINESHIFT]); distscale[i] = FixedDiv(FRACUNIT,cosadj); } }
void R_ExecuteSetViewSize (void) { int i; setsizeneeded = false; if (setblocks == 11) { scaledviewwidth = SCREENWIDTH; viewheight = SCREENHEIGHT; } // proff 09/24/98: Added for high-res else if (setblocks == 10) { scaledviewwidth = SCREENWIDTH; viewheight = SCREENHEIGHT-st_height; } else { // proff 08/17/98: Changed for high-res scaledviewwidth = setblocks*SCREENWIDTH/10; viewheight = (setblocks*(SCREENHEIGHT-st_height)/10) & ~7; } viewwidth = scaledviewwidth; centery = viewheight/2; centerx = viewwidth/2; centerxfrac = centerx<<FRACBITS; centeryfrac = centery<<FRACBITS; projection = centerxfrac; // proff 11/06/98: Added for high-res projectiony = ((SCREENHEIGHT * centerx * 320) / 200) / SCREENWIDTH * FRACUNIT; R_InitBuffer (scaledviewwidth, viewheight); R_InitTextureMapping(); // psprite scales // proff 08/17/98: Changed for high-res pspritescale = FRACUNIT*viewwidth/320; pspriteiscale = FRACUNIT*320/viewwidth; // proff 11/06/98: Added for high-res pspriteyscale = (((SCREENHEIGHT*viewwidth)/SCREENWIDTH) << FRACBITS) / 200; // thing clipping for (i=0 ; i<viewwidth ; i++) screenheightarray[i] = viewheight; // planes for (i=0 ; i<viewheight ; i++) { // killough 5/2/98: reformatted fixed_t dy = abs(((i-viewheight/2)<<FRACBITS)+FRACUNIT/2); // proff 08/17/98: Changed for high-res yslope[i] = FixedDiv(projectiony, dy); } for (i=0 ; i<viewwidth ; i++) { fixed_t cosadj = abs(finecosine[xtoviewangle[i]>>ANGLETOFINESHIFT]); distscale[i] = FixedDiv(FRACUNIT,cosadj); } // Calculate the light levels to use // for each level / scale combination. for (i=0; i<LIGHTLEVELS; i++) { int j, startmap = ((LIGHTLEVELS-1-i)*2)*NUMCOLORMAPS/LIGHTLEVELS; for (j=0 ; j<MAXLIGHTSCALE ; j++) { int t, level = startmap - j*320/viewwidth/DISTMAP; if (level < 0) level = 0; if (level >= NUMCOLORMAPS) level = NUMCOLORMAPS-1; // killough 3/20/98: initialize multiple colormaps level *= 256; for (t=0; t<numcolormaps; t++) // killough 4/4/98 c_scalelight[t][i][j] = colormaps[t] + level; } } }