[Scummvm-git-logs] scummvm master -> 57a4f165d58d12dd6e02abd9667c4593838c28e0
AndywinXp
noreply at scummvm.org
Sat Oct 1 15:47:23 UTC 2022
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:
57a4f165d5 SCUMM: DIMUSE: Add defines for magic numbers and command IDs
Commit: 57a4f165d58d12dd6e02abd9667c4593838c28e0
https://github.com/scummvm/scummvm/commit/57a4f165d58d12dd6e02abd9667c4593838c28e0
Author: AndywinXp (andywinxp at gmail.com)
Date: 2022-10-01T17:47:17+02:00
Commit Message:
SCUMM: DIMUSE: Add defines for magic numbers and command IDs
Changed paths:
engines/scumm/imuse_digi/dimuse_cmds.cpp
engines/scumm/imuse_digi/dimuse_defs.h
engines/scumm/imuse_digi/dimuse_engine.cpp
engines/scumm/imuse_digi/dimuse_scripts.cpp
diff --git a/engines/scumm/imuse_digi/dimuse_cmds.cpp b/engines/scumm/imuse_digi/dimuse_cmds.cpp
index 034b1d31b6a..103fd5f8128 100644
--- a/engines/scumm/imuse_digi/dimuse_cmds.cpp
+++ b/engines/scumm/imuse_digi/dimuse_cmds.cpp
@@ -42,57 +42,57 @@ int IMuseDigital::cmdsHandleCmd(int cmd, uint8 *ptr, int a, int b, int c, int d,
}
switch (cmd) {
- case 0:
+ case DIMUSE_C_INIT:
return cmdsInit();
- case 3:
+ case DIMUSE_C_PAUSE:
return cmdsPause();
- case 4:
+ case DIMUSE_C_RESUME:
return cmdsResume();
- case 7:
+ case DIMUSE_C_SET_GRP_VOL:
return _groupsHandler->setGroupVol(a, b);
- case 8:
+ case DIMUSE_C_START_SND:
cmdsStartSound(a, b);
break;
- case 9:
+ case DIMUSE_C_STOP_SND:
cmdsStopSound(a);
break;
- case 10:
+ case DIMUSE_C_STOP_ALL_SNDS:
cmdsStopAllSounds();
break;
- case 11:
+ case DIMUSE_C_GET_NEXT_SND:
return cmdsGetNextSound(a);
- case 12:
+ case DIMUSE_C_SET_PARAM:
cmdsSetParam(a, b, c);
break;
- case 13:
+ case DIMUSE_C_GET_PARAM:
return cmdsGetParam(a, b);
- case 14:
+ case DIMUSE_C_FADE_PARAM:
return _fadesHandler->fadeParam(a, b, c, d);
- case 15:
+ case DIMUSE_C_SET_HOOK:
return cmdsSetHook(a, b);
- case 16:
+ case DIMUSE_C_GET_HOOK:
return cmdsGetHook(a);
- case 17:
+ case DIMUSE_C_SET_TRIGGER:
return _triggersHandler->setTrigger(a, marker, c, d, e, f, g, h, i, j, k, l, m, n);
- case 18:
+ case DIMUSE_C_CHECK_TRIGGER:
return _triggersHandler->checkTrigger(a, marker, c);
- case 19:
+ case DIMUSE_C_CLEAR_TRIGGER:
return _triggersHandler->clearTrigger(a, marker, c);
- case 20:
+ case DIMUSE_C_DEFER_CMD:
return _triggersHandler->deferCommand(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
- case 21:
+ case DIMUSE_C_GET_MARKER_SYNCS:
_vm->_sound->extractSyncsFromDiMUSEMarker((char *)ptr);
break;
- case 25:
+ case DIMUSE_C_START_STREAM:
return waveStartStream(a, b, c);
- case 26:
+ case DIMUSE_C_SWITCH_STREAM:
if (_isEarlyDiMUSE)
return waveSwitchStream(a, b, ptr, d, e);
else
return waveSwitchStream(a, b, c, d, e);
- case 27:
+ case DIMUSE_C_PROCESS_STREAMS:
return waveProcessStreams();
- case 29:
+ case DIMUSE_C_FEED_STREAM:
return waveFeedStream(a, ptr, c, d);
default:
debug(5, "IMuseDigital::cmdsHandleCmd(): bogus/unused opcode ignored (%d).", cmd);
diff --git a/engines/scumm/imuse_digi/dimuse_defs.h b/engines/scumm/imuse_digi/dimuse_defs.h
index 1eb71d3b12e..e4ac1a96064 100644
--- a/engines/scumm/imuse_digi/dimuse_defs.h
+++ b/engines/scumm/imuse_digi/dimuse_defs.h
@@ -53,6 +53,11 @@ namespace Scumm {
#define DIMUSE_BUFFER_MUSIC 2
#define DIMUSE_BUFFER_SMUSH 3
+#define DIMUSE_TIMER_BASE_RATE_HZ 50
+#define DIMUSE_TIMER_BASE_RATE_USEC 20000 // 1000000 / 50Hz
+#define DIMUSE_TIMER_GAIN_RED_RATE_USEC 100000 // 1000000 / 10Hz
+#define DIMUSE_TIMER_FADES_RATE_USEC 16667 // 1000000 / 60Hz
+
// Parameters IDs
#define DIMUSE_P_BOGUS_ID 0x0
#define DIMUSE_P_SND_TRACK_NUM 0x100
@@ -70,6 +75,55 @@ namespace Scumm {
#define DIMUSE_P_STREAM_BUFID 0x1900
#define DIMUSE_P_SND_POS_IN_MS 0x1A00
+// Soundkludge command IDs
+#define DIMUSE_C_KLUDGE_SET_STATE 0x1000
+#define DIMUSE_C_KLUDGE_SET_SEQUENCE 0x1001
+#define DIMUSE_C_KLUDGE_SET_CUE_POINT 0x1002
+#define DIMUSE_C_KLUDGE_SET_ATTRIBUTE 0x1003
+#define DIMUSE_C_KLUDGE_SET_SFX_VOLUME 0x2000
+#define DIMUSE_C_KLUDGE_SET_VOICE_VOLUME 0x2001
+#define DIMUSE_C_KLUDGE_SET_MUSIC_VOLUME 0x2002
+#define DIMUSE_C_KLUDGE_STOP_ALL_SNDS 10
+#define DIMUSE_C_KLUDGE_SET_PARAM 12
+#define DIMUSE_C_KLUDGE_FADE_PARAM 14
+#define DIMUSE_C_KLUDGE_START_STREAM 25
+#define DIMUSE_C_KLUDGE_SWITCH_STREAM 26
+
+// Script command IDs
+#define DIMUSE_C_SCRIPT_INIT 0
+#define DIMUSE_C_SCRIPT_TERMINATE 1
+#define DIMUSE_C_SCRIPT_SAVE 2
+#define DIMUSE_C_SCRIPT_RESTORE 3
+#define DIMUSE_C_SCRIPT_REFRESH 4
+#define DIMUSE_C_SCRIPT_SET_STATE 5
+#define DIMUSE_C_SCRIPT_SET_SEQUENCE 6
+#define DIMUSE_C_SCRIPT_CUE_POINT 7
+#define DIMUSE_C_SCRIPT_SET_ATTRIBUTE 8
+
+// Internal command IDs
+#define DIMUSE_C_INIT 0
+#define DIMUSE_C_PAUSE 3
+#define DIMUSE_C_RESUME 4
+#define DIMUSE_C_SET_GRP_VOL 7
+#define DIMUSE_C_START_SND 8
+#define DIMUSE_C_STOP_SND 9
+#define DIMUSE_C_STOP_ALL_SNDS 10
+#define DIMUSE_C_GET_NEXT_SND 11
+#define DIMUSE_C_SET_PARAM 12
+#define DIMUSE_C_GET_PARAM 13
+#define DIMUSE_C_FADE_PARAM 14
+#define DIMUSE_C_SET_HOOK 15
+#define DIMUSE_C_GET_HOOK 16
+#define DIMUSE_C_SET_TRIGGER 17
+#define DIMUSE_C_CHECK_TRIGGER 18
+#define DIMUSE_C_CLEAR_TRIGGER 19
+#define DIMUSE_C_DEFER_CMD 20
+#define DIMUSE_C_GET_MARKER_SYNCS 21
+#define DIMUSE_C_START_STREAM 25
+#define DIMUSE_C_SWITCH_STREAM 26
+#define DIMUSE_C_PROCESS_STREAMS 27
+#define DIMUSE_C_FEED_STREAM 29
+
struct IMuseDigiDispatch;
struct IMuseDigiTrack;
struct IMuseDigiStreamZone;
diff --git a/engines/scumm/imuse_digi/dimuse_engine.cpp b/engines/scumm/imuse_digi/dimuse_engine.cpp
index a7b38204578..76948da8ce5 100644
--- a/engines/scumm/imuse_digi/dimuse_engine.cpp
+++ b/engines/scumm/imuse_digi/dimuse_engine.cpp
@@ -47,8 +47,8 @@ IMuseDigital::IMuseDigital(ScummEngine_v7 *scumm, Audio::Mixer *mixer)
assert(mixer);
// 50 Hz rate for the callback
- _callbackFps = 50;
- _usecPerInt = 20000;
+ _callbackFps = DIMUSE_TIMER_BASE_RATE_HZ;
+ _usecPerInt = DIMUSE_TIMER_BASE_RATE_USEC;
_splayer = nullptr;
_isEarlyDiMUSE = (_vm->_game.id == GID_FT || (_vm->_game.id == GID_DIG && _vm->_game.features & GF_DEMO));
@@ -402,19 +402,19 @@ void IMuseDigital::diMUSEHeartbeat() {
// Handle fades and triggers
_cmdsRunning60HzCount += _usecPerInt;
- while (_cmdsRunning60HzCount >= 16667) {
- _cmdsRunning60HzCount -= 16667;
+ while (_cmdsRunning60HzCount >= DIMUSE_TIMER_FADES_RATE_USEC) {
+ _cmdsRunning60HzCount -= DIMUSE_TIMER_FADES_RATE_USEC;
_fadesHandler->loop();
_triggersHandler->loop();
}
_cmdsRunning10HzCount += _usecPerInt;
- if (_cmdsRunning10HzCount < 100000)
+ if (_cmdsRunning10HzCount < DIMUSE_TIMER_GAIN_RED_RATE_USEC)
return;
do {
// SPEECH GAIN REDUCTION 10Hz
- _cmdsRunning10HzCount -= 100000;
+ _cmdsRunning10HzCount -= DIMUSE_TIMER_GAIN_RED_RATE_USEC;
soundId = 0;
musicTargetVolume = _groupsHandler->setGroupVol(DIMUSE_GROUP_MUSIC, -1);
while (1) { // Check all tracks to see if there's a speech file playing
@@ -466,7 +466,7 @@ void IMuseDigital::diMUSEHeartbeat() {
_groupsHandler->setGroupVol(DIMUSE_GROUP_MUSICEFF, musicVol);
}
- } while (_cmdsRunning10HzCount >= 100000);
+ } while (_cmdsRunning10HzCount >= DIMUSE_TIMER_GAIN_RED_RATE_USEC);
}
void IMuseDigital::setPriority(int soundId, int priority) {
@@ -684,52 +684,45 @@ void IMuseDigital::parseScriptCmds(int cmd, int soundId, int sub_cmd, int d, int
int id;
int volume = b;
switch (cmd) {
- case 0x1000:
- // SetState
+ case DIMUSE_C_KLUDGE_SET_STATE:
diMUSESetState(soundId);
break;
- case 0x1001:
- // SetSequence
+ case DIMUSE_C_KLUDGE_SET_SEQUENCE:
diMUSESetSequence(soundId);
break;
- case 0x1002:
- // SetCuePoint
+ case DIMUSE_C_KLUDGE_SET_CUE_POINT:
diMUSESetCuePoint(soundId);
break;
- case 0x1003:
- // SetAttribute
+ case DIMUSE_C_KLUDGE_SET_ATTRIBUTE:
diMUSESetAttribute(b, c);
break;
- case 0x2000:
- // SetGroupSfxVolume
+ case DIMUSE_C_KLUDGE_SET_SFX_VOLUME:
if (!_vm->isUsingOriginalGUI()) {
volume = CLIP(_mixer->getVolumeForSoundType(Audio::Mixer::kSFXSoundType) / 2, 0, 127);
}
diMUSESetSFXGroupVol(volume);
break;
- case 0x2001:
- // SetGroupVoiceVolume
+ case DIMUSE_C_KLUDGE_SET_VOICE_VOLUME:
if (!_vm->isUsingOriginalGUI()) {
volume = CLIP(_mixer->getVolumeForSoundType(Audio::Mixer::kSpeechSoundType) / 2, 0, 127);
}
diMUSESetVoiceGroupVol(volume);
break;
- case 0x2002:
- // SetGroupMusicVolume
+ case DIMUSE_C_KLUDGE_SET_MUSIC_VOLUME:
if (!_vm->isUsingOriginalGUI()) {
volume = CLIP(_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 2, 0, 127);
}
diMUSESetMusicGroupVol(volume);
break;
- case 10: // StopAllSounds
- case 12: // SetParam
- case 14: // FadeParam
+ case DIMUSE_C_KLUDGE_STOP_ALL_SNDS:
+ case DIMUSE_C_KLUDGE_SET_PARAM:
+ case DIMUSE_C_KLUDGE_FADE_PARAM:
cmdsHandleCmd(cmd, nullptr, soundId, sub_cmd, d, e, f, g, h, i, j, k, l, m, n, o);
break;
- case 25: // OpenSound
+ case DIMUSE_C_KLUDGE_START_STREAM:
if (_vm->_game.id == GID_FT) {
id = getSoundIdByName("kstand");
_filesHandler->openSound(id);
@@ -740,8 +733,7 @@ void IMuseDigital::parseScriptCmds(int cmd, int soundId, int sub_cmd, int d, int
}
break;
- case 26:
- // Special opcode used in place of successive setState instructions
+ case DIMUSE_C_KLUDGE_SWITCH_STREAM:
if (_vm->_game.id == GID_DIG && _vm->_game.features & GF_DEMO) {
_filesHandler->openSound(c);
diMUSESwitchStream(soundId, c, _ftCrossfadeBuffer, sizeof(_ftCrossfadeBuffer), 0);
@@ -763,15 +755,15 @@ int IMuseDigital::diMUSETerminate() {
}
int IMuseDigital::diMUSEInitialize() {
- return cmdsHandleCmd(0);
+ return cmdsHandleCmd(DIMUSE_C_INIT);
}
int IMuseDigital::diMUSEPause() {
- return cmdsHandleCmd(3);
+ return cmdsHandleCmd(DIMUSE_C_PAUSE);
}
int IMuseDigital::diMUSEResume() {
- return cmdsHandleCmd(4);
+ return cmdsHandleCmd(DIMUSE_C_RESUME);
}
void IMuseDigital::diMUSESaveLoad(Common::Serializer &ser) {
@@ -779,62 +771,62 @@ void IMuseDigital::diMUSESaveLoad(Common::Serializer &ser) {
}
int IMuseDigital::diMUSESetGroupVol(int groupId, int volume) {
- return cmdsHandleCmd(7, nullptr, groupId, volume);
+ return cmdsHandleCmd(DIMUSE_C_SET_GRP_VOL, nullptr, groupId, volume);
}
int IMuseDigital::diMUSEStartSound(int soundId, int priority) {
- return cmdsHandleCmd(8, nullptr, soundId, priority);
+ return cmdsHandleCmd(DIMUSE_C_START_SND, nullptr, soundId, priority);
}
int IMuseDigital::diMUSEStopSound(int soundId) {
debug(5, "IMuseDigital::diMUSEStopSound(): %d", soundId);
- return cmdsHandleCmd(9, nullptr, soundId);
+ return cmdsHandleCmd(DIMUSE_C_STOP_SND, nullptr, soundId);
}
int IMuseDigital::diMUSEStopAllSounds() {
debug(5, "IMuseDigital::diMUSEStopAllSounds()");
- return cmdsHandleCmd(10);
+ return cmdsHandleCmd(DIMUSE_C_STOP_ALL_SNDS);
}
int IMuseDigital::diMUSEGetNextSound(int soundId) {
- return cmdsHandleCmd(11, nullptr, soundId);
+ return cmdsHandleCmd(DIMUSE_C_GET_NEXT_SND, nullptr, soundId);
}
int IMuseDigital::diMUSESetParam(int soundId, int paramId, int value) {
- return cmdsHandleCmd(12, nullptr, soundId, paramId, value);
+ return cmdsHandleCmd(DIMUSE_C_SET_PARAM, nullptr, soundId, paramId, value);
}
int IMuseDigital::diMUSEGetParam(int soundId, int paramId) {
- return cmdsHandleCmd(13, nullptr, soundId, paramId);
+ return cmdsHandleCmd(DIMUSE_C_GET_PARAM, nullptr, soundId, paramId);
}
int IMuseDigital::diMUSEFadeParam(int soundId, int opcode, int destValue, int fadeLength) {
- return cmdsHandleCmd(14, nullptr, soundId, opcode, destValue, fadeLength);
+ return cmdsHandleCmd(DIMUSE_C_FADE_PARAM, nullptr, soundId, opcode, destValue, fadeLength);
}
int IMuseDigital::diMUSESetHook(int soundId, int hookId) {
- return cmdsHandleCmd(15, nullptr, soundId, hookId);
+ return cmdsHandleCmd(DIMUSE_C_SET_HOOK, nullptr, soundId, hookId);
}
int IMuseDigital::diMUSESetTrigger(int soundId, int marker, int opcode, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m, int n) {
- return cmdsHandleCmd(17, nullptr, soundId, marker, opcode, d, e, f, g, h, i, j, k, l, m, n);
+ return cmdsHandleCmd(DIMUSE_C_SET_TRIGGER, nullptr, soundId, marker, opcode, d, e, f, g, h, i, j, k, l, m, n);
}
int IMuseDigital::diMUSEStartStream(int soundId, int priority, int bufferId) {
- return cmdsHandleCmd(25, nullptr, soundId, priority, bufferId);
+ return cmdsHandleCmd(DIMUSE_C_START_STREAM, nullptr, soundId, priority, bufferId);
}
int IMuseDigital::diMUSESwitchStream(int oldSoundId, int newSoundId, int fadeDelay, int fadeSyncFlag2, int fadeSyncFlag1) {
- return cmdsHandleCmd(26, nullptr, oldSoundId, newSoundId, fadeDelay, fadeSyncFlag2, fadeSyncFlag1);
+ return cmdsHandleCmd(DIMUSE_C_SWITCH_STREAM, nullptr, oldSoundId, newSoundId, fadeDelay, fadeSyncFlag2, fadeSyncFlag1);
}
// Variation for FT and DIG demo
int IMuseDigital::diMUSESwitchStream(int oldSoundId, int newSoundId, uint8 *crossfadeBuffer, int crossfadeBufferSize, int vocLoopFlag) {
- return cmdsHandleCmd(26, crossfadeBuffer, oldSoundId, newSoundId, -1, crossfadeBufferSize, vocLoopFlag);
+ return cmdsHandleCmd(DIMUSE_C_SWITCH_STREAM, crossfadeBuffer, oldSoundId, newSoundId, -1, crossfadeBufferSize, vocLoopFlag);
}
int IMuseDigital::diMUSEProcessStreams() {
- return cmdsHandleCmd(27);
+ return cmdsHandleCmd(DIMUSE_C_PROCESS_STREAMS);
}
void IMuseDigital::diMUSEQueryStream(int soundId, int32 &bufSize, int32 &criticalSize, int32 &freeSpace, int &paused) {
@@ -842,7 +834,7 @@ void IMuseDigital::diMUSEQueryStream(int soundId, int32 &bufSize, int32 &critica
}
int IMuseDigital::diMUSEFeedStream(int soundId, uint8 *srcBuf, int32 sizeToFeed, int paused) {
- return cmdsHandleCmd(29, srcBuf, soundId, -1, sizeToFeed, paused);
+ return cmdsHandleCmd(DIMUSE_C_FEED_STREAM, srcBuf, soundId, -1, sizeToFeed, paused);
}
int IMuseDigital::diMUSELipSync(int soundId, int syncId, int msPos, int32 &width, int32 &height) {
@@ -899,27 +891,27 @@ void IMuseDigital::diMUSEUpdateGroupVolumes() {
}
int IMuseDigital::diMUSEInitializeScript() {
- return scriptParse(0, -1, -1);
+ return scriptParse(DIMUSE_C_SCRIPT_INIT, -1, -1);
}
void IMuseDigital::diMUSERefreshScript() {
- scriptParse(4, -1, -1);
+ scriptParse(DIMUSE_C_SCRIPT_REFRESH, -1, -1);
}
int IMuseDigital::diMUSESetState(int soundId) {
- return scriptParse(5, soundId, -1);
+ return scriptParse(DIMUSE_C_SCRIPT_SET_STATE, soundId, -1);
}
int IMuseDigital::diMUSESetSequence(int soundId) {
- return scriptParse(6, soundId, -1);
+ return scriptParse(DIMUSE_C_SCRIPT_SET_SEQUENCE, soundId, -1);
}
int IMuseDigital::diMUSESetCuePoint(int cueId) {
- return scriptParse(7, cueId, -1);
+ return scriptParse(DIMUSE_C_SCRIPT_CUE_POINT, cueId, -1);
}
int IMuseDigital::diMUSESetAttribute(int attrIndex, int attrVal) {
- return scriptParse(8, attrIndex, attrVal);
+ return scriptParse(DIMUSE_C_SCRIPT_SET_ATTRIBUTE, attrIndex, attrVal);
}
void IMuseDigital::diMUSEEnableSpooledMusic() {
diff --git a/engines/scumm/imuse_digi/dimuse_scripts.cpp b/engines/scumm/imuse_digi/dimuse_scripts.cpp
index a2d94af2573..cea405ea4a8 100644
--- a/engines/scumm/imuse_digi/dimuse_scripts.cpp
+++ b/engines/scumm/imuse_digi/dimuse_scripts.cpp
@@ -30,7 +30,7 @@ namespace Scumm {
int IMuseDigital::scriptParse(int cmd, int a, int b) {
if (_scriptInitializedFlag || !cmd) {
switch (cmd) {
- case 0:
+ case DIMUSE_C_SCRIPT_INIT:
if (_scriptInitializedFlag) {
debug(5, "IMuseDigital::scriptParse(): script module already initialized");
return -1;
@@ -38,25 +38,25 @@ int IMuseDigital::scriptParse(int cmd, int a, int b) {
_scriptInitializedFlag = 1;
return scriptInit();
}
- case 1:
+ case DIMUSE_C_SCRIPT_TERMINATE:
_scriptInitializedFlag = 0;
return scriptTerminate();
- case 2: // script_save(a, b);
- case 3: // script_restore(a);
+ case DIMUSE_C_SCRIPT_SAVE:
+ case DIMUSE_C_SCRIPT_RESTORE:
break;
- case 4:
+ case DIMUSE_C_SCRIPT_REFRESH:
scriptRefresh();
return 0;
- case 5:
+ case DIMUSE_C_SCRIPT_SET_STATE:
scriptSetState(a);
return 0;
- case 6:
+ case DIMUSE_C_SCRIPT_SET_SEQUENCE:
scriptSetSequence(a);
return 0;
- case 7:
+ case DIMUSE_C_SCRIPT_CUE_POINT:
scriptSetCuePoint(a);
return 0;
- case 8:
+ case DIMUSE_C_SCRIPT_SET_ATTRIBUTE:
return scriptSetAttribute(a, b);
default:
debug(5, "IMuseDigital::scriptParse(): unrecognized opcode (%d)", cmd);
More information about the Scummvm-git-logs
mailing list