[Scummvm-cvs-logs] SF.net SVN: scummvm:[39786] scummvm/trunk/engines/cruise

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Wed Apr 1 12:43:24 CEST 2009


Revision: 39786
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39786&view=rev
Author:   dreammaster
Date:     2009-04-01 10:43:24 +0000 (Wed, 01 Apr 2009)

Log Message:
-----------
Laid the basics for music handling

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/cruise.cpp
    scummvm/trunk/engines/cruise/cruise.h
    scummvm/trunk/engines/cruise/cruise_main.cpp
    scummvm/trunk/engines/cruise/cruise_main.h
    scummvm/trunk/engines/cruise/function.cpp
    scummvm/trunk/engines/cruise/menu.cpp
    scummvm/trunk/engines/cruise/module.mk
    scummvm/trunk/engines/cruise/overlay.cpp
    scummvm/trunk/engines/cruise/saveload.cpp
    scummvm/trunk/engines/cruise/vars.cpp
    scummvm/trunk/engines/cruise/vars.h
    scummvm/trunk/engines/cruise/volume.cpp
    scummvm/trunk/engines/cruise/volume.h

Modified: scummvm/trunk/engines/cruise/cruise.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/cruise.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -68,6 +68,8 @@
 
 CruiseEngine::~CruiseEngine() {
 	delete _debugger;
+	delete _music;
+
 	freeSystem();
 }
 
@@ -108,6 +110,21 @@
 	// another bit of video init
 
 	readVolCnf();
+
+	// Setup mixer
+	_musicVolume = ConfMan.getInt("music_volume");
+	_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, ConfMan.getInt("sfx_volume"));
+	_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume"));
+
+	int midiDriver = MidiDriver::detectMusicDriver(MDT_MIDI | MDT_ADLIB | MDT_PREFER_MIDI);
+	_mt32 = ((midiDriver == MD_MT32) || ConfMan.getBool("native_mt32"));
+	_adlib = (midiDriver == MD_ADLIB);
+
+	_driver = MidiDriver::createMidi(midiDriver);
+	if (_mt32)
+		_driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+
+	_music = new MusicPlayer();
 }
 
 bool CruiseEngine::loadLanguageStrings() {

Modified: scummvm/trunk/engines/cruise/cruise.h
===================================================================
--- scummvm/trunk/engines/cruise/cruise.h	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/cruise.h	2009-04-01 10:43:24 UTC (rev 39786)
@@ -33,6 +33,7 @@
 
 #include "cruise/cruise_main.h"
 #include "cruise/debugger.h"
+#include "cruise/sound.h"
 
 namespace Cruise {
 
@@ -53,6 +54,10 @@
 private:
 	bool _preLoad;
 	Debugger *_debugger;
+	MidiDriver *_driver;
+	MusicPlayer *_music;
+	bool _mt32, _adlib;
+	int _musicVolume;
 	Common::StringList _langStrings;
 	CursorType _savedCursor;
 	uint32 lastTick, lastTickDebug;
@@ -78,6 +83,9 @@
 	uint32 getFeatures() const;
 	Common::Language getLanguage() const;
 	Common::Platform getPlatform() const;
+	MusicPlayer &music() { return *_music; }
+	bool mt32() const { return _mt32; }
+	bool adlib() const { return _adlib; }
 	virtual GUI::Debugger *getDebugger() { return _debugger; }
 	virtual void pauseEngineIntern(bool pause);
 	const char *langString(LangStringId langId) { return _langStrings[(int)langId].c_str(); }

Modified: scummvm/trunk/engines/cruise/cruise_main.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/cruise_main.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -43,7 +43,7 @@
 	drawSolidBox(64, 100, 256, 117, 0);
 }
 
-void loadPakedFileToMem(int fileIdx, uint8 *buffer) {
+void loadPackedFileToMem(int fileIdx, uint8 *buffer) {
 	changeCursor(CURSOR_DISK);
 
 	currentVolumeFile.seek(volumePtrToFileDescriptor[fileIdx].offset, SEEK_SET);
@@ -343,7 +343,7 @@
 	if (volumePtrToFileDescriptor[fileIdx].size + 2 != unpackedSize) {
 		uint8 *pakedBuffer = (uint8 *) mallocAndZero(volumePtrToFileDescriptor[fileIdx].size + 2);
 
-		loadPakedFileToMem(fileIdx, pakedBuffer);
+		loadPackedFileToMem(fileIdx, pakedBuffer);
 
 		uint32 realUnpackedSize = READ_BE_UINT32(pakedBuffer + volumePtrToFileDescriptor[fileIdx].size - 4);
 
@@ -353,7 +353,7 @@
 
 		free(pakedBuffer);
 	} else {
-		loadPakedFileToMem(fileIdx, unpackedBuffer);
+		loadPackedFileToMem(fileIdx, unpackedBuffer);
 	}
 
 	*ptr = unpackedBuffer;
@@ -1901,6 +1901,7 @@
 	void *ptr;
 
 	ptr = malloc(size);
+	assert(ptr);
 	memset(ptr, 0, size);
 	return ptr;
 }

Modified: scummvm/trunk/engines/cruise/cruise_main.h
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.h	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/cruise_main.h	2009-04-01 10:43:24 UTC (rev 39786)
@@ -104,7 +104,7 @@
 void printInfoBlackBox(const char *string);
 void waitForPlayerInput(void);
 int initCt(const char * ctpName);
-void loadPakedFileToMem(int fileIdx, uint8 * buffer);
+void loadPackedFileToMem(int fileIdx, uint8 * buffer);
 int getNumObjectsByClass(int scriptIdx, int param);
 void resetFileEntryRange(int param1, int param2);
 int getProcParam(int overlayIdx, int param2, const char * name);

Modified: scummvm/trunk/engines/cruise/function.cpp
===================================================================
--- scummvm/trunk/engines/cruise/function.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/function.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -26,6 +26,7 @@
 #include "cruise/cruise.h"
 #include "cruise/cruise_main.h"
 #include "cruise/cell.h"
+#include "cruise/sound.h"
 #include "cruise/staticres.h"
 #include "common/util.h"
 
@@ -732,11 +733,6 @@
 	return initCt((char*)popPtr());
 }
 
-int16 Op_LoadSong(void) {
-	popPtr();
-	return 0;
-}
-
 int16 Op_EndAnim(void) {
 	int param1 = popVar();
 	int param2 = popVar();
@@ -1207,12 +1203,6 @@
 	return 0;
 }
 
-int16 Op_StopSong(void) {
-	printf("Partial op 45 stop sound\n");
-
-	return 0;
-}
-
 int16 Op_BgName(void) {
 	char* bgName = (char*)popPtr();
 	int bgIdx = popVar();
@@ -1237,41 +1227,58 @@
 	return 0;
 }
 
-int16 Op_PlaySong(void) {
-	printf("PlaySong()\n");
+int16 Op_LoadSong(void) {
+	const char *ptr = (const char *)popPtr();
+	char buffer[33];
 
+	strcpy(buffer, ptr);
+	strupr(buffer);
+	_vm->music().loadSong(buffer);
+
+	changeCursor(CURSOR_NORMAL);
 	return 0;
 }
 
-void setVar49Value(int value) {
-	flagCt = value;
-}
+int16 Op_PlaySong(void) {
+	if (_vm->music().songLoaded() && !_vm->music().songPlayed())
+		_vm->music().startSong();
 
-int16 Op_CTOn(void) {
-	setVar49Value(1);
 	return 0;
 }
 
-int16 Op_CTOff(void) {
-	setVar49Value(0);
+int16 Op_StopSong(void) {
+	if (_vm->music().isPlaying())
+		_vm->music().stop();
+
 	return 0;
 }
 
 int16 Op_FadeSong(void) {
-	printf("FadeSong()\n");
+	_vm->music().fadeSong();
+	
 	return 0;
 }
 
 int16 Op_FreeSong(void) {
-	printf("FreeSong()\n");
-	//freeStuff1();
-	freeStuff2();
+	_vm->music().stop();
+	_vm->music().removeSong();
+	return 0;
+}
 
-	playMusic2 = 0;
-	playMusic = 0;
+void setVar49Value(int value) {
+	flagCt = value;
+}
+
+int16 Op_CTOn(void) {
+	setVar49Value(1);
 	return 0;
 }
 
+int16 Op_CTOff(void) {
+	setVar49Value(0);
+	return 0;
+}
+
 int16 Op_FreezeOverlay(void) {
 	//int var0;
 	//int var1;

Modified: scummvm/trunk/engines/cruise/menu.cpp
===================================================================
--- scummvm/trunk/engines/cruise/menu.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/menu.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -207,9 +207,7 @@
 
 	if (entrerMenuJoueur && displayOn) {
 		if (remdo) {
-			musicName[0] = 0;
-			playMusic2 = 0;
-			playMusic = 0;
+			_vm->music().removeSong();
 			freeStuff2();
 		}
 		/*

Modified: scummvm/trunk/engines/cruise/module.mk
===================================================================
--- scummvm/trunk/engines/cruise/module.mk	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/module.mk	2009-04-01 10:43:24 UTC (rev 39786)
@@ -26,6 +26,7 @@
 	polys.o \
 	saveload.o \
 	script.o \
+	sound.o \
 	stack.o \
 	staticres.o \
 	various.o \

Modified: scummvm/trunk/engines/cruise/overlay.cpp
===================================================================
--- scummvm/trunk/engines/cruise/overlay.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/overlay.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -117,13 +117,13 @@
 		    (char *)mallocAndZero(volumePtrToFileDescriptor[fileIdx].
 		                          size + 2);
 
-		loadPakedFileToMem(fileIdx, (uint8 *) pakedBuffer);
+		loadPackedFileToMem(fileIdx, (uint8 *) pakedBuffer);
 
 		delphineUnpack((uint8 *)unpackedBuffer, (const uint8 *)pakedBuffer, volumePtrToFileDescriptor[fileIdx].size);
 
 		free(pakedBuffer);
 	} else {
-		loadPakedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
+		loadPackedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
 	}
 
 	printf("OVL loading done...\n");
@@ -498,13 +498,13 @@
 			    mallocAndZero(volumePtrToFileDescriptor[fileIdx].
 			                  size + 2);
 
-			loadPakedFileToMem(fileIdx, (uint8 *) pakedBuffer);
+			loadPackedFileToMem(fileIdx, (uint8 *) pakedBuffer);
 
 			delphineUnpack((uint8 *) unpackedBuffer, (const uint8 *)pakedBuffer, volumePtrToFileDescriptor[fileIdx].size);
 
 			free(pakedBuffer);
 		} else {
-			loadPakedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
+			loadPackedFileToMem(fileIdx, (uint8 *) unpackedBuffer);
 		}
 
 		Common::MemoryReadStream s2(unpackedBuffer, unpackedSize);

Modified: scummvm/trunk/engines/cruise/saveload.cpp
===================================================================
--- scummvm/trunk/engines/cruise/saveload.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/saveload.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -24,6 +24,7 @@
  */
 
 #include "cruise/cruise_main.h"
+#include "cruise/cruise.h"
 
 #include "common/serializer.h"
 #include "common/savefile.h"
@@ -46,9 +47,6 @@
 }
 
 static void syncBasicInfo(Common::Serializer &s) {
-	s.syncAsSint16LE(songLoaded);
-	s.syncAsSint16LE(songPlayed);
-	s.syncAsSint16LE(songLoop);
 	s.syncAsSint16LE(activeMouse);
 	s.syncAsSint16LE(userEnabled);
 	s.syncAsSint16LE(dialogueEnabled);
@@ -63,8 +61,6 @@
 	s.syncAsSint16LE(displayOn);
 	s.syncAsSint16LE(isMessage);
 	s.syncAsSint16LE(fadeFlag);
-	s.syncAsSint16LE(playMusic);
-	s.syncAsSint16LE(playMusic2);
 	s.syncAsSint16LE(automaticMode);
 	s.syncAsSint16LE(titleColor);
 	s.syncAsSint16LE(itemColor);
@@ -558,11 +554,11 @@
 
 static void DoSync(Common::Serializer &s) {
 	syncBasicInfo(s);
+	_vm->music().doSync(s);
 
 	syncPalette(s, newPal);
 	syncPalette(s, workpal);
 
-	s.syncString(musicName, 21);
 	s.syncString(currentCtpName, 40);
 
 	syncBackgroundTable(s);
@@ -700,8 +696,6 @@
 
 	isMessage = 0;
 	fadeFlag = 0;
-	playMusic = 0;
-	playMusic2 = 0;
 	automaticMode = 0;
 
 	// video param (vga and mcga mode)

Modified: scummvm/trunk/engines/cruise/vars.cpp
===================================================================
--- scummvm/trunk/engines/cruise/vars.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/vars.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -51,7 +51,6 @@
 
 int16 numOfDisks;
 
-char musicName[21];
 char lastOverlay[15];
 char nextOverlay[15];
 
@@ -125,8 +124,6 @@
 int16 automoveInc;
 int16 automoveMax;
 int16 isMessage;
-int16 playMusic;
-int16 playMusic2;
 int16 automaticMode;
 int16 aniX;
 int16 aniY;

Modified: scummvm/trunk/engines/cruise/vars.h
===================================================================
--- scummvm/trunk/engines/cruise/vars.h	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/vars.h	2009-04-01 10:43:24 UTC (rev 39786)
@@ -154,7 +154,6 @@
 
 extern int16 numOfDisks;
 
-extern char musicName[21];
 extern char lastOverlay[15];
 extern char nextOverlay[15];
 
@@ -227,8 +226,6 @@
 extern int16 automoveInc;
 extern int16 automoveMax;
 extern int16 isMessage;
-extern int16 playMusic;
-extern int16 playMusic2;
 extern int16 automaticMode;
 extern int16 aniX;
 extern int16 aniY;

Modified: scummvm/trunk/engines/cruise/volume.cpp
===================================================================
--- scummvm/trunk/engines/cruise/volume.cpp	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/volume.cpp	2009-04-01 10:43:24 UTC (rev 39786)
@@ -189,22 +189,6 @@
 	return (foundDisk);
 }
 
-void strToUpper(char *fileName) {
-	char character;
-
-	do {
-		character = *fileName;
-
-		if (character >= 'a' && character <= 'z') {
-			character &= 0xDF;
-			*fileName = character;
-		}
-
-		fileName++;
-
-	} while (character);
-}
-
 void freeDisk(void) {
 	if (currentVolumeFile.isOpen()) {
 		currentVolumeFile.close();
@@ -266,10 +250,12 @@
 	changeCursor(currentCursor);
 }
 
-int16 findFileInDisks(char *fileName) {
+int16 findFileInDisks(const char *name) {
+	char fileName[50];
 	int disk;
 	int fileIdx;
 
+	strcpy(fileName, name);
 	strToUpper(fileName);
 
 	if (!volumeDataLoaded) {

Modified: scummvm/trunk/engines/cruise/volume.h
===================================================================
--- scummvm/trunk/engines/cruise/volume.h	2009-04-01 10:38:14 UTC (rev 39785)
+++ scummvm/trunk/engines/cruise/volume.h	2009-04-01 10:43:24 UTC (rev 39786)
@@ -30,13 +30,13 @@
 
 int16 readVolCnf(void);
 int closeCnf(void);
-int16 findFileInDisks(char * fileName);
+int16 findFileInDisks(const char *name);
 void freeDisk(void);
-int16 findFileInList(const char * fileName);
+int16 findFileInList(const char *fileName);
 
 ////////////////
 
-void strToUpper(char * fileName);
+#define strToUpper(FILENAME) strupr(FILENAME)
 void drawMsgString(const char * string);
 void askDisk(int16 discNumber);
 void setObjectPosition(int16 param1, int16 param2, int16 param3, int16 param4);


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