mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-27 06:53:01 +00:00
Add support YM2610* ADPCM-B Repeat flag, Add YM2610 ADPCM notes in GUI
This commit is contained in:
parent
ac1c65fd62
commit
ddf341dfc0
3 changed files with 13 additions and 6 deletions
|
@ -698,7 +698,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
|
||||||
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));
|
||||||
immWrite(0x10,0x80); // start
|
immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat
|
||||||
if (c.value!=DIV_NOTE_NULL) {
|
if (c.value!=DIV_NOTE_NULL) {
|
||||||
chan[c.chan].note=c.value;
|
chan[c.chan].note=c.value;
|
||||||
chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note);
|
chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note);
|
||||||
|
@ -724,7 +724,7 @@ int DivPlatformYM2610::dispatch(DivCommand c) {
|
||||||
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));
|
||||||
immWrite(0x10,0x80); // start
|
immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat
|
||||||
chan[c.chan].baseFreq=(((unsigned int)s->rate)<<16)/(chipClock/144);
|
chan[c.chan].baseFreq=(((unsigned int)s->rate)<<16)/(chipClock/144);
|
||||||
chan[c.chan].freqChanged=true;
|
chan[c.chan].freqChanged=true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -761,7 +761,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
|
||||||
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));
|
||||||
immWrite(0x10,0x80); // start
|
immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat
|
||||||
if (c.value!=DIV_NOTE_NULL) {
|
if (c.value!=DIV_NOTE_NULL) {
|
||||||
chan[c.chan].note=c.value;
|
chan[c.chan].note=c.value;
|
||||||
chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note);
|
chan[c.chan].baseFreq=NOTE_ADPCMB(chan[c.chan].note);
|
||||||
|
@ -787,7 +787,7 @@ int DivPlatformYM2610B::dispatch(DivCommand c) {
|
||||||
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));
|
||||||
immWrite(0x10,0x80); // start
|
immWrite(0x10,(s->loopStart>=0)?0x90:0x80); // start/repeat
|
||||||
chan[c.chan].baseFreq=(((unsigned int)s->rate)<<16)/(chipClock/144);
|
chan[c.chan].baseFreq=(((unsigned int)s->rate)<<16)/(chipClock/144);
|
||||||
chan[c.chan].freqChanged=true;
|
chan[c.chan].freqChanged=true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1309,18 +1309,25 @@ void FurnaceGUI::drawSampleEdit() {
|
||||||
ImGui::Text("notes:");
|
ImGui::Text("notes:");
|
||||||
if (sample->loopStart>=0) {
|
if (sample->loopStart>=0) {
|
||||||
considerations=true;
|
considerations=true;
|
||||||
ImGui::Text("- sample won't loop on Neo Geo ADPCM");
|
ImGui::Text("- sample won't loop on Neo Geo ADPCM-A");
|
||||||
if (sample->loopStart&1) {
|
if (sample->loopStart&1) {
|
||||||
ImGui::Text("- sample loop start will be aligned to the nearest even sample on Amiga");
|
ImGui::Text("- sample loop start will be aligned to the nearest even sample on Amiga");
|
||||||
}
|
}
|
||||||
|
if (sample->loopStart>0) {
|
||||||
|
ImGui::Text("- sample loop start will be ignored on Neo Geo ADPCM-B");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (sample->samples&1) {
|
if (sample->samples&1) {
|
||||||
considerations=true;
|
considerations=true;
|
||||||
ImGui::Text("- sample length will be aligned to the nearest even sample on Amiga");
|
ImGui::Text("- sample length will be aligned to the nearest even sample on Amiga");
|
||||||
}
|
}
|
||||||
|
if (sample->samples&511) {
|
||||||
|
considerations=true;
|
||||||
|
ImGui::Text("- sample length will be aligned to 512 sample on Neo Geo ADPCM");
|
||||||
|
}
|
||||||
if (sample->samples>65535) {
|
if (sample->samples>65535) {
|
||||||
considerations=true;
|
considerations=true;
|
||||||
ImGui::Text("- maximum sample length on Sega PCM is 65536 samples");
|
ImGui::Text("- maximum sample length on Sega PCM and QSound is 65536 samples");
|
||||||
}
|
}
|
||||||
if (sample->samples>2097151) {
|
if (sample->samples>2097151) {
|
||||||
considerations=true;
|
considerations=true;
|
||||||
|
|
Loading…
Reference in a new issue