123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- Copyright (C) 1996-1997 Id Software, Inc.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
- // d_modech.c: called when mode has just changed
- #include "quakedef.h"
- #include "d_local.h"
- int d_vrectx, d_vrecty, d_vrectright_particle, d_vrectbottom_particle;
- int d_y_aspect_shift, d_pix_min, d_pix_max, d_pix_shift;
- int d_scantable[MAXHEIGHT];
- short *zspantable[MAXHEIGHT];
- /*
- ================
- D_Patch
- ================
- */
- void D_Patch (void)
- {
- #if id386
- static qboolean protectset8 = false;
- if (!protectset8)
- {
- Sys_MakeCodeWriteable ((int)D_PolysetAff8Start,
- (int)D_PolysetAff8End - (int)D_PolysetAff8Start);
- protectset8 = true;
- }
- #endif // id386
- }
- /*
- ================
- D_ViewChanged
- ================
- */
- void D_ViewChanged (void)
- {
- int rowbytes;
- if (r_dowarp)
- rowbytes = WARP_WIDTH;
- else
- rowbytes = vid.rowbytes;
- scale_for_mip = xscale;
- if (yscale > xscale)
- scale_for_mip = yscale;
- d_zrowbytes = vid.width * 2;
- d_zwidth = vid.width;
- d_pix_min = r_refdef.vrect.width / 320;
- if (d_pix_min < 1)
- d_pix_min = 1;
- d_pix_max = (int)((float)r_refdef.vrect.width / (320.0 / 4.0) + 0.5);
- d_pix_shift = 8 - (int)((float)r_refdef.vrect.width / 320.0 + 0.5);
- if (d_pix_max < 1)
- d_pix_max = 1;
- if (pixelAspect > 1.4)
- d_y_aspect_shift = 1;
- else
- d_y_aspect_shift = 0;
- d_vrectx = r_refdef.vrect.x;
- d_vrecty = r_refdef.vrect.y;
- d_vrectright_particle = r_refdef.vrectright - d_pix_max;
- d_vrectbottom_particle =
- r_refdef.vrectbottom - (d_pix_max << d_y_aspect_shift);
- {
- int i;
- for (i=0 ; i<vid.height; i++)
- {
- d_scantable[i] = i*rowbytes;
- zspantable[i] = d_pzbuffer + i*d_zwidth;
- }
- }
- D_Patch ();
- }
|