mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2025-01-31 10:40:33 +00:00
- Removed xlat_parser.h from the repository. Lemon was always being run on
xlat_parser.y because both files had the same time stamp after an update, and Lemon only rewrites the header file if it's changed. - Added $volume SNDINFO command. This is multiplied with the volume the sound is played at to arrive at the final volume (before distance attenuation). - Added the CHAN_AREA flag to disable 3D panning within the min distance of a sound. Sector sound sequences (except doors) use this flag. - Added the CHAN_LOOP flag to replace the S_Looped* sound functions. - Restored the sound limiting. SVN r849 (trunk)
This commit is contained in:
parent
3a80dac348
commit
aef34f9aa5
24 changed files with 593 additions and 513 deletions
|
@ -1,3 +1,14 @@
|
||||||
|
March 24, 2008
|
||||||
|
- Removed xlat_parser.h from the repository. Lemon was always being run on
|
||||||
|
xlat_parser.y because both files had the same time stamp after an update,
|
||||||
|
and Lemon only rewrites the header file if it's changed.
|
||||||
|
- Added $volume SNDINFO command. This is multiplied with the volume the sound
|
||||||
|
is played at to arrive at the final volume (before distance attenuation).
|
||||||
|
- Added the CHAN_AREA flag to disable 3D panning within the min distance of a
|
||||||
|
sound. Sector sound sequences (except doors) use this flag.
|
||||||
|
- Added the CHAN_LOOP flag to replace the S_Looped* sound functions.
|
||||||
|
- Restored the sound limiting.
|
||||||
|
|
||||||
March 24, 2008 (Changes by Graf Zahl)
|
March 24, 2008 (Changes by Graf Zahl)
|
||||||
- Added Thomas's submissions for decal assignment to puffs and NOINFIGHTING flag.
|
- Added Thomas's submissions for decal assignment to puffs and NOINFIGHTING flag.
|
||||||
- Reverted changes of r715 in v_collection.cpp because they broke loading
|
- Reverted changes of r715 in v_collection.cpp because they broke loading
|
||||||
|
@ -469,7 +480,7 @@ February 26, 2008
|
||||||
- More write barriers and pointer declarations. Here are rules I've come up
|
- More write barriers and pointer declarations. Here are rules I've come up
|
||||||
with so far for when write barriers can be ommitted:
|
with so far for when write barriers can be ommitted:
|
||||||
* Initializing pointers for a newly created object: A new object can never
|
* Initializing pointers for a newly created object: A new object can never
|
||||||
black, so none of its pointers that get set by the constructor (or code
|
be black, so none of its pointers that get set by the constructor (or code
|
||||||
just following its creation) need to be behind write barriers.
|
just following its creation) need to be behind write barriers.
|
||||||
* Creating a new thinker and storing it in a pointer: The thinker
|
* Creating a new thinker and storing it in a pointer: The thinker
|
||||||
constructor already puts it behind a write barrier when it links it into
|
constructor already puts it behind a write barrier when it links it into
|
||||||
|
|
|
@ -2538,7 +2538,7 @@ void A_SkullRodStorm (AActor *actor)
|
||||||
P_CheckMissileSpawn (mo);
|
P_CheckMissileSpawn (mo);
|
||||||
if (actor->special1 != -1 && !S_IsActorPlayingSomething (actor, CHAN_BODY, -1))
|
if (actor->special1 != -1 && !S_IsActorPlayingSomething (actor, CHAN_BODY, -1))
|
||||||
{
|
{
|
||||||
S_LoopedSoundID (actor, CHAN_BODY, actor->special1, 1, ATTN_NORM);
|
S_SoundID (actor, CHAN_BODY|CHAN_LOOP, actor->special1, 1, ATTN_NORM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2912,7 +2912,7 @@ void A_FirePhoenixPL2 (AActor *actor)
|
||||||
mo->momz = FixedMul (mo->Speed, slope);
|
mo->momz = FixedMul (mo->Speed, slope);
|
||||||
if (!player->refire || !S_IsActorPlayingSomething (pmo, CHAN_WEAPON, -1))
|
if (!player->refire || !S_IsActorPlayingSomething (pmo, CHAN_WEAPON, -1))
|
||||||
{
|
{
|
||||||
S_LoopedSoundID (pmo, CHAN_WEAPON, soundid, 1, ATTN_NORM);
|
S_SoundID (pmo, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
|
||||||
}
|
}
|
||||||
P_CheckMissileSpawn (mo);
|
P_CheckMissileSpawn (mo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -708,7 +708,7 @@ void A_SerpentFXSound (AActor *actor)
|
||||||
{
|
{
|
||||||
if (!S_IsActorPlayingSomething (actor, CHAN_BODY, -1))
|
if (!S_IsActorPlayingSomething (actor, CHAN_BODY, -1))
|
||||||
{
|
{
|
||||||
S_LoopedSound (actor, CHAN_BODY, "SerpentFXContinuous", 1, ATTN_NORM);
|
S_Sound (actor, CHAN_BODY|CHAN_LOOP, "SerpentFXContinuous", 1, ATTN_NORM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ void A_InquisitorJump (AActor *self)
|
||||||
if (self->target == NULL)
|
if (self->target == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
S_LoopedSound (self, CHAN_ITEM, "inquisitor/jump", 1, ATTN_NORM);
|
S_Sound (self, CHAN_ITEM|CHAN_LOOP, "inquisitor/jump", 1, ATTN_NORM);
|
||||||
self->z += 64*FRACUNIT;
|
self->z += 64*FRACUNIT;
|
||||||
A_FaceTarget (self);
|
A_FaceTarget (self);
|
||||||
an = self->angle >> ANGLETOFINESHIFT;
|
an = self->angle >> ANGLETOFINESHIFT;
|
||||||
|
@ -280,7 +280,7 @@ void A_InquisitorCheckLand (AActor *self)
|
||||||
}
|
}
|
||||||
if (!S_IsActorPlayingSomething (self, CHAN_ITEM, -1))
|
if (!S_IsActorPlayingSomething (self, CHAN_ITEM, -1))
|
||||||
{
|
{
|
||||||
S_LoopedSound (self, CHAN_ITEM, "inquisitor/jump", 1, ATTN_NORM);
|
S_Sound (self, CHAN_ITEM|CHAN_LOOP, "inquisitor/jump", 1, ATTN_NORM);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -809,7 +809,7 @@ void A_LoopActiveSound (AActor *self)
|
||||||
{
|
{
|
||||||
if (self->ActiveSound != 0 && !S_IsActorPlayingSomething (self, CHAN_VOICE, -1))
|
if (self->ActiveSound != 0 && !S_IsActorPlayingSomething (self, CHAN_VOICE, -1))
|
||||||
{
|
{
|
||||||
S_LoopedSoundID (self, CHAN_VOICE, self->ActiveSound, 1, ATTN_NORM);
|
S_SoundID (self, CHAN_VOICE|CHAN_LOOP, self->ActiveSound, 1, ATTN_NORM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4182,7 +4182,7 @@ int DLevelScript::RunScript ()
|
||||||
{
|
{
|
||||||
if (activationline)
|
if (activationline)
|
||||||
{
|
{
|
||||||
SN_StartSequence (activationline->frontsector, lookup, 0);
|
SN_StartSequence (activationline->frontsector, lookup, 0, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sp--;
|
sp--;
|
||||||
|
|
|
@ -64,16 +64,16 @@ void DCeiling::PlayCeilingSound ()
|
||||||
{
|
{
|
||||||
if (m_Sector->seqType >= 0)
|
if (m_Sector->seqType >= 0)
|
||||||
{
|
{
|
||||||
SN_StartSequence (m_Sector, m_Sector->seqType, SEQ_PLATFORM, 0);
|
SN_StartSequence (m_Sector, m_Sector->seqType, SEQ_PLATFORM, 0, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_Silent == 2)
|
if (m_Silent == 2)
|
||||||
SN_StartSequence (m_Sector, "Silence", 0);
|
SN_StartSequence (m_Sector, "Silence", 0, false);
|
||||||
else if (m_Silent == 1)
|
else if (m_Silent == 1)
|
||||||
SN_StartSequence (m_Sector, "CeilingSemiSilent", 0);
|
SN_StartSequence (m_Sector, "CeilingSemiSilent", 0, false);
|
||||||
else
|
else
|
||||||
SN_StartSequence (m_Sector, "CeilingNormal", 0);
|
SN_StartSequence (m_Sector, "CeilingNormal", 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -236,7 +236,7 @@ void DDoor::DoorSound (bool raise) const
|
||||||
|
|
||||||
if (m_Sector->seqType >= 0)
|
if (m_Sector->seqType >= 0)
|
||||||
{
|
{
|
||||||
SN_StartSequence (m_Sector, m_Sector->seqType, SEQ_DOOR, choice);
|
SN_StartSequence (m_Sector, m_Sector->seqType, SEQ_DOOR, choice, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -297,7 +297,7 @@ void DDoor::DoorSound (bool raise) const
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SN_StartSequence (m_Sector, snd, choice);
|
SN_StartSequence (m_Sector, snd, choice, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -564,7 +564,7 @@ bool DAnimatedDoor::StartClosing ()
|
||||||
m_Line2->flags |= ML_BLOCKING;
|
m_Line2->flags |= ML_BLOCKING;
|
||||||
if (ani.CloseSound != NULL)
|
if (ani.CloseSound != NULL)
|
||||||
{
|
{
|
||||||
SN_StartSequence (m_Sector, ani.CloseSound, 1);
|
SN_StartSequence (m_Sector, ani.CloseSound, 1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Status = Closing;
|
m_Status = Closing;
|
||||||
|
@ -742,7 +742,7 @@ DAnimatedDoor::DAnimatedDoor (sector_t *sec, line_t *line, int speed, int delay)
|
||||||
MoveCeiling (2048*FRACUNIT, topdist, 1);
|
MoveCeiling (2048*FRACUNIT, topdist, 1);
|
||||||
if (DoorAnimations[m_WhichDoorIndex].OpenSound != NULL)
|
if (DoorAnimations[m_WhichDoorIndex].OpenSound != NULL)
|
||||||
{
|
{
|
||||||
SN_StartSequence (m_Sector, DoorAnimations[m_WhichDoorIndex].OpenSound, 1);
|
SN_StartSequence (m_Sector, DoorAnimations[m_WhichDoorIndex].OpenSound, 1, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -298,11 +298,11 @@ static void StartFloorSound (sector_t *sec)
|
||||||
{
|
{
|
||||||
if (sec->seqType >= 0)
|
if (sec->seqType >= 0)
|
||||||
{
|
{
|
||||||
SN_StartSequence (sec, sec->seqType, SEQ_PLATFORM, 0);
|
SN_StartSequence (sec, sec->seqType, SEQ_PLATFORM, 0, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SN_StartSequence (sec, "Floor", 0);
|
SN_StartSequence (sec, "Floor", 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -169,9 +169,9 @@ DPillar::DPillar (sector_t *sector, EPillar type, fixed_t speed,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sector->seqType >= 0)
|
if (sector->seqType >= 0)
|
||||||
SN_StartSequence (sector, sector->seqType, SEQ_PLATFORM, 0);
|
SN_StartSequence (sector, sector->seqType, SEQ_PLATFORM, 0, false);
|
||||||
else
|
else
|
||||||
SN_StartSequence (sector, "Floor", 0);
|
SN_StartSequence (sector, "Floor", 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EV_DoPillar (DPillar::EPillar type, int tag, fixed_t speed, fixed_t height,
|
bool EV_DoPillar (DPillar::EPillar type, int tag, fixed_t speed, fixed_t height,
|
||||||
|
|
|
@ -58,9 +58,9 @@ void DPlat::Serialize (FArchive &arc)
|
||||||
void DPlat::PlayPlatSound (const char *sound)
|
void DPlat::PlayPlatSound (const char *sound)
|
||||||
{
|
{
|
||||||
if (m_Sector->seqType >= 0)
|
if (m_Sector->seqType >= 0)
|
||||||
SN_StartSequence (m_Sector, m_Sector->seqType, SEQ_PLATFORM, 0);
|
SN_StartSequence (m_Sector, m_Sector->seqType, SEQ_PLATFORM, 0, false);
|
||||||
else
|
else
|
||||||
SN_StartSequence (m_Sector, sound, 0);
|
SN_StartSequence (m_Sector, sound, 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -174,7 +174,7 @@ void DPlat::Tick ()
|
||||||
m_Status = down;
|
m_Status = down;
|
||||||
|
|
||||||
if (m_Type == platToggle)
|
if (m_Type == platToggle)
|
||||||
SN_StartSequence (m_Sector, "Silence", 0);
|
SN_StartSequence (m_Sector, "Silence", 0, false);
|
||||||
else
|
else
|
||||||
PlayPlatSound ("Platform");
|
PlayPlatSound ("Platform");
|
||||||
}
|
}
|
||||||
|
@ -352,7 +352,7 @@ manual_plat:
|
||||||
plat->m_Low = sec->floorplane.PointToDist (spot, newheight);
|
plat->m_Low = sec->floorplane.PointToDist (spot, newheight);
|
||||||
plat->m_High = sec->floorplane.d;
|
plat->m_High = sec->floorplane.d;
|
||||||
plat->m_Status = DPlat::down;
|
plat->m_Status = DPlat::down;
|
||||||
SN_StartSequence (sec, "Silence", 0);
|
SN_StartSequence (sec, "Silence", 0, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DPlat::platDownToNearestFloor:
|
case DPlat::platDownToNearestFloor:
|
||||||
|
|
|
@ -147,6 +147,7 @@ enum SICommands
|
||||||
SI_IfHexen,
|
SI_IfHexen,
|
||||||
SI_IfStrife,
|
SI_IfStrife,
|
||||||
SI_Rolloff,
|
SI_Rolloff,
|
||||||
|
SI_Volume,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Blood was a cool game. If Monolith ever releases the source for it,
|
// Blood was a cool game. If Monolith ever releases the source for it,
|
||||||
|
@ -186,7 +187,7 @@ MidiDeviceMap MidiDevices;
|
||||||
// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
|
// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
|
||||||
|
|
||||||
void S_StartNamedSound (AActor *ent, fixed_t *pt, int channel,
|
void S_StartNamedSound (AActor *ent, fixed_t *pt, int channel,
|
||||||
const char *name, float volume, float attenuation, bool looping);
|
const char *name, float volume, float attenuation);
|
||||||
extern bool IsFloat (const char *str);
|
extern bool IsFloat (const char *str);
|
||||||
|
|
||||||
// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
|
// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
|
||||||
|
@ -242,6 +243,7 @@ static const char *SICommandStrings[] =
|
||||||
"$ifhexen",
|
"$ifhexen",
|
||||||
"$ifstrife",
|
"$ifstrife",
|
||||||
"$rolloff",
|
"$rolloff",
|
||||||
|
"$volume",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -440,8 +442,9 @@ int S_AddSoundLump (const char *logicalname, int lump)
|
||||||
newsfx.lumpnum = lump;
|
newsfx.lumpnum = lump;
|
||||||
newsfx.next = 0;
|
newsfx.next = 0;
|
||||||
newsfx.index = 0;
|
newsfx.index = 0;
|
||||||
newsfx.frequency = 0;
|
newsfx.Volume = 1;
|
||||||
newsfx.PitchMask = CurrentPitchMask;
|
newsfx.PitchMask = CurrentPitchMask;
|
||||||
|
newsfx.NearLimit = 2;
|
||||||
newsfx.bRandomHeader = false;
|
newsfx.bRandomHeader = false;
|
||||||
newsfx.bPlayerReserve = false;
|
newsfx.bPlayerReserve = false;
|
||||||
newsfx.bForce11025 = false;
|
newsfx.bForce11025 = false;
|
||||||
|
@ -1105,12 +1108,13 @@ static void S_AddSNDINFO (int lump)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SI_Limit: {
|
case SI_Limit: {
|
||||||
// $limit <logical name> <max channels> -- deprecated and ignored
|
// $limit <logical name> <max channels>
|
||||||
int sfx;
|
int sfx;
|
||||||
|
|
||||||
sc.MustGetString ();
|
sc.MustGetString ();
|
||||||
sfx = S_FindSoundTentative (sc.String);
|
sfx = S_FindSoundTentative (sc.String);
|
||||||
sc.MustGetNumber ();
|
sc.MustGetNumber ();
|
||||||
|
S_sfx[sfx].NearLimit = MIN(MAX(sc.Number, 0), 255);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1141,6 +1145,17 @@ static void S_AddSNDINFO (int lump)
|
||||||
CurrentPitchMask = (1 << clamp (sc.Number, 0, 7)) - 1;
|
CurrentPitchMask = (1 << clamp (sc.Number, 0, 7)) - 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SI_Volume: {
|
||||||
|
// $volume <logical name> <volume>
|
||||||
|
int sfx;
|
||||||
|
|
||||||
|
sc.MustGetString();
|
||||||
|
sfx = S_FindSoundTentative(sc.String);
|
||||||
|
sc.MustGetFloat();
|
||||||
|
S_sfx[sfx].Volume = sc.Float;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case SI_Rolloff: {
|
case SI_Rolloff: {
|
||||||
// $rolloff *|<logical name> [linear|log|custom] <min dist> <max dist/rolloff factor>
|
// $rolloff *|<logical name> [linear|log|custom] <min dist> <max dist/rolloff factor>
|
||||||
// Using * for the name makes it the default for sounds that don't specify otherwise.
|
// Using * for the name makes it the default for sounds that don't specify otherwise.
|
||||||
|
@ -1867,8 +1882,8 @@ void AAmbientSound::Tick ()
|
||||||
|
|
||||||
if (ambient->sound[0])
|
if (ambient->sound[0])
|
||||||
{
|
{
|
||||||
S_StartNamedSound (this, NULL, CHAN_BODY, ambient->sound,
|
S_StartNamedSound (this, NULL, CHAN_BODY|CHAN_LOOP, ambient->sound,
|
||||||
ambient->volume, ambient->attenuation, true);
|
ambient->volume, ambient->attenuation);
|
||||||
SetTicker (ambient);
|
SetTicker (ambient);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1881,7 +1896,7 @@ void AAmbientSound::Tick ()
|
||||||
if (ambient->sound[0])
|
if (ambient->sound[0])
|
||||||
{
|
{
|
||||||
S_StartNamedSound (this, NULL, CHAN_BODY, ambient->sound,
|
S_StartNamedSound (this, NULL, CHAN_BODY, ambient->sound,
|
||||||
ambient->volume, ambient->attenuation, false);
|
ambient->volume, ambient->attenuation);
|
||||||
SetTicker (ambient);
|
SetTicker (ambient);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -102,8 +102,7 @@ public:
|
||||||
DSeqActorNode (AActor *actor, int sequence, int modenum);
|
DSeqActorNode (AActor *actor, int sequence, int modenum);
|
||||||
void Destroy ();
|
void Destroy ();
|
||||||
void Serialize (FArchive &arc);
|
void Serialize (FArchive &arc);
|
||||||
void MakeSound () { S_SoundID (m_Actor, CHAN_BODY, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); }
|
void MakeSound (int loop) { S_SoundID (m_Actor, CHAN_BODY|loop, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); }
|
||||||
void MakeLoopedSound () { S_LoopedSoundID (m_Actor, CHAN_BODY, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); }
|
|
||||||
bool IsPlaying () { return S_IsActorPlayingSomething (m_Actor, CHAN_BODY, m_CurrentSoundID); }
|
bool IsPlaying () { return S_IsActorPlayingSomething (m_Actor, CHAN_BODY, m_CurrentSoundID); }
|
||||||
void *Source () { return m_Actor; }
|
void *Source () { return m_Actor; }
|
||||||
DSeqNode *SpawnChild (int seqnum) { return SN_StartSequence (m_Actor, seqnum, SEQ_NOTRANS, m_ModeNum, true); }
|
DSeqNode *SpawnChild (int seqnum) { return SN_StartSequence (m_Actor, seqnum, SEQ_NOTRANS, m_ModeNum, true); }
|
||||||
|
@ -119,8 +118,7 @@ public:
|
||||||
DSeqPolyNode (polyobj_t *poly, int sequence, int modenum);
|
DSeqPolyNode (polyobj_t *poly, int sequence, int modenum);
|
||||||
void Destroy ();
|
void Destroy ();
|
||||||
void Serialize (FArchive &arc);
|
void Serialize (FArchive &arc);
|
||||||
void MakeSound () { S_SoundID (&m_Poly->startSpot[0], CHAN_BODY, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); }
|
void MakeSound (int loop) { S_SoundID (&m_Poly->startSpot[0], CHAN_BODY|loop, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); }
|
||||||
void MakeLoopedSound () { S_LoopedSoundID (&m_Poly->startSpot[0], CHAN_BODY, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); }
|
|
||||||
bool IsPlaying () { return S_GetSoundPlayingInfo (&m_Poly->startSpot[0], m_CurrentSoundID); }
|
bool IsPlaying () { return S_GetSoundPlayingInfo (&m_Poly->startSpot[0], m_CurrentSoundID); }
|
||||||
void *Source () { return m_Poly; }
|
void *Source () { return m_Poly; }
|
||||||
DSeqNode *SpawnChild (int seqnum) { return SN_StartSequence (m_Poly, seqnum, SEQ_NOTRANS, m_ModeNum, true); }
|
DSeqNode *SpawnChild (int seqnum) { return SN_StartSequence (m_Poly, seqnum, SEQ_NOTRANS, m_ModeNum, true); }
|
||||||
|
@ -133,11 +131,10 @@ class DSeqSectorNode : public DSeqNode
|
||||||
{
|
{
|
||||||
DECLARE_CLASS (DSeqSectorNode, DSeqNode)
|
DECLARE_CLASS (DSeqSectorNode, DSeqNode)
|
||||||
public:
|
public:
|
||||||
DSeqSectorNode (sector_t *sec, int sequence, int modenum);
|
DSeqSectorNode (sector_t *sec, int sequence, int modenum, bool is_door);
|
||||||
void Destroy ();
|
void Destroy ();
|
||||||
void Serialize (FArchive &arc);
|
void Serialize (FArchive &arc);
|
||||||
void MakeSound () { S_SoundID (&m_Sector->soundorg[0], CHAN_BODY, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); Looping = false; }
|
void MakeSound (int loop) { S_SoundID (&m_Sector->soundorg[0], CHAN_BODY|(m_IsDoor ? 0 : CHAN_AREA)|loop, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); Looping = !!loop; }
|
||||||
void MakeLoopedSound () { S_LoopedSoundID (&m_Sector->soundorg[0], CHAN_BODY, m_CurrentSoundID, clamp(m_Volume, 0.f, 1.f), m_Atten); Looping = true; }
|
|
||||||
bool IsPlaying () { return S_GetSoundPlayingInfo (m_Sector->soundorg, m_CurrentSoundID); }
|
bool IsPlaying () { return S_GetSoundPlayingInfo (m_Sector->soundorg, m_CurrentSoundID); }
|
||||||
void *Source () { return m_Sector; }
|
void *Source () { return m_Sector; }
|
||||||
DSeqNode *SpawnChild (int seqnum) { return SN_StartSequence (m_Sector, seqnum, SEQ_NOTRANS, m_ModeNum, true); }
|
DSeqNode *SpawnChild (int seqnum) { return SN_StartSequence (m_Sector, seqnum, SEQ_NOTRANS, m_ModeNum, true); }
|
||||||
|
@ -145,6 +142,7 @@ public:
|
||||||
private:
|
private:
|
||||||
DSeqSectorNode() {}
|
DSeqSectorNode() {}
|
||||||
sector_t *m_Sector;
|
sector_t *m_Sector;
|
||||||
|
bool m_IsDoor;
|
||||||
};
|
};
|
||||||
|
|
||||||
// When destroyed, destroy the sound sequences too.
|
// When destroyed, destroy the sound sequences too.
|
||||||
|
@ -397,7 +395,7 @@ IMPLEMENT_CLASS (DSeqSectorNode)
|
||||||
void DSeqSectorNode::Serialize (FArchive &arc)
|
void DSeqSectorNode::Serialize (FArchive &arc)
|
||||||
{
|
{
|
||||||
Super::Serialize (arc);
|
Super::Serialize (arc);
|
||||||
arc << m_Sector << Looping;
|
arc << m_Sector << Looping << m_IsDoor;
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -415,9 +413,12 @@ static void AssignTranslations (FScanner &sc, int seq, seqtype_t type)
|
||||||
if (IsNum(sc.String))
|
if (IsNum(sc.String))
|
||||||
{
|
{
|
||||||
SeqTrans[(atoi(sc.String) & 63) + type * 64] = seq;
|
SeqTrans[(atoi(sc.String) & 63) + type * 64] = seq;
|
||||||
|
if (type == SEQ_DOOR)
|
||||||
|
{
|
||||||
|
Sequences[seq]->bDoorSound |= true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sc.UnGet();
|
sc.UnGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,11 +447,14 @@ static void AssignHexenTranslations (void)
|
||||||
int trans;
|
int trans;
|
||||||
|
|
||||||
if (HexenSequences[i].Seqs[j] & 0x40)
|
if (HexenSequences[i].Seqs[j] & 0x40)
|
||||||
trans = 64;
|
{
|
||||||
|
trans = 64 * SEQ_DOOR;
|
||||||
|
Sequences[seq]->bDoorSound |= true;
|
||||||
|
}
|
||||||
else if (HexenSequences[i].Seqs[j] & 0x80)
|
else if (HexenSequences[i].Seqs[j] & 0x80)
|
||||||
trans = 64*2;
|
trans = 64 * SEQ_ENVIRONMENT;
|
||||||
else
|
else
|
||||||
trans = 0;
|
trans = 64 * SEQ_PLATFORM;
|
||||||
|
|
||||||
SeqTrans[trans + (HexenSequences[i].Seqs[j] & 0x3f)] = seq;
|
SeqTrans[trans + (HexenSequences[i].Seqs[j] & 0x3f)] = seq;
|
||||||
}
|
}
|
||||||
|
@ -690,6 +694,7 @@ static void AddSequence (int curseq, FName seqname, FName slot, int stopsound, c
|
||||||
Sequences[curseq]->SeqName = seqname;
|
Sequences[curseq]->SeqName = seqname;
|
||||||
Sequences[curseq]->Slot = slot;
|
Sequences[curseq]->Slot = slot;
|
||||||
Sequences[curseq]->StopSound = stopsound;
|
Sequences[curseq]->StopSound = stopsound;
|
||||||
|
Sequences[curseq]->bDoorSound = false;
|
||||||
memcpy (Sequences[curseq]->Script, &ScriptTemp[0], sizeof(DWORD)*ScriptTemp.Size());
|
memcpy (Sequences[curseq]->Script, &ScriptTemp[0], sizeof(DWORD)*ScriptTemp.Size());
|
||||||
Sequences[curseq]->Script[ScriptTemp.Size()] = MakeCommand(SS_CMD_END, 0);
|
Sequences[curseq]->Script[ScriptTemp.Size()] = MakeCommand(SS_CMD_END, 0);
|
||||||
}
|
}
|
||||||
|
@ -738,11 +743,12 @@ DSeqPolyNode::DSeqPolyNode (polyobj_t *poly, int sequence, int modenum)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
DSeqSectorNode::DSeqSectorNode (sector_t *sec, int sequence, int modenum)
|
DSeqSectorNode::DSeqSectorNode (sector_t *sec, int sequence, int modenum, bool is_door)
|
||||||
: DSeqNode (sequence, modenum),
|
: DSeqNode (sequence, modenum),
|
||||||
Looping (false),
|
Looping (false),
|
||||||
m_Sector (sec)
|
m_Sector (sec)
|
||||||
{
|
{
|
||||||
|
m_IsDoor = is_door;
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -786,7 +792,7 @@ DSeqNode *SN_StartSequence (AActor *actor, int sequence, seqtype_t type, int mod
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
DSeqNode *SN_StartSequence (sector_t *sector, int sequence, seqtype_t type, int modenum, bool nostop)
|
DSeqNode *SN_StartSequence (sector_t *sector, int sequence, seqtype_t type, int modenum, bool is_door, bool nostop)
|
||||||
{
|
{
|
||||||
if (!nostop)
|
if (!nostop)
|
||||||
{
|
{
|
||||||
|
@ -794,7 +800,7 @@ DSeqNode *SN_StartSequence (sector_t *sector, int sequence, seqtype_t type, int
|
||||||
}
|
}
|
||||||
if (TwiddleSeqNum (sequence, type))
|
if (TwiddleSeqNum (sequence, type))
|
||||||
{
|
{
|
||||||
return new DSeqSectorNode (sector, sequence, modenum);
|
return new DSeqSectorNode (sector, sequence, modenum, is_door);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -838,12 +844,12 @@ DSeqNode *SN_StartSequence (AActor *actor, FName seqname, int modenum)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
DSeqNode *SN_StartSequence (sector_t *sec, const char *seqname, int modenum)
|
DSeqNode *SN_StartSequence (sector_t *sec, const char *seqname, int modenum, bool is_door)
|
||||||
{
|
{
|
||||||
int seqnum = FindSequence (seqname);
|
int seqnum = FindSequence (seqname);
|
||||||
if (seqnum >= 0)
|
if (seqnum >= 0)
|
||||||
{
|
{
|
||||||
return SN_StartSequence (sec, seqnum, SEQ_NOTRANS, modenum);
|
return SN_StartSequence (sec, seqnum, SEQ_NOTRANS, modenum, is_door);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -992,7 +998,7 @@ void DSeqNode::Tick ()
|
||||||
if (!IsPlaying())
|
if (!IsPlaying())
|
||||||
{
|
{
|
||||||
m_CurrentSoundID = GetData(*m_SequencePtr);
|
m_CurrentSoundID = GetData(*m_SequencePtr);
|
||||||
MakeSound ();
|
MakeSound (0);
|
||||||
}
|
}
|
||||||
m_SequencePtr++;
|
m_SequencePtr++;
|
||||||
break;
|
break;
|
||||||
|
@ -1014,7 +1020,7 @@ void DSeqNode::Tick ()
|
||||||
{
|
{
|
||||||
// Does not advance sequencePtr, so it will repeat as necessary.
|
// Does not advance sequencePtr, so it will repeat as necessary.
|
||||||
m_CurrentSoundID = GetData(*m_SequencePtr);
|
m_CurrentSoundID = GetData(*m_SequencePtr);
|
||||||
MakeLoopedSound ();
|
MakeSound (CHAN_LOOP);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1022,7 +1028,7 @@ void DSeqNode::Tick ()
|
||||||
// Like SS_CMD_PLAYREPEAT, sequencePtr is not advanced, so this
|
// Like SS_CMD_PLAYREPEAT, sequencePtr is not advanced, so this
|
||||||
// command will repeat until the sequence is stopped.
|
// command will repeat until the sequence is stopped.
|
||||||
m_CurrentSoundID = GetData(m_SequencePtr[0]);
|
m_CurrentSoundID = GetData(m_SequencePtr[0]);
|
||||||
MakeSound ();
|
MakeSound (0);
|
||||||
m_DelayUntilTic = TIME_REFERENCE + m_SequencePtr[1];
|
m_DelayUntilTic = TIME_REFERENCE + m_SequencePtr[1];
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,7 @@ public:
|
||||||
void AddChoice (int seqnum, seqtype_t type);
|
void AddChoice (int seqnum, seqtype_t type);
|
||||||
FName GetSequenceName() const;
|
FName GetSequenceName() const;
|
||||||
|
|
||||||
virtual void MakeSound () {}
|
virtual void MakeSound (int loop) {}
|
||||||
virtual void MakeLoopedSound () {}
|
|
||||||
virtual void *Source () { return NULL; }
|
virtual void *Source () { return NULL; }
|
||||||
virtual bool IsPlaying () { return false; }
|
virtual bool IsPlaying () { return false; }
|
||||||
virtual DSeqNode *SpawnChild (int seqnum) { return NULL; }
|
virtual DSeqNode *SpawnChild (int seqnum) { return NULL; }
|
||||||
|
@ -75,6 +74,7 @@ struct FSoundSequence
|
||||||
FName SeqName;
|
FName SeqName;
|
||||||
FName Slot;
|
FName Slot;
|
||||||
int StopSound;
|
int StopSound;
|
||||||
|
bool bDoorSound;
|
||||||
SDWORD Script[1]; // + more until end of sequence script
|
SDWORD Script[1]; // + more until end of sequence script
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -82,8 +82,8 @@ void S_ParseSndSeq (int levellump);
|
||||||
DSeqNode *SN_StartSequence (AActor *mobj, int sequence, seqtype_t type, int modenum, bool nostop=false);
|
DSeqNode *SN_StartSequence (AActor *mobj, int sequence, seqtype_t type, int modenum, bool nostop=false);
|
||||||
DSeqNode *SN_StartSequence (AActor *mobj, const char *name, int modenum);
|
DSeqNode *SN_StartSequence (AActor *mobj, const char *name, int modenum);
|
||||||
DSeqNode *SN_StartSequence (AActor *mobj, FName seqname, int modenum);
|
DSeqNode *SN_StartSequence (AActor *mobj, FName seqname, int modenum);
|
||||||
DSeqNode *SN_StartSequence (sector_t *sector, int sequence, seqtype_t type, int modenum, bool nostop=false);
|
DSeqNode *SN_StartSequence (sector_t *sector, int sequence, seqtype_t type, int modenum, bool full3d, bool nostop=false);
|
||||||
DSeqNode *SN_StartSequence (sector_t *sector, const char *name, int modenum);
|
DSeqNode *SN_StartSequence (sector_t *sector, const char *name, int modenum, bool full3d);
|
||||||
DSeqNode *SN_StartSequence (polyobj_t *poly, int sequence, seqtype_t type, int modenum, bool nostop=false);
|
DSeqNode *SN_StartSequence (polyobj_t *poly, int sequence, seqtype_t type, int modenum, bool nostop=false);
|
||||||
DSeqNode *SN_StartSequence (polyobj_t *poly, const char *name, int modenum);
|
DSeqNode *SN_StartSequence (polyobj_t *poly, const char *name, int modenum);
|
||||||
void SN_StopSequence (AActor *mobj);
|
void SN_StopSequence (AActor *mobj);
|
||||||
|
|
176
src/s_sound.cpp
176
src/s_sound.cpp
|
@ -94,7 +94,8 @@ extern float S_GetMusicVolume (const char *music);
|
||||||
|
|
||||||
static fixed_t P_AproxDistance2(fixed_t *listener, fixed_t x, fixed_t y);
|
static fixed_t P_AproxDistance2(fixed_t *listener, fixed_t x, fixed_t y);
|
||||||
static void S_StartSound(fixed_t *pt, AActor *mover, int channel,
|
static void S_StartSound(fixed_t *pt, AActor *mover, int channel,
|
||||||
int sound_id, float volume, float attenuation, bool looping);
|
int sound_id, float volume, float attenuation);
|
||||||
|
static bool S_CheckSoundLimit(sfxinfo_t *sfx, float pos[3]);
|
||||||
static void S_ActivatePlayList(bool goBack);
|
static void S_ActivatePlayList(bool goBack);
|
||||||
static void CalcPosVel(fixed_t *pt, AActor *mover, int constz, float pos[3],
|
static void CalcPosVel(fixed_t *pt, AActor *mover, int constz, float pos[3],
|
||||||
float vel[3]);
|
float vel[3]);
|
||||||
|
@ -192,7 +193,7 @@ void S_NoiseDebug (void)
|
||||||
char temp[16];
|
char temp[16];
|
||||||
fixed_t *origin = chan->Pt;
|
fixed_t *origin = chan->Pt;
|
||||||
|
|
||||||
if (!chan->Is3D)
|
if (!(chan->ChanFlags & CHAN_IS3D))
|
||||||
{
|
{
|
||||||
ox = players[consoleplayer].camera->x;
|
ox = players[consoleplayer].camera->x;
|
||||||
oy = players[consoleplayer].camera->y;
|
oy = players[consoleplayer].camera->y;
|
||||||
|
@ -210,7 +211,7 @@ void S_NoiseDebug (void)
|
||||||
oy = chan->Y;
|
oy = chan->Y;
|
||||||
oz = chan->Z;
|
oz = chan->Z;
|
||||||
}
|
}
|
||||||
color = chan->Loop ? CR_BROWN : CR_GREY;
|
color = (chan->ChanFlags & CHAN_LOOP) ? CR_BROWN : CR_GREY;
|
||||||
Wads.GetLumpName (temp, chan->SfxInfo->lumpnum);
|
Wads.GetLumpName (temp, chan->SfxInfo->lumpnum);
|
||||||
temp[8] = 0;
|
temp[8] = 0;
|
||||||
screen->DrawText (color, 0, y, temp, TAG_DONE);
|
screen->DrawText (color, 0, y, temp, TAG_DONE);
|
||||||
|
@ -310,6 +311,7 @@ void S_Shutdown ()
|
||||||
{
|
{
|
||||||
GSnd->StopSound(Channels);
|
GSnd->StopSound(Channels);
|
||||||
}
|
}
|
||||||
|
GSnd->UpdateSounds();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -587,7 +589,7 @@ void S_LinkChannel(FSoundChan *chan, FSoundChan **head)
|
||||||
void CalcPosVel (fixed_t *pt, AActor *mover, int constz,
|
void CalcPosVel (fixed_t *pt, AActor *mover, int constz,
|
||||||
float pos[3], float vel[3])
|
float pos[3], float vel[3])
|
||||||
{
|
{
|
||||||
if (mover != NULL && 0)
|
if (mover != NULL)
|
||||||
{
|
{
|
||||||
vel[0] = FIXED2FLOAT(mover->momx) * TICRATE;
|
vel[0] = FIXED2FLOAT(mover->momx) * TICRATE;
|
||||||
vel[1] = FIXED2FLOAT(mover->momz) * TICRATE;
|
vel[1] = FIXED2FLOAT(mover->momz) * TICRATE;
|
||||||
|
@ -621,7 +623,7 @@ void CalcPosVel (fixed_t *pt, AActor *mover, int constz,
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
int sound_id, float volume, float attenuation, bool looping)
|
int sound_id, float volume, float attenuation)
|
||||||
{
|
{
|
||||||
sfxinfo_t *sfx;
|
sfxinfo_t *sfx;
|
||||||
int chanflags;
|
int chanflags;
|
||||||
|
@ -630,28 +632,31 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
int pitch;
|
int pitch;
|
||||||
fixed_t x, y, z;
|
fixed_t x, y, z;
|
||||||
FSoundChan *chan;
|
FSoundChan *chan;
|
||||||
|
float pos[3];
|
||||||
static int sndcount = 0;
|
float vel[3];
|
||||||
|
|
||||||
if (sound_id <= 0 || volume <= 0 || GSnd == NULL)
|
if (sound_id <= 0 || volume <= 0 || GSnd == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
org_id = sound_id;
|
org_id = sound_id;
|
||||||
|
chanflags = channel & ~7;
|
||||||
|
|
||||||
if (pt == NULL)
|
if (pt == NULL)
|
||||||
{
|
{
|
||||||
attenuation = 0;
|
attenuation = 0;
|
||||||
// Give these variables values, although they don't really matter
|
// Give these variables values, although they don't really matter
|
||||||
x = y = z = 0;
|
x = y = z = 0;
|
||||||
|
fixed_t pt2[3] = { 0, 0, 0 };
|
||||||
|
CalcPosVel (pt2, mover, chanflags & CHAN_LISTENERZ, pos, vel);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = pt[0];
|
x = pt[0];
|
||||||
y = pt[1];
|
y = pt[1];
|
||||||
z = pt[2];
|
z = pt[2];
|
||||||
|
CalcPosVel (pt, mover, chanflags & CHAN_LISTENERZ, pos, vel);
|
||||||
}
|
}
|
||||||
|
|
||||||
chanflags = channel & ~7;
|
|
||||||
if (chanflags & CHAN_IMMOBILE)
|
if (chanflags & CHAN_IMMOBILE)
|
||||||
{
|
{
|
||||||
pt = NULL;
|
pt = NULL;
|
||||||
|
@ -672,12 +677,11 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
channel &= 7;
|
channel &= 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
volume = clamp(volume, 0.f, 1.f);
|
|
||||||
|
|
||||||
sfx = &S_sfx[sound_id];
|
sfx = &S_sfx[sound_id];
|
||||||
|
|
||||||
// If this is a singular sound, don't play it if it's already playing.
|
// Scale volume according to SNDINFO data.
|
||||||
if (sfx->bSingular && S_CheckSingular(sound_id))
|
volume = MIN(volume * sfx->Volume, 1.f);
|
||||||
|
if (volume <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Resolve player sounds, random sounds, and aliases
|
// Resolve player sounds, random sounds, and aliases
|
||||||
|
@ -698,6 +702,15 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
sfx = &S_sfx[sound_id];
|
sfx = &S_sfx[sound_id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If this is a singular sound, don't play it if it's already playing.
|
||||||
|
if (sfx->bSingular && S_CheckSingular(sound_id))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// If this sound doesn't like playing near itself, don't play it if
|
||||||
|
// that's what would happen.
|
||||||
|
if (sfx->NearLimit && S_CheckSoundLimit(sfx, pos))
|
||||||
|
return;
|
||||||
|
|
||||||
// Make sure the sound is loaded.
|
// Make sure the sound is loaded.
|
||||||
if (sfx->data == NULL)
|
if (sfx->data == NULL)
|
||||||
{
|
{
|
||||||
|
@ -722,25 +735,6 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
basepriority = 0;
|
basepriority = 0;
|
||||||
#if 0
|
|
||||||
switch (channel)
|
|
||||||
{
|
|
||||||
case CHAN_WEAPON:
|
|
||||||
basepriority = 20;
|
|
||||||
break;
|
|
||||||
case CHAN_VOICE:
|
|
||||||
basepriority = 10;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
case CHAN_BODY:
|
|
||||||
basepriority = 0;
|
|
||||||
break;
|
|
||||||
case CHAN_ITEM:
|
|
||||||
basepriority = -10;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
basepriority = int(basepriority / attenuation);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mover != NULL && channel == CHAN_AUTO)
|
if (mover != NULL && channel == CHAN_AUTO)
|
||||||
|
@ -793,34 +787,13 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
|
|
||||||
if (attenuation > 0)
|
if (attenuation > 0)
|
||||||
{
|
{
|
||||||
float pos[3];
|
chan = GSnd->StartSound3D (sfx, volume, attenuation, pitch, basepriority, pos, vel, chanflags);
|
||||||
float vel[3];
|
chanflags |= CHAN_IS3D;
|
||||||
|
|
||||||
if (pt)
|
|
||||||
{
|
|
||||||
CalcPosVel (pt, mover, chanflags & CHAN_LISTENERZ, pos, vel);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fixed_t pt2[3];
|
chan = GSnd->StartSound (sfx, volume, pitch, chanflags);
|
||||||
pt2[0] = x;
|
chanflags |= CHAN_LISTENERZ;
|
||||||
pt2[1] = y;
|
|
||||||
pt2[2] = z;
|
|
||||||
CalcPosVel (pt2, mover, chanflags & CHAN_LISTENERZ, pos, vel);
|
|
||||||
}
|
|
||||||
chan = GSnd->StartSound3D (sfx, volume, attenuation, pitch, basepriority, looping, pos, vel, !(chanflags & CHAN_NOPAUSE));
|
|
||||||
if (chan != NULL)
|
|
||||||
{
|
|
||||||
chan->ConstZ = !!(chanflags & CHAN_LISTENERZ);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
chan = GSnd->StartSound (sfx, volume, pitch, looping, !(chanflags & CHAN_NOPAUSE));
|
|
||||||
if (chan != NULL)
|
|
||||||
{
|
|
||||||
chan->ConstZ = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (chan != NULL)
|
if (chan != NULL)
|
||||||
{
|
{
|
||||||
|
@ -834,7 +807,7 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
chan->X = x;
|
chan->X = x;
|
||||||
chan->Y = y;
|
chan->Y = y;
|
||||||
chan->Z = z;
|
chan->Z = z;
|
||||||
chan->Loop = looping;
|
chan->ChanFlags = chanflags;
|
||||||
if (mover != NULL)
|
if (mover != NULL)
|
||||||
{
|
{
|
||||||
mover->SoundChans |= 1 << channel;
|
mover->SoundChans |= 1 << channel;
|
||||||
|
@ -850,19 +823,19 @@ static void S_StartSound (fixed_t *pt, AActor *mover, int channel,
|
||||||
|
|
||||||
void S_SoundID (int channel, int sound_id, float volume, int attenuation)
|
void S_SoundID (int channel, int sound_id, float volume, int attenuation)
|
||||||
{
|
{
|
||||||
S_StartSound ((fixed_t *)NULL, NULL, channel, sound_id, volume, SELECT_ATTEN(attenuation), false);
|
S_StartSound ((fixed_t *)NULL, NULL, channel, sound_id, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_SoundID (AActor *ent, int channel, int sound_id, float volume, int attenuation)
|
void S_SoundID (AActor *ent, int channel, int sound_id, float volume, int attenuation)
|
||||||
{
|
{
|
||||||
if (ent->Sector->MoreFlags & SECF_SILENT)
|
if (ent->Sector->MoreFlags & SECF_SILENT)
|
||||||
return;
|
return;
|
||||||
S_StartSound (&ent->x, ent, channel, sound_id, volume, SELECT_ATTEN(attenuation), false);
|
S_StartSound (&ent->x, ent, channel, sound_id, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_SoundID (fixed_t *pt, int channel, int sound_id, float volume, int attenuation)
|
void S_SoundID (fixed_t *pt, int channel, int sound_id, float volume, int attenuation)
|
||||||
{
|
{
|
||||||
S_StartSound (pt, NULL, channel, sound_id, volume, SELECT_ATTEN(attenuation), false);
|
S_StartSound (pt, NULL, channel, sound_id, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_SoundID (fixed_t x, fixed_t y, fixed_t z, int channel, int sound_id, float volume, int attenuation)
|
void S_SoundID (fixed_t x, fixed_t y, fixed_t z, int channel, int sound_id, float volume, int attenuation)
|
||||||
|
@ -871,25 +844,7 @@ void S_SoundID (fixed_t x, fixed_t y, fixed_t z, int channel, int sound_id, floa
|
||||||
pt[0] = x;
|
pt[0] = x;
|
||||||
pt[1] = y;
|
pt[1] = y;
|
||||||
pt[2] = z;
|
pt[2] = z;
|
||||||
S_StartSound (pt, NULL, channel|CHAN_IMMOBILE, sound_id, volume, SELECT_ATTEN(attenuation), false);
|
S_StartSound (pt, NULL, channel|CHAN_IMMOBILE, sound_id, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// S_LoopedSoundID
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
void S_LoopedSoundID (AActor *ent, int channel, int sound_id, float volume, int attenuation)
|
|
||||||
{
|
|
||||||
if (ent->Sector->MoreFlags & SECF_SILENT)
|
|
||||||
return;
|
|
||||||
S_StartSound (&ent->x, ent, channel, sound_id, volume, SELECT_ATTEN(attenuation), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void S_LoopedSoundID (fixed_t *pt, int channel, int sound_id, float volume, int attenuation)
|
|
||||||
{
|
|
||||||
S_StartSound (pt, NULL, channel, sound_id, volume, SELECT_ATTEN(attenuation), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -899,7 +854,7 @@ void S_LoopedSoundID (fixed_t *pt, int channel, int sound_id, float volume, int
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void S_StartNamedSound (AActor *ent, fixed_t *pt, int channel,
|
void S_StartNamedSound (AActor *ent, fixed_t *pt, int channel,
|
||||||
const char *name, float volume, float attenuation, bool looping)
|
const char *name, float volume, float attenuation)
|
||||||
{
|
{
|
||||||
int sfx_id;
|
int sfx_id;
|
||||||
|
|
||||||
|
@ -914,9 +869,9 @@ void S_StartNamedSound (AActor *ent, fixed_t *pt, int channel,
|
||||||
DPrintf ("Unknown sound %s\n", name);
|
DPrintf ("Unknown sound %s\n", name);
|
||||||
|
|
||||||
if (ent)
|
if (ent)
|
||||||
S_StartSound (&ent->x, ent, channel, sfx_id, volume, attenuation, looping);
|
S_StartSound (&ent->x, ent, channel, sfx_id, volume, attenuation);
|
||||||
else
|
else
|
||||||
S_StartSound (pt, NULL, channel, sfx_id, volume, attenuation, looping);
|
S_StartSound (pt, NULL, channel, sfx_id, volume, attenuation);
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -927,17 +882,17 @@ void S_StartNamedSound (AActor *ent, fixed_t *pt, int channel,
|
||||||
|
|
||||||
void S_Sound (int channel, const char *name, float volume, int attenuation)
|
void S_Sound (int channel, const char *name, float volume, int attenuation)
|
||||||
{
|
{
|
||||||
S_StartNamedSound ((AActor *)NULL, NULL, channel, name, volume, SELECT_ATTEN(attenuation), false);
|
S_StartNamedSound ((AActor *)NULL, NULL, channel, name, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_Sound (AActor *ent, int channel, const char *name, float volume, int attenuation)
|
void S_Sound (AActor *ent, int channel, const char *name, float volume, int attenuation)
|
||||||
{
|
{
|
||||||
S_StartNamedSound (ent, NULL, channel, name, volume, SELECT_ATTEN(attenuation), false);
|
S_StartNamedSound (ent, NULL, channel, name, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_Sound (fixed_t *pt, int channel, const char *name, float volume, int attenuation)
|
void S_Sound (fixed_t *pt, int channel, const char *name, float volume, int attenuation)
|
||||||
{
|
{
|
||||||
S_StartNamedSound (NULL, pt, channel, name, volume, SELECT_ATTEN(attenuation), false);
|
S_StartNamedSound (NULL, pt, channel, name, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_Sound (fixed_t x, fixed_t y, int channel, const char *name, float volume, int attenuation)
|
void S_Sound (fixed_t x, fixed_t y, int channel, const char *name, float volume, int attenuation)
|
||||||
|
@ -946,18 +901,7 @@ void S_Sound (fixed_t x, fixed_t y, int channel, const char *name, float volume,
|
||||||
pt[0] = x;
|
pt[0] = x;
|
||||||
pt[1] = y;
|
pt[1] = y;
|
||||||
S_StartNamedSound (NULL, pt, channel|CHAN_LISTENERZ|CHAN_IMMOBILE,
|
S_StartNamedSound (NULL, pt, channel|CHAN_LISTENERZ|CHAN_IMMOBILE,
|
||||||
name, volume, SELECT_ATTEN(attenuation), false);
|
name, volume, SELECT_ATTEN(attenuation));
|
||||||
}
|
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// S_LoopedSound
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
void S_LoopedSound (AActor *ent, int channel, const char *name, float volume, int attenuation)
|
|
||||||
{
|
|
||||||
S_StartNamedSound (ent, NULL, channel, name, volume, SELECT_ATTEN(attenuation), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
@ -980,6 +924,38 @@ bool S_CheckSingular(int sound_id)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// S_CheckSoundLimit
|
||||||
|
//
|
||||||
|
// Limits the number of nearby copies of a sound that can play near
|
||||||
|
// each other. If there are NearLimit instances of this sound already
|
||||||
|
// playing within 256 units of the new sound, the new sound will not
|
||||||
|
// start.
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
bool S_CheckSoundLimit(sfxinfo_t *sfx, float pos[3])
|
||||||
|
{
|
||||||
|
FSoundChan *chan;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
for (chan = Channels, count = 0; chan != NULL && count < sfx->NearLimit; chan = chan->NextChan)
|
||||||
|
{
|
||||||
|
if (chan->SfxInfo == sfx)
|
||||||
|
{
|
||||||
|
double dx = FIXED2FLOAT(chan->Pt[0]) - pos[0];
|
||||||
|
double dy = FIXED2FLOAT(chan->Pt[1]) - pos[2];
|
||||||
|
double dz = FIXED2FLOAT(chan->Pt[2]) - pos[1];
|
||||||
|
if (dx*dx + dy*dy + dz*dz <= 256.0*256.0)
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count >= sfx->NearLimit;
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// S_StopSound
|
// S_StopSound
|
||||||
|
@ -1048,7 +1024,7 @@ void S_RelinkSound (AActor *from, AActor *to)
|
||||||
{
|
{
|
||||||
if (chan->Pt == frompt)
|
if (chan->Pt == frompt)
|
||||||
{
|
{
|
||||||
if (to != NULL || !chan->Loop)
|
if (to != NULL || !(chan->ChanFlags & CHAN_LOOP))
|
||||||
{
|
{
|
||||||
chan->Pt = topt ? topt : &chan->X;
|
chan->Pt = topt ? topt : &chan->X;
|
||||||
chan->X = frompt[0];
|
chan->X = frompt[0];
|
||||||
|
@ -1189,9 +1165,9 @@ void S_UpdateSounds (void *listener_p)
|
||||||
|
|
||||||
for (FSoundChan *chan = Channels; chan != NULL; chan = chan->NextChan)
|
for (FSoundChan *chan = Channels; chan != NULL; chan = chan->NextChan)
|
||||||
{
|
{
|
||||||
if (chan->Is3D)
|
if (chan->ChanFlags & CHAN_IS3D)
|
||||||
{
|
{
|
||||||
CalcPosVel(chan->Pt, chan->Mover, chan->ConstZ, pos, vel);
|
CalcPosVel(chan->Pt, chan->Mover, chan->ChanFlags & CHAN_LISTENERZ, pos, vel);
|
||||||
GSnd->UpdateSoundParams3D(chan, pos, vel);
|
GSnd->UpdateSoundParams3D(chan, pos, vel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,9 +40,11 @@ struct sfxinfo_t
|
||||||
int lumpnum; // lump number of sfx
|
int lumpnum; // lump number of sfx
|
||||||
|
|
||||||
unsigned int next, index; // [RH] For hashing
|
unsigned int next, index; // [RH] For hashing
|
||||||
unsigned int frequency; // [RH] Preferred playback rate
|
// unsigned int frequency; // [RH] Preferred playback rate
|
||||||
|
float Volume;
|
||||||
|
|
||||||
BYTE PitchMask;
|
BYTE PitchMask;
|
||||||
|
BYTE NearLimit; // 0 means unlimited
|
||||||
|
|
||||||
WORD bRandomHeader:1;
|
WORD bRandomHeader:1;
|
||||||
WORD bPlayerReserve:1;
|
WORD bPlayerReserve:1;
|
||||||
|
@ -97,9 +99,7 @@ struct FSoundChan
|
||||||
float Volume;
|
float Volume;
|
||||||
float DistanceScale;
|
float DistanceScale;
|
||||||
BYTE EntChannel; // Actor's sound channel.
|
BYTE EntChannel; // Actor's sound channel.
|
||||||
bool Loop;
|
int ChanFlags;
|
||||||
bool Is3D;
|
|
||||||
bool ConstZ;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
FSoundChan *S_GetChannel(void *syschan);
|
FSoundChan *S_GetChannel(void *syschan);
|
||||||
|
@ -132,14 +132,10 @@ void S_Sound (int channel, const char *name, float volume, int attenuation);
|
||||||
void S_Sound (AActor *ent, int channel, const char *name, float volume, int attenuation);
|
void S_Sound (AActor *ent, int channel, const char *name, float volume, int attenuation);
|
||||||
void S_Sound (fixed_t *pt, int channel, const char *name, float volume, int attenuation);
|
void S_Sound (fixed_t *pt, int channel, const char *name, float volume, int attenuation);
|
||||||
void S_Sound (fixed_t x, fixed_t y, int channel, const char *name, float volume, int attenuation);
|
void S_Sound (fixed_t x, fixed_t y, int channel, const char *name, float volume, int attenuation);
|
||||||
void S_LoopedSound (AActor *ent, int channel, const char *name, float volume, int attenuation);
|
|
||||||
void S_LoopedSound (fixed_t *pt, int channel, const char *name, float volume, int attenuation);
|
|
||||||
void S_SoundID (int channel, int sfxid, float volume, int attenuation);
|
void S_SoundID (int channel, int sfxid, float volume, int attenuation);
|
||||||
void S_SoundID (AActor *ent, int channel, int sfxid, float volume, int attenuation);
|
void S_SoundID (AActor *ent, int channel, int sfxid, float volume, int attenuation);
|
||||||
void S_SoundID (fixed_t *pt, int channel, int sfxid, float volume, int attenuation);
|
void S_SoundID (fixed_t *pt, int channel, int sfxid, float volume, int attenuation);
|
||||||
void S_SoundID (fixed_t x, fixed_t y, fixed_t z, int channel, int sfxid, float volume, int attenuation);
|
void S_SoundID (fixed_t x, fixed_t y, fixed_t z, int channel, int sfxid, float volume, int attenuation);
|
||||||
void S_LoopedSoundID (AActor *ent, int channel, int sfxid, float volume, int attenuation);
|
|
||||||
void S_LoopedSoundID (fixed_t *pt, int channel, int sfxid, float volume, int attenuation);
|
|
||||||
|
|
||||||
// sound channels
|
// sound channels
|
||||||
// channel 0 never willingly overrides
|
// channel 0 never willingly overrides
|
||||||
|
@ -162,6 +158,10 @@ void S_LoopedSoundID (fixed_t *pt, int channel, int sfxid, float volume, int att
|
||||||
#define CHAN_IMMOBILE 16
|
#define CHAN_IMMOBILE 16
|
||||||
#define CHAN_MAYBE_LOCAL 32
|
#define CHAN_MAYBE_LOCAL 32
|
||||||
#define CHAN_NOPAUSE 64 // do not pause this sound in menus
|
#define CHAN_NOPAUSE 64 // do not pause this sound in menus
|
||||||
|
#define CHAN_AREA 128 // Sound plays from all around within MinDistance
|
||||||
|
#define CHAN_LOOP 256
|
||||||
|
#define CHAN_IS3D 1 // internal flag
|
||||||
|
|
||||||
#define CHAN_PICKUP (CHAN_ITEM|CHAN_MAYBE_LOCAL)
|
#define CHAN_PICKUP (CHAN_ITEM|CHAN_MAYBE_LOCAL)
|
||||||
|
|
||||||
// sound attenuation values
|
// sound attenuation values
|
||||||
|
|
|
@ -919,7 +919,7 @@ SoundStream *FMODSoundRenderer::OpenStream(const char *filename_or_data, int fla
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
FSoundChan *FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, int pitch, bool looping, bool pausable)
|
FSoundChan *FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, int pitch, int chanflags)
|
||||||
{
|
{
|
||||||
int id = int(sfx - &S_sfx[0]);
|
int id = int(sfx - &S_sfx[0]);
|
||||||
FMOD_RESULT result;
|
FMOD_RESULT result;
|
||||||
|
@ -927,7 +927,14 @@ FSoundChan *FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, int pitch,
|
||||||
FMOD::Channel *chan;
|
FMOD::Channel *chan;
|
||||||
float freq;
|
float freq;
|
||||||
|
|
||||||
freq = PITCH(sfx->frequency, pitch);
|
if (FMOD_OK == ((FMOD::Sound *)sfx->data)->getDefaults(&freq, NULL, NULL, NULL))
|
||||||
|
{
|
||||||
|
freq = PITCH(freq, pitch);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
freq = 0;
|
||||||
|
}
|
||||||
|
|
||||||
GSfxInfo = sfx;
|
GSfxInfo = sfx;
|
||||||
result = Sys->playSound(FMOD_CHANNEL_FREE, (FMOD::Sound *)sfx->data, true, &chan);
|
result = Sys->playSound(FMOD_CHANNEL_FREE, (FMOD::Sound *)sfx->data, true, &chan);
|
||||||
|
@ -941,17 +948,19 @@ FSoundChan *FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, int pitch,
|
||||||
mode = FMOD_SOFTWARE;
|
mode = FMOD_SOFTWARE;
|
||||||
}
|
}
|
||||||
mode = (mode & ~FMOD_3D) | FMOD_2D;
|
mode = (mode & ~FMOD_3D) | FMOD_2D;
|
||||||
if (looping)
|
if (chanflags & CHAN_LOOP)
|
||||||
{
|
{
|
||||||
mode = (mode & ~FMOD_LOOP_OFF) | FMOD_LOOP_NORMAL;
|
mode = (mode & ~FMOD_LOOP_OFF) | FMOD_LOOP_NORMAL;
|
||||||
}
|
}
|
||||||
chan->setMode(mode);
|
chan->setMode(mode);
|
||||||
|
chan->setChannelGroup((!(chanflags & CHAN_NOPAUSE) && !SFXPaused) ? PausableSfx : SfxGroup);
|
||||||
chan->setChannelGroup((pausable && !SFXPaused) ? PausableSfx : SfxGroup);
|
if (freq != 0)
|
||||||
|
{
|
||||||
chan->setFrequency(freq);
|
chan->setFrequency(freq);
|
||||||
|
}
|
||||||
chan->setVolume(vol);
|
chan->setVolume(vol);
|
||||||
chan->setPaused(false);
|
chan->setPaused(false);
|
||||||
return CommonChannelSetup(chan, false);
|
return CommonChannelSetup(chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPrintf ("Sound %s failed to play: %d\n", sfx->name.GetChars(), result);
|
DPrintf ("Sound %s failed to play: %d\n", sfx->name.GetChars(), result);
|
||||||
|
@ -965,7 +974,7 @@ FSoundChan *FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, int pitch,
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
FSoundChan *FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, float distscale,
|
FSoundChan *FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, float distscale,
|
||||||
int pitch, int priority, bool looping, float pos[3], float vel[3], bool pausable)
|
int pitch, int priority, float pos[3], float vel[3], int chanflags)
|
||||||
{
|
{
|
||||||
int id = int(sfx - &S_sfx[0]);
|
int id = int(sfx - &S_sfx[0]);
|
||||||
FMOD_RESULT result;
|
FMOD_RESULT result;
|
||||||
|
@ -975,15 +984,15 @@ FSoundChan *FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, float dis
|
||||||
float def_freq, def_vol, def_pan;
|
float def_freq, def_vol, def_pan;
|
||||||
int def_priority;
|
int def_priority;
|
||||||
|
|
||||||
freq = PITCH(sfx->frequency, pitch);
|
|
||||||
|
|
||||||
// Change the sound's default priority before playing it.
|
|
||||||
if (FMOD_OK == ((FMOD::Sound *)sfx->data)->getDefaults(&def_freq, &def_vol, &def_pan, &def_priority))
|
if (FMOD_OK == ((FMOD::Sound *)sfx->data)->getDefaults(&def_freq, &def_vol, &def_pan, &def_priority))
|
||||||
{
|
{
|
||||||
|
freq = PITCH(def_freq, pitch);
|
||||||
|
// Change the sound's default priority before playing it.
|
||||||
((FMOD::Sound *)sfx->data)->setDefaults(def_freq, def_vol, def_pan, clamp(def_priority - priority, 1, 256));
|
((FMOD::Sound *)sfx->data)->setDefaults(def_freq, def_vol, def_pan, clamp(def_priority - priority, 1, 256));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
freq = 0;
|
||||||
def_priority = -1;
|
def_priority = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1005,34 +1014,21 @@ FSoundChan *FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, float dis
|
||||||
{
|
{
|
||||||
mode = FMOD_3D | FMOD_SOFTWARE;
|
mode = FMOD_3D | FMOD_SOFTWARE;
|
||||||
}
|
}
|
||||||
if (looping)
|
if (chanflags & CHAN_LOOP)
|
||||||
{
|
{
|
||||||
mode = (mode & ~FMOD_LOOP_OFF) | FMOD_LOOP_NORMAL;
|
mode = (mode & ~FMOD_LOOP_OFF) | FMOD_LOOP_NORMAL;
|
||||||
}
|
}
|
||||||
// If this sound is played at the same coordinates as the listener,
|
mode = SetChanHeadSettings(chan, sfx, pos, chanflags, mode);
|
||||||
// make it head relative.
|
|
||||||
if (players[consoleplayer].camera != NULL)
|
|
||||||
{
|
|
||||||
float cpos[3];
|
|
||||||
|
|
||||||
cpos[0] = FIXED2FLOAT(players[consoleplayer].camera->x);
|
|
||||||
cpos[2] = FIXED2FLOAT(players[consoleplayer].camera->y);
|
|
||||||
cpos[1] = FIXED2FLOAT(players[consoleplayer].camera->z);
|
|
||||||
if (cpos[0] == pos[0] && cpos[1] == pos[1] && cpos[2] == pos[2])
|
|
||||||
{
|
|
||||||
mode = (mode & ~FMOD_3D_WORLDRELATIVE) | FMOD_3D_HEADRELATIVE;
|
|
||||||
pos[0] = 0;
|
|
||||||
pos[1] = 0;
|
|
||||||
pos[2] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
chan->setMode(mode);
|
chan->setMode(mode);
|
||||||
chan->setChannelGroup((pausable && !SFXPaused) ? PausableSfx : SfxGroup);
|
chan->setChannelGroup((!(chanflags & CHAN_NOPAUSE) && !SFXPaused) ? PausableSfx : SfxGroup);
|
||||||
|
if (freq != 0)
|
||||||
|
{
|
||||||
chan->setFrequency(freq);
|
chan->setFrequency(freq);
|
||||||
|
}
|
||||||
chan->setVolume(vol);
|
chan->setVolume(vol);
|
||||||
chan->set3DAttributes((FMOD_VECTOR *)pos, (FMOD_VECTOR *)vel);
|
chan->set3DAttributes((FMOD_VECTOR *)pos, (FMOD_VECTOR *)vel);
|
||||||
chan->setPaused(false);
|
chan->setPaused(false);
|
||||||
FSoundChan *schan = CommonChannelSetup(chan, true);
|
FSoundChan *schan = CommonChannelSetup(chan);
|
||||||
schan->DistanceScale = distscale;
|
schan->DistanceScale = distscale;
|
||||||
return schan;
|
return schan;
|
||||||
}
|
}
|
||||||
|
@ -1041,6 +1037,60 @@ FSoundChan *FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, float dis
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// FMODSound :: SetChanHeadSettings
|
||||||
|
//
|
||||||
|
// If this sound is played at the same coordinates as the listener, make
|
||||||
|
// it head relative. Also, area sounds should use no 3D panning if close
|
||||||
|
// enough to the listener.
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
FMOD_MODE FMODSoundRenderer::SetChanHeadSettings(FMOD::Channel *chan, sfxinfo_t *sfx, float pos[3], int chanflags, FMOD_MODE oldmode) const
|
||||||
|
{
|
||||||
|
if (players[consoleplayer].camera == NULL)
|
||||||
|
{
|
||||||
|
return oldmode;
|
||||||
|
}
|
||||||
|
double cpos[3];
|
||||||
|
cpos[0] = FIXED2FLOAT(players[consoleplayer].camera->x);
|
||||||
|
cpos[2] = FIXED2FLOAT(players[consoleplayer].camera->y);
|
||||||
|
cpos[1] = FIXED2FLOAT(players[consoleplayer].camera->z);
|
||||||
|
if (chanflags & CHAN_AREA)
|
||||||
|
{
|
||||||
|
const double interp_range = 512.0;
|
||||||
|
double dx = cpos[0] - pos[0], dy = cpos[1] - pos[1], dz = cpos[2] - pos[2];
|
||||||
|
double min_dist = sfx->MinDistance == 0 ? (S_MinDistance == 0 ? 200 : S_MinDistance) : sfx->MinDistance;
|
||||||
|
double dist_sqr = dx*dx + dy*dy + dz*dz;
|
||||||
|
float level, old_level;
|
||||||
|
|
||||||
|
if (dist_sqr <= min_dist*min_dist)
|
||||||
|
{ // Within min distance: No 3D panning.
|
||||||
|
level = 0;
|
||||||
|
}
|
||||||
|
else if (dist_sqr <= (min_dist + interp_range) * (min_dist + interp_range))
|
||||||
|
{ // Within interp_range units of min distance: Interpolate between none and full 3D panning.
|
||||||
|
level = float(1 - (min_dist + interp_range - sqrt(dist_sqr)) / interp_range);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // Beyond 256 units of min distance: Normal 3D panning.
|
||||||
|
level = 1;
|
||||||
|
}
|
||||||
|
if (chan->get3DPanLevel(&old_level) == FMOD_OK && old_level != level)
|
||||||
|
{ // Only set it if it's different.
|
||||||
|
chan->set3DPanLevel(level);
|
||||||
|
}
|
||||||
|
return oldmode;
|
||||||
|
}
|
||||||
|
else if (cpos[0] == pos[0] && cpos[1] == pos[1] && cpos[2] == pos[2])
|
||||||
|
{
|
||||||
|
pos[2] = pos[1] = pos[0] = 0;
|
||||||
|
return (oldmode & ~FMOD_3D_WORLDRELATIVE) | FMOD_3D_HEADRELATIVE;
|
||||||
|
}
|
||||||
|
return (oldmode & ~FMOD_3D_HEADRELATIVE) | FMOD_3D_WORLDRELATIVE;
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// FMODSoundRenderer :: CommonChannelSetup
|
// FMODSoundRenderer :: CommonChannelSetup
|
||||||
|
@ -1050,12 +1100,11 @@ FSoundChan *FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, float dis
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
FSoundChan *FMODSoundRenderer::CommonChannelSetup(FMOD::Channel *chan, bool is3d)
|
FSoundChan *FMODSoundRenderer::CommonChannelSetup(FMOD::Channel *chan) const
|
||||||
{
|
{
|
||||||
FSoundChan *schan = S_GetChannel(chan);
|
FSoundChan *schan = S_GetChannel(chan);
|
||||||
chan->setUserData(schan);
|
chan->setUserData(schan);
|
||||||
chan->setCallback(FMOD_CHANNEL_CALLBACKTYPE_END, ChannelEndCallback, 0);
|
chan->setCallback(FMOD_CHANNEL_CALLBACKTYPE_END, ChannelEndCallback, 0);
|
||||||
schan->Is3D = is3d;
|
|
||||||
GSfxInfo = NULL;
|
GSfxInfo = NULL;
|
||||||
return schan;
|
return schan;
|
||||||
}
|
}
|
||||||
|
@ -1104,39 +1153,17 @@ void FMODSoundRenderer::UpdateSoundParams3D(FSoundChan *chan, float pos[3], floa
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FMOD::Channel *fchan = (FMOD::Channel *)chan->SysChannel;
|
FMOD::Channel *fchan = (FMOD::Channel *)chan->SysChannel;
|
||||||
|
|
||||||
// Sounds at the same location as the listener should be head relative, others
|
|
||||||
// should be world relative.
|
|
||||||
if (players[consoleplayer].camera != NULL)
|
|
||||||
{
|
|
||||||
FMOD_MODE oldmode, mode;
|
FMOD_MODE oldmode, mode;
|
||||||
float cpos[3];
|
|
||||||
|
|
||||||
cpos[0] = FIXED2FLOAT(players[consoleplayer].camera->x);
|
if (fchan->getMode(&oldmode) != FMOD_OK)
|
||||||
cpos[2] = FIXED2FLOAT(players[consoleplayer].camera->y);
|
|
||||||
cpos[1] = FIXED2FLOAT(players[consoleplayer].camera->z);
|
|
||||||
if (FMOD_OK != fchan->getMode(&oldmode))
|
|
||||||
{
|
{
|
||||||
oldmode = FMOD_3D | FMOD_SOFTWARE;
|
oldmode = FMOD_3D | FMOD_SOFTWARE;
|
||||||
}
|
}
|
||||||
if (cpos[0] == pos[0] && cpos[1] == pos[1] && cpos[2] == pos[2])
|
mode = SetChanHeadSettings(fchan, chan->SfxInfo, pos, chan->ChanFlags, oldmode);
|
||||||
{
|
if (mode != oldmode)
|
||||||
mode = (oldmode & ~FMOD_3D_WORLDRELATIVE) | FMOD_3D_HEADRELATIVE;
|
{ // Only set the mode if it changed.
|
||||||
pos[0] = 0;
|
|
||||||
pos[1] = 0;
|
|
||||||
pos[2] = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mode = (oldmode & ~FMOD_3D_HEADRELATIVE) | FMOD_3D_WORLDRELATIVE;
|
|
||||||
}
|
|
||||||
// Only set the mode if it changed.
|
|
||||||
if (((mode ^ oldmode) & (FMOD_3D_WORLDRELATIVE | FMOD_3D_HEADRELATIVE)) == 0)
|
|
||||||
{
|
|
||||||
fchan->setMode(mode);
|
fchan->setMode(mode);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fchan->set3DAttributes((FMOD_VECTOR *)pos, (FMOD_VECTOR *)vel);
|
fchan->set3DAttributes((FMOD_VECTOR *)pos, (FMOD_VECTOR *)vel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1352,24 +1379,26 @@ void FMODSoundRenderer::DoLoad(void **slot, sfxinfo_t *sfx)
|
||||||
if (sfx->bLoadRAW ||
|
if (sfx->bLoadRAW ||
|
||||||
(((BYTE *)sfxdata)[0] == 3 && ((BYTE *)sfxdata)[1] == 0 && len <= size - 8))
|
(((BYTE *)sfxdata)[0] == 3 && ((BYTE *)sfxdata)[1] == 0 && len <= size - 8))
|
||||||
{
|
{
|
||||||
|
int frequency;
|
||||||
|
|
||||||
if (sfx->bLoadRAW)
|
if (sfx->bLoadRAW)
|
||||||
{
|
{
|
||||||
len = Wads.LumpLength (sfx->lumpnum);
|
len = Wads.LumpLength (sfx->lumpnum);
|
||||||
sfx->frequency = (sfx->bForce22050 ? 22050 : 11025);
|
frequency = (sfx->bForce22050 ? 22050 : 11025);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sfx->frequency = ((WORD *)sfxdata)[1];
|
frequency = ((WORD *)sfxdata)[1];
|
||||||
if (sfx->frequency == 0)
|
if (frequency == 0)
|
||||||
{
|
{
|
||||||
sfx->frequency = 11025;
|
frequency = 11025;
|
||||||
}
|
}
|
||||||
sfxstart = sfxdata + 8;
|
sfxstart = sfxdata + 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
exinfo.length = len;
|
exinfo.length = len;
|
||||||
exinfo.numchannels = 1;
|
exinfo.numchannels = 1;
|
||||||
exinfo.defaultfrequency = sfx->frequency;
|
exinfo.defaultfrequency = frequency;
|
||||||
exinfo.format = FMOD_SOUND_FORMAT_PCM8;
|
exinfo.format = FMOD_SOUND_FORMAT_PCM8;
|
||||||
|
|
||||||
samplemode |= FMOD_OPENRAW;
|
samplemode |= FMOD_OPENRAW;
|
||||||
|
@ -1398,19 +1427,6 @@ void FMODSoundRenderer::DoLoad(void **slot, sfxinfo_t *sfx)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*slot = sample;
|
*slot = sample;
|
||||||
// Get frequency and length for sounds FMOD handled for us.
|
|
||||||
if (!(samplemode & FMOD_OPENRAW))
|
|
||||||
{
|
|
||||||
float freq;
|
|
||||||
|
|
||||||
result = sample->getDefaults(&freq, NULL, NULL, NULL);
|
|
||||||
if (result != FMOD_OK)
|
|
||||||
{
|
|
||||||
DPrintf("Failed getting default sound frequency, assuming 11025Hz\n");
|
|
||||||
freq = 11025;
|
|
||||||
}
|
|
||||||
sfx->frequency = (unsigned int)freq;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ public:
|
||||||
void StopStream (SoundStream *stream);
|
void StopStream (SoundStream *stream);
|
||||||
|
|
||||||
// Starts a sound.
|
// Starts a sound.
|
||||||
FSoundChan *StartSound (sfxinfo_t *sfx, float vol, int pitch, bool looping, bool pauseable);
|
FSoundChan *StartSound (sfxinfo_t *sfx, float vol, int pitch, int chanflags);
|
||||||
FSoundChan *StartSound3D (sfxinfo_t *sfx, float vol, float distscale, int pitch, int priority, bool looping, float pos[3], float vel[3], bool pauseable);
|
FSoundChan *StartSound3D (sfxinfo_t *sfx, float vol, float distscale, int pitch, int priority, float pos[3], float vel[3], int chanflags);
|
||||||
|
|
||||||
// Stops a sound channel.
|
// Stops a sound channel.
|
||||||
void StopSound (FSoundChan *chan);
|
void StopSound (FSoundChan *chan);
|
||||||
|
@ -58,7 +58,8 @@ private:
|
||||||
(FMOD_CHANNEL *channel, FMOD_CHANNEL_CALLBACKTYPE type, int cmd, unsigned int data1, unsigned int data2);
|
(FMOD_CHANNEL *channel, FMOD_CHANNEL_CALLBACKTYPE type, int cmd, unsigned int data1, unsigned int data2);
|
||||||
static float F_CALLBACK RolloffCallback(FMOD_CHANNEL *channel, float distance);
|
static float F_CALLBACK RolloffCallback(FMOD_CHANNEL *channel, float distance);
|
||||||
|
|
||||||
FSoundChan *CommonChannelSetup(FMOD::Channel *chan, bool is3d);
|
FSoundChan *CommonChannelSetup(FMOD::Channel *chan) const;
|
||||||
|
FMOD_MODE SetChanHeadSettings(FMOD::Channel *chan, sfxinfo_t *sfx, float pos[3], int chanflags, FMOD_MODE oldmode) const;
|
||||||
void DoLoad (void **slot, sfxinfo_t *sfx);
|
void DoLoad (void **slot, sfxinfo_t *sfx);
|
||||||
void getsfx (sfxinfo_t *sfx);
|
void getsfx (sfxinfo_t *sfx);
|
||||||
|
|
||||||
|
|
|
@ -78,8 +78,8 @@ public:
|
||||||
virtual SoundStream *OpenStream (const char *filename, int flags, int offset, int length) = 0;
|
virtual SoundStream *OpenStream (const char *filename, int flags, int offset, int length) = 0;
|
||||||
|
|
||||||
// Starts a sound.
|
// Starts a sound.
|
||||||
virtual FSoundChan *StartSound (sfxinfo_t *sfx, float vol, int pitch, bool looping, bool pauseable) = 0;
|
virtual FSoundChan *StartSound (sfxinfo_t *sfx, float vol, int pitch, int chanflags) = 0;
|
||||||
virtual FSoundChan *StartSound3D (sfxinfo_t *sfx, float vol, float distscale, int pitch, int priority, bool looping, float pos[3], float vel[3], bool pauseable) = 0;
|
virtual FSoundChan *StartSound3D (sfxinfo_t *sfx, float vol, float distscale, int pitch, int priority, float pos[3], float vel[3], int chanflags) = 0;
|
||||||
|
|
||||||
// Stops a sound channel.
|
// Stops a sound channel.
|
||||||
virtual void StopSound (FSoundChan *chan) = 0;
|
virtual void StopSound (FSoundChan *chan) = 0;
|
||||||
|
|
|
@ -339,7 +339,7 @@ void A_PlaySoundEx (AActor *self)
|
||||||
{
|
{
|
||||||
if (!S_IsActorPlayingSomething (self, channel - NAME_Auto, soundid))
|
if (!S_IsActorPlayingSomething (self, channel - NAME_Auto, soundid))
|
||||||
{
|
{
|
||||||
S_LoopedSoundID (self, channel - NAME_Auto, soundid, 1, attenuation);
|
S_SoundID (self, (channel - NAME_Auto) | CHAN_LOOP, soundid, 1, attenuation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
#define NOP 1
|
|
||||||
#define OR 2
|
|
||||||
#define XOR 3
|
|
||||||
#define AND 4
|
|
||||||
#define MINUS 5
|
|
||||||
#define PLUS 6
|
|
||||||
#define MULTIPLY 7
|
|
||||||
#define DIVIDE 8
|
|
||||||
#define NEG 9
|
|
||||||
#define NUM 10
|
|
||||||
#define SYMNUM 11
|
|
||||||
#define LPAREN 12
|
|
||||||
#define RPAREN 13
|
|
||||||
#define DEFINE 14
|
|
||||||
#define SYM 15
|
|
||||||
#define RBRACE 16
|
|
||||||
#define ENUM 17
|
|
||||||
#define LBRACE 18
|
|
||||||
#define COMMA 19
|
|
||||||
#define EQUALS 20
|
|
||||||
#define TAG 21
|
|
||||||
#define LBRACKET 22
|
|
||||||
#define RBRACKET 23
|
|
||||||
#define FLAGS 24
|
|
||||||
#define ARG2 25
|
|
||||||
#define ARG3 26
|
|
||||||
#define ARG4 27
|
|
||||||
#define ARG5 28
|
|
||||||
#define OR_EQUAL 29
|
|
||||||
#define COLON 30
|
|
||||||
#define SECTOR 31
|
|
||||||
#define SEMICOLON 32
|
|
||||||
#define NOBITMASK 33
|
|
||||||
#define BITMASK 34
|
|
||||||
#define CLEAR 35
|
|
||||||
#define LSHASSIGN 36
|
|
||||||
#define RSHASSIGN 37
|
|
|
@ -202,6 +202,11 @@ weapons/bfgf dsbfg
|
||||||
weapons/bfgx dsrxplod
|
weapons/bfgx dsrxplod
|
||||||
weapons/railgf railgf1
|
weapons/railgf railgf1
|
||||||
|
|
||||||
|
$limit weapons/plasmaf 0
|
||||||
|
$limit weapons/chngun 0
|
||||||
|
$limit weapons/rocklf 0 // because normal running is almost as fast as a rocket
|
||||||
|
$limit weapons/rocklx 0 // and the cyberdemon shoots 3 at once
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
// MONSTER SOUNDS
|
// MONSTER SOUNDS
|
||||||
|
@ -284,6 +289,7 @@ chainguy/death1 dspodth1
|
||||||
chainguy/death2 dspodth2
|
chainguy/death2 dspodth2
|
||||||
chainguy/death3 dspodth3
|
chainguy/death3 dspodth3
|
||||||
chainguy/attack dsshotgn
|
chainguy/attack dsshotgn
|
||||||
|
$limit chainguy/attack 0
|
||||||
|
|
||||||
// Imp
|
// Imp
|
||||||
|
|
||||||
|
@ -367,6 +373,8 @@ baby/walk dsbspwlk
|
||||||
baby/attack dsplasma
|
baby/attack dsplasma
|
||||||
baby/shotx dsfirxpl
|
baby/shotx dsfirxpl
|
||||||
|
|
||||||
|
$limit baby/attack 0
|
||||||
|
|
||||||
// Cyber Demon
|
// Cyber Demon
|
||||||
|
|
||||||
cyber/sight dscybsit
|
cyber/sight dscybsit
|
||||||
|
@ -452,6 +460,10 @@ misc/spawn dsitmbk // Item respawn
|
||||||
misc/chat dsradio // Doom 2 chat sound
|
misc/chat dsradio // Doom 2 chat sound
|
||||||
misc/chat2 dstink // Chat sound for everything else
|
misc/chat2 dstink // Chat sound for everything else
|
||||||
|
|
||||||
|
$limit misc/i_pkup 1
|
||||||
|
$limit misc/k_pkup 1
|
||||||
|
$limit misc/w_pkup 1
|
||||||
|
$limit misc/p_pkup 1
|
||||||
$pitchshift misc/i_pkup 0
|
$pitchshift misc/i_pkup 0
|
||||||
$pitchshift misc/k_pkup 0
|
$pitchshift misc/k_pkup 0
|
||||||
$pitchshift misc/chat2 0
|
$pitchshift misc/chat2 0
|
||||||
|
@ -543,6 +555,21 @@ weapons/phoenixshoot phosht
|
||||||
weapons/phoenixhit phohit
|
weapons/phoenixhit phohit
|
||||||
weapons/phoenixpowshoot phopow
|
weapons/phoenixpowshoot phopow
|
||||||
|
|
||||||
|
$limit weapons/gauntletson 0
|
||||||
|
$limit weapons/gauntletshit 0
|
||||||
|
$limit weapons/gauntletspowhit 0
|
||||||
|
$limit weapons/gauntletsactivate 0
|
||||||
|
$limit weapons/gauntletsuse 0
|
||||||
|
$limit weapons/maceexplode 0
|
||||||
|
$limit weapons/phoenixhit 0
|
||||||
|
$limit weapons/phoenixpowshoot 1
|
||||||
|
|
||||||
|
// [RH] Heretic didn't have these limitless, but they can sound bad if they're not
|
||||||
|
$limit weapons/bowhit 0
|
||||||
|
$limit weapons/hornrodshoot 0
|
||||||
|
$limit weapons/hornrodhit 0
|
||||||
|
$limit weapons/maceshoot 0
|
||||||
|
|
||||||
himp/sight impsit
|
himp/sight impsit
|
||||||
himp/attack impat1
|
himp/attack impat1
|
||||||
himp/pain imppai
|
himp/pain imppai
|
||||||
|
@ -552,11 +579,17 @@ himp/leaderattack impat2
|
||||||
|
|
||||||
misc/invuse artiuse
|
misc/invuse artiuse
|
||||||
|
|
||||||
|
$limit misc/invuse 1
|
||||||
|
|
||||||
world/podexplode podexp
|
world/podexplode podexp
|
||||||
world/podgrow newpod
|
world/podgrow newpod
|
||||||
world/wind wind
|
world/wind wind
|
||||||
world/waterfall waterfl
|
world/waterfall waterfl
|
||||||
|
|
||||||
|
$limit world/podexplode 0
|
||||||
|
$limit world/podgrow 0
|
||||||
|
$limit world/wind 1
|
||||||
|
|
||||||
misc/i_pkup itemup
|
misc/i_pkup itemup
|
||||||
misc/k_pkup keyup
|
misc/k_pkup keyup
|
||||||
misc/p_pkup artiup
|
misc/p_pkup artiup
|
||||||
|
@ -565,6 +598,8 @@ $alias misc/w_pkup *weaponlaugh
|
||||||
misc/rain ramrain
|
misc/rain ramrain
|
||||||
misc/spawn respawn
|
misc/spawn respawn
|
||||||
|
|
||||||
|
$limit misc/spawn 1
|
||||||
|
|
||||||
//
|
//
|
||||||
// Minotaur sounds
|
// Minotaur sounds
|
||||||
//
|
//
|
||||||
|
@ -633,10 +668,24 @@ world/amb10 amb10
|
||||||
world/amb11 amb11
|
world/amb11 amb11
|
||||||
world/amb12 bstsit
|
world/amb12 bstsit
|
||||||
|
|
||||||
|
$limit world/amb1 1
|
||||||
|
$limit world/amb2 1
|
||||||
|
$limit world/amb3 1
|
||||||
|
$limit world/amb4 1
|
||||||
|
$limit world/amb5 1
|
||||||
|
$limit world/amb6 1
|
||||||
|
$limit world/amb7 1
|
||||||
|
$limit world/amb8 1
|
||||||
|
$limit world/amb9 1
|
||||||
|
$limit world/amb10 1
|
||||||
|
$limit world/amb11 0
|
||||||
|
|
||||||
misc/chat chat
|
misc/chat chat
|
||||||
misc/teleport telept
|
misc/teleport telept
|
||||||
misc/ripslop ripslop
|
misc/ripslop ripslop
|
||||||
|
|
||||||
|
$limit misc/chat 1
|
||||||
|
|
||||||
world/drip gloop
|
world/drip gloop
|
||||||
world/watersplash gloop
|
world/watersplash gloop
|
||||||
world/lavasizzle burn
|
world/lavasizzle burn
|
||||||
|
@ -841,6 +890,31 @@ $alias minotaur/attack2 MaulatorHamSwing
|
||||||
$random BishopActiveSounds { BishopActive BishopSight }
|
$random BishopActiveSounds { BishopActive BishopSight }
|
||||||
$random PigActive { PigActive1 PigActive2 }
|
$random PigActive { PigActive1 PigActive2 }
|
||||||
|
|
||||||
|
$limit PlayerFighterFailedUse 1
|
||||||
|
$limit PlayerClericFailedUse 1
|
||||||
|
$limit PlayerMageFailedUse 1
|
||||||
|
$limit SorcererBallWoosh 4
|
||||||
|
$limit SorcererBallBounce 3
|
||||||
|
$limit SorcererBallExplode 3
|
||||||
|
$limit SorcererBallPop 3
|
||||||
|
$limit SorcererBigBallExplode 3
|
||||||
|
$limit Ambient1 1
|
||||||
|
$limit Ambient2 1
|
||||||
|
$limit Ambient3 1
|
||||||
|
$limit Ambient4 1
|
||||||
|
$limit Ambient5 1
|
||||||
|
$limit Ambient6 1
|
||||||
|
$limit Ambient7 1
|
||||||
|
$limit Ambient8 1
|
||||||
|
$limit Ambient9 1
|
||||||
|
$limit Ambient10 1
|
||||||
|
$limit Ambient11 1
|
||||||
|
$limit Ambient12 1
|
||||||
|
$limit Ambient13 1
|
||||||
|
$limit Ambient14 1
|
||||||
|
$limit Ambient15 1
|
||||||
|
$limit MysticIncant 4
|
||||||
|
|
||||||
$pitchshift PlayerMageNormalDeath 0
|
$pitchshift PlayerMageNormalDeath 0
|
||||||
$pitchshift PlayerMageCrazyDeath 0
|
$pitchshift PlayerMageCrazyDeath 0
|
||||||
$pitchshift PlayerMageExtreme1Death 0
|
$pitchshift PlayerMageExtreme1Death 0
|
||||||
|
@ -869,6 +943,20 @@ $alias menu/clear PlatformStop
|
||||||
// Hexen does not have ripslop sound like Heretic
|
// Hexen does not have ripslop sound like Heretic
|
||||||
misc/ripslop dsempty
|
misc/ripslop dsempty
|
||||||
|
|
||||||
|
$limit DoorCloseLight 4
|
||||||
|
|
||||||
|
$limit PuppyBeat 0
|
||||||
|
$limit CeantaurPain 0
|
||||||
|
$limit BishopPain 0
|
||||||
|
$limit SerpentPain 0
|
||||||
|
$limit DemonPain 0
|
||||||
|
$limit WraithPain 0
|
||||||
|
$limit MaulatorPain 0
|
||||||
|
$limit EttinPain 0
|
||||||
|
$limit FireDemonPain 0
|
||||||
|
$limit SorcererPain 0
|
||||||
|
$limit DragonPain 0
|
||||||
|
|
||||||
$endif // ifhexen
|
$endif // ifhexen
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -962,6 +1050,10 @@ world/waterfall dswfall
|
||||||
world/waterdrip dswdrip
|
world/waterdrip dswdrip
|
||||||
world/watersplash dswsplsh
|
world/watersplash dswsplsh
|
||||||
|
|
||||||
|
$limit world/river 1
|
||||||
|
$limit world/waterfall 1
|
||||||
|
$limit world/waterdrip 1
|
||||||
|
|
||||||
world/drip dsempty // These four satisfy the Heretic/Hexen terrain definitions
|
world/drip dsempty // These four satisfy the Heretic/Hexen terrain definitions
|
||||||
world/sludgegloop dsempty
|
world/sludgegloop dsempty
|
||||||
world/lavasizzle dsempty
|
world/lavasizzle dsempty
|
||||||
|
|
|
@ -177,15 +177,15 @@
|
||||||
Name="Map Translators"
|
Name="Map Translators"
|
||||||
>
|
>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\xlat\doom.txt"
|
RelativePath=".\xlat\doomxlat.txt"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\xlat\heretic.txt"
|
RelativePath=".\xlat\hereticxlat.txt"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\xlat\strife.txt"
|
RelativePath=".\xlat\strifexlat.txt"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<Filter
|
<Filter
|
||||||
|
|
428
zdoom.vcproj
428
zdoom.vcproj
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8,00"
|
Version="8.00"
|
||||||
Name="zdoom"
|
Name="zdoom"
|
||||||
ProjectGUID="{8049475B-5C87-46F9-9358-635218A4EF18}"
|
ProjectGUID="{8049475B-5C87-46F9-9358-635218A4EF18}"
|
||||||
RootNamespace=" zdoom"
|
RootNamespace=" zdoom"
|
||||||
|
@ -135,112 +135,6 @@
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\Debug"
|
|
||||||
IntermediateDirectory=".\Debug"
|
|
||||||
ConfigurationType="1"
|
|
||||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
Description="Checking svnrevision.h..."
|
|
||||||
CommandLine="$(OutDir)\updaterevision.exe src src/svnrevision.h"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="1"
|
|
||||||
TypeLibraryName=".\Debug/zdoom.tlb"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="src\win32;src\sound;src;zlib;src\g_shared;src\g_doom;src\g_raven;src\g_heretic;src\g_hexen;src\g_strife;jpeg-6b;snes_spc\snes_spc"
|
|
||||||
PreprocessorDefinitions="WIN32,_DEBUG,_WIN32,_WINDOWS,USEASM,_CRTDBG_MAP_ALLOC,HAVE_STRUPR,HAVE_FILELENGTH"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
RuntimeLibrary="1"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
ForceConformanceInForLoopScope="true"
|
|
||||||
PrecompiledHeaderFile=""
|
|
||||||
AssemblerOutput="4"
|
|
||||||
AssemblerListingLocation=".\Debug/"
|
|
||||||
ObjectFile=".\Debug/"
|
|
||||||
ProgramDataBaseFileName=".\Debug/"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
CompileAs="0"
|
|
||||||
DisableSpecificWarnings="4996"
|
|
||||||
ForcedIncludeFiles=""
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="1033"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalOptions="/MACHINE:I386"
|
|
||||||
AdditionalDependencies="gdi32.lib user32.lib comctl32.lib shell32.lib advapi32.lib comdlg32.lib ole32.lib dxguid.lib dsound.lib dinput8.lib strmiids.lib wsock32.lib winmm.lib fmodex_vc.lib setupapi.lib ws2_32.lib"
|
|
||||||
OutputFile="../zdoomd.exe"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
AdditionalLibraryDirectories=""
|
|
||||||
IgnoreDefaultLibraryNames="libcmt;msvcrtd;msvcrt"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
ProgramDatabaseFile=".\Debug/zdoomd.pdb"
|
|
||||||
SubSystem="2"
|
|
||||||
StackReserveSize="0"
|
|
||||||
TerminalServerAware="2"
|
|
||||||
SetChecksum="false"
|
|
||||||
TargetMachine="0"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
@ -355,6 +249,112 @@
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory=".\Debug"
|
||||||
|
IntermediateDirectory=".\Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
Description="Checking svnrevision.h..."
|
||||||
|
CommandLine="$(OutDir)\updaterevision.exe src src/svnrevision.h"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Debug/zdoom.tlb"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="src\win32;src\sound;src;zlib;src\g_shared;src\g_doom;src\g_raven;src\g_heretic;src\g_hexen;src\g_strife;jpeg-6b;snes_spc\snes_spc"
|
||||||
|
PreprocessorDefinitions="WIN32,_DEBUG,_WIN32,_WINDOWS,USEASM,_CRTDBG_MAP_ALLOC,HAVE_STRUPR,HAVE_FILELENGTH"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
ForceConformanceInForLoopScope="true"
|
||||||
|
PrecompiledHeaderFile=""
|
||||||
|
AssemblerOutput="4"
|
||||||
|
AssemblerListingLocation=".\Debug/"
|
||||||
|
ObjectFile=".\Debug/"
|
||||||
|
ProgramDataBaseFileName=".\Debug/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
Detect64BitPortabilityProblems="true"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
CompileAs="0"
|
||||||
|
DisableSpecificWarnings="4996"
|
||||||
|
ForcedIncludeFiles=""
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1033"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalOptions="/MACHINE:I386"
|
||||||
|
AdditionalDependencies="gdi32.lib user32.lib comctl32.lib shell32.lib advapi32.lib comdlg32.lib ole32.lib dxguid.lib dsound.lib dinput8.lib strmiids.lib wsock32.lib winmm.lib fmodex_vc.lib setupapi.lib ws2_32.lib"
|
||||||
|
OutputFile="../zdoomd.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
AdditionalLibraryDirectories=""
|
||||||
|
IgnoreDefaultLibraryNames="libcmt;msvcrtd;msvcrt"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile=".\Debug/zdoomd.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
StackReserveSize="0"
|
||||||
|
TerminalServerAware="2"
|
||||||
|
SetChecksum="false"
|
||||||
|
TargetMachine="0"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
@ -920,16 +920,6 @@
|
||||||
Outputs=""src/$(InputName).h""
|
Outputs=""src/$(InputName).h""
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Creating $(InputName).h from src/$(InputFileName)"
|
|
||||||
CommandLine="tools\re2c\re2c --no-generation-date -s -o "src/$(InputName).h" "src/$(InputFileName)"
"
|
|
||||||
Outputs=""src/$(InputName).h""
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
>
|
>
|
||||||
|
@ -940,6 +930,16 @@
|
||||||
Outputs=""src/$(InputName).h""
|
Outputs=""src/$(InputName).h""
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="Creating $(InputName).h from src/$(InputFileName)"
|
||||||
|
CommandLine="tools\re2c\re2c --no-generation-date -s -o "src/$(InputName).h" "src/$(InputFileName)"
"
|
||||||
|
Outputs=""src/$(InputName).h""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -1530,16 +1530,6 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Assembling $(InputPath)..."
|
|
||||||
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
>
|
>
|
||||||
|
@ -1550,6 +1540,16 @@
|
||||||
Outputs="$(IntDir)/$(InputName).obj"
|
Outputs="$(IntDir)/$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="Assembling $(InputPath)..."
|
||||||
|
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
||||||
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -1574,16 +1574,6 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Assembling $(InputPath)..."
|
|
||||||
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
>
|
>
|
||||||
|
@ -1594,6 +1584,16 @@
|
||||||
Outputs="$(IntDir)/$(InputName).obj"
|
Outputs="$(IntDir)/$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="Assembling $(InputPath)..."
|
||||||
|
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
||||||
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -1618,16 +1618,6 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Assembling $(InputPath)..."
|
|
||||||
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
>
|
>
|
||||||
|
@ -1638,6 +1628,16 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="Assembling $(InputPath)..."
|
||||||
|
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
||||||
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -1662,16 +1662,6 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Assembling $(InputPath)..."
|
|
||||||
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
>
|
>
|
||||||
|
@ -1682,6 +1672,16 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="Assembling $(InputPath)..."
|
||||||
|
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
||||||
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -1706,16 +1706,6 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
Description="Assembling $(InputPath)..."
|
|
||||||
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Release|x64"
|
||||||
>
|
>
|
||||||
|
@ -1726,6 +1716,16 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="Assembling $(InputPath)..."
|
||||||
|
CommandLine="nasm -g -o "$(IntDir)\$(InputName).obj" -f win32 "$(InputPath)"
$(OutDir)\fixrtext "$(IntDir)\$(InputName).obj"
"
|
||||||
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -1886,6 +1886,14 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
ExcludedFromBuild="true"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
>
|
>
|
||||||
|
@ -1896,14 +1904,6 @@
|
||||||
Outputs="$(IntDir)\$(InputName).obj"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
ExcludedFromBuild="true"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
|
@ -2753,6 +2753,14 @@
|
||||||
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
|
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|x64"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
>
|
>
|
||||||
|
@ -2762,14 +2770,6 @@
|
||||||
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
|
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|x64"
|
Name="Debug|x64"
|
||||||
>
|
>
|
||||||
|
@ -2924,7 +2924,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -2932,7 +2932,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -2960,7 +2960,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -2968,7 +2968,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -2997,7 +2997,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3006,7 +3006,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3036,7 +3036,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3044,7 +3044,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3073,7 +3073,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3082,7 +3082,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3113,7 +3113,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3122,7 +3122,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3152,7 +3152,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3160,7 +3160,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3189,7 +3189,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3198,7 +3198,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3229,7 +3229,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3238,7 +3238,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3269,7 +3269,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3278,7 +3278,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3308,7 +3308,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3316,7 +3316,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3344,7 +3344,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3352,7 +3352,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3380,7 +3380,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3388,7 +3388,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3416,7 +3416,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3424,7 +3424,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3454,7 +3454,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Debug|Win32"
|
Name="Release|x64"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3464,7 +3464,7 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
<FileConfiguration
|
<FileConfiguration
|
||||||
Name="Release|x64"
|
Name="Debug|Win32"
|
||||||
ExcludedFromBuild="true"
|
ExcludedFromBuild="true"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -3540,7 +3540,7 @@
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
Description="Generating xlat_parser.c and xlat_parser.h..."
|
Description="Generating xlat_parser.c and xlat_parser.h..."
|
||||||
CommandLine="tools\lemon\lemon.exe "$(InputPath)"
"
|
CommandLine="tools\lemon\lemon.exe "$(InputPath)"
"
|
||||||
Outputs="$(InputDir)xlat_parser.c;$(InputDir)xlat_parser.h"
|
Outputs="$(InputDir)xlat_parser.c:$(InputDir)xlat_parser.h"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
|
Loading…
Reference in a new issue