Namco 163: get rid of wave load
part of some serious work... the global wave load feature will be improved
This commit is contained in:
parent
b42614189f
commit
d779b4c516
|
|
@ -249,35 +249,6 @@ void DivPlatformN163::tick(bool sysTick) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (chan[i].std.ex3.had) {
|
|
||||||
if (chan[i].loadWave!=chan[i].std.ex3.val) {
|
|
||||||
chan[i].loadWave=chan[i].std.ex3.val;
|
|
||||||
if (chan[i].loadMode&0x2) {
|
|
||||||
updateWave(i,chan[i].loadWave,chan[i].loadPos,chan[i].loadLen&0xfc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (chan[i].std.alg.had) {
|
|
||||||
if (chan[i].loadPos!=chan[i].std.alg.val) {
|
|
||||||
chan[i].loadPos=chan[i].std.alg.val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (chan[i].std.fb.had) {
|
|
||||||
if (chan[i].loadLen!=(chan[i].std.fb.val&0xfc)) {
|
|
||||||
chan[i].loadLen=chan[i].std.fb.val&0xfc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (chan[i].std.fms.had) {
|
|
||||||
if ((chan[i].loadMode&0x2)!=(chan[i].std.fms.val&0x2)) { // load when every waveform changes
|
|
||||||
chan[i].loadMode=(chan[i].loadMode&~0x2)|(chan[i].std.fms.val&0x2);
|
|
||||||
}
|
|
||||||
if ((chan[i].loadMode&0x1)!=(chan[i].std.fms.val&0x1)) { // load now
|
|
||||||
chan[i].loadMode=(chan[i].loadMode&~0x1)|(chan[i].std.fms.val&0x1);
|
|
||||||
if (chan[i].loadMode&0x1) { // rising edge
|
|
||||||
updateWave(i,chan[i].loadWave,chan[i].loadPos,chan[i].loadLen&0xfc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (chan[i].volumeChanged) {
|
if (chan[i].volumeChanged) {
|
||||||
if (chan[i].active && !isMuted[i]) {
|
if (chan[i].active && !isMuted[i]) {
|
||||||
chWriteMask(i,0x7,chan[i].resVol&0xf,0xf);
|
chWriteMask(i,0x7,chan[i].resVol&0xf,0xf);
|
||||||
|
|
@ -459,24 +430,6 @@ int DivPlatformN163::dispatch(DivCommand c) {
|
||||||
chan[c.chan].waveChanged=true;
|
chan[c.chan].waveChanged=true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DIV_CMD_N163_WAVE_LOAD:
|
|
||||||
chan[c.chan].loadWave=c.value;
|
|
||||||
if (chan[c.chan].loadMode&0x2) { // load when every waveform changes
|
|
||||||
updateWave(c.chan,chan[c.chan].loadWave,chan[c.chan].loadPos,chan[c.chan].loadLen);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DIV_CMD_N163_WAVE_LOADPOS:
|
|
||||||
chan[c.chan].loadPos=c.value;
|
|
||||||
break;
|
|
||||||
case DIV_CMD_N163_WAVE_LOADLEN:
|
|
||||||
chan[c.chan].loadLen=c.value&0xfc;
|
|
||||||
break;
|
|
||||||
case DIV_CMD_N163_WAVE_LOADMODE:
|
|
||||||
chan[c.chan].loadMode=c.value&0x3;
|
|
||||||
if (chan[c.chan].loadMode&0x1) { // load now
|
|
||||||
updateWave(c.chan,chan[c.chan].loadWave,chan[c.chan].loadPos,chan[c.chan].loadLen);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DIV_CMD_N163_GLOBAL_WAVE_LOAD:
|
case DIV_CMD_N163_GLOBAL_WAVE_LOAD:
|
||||||
loadWave=c.value;
|
loadWave=c.value;
|
||||||
if (loadMode&0x2) { // load when every waveform changes
|
if (loadMode&0x2) { // load when every waveform changes
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,6 @@ class DivPlatformN163: public DivDispatch {
|
||||||
short wave, wavePos, waveLen;
|
short wave, wavePos, waveLen;
|
||||||
short curWavePos, curWaveLen;
|
short curWavePos, curWaveLen;
|
||||||
unsigned char waveMode;
|
unsigned char waveMode;
|
||||||
short loadWave, loadPos, loadLen;
|
|
||||||
unsigned char loadMode;
|
|
||||||
bool volumeChanged;
|
bool volumeChanged;
|
||||||
bool waveChanged, waveUpdated;
|
bool waveChanged, waveUpdated;
|
||||||
DivWaveSynth ws;
|
DivWaveSynth ws;
|
||||||
|
|
@ -45,10 +43,6 @@ class DivPlatformN163: public DivDispatch {
|
||||||
curWavePos(0),
|
curWavePos(0),
|
||||||
curWaveLen(0),
|
curWaveLen(0),
|
||||||
waveMode(0),
|
waveMode(0),
|
||||||
loadWave(-1),
|
|
||||||
loadPos(0),
|
|
||||||
loadLen(0),
|
|
||||||
loadMode(0),
|
|
||||||
volumeChanged(false),
|
volumeChanged(false),
|
||||||
waveChanged(false),
|
waveChanged(false),
|
||||||
waveUpdated(false) {}
|
waveUpdated(false) {}
|
||||||
|
|
|
||||||
|
|
@ -1013,10 +1013,6 @@ void DivEngine::registerSystems() {
|
||||||
{0x11, {DIV_CMD_N163_WAVE_POSITION, "11xx: Set waveform position in RAM (single nibble unit)"}},
|
{0x11, {DIV_CMD_N163_WAVE_POSITION, "11xx: Set waveform position in RAM (single nibble unit)"}},
|
||||||
{0x12, {DIV_CMD_N163_WAVE_LENGTH, "12xx: Set waveform length in RAM (04 to FC, 4 nibble unit)"}},
|
{0x12, {DIV_CMD_N163_WAVE_LENGTH, "12xx: Set waveform length in RAM (04 to FC, 4 nibble unit)"}},
|
||||||
{0x13, {DIV_CMD_N163_WAVE_MODE, "130x: Change waveform update mode (0: off; bit 0: update now; bit 1: update when every waveform changes)"}},
|
{0x13, {DIV_CMD_N163_WAVE_MODE, "130x: Change waveform update mode (0: off; bit 0: update now; bit 1: update when every waveform changes)"}},
|
||||||
{0x14, {DIV_CMD_N163_WAVE_LOAD, "14xx: Select waveform for load to RAM"}},
|
|
||||||
{0x15, {DIV_CMD_N163_WAVE_LOADPOS, "15xx: Set waveform position for load to RAM (single nibble unit)"}},
|
|
||||||
{0x16, {DIV_CMD_N163_WAVE_LOADLEN, "16xx: Set waveform length for load to RAM (04 to FC, 4 nibble unit)"}},
|
|
||||||
{0x17, {DIV_CMD_N163_WAVE_LOADMODE, "170x: Change waveform load mode (0: off; bit 0: load now; bit 1: load when every waveform changes)"}},
|
|
||||||
{0x20, {DIV_CMD_N163_GLOBAL_WAVE_LOAD, "20xx: (Global) Select waveform for load to RAM"}},
|
{0x20, {DIV_CMD_N163_GLOBAL_WAVE_LOAD, "20xx: (Global) Select waveform for load to RAM"}},
|
||||||
{0x21, {DIV_CMD_N163_GLOBAL_WAVE_LOADPOS, "21xx: (Global) Set waveform position for load to RAM (single nibble unit)"}},
|
{0x21, {DIV_CMD_N163_GLOBAL_WAVE_LOADPOS, "21xx: (Global) Set waveform position for load to RAM (single nibble unit)"}},
|
||||||
{0x22, {DIV_CMD_N163_GLOBAL_WAVE_LOADLEN, "22xx: (Global) Set waveform length for load to RAM (04 to FC, 4 nibble unit)"}},
|
{0x22, {DIV_CMD_N163_GLOBAL_WAVE_LOADLEN, "22xx: (Global) Set waveform length for load to RAM (04 to FC, 4 nibble unit)"}},
|
||||||
|
|
|
||||||
|
|
@ -5755,8 +5755,6 @@ void FurnaceGUI::drawInsEdit() {
|
||||||
if (ex2Max>0) {
|
if (ex2Max>0) {
|
||||||
if (ins->type==DIV_INS_C64) {
|
if (ins->type==DIV_INS_C64) {
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER]));
|
macroList.push_back(FurnaceGUIMacroDesc("Resonance",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER]));
|
||||||
/*} else if (ins->type==DIV_INS_N163) {
|
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("Wave Update",&ins->std.ex2Macro,0,ex2Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,n163UpdateBits));*/
|
|
||||||
} else if (ins->type==DIV_INS_FDS) {
|
} else if (ins->type==DIV_INS_FDS) {
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("Mod Speed",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
macroList.push_back(FurnaceGUIMacroDesc("Mod Speed",&ins->std.ex2Macro,0,ex2Max,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
||||||
} else if (ins->type==DIV_INS_SU) {
|
} else if (ins->type==DIV_INS_SU) {
|
||||||
|
|
@ -5786,12 +5784,6 @@ void FurnaceGUI::drawInsEdit() {
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("Noise AND Mask",&ins->std.fbMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
|
macroList.push_back(FurnaceGUIMacroDesc("Noise AND Mask",&ins->std.fbMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("Noise OR Mask",&ins->std.fmsMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
|
macroList.push_back(FurnaceGUIMacroDesc("Noise OR Mask",&ins->std.fmsMacro,0,8,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
|
||||||
}
|
}
|
||||||
if (ins->type==DIV_INS_N163) {
|
|
||||||
/*macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Wave",&ins->std.ex3Macro,0,255,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Pos",&ins->std.algMacro,0,255,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Len",&ins->std.fbMacro,0,252,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("WaveLoad Trigger",&ins->std.fmsMacro,0,2,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,n163UpdateBits));*/
|
|
||||||
}
|
|
||||||
if (ins->type==DIV_INS_FDS) {
|
if (ins->type==DIV_INS_FDS) {
|
||||||
macroList.push_back(FurnaceGUIMacroDesc("Mod Position",&ins->std.ex3Macro,0,127,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
macroList.push_back(FurnaceGUIMacroDesc("Mod Position",&ins->std.ex3Macro,0,127,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue