mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-11-10 07:12:03 +00:00
GME cleanup and fixes
Just some stuff backported from SRB2 2.2, well mostly get_zlib_error function to reduce code duplication Return false if it fails to load the VGZ lump Reduce redundant calls to gme_set_equalizer Fix sometimes loading a VGZ crashing the game
This commit is contained in:
parent
a335d6b583
commit
e3f07b33bb
1 changed files with 29 additions and 94 deletions
|
@ -110,6 +110,27 @@ static void var_cleanup(void)
|
||||||
internal_volume = 100;
|
internal_volume = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* get_zlib_error(int zErr)
|
||||||
|
{
|
||||||
|
switch (zErr)
|
||||||
|
{
|
||||||
|
case Z_ERRNO:
|
||||||
|
return "Z_ERRNO";
|
||||||
|
case Z_STREAM_ERROR:
|
||||||
|
return "Z_STREAM_ERROR";
|
||||||
|
case Z_DATA_ERROR:
|
||||||
|
return "Z_DATA_ERROR";
|
||||||
|
case Z_MEM_ERROR:
|
||||||
|
return "Z_MEM_ERROR";
|
||||||
|
case Z_BUF_ERROR:
|
||||||
|
return "Z_BUF_ERROR";
|
||||||
|
case Z_VERSION_ERROR:
|
||||||
|
return "Z_VERSION_ERROR";
|
||||||
|
default:
|
||||||
|
return "unknown error";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// ------------------------
|
/// ------------------------
|
||||||
/// Audio System
|
/// Audio System
|
||||||
/// ------------------------
|
/// ------------------------
|
||||||
|
@ -371,51 +392,11 @@ void *I_GetSfx(sfxinfo_t *sfx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
CONS_Alert(CONS_ERROR,"Encountered %s when running inflate: %s\n", get_zlib_error(zErr), stream.msg);
|
||||||
const char *errorType;
|
|
||||||
switch (zErr)
|
|
||||||
{
|
|
||||||
case Z_ERRNO:
|
|
||||||
errorType = "Z_ERRNO"; break;
|
|
||||||
case Z_STREAM_ERROR:
|
|
||||||
errorType = "Z_STREAM_ERROR"; break;
|
|
||||||
case Z_DATA_ERROR:
|
|
||||||
errorType = "Z_DATA_ERROR"; break;
|
|
||||||
case Z_MEM_ERROR:
|
|
||||||
errorType = "Z_MEM_ERROR"; break;
|
|
||||||
case Z_BUF_ERROR:
|
|
||||||
errorType = "Z_BUF_ERROR"; break;
|
|
||||||
case Z_VERSION_ERROR:
|
|
||||||
errorType = "Z_VERSION_ERROR"; break;
|
|
||||||
default:
|
|
||||||
errorType = "unknown error";
|
|
||||||
}
|
|
||||||
CONS_Alert(CONS_ERROR,"Encountered %s when running inflate: %s\n", errorType, stream.msg);
|
|
||||||
}
|
|
||||||
(void)inflateEnd(&stream);
|
(void)inflateEnd(&stream);
|
||||||
}
|
}
|
||||||
else // Hold up, zlib's got a problem
|
else // Hold up, zlib's got a problem
|
||||||
{
|
CONS_Alert(CONS_ERROR,"Encountered %s when running inflateInit: %s\n", get_zlib_error(zErr), stream.msg);
|
||||||
const char *errorType;
|
|
||||||
switch (zErr)
|
|
||||||
{
|
|
||||||
case Z_ERRNO:
|
|
||||||
errorType = "Z_ERRNO"; break;
|
|
||||||
case Z_STREAM_ERROR:
|
|
||||||
errorType = "Z_STREAM_ERROR"; break;
|
|
||||||
case Z_DATA_ERROR:
|
|
||||||
errorType = "Z_DATA_ERROR"; break;
|
|
||||||
case Z_MEM_ERROR:
|
|
||||||
errorType = "Z_MEM_ERROR"; break;
|
|
||||||
case Z_BUF_ERROR:
|
|
||||||
errorType = "Z_BUF_ERROR"; break;
|
|
||||||
case Z_VERSION_ERROR:
|
|
||||||
errorType = "Z_VERSION_ERROR"; break;
|
|
||||||
default:
|
|
||||||
errorType = "unknown error";
|
|
||||||
}
|
|
||||||
CONS_Alert(CONS_ERROR,"Encountered %s when running inflateInit: %s\n", errorType, stream.msg);
|
|
||||||
}
|
|
||||||
Z_Free(inflatedData); // GME didn't open jack, but don't let that stop us from freeing this up
|
Z_Free(inflatedData); // GME didn't open jack, but don't let that stop us from freeing this up
|
||||||
#else
|
#else
|
||||||
return NULL; // No zlib support
|
return NULL; // No zlib support
|
||||||
|
@ -945,73 +926,25 @@ boolean I_LoadSong(char *data, size_t len)
|
||||||
// Run GME on new data
|
// Run GME on new data
|
||||||
if (!gme_open_data(inflatedData, inflatedLen, &gme, 44100))
|
if (!gme_open_data(inflatedData, inflatedLen, &gme, 44100))
|
||||||
{
|
{
|
||||||
gme_equalizer_t eq = {GME_TREBLE, GME_BASS, 0,0,0,0,0,0,0,0};
|
|
||||||
gme_start_track(gme, 0);
|
|
||||||
current_track = 0;
|
|
||||||
gme_set_equalizer(gme, &eq);
|
|
||||||
Mix_HookMusic(mix_gme, gme);
|
|
||||||
Z_Free(inflatedData); // GME supposedly makes a copy for itself, so we don't need this lying around
|
Z_Free(inflatedData); // GME supposedly makes a copy for itself, so we don't need this lying around
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
CONS_Alert(CONS_ERROR, "Encountered %s when running inflate: %s\n", get_zlib_error(zErr), stream.msg);
|
||||||
const char *errorType;
|
|
||||||
switch (zErr)
|
|
||||||
{
|
|
||||||
case Z_ERRNO:
|
|
||||||
errorType = "Z_ERRNO"; break;
|
|
||||||
case Z_STREAM_ERROR:
|
|
||||||
errorType = "Z_STREAM_ERROR"; break;
|
|
||||||
case Z_DATA_ERROR:
|
|
||||||
errorType = "Z_DATA_ERROR"; break;
|
|
||||||
case Z_MEM_ERROR:
|
|
||||||
errorType = "Z_MEM_ERROR"; break;
|
|
||||||
case Z_BUF_ERROR:
|
|
||||||
errorType = "Z_BUF_ERROR"; break;
|
|
||||||
case Z_VERSION_ERROR:
|
|
||||||
errorType = "Z_VERSION_ERROR"; break;
|
|
||||||
default:
|
|
||||||
errorType = "unknown error";
|
|
||||||
}
|
|
||||||
CONS_Alert(CONS_ERROR,"Encountered %s when running inflate: %s\n", errorType, stream.msg);
|
|
||||||
}
|
|
||||||
(void)inflateEnd(&stream);
|
(void)inflateEnd(&stream);
|
||||||
}
|
}
|
||||||
else // Hold up, zlib's got a problem
|
else // Hold up, zlib's got a problem
|
||||||
{
|
CONS_Alert(CONS_ERROR, "Encountered %s when running inflateInit: %s\n", get_zlib_error(zErr), stream.msg);
|
||||||
const char *errorType;
|
|
||||||
switch (zErr)
|
|
||||||
{
|
|
||||||
case Z_ERRNO:
|
|
||||||
errorType = "Z_ERRNO"; break;
|
|
||||||
case Z_STREAM_ERROR:
|
|
||||||
errorType = "Z_STREAM_ERROR"; break;
|
|
||||||
case Z_DATA_ERROR:
|
|
||||||
errorType = "Z_DATA_ERROR"; break;
|
|
||||||
case Z_MEM_ERROR:
|
|
||||||
errorType = "Z_MEM_ERROR"; break;
|
|
||||||
case Z_BUF_ERROR:
|
|
||||||
errorType = "Z_BUF_ERROR"; break;
|
|
||||||
case Z_VERSION_ERROR:
|
|
||||||
errorType = "Z_VERSION_ERROR"; break;
|
|
||||||
default:
|
|
||||||
errorType = "unknown error";
|
|
||||||
}
|
|
||||||
CONS_Alert(CONS_ERROR,"Encountered %s when running inflateInit: %s\n", errorType, stream.msg);
|
|
||||||
}
|
|
||||||
Z_Free(inflatedData); // GME didn't open jack, but don't let that stop us from freeing this up
|
Z_Free(inflatedData); // GME didn't open jack, but don't let that stop us from freeing this up
|
||||||
|
return false;
|
||||||
#else
|
#else
|
||||||
CONS_Alert(CONS_ERROR,"Cannot decompress VGZ; no zlib support\n");
|
CONS_Alert(CONS_ERROR,"Cannot decompress VGZ; no zlib support\n");
|
||||||
return true;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (!gme_open_data(data, len, &gme, 44100))
|
else if (!gme_open_data(data, len, &gme, 44100))
|
||||||
{
|
|
||||||
gme_equalizer_t eq = {GME_TREBLE, GME_BASS, 0,0,0,0,0,0,0,0};
|
|
||||||
gme_set_equalizer(gme, &eq);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rw = SDL_RWFromMem(data, len);
|
rw = SDL_RWFromMem(data, len);
|
||||||
|
@ -1082,6 +1015,8 @@ boolean I_PlaySong(boolean looping)
|
||||||
#ifdef HAVE_LIBGME
|
#ifdef HAVE_LIBGME
|
||||||
if (gme)
|
if (gme)
|
||||||
{
|
{
|
||||||
|
gme_equalizer_t eq = {GME_TREBLE, GME_BASS, 0,0,0,0,0,0,0,0};
|
||||||
|
gme_set_equalizer(gme, &eq);
|
||||||
gme_start_track(gme, 0);
|
gme_start_track(gme, 0);
|
||||||
current_track = 0;
|
current_track = 0;
|
||||||
Mix_HookMusic(mix_gme, gme);
|
Mix_HookMusic(mix_gme, gme);
|
||||||
|
|
Loading…
Reference in a new issue