- Fixed closed doors between the front sector's floor and ceiling the right way.

I was just missing a non-null texture check.
- Removed references to texturewidthmask. What was that?


SVN r244 (trunk)
This commit is contained in:
Randy Heit 2006-07-11 04:48:10 +00:00
parent 133a035c76
commit 0b3730392c
6 changed files with 18 additions and 45 deletions

View file

@ -1,3 +1,8 @@
July 10, 2006
- Fixed closed doors between the front sector's floor and ceiling the right way.
I was just missing a non-null texture check.
- Removed references to texturewidthmask. What was that?
July 10, 2006 (Changes by Graf Zahl) July 10, 2006 (Changes by Graf Zahl)
- Fixed: The earthquake code needs to check whether a quake's spot is still valid. - Fixed: The earthquake code needs to check whether a quake's spot is still valid.
Super Sonic Doom crashed due to this. Super Sonic Doom crashed due to this.

View file

@ -161,6 +161,7 @@ const PClass *PClass::FindClass (FName zaname)
DObject *PClass::CreateNew () const DObject *PClass::CreateNew () const
{ {
BYTE *mem = (BYTE *)M_Malloc (Size); BYTE *mem = (BYTE *)M_Malloc (Size);
assert (mem != NULL);
// Set this object's defaults before constructing it. // Set this object's defaults before constructing it.
if (Defaults!=NULL) if (Defaults!=NULL)

View file

@ -748,23 +748,15 @@ void R_AddLine (seg_t *line)
{ {
solid = true; solid = true;
} }
// [RH] Check for completely closed back sector. This worked in
// 1.22, so I assume I accidentally broke it when I added slopes.
else if (rw_backcz1 <= rw_backfz1 && rw_backcz2 <= rw_backfz2)
{
solid = true;
doorclosed = true;
}
else if ( else if (
(backsector->ceilingpic != skyflatnum || // properly render skies (consider door "open" if both ceilings are sky):
frontsector->ceilingpic != skyflatnum) (backsector->ceilingpic != skyflatnum || frontsector->ceilingpic != skyflatnum)
// if door is closed because back is shut: // if door is closed because back is shut:
&& rw_backcz1 <= rw_backfz1 && rw_backcz2 <= rw_backfz2 && rw_backcz1 <= rw_backfz1 && rw_backcz2 <= rw_backfz2
// preserve a kind of transparent door/lift special effect: // preserve a kind of transparent door/lift special effect:
&& rw_backcz1 >= rw_frontcz1 && rw_backcz2 >= rw_frontcz2 && ((rw_backcz1 >= rw_frontcz1 && rw_backcz2 >= rw_frontcz2) || line->sidedef->toptexture != 0)
&& ((rw_backfz1 <= rw_frontfz1 && rw_backfz2 <= rw_frontfz2) || line->sidedef->bottomtexture != 0)) && ((rw_backfz1 <= rw_frontfz1 && rw_backfz2 <= rw_frontfz2) || line->sidedef->bottomtexture != 0))
{ {
// killough 1/18/98 -- This function is used to fix the automap bug which // killough 1/18/98 -- This function is used to fix the automap bug which

View file

@ -632,6 +632,9 @@ visplane_t *R_CheckPlane (visplane_t *pl, int start, int stop)
int unionl, unionh; int unionl, unionh;
int x; int x;
assert (start >= 0 && start < viewwidth);
assert (stop >= start && stop < viewwidth);
if (start < pl->minx) if (start < pl->minx)
{ {
intrl = pl->minx; intrl = pl->minx;

View file

@ -384,8 +384,6 @@ clearfog:
return; return;
} }
extern int *texturewidthmask;
// prevlineasm1 is like vlineasm1 but skips the loop if only drawing one pixel // prevlineasm1 is like vlineasm1 but skips the loop if only drawing one pixel
inline fixed_t prevline1 (fixed_t vince, byte *colormap, int count, fixed_t vplce, const byte *bufplce, byte *dest) inline fixed_t prevline1 (fixed_t vince, byte *colormap, int count, fixed_t vplce, const byte *bufplce, byte *dest)
{ {
@ -398,36 +396,6 @@ inline fixed_t prevline1 (fixed_t vince, byte *colormap, int count, fixed_t vplc
return doprevline1 (); return doprevline1 ();
} }
/*
esp+00 = edi
esp+04 = ebx
esp+08 = esi
esp+0c = ebp
esp+13 = bad
esp+14 = light
esp+18 = &uwal[x]
esp+1c = &lwal[x]
esp+20 = x2
esp+24 = &dwal[x]
esp+28 =
esp+2c = xoffset
esp+30 = yrepeat
esp+34 = texturemid
esp+40 = y1ve[]
esp+50 = y2ve[]
esp+54 =
esp+58 =
esp+5c =
esp+60 = <return address>
esp+64 = uwal
esp+68 = dwal
esp+6c = swal
esp+70 = lwal
esp+74 = getcol
esi = x
ebp = x2
*/
void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t *lwal, void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t *lwal,
const BYTE *(*getcol)(FTexture *tex, int x)) const BYTE *(*getcol)(FTexture *tex, int x))
{ {
@ -474,6 +442,8 @@ void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t
y1ve[0] = uwal[x];//max(uwal[x],umost[x]); y1ve[0] = uwal[x];//max(uwal[x],umost[x]);
y2ve[0] = dwal[x];//min(dwal[x],dmost[x]); y2ve[0] = dwal[x];//min(dwal[x],dmost[x]);
if (y2ve[0] <= y1ve[0]) continue; if (y2ve[0] <= y1ve[0]) continue;
assert (y1ve[0] < viewheight);
assert (y2ve[0] <= viewheight);
if (!fixedcolormap) if (!fixedcolormap)
{ // calculate lighting { // calculate lighting
@ -497,6 +467,8 @@ void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t
y1ve[z] = uwal[x+z];//max(uwal[x+z],umost[x+z]); y1ve[z] = uwal[x+z];//max(uwal[x+z],umost[x+z]);
y2ve[z] = dwal[x+z];//min(dwal[x+z],dmost[x+z])-1; y2ve[z] = dwal[x+z];//min(dwal[x+z],dmost[x+z])-1;
if (y2ve[z] <= y1ve[z]) { bad += 1<<z; continue; } if (y2ve[z] <= y1ve[z]) { bad += 1<<z; continue; }
assert (y1ve[z] < viewheight);
assert (y2ve[z] <= viewheight);
bufplce[z] = getcol (rw_pic, (lwal[x+z] + xoffset) >> FRACBITS); bufplce[z] = getcol (rw_pic, (lwal[x+z] + xoffset) >> FRACBITS);
vince[z] = swal[x+z] * yrepeat; vince[z] = swal[x+z] * yrepeat;
@ -563,6 +535,8 @@ void wallscan (int x1, int x2, short *uwal, short *dwal, fixed_t *swal, fixed_t
y1ve[0] = uwal[x];//max(uwal[x],umost[x]); y1ve[0] = uwal[x];//max(uwal[x],umost[x]);
y2ve[0] = dwal[x];//min(dwal[x],dmost[x]); y2ve[0] = dwal[x];//min(dwal[x],dmost[x]);
if (y2ve[0] <= y1ve[0]) continue; if (y2ve[0] <= y1ve[0]) continue;
assert (y1ve[0] < viewheight);
assert (y2ve[0] <= viewheight);
if (!fixedcolormap) if (!fixedcolormap)
{ // calculate lighting { // calculate lighting

View file

@ -36,8 +36,6 @@
#include "v_text.h" #include "v_text.h"
#include "gi.h" #include "gi.h"
extern int *texturewidthmask;
// //
// sky mapping // sky mapping
// //