#include "cdaudio.h"
#include "sound.h"
-#define MAXTRACKS 256
-
// Prototypes of the system dependent functions
extern void CDAudio_SysEject (void);
extern void CDAudio_SysCloseDoor (void);
static qboolean enabled = false;
static float cdvolume;
typedef char filename_t[MAX_QPATH];
+#ifdef MAXTRACKS
static filename_t remap[MAXTRACKS];
+#endif
static unsigned char maxTrack;
static int faketrack = -1;
if (!cdValid)
{
if(complain)
- Con_Print ("No CD in player.\n");
+ Con_DPrint ("No CD in player.\n");
return false;
}
}
if (track > maxTrack)
{
if(complain)
- Con_Printf("CDAudio: Bad track number %u.\n", track);
+ Con_DPrintf("CDAudio: Bad track number %u.\n", track);
return false;
}
if (CDAudio_SysPlay(track) == -1)
return false;
- if(cdaudio.integer != 3 || developer.integer)
- Con_Printf ("CD track %u playing...\n", track);
+ if(cdaudio.integer != 3)
+ Con_DPrintf ("CD track %u playing...\n", track);
return true;
}
if(strspn(trackname, "0123456789") == strlen(trackname))
{
track = (unsigned char) atoi(trackname);
+#ifdef MAXTRACKS
if(track > 0 && track < MAXTRACKS)
if(*remap[track])
{
}
}
}
+#endif
}
if(strspn(trackname, "0123456789") == strlen(trackname))
track = (unsigned char) atoi(trackname);
if (track < 1)
{
- Con_Printf("CDAudio: Bad track number %u.\n", track);
+ Con_DPrintf("CDAudio: Bad track number %u.\n", track);
return;
}
}
}
else
{
- Con_Print ("No CD in player.\n");
+ Con_DPrint ("No CD in player.\n");
}
return;
}
S_SetChannelFlag (faketrack, CHANNELFLAG_LOCALSOUND, true); // not pausable
if(track >= 1)
{
- if(cdaudio.integer != 0 || developer.integer) // we don't need these messages if only fake tracks can be played anyway
- Con_Printf ("Fake CD track %u playing...\n", track);
+ if(cdaudio.integer != 0) // we don't need these messages if only fake tracks can be played anyway
+ Con_DPrintf ("Fake CD track %u playing...\n", track);
}
else
Con_DPrintf ("BGM track %s playing...\n", trackname);
CDAudio_Play_byName(buf, looping);
}
-float CDAudio_GetPosition ()
+float CDAudio_GetPosition (void)
{
if(faketrack != -1)
return S_GetChannelPosition(faketrack);
return;
else if(wasPlaying)
{
- CDAudio_Resume(); // needed by SDL - can't stop while paused there
+ CDAudio_Resume(); // needed by SDL - can't stop while paused there (causing pause/stop to fail after play, pause, stop, play otherwise)
if (cdPlaying && (CDAudio_SysStop() == -1))
return;
}
static void CD_f (void)
{
const char *command;
+#ifdef MAXTRACKS
int ret;
int n;
+#endif
- command = (Cmd_Argc() >= 2) ? Cmd_Argv (1) : "";
+ command = Cmd_Argv (1);
if (strcasecmp(command, "remap") != 0)
Host_StartVideo();
{
enabled = true;
CDAudio_Stop();
+#ifdef MAXTRACKS
for (n = 0; n < MAXTRACKS; n++)
*remap[n] = 0; // empty string, that is, unremapped
+#endif
CDAudio_GetAudioDiskInfo();
return;
}
if (strcasecmp(command, "rescan") == 0)
{
- CDAudio_Stop();
CDAudio_Shutdown();
CDAudio_Startup();
return;
if (strcasecmp(command, "remap") == 0)
{
+#ifdef MAXTRACKS
ret = Cmd_Argc() - 2;
if (ret <= 0)
{
}
for (n = 1; n <= ret; n++)
strlcpy(remap[n], Cmd_Argv (n+1), sizeof(*remap));
+#endif
return;
}
if (strcasecmp(command, "eject") == 0)
{
- if (cdPlaying && faketrack == -1)
+ if (faketrack == -1)
CDAudio_Stop();
CDAudio_Eject();
cdValid = false;
Con_Printf("CD commands:\n");
Con_Printf("cd on - enables CD audio system\n");
Con_Printf("cd off - stops and disables CD audio system\n");
- Con_Printf("cd reset - resets CD audio system (clears track remapping and re-reads disc information)");
+ Con_Printf("cd reset - resets CD audio system (clears track remapping and re-reads disc information)\n");
+ Con_Printf("cd rescan - rescans disks in drives (to use another disc)\n");
Con_Printf("cd remap <remap1> [remap2] [remap3] [...] - chooses (possibly emulated) CD tracks to play when a map asks for a particular track, this has many uses\n");
Con_Printf("cd close - closes CD tray\n");
Con_Printf("cd eject - stops playing music and opens CD tray to allow you to change disc\n");
int CDAudio_Init (void)
{
+#ifdef MAXTRACKS
int i;
+#endif
if (cls.state == ca_dedicated)
return -1;
CDAudio_SysInit();
+#ifdef MAXTRACKS
for (i = 0; i < MAXTRACKS; i++)
*remap[i] = 0;
+#endif
Cvar_RegisterVariable(&cdaudio);
Cvar_RegisterVariable(&cdaudioinitialized);