From 8e2d5ad56f5fe2faa3c3abd74e89607b7a4ad8e0 Mon Sep 17 00:00:00 2001 From: Chris Apers Date: Tue, 25 May 2004 12:57:53 +0000 Subject: Default (NULL) CD player svn-id: r13856 --- backends/PalmOS/Src/cd_default.cpp | 102 +++++++++++++++++++++++++++++++++++++ backends/PalmOS/Src/cd_default.h | 48 +++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 backends/PalmOS/Src/cd_default.cpp create mode 100644 backends/PalmOS/Src/cd_default.h (limited to 'backends') diff --git a/backends/PalmOS/Src/cd_default.cpp b/backends/PalmOS/Src/cd_default.cpp new file mode 100644 index 0000000000..f630850de3 --- /dev/null +++ b/backends/PalmOS/Src/cd_default.cpp @@ -0,0 +1,102 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001 Ludvig Strigeus + * Copyright (C) 2001-2004 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Header$ + * + */ +#include "stdafx.h" +#include "common/system.h" +#include "cd_default.h" + +DefaultCDPlayer::DefaultCDPlayer(OSystem *sys) { + _sys = sys; +} + +bool DefaultCDPlayer::init() { + _isInitialized = true; + return _isInitialized; +} + +void DefaultCDPlayer::release() { + // self delete + delete this; +} + +bool DefaultCDPlayer::poll() { + return (_defLoops != 0 && _sys->get_msecs() < _defTrackEndFrame); +} + +void DefaultCDPlayer::update() { + + // stop replay upon request of stop_cdrom() + if (_defStopTime != 0 && _sys->get_msecs() >= _defStopTime) { + _defLoops = 0; + _defStopTime = 0; + _defTrackEndFrame = 0; + return; + } + + // not fully played + if (_sys->get_msecs() < _defTrackEndFrame) + return; + + if (_defLoops == 0) + return; + + // loop again ? + if (_defLoops > 0) + _defLoops--; + + // loop if needed + if (_defLoops != 0) { + _defTrackEndFrame = _sys->get_msecs() + _defTrackLength; + } +} + +void DefaultCDPlayer::stop() { /* Stop CD Audio in 1/10th of a second */ + _defStopTime = _sys->get_msecs() + 100; + _defLoops = 0; + return; +} + +void DefaultCDPlayer::play(int track, int num_loops, int start_frame, int duration) { + if (!num_loops && !start_frame) + return; + + UInt32 fullLength; + + _defLoops = num_loops; + start_frame = TO_MSECS(start_frame); + duration = TO_MSECS(duration); + + // frame in milli-seconds + _defStopTime = 0; + fullLength = start_frame + gVars->CD.defaultTrackLength * 1000; + + if (duration > 0) { + _defTrackLength = duration; + } else if (start_frame > 0) { + _defTrackLength = fullLength; + _defTrackLength -= start_frame; + } else { + _defTrackLength = fullLength; + } + + // try to play the track + _defTrackEndFrame = _sys->get_msecs() + _defTrackLength; +} diff --git a/backends/PalmOS/Src/cd_default.h b/backends/PalmOS/Src/cd_default.h new file mode 100644 index 0000000000..f6685de3f7 --- /dev/null +++ b/backends/PalmOS/Src/cd_default.h @@ -0,0 +1,48 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001 Ludvig Strigeus + * Copyright (C) 2001-2004 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Header$ + * + */ + + #ifndef CD_DEFAULT_H + #define CD_DEFAULT_H + + #include "cdaudio.h" + + class DefaultCDPlayer : public CDAudio { + public: + DefaultCDPlayer(OSystem *sys); + + bool init(); + void release(); + + bool poll(); + void update(); + void play(int track, int num_loops, int start_frame, int duration); + void stop(); + + private: + OSystem *_sys; + + // cdrom + UInt16 _defLoops; + UInt32 _defStopTime, _defTrackEndFrame, _defTrackLength; + }; + + #endif \ No newline at end of file -- cgit v1.2.3