mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-23 20:17:58 -04:00
add parallel same-sound limit from DSDA-Doom (#796)
* add parallel same-sound limit from DSDA-Doom Fixes #546 * remove redundant declaration * rearrange menu item into General menu
This commit is contained in:
parent
6fcb0fe888
commit
d7849c8fa7
@ -3710,7 +3710,6 @@ enum {
|
|||||||
// [FG] uncapped rendering frame rate
|
// [FG] uncapped rendering frame rate
|
||||||
general_uncapped,
|
general_uncapped,
|
||||||
general_vsync,
|
general_vsync,
|
||||||
general_stub1,
|
|
||||||
general_trans,
|
general_trans,
|
||||||
general_transpct,
|
general_transpct,
|
||||||
general_gamma,
|
general_gamma,
|
||||||
@ -3718,6 +3717,7 @@ enum {
|
|||||||
|
|
||||||
general_title2,
|
general_title2,
|
||||||
general_sndchan,
|
general_sndchan,
|
||||||
|
general_parallelsfx,
|
||||||
general_pitch,
|
general_pitch,
|
||||||
// [FG] play sounds in full length
|
// [FG] play sounds in full length
|
||||||
general_fullsnd,
|
general_fullsnd,
|
||||||
@ -3789,8 +3789,6 @@ setup_menu_t gen_settings1[] = { // General Settings screen1
|
|||||||
{"Vertical Sync", S_YESNO, m_null, M_X,
|
{"Vertical Sync", S_YESNO, m_null, M_X,
|
||||||
M_Y+ general_vsync*M_SPC, {"use_vsync"}, 0, I_ResetScreen},
|
M_Y+ general_vsync*M_SPC, {"use_vsync"}, 0, I_ResetScreen},
|
||||||
|
|
||||||
{"", S_SKIP, m_null, M_X, M_Y + general_stub1*M_SPC},
|
|
||||||
|
|
||||||
{"Enable predefined translucency", S_YESNO, m_null, M_X,
|
{"Enable predefined translucency", S_YESNO, m_null, M_X,
|
||||||
M_Y+ general_trans*M_SPC, {"translucency"}, 0, M_Trans},
|
M_Y+ general_trans*M_SPC, {"translucency"}, 0, M_Trans},
|
||||||
|
|
||||||
@ -3808,6 +3806,10 @@ setup_menu_t gen_settings1[] = { // General Settings screen1
|
|||||||
{"Number of Sound Channels", S_NUM|S_PRGWARN, m_null, M_X,
|
{"Number of Sound Channels", S_NUM|S_PRGWARN, m_null, M_X,
|
||||||
M_Y + general_sndchan*M_SPC, {"snd_channels"}},
|
M_Y + general_sndchan*M_SPC, {"snd_channels"}},
|
||||||
|
|
||||||
|
// [FG] parallel same-sound limit from DSDA-Doom
|
||||||
|
{"Parallel Same-Sound Limit", S_YESNO, m_null, M_X,
|
||||||
|
M_Y + general_parallelsfx*M_SPC, {"parallel_sfx"}},
|
||||||
|
|
||||||
{"Enable v1.1 Pitch Effects", S_YESNO, m_null, M_X,
|
{"Enable v1.1 Pitch Effects", S_YESNO, m_null, M_X,
|
||||||
M_Y + general_pitch*M_SPC, {"pitched_sounds"}},
|
M_Y + general_pitch*M_SPC, {"pitched_sounds"}},
|
||||||
|
|
||||||
|
24
src/m_misc.c
24
src/m_misc.c
@ -1493,7 +1493,7 @@ default_t defaults[] = {
|
|||||||
{ // killough
|
{ // killough
|
||||||
"snd_channels",
|
"snd_channels",
|
||||||
(config_t *) &default_numChannels, NULL,
|
(config_t *) &default_numChannels, NULL,
|
||||||
{MAX_CHANNELS}, {1, MAX_CHANNELS}, 0, ss_gen, wad_no,
|
{16}, {1, MAX_CHANNELS}, 0, ss_gen, wad_no,
|
||||||
"number of sound effects handled simultaneously"
|
"number of sound effects handled simultaneously"
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -2253,6 +2253,28 @@ default_t defaults[] = {
|
|||||||
"1 to play sounds in full length"
|
"1 to play sounds in full length"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// [FG] parallel same-sound limit
|
||||||
|
{
|
||||||
|
"parallel_sfx",
|
||||||
|
(config_t *) ¶llel_sfx, NULL,
|
||||||
|
{0}, {0, 1}, number, ss_gen, wad_no,
|
||||||
|
"1 to enable parallel same-sound limit"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"parallel_sfx_limit",
|
||||||
|
(config_t *) ¶llel_sfx_limit, NULL,
|
||||||
|
{2}, {0, 32}, number, ss_none, wad_no,
|
||||||
|
"parallel same-sound limit"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"parallel_sfx_window",
|
||||||
|
(config_t *) ¶llel_sfx_window, NULL,
|
||||||
|
{4}, {1, 32}, number, ss_none, wad_no,
|
||||||
|
"parallel same-sound limit window"
|
||||||
|
},
|
||||||
|
|
||||||
// [FG] music backend
|
// [FG] music backend
|
||||||
{
|
{
|
||||||
"midi_player",
|
"midi_player",
|
||||||
|
@ -276,6 +276,27 @@ static int S_getChannel(const mobj_t *origin, sfxinfo_t *sfxinfo,
|
|||||||
return cnum;
|
return cnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [FG] parallel same-sound limit from DSDA-Doom
|
||||||
|
|
||||||
|
boolean parallel_sfx;
|
||||||
|
int parallel_sfx_limit;
|
||||||
|
int parallel_sfx_window;
|
||||||
|
|
||||||
|
static boolean BlockSFX(sfxinfo_t *sfx)
|
||||||
|
{
|
||||||
|
if (!parallel_sfx)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (gametic - sfx->parallel_tic >= parallel_sfx_window)
|
||||||
|
{
|
||||||
|
sfx->parallel_tic = gametic;
|
||||||
|
sfx->parallel_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
++sfx->parallel_count;
|
||||||
|
|
||||||
|
return sfx->parallel_count > parallel_sfx_limit;
|
||||||
|
}
|
||||||
|
|
||||||
void S_StartSound(const mobj_t *origin, int sfx_id)
|
void S_StartSound(const mobj_t *origin, int sfx_id)
|
||||||
{
|
{
|
||||||
@ -342,6 +363,10 @@ void S_StartSound(const mobj_t *origin, int sfx_id)
|
|||||||
sep = NORM_SEP;
|
sep = NORM_SEP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [FG] parallel same-sound limit from DSDA-Doom
|
||||||
|
if (BlockSFX(sfx))
|
||||||
|
return;
|
||||||
|
|
||||||
if(pitched_sounds)
|
if(pitched_sounds)
|
||||||
{
|
{
|
||||||
// hacks to vary the sfx pitches
|
// hacks to vary the sfx pitches
|
||||||
|
@ -78,8 +78,16 @@ typedef struct sfxinfo_struct {
|
|||||||
|
|
||||||
// haleyjd 04/23/08: additional caching data
|
// haleyjd 04/23/08: additional caching data
|
||||||
unsigned int alen; // length of converted sound pointed to by data
|
unsigned int alen; // length of converted sound pointed to by data
|
||||||
|
|
||||||
|
// [FG] parallel same-sound limit from DSDA-Doom
|
||||||
|
int parallel_tic;
|
||||||
|
int parallel_count;
|
||||||
} sfxinfo_t;
|
} sfxinfo_t;
|
||||||
|
|
||||||
|
extern boolean parallel_sfx;
|
||||||
|
extern int parallel_sfx_limit;
|
||||||
|
extern int parallel_sfx_window;
|
||||||
|
|
||||||
//
|
//
|
||||||
// MusicInfo struct.
|
// MusicInfo struct.
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user