added voices pack/cd music support
svn-id: r48962
This commit is contained in:
parent
e4a4df960a
commit
2dd34a2123
5 changed files with 38 additions and 9 deletions
|
@ -30,7 +30,8 @@ namespace TeenAgent {
|
||||||
Console::Console(TeenAgentEngine *engine) : _engine(engine) {
|
Console::Console(TeenAgentEngine *engine) : _engine(engine) {
|
||||||
DCmd_Register("enable_object", WRAP_METHOD(Console, enableObject));
|
DCmd_Register("enable_object", WRAP_METHOD(Console, enableObject));
|
||||||
DCmd_Register("disable_object", WRAP_METHOD(Console, enableObject));
|
DCmd_Register("disable_object", WRAP_METHOD(Console, enableObject));
|
||||||
DCmd_Register("set_ons", WRAP_METHOD(Console, setOns));
|
DCmd_Register("set_ons", WRAP_METHOD(Console, setOns));
|
||||||
|
DCmd_Register("set_music", WRAP_METHOD(Console, setMusic));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Console::enableObject(int argc, const char **argv) {
|
bool Console::enableObject(int argc, const char **argv) {
|
||||||
|
@ -91,7 +92,20 @@ bool Console::setOns(int argc, const char **argv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_engine->setOns(index, value, scene_id);
|
_engine->setOns(index, value, scene_id);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Console::setMusic(int argc, const char **argv) {
|
||||||
|
if (argc < 2) {
|
||||||
|
DebugPrintf("usage: %s index(1-11)\n", argv[0]);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
int index = atoi(argv[1]);
|
||||||
|
if (index <= 0 || index > 11) {
|
||||||
|
DebugPrintf("invalid value\n");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
_engine->setMusic(index);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ public:
|
||||||
private:
|
private:
|
||||||
bool enableObject(int argc, const char **argv);
|
bool enableObject(int argc, const char **argv);
|
||||||
bool setOns(int argc, const char **argv);
|
bool setOns(int argc, const char **argv);
|
||||||
|
bool setMusic(int argc, const char **argv);
|
||||||
|
|
||||||
TeenAgentEngine *_engine;
|
TeenAgentEngine *_engine;
|
||||||
};
|
};
|
||||||
|
|
|
@ -44,6 +44,7 @@ void Resources::deinit() {
|
||||||
mmm.close();
|
mmm.close();
|
||||||
sam_mmm.close();
|
sam_mmm.close();
|
||||||
sam_sam.close();
|
sam_sam.close();
|
||||||
|
voices.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -95,7 +96,7 @@ bool Resources::loadArchives(const ADGameDescription *gd) {
|
||||||
mmm.open("mmm.res");
|
mmm.open("mmm.res");
|
||||||
sam_mmm.open("sam_mmm.res");
|
sam_mmm.open("sam_mmm.res");
|
||||||
sam_sam.open("sam_sam.res");
|
sam_sam.open("sam_sam.res");
|
||||||
|
voices.open("voices.res");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,9 +54,9 @@ public:
|
||||||
* TransientFilePack does not keep opened file descriptors and reopens it on each request.
|
* TransientFilePack does not keep opened file descriptors and reopens it on each request.
|
||||||
*/
|
*/
|
||||||
#ifdef __PSP__
|
#ifdef __PSP__
|
||||||
TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm;
|
TransientFilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices;
|
||||||
#else
|
#else
|
||||||
FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm;
|
FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Segment cseg, dseg, eseg;
|
Segment cseg, dseg, eseg;
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "engines/advancedDetector.h"
|
#include "engines/advancedDetector.h"
|
||||||
#include "engines/util.h"
|
#include "engines/util.h"
|
||||||
|
|
||||||
|
#include "sound/audiocd.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer.h"
|
||||||
#include "sound/decoders/raw.h"
|
#include "sound/decoders/raw.h"
|
||||||
|
|
||||||
|
@ -470,8 +471,8 @@ Common::Error TeenAgentEngine::run() {
|
||||||
|
|
||||||
syncSoundSettings();
|
syncSoundSettings();
|
||||||
|
|
||||||
music->load(1);
|
|
||||||
_mixer->playStream(Audio::Mixer::kMusicSoundType, &_musicHandle, music, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, false);
|
_mixer->playStream(Audio::Mixer::kMusicSoundType, &_musicHandle, music, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, false);
|
||||||
|
setMusic(1);
|
||||||
music->start();
|
music->start();
|
||||||
|
|
||||||
int load_slot = Common::ConfigManager::instance().getInt("save_slot");
|
int load_slot = Common::ConfigManager::instance().getInt("save_slot");
|
||||||
|
@ -971,10 +972,22 @@ void TeenAgentEngine::playSoundNow(byte id) {
|
||||||
|
|
||||||
void TeenAgentEngine::setMusic(byte id) {
|
void TeenAgentEngine::setMusic(byte id) {
|
||||||
debug(0, "starting music %u", id);
|
debug(0, "starting music %u", id);
|
||||||
if (!music->load(id))
|
Resources *res = Resources::instance();
|
||||||
return;
|
|
||||||
*Resources::instance()->dseg.ptr(0xDB90) = id;
|
if (id != 1) //intro music
|
||||||
music->start();
|
*res->dseg.ptr(0xDB90) = id;
|
||||||
|
|
||||||
|
if (_gameDescription->flags & ADGF_CD) {
|
||||||
|
byte track2cd[] = {7, 2, 0, 9, 3, 6, 8, 10, 4, 5, 11};
|
||||||
|
if (id == 0 || id > 11 || track2cd[id - 1] == 0) {
|
||||||
|
debug(0, "no cd music for id %u", id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
byte track = track2cd[id - 1];
|
||||||
|
debug(0, "playing cd track %u", track);
|
||||||
|
Audio::AudioCDManager::instance().play(track, -1, 0, 0);
|
||||||
|
} else if (music->load(id))
|
||||||
|
music->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TeenAgentEngine::hasFeature(EngineFeature f) const {
|
bool TeenAgentEngine::hasFeature(EngineFeature f) const {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue