[Scummvm-cvs-logs] CVS: residual/imuse imuse.cpp,1.5,1.6 imuse.h,1.2,1.3 imuse_mcmp_mgr.cpp,1.2,1.3 imuse_mcmp_mgr.h,1.1,1.2 imuse_music.cpp,1.3,1.4 imuse_script.cpp,1.2,1.3 imuse_sndmgr.cpp,1.3,1.4 imuse_sndmgr.h,1.3,1.4 imuse_tables.cpp,1.6,1.7 imuse_track.cpp,1.3,1.4

Pawel Kolodziejski aquadran at users.sourceforge.net
Tue Dec 28 22:33:11 CET 2004


Update of /cvsroot/scummvm/residual/imuse
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3618/imuse

Modified Files:
	imuse.cpp imuse.h imuse_mcmp_mgr.cpp imuse_mcmp_mgr.h 
	imuse_music.cpp imuse_script.cpp imuse_sndmgr.cpp 
	imuse_sndmgr.h imuse_tables.cpp imuse_track.cpp 
Log Message:
imuse is now compilable

Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- imuse.cpp	28 Dec 2004 18:25:14 -0000	1.5
+++ imuse.cpp	29 Dec 2004 06:32:07 -0000	1.6
@@ -23,19 +23,28 @@
 #include "../mixer/mixer.h"
 #include "../mixer/audiostream.h"
 
+#include "imuse.h"
 #include "imuse_sndmgr.h"
 
+extern SoundMixer *g_mixer;
+
+Imuse *g_imuse;
+
 Imuse::Track::Track()
-	: soundName(NULL), used(false), stream(NULL) {
+	: used(false), stream(NULL) {
 }
 
 void Imuse::timerHandler(void *refCon) {
-	IMuseDigital *imuse = (Imuse *)refCon;
+	Imuse *imuse = (Imuse *)refCon;
 	imuse->callback();
 }
 
 extern void vimaInit(uint16 *destTable);
 extern uint16 imuseDestTable[5786];
+extern ImuseTable grimStateMusicTable[];
+extern ImuseTable grimSeqMusicTable[];
+extern ImuseTable grimDemoStateMusicTable[];
+extern ImuseTable grimDemoSeqMusicTable[];
 
 Imuse::Imuse(int fps) {
 	_mutex = createMutex();
@@ -70,7 +79,6 @@
 void Imuse::resetState() {
 	_curMusicState = 0;
 	_curMusicSeq = 0;
-	_curMusicCue = 0;
 	memset(_attributes, 0, sizeof(_attributes));
 }
 
@@ -112,7 +120,6 @@
 						}
 					}
 				}
-				debug(5, "Fade: sound(%s), Vol(%d)", track->soundName, track->vol / 1000);
 			}
 
 			int pan = (track->pan != 64) ? 2 * track->pan - 127 : 0;
@@ -190,23 +197,20 @@
 
 void Imuse::switchToNextRegion(Track *track) {
 	assert(track);
-	debug(5, "switchToNextRegion(track:%d)", track->trackId);
 
 	if (track->trackId >= MAX_IMUSE_TRACKS) {
 		track->toBeRemoved = true;
-		debug(5, "exit (fadetrack can't go next region) switchToNextRegion(trackId:%d)", track->trackId);
 		return;
 	}
 
-	int num_regions = _sound->getNumRegions(track->soundHandle);
+	int numRegions = _sound->getNumRegions(track->soundHandle);
 
-	if (++track->curRegion == num_regions) {
+	if (++track->curRegion == numRegions) {
 		track->toBeRemoved = true;
-		debug(5, "exit (end of regions) switchToNextRegion(track:%d)", track->trackId);
 		return;
 	}
 
-	ImuseDigiSndMgr::soundStruct *soundHandle = track->soundHandle;
+	ImuseSndMgr::SoundStruct *soundHandle = track->soundHandle;
 	int jumpId = _sound->getJumpIdByRegionAndHookId(soundHandle, track->curRegion, track->curHookId);
 	if (jumpId == -1)
 		jumpId = _sound->getJumpIdByRegionAndHookId(soundHandle, track->curRegion, 0);
@@ -222,11 +226,9 @@
 					Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
 					fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundHandle, fadeTrack->curRegion);
 					fadeTrack->regionOffset = 0;
-					debug(5, "switchToNextRegion-sound(%s) select %d region, curHookId: %d", fadeTrack->soundName, fadeTrack->curRegion, fadeTrack->curHookId);
 					fadeTrack->curHookId = 0;
 				}
 				track->curRegion = region;
-				debug(5, "switchToNextRegion-sound(%s) jump to %d region, curHookId: %d", track->soundName, track->curRegion, track->curHookId);
 				track->curHookId = 0;
 			}
 		} else {
@@ -234,14 +236,11 @@
 				Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
 				fadeTrack->dataOffset = _sound->getRegionOffset(fadeTrack->soundHandle, fadeTrack->curRegion);
 				fadeTrack->regionOffset = 0;
-				debug(5, "switchToNextRegion-sound(%s) select %d region, curHookId: %d", fadeTrack->soundName, fadeTrack->curRegion, fadeTrack->curHookId);
 			}
 			track->curRegion = region;
-			debug(5, "switchToNextRegion-sound(%s) jump to %d region, curHookId: %d", track->soundName, track->curRegion, track->curHookId);
 		}
 	}
 
-	debug(5, "switchToNextRegion-sound(%s) select %d region, curHookId: %d", track->soundName, track->curRegion, track->curHookId);
 	track->dataOffset = _sound->getRegionOffset(soundHandle, track->curRegion);
 	track->regionOffset = 0;
 }

Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- imuse.h	28 Dec 2004 18:25:14 -0000	1.2
+++ imuse.h	29 Dec 2004 06:32:07 -0000	1.3
@@ -21,15 +21,27 @@
 #include "../stdafx.h"
 #include "../bits.h"
 #include "../debug.h"
-#include "imuse.h"
-#include "imuse_sndmgr.h"
 
 #include "../mixer/mixer.h"
 #include "../mixer/audiostream.h"
 
+#include "imuse_sndmgr.h"
+#include "imuse_mcmp_mgr.h"
+
 #define MAX_IMUSE_TRACKS 8
 #define MAX_IMUSE_FADETRACKS 8
 
+struct ImuseTable {
+	byte opcode;
+	int16 soundId;
+	byte atribPos;
+	byte hookId;
+	int16 fadeOut60TicksDelay;
+	byte volume;
+	byte pan;
+	char filename[32];
+};
+
 class Imuse {
 private:
 
@@ -61,7 +73,7 @@
 		int32 mixerVol;
 		int32 mixerPan;
 
-		ImuseSndMgr::soundStruct *soundHandle;
+		ImuseSndMgr::SoundStruct *soundHandle;
 		PlayingSoundHandle handle;
 		AppendableAudioStream *stream;
 
@@ -100,7 +112,7 @@
 
 	void setMusicState(int stateId);
 	void setMusicSequence(int seqId);
-	void playMusic(const char *songName, const ImuseTable *table, int atribPos, bool sequence);
+	void playMusic(const ImuseTable *table, int atribPos, bool sequence);
 
 public:
 	Imuse(int fps);
@@ -130,19 +142,8 @@
 //	void parseScriptCmds(int cmd, int soundId, int sub_cmd, int d, int e, int f, int g, int h);
 	void refreshScripts();
 	void flushTracks();
-	int getSoundStatus(const char *soundName) const;
+	bool getSoundStatus(const char *soundName) const;
 	int32 getCurMusicPosInMs();
 };
 
-struct ImuseTable {
-	byte opcode;
-	int16 soundId;
-	byte atribPos;
-	byte hookId;
-	int16 fadeOut60TicksDelay;
-	byte volume;
-	byte pan;
-	char filename[32];
-};
-
 #endif

Index: imuse_mcmp_mgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_mcmp_mgr.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- imuse_mcmp_mgr.cpp	28 Dec 2004 18:25:14 -0000	1.2
+++ imuse_mcmp_mgr.cpp	29 Dec 2004 06:32:07 -0000	1.3
@@ -18,16 +18,12 @@
 #include "../stdafx.h"
 #include "../bits.h"
 #include "../debug.h"
-#include "../timer.h"
 #include "../resource.h"
 
-#include "../mixer/mixer.h"
-#include "../mixer/audiostream.h"
-
 #include "imuse_mcmp_mgr.h"
-#include "imuse_sndmgr.h"
 
 uint16 imuseDestTable[5786];
+void decompressVima(const byte *src, int16 *dest, int destLen, uint16 *destTable);
 
 McmpMgr::McmpMgr() {
 	_compTable = NULL;
@@ -48,7 +44,7 @@
 	_compInput = NULL;
 }
 
-bool McmpMgr::openSound(const char *filename, byte *resPtr, int &offsetData) {
+bool McmpMgr::openSound(const char *filename, byte **resPtr, int &offsetData) {
 	_outputSize = 0;
 	_lastBlock = -1;
 
@@ -61,46 +57,48 @@
 
 	uint32 tag;
 	fread(&tag, 1, 4, _file);
-	tag = MKID_BE32(tag);
+	tag = MKID_BE(tag);
 	if (tag != MKID_BE('MCMP')) {
 		error("McmpMgr::loadCompTable() Expected MCMP tag");
+		return false;
 	}
 
 	fread(&_numCompItems, 1, 2, _file);
-	_numCompItems = MKID_BE16(_numCompItems);
+	_numCompItems = MKID_BE(_numCompItems);
 	assert(_numCompItems > 0);
 
 	int offset = ftell(_file) + (_numCompItems * 9) + 8;
 	_numCompItems--;
 	_compTable = (CompTable *)malloc(sizeof(CompTable) * _numCompItems);
-	int32 header_size;
 	fseek(_file, 5, SEEK_CUR);
-	fread(_compTable[i].decompSize, 1, 4, _file);
+	fread(&_compTable[0].decompSize, 1, 4, _file);
 
 	int32 maxSize = 0;
 	int i;
 	for (i = 0; i < _numCompItems; i++) {
-		fread(_compTable[i].codec, 1, 1, _file);
-		fread(_compTable[i].decompSize, 1, 4, _file);
-		_compTable[i].decompSize = MKID_BE32(_compTable[i].decompSize);
-		fread(_compTable[i].compSize, 1, 4, _file);
-		_compTable[i].compSize = MKID_BE32(_compTable[i].compSize);
+		fread(&_compTable[i].codec, 1, 1, _file);
+		fread(&_compTable[i].decompSize, 1, 4, _file);
+		_compTable[i].decompSize = MKID_BE(_compTable[i].decompSize);
+		fread(&_compTable[i].compSize, 1, 4, _file);
+		_compTable[i].compSize = MKID_BE(_compTable[i].compSize);
 		_compTable[i].offset = offset;
 		offset += _compTable[i].compSize;
-		if (_compTable[i].size > maxSize)
+		if (_compTable[i].compSize > maxSize)
 			maxSize = _compTable[i].compSize;
 	}
 	int16 sizeCodecs;
 	fread(&sizeCodecs, 1, 2, _file);
-	sizeCodecs = MKID_BE16(sizeCodecs);
+	sizeCodecs = MKID_BE(sizeCodecs);
 	for (i = 0; i < _numCompItems; i++) {
 		_compTable[i].offset += sizeCodecs;
 	}
 	fseek(_file, sizeCodecs, SEEK_CUR);
 	_compInput = (byte *)malloc(maxSize);
-	fread(_compInput, 1, _compTable[0].decompSize);
+	fread(_compInput, 1, _compTable[0].decompSize, _file);
 	*resPtr = _compInput;
 	offsetData = _compTable[0].compSize;
+
+	return true;
 }
 
 int32 McmpMgr::decompressSample(int32 offset, int32 size, byte **comp_final) {
@@ -118,6 +116,7 @@
 
 	first_block = offset / 0x2000;
 	last_block = (offset + size - 1) / 0x2000;
+	skip = offset % 0x2000;
 
 	// Clip last_block by the total number of blocks (= "comp items")
 	if ((last_block >= _numCompItems) && (_numCompItems > 0))
@@ -127,12 +126,10 @@
 	*comp_final = (byte *)malloc(blocks_final_size);
 	final_size = 0;
 
-	skip = (offset + header_size) % 0x2000;
-
 	for (i = first_block; i <= last_block; i++) {
 		if (_lastBlock != i) {
-			_file.seek(_compTable[i].offset, SEEK_SET);
-			_file.read(_compInput, _compTable[i].compSize);
+			fseek(_file, _compTable[i].offset, SEEK_SET);
+			fread(_compInput, 1, _compTable[i].compSize, _file);
 			decompressVima(_compInput, (int16 *)_compOutput, _compTable[i].decompSize, imuseDestTable);
 			_outputSize = _compTable[i].decompSize;
 			if (_outputSize > 0x2000) {

Index: imuse_mcmp_mgr.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_mcmp_mgr.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- imuse_mcmp_mgr.h	28 Dec 2004 08:05:18 -0000	1.1
+++ imuse_mcmp_mgr.h	29 Dec 2004 06:32:07 -0000	1.2
@@ -48,17 +48,13 @@
 	int _outputSize;
 	int _lastBlock;
 
-	bool loadCompTable(int32 index);
-
 public:
 
 	McmpMgr();
 	~McmpMgr();
 
-	bool openFile(const char *filename);
-	int32 decompressSampleByName(const char *name, int32 offset, int32 size, byte **comp_final);
-	int32 decompressSampleByIndex(int32 index, int32 offset, int32 size, byte **comp_final, int header_size);
-	int32 decompressSampleByCurIndex(int32 offset, int32 size, byte **comp_final, int header_size);
+	bool openSound(const char *filename, byte **resPtr, int &offsetData);
+	int32 decompressSample(int32 offset, int32 size, byte **comp_final);
 };
 
 #endif

Index: imuse_music.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_music.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- imuse_music.cpp	28 Dec 2004 18:25:14 -0000	1.3
+++ imuse_music.cpp	29 Dec 2004 06:32:07 -0000	1.4
@@ -19,15 +19,16 @@
 #include "../bits.h"
 #include "../debug.h"
 
+#include "imuse.h"
+
 void Imuse::setMusicState(int stateId) {
 	int l, num = -1;
 
 	if (stateId == 0)
 		stateId = 1000;
 
-	for (l = 0; _stateMusicTable[l]->soundId != -1; l++) {
-		if (_stateMusicTable[l]->soundId == stateId) {
-			debug(5, "Set music state: %s", _stateMusicTable[l]->filename);
+	for (l = 0; _stateMusicTable[l].soundId != -1; l++) {
+		if (_stateMusicTable[l].soundId == stateId) {
 			num = l;
 			break;
 		}
@@ -38,7 +39,7 @@
 		return;
 
 	if (_curMusicSeq == 0) {
-		playMusic(_stateMusicTable[num], num, false);
+		playMusic(&_stateMusicTable[num], num, false);
 	}
 
 	_curMusicState = num;
@@ -50,9 +51,8 @@
 	if (seqId == 0)
 		seqId = 2000;
 
-	for (l = 0; _seqMusicTable[l]->soundId != -1; l++) {
-		if (_seqMusicTable[l]->soundId == seqId) {
-			debug(5, "Set music sequence: %s", _seqMusicTable[l]->filename);
+	for (l = 0; _seqMusicTable[l].soundId != -1; l++) {
+		if (_seqMusicTable[l].soundId == seqId) {
 			num = l;
 			break;
 		}
@@ -63,16 +63,16 @@
 		return;
 
 	if (num != 0) {
-		playMusic(_seqMusicTable[num], 0, true);
+		playMusic(&_seqMusicTable[num], 0, true);
 	} else {
-		playMusic(_stateMusicTable[_curMusicState], _curMusicState, true);
+		playMusic(&_stateMusicTable[_curMusicState], _curMusicState, true);
 		num = 0;
 	}
 
 	_curMusicSeq = num;
 }
 
-void Imuse::playMusic(const imuseTable *table, int atribPos, bool sequence) {
+void Imuse::playMusic(const ImuseTable *table, int atribPos, bool sequence) {
 	int hookId = 0;
 
 	if (atribPos != 0) {
@@ -100,7 +100,7 @@
 		} else {
 			fadeOutMusic(table->fadeOut60TicksDelay);
 			if ((table->opcode == 3) && (!sequence) &&
-					(table->atribPos != 0) && (table->atribPos == _stateMusicTable[_curMusicState]->atribPos)) {
+					(table->atribPos != 0) && (table->atribPos == _stateMusicTable[_curMusicState].atribPos)) {
 				if (hookId == 100)
 					hookId = 0;
 				else

Index: imuse_script.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_script.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- imuse_script.cpp	28 Dec 2004 18:25:14 -0000	1.2
+++ imuse_script.cpp	29 Dec 2004 06:32:07 -0000	1.3
@@ -23,7 +23,12 @@
 #include "../mixer/mixer.h"
 #include "../mixer/audiostream.h"
 
+#include "imuse.h"
 #include "imuse_sndmgr.h"
+
+extern SoundMixer *g_mixer;
+
+
 /*
 void Imuse::parseScriptCmds(int cmd, int b, int c, int d, int e, int f, int g, int h) {
 	int soundId = b;
@@ -100,11 +105,10 @@
 	default:
 		error("Imuse::doCommand DEFAULT command %d", cmd);
 	}
-}
-*/
+}*/
+
 void Imuse::flushTracks() {
-	debug(5, "flushTracks()");
-	for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
+	for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && track->readyToRemove) {
 			if (track->stream) {
@@ -112,7 +116,7 @@
 	 				track->stream->finish();
 	 			}
 				if (track->stream->endOfStream()) {
-					_vm->_mixer->stopHandle(track->handle);
+					g_mixer->stopHandle(track->handle);
 					delete track->stream;
 					track->stream = NULL;
 					_sound->closeSound(track->soundHandle);
@@ -125,9 +129,8 @@
 }
 
 void Imuse::refreshScripts() {
-	debug(5, "refreshScripts()");
 	bool found = false;
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
 			found = true;
@@ -135,28 +138,24 @@
 	}
 
 	if (!found && (_curMusicSeq != 0)) {
-		debug(5, "refreshScripts() Start Sequence");
-		parseScriptCmds(0x1001, 0, 0, 0, 0, 0, 0, 0);
+		setMusicSequence(0x1001);
 	}
 }
 
 void Imuse::startVoice(const char *soundName) {
-	debug(5, "startVoice(%s)", soundName);
 	startSound(soundName, IMUSE_VOLGRP_VOICE, 0, 127, 0, 127);
 }
 
 void Imuse::startMusic(const char *soundName, int hookId, int volume, int pan) {
-	debug(5, "startMusic(%s)", soundName);
 	startSound(soundName, IMUSE_VOLGRP_MUSIC, hookId, volume, pan, 126);
 }
 
 void Imuse::startSfx(const char *soundName, int priority) {
-	debug(5, "startSfx(%s)", soundName);
 	startSound(soundName, IMUSE_VOLGRP_SFX, 0, 127, 0, priority);
 }
 
 int32 Imuse::getPosInMs(const char *soundName) {
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
 			int32 pos = (5 * (track->dataOffset + track->regionOffset)) / (track->iteration / 200);
@@ -168,8 +167,7 @@
 }
 
 bool Imuse::getSoundStatus(const char *soundName) const {
-	debug(5, "Imuse::getSoundStatus(%s)", soundName);
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (strcmp(track->soundName, soundName) == 0) {
 			if (track->handle.isActive() || (track->stream && track->used && !track->readyToRemove)) {
@@ -182,8 +180,7 @@
 }
 
 void Imuse::stopSound(const char *soundName) {
-	debug(5, "Imuse::stopSound(%s)", soundName);
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
 			track->toBeRemoved = true;
@@ -194,7 +191,7 @@
 int32 Imuse::getCurMusicPosInMs() {
 	const char *soundName = NULL;
 
-	for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
+	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
 			soundName = track->soundName;
@@ -202,16 +199,13 @@
 	}
 
 	int32 msPos = getPosInMs(soundName);
-	debug(5, "Imuse::getCurMusicPosInMs(%s) = %d", soundName, msPos);
 	return msPos;
 }
 
 void Imuse::stopAllSounds() {
-	debug(5, "Imuse::stopAllSounds");
-
 	for(;;) {
 		bool foundNotRemoved = false;
-		for (int l = 0; l < MAX_DIGITAL_TRACKS + MAX_DIGITAL_FADETRACKS; l++) {
+		for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
 			Track *track = _track[l];
 			if (track->used) {
 				track->toBeRemoved = true;

Index: imuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_sndmgr.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- imuse_sndmgr.cpp	28 Dec 2004 18:25:14 -0000	1.3
+++ imuse_sndmgr.cpp	29 Dec 2004 06:32:07 -0000	1.4
@@ -25,10 +25,11 @@
 #include "../mixer/audiostream.h"
 
 #include "imuse_sndmgr.h"
+#include "imuse_mcmp_mgr.h"
 
-ImuseSndMgr::ImuseSndMgr(ScummEngine *scumm) {
+ImuseSndMgr::ImuseSndMgr() {
 	for (int l = 0; l < MAX_IMUSE_SOUNDS; l++) {
-		memset(&_sounds[l], 0, sizeof(soundStruct));
+		memset(&_sounds[l], 0, sizeof(SoundStruct));
 	}
 }
 
@@ -65,10 +66,10 @@
 	} while (tag != MKID_BE('DATA'));
 }
 
-void ImuseSndMgr::parseSoundSound(byte *ptr, soundStruct *sound, int &headerSize) {
+void ImuseSndMgr::parseSoundHeader(byte *ptr, SoundStruct *sound, int &headerSize) {
 	if (READ_UINT32(ptr) == MKID('RIFF')) {
-		sound->region = (_region *)malloc(sizeof(_region));
-		sound->jump = (_jump *)malloc(0);
+		sound->region = (Region *)malloc(sizeof(Region));
+		sound->jump = (Jump *)malloc(0);
 		sound->numJumps = 0;
 		sound->numRegions = 1;
 		sound->region[0].offset = 0;
@@ -88,9 +89,9 @@
 
 		sound->numRegions = 0;
 		sound->numJumps = 0;
-		countElements(ptr, sound->numRegions, sound->numJumps, sound->numSyncs);
-		sound->region = (_region *)malloc(sizeof(_region) * sound->numRegions);
-		sound->jump = (_jump *)malloc(sizeof(_jump) * sound->numJumps);
+		countElements(ptr, sound->numRegions, sound->numJumps);
+		sound->region = (Region *)malloc(sizeof(Region) * sound->numRegions);
+		sound->jump = (Jump *)malloc(sizeof(Jump) * sound->numJumps);
 
 		do {
 			tag = READ_BE_UINT32(ptr); ptr += 4;
@@ -139,7 +140,7 @@
 	}
 }
 
-ImuseSndMgr::soundStruct *ImuseSndMgr::allocSlot() {
+ImuseSndMgr::SoundStruct *ImuseSndMgr::allocSlot() {
 	for (int l = 0; l < MAX_IMUSE_SOUNDS; l++) {
 		if (!_sounds[l].inUse) {
 			_sounds[l].inUse = true;
@@ -150,13 +151,12 @@
 	return NULL;
 }
 
-ImuseSndMgr::soundStruct *ImuseSndMgr::openSound(const char *soundName, int volGroupId) {
-	assert(oundType);
+ImuseSndMgr::SoundStruct *ImuseSndMgr::openSound(const char *soundName, int volGroupId) {
 	const char *extension = soundName + std::strlen(soundName) - 3;
 	byte *ptr = NULL;
 	int headerSize = 0;
 
-	soundStruct *sound = allocSlot();
+	SoundStruct *sound = allocSlot();
 	if (!sound) {
 		error("ImuseSndMgr::openSound() Can't alloc free sound slot");
 	}
@@ -165,9 +165,9 @@
 	sound->volGroupId = volGroupId;
 
 	if (strcasecmp(extension, "imu") == 0) {
-		Block *b = getFileBlock(soundName);
+		Block *b = ResourceLoader::instance()->getFileBlock(soundName);
 		if (b != NULL) {
-			ptr = b->data();
+			ptr = (byte *)b->data();
 			delete b;
 			parseSoundHeader(ptr, sound, headerSize);
 			sound->mcmpData = false;
@@ -178,7 +178,7 @@
 		}
 	} else if (strcasecmp(extension, "wav") == 0 || strcasecmp(extension, "imc") == 0) {
 		sound->mcmpMgr = new McmpMgr();
-		if (!sound->mcmpMgr->openSound(soundName, &ptr)) {
+		if (!sound->mcmpMgr->openSound(soundName, &ptr, headerSize)) {
 			closeSound(sound);
 			return NULL;
 		}
@@ -191,7 +191,7 @@
 	return sound;
 }
 
-void ImuseSndMgr::closeSound(soundStruct *soundHandle) {
+void ImuseSndMgr::closeSound(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 
 	if (soundHandle->mcmpMgr)
@@ -200,16 +200,16 @@
 	free(soundHandle->region);
 	free(soundHandle->jump);
 
-	memset(soundHandle, 0, sizeof(soundStruct));
+	memset(soundHandle, 0, sizeof(SoundStruct));
 }
 
-ImuseSndMgr::soundStruct *ImuseSndMgr::cloneSound(soundStruct *soundHandle) {
+ImuseSndMgr::SoundStruct *ImuseSndMgr::cloneSound(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 
 	return openSound(soundHandle->name, soundHandle->volGroupId);
 }
 
-bool ImuseSndMgr::checkForProperHandle(soundStruct *soundHandle) {
+bool ImuseSndMgr::checkForProperHandle(SoundStruct *soundHandle) {
 	if (!soundHandle)
 		return false;
 
@@ -221,46 +221,44 @@
 	return false;
 }
 
-int ImuseSndMgr::getFreq(soundStruct *soundHandle) {
+int ImuseSndMgr::getFreq(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 	return soundHandle->freq;
 }
 
-int ImuseSndMgr::getBits(soundStruct *soundHandle) {
+int ImuseSndMgr::getBits(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 	return soundHandle->bits;
 }
 
-int ImuseSndMgr::getChannels(soundStruct *soundHandle) {
+int ImuseSndMgr::getChannels(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 	return soundHandle->channels;
 }
 
-bool ImuseSndMgr::isEndOfRegion(soundStruct *soundHandle, int region) {
+bool ImuseSndMgr::isEndOfRegion(SoundStruct *soundHandle, int region) {
 	assert(checkForProperHandle(soundHandle));
 	assert(region >= 0 && region < soundHandle->numRegions);
 	return soundHandle->endFlag;
 }
 
-int ImuseSndMgr::getNumRegions(soundStruct *soundHandle) {
+int ImuseSndMgr::getNumRegions(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 	return soundHandle->numRegions;
 }
 
-int ImuseSndMgr::getNumJumps(soundStruct *soundHandle) {
+int ImuseSndMgr::getNumJumps(SoundStruct *soundHandle) {
 	assert(checkForProperHandle(soundHandle));
 	return soundHandle->numJumps;
 }
 
-int ImuseSndMgr::getRegionOffset(soundStruct *soundHandle, int region) {
-	debug(5, "getRegionOffset() region:%d", region);
+int ImuseSndMgr::getRegionOffset(SoundStruct *soundHandle, int region) {
 	assert(checkForProperHandle(soundHandle));
 	assert(region >= 0 && region < soundHandle->numRegions);
 	return soundHandle->region[region].offset;
 }
 
-int ImuseSndMgr::getJumpIdByRegionAndHookId(soundStruct *soundHandle, int region, int hookId) {
-	debug(5, "getJumpIdByRegionAndHookId() region:%d, hookId:%d", region, hookId);
+int ImuseSndMgr::getJumpIdByRegionAndHookId(SoundStruct *soundHandle, int region, int hookId) {
 	assert(checkForProperHandle(soundHandle));
 	assert(region >= 0 && region < soundHandle->numRegions);
 	int32 offset = soundHandle->region[region].offset;
@@ -274,8 +272,7 @@
 	return -1;
 }
 
-int ImuseSndMgr::getRegionIdByJumpId(soundStruct *soundHandle, int jumpId) {
-	debug(5, "getRegionIdByJumpId() jumpId:%d", jumpId);
+int ImuseSndMgr::getRegionIdByJumpId(SoundStruct *soundHandle, int jumpId) {
 	assert(checkForProperHandle(soundHandle));
 	assert(jumpId >= 0 && jumpId < soundHandle->numJumps);
 	int32 dest = soundHandle->jump[jumpId].dest;
@@ -288,22 +285,19 @@
 	return -1;
 }
 
-int ImuseSndMgr::getJumpHookId(soundStruct *soundHandle, int number) {
-	debug(5, "getJumpHookId() number:%d", number);
+int ImuseSndMgr::getJumpHookId(SoundStruct *soundHandle, int number) {
 	assert(checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < soundHandle->numJumps);
 	return soundHandle->jump[number].hookId;
 }
 
-int ImuseSndMgr::getJumpFade(soundStruct *soundHandle, int number) {
-	debug(5, "getJumpFade() number:%d", number);
+int ImuseSndMgr::getJumpFade(SoundStruct *soundHandle, int number) {
 	assert(checkForProperHandle(soundHandle));
 	assert(number >= 0 && number < soundHandle->numJumps);
 	return soundHandle->jump[number].fadeDelay;
 }
 
-int32 ImuseSndMgr::getDataFromRegion(soundStruct *soundHandle, int region, byte **buf, int32 offset, int32 size) {
-	debug(5, "getDataFromRegion() region:%d, offset:%d, size:%d, numRegions:%d", region, offset, size, soundHandle->numRegions);
+int32 ImuseSndMgr::getDataFromRegion(SoundStruct *soundHandle, int region, byte **buf, int32 offset, int32 size) {
 	assert(checkForProperHandle(soundHandle));
 	assert(buf && offset >= 0 && size >= 0);
 	assert(region >= 0 && region < soundHandle->numRegions);
@@ -318,11 +312,11 @@
 		soundHandle->endFlag = false;
 	}
 
-	if (sound->mcmpData) {
+	if (soundHandle->mcmpData) {
 		size = soundHandle->mcmpMgr->decompressSample(region_offset + offset, size, buf);
 	} else {
 		*buf = (byte *)malloc(size);
-		memcpy(*buf, soundHandle->resPtr + start + offset, size);
+		memcpy(*buf, soundHandle->resPtr + region_offset + offset, size);
 	}
 	
 	return size;

Index: imuse_sndmgr.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_sndmgr.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- imuse_sndmgr.h	28 Dec 2004 18:25:14 -0000	1.3
+++ imuse_sndmgr.h	29 Dec 2004 06:32:07 -0000	1.4
@@ -26,6 +26,8 @@
 #include "../mixer/mixer.h"
 #include "../mixer/audiostream.h"
 
+class McmpMgr;
+
 class ImuseSndMgr {
 public:
 
@@ -36,12 +38,12 @@
 #define IMUSE_VOLGRP_MUSIC 3
 
 private:
-	struct _region {
+	struct Region {
 		int32 offset;		// offset of region
 		int32 length;		// lenght of region
 	};
 
-	struct _jump {
+	struct Jump {
 		int32 offset;		// jump offset position
 		int32 dest;			// jump to dest position
 		byte hookId;		// id of hook
@@ -50,29 +52,30 @@
 	
 public:
 
-	struct soundStruct {
+	struct SoundStruct {
 		uint16 freq;		// frequency
 		byte channels;		// stereo or mono
 		byte bits;			// 8, 12, 16
 		int numJumps;		// number of Jumps
 		int numRegions;		// number of Regions
-		_region *region;
-		_jump *jump;
+		Region *region;
+		Jump *jump;
 		bool endFlag;
 		bool inUse;
 		char name[32];
-		McmpMgr *_mcmpMgr;
+		McmpMgr *mcmpMgr;
 		int volGroupId;
 		byte *resPtr;
+		bool mcmpData;
 	};
 
 private:
 
-	soundStruct _sounds[MAX_IMUSE_SOUNDS];
+	SoundStruct _sounds[MAX_IMUSE_SOUNDS];
 
-	bool checkForProperHandle(soundStruct *soundHandle);
-	soundStruct *allocSlot();
-	void parseSoundHeader(byte *ptr, soundStruct *sound, int &headerSize);
+	bool checkForProperHandle(SoundStruct *soundHandle);
+	SoundStruct *allocSlot();
+	void parseSoundHeader(byte *ptr, SoundStruct *sound, int &headerSize);
 	void countElements(byte *ptr, int &numRegions, int &numJumps);
 
 public:
@@ -80,23 +83,23 @@
 	ImuseSndMgr();
 	~ImuseSndMgr();
 
-	soundStruct *openSound(const char *soundName, int volGroupId);
-	void closeSound(soundStruct *soundHandle);
-	soundStruct *cloneSound(soundStruct *soundHandle);
+	SoundStruct *openSound(const char *soundName, int volGroupId);
+	void closeSound(SoundStruct *soundHandle);
+	SoundStruct *cloneSound(SoundStruct *soundHandle);
 
-	int getFreq(soundStruct *soundHandle);
-	int getBits(soundStruct *soundHandle);
-	int getChannels(soundStruct *soundHandle);
-	bool isEndOfRegion(soundStruct *soundHandle, int region);
-	int getNumRegions(soundStruct *soundHandle);
-	int getNumJumps(soundStruct *soundHandle);
-	int getRegionOffset(soundStruct *soundHandle, int region);
-	int getJumpIdByRegionAndHookId(soundStruct *soundHandle, int region, int hookId);
-	int getRegionIdByJumpId(soundStruct *soundHandle, int jumpId);
-	int getJumpHookId(soundStruct *soundHandle, int number);
-	int getJumpFade(soundStruct *soundHandle, int number);
+	int getFreq(SoundStruct *soundHandle);
+	int getBits(SoundStruct *soundHandle);
+	int getChannels(SoundStruct *soundHandle);
+	bool isEndOfRegion(SoundStruct *soundHandle, int region);
+	int getNumRegions(SoundStruct *soundHandle);
+	int getNumJumps(SoundStruct *soundHandle);
+	int getRegionOffset(SoundStruct *soundHandle, int region);
+	int getJumpIdByRegionAndHookId(SoundStruct *soundHandle, int region, int hookId);
+	int getRegionIdByJumpId(SoundStruct *soundHandle, int jumpId);
+	int getJumpHookId(SoundStruct *soundHandle, int number);
+	int getJumpFade(SoundStruct *soundHandle, int number);
 
-	int32 getDataFromRegion(soundStruct *soundHandle, int region, byte **buf, int32 offset, int32 size);
+	int32 getDataFromRegion(SoundStruct *soundHandle, int region, byte **buf, int32 offset, int32 size);
 };
 
 #endif

Index: imuse_tables.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_tables.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- imuse_tables.cpp	28 Dec 2004 18:25:14 -0000	1.6
+++ imuse_tables.cpp	29 Dec 2004 06:32:07 -0000	1.7
@@ -19,7 +19,9 @@
 #include "../bits.h"
 #include "../debug.h"
 
-const ImuseTable grimStateMusicTable[] = {
+#include "imuse.h"
+
+ImuseTable grimStateMusicTable[] = {
 	{0, 1000,   0, 0, 60, 127,   0, ""},
 	{0, 1999,   0, 0, 60, 127,   0, ""},
 	{3, 1001,   0, 0, 60, 127,   0, "1001 - Manny's Office.IMC" },
@@ -204,7 +206,7 @@
 	{0,   -1,   0, 0,  0,   0,   0, ""}
 };
 
-const ImuseTable grimSeqMusicTable[] = {
+ImuseTable grimSeqMusicTable[] = {
 	{0, 2000,   0, 0, 20, 127,   0, ""},
 	{2, 2001,   0, 0, 20, 127,   0, "2001 - Climb Rope.IMC"},
 	{2, 2010,   0, 0, 20, 127,   0, "2010 - Glottis OK.IMC"},
@@ -249,7 +251,7 @@
 	{0,   -1,   0, 0,  0,   0,   0, ""}
 };
 
-const ImuseTable grimDemoStateMusicTable[] = {
+ImuseTable grimDemoStateMusicTable[] = {
 	{0, 0,      0, 0, 60, 127,   0, ""},
 	{0, 1000,   0, 0, 60, 127,   0, ""},
 	{3, 1001,   0, 0, 60, 127,   0, "MO - Manny's Office.IMC"},
@@ -275,7 +277,7 @@
 	{0,   -1,   0, 0,  0,   0,   0, ""}
 };
 
-const ImuseTable grimDemoSeqMusicTable[] = {
+ImuseTable grimDemoSeqMusicTable[] = {
 	{0, 2000,   0, 0, 60, 127,   0, ""},
 	{3, 2100,   0, 0, 60, 127,   0, "Rope Climb.IMC"},
 	{0,   -1,   0, 0,  0,   0,   0, ""}

Index: imuse_track.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_track.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- imuse_track.cpp	28 Dec 2004 18:25:14 -0000	1.3
+++ imuse_track.cpp	29 Dec 2004 06:32:07 -0000	1.4
@@ -18,13 +18,16 @@
 #include "../stdafx.h"
 #include "../bits.h"
 #include "../debug.h"
-#include "../timer.h"
 
 #include "../mixer/mixer.h"
 #include "../mixer/audiostream.h"
 
+#include "imuse.h"
 #include "imuse_sndmgr.h"
 
+extern SoundMixer *g_mixer;
+
+
 int Imuse::allocSlot(int priority) {
 	int l, lowest_priority = 127;
 	int trackId = -1;
@@ -37,7 +40,7 @@
 	}
 
 	if (trackId == -1) {
-		debug(5, "Imuse::startSound(): All slots are full");
+		warning("Imuse::startSound(): All slots are full");
 		for (l = 0; l < MAX_IMUSE_TRACKS; l++) {
 			Track *track = _track[l];
 			if (track->used && !track->toBeRemoved && lowest_priority > track->priority) {
@@ -48,9 +51,9 @@
 		if (lowest_priority <= priority) {
 			assert(trackId != -1);
 			_track[trackId]->toBeRemoved = true;
-			debug(5, "Imuse::startSound(): Removed sound %s from track %d", _track[trackId]->soundName, trackId);
+			warning("Imuse::startSound(): Removed sound %s from track %d", _track[trackId]->soundName, trackId);
 		} else {
-			debug(5, "Imuse::startSound(): Priority sound too low");
+			warning("Imuse::startSound(): Priority sound too low");
 			return -1;
 		}
 	}
@@ -58,9 +61,7 @@
 	return trackId;
 }
 
-void Imuse::startSound(const char *soundName, int volGroupId, int hookId, int volume, int pan = 64, int priority) {
-	debug(5, "Imuse::startSound(%s)", soundName);
-
+void Imuse::startSound(const char *soundName, int volGroupId, int hookId, int volume, int pan, int priority) {
 	int l = allocSlot(priority);
 	if (l == -1) {
 		warning("Imuse::startSound() Can't start sound - no free slots");
@@ -98,7 +99,7 @@
 	int bits = 0, freq = 0, channels = 0;
 
 	strcpy(track->soundName, soundName);
-	track->soundHandle = _sound->openSound(soundName, volGroupId, -1);
+	track->soundHandle = _sound->openSound(soundName, volGroupId);
 
 	if (track->soundHandle == NULL)
 		return;
@@ -141,13 +142,12 @@
 	// setup 1 second stream wrapped buffer
 	int32 streamBufferSize = track->iteration;
 	track->stream = makeAppendableAudioStream(freq, track->mixerFlags, streamBufferSize);
-	_vm->_mixer->playInputStream(&track->handle, track->stream, false, -1, track->mixerVol, track->mixerPan, false);
+	g_mixer->playInputStream(&track->handle, track->stream, false, -1, track->mixerVol, track->mixerPan, false);
 	track->started = true;
 	track->used = true;
 }
 
 void Imuse::setPriority(const char *soundName, int priority) {
-	debug(5, "Imuse::setPriority(%s, %d)", soundName, priority);
 	assert ((priority >= 0) && (priority <= 127));
 
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
@@ -158,9 +158,7 @@
 	}
 }
 
-void Imuse::setVolume(int soundName, int volume) {
-	debug(5, "IMuseDigital::setVolume(%s, %d)", soundName, volume);
-
+void Imuse::setVolume(const char *soundName, int volume) {
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
@@ -170,8 +168,6 @@
 }
 
 void Imuse::setPan(const char *soundName, int pan) {
-	debug(5, "Imuse::setPan(%s, %d)", soundName, pan);
-
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
@@ -181,7 +177,6 @@
 }
 
 void Imuse::selectVolumeGroup(const char *soundName, int volGroupId) {
-	debug(5, "Imuse::setGroupVolume(%s, %d)", soundName, volGroupId);
 	assert((volGroupId >= 1) && (volGroupId <= 4));
 
 	if (volGroupId == 4)
@@ -197,7 +192,6 @@
 
 void Imuse::setFade(const char *soundName, int destVolume, int delay60HzTicks) {
 	StackLock lock(_mutex);
-	debug(5, "Imuse::setFade(%s, %d, %d)", soundName, destVolume, delay60HzTicks);
 
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
@@ -211,7 +205,6 @@
 }
 
 void Imuse::fadeOutMusic(int fadeDelay) {
-	debug(5, "Imuse::fadeOutMusic");
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
@@ -225,8 +218,6 @@
 	assert(track);
 	Track *fadeTrack = 0;
 
-	debug(5, "Imuse::cloneToFadeOutTrack(%d, %d)", track->trackId, fadeDelay);
-
 	{
 		StackLock lock(_mutex);
 		for (int l = MAX_IMUSE_TRACKS; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
@@ -265,7 +256,7 @@
 	// setup 1 second stream wrapped buffer
 	int32 streamBufferSize = fadeTrack->iteration;
 	fadeTrack->stream = makeAppendableAudioStream(_sound->getFreq(fadeTrack->soundHandle), fadeTrack->mixerFlags, streamBufferSize);
-	_vm->_mixer->playInputStream(&fadeTrack->handle, fadeTrack->stream, false, -1, fadeTrack->vol / 1000, fadeTrack->pan, false);
+	g_mixer->playInputStream(&fadeTrack->handle, fadeTrack->stream, false, -1, fadeTrack->vol / 1000, fadeTrack->pan, false);
 	fadeTrack->started = true;
 	fadeTrack->used = true;
 





More information about the Scummvm-git-logs mailing list