Address comments

This commit is contained in:
cam900 2023-02-06 09:16:28 +09:00
parent 03e0c8d8ee
commit 2c5dc0875a
7 changed files with 14 additions and 44 deletions

View file

@ -55,7 +55,7 @@ template<typename T> struct SharedChannel {
freqChanged=true; freqChanged=true;
} }
} }
virtual void macroInit(DivInstrument* which) { void macroInit(DivInstrument* which) {
std.init(which); std.init(which);
pitch2=0; pitch2=0;
arpOff=0; arpOff=0;

View file

@ -185,17 +185,6 @@ class DivPlatformES5506: public DivDispatch, public es550x_intf {
signed int oscOut; signed int oscOut;
DivInstrumentES5506::Filter filter; DivInstrumentES5506::Filter filter;
DivInstrumentES5506::Envelope envelope; DivInstrumentES5506::Envelope envelope;
virtual void macroInit(DivInstrument* which) override {
SharedChannel<unsigned int>::macroInit(which);
if (std.ex1.mode==2) {
k1Offs=0;
}
if (std.ex1.mode==2) {
k2Offs=0;
}
k1Prev=0xffff;
k2Prev=0xffff;
}
Channel(): Channel():
SharedChannel<unsigned int>(0xff), SharedChannel<unsigned int>(0xff),
pcm(PCM()), pcm(PCM()),

View file

@ -820,7 +820,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
DivSample* s=parent->getSample(chan[c.chan].sample); DivSample* s=parent->getSample(chan[c.chan].sample);
immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff); immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff);
immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16); immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16);
int end=((sampleOffB[chan[c.chan].sample]+s->lengthB+0xff)&~0xff)-1; int end=sampleOffB[chan[c.chan].sample]+s->lengthB-1;
immWrite(0x14,(end>>8)&0xff); immWrite(0x14,(end>>8)&0xff);
immWrite(0x15,end>>16); immWrite(0x15,end>>16);
immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6));
@ -851,7 +851,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
DivSample* s=parent->getSample(12*sampleBank+c.value%12); DivSample* s=parent->getSample(12*sampleBank+c.value%12);
immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff); immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff);
immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16); immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16);
int end=((sampleOffB[chan[c.chan].sample]+s->lengthB+0xff)&~0xff)-1; int end=sampleOffB[chan[c.chan].sample]+s->lengthB-1;
immWrite(0x14,(end>>8)&0xff); immWrite(0x14,(end>>8)&0xff);
immWrite(0x15,end>>16); immWrite(0x15,end>>16);
immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6));
@ -891,7 +891,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
DivSample* s=parent->getSample(chan[c.chan].sample); DivSample* s=parent->getSample(chan[c.chan].sample);
immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff); immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff);
immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16); immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16);
int end=((sampleOffA[chan[c.chan].sample]+s->lengthA+0xff)&~0xff)-1; int end=sampleOffA[chan[c.chan].sample]+s->lengthA-1;
immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff); immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff);
immWrite(0x128+c.chan-adpcmAChanOffs,end>>16); immWrite(0x128+c.chan-adpcmAChanOffs,end>>16);
immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol)); immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol));
@ -922,7 +922,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
DivSample* s=parent->getSample(12*sampleBank+c.value%12); DivSample* s=parent->getSample(12*sampleBank+c.value%12);
immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff); immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff);
immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16); immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16);
int end=((sampleOffA[chan[c.chan].sample]+s->lengthA+0xff)&~0xff)-1; int end=sampleOffA[chan[c.chan].sample]+s->lengthA-1;
immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff); immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff);
immWrite(0x128+c.chan-adpcmAChanOffs,end>>16); immWrite(0x128+c.chan-adpcmAChanOffs,end>>16);
immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol)); immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol));

View file

@ -887,7 +887,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
DivSample* s=parent->getSample(chan[c.chan].sample); DivSample* s=parent->getSample(chan[c.chan].sample);
immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff); immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff);
immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16); immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16);
int end=((sampleOffB[chan[c.chan].sample]+s->lengthB+0xff)&~0xff)-1; int end=sampleOffB[chan[c.chan].sample]+s->lengthB-1;
immWrite(0x14,(end>>8)&0xff); immWrite(0x14,(end>>8)&0xff);
immWrite(0x15,end>>16); immWrite(0x15,end>>16);
immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6));
@ -918,7 +918,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
DivSample* s=parent->getSample(12*sampleBank+c.value%12); DivSample* s=parent->getSample(12*sampleBank+c.value%12);
immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff); immWrite(0x12,(sampleOffB[chan[c.chan].sample]>>8)&0xff);
immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16); immWrite(0x13,sampleOffB[chan[c.chan].sample]>>16);
int end=((sampleOffB[chan[c.chan].sample]+s->lengthB+0xff)&~0xff)-1; int end=sampleOffB[chan[c.chan].sample]+s->lengthB-1;
immWrite(0x14,(end>>8)&0xff); immWrite(0x14,(end>>8)&0xff);
immWrite(0x15,end>>16); immWrite(0x15,end>>16);
immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6)); immWrite(0x11,isMuted[c.chan]?0:(chan[c.chan].pan<<6));
@ -958,7 +958,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
DivSample* s=parent->getSample(chan[c.chan].sample); DivSample* s=parent->getSample(chan[c.chan].sample);
immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff); immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff);
immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16); immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16);
int end=((sampleOffA[chan[c.chan].sample]+s->lengthA+0xff)&~0xff)-1; int end=sampleOffA[chan[c.chan].sample]+s->lengthA-1;
immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff); immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff);
immWrite(0x128+c.chan-adpcmAChanOffs,end>>16); immWrite(0x128+c.chan-adpcmAChanOffs,end>>16);
immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol)); immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol));
@ -989,7 +989,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
DivSample* s=parent->getSample(12*sampleBank+c.value%12); DivSample* s=parent->getSample(12*sampleBank+c.value%12);
immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff); immWrite(0x110+c.chan-adpcmAChanOffs,(sampleOffA[chan[c.chan].sample]>>8)&0xff);
immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16); immWrite(0x118+c.chan-adpcmAChanOffs,sampleOffA[chan[c.chan].sample]>>16);
int end=((sampleOffA[chan[c.chan].sample]+s->lengthA+0xff)&~0xff)-1; int end=sampleOffA[chan[c.chan].sample]+s->lengthA-1;
immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff); immWrite(0x120+c.chan-adpcmAChanOffs,(end>>8)&0xff);
immWrite(0x128+c.chan-adpcmAChanOffs,end>>16); immWrite(0x128+c.chan-adpcmAChanOffs,end>>16);
immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol)); immWrite(0x108+c.chan-adpcmAChanOffs,isMuted[c.chan]?0:((chan[c.chan].pan<<6)|chan[c.chan].outVol));

View file

@ -53,8 +53,7 @@ enum DivResampleFilters {
DIV_RESAMPLE_CUBIC, DIV_RESAMPLE_CUBIC,
DIV_RESAMPLE_BLEP, DIV_RESAMPLE_BLEP,
DIV_RESAMPLE_SINC, DIV_RESAMPLE_SINC,
DIV_RESAMPLE_BEST, DIV_RESAMPLE_BEST
DIV_RESAMPLE_MAX // for identify boundary
}; };
struct DivSampleHistory { struct DivSampleHistory {

View file

@ -158,7 +158,7 @@ const char* sampleDepths[DIV_SAMPLE_DEPTH_MAX]={
"16-bit PCM" "16-bit PCM"
}; };
const char* resampleStrats[DIV_RESAMPLE_MAX]={ const char* resampleStrats[]={
"none", "none",
"linear", "linear",
"cubic spline", "cubic spline",

View file

@ -4384,7 +4384,7 @@ void FurnaceGUI::drawInsEdit() {
sName=e->song.sample[sampleMap.map]->name; sName=e->song.sample[sampleMap.map]->name;
} }
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
if (ImGui::BeginCombo(fmt::sprintf("##SampleMap_Index_%d",i).c_str(),sName.c_str())) { if (ImGui::BeginCombo("##SM",sName.c_str())) {
String id; String id;
if (ImGui::Selectable("-- empty --",sampleMap.map==-1)) { PARAMETER if (ImGui::Selectable("-- empty --",sampleMap.map==-1)) { PARAMETER
sampleMap.map=-1; sampleMap.map=-1;
@ -4400,11 +4400,10 @@ void FurnaceGUI::drawInsEdit() {
} }
/*ImGui::TableNextColumn(); /*ImGui::TableNextColumn();
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
if (ImGui::InputInt(fmt::sprintf("##SampleMap_Freq_%d",i).c_str(),&sampleMap.freq,50,500)) { PARAMETER if (ImGui::InputInt("##SF",&sampleMap.freq,50,500)) { PARAMETER
if (sampleMap.freq<0) sampleMap.freq=0; if (sampleMap.freq<0) sampleMap.freq=0;
if (sampleMap.freq>262144) sampleMap.freq=262144; if (sampleMap.freq>262144) sampleMap.freq=262144;
} }*/
*/
ImGui::PopID(); ImGui::PopID();
} }
ImGui::EndTable(); ImGui::EndTable();
@ -5146,23 +5145,6 @@ void FurnaceGUI::drawInsEdit() {
if (ins->type==DIV_INS_SAA1099) waveMax=2; if (ins->type==DIV_INS_SAA1099) waveMax=2;
if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPZ || ins->type==DIV_INS_OPM) waveMax=0; if (ins->type==DIV_INS_FM || ins->type==DIV_INS_OPL || ins->type==DIV_INS_OPL_DRUMS || ins->type==DIV_INS_OPZ || ins->type==DIV_INS_OPM) waveMax=0;
if (ins->type==DIV_INS_MIKEY) waveMax=0; if (ins->type==DIV_INS_MIKEY) waveMax=0;
if ((ins->type==DIV_INS_AMIGA && !ins->amiga.useWave) || ins->type==DIV_INS_ES5506) {
if (!ins->amiga.useWave) {
waveLabel="Sample index";
waveMax=ins->amiga.useNoteMap?120:MAX(0,(int)(e->song.sampleLen)-1);
} else {
waveMax=MAX(0,(int)(e->song.waveLen)-1);
}
} else if (ins->type==DIV_INS_GB ||
(ins->type==DIV_INS_AMIGA && ins->amiga.useWave) ||
ins->type==DIV_INS_X1_010 ||
ins->type==DIV_INS_N163 ||
ins->type==DIV_INS_FDS ||
ins->type==DIV_INS_SWAN ||
ins->type==DIV_INS_PCE ||
ins->type==DIV_INS_SCC) {
waveMax=MAX(0,(int)(e->song.waveLen)-1);
}
if (ins->type==DIV_INS_MULTIPCM) waveMax=0; if (ins->type==DIV_INS_MULTIPCM) waveMax=0;
if (ins->type==DIV_INS_ADPCMA) waveMax=0; if (ins->type==DIV_INS_ADPCMA) waveMax=0;
if (ins->type==DIV_INS_ADPCMB) waveMax=0; if (ins->type==DIV_INS_ADPCMB) waveMax=0;