aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Comstedt2010-12-01 19:57:23 +0000
committerMarcus Comstedt2010-12-01 19:57:23 +0000
commit1ed5b5b353b476a66992d6849245ba8e129daaaa (patch)
treea7230ef538682bebea1b74a3d64790daa320e5a8
parentcb8ce9feac90dcd0c59b47af5002718b9b754ee2 (diff)
downloadscummvm-rg350-1ed5b5b353b476a66992d6849245ba8e129daaaa.tar.gz
scummvm-rg350-1ed5b5b353b476a66992d6849245ba8e129daaaa.tar.bz2
scummvm-rg350-1ed5b5b353b476a66992d6849245ba8e129daaaa.zip
DC: Adapted CDDA interface to the new standard.
svn-id: r54714
-rw-r--r--backends/platform/dc/dc.h36
-rw-r--r--backends/platform/dc/dcmain.cpp12
2 files changed, 28 insertions, 20 deletions
diff --git a/backends/platform/dc/dc.h b/backends/platform/dc/dc.h
index 057ab283cf..c31328f3f6 100644
--- a/backends/platform/dc/dc.h
+++ b/backends/platform/dc/dc.h
@@ -28,6 +28,7 @@
#include <graphics/colormasks.h>
#include <ronin/soundcommon.h>
#include "backends/timer/default/default-timer.h"
+#include "backends/audiocd/default/default-audiocd.h"
#include "backends/fs/fs-factory.h"
#include "sound/mixer_intern.h"
@@ -50,6 +51,24 @@ class DCHardware {
DCHardware() { dc_init_hardware(); }
};
+class DCCDManager : public DefaultAudioCDManager {
+ // Initialise the specified CD drive for audio playback.
+ bool openCD(int drive);
+
+ // Poll cdrom status
+ // Returns true if cd audio is playing
+ bool pollCD();
+
+ // Play cdrom audio track
+ void playCD(int track, int num_loops, int start_frame, int duration);
+
+ // Stop cdrom audio track
+ void stopCD();
+
+ // Update cdrom audio status
+ void updateCD();
+};
+
class OSystem_Dreamcast : private DCHardware, public BaseBackend, public FilesystemFactory {
public:
@@ -135,21 +154,7 @@ class OSystem_Dreamcast : private DCHardware, public BaseBackend, public Filesys
// Returns true if an event was retrieved.
bool pollEvent(Common::Event &event);
- // Initialise the specified CD drive for audio playback.
- bool openCD(int drive);
-
- // Poll cdrom status
- // Returns true if cd audio is playing
- bool pollCD();
-
- // Play cdrom audio track
- void playCD(int track, int num_loops, int start_frame, int duration);
-
- // Stop cdrom audio track
- void stopCD();
-
- // Update cdrom audio status
- void updateCD();
+ AudioCDManager *getAudioCDManager() { return _cdManager; }
// Quit
void quit();
@@ -194,6 +199,7 @@ class OSystem_Dreamcast : private DCHardware, public BaseBackend, public Filesys
Audio::MixerImpl *_mixer;
DefaultTimerManager *_timer;
SoftKeyboard _softkbd;
+ DCCDManager *_cdManager;
int _ms_cur_x, _ms_cur_y, _ms_cur_w, _ms_cur_h, _ms_old_x, _ms_old_y;
int _ms_hotspot_x, _ms_hotspot_y, _ms_visible, _devpoll, _last_screen_refresh;
diff --git a/backends/platform/dc/dcmain.cpp b/backends/platform/dc/dcmain.cpp
index 269f400cf5..22a5f6b767 100644
--- a/backends/platform/dc/dcmain.cpp
+++ b/backends/platform/dc/dcmain.cpp
@@ -61,6 +61,8 @@ void OSystem_Dreamcast::initBackend()
uint sampleRate = initSound();
_mixer = new Audio::MixerImpl(this, sampleRate);
_mixer->setReady(true);
+
+ _cdManager = new DCCDManager();
}
@@ -86,7 +88,7 @@ static bool find_track(int track, int &first_sec, int &last_sec)
return false;
}
-void OSystem_Dreamcast::playCD(int track, int num_loops, int start_frame, int duration)
+void DCCDManager::playCD(int track, int num_loops, int start_frame, int duration)
{
int first_sec, last_sec;
#if 1
@@ -103,23 +105,23 @@ void OSystem_Dreamcast::playCD(int track, int num_loops, int start_frame, int du
play_cdda_sectors(first_sec, last_sec, num_loops);
}
-void OSystem_Dreamcast::stopCD()
+void DCCDManager::stopCD()
{
stop_cdda();
}
-bool OSystem_Dreamcast::pollCD()
+bool DCCDManager::pollCD()
{
extern int getCdState();
return getCdState() == 3;
}
-void OSystem_Dreamcast::updateCD()
+void DCCDManager::updateCD()
{
// Dummy. The CD drive takes care of itself.
}
-bool OSystem_Dreamcast::openCD(int drive)
+bool DCCDManager::openCD(int drive)
{
// Dummy.
return true;