[Scummvm-cvs-logs] SF.net SVN: scummvm:[48962] scummvm/trunk/engines/teenagent

megath at users.sourceforge.net megath at users.sourceforge.net
Fri May 7 09:56:57 CEST 2010


Revision: 48962
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48962&view=rev
Author:   megath
Date:     2010-05-07 07:56:57 +0000 (Fri, 07 May 2010)

Log Message:
-----------
added voices pack/cd music support

Modified Paths:
--------------
    scummvm/trunk/engines/teenagent/console.cpp
    scummvm/trunk/engines/teenagent/console.h
    scummvm/trunk/engines/teenagent/resources.cpp
    scummvm/trunk/engines/teenagent/resources.h
    scummvm/trunk/engines/teenagent/teenagent.cpp

Modified: scummvm/trunk/engines/teenagent/console.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/console.cpp	2010-05-06 19:00:39 UTC (rev 48961)
+++ scummvm/trunk/engines/teenagent/console.cpp	2010-05-07 07:56:57 UTC (rev 48962)
@@ -30,7 +30,8 @@
 Console::Console(TeenAgentEngine *engine) : _engine(engine) {
 	DCmd_Register("enable_object",	WRAP_METHOD(Console, enableObject));
 	DCmd_Register("disable_object",	WRAP_METHOD(Console, enableObject));
-	DCmd_Register("set_ons",	WRAP_METHOD(Console, setOns));
+	DCmd_Register("set_ons",		WRAP_METHOD(Console, setOns));
+	DCmd_Register("set_music",		WRAP_METHOD(Console, setMusic));
 }
 
 bool Console::enableObject(int argc, const char **argv) {
@@ -91,7 +92,20 @@
 	}
 
 	_engine->setOns(index, value, scene_id);
+	return true;
+}
 
+bool Console::setMusic(int argc, const char **argv) {
+	if (argc < 2) {
+		DebugPrintf("usage: %s index(1-11)\n", argv[0]);
+		return true;
+	}
+	int index = atoi(argv[1]);
+	if (index <= 0 || index > 11) {
+		DebugPrintf("invalid value\n");
+		return true;
+	}
+	_engine->setMusic(index);
 	return true;
 }
 

Modified: scummvm/trunk/engines/teenagent/console.h
===================================================================
--- scummvm/trunk/engines/teenagent/console.h	2010-05-06 19:00:39 UTC (rev 48961)
+++ scummvm/trunk/engines/teenagent/console.h	2010-05-07 07:56:57 UTC (rev 48962)
@@ -38,6 +38,7 @@
 private:
 	bool enableObject(int argc, const char **argv);
 	bool setOns(int argc, const char **argv);
+	bool setMusic(int argc, const char **argv);
 
 	TeenAgentEngine *_engine;
 };

Modified: scummvm/trunk/engines/teenagent/resources.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/resources.cpp	2010-05-06 19:00:39 UTC (rev 48961)
+++ scummvm/trunk/engines/teenagent/resources.cpp	2010-05-07 07:56:57 UTC (rev 48962)
@@ -44,6 +44,7 @@
 	mmm.close();
 	sam_mmm.close();
 	sam_sam.close();
+	voices.close();
 }
 
 /*
@@ -95,8 +96,8 @@
 	mmm.open("mmm.res");
 	sam_mmm.open("sam_mmm.res");
 	sam_sam.open("sam_sam.res");
+	voices.open("voices.res");
 
-
 	return true;
 }
 

Modified: scummvm/trunk/engines/teenagent/resources.h
===================================================================
--- scummvm/trunk/engines/teenagent/resources.h	2010-05-06 19:00:39 UTC (rev 48961)
+++ scummvm/trunk/engines/teenagent/resources.h	2010-05-07 07:56:57 UTC (rev 48962)
@@ -54,9 +54,9 @@
 	 * TransientFilePack does not keep opened file descriptors and reopens it on each request.
 	 */
 #ifdef __PSP__
-	TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm;
+	TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices;
 #else
-	FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm;
+	FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices;
 #endif
 
 	Segment cseg, dseg, eseg;

Modified: scummvm/trunk/engines/teenagent/teenagent.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.cpp	2010-05-06 19:00:39 UTC (rev 48961)
+++ scummvm/trunk/engines/teenagent/teenagent.cpp	2010-05-07 07:56:57 UTC (rev 48962)
@@ -31,6 +31,7 @@
 #include "engines/advancedDetector.h"
 #include "engines/util.h"
 
+#include "sound/audiocd.h"
 #include "sound/mixer.h"
 #include "sound/decoders/raw.h"
 
@@ -470,8 +471,8 @@
 
 	syncSoundSettings();
 
-	music->load(1);
 	_mixer->playStream(Audio::Mixer::kMusicSoundType, &_musicHandle, music, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, false);
+	setMusic(1);
 	music->start();
 
 	int load_slot = Common::ConfigManager::instance().getInt("save_slot");
@@ -971,10 +972,22 @@
 
 void TeenAgentEngine::setMusic(byte id) {
 	debug(0, "starting music %u", id);
-	if (!music->load(id))
-		return;
-	*Resources::instance()->dseg.ptr(0xDB90) = id;
-	music->start();
+	Resources *res = Resources::instance();
+	
+	if (id != 1) //intro music
+		*res->dseg.ptr(0xDB90) = id;
+	
+	if (_gameDescription->flags & ADGF_CD) {
+		byte track2cd[] = {7, 2, 0, 9, 3, 6, 8, 10, 4, 5, 11};
+		if (id == 0 || id > 11 || track2cd[id - 1] == 0) {
+			debug(0, "no cd music for id %u", id);
+			return;
+		}
+		byte track = track2cd[id - 1];
+		debug(0, "playing cd track %u", track);
+		Audio::AudioCDManager::instance().play(track, -1, 0, 0);
+	} else if (music->load(id))
+		music->start();
 }
 
 bool TeenAgentEngine::hasFeature(EngineFeature f) const {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list