void CDROM::startTrack(const char *trackName) { if (!_LICbuffer) return; byte *matchPtr = getTrackBuffer(trackName); if (!matchPtr) { warning("CDROM: Track \"%s\" not found", trackName); return; } strncpy0(_curTrack, trackName, 15); stopPlaying(); _curTrackBuffer = matchPtr; while (getTrackPos() >= 0) ; uint32 start = READ_LE_UINT32(matchPtr + 12); uint32 end = READ_LE_UINT32(matchPtr + 16); play(start, end); _startTime = g_system->getMillis(); _trackStop = _startTime + (end - start + 1 + 150) * 40 / 3; }
void CDROM::startTrack(const char *trackname) { byte *curPtr, *matchPtr; if (!_LICbuffer) return; debugC(1, DEBUG_MUSIC, "startTrack(%s)", trackname); matchPtr = 0; curPtr = _LICbuffer; for (int i = 0; i < _numTracks; i++) { if (!scumm_stricmp((char *)curPtr, trackname)) { matchPtr = curPtr; break; } curPtr += 22; } if (!matchPtr) { error("Track %s not found", trackname); return; } strcpy(_curTrack, trackname); stopPlaying(); while (getTrackPos() != -1); uint32 start, end; start = READ_LE_UINT32(matchPtr + 12); end = READ_LE_UINT32(matchPtr + 16); play(start, end); _startTime = _vm->_util->getTimeKey(); _trackStop = _startTime + (end - start + 1 + 150) * 40 / 3; }
void CDROM::stopPlaying() { stop(); while (getTrackPos() != -1) ; }