[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