This commit is contained in:
Christoph Oelckers 2014-08-21 13:42:43 +02:00
commit 816999109e
9 changed files with 48 additions and 32 deletions

View file

@ -70,9 +70,9 @@ static void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d)
*c = c2;
*d = d2;
#elif __PIC__
#elif defined __PIC__ && defined __i386__
/* GCC or Clang WITH position-independent code generation */
/* GCC or Clang WITH position-independent code generation, i386 only */
__asm__ __volatile__ (
"xchgl %%ebx, %1\n"
@ -86,7 +86,7 @@ static void MyCPUID(UInt32 function, UInt32 *a, UInt32 *b, UInt32 *c, UInt32 *d)
#else
/* GCC or Clang WITHOUT position-independent code generation */
/* GCC or Clang WITHOUT position-independent code generation, or x86_64 */
__asm__ __volatile__ (
"cpuid"

View file

@ -102,6 +102,7 @@ DEFINE_SPECIAL(Scroll_Texture_Left, 100, -1, -1, 2)
DEFINE_SPECIAL(Scroll_Texture_Right, 101, -1, -1, 2)
DEFINE_SPECIAL(Scroll_Texture_Up, 102, -1, -1, 2)
DEFINE_SPECIAL(Scroll_Texture_Down, 103, -1, -1, 2)
DEFINE_SPECIAL(Ceiling_CrushAndRaiseSilentDist, 104, 3, 5, 5)
DEFINE_SPECIAL(Light_ForceLightning, 109, 1, 1, 1)
DEFINE_SPECIAL(Light_RaiseByValue, 110, 2, 2, 2)

View file

@ -6,6 +6,7 @@
#include "doomtype.h"
#include "doomdef.h"
#include "m_fixed.h"
#include <stdio.h>
#include <string.h>
@ -75,12 +76,12 @@ void ScanDirectory(TArray<FFileList> &list, const char *dirpath);
inline int AdjustTics(int tics)
{
return (tics * 98) / 100;
return Scale(tics, 98, 100);
}
inline int Tics2Seconds(int tics)
{
return (tics * 98) / (100 * TICRATE);
return Scale(tics, 98, (100 * TICRATE));
}

View file

@ -133,7 +133,6 @@ void DCeiling::Tick ()
switch (m_Type)
{
case ceilCrushAndRaise:
case ceilCrushAndRaiseDist:
m_Direction = -1;
m_Speed = m_Speed1;
if (!SN_IsMakingLoopingSound (m_Sector))
@ -165,7 +164,6 @@ void DCeiling::Tick ()
switch (m_Type)
{
case ceilCrushAndRaise:
case ceilCrushAndRaiseDist:
case ceilCrushRaiseAndStay:
m_Speed = m_Speed2;
m_Direction = 1;
@ -195,7 +193,6 @@ void DCeiling::Tick ()
switch (m_Type)
{
case ceilCrushAndRaise:
case ceilCrushAndRaiseDist:
case ceilLowerAndCrush:
case ceilLowerAndCrushDist:
if (m_Speed1 == FRACUNIT && m_Speed2 == FRACUNIT)
@ -257,7 +254,6 @@ DCeiling *DCeiling::Create(sector_t *sec, DCeiling::ECeiling type, line_t *line,
switch (type)
{
case ceilCrushAndRaise:
case ceilCrushAndRaiseDist:
case ceilCrushRaiseAndStay:
ceiling->m_TopHeight = sec->ceilingplane.d;
case ceilLowerAndCrush:
@ -267,7 +263,7 @@ DCeiling *DCeiling::Create(sector_t *sec, DCeiling::ECeiling type, line_t *line,
{
targheight += 8*FRACUNIT;
}
else if (type == ceilLowerAndCrushDist || type == ceilCrushAndRaiseDist)
else if (type == ceilCrushAndRaise)
{
targheight += height;
}
@ -509,7 +505,7 @@ bool EV_DoCeiling (DCeiling::ECeiling type, line_t *line,
// Reactivate in-stasis ceilings...for certain types.
// This restarts a crusher after it has been stopped
if (type == DCeiling::ceilCrushAndRaise || type == DCeiling::ceilCrushAndRaiseDist)
if (type == DCeiling::ceilCrushAndRaise)
{
P_ActivateInStasisCeiling (tag);
}

View file

@ -641,7 +641,7 @@ FUNC(LS_Ceiling_CrushAndRaiseA)
FUNC(LS_Ceiling_CrushAndRaiseDist)
// Ceiling_CrushAndRaiseDist (tag, dist, speed, damage, crushtype)
{
return EV_DoCeiling (DCeiling::ceilCrushAndRaiseDist, ln, arg0, SPEED(arg2), SPEED(arg2), arg1*FRACUNIT, arg3, 0, 0, CRUSHTYPE(arg4));
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg2), SPEED(arg2), arg1*FRACUNIT, arg3, 0, 0, CRUSHTYPE(arg4));
}
FUNC(LS_Ceiling_CrushAndRaiseSilentA)
@ -650,6 +650,12 @@ FUNC(LS_Ceiling_CrushAndRaiseSilentA)
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg1), SPEED(arg2), 0, arg3, 1, 0, CRUSHTYPE(arg4));
}
FUNC(LS_Ceiling_CrushAndRaiseSilentDist)
// Ceiling_CrushAndRaiseSilentDist (tag, dist, upspeed, damage, crushtype)
{
return EV_DoCeiling (DCeiling::ceilCrushAndRaise, ln, arg0, SPEED(arg2), SPEED(arg2), arg1*FRACUNIT, arg3, 1, 0, CRUSHTYPE(arg4));
}
FUNC(LS_Ceiling_RaiseToNearest)
// Ceiling_RaiseToNearest (tag, speed)
{
@ -3261,7 +3267,7 @@ lnSpecFunc LineSpecials[256] =
/* 101 */ LS_NOP, // Scroll_Texture_Right
/* 102 */ LS_NOP, // Scroll_Texture_Up
/* 103 */ LS_NOP, // Scroll_Texture_Down
/* 104 */ LS_NOP,
/* 104 */ LS_Ceiling_CrushAndRaiseSilentDist,
/* 105 */ LS_NOP,
/* 106 */ LS_NOP,
/* 107 */ LS_NOP,

View file

@ -628,7 +628,6 @@ public:
ceilLowerInstant,
ceilRaiseInstant,
ceilCrushAndRaise,
ceilCrushAndRaiseDist,
ceilLowerAndCrush,
ceilLowerAndCrushDist,
ceilCrushRaiseAndStay,

View file

@ -2076,9 +2076,22 @@ void R_DrawSprite (vissprite_t *spr)
r1 = MAX<int> (ds->x1, x1);
r2 = MIN<int> (ds->x2, x2);
fixed_t neardepth, fardepth;
if (!spr->bWallSprite)
{
if (ds->sz1 < ds->sz2)
{
neardepth = ds->sz1, fardepth = ds->sz2;
}
else
{
neardepth = ds->sz2, fardepth = ds->sz1;
}
}
// Check if sprite is in front of draw seg:
if (DMulScale32(spr->gy - ds->curline->v1->y, ds->curline->v2->x - ds->curline->v1->x,
ds->curline->v1->x - spr->gx, ds->curline->v2->y - ds->curline->v1->y) <= 0)
if ((!spr->bWallSprite && neardepth > spr->depth) || ((spr->bWallSprite || fardepth > spr->depth) &&
DMulScale32(spr->gy - ds->curline->v1->y, ds->curline->v2->x - ds->curline->v1->x,
ds->curline->v1->x - spr->gx, ds->curline->v2->y - ds->curline->v1->y) <= 0))
{
// seg is behind sprite, so draw the mid texture if it has one
if (ds->maskedtexturecol != -1 || ds->bFogBoundary)

View file

@ -5,7 +5,7 @@ include "xlat/defines.i"
3 = WALK, Door_Close (tag, D_SLOW)
4 = WALK|MONST, Door_Raise (tag, D_SLOW, VDOORWAIT)
5 = WALK, Floor_RaiseToLowestCeiling (tag, F_SLOW)
6 = WALK, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
6 = WALK, Ceiling_CrushAndRaiseDist (tag, 8, C_NORMAL, 10)
7 = USE, Stairs_BuildUpDoom (tag, ST_SLOW, 8)
8 = WALK, Stairs_BuildUpDoom (tag, ST_SLOW, 8)
9 = USE, Floor_Donut (tag, DORATE, DORATE)
@ -24,7 +24,7 @@ include "xlat/defines.i"
22 = WALK, Plat_RaiseAndStayTx0 (tag, P_SLOW/2)
23 = USE, Floor_LowerToLowest (tag, F_SLOW)
24 = SHOOT, Floor_RaiseToLowestCeiling (tag, F_SLOW)
25 = WALK, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
25 = WALK, Ceiling_CrushAndRaiseDist (tag, 8, C_SLOW, 10)
26 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, BCard | CardIsSkull, tag)
27 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, YCard | CardIsSkull, tag)
28 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, RCard | CardIsSkull, tag)
@ -72,11 +72,11 @@ include "xlat/defines.i"
70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136)
71 = USE, Floor_LowerToHighest (tag, F_FAST, 136)
72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
73 = WALK|REP, Ceiling_CrushAndRaiseDist (tag, 8, C_SLOW, 10)
74 = WALK|REP, Ceiling_CrushStop (tag)
75 = WALK|REP, Door_Close (tag, D_SLOW)
76 = WALK|REP, Door_CloseWaitOpen (tag, D_SLOW, 240)
77 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
77 = WALK|REP, Ceiling_CrushAndRaiseDist (tag, 8, C_NORMAL, 10)
78 = USE|REP, Floor_TransferNumeric (tag) // <- BOOM special
79 = WALK|REP, Light_ChangeToValue (tag, 35)
80 = WALK|REP, Light_MaxNeighbor (tag)
@ -140,7 +140,7 @@ include "xlat/defines.i"
138 = USE|REP, Light_ChangeToValue (tag, 255)
139 = USE|REP, Light_ChangeToValue (tag, 35)
140 = USE, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64)
141 = WALK, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
141 = WALK, Ceiling_CrushAndRaiseSilentDist (tag, 8, C_SLOW, 10)
/****** The following are all new to BOOM ******/
@ -152,7 +152,7 @@ include "xlat/defines.i"
147 = WALK|REP, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64)
148 = WALK|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 3)
149 = WALK|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 4)
150 = WALK|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
150 = WALK|REP, Ceiling_CrushAndRaiseSilentDist (tag, 8, C_SLOW, 10)
151 = WALK|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW)
152 = WALK|REP, Ceiling_LowerToFloor (tag, C_SLOW)
153 = WALK, Floor_TransferTrigger (tag)
@ -166,8 +166,8 @@ include "xlat/defines.i"
161 = USE, Floor_RaiseByValue (tag, F_SLOW, 24)
162 = USE, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0)
163 = USE, Plat_Stop (tag)
164 = USE, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
164 = USE, Ceiling_CrushAndRaiseDist (tag, 8, C_NORMAL, 10)
165 = USE, Ceiling_CrushAndRaiseSilentDist (tag, 8, C_SLOW, 10)
166 = USE, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW, 1998)
167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
168 = USE, Ceiling_CrushStop (tag)
@ -185,9 +185,9 @@ include "xlat/defines.i"
180 = USE|REP, Floor_RaiseByValue (tag, F_SLOW, 24)
181 = USE|REP, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0)
182 = USE|REP, Plat_Stop (tag)
183 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
184 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
185 = USE|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
183 = USE|REP, Ceiling_CrushAndRaiseDist (tag, 8, C_NORMAL, 10)
184 = USE|REP, Ceiling_CrushAndRaiseDist (tag, 8, C_SLOW, 10)
185 = USE|REP, Ceiling_CrushAndRaiseSilentDist (tag, 8, C_SLOW, 10)
186 = USE|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW, 1998)
187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
188 = USE|REP, Ceiling_CrushStop (tag)

View file

@ -90,7 +90,7 @@ RetailOnly = 121
3 = WALK, Door_Close (tag, D_SLOW)
4 = WALK|MONST, Door_Raise (tag, D_SLOW, VDOORWAIT)
5 = WALK, Floor_RaiseToLowestCeiling (tag, F_SLOW)
6 = WALK, Ceiling_CrushAndRaiseA (tag, C_FAST, C_FAST, 10)
6 = WALK, Ceiling_CrushAndRaiseDist (tag, 8, C_FAST, 10)
8 = WALK, Stairs_BuildUpDoom (tag, ST_SLOW, 8)
10 = WALK|MONST, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0)
12 = WALK, Light_MaxNeighbor (tag)
@ -99,7 +99,7 @@ RetailOnly = 121
17 = WALK, Light_StrobeDoom (tag, 5, 35)
19 = WALK, Floor_LowerToHighest (tag, F_SLOW, 128)
22 = WALK, Plat_RaiseAndStayTx0 (tag, P_SLOW/2)
25 = WALK, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 0)
25 = WALK, Ceiling_CrushAndRaiseDist (tag, 8, C_SLOW, 0)
30 = WALK, Floor_RaiseByTexture (tag, F_SLOW)
35 = WALK, Light_ChangeToValue (tag, 35)
36 = WALK, Floor_LowerToHighest (tag, F_FAST, 128)
@ -128,7 +128,7 @@ RetailOnly = 121
124 = WALK, Teleport_EndGame ()
125 = MONWALK, Teleport (0, tag)
130 = WALK, Floor_RaiseToNearest (tag, F_FAST)
141 = WALK, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 0)
141 = WALK, Ceiling_CrushAndRaiseSilentDist (tag, 8, C_SLOW, 10)
174 = WALK, ACS_ExecuteAlways (0, 0, 174, tag)
183 = WALK, ACS_ExecuteAlways (0, 0, 183, tag)
178 = WALK, Generic_Stairs (tag, ST_FAST, 16, 0, 0)
@ -146,11 +146,11 @@ RetailOnly = 121
216 = WALK|REP, ACS_ExecuteAlways (0, 0, 216, tag)
90 = WALK|REP, Door_Raise (tag, D_SLOW, VDOORWAIT)
72 = WALK|REP, Ceiling_LowerAndCrushDist (tag, C_SLOW, 10)
73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 0)
73 = WALK|REP, Ceiling_CrushAndRaiseDist (tag, 8, C_SLOW, 0)
74 = WALK|REP, Ceiling_CrushStop (tag)
75 = WALK|REP, Door_Close (tag, D_SLOW)
76 = WALK|REP, Door_CloseWaitOpen (tag, D_SLOW, 240)
77 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_FAST, C_FAST, 10)
77 = WALK|REP, Ceiling_CrushAndRaiseDist (tag, 8, C_FAST, 10)
79 = WALK|REP, Light_ChangeToValue (tag, 35)
80 = WALK|REP, Light_MaxNeighbor (tag)
81 = WALK|REP, Light_ChangeToValue (tag, 255)