Add devmode music

Song: <NOTHING>

        Song:    DEMOZ
      Format:      OGG
      Volume:   50/100
      Loop A: 00:00.65
      Loop B: 01:06.00
     Elapsed: 01:09.00
This commit is contained in:
James R 2023-01-12 02:30:16 -08:00
parent 49c5c785bf
commit 4e51ad6c78
5 changed files with 63 additions and 4 deletions

View file

@ -564,7 +564,7 @@ typedef enum
DBG_DETAILED = 0x00000002,
DBG_PLAYER = 0x00000004,
DBG_RENDER = 0x00000008,
//DBG_NIGHTSBASIC = 0x00000010, // free
DBG_MUSIC = 0x00000010,
//DBG_NIGHTS = 0x00000020, // free
DBG_POLYOBJ = 0x00000040,
DBG_GAMELOGIC = 0x00000080,

View file

@ -690,6 +690,7 @@ struct debugFlagNames_s const debug_flag_names[] =
{"Lua", DBG_LUA},
{"RNG", DBG_RNG},
{"Randomizer", DBG_RNG}, // alt name
{"Music", DBG_MUSIC},
{NULL, 0}
};

View file

@ -1364,7 +1364,7 @@ int musicdef_volume;
//
// Find music def by 6 char name
//
static musicdef_t *S_FindMusicDef(const char *name)
musicdef_t *S_FindMusicDef(const char *name)
{
musicdef_t *def = musicdefstart;
@ -2461,8 +2461,6 @@ static inline void PrintMusicDefField(const char *label, const char *field)
static void PrintSongAuthors(const musicdef_t *def)
{
CONS_Printf("Volume: %d/100\n\n", def->volume);
PrintMusicDefField("Title: ", def->title);
PrintMusicDefField("Author: ", def->author);

View file

@ -202,6 +202,7 @@ extern int musicdef_volume;
void S_LoadMusicDefs(UINT16 wadnum);
void S_InitMusicDefs(void);
musicdef_t *S_FindMusicDef(const char *name);
void S_ShowMusicCredit(void);
//

View file

@ -357,6 +357,60 @@ static INT32 SCR(INT32 r)
// =========================================================================
// Devmode information
static void ST_pushDebugString(INT32 *height, const char *string)
{
V_DrawRightAlignedString(320, *height, V_MONOSPACE, string);
*height -= 8;
}
static void ST_pushDebugTimeMS(INT32 *height, const char *label, UINT32 ms)
{
ST_pushDebugString(height, va("%s%02d:%05.2f", label,
ms / 60000, ms % 60000 / 1000.f));
}
static void ST_drawMusicDebug(INT32 *height)
{
char mname[7];
UINT16 mflags; // unused
boolean looping;
const musicdef_t *def;
const char *format;
if (!S_MusicInfo(mname, &mflags, &looping))
{
ST_pushDebugString(height, "Song: <NOTHING>");
return;
}
def = S_FindMusicDef(mname);
format = S_MusicType();
ST_pushDebugTimeMS(height, " Elapsed: ", S_GetMusicPosition());
ST_pushDebugTimeMS(height, looping
? " Loop B: "
: "Duration: ", S_GetMusicLength());
if (looping)
{
ST_pushDebugTimeMS(height, " Loop A: ", S_GetMusicLoopPoint());
}
if (def)
{
ST_pushDebugString(height, va(" Volume: %4d/100", def->volume));
}
if (format)
{
ST_pushDebugString(height, va(" Format: %8s", S_MusicType()));
}
ST_pushDebugString(height, va(" Song: %8s", mname));
}
static void ST_drawDebugInfo(void)
{
INT32 height = 192;
@ -419,6 +473,11 @@ static void ST_drawDebugInfo(void)
height -= 32;
}
if (cht_debug & DBG_MUSIC)
{
ST_drawMusicDebug(&height);
}
if (cht_debug & DBG_MEMORY)
V_DrawRightAlignedString(320, height, V_MONOSPACE, va("Heap used: %7sKB", sizeu1(Z_TagsUsage(0, INT32_MAX)>>10)));
}