mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-24 04:51:19 +00:00
Raise SNDSEQ limit to 4096 sequences
This commit is contained in:
parent
3bd365f934
commit
10c833f37e
3 changed files with 22 additions and 17 deletions
|
@ -36,6 +36,7 @@
|
||||||
#include "g_levellocals.h"
|
#include "g_levellocals.h"
|
||||||
#include "actorinlines.h"
|
#include "actorinlines.h"
|
||||||
#include "v_text.h"
|
#include "v_text.h"
|
||||||
|
#include "s_sndseq.h"
|
||||||
|
|
||||||
#include "maploader/maploader.h"
|
#include "maploader/maploader.h"
|
||||||
|
|
||||||
|
@ -184,7 +185,7 @@ void MapLoader::SpawnPolyobj (int index, int tag, int type)
|
||||||
po->bHurtOnTouch = (type == SMT_PolySpawnHurt);
|
po->bHurtOnTouch = (type == SMT_PolySpawnHurt);
|
||||||
po->tag = tag;
|
po->tag = tag;
|
||||||
po->seqType = sd->linedef->args[2];
|
po->seqType = sd->linedef->args[2];
|
||||||
if (po->seqType < 0 || po->seqType > 63)
|
if (po->seqType < 0 || po->seqType > (MAX_SNDSEQS - 1))
|
||||||
{
|
{
|
||||||
po->seqType = 0;
|
po->seqType = 0;
|
||||||
}
|
}
|
||||||
|
@ -414,4 +415,3 @@ void MapLoader::PO_Init (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,10 +48,13 @@
|
||||||
#define GetData(a) (int32_t(a) >> 8 )
|
#define GetData(a) (int32_t(a) >> 8 )
|
||||||
#define GetFloatData(a) float((int32_t(a) >> 8 )/65536.f)
|
#define GetFloatData(a) float((int32_t(a) >> 8 )/65536.f)
|
||||||
#define MakeCommand(a,b) ((a) | ((b) << 8))
|
#define MakeCommand(a,b) ((a) | ((b) << 8))
|
||||||
#define HexenPlatSeq(a) (a)
|
#define HexenPlatSeqStart (0)
|
||||||
#define HexenDoorSeq(a) ((a) | 0x40)
|
#define HexenDoorSeqStart (MAX_SNDSEQS)
|
||||||
#define HexenEnvSeq(a) ((a) | 0x80)
|
#define HexenEnvSeqStart (MAX_SNDSEQS << 1)
|
||||||
#define HexenLastSeq (0xff)
|
#define HexenPlatSeq(a) ((a) | (HexenPlatSeqStart))
|
||||||
|
#define HexenDoorSeq(a) ((a) | (HexenDoorSeqStart))
|
||||||
|
#define HexenEnvSeq(a) ((a) | (HexenEnvSeqStart))
|
||||||
|
#define HexenLastSeq ((MAX_SNDSEQS << 2) - 1)
|
||||||
|
|
||||||
// TYPES -------------------------------------------------------------------
|
// TYPES -------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -106,7 +109,7 @@ typedef enum
|
||||||
struct hexenseq_t
|
struct hexenseq_t
|
||||||
{
|
{
|
||||||
ENamedName Name;
|
ENamedName Name;
|
||||||
uint8_t Seqs[4];
|
uint16_t Seqs[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
class DSeqActorNode : public DSeqNode
|
class DSeqActorNode : public DSeqNode
|
||||||
|
@ -282,7 +285,7 @@ static const hexenseq_t HexenSequences[] = {
|
||||||
{ NAME_None, {0} }
|
{ NAME_None, {0} }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int SeqTrans[64*3];
|
static int SeqTrans[MAX_SNDSEQS*3];
|
||||||
|
|
||||||
static FRandom pr_sndseq ("SndSeq");
|
static FRandom pr_sndseq ("SndSeq");
|
||||||
|
|
||||||
|
@ -491,7 +494,7 @@ 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) & (MAX_SNDSEQS - 1)) + type * MAX_SNDSEQS] = seq;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sc.UnGet();
|
sc.UnGet();
|
||||||
|
@ -521,16 +524,16 @@ static void AssignHexenTranslations (void)
|
||||||
{
|
{
|
||||||
int trans;
|
int trans;
|
||||||
|
|
||||||
if (HexenSequences[i].Seqs[j] & 0x40)
|
if (HexenSequences[i].Seqs[j] & HexenDoorSeqStart)
|
||||||
{
|
{
|
||||||
trans = 64 * SEQ_DOOR;
|
trans = MAX_SNDSEQS * SEQ_DOOR;
|
||||||
}
|
}
|
||||||
else if (HexenSequences[i].Seqs[j] & 0x80)
|
else if (HexenSequences[i].Seqs[j] & HexenEnvSeqStart)
|
||||||
trans = 64 * SEQ_ENVIRONMENT;
|
trans = MAX_SNDSEQS * SEQ_ENVIRONMENT;
|
||||||
else
|
else
|
||||||
trans = 64 * SEQ_PLATFORM;
|
trans = MAX_SNDSEQS * SEQ_PLATFORM;
|
||||||
|
|
||||||
SeqTrans[trans + (HexenSequences[i].Seqs[j] & 0x3f)] = seq;
|
SeqTrans[trans + (HexenSequences[i].Seqs[j] & (MAX_SNDSEQS - 1))] = seq;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -860,9 +863,9 @@ static bool TwiddleSeqNum (int &sequence, seqtype_t type)
|
||||||
{
|
{
|
||||||
// [GrafZahl] Needs some range checking:
|
// [GrafZahl] Needs some range checking:
|
||||||
// Sector_ChangeSound doesn't do it so this makes invalid sequences play nothing.
|
// Sector_ChangeSound doesn't do it so this makes invalid sequences play nothing.
|
||||||
if (sequence >= 0 && sequence < 64)
|
if (sequence >= 0 && sequence < MAX_SNDSEQS)
|
||||||
{
|
{
|
||||||
sequence = SeqTrans[sequence + type * 64];
|
sequence = SeqTrans[sequence + type * MAX_SNDSEQS];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
#include "dobject.h"
|
#include "dobject.h"
|
||||||
#include "s_sound.h"
|
#include "s_sound.h"
|
||||||
|
|
||||||
|
#define MAX_SNDSEQS (4096)
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
// Sound channel aliases for sound sequences.
|
// Sound channel aliases for sound sequences.
|
||||||
|
|
Loading…
Reference in a new issue