[Scummvm-cvs-logs] SF.net SVN: scummvm:[44074] scummvm/trunk/engines/kyra

athrxx at users.sourceforge.net athrxx at users.sourceforge.net
Sun Sep 13 23:41:29 CEST 2009


Revision: 44074
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44074&view=rev
Author:   athrxx
Date:     2009-09-13 21:41:29 +0000 (Sun, 13 Sep 2009)

Log Message:
-----------
KYRA: - add sfx support for PC98-Version

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_lok.cpp
    scummvm/trunk/engines/kyra/kyra_lok.h
    scummvm/trunk/engines/kyra/seqplayer.cpp
    scummvm/trunk/engines/kyra/sound.h
    scummvm/trunk/engines/kyra/sound_adlib.h
    scummvm/trunk/engines/kyra/sound_intern.h
    scummvm/trunk/engines/kyra/sound_lok.cpp
    scummvm/trunk/engines/kyra/sound_towns.cpp
    scummvm/trunk/engines/kyra/staticres.cpp

Modified: scummvm/trunk/engines/kyra/kyra_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_lok.cpp	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/kyra_lok.cpp	2009-09-13 21:41:29 UTC (rev 44074)
@@ -195,7 +195,10 @@
 	if (!_sound->init())
 		error("Couldn't init sound");
 
-	_sound->loadSoundFile(0);
+	if (_flags.platform == Common::kPlatformPC98)
+		_sound->loadSoundFile(_introSfxDataPC98, _introSfxDataPC98Size);
+	else
+		_sound->loadSoundFile(0);
 
 	setupButtonData();
 
@@ -334,8 +337,13 @@
 void KyraEngine_LoK::startup() {
 	static const uint8 colorMap[] = { 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0 };
 	_screen->setTextColorMap(colorMap);
+	
 	_sound->setSoundList(&_soundData[kMusicIngame]);
-	_sound->loadSoundFile(0);
+	if (_flags.platform == Common::kPlatformPC98)
+		_sound->loadSoundFile("se.dat");
+	else
+		_sound->loadSoundFile(0);
+
 //	_screen->setFont(Screen::FID_6_FNT);
 	_screen->setAnimBlockPtr(3750);
 	memset(_sceneAnimTable, 0, sizeof(_sceneAnimTable));

Modified: scummvm/trunk/engines/kyra/kyra_lok.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_lok.h	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/kyra_lok.h	2009-09-13 21:41:29 UTC (rev 44074)
@@ -510,6 +510,9 @@
 	static const int8 _amigaTrackMap[];
 	static const int _amigaTrackMapSize;
 
+	static const uint8 _introSfxDataPC98[];
+	static const int _introSfxDataPC98Size;
+
 	// TODO: get rid of all variables having pointers to the static resources if possible
 	// i.e. let them directly use the _staticres functions
 	void initStaticResource();

Modified: scummvm/trunk/engines/kyra/seqplayer.cpp
===================================================================
--- scummvm/trunk/engines/kyra/seqplayer.cpp	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/seqplayer.cpp	2009-09-13 21:41:29 UTC (rev 44074)
@@ -415,6 +415,14 @@
 void SeqPlayer::s1_playEffect() {
 	uint8 track = *_seqData++;
 	_vm->delay(3 * _vm->tickLength());
+
+	if (_vm->gameFlags().platform == Common::kPlatformPC98) {
+		if (track > 21 && track < 38)
+			track -= 22;
+		else
+			return;
+	}
+
 	_sound->playSoundEffect(track);
 }
 

Modified: scummvm/trunk/engines/kyra/sound.h
===================================================================
--- scummvm/trunk/engines/kyra/sound.h	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/sound.h	2009-09-13 21:41:29 UTC (rev 44074)
@@ -108,6 +108,12 @@
 	virtual void loadSoundFile(Common::String file) = 0;
 
 	/**
+	 * Load hard coded data for playing music
+	 * (and somtimes sound effects) from.
+	 */	
+	virtual void loadSoundFile(const uint8 *data, int len) { }
+
+	/**
 	 * Load a sound file for playing sound
 	 * effects from.
 	 */
@@ -268,7 +274,8 @@
 	bool hasSoundFile(uint file) const { return _music->hasSoundFile(file) && _sfx->hasSoundFile(file); }
 	void loadSoundFile(uint file) { _music->loadSoundFile(file); _sfx->loadSoundFile(file); }
 	void loadSoundFile(Common::String file) { _music->loadSoundFile(file); _sfx->loadSoundFile(file); }
-
+	
+	void loadSoundFile(const uint8 *data, int len) { _sfx->loadSoundFile(data, len); }
 	void loadSfxFile(Common::String file) { _sfx->loadSoundFile(file); }
 
 	void playTrack(uint8 track) { _music->playTrack(track); }

Modified: scummvm/trunk/engines/kyra/sound_adlib.h
===================================================================
--- scummvm/trunk/engines/kyra/sound_adlib.h	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/sound_adlib.h	2009-09-13 21:41:29 UTC (rev 44074)
@@ -72,6 +72,7 @@
 
 	void loadSoundFile(uint file);
 	void loadSoundFile(Common::String file);
+	void loadSoundFile(const uint8 *data, int len) {}
 
 	void playTrack(uint8 track);
 	void haltTrack();

Modified: scummvm/trunk/engines/kyra/sound_intern.h
===================================================================
--- scummvm/trunk/engines/kyra/sound_intern.h	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/sound_intern.h	2009-09-13 21:41:29 UTC (rev 44074)
@@ -171,7 +171,8 @@
 
 	void process() {}
 	void loadSoundFile(uint file) {}
-	void loadSoundFile(Common::String) {}
+	void loadSoundFile(Common::String file);
+	void loadSoundFile(const uint8 *data, int len);
 
 	void playTrack(uint8 track);
 	void haltTrack();

Modified: scummvm/trunk/engines/kyra/sound_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_lok.cpp	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/sound_lok.cpp	2009-09-13 21:41:29 UTC (rev 44074)
@@ -29,6 +29,13 @@
 namespace Kyra {
 
 void KyraEngine_LoK::snd_playSoundEffect(int track, int volume) {
+	if (_flags.platform == Common::kPlatformPC98) {
+		if (track < 16 || track > 119)
+			track = 58;
+		else
+			track -= 16;
+	}
+
 	if ((_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98) && track == 49) {
 		snd_playWanderScoreViaMap(56, 1);
 		return;

Modified: scummvm/trunk/engines/kyra/sound_towns.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_towns.cpp	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/sound_towns.cpp	2009-09-13 21:41:29 UTC (rev 44074)
@@ -4069,12 +4069,25 @@
 
 bool SoundPC98::init() {
 	_driver = new TownsPC98_OpnDriver(_mixer, TownsPC98_OpnDriver::OD_TYPE26);
-	_sfxTrackData = _vm->resource()->fileData("se.dat", 0);
-	if (!_sfxTrackData)
-		return false;
+
 	return _driver->init();
 }
 
+void SoundPC98::loadSoundFile(Common::String file) {
+	if (_sfxTrackData)
+		delete _sfxTrackData;
+	
+	_sfxTrackData = _vm->resource()->fileData(file.c_str(), 0);
+}
+
+void SoundPC98::loadSoundFile(const uint8 *data, int len) {
+	if (_sfxTrackData)
+		delete _sfxTrackData;
+
+	_sfxTrackData = new uint8[len];
+	memcpy(_sfxTrackData, data, len);
+}
+
 void SoundPC98::playTrack(uint8 track) {
 	track += extraOffset();
 
@@ -4119,9 +4132,6 @@
 	if (!_sfxTrackData)
 		return;
 
-	//	This has been disabled for now since I don't know
-	//	how to make up the correct track number. It probably
-	//	needs a map.
 	_driver->loadSoundEffectData(_sfxTrackData, track);
 }
 

Modified: scummvm/trunk/engines/kyra/staticres.cpp
===================================================================
--- scummvm/trunk/engines/kyra/staticres.cpp	2009-09-13 21:38:47 UTC (rev 44073)
+++ scummvm/trunk/engines/kyra/staticres.cpp	2009-09-13 21:41:29 UTC (rev 44074)
@@ -2441,6 +2441,59 @@
 
 const int KyraEngine_LoK::_amigaTrackMapSize = ARRAYSIZE(KyraEngine_LoK::_amigaTrackMap);
 
+const uint8 KyraEngine_LoK::_introSfxDataPC98[] = {
+	0x56, 0x00, 0x43, 0x00, 0x7C, 0x00, 0x69, 0x00, 0xA2, 0x00, 0x8F, 0x00, 0x00, 0x00, 0xB5, 0x00,
+	0x00, 0x00, 0xE5, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x45, 0x01,
+	0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x68, 0x01, 0x8D, 0x01, 0x7C, 0x01, 0xBD, 0x01, 0x9E, 0x01,
+	0xF0, 0x01, 0xDC, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x2B, 0x02, 0x59, 0x02, 0x40, 0x02,
+	0xF1, 0x00, 0xFF, 0xF1, 0x09, 0x32, 0x81, 0x49, 0x81, 0x52, 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03,
+	0xC7, 0x00, 0xFF, 0x42, 0x32, 0xFF, 0xF1, 0x05, 0x30, 0x81, 0x47, 0x81, 0x50, 0x81, 0x57, 0x81,
+	0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1, 0x0C, 0x32, 0x81, 0x49, 0x81, 0x52,
+	0x81, 0x59, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x42, 0x32, 0xFF, 0xF1, 0x08, 0x30, 0x81,
+	0x47, 0x81, 0x50, 0x81, 0x57, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1,
+	0x0F, 0x32, 0x81, 0x49, 0x81, 0x52, 0x81, 0x59, 0x81, 0xF7, 0x01, 0x03, 0xC7, 0x00, 0xFF, 0x42,
+	0x32, 0xFF, 0xF1, 0x0C, 0x30, 0x81, 0x47, 0x81, 0x50, 0x81, 0x57, 0x81, 0xF7, 0x01, 0x03, 0xC7,
+	0x00, 0xFF, 0x41, 0x32, 0xFF, 0xF1, 0x0A, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01, 0xFC, 0xF6, 0x05,
+	0x05, 0xB7, 0x00, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01, 0xF6, 0x02, 0x02, 0xC3, 0x00, 0xFB, 0xFB,
+	0xFB, 0xFB, 0x39, 0x01, 0x44, 0x01, 0x49, 0x01, 0xF6, 0x02, 0x02, 0xD2, 0x00, 0xFC, 0xFC, 0xF6,
+	0x05, 0x05, 0xC3, 0x00, 0xFF, 0xF1, 0x0F, 0x69, 0x81, 0x59, 0x81, 0x49, 0x01, 0x39, 0x81, 0x54,
+	0x01, 0xF6, 0x02, 0x02, 0xED, 0x00, 0x80, 0x04, 0xFB, 0xFB, 0xFB, 0xF6, 0x03, 0x03, 0xED, 0x00,
+	0xFF, 0xF1, 0x0C, 0x69, 0x81, 0x49, 0x81, 0x59, 0x81, 0x39, 0x01, 0x62, 0x81, 0x57, 0x01, 0x60,
+	0x01, 0xFC, 0xF6, 0x03, 0x03, 0x0B, 0x01, 0x62, 0x81, 0x57, 0x01, 0x60, 0x01, 0xFB, 0xF6, 0x03,
+	0x03, 0x17, 0x01, 0xFB, 0xFB, 0xFB, 0xF6, 0x05, 0x05, 0x0B, 0x01, 0xFF, 0xF1, 0x0F, 0xF4, 0x09,
+	0xF7, 0x01, 0x01, 0x54, 0x01, 0xC8, 0x27, 0x09, 0xF4, 0x42, 0x10, 0x08, 0xFB, 0xF6, 0x0E, 0x0E,
+	0x3A, 0x01, 0xF4, 0x80, 0xFF, 0xF1, 0x08, 0xF4, 0x41, 0x10, 0x01, 0xFC, 0xF6, 0x07, 0x07, 0x49,
+	0x01, 0xF4, 0x80, 0xFF, 0xF1, 0x0C, 0xF9, 0x0E, 0xFA, 0x12, 0x64, 0x04, 0x0B, 0x60, 0x03, 0x80,
+	0x03, 0x60, 0x03, 0x80, 0x03, 0x60, 0x12, 0xFF, 0xF1, 0x0C, 0xF9, 0x0E, 0xFA, 0x12, 0x18, 0x04,
+	0x0B, 0x70, 0x02, 0x80, 0x02, 0x72, 0x02, 0x80, 0x02, 0x73, 0x0B, 0xFF, 0xF1, 0x0E, 0xF3, 0x00,
+	0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x30, 0x30, 0xF1, 0x07, 0x3B, 0x0A, 0xFF, 0xF1, 0x0C, 0xF3,
+	0x0A, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x60, 0x30, 0xF1, 0x05, 0x6B, 0x0A, 0xFF, 0xF1, 0x0E,
+	0xF3, 0x00, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x30, 0x30, 0xF1, 0x0C, 0x69, 0x01, 0x75, 0x02,
+	0x72, 0x01, 0x64, 0x02, 0x70, 0x01, 0xFB, 0xF6, 0x0B, 0x0B, 0xAC, 0x01, 0xFF, 0xF1, 0x0C, 0xF3,
+	0x0A, 0xF7, 0x01, 0x05, 0x39, 0xFF, 0xFF, 0x60, 0x31, 0xF1, 0x0A, 0x69, 0x01, 0x75, 0x02, 0x72,
+	0x01, 0x64, 0x02, 0x70, 0x01, 0xFB, 0xF6, 0x09, 0x09, 0xCB, 0x01, 0xFF, 0xF1, 0x0F, 0xF3, 0x00,
+	0x24, 0x81, 0x29, 0x01, 0xF6, 0x08, 0x08, 0xE0, 0x01, 0xFB, 0xF6, 0x0E, 0x0E, 0xE0, 0x01, 0xFF,
+	0xF1, 0x0F, 0xF3, 0x0D, 0x24, 0x81, 0x22, 0x01, 0xF6, 0x08, 0x08, 0xF4, 0x01, 0xFB, 0xF6, 0x0E,
+	0x0E, 0xF4, 0x01, 0xFF, 0xF1, 0x0C, 0x29, 0x81, 0xFC, 0x24, 0x81, 0xFC, 0x29, 0x81, 0xFC, 0x34,
+	0x81, 0x35, 0x81, 0x36, 0x81, 0x35, 0x81, 0x34, 0x81, 0x33, 0x81, 0x32, 0x81, 0x33, 0x01, 0xF6,
+	0x02, 0x02, 0x0F, 0x02, 0xFB, 0xF6, 0x0E, 0x0E, 0x0F, 0x02, 0xFF, 0xF1, 0x0F, 0xF4, 0x0B, 0x29,
+	0x81, 0x27, 0x81, 0xF4, 0x43, 0x29, 0x02, 0xFB, 0xF6, 0x0E, 0x0E, 0x35, 0x02, 0xF4, 0x80, 0xFF,
+	0xF1, 0x0E, 0xF7, 0x01, 0x01, 0x09, 0x03, 0xFF, 0x44, 0x08, 0xF1, 0x0C, 0xF7, 0x01, 0x04, 0xC8,
+	0x00, 0xFF, 0x1B, 0x1E, 0xF1, 0x06, 0x1B, 0x1E, 0xFF, 0xF1, 0x0F, 0xF4, 0x4F, 0xF7, 0x01, 0x05,
+	0xC7, 0x00, 0xFF, 0x19, 0x04, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x0F, 0xFB, 0x10, 0x04,
+	0xFB, 0xF6, 0x07, 0x07, 0x6E, 0x02, 0xF1, 0x08, 0x10, 0x04, 0xFB, 0xF6, 0x07, 0x07, 0x78, 0x02,
+	0xF4, 0x80, 0xFF, 0xF1, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+};
+
+const int KyraEngine_LoK::_introSfxDataPC98Size = ARRAYSIZE(KyraEngine_LoK::_introSfxDataPC98);
+
 // kyra engine v2 static data
 
 const int GUI_v2::_sliderBarsPosition[] = {


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