[Scummvm-git-logs] scummvm master -> a5f71a3d8bd6bfa6d16909703755473d95b2b28f

dreammaster dreammaster at scummvm.org
Fri Feb 3 04:36:25 CET 2017


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a5f71a3d8b TITANIC: Implemented CMusicRoomhandler updateAudio


Commit: a5f71a3d8bd6bfa6d16909703755473d95b2b28f
    https://github.com/scummvm/scummvm/commit/a5f71a3d8bd6bfa6d16909703755473d95b2b28f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-02-02T22:36:21-05:00

Commit Message:
TITANIC: Implemented CMusicRoomhandler updateAudio

Changed paths:
    engines/titanic/sound/audio_buffer.cpp
    engines/titanic/sound/audio_buffer.h
    engines/titanic/sound/music_room_handler.cpp
    engines/titanic/sound/music_room_handler.h
    engines/titanic/sound/music_wave.cpp
    engines/titanic/sound/music_wave.h


diff --git a/engines/titanic/sound/audio_buffer.cpp b/engines/titanic/sound/audio_buffer.cpp
index 7de7c47..425b5b3 100644
--- a/engines/titanic/sound/audio_buffer.cpp
+++ b/engines/titanic/sound/audio_buffer.cpp
@@ -38,21 +38,21 @@ void CAudioBuffer::reset() {
 	_fieldC = _field10 = _buffer.size() / 2;
 }
 
-const byte *CAudioBuffer::getDataPtr1() const {
+byte *CAudioBuffer::getDataPtr1() {
 	return _flag ? &_buffer[_buffer.size() / 2] : &_buffer[0];
 }
 
-const byte *CAudioBuffer::getDataPtr2() const {
+byte *CAudioBuffer::getDataPtr2() {
 	return _flag ? &_buffer[0] : &_buffer[_buffer.size() / 2];
 }
 
-const byte *CAudioBuffer::getPtr1() const {
-	const byte *ptr = getDataPtr1();
+byte *CAudioBuffer::getPtr1() {
+	byte *ptr = getDataPtr1();
 	return ptr + (_buffer.size() / 2 - _fieldC);
 }
 
-const byte *CAudioBuffer::getPtr2() const {
-	const byte *ptr = getDataPtr2();
+byte *CAudioBuffer::getPtr2() {
+	byte *ptr = getDataPtr2();
 	return ptr + (_buffer.size() / 2 - _field10);
 }
 
diff --git a/engines/titanic/sound/audio_buffer.h b/engines/titanic/sound/audio_buffer.h
index 77027ac..ea05688 100644
--- a/engines/titanic/sound/audio_buffer.h
+++ b/engines/titanic/sound/audio_buffer.h
@@ -42,10 +42,10 @@ public:
 	~CAudioBuffer();
 
 	void reset();
-	const byte *getDataPtr1() const;
-	const byte *getDataPtr2() const;
-	const byte *getPtr1() const;
-	const byte *getPtr2() const;
+	byte *getDataPtr1();
+	byte *getDataPtr2();
+	byte *getPtr1();
+	byte *getPtr2();
 	int getC() const { return _fieldC; }
 	int get10() const { return _field10; }
 	void setC(int val);
diff --git a/engines/titanic/sound/music_room_handler.cpp b/engines/titanic/sound/music_room_handler.cpp
index 50e3cdf..ae08af7 100644
--- a/engines/titanic/sound/music_room_handler.cpp
+++ b/engines/titanic/sound/music_room_handler.cpp
@@ -201,7 +201,34 @@ bool CMusicRoomHandler::update() {
 }
 
 void CMusicRoomHandler::updateAudio() {
-	// TODO
+	_audioBuffer->enterCriticalSection();
+	int size = _audioBuffer->get10();
+	int count;
+	byte *ptr;
+
+	if (size > 0) {
+		byte *audioPtr = _audioBuffer->getPtr2();
+		Common::fill(audioPtr, audioPtr + size, 0);
+
+		for (int waveIdx = 0; waveIdx < 4; ++waveIdx) {
+			CMusicWave *musicWave = _musicWaves[waveIdx];
+
+			for (count = size, ptr = audioPtr; count > 0; ) {
+				int amount = musicWave->setData(ptr, count);
+				if (amount > 0) {
+					count -= amount;
+					ptr += amount;
+				} else if (!fn2()) {
+					--_field108;
+					break;
+				}
+			}
+		}
+		
+		_audioBuffer->set10(size);
+	}
+
+	_audioBuffer->leaveCriticalSection();
 }
 
 void CMusicRoomHandler::fn1() {
@@ -221,4 +248,9 @@ void CMusicRoomHandler::fn1() {
 	}
 }
 
+bool CMusicRoomHandler::fn2() {
+	// TODO
+	return false;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/sound/music_room_handler.h b/engines/titanic/sound/music_room_handler.h
index 9102ad4..81f50e4 100644
--- a/engines/titanic/sound/music_room_handler.h
+++ b/engines/titanic/sound/music_room_handler.h
@@ -84,6 +84,7 @@ private:
 
 	void updateAudio();
 	void fn1();
+	bool fn2();
 public:
 	CMusicRoomHandler(CProjectItem *project, CSoundManager *soundManager);
 	~CMusicRoomHandler();
diff --git a/engines/titanic/sound/music_wave.cpp b/engines/titanic/sound/music_wave.cpp
index 5038780..3c4a4cf 100644
--- a/engines/titanic/sound/music_wave.cpp
+++ b/engines/titanic/sound/music_wave.cpp
@@ -267,4 +267,9 @@ void CMusicWave::setState(int val) {
 	_field44 = 0;
 }
 
+int CMusicWave::setData(const byte *data, int count) {
+	// TODO: Implement
+	return 0;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/sound/music_wave.h b/engines/titanic/sound/music_wave.h
index eee21a9..aa95770 100644
--- a/engines/titanic/sound/music_wave.h
+++ b/engines/titanic/sound/music_wave.h
@@ -106,6 +106,8 @@ public:
 
 	void reset();
 	void setState(int val);
+
+	int setData(const byte *data, int count);
 };
 
 } // End of namespace Titanic





More information about the Scummvm-git-logs mailing list