Add 3xxx effect to set echo delay buffer length. Add documentation

This commit is contained in:
Ian Karlsson 2022-02-22 21:16:46 +01:00
parent b3908216f8
commit e32ef2d881
4 changed files with 30 additions and 1 deletions

View file

@ -98,6 +98,7 @@ enum DivDispatchCmds {
DIV_CMD_SAA_ENVELOPE,
DIV_CMD_QSOUND_ECHO_FEEDBACK,
DIV_CMD_QSOUND_ECHO_DELAY,
DIV_CMD_QSOUND_ECHO_LEVEL,
DIV_ALWAYS_SET_VOLUME,

View file

@ -257,6 +257,9 @@ const char* DivPlatformQSound::getEffectName(unsigned char effect) {
case 0x11:
return "11xx: Set channel echo level (00 to FF)";
break;
default:
if((effect & 0xf0) == 0x30)
return "3xxx: Set echo delay buffer length (000 to AA5)";
}
return NULL;
}
@ -433,6 +436,9 @@ int DivPlatformQSound::dispatch(DivCommand c) {
case DIV_CMD_QSOUND_ECHO_FEEDBACK:
immWrite(Q1_ECHO_FEEDBACK, c.value << 6);
break;
case DIV_CMD_QSOUND_ECHO_DELAY:
immWrite(Q1_ECHO_LENGTH, (c.value > 2725 ? 0xfff : 0xfff - (2725 - c.value)));
break;
case DIV_CMD_PITCH:
chan[c.chan].pitch=c.value;
chan[c.chan].freqChanged=true;

View file

@ -110,6 +110,7 @@ const char* cmdName[DIV_CMD_MAX]={
"SAA_ENVELOPE",
"QSOUND_ECHO_FEEDBACK",
"QSOUND_ECHO_DELAY",
"QSOUND_ECHO_LEVEL",
"ALWAYS_SET_VOLUME"
@ -230,7 +231,10 @@ bool DivEngine::perSystemEffect(int ch, unsigned char effect, unsigned char effe
dispatchCmd(DivCommand(DIV_CMD_QSOUND_ECHO_LEVEL,ch,effectVal));
break;
default:
return false;
if((effect & 0xf0) == 0x30)
dispatchCmd(DivCommand(DIV_CMD_QSOUND_ECHO_DELAY,ch,((effect & 0x0f) << 8) | effectVal));
else
return false;
}
break;
default: