Add GBA MinMod driver support
This commit is contained in:
parent
0b1d2e24d7
commit
2b9dd1caff
17 changed files with 996 additions and 26 deletions
|
|
@ -356,6 +356,10 @@ const char* es5506ControlModes[3]={
|
|||
"pause", "reverse", NULL
|
||||
};
|
||||
|
||||
const char* minModModeBits[3]={
|
||||
"invert right", "invert left", NULL
|
||||
};
|
||||
|
||||
const int orderedOps[4]={
|
||||
0, 2, 1, 3
|
||||
};
|
||||
|
|
@ -2525,7 +2529,7 @@ void FurnaceGUI::insTabSample(DivInstrument* ins) {
|
|||
ImGui::EndCombo();
|
||||
}
|
||||
// Wavetable
|
||||
if (ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SNES || ins->type==DIV_INS_GBA_DMA) {
|
||||
if (ins->type==DIV_INS_AMIGA || ins->type==DIV_INS_SNES || ins->type==DIV_INS_GBA_DMA || ins->type==DIV_INS_GBA_MINMOD) {
|
||||
const char* useWaveText=ins->type==DIV_INS_AMIGA?"Use wavetable (Amiga/Generic DAC only)":"Use wavetable";
|
||||
ImGui::BeginDisabled(ins->amiga.useNoteMap);
|
||||
P(ImGui::Checkbox(useWaveText,&ins->amiga.useWave));
|
||||
|
|
@ -6024,7 +6028,8 @@ void FurnaceGUI::drawInsEdit() {
|
|||
ins->type==DIV_INS_K053260 ||
|
||||
ins->type==DIV_INS_C140 ||
|
||||
ins->type==DIV_INS_C219 ||
|
||||
ins->type==DIV_INS_GBA_DMA) {
|
||||
ins->type==DIV_INS_GBA_DMA ||
|
||||
ins->type==DIV_INS_GBA_MINMOD) {
|
||||
insTabSample(ins);
|
||||
}
|
||||
if (ins->type==DIV_INS_N163) if (ImGui::BeginTabItem("Namco 163")) {
|
||||
|
|
@ -6469,7 +6474,8 @@ void FurnaceGUI::drawInsEdit() {
|
|||
ins->type==DIV_INS_SCC ||
|
||||
ins->type==DIV_INS_SNES ||
|
||||
ins->type==DIV_INS_NAMCO ||
|
||||
ins->type==DIV_INS_SM8521) {
|
||||
ins->type==DIV_INS_SM8521 ||
|
||||
(ins->type==DIV_INS_GBA_MINMOD && ins->amiga.useWave)) {
|
||||
if (ImGui::BeginTabItem("Wavetable")) {
|
||||
switch (ins->type) {
|
||||
case DIV_INS_GB:
|
||||
|
|
@ -6512,6 +6518,10 @@ void FurnaceGUI::drawInsEdit() {
|
|||
wavePreviewLen=ins->amiga.waveLen+1;
|
||||
wavePreviewHeight=15;
|
||||
break;
|
||||
case DIV_INS_GBA_MINMOD:
|
||||
wavePreviewLen=ins->amiga.waveLen+1;
|
||||
wavePreviewHeight=255;
|
||||
break;
|
||||
default:
|
||||
wavePreviewLen=32;
|
||||
wavePreviewHeight=31;
|
||||
|
|
@ -6770,7 +6780,7 @@ void FurnaceGUI::drawInsEdit() {
|
|||
volMax=31;
|
||||
}
|
||||
if (ins->type==DIV_INS_ADPCMB || ins->type==DIV_INS_YMZ280B || ins->type==DIV_INS_RF5C68 ||
|
||||
ins->type==DIV_INS_GA20 || ins->type==DIV_INS_C140 || ins->type==DIV_INS_C219) {
|
||||
ins->type==DIV_INS_GA20 || ins->type==DIV_INS_C140 || ins->type==DIV_INS_C219 || ins->type==DIV_INS_GBA_MINMOD) {
|
||||
volMax=255;
|
||||
}
|
||||
if (ins->type==DIV_INS_QSOUND) {
|
||||
|
|
@ -6835,7 +6845,7 @@ void FurnaceGUI::drawInsEdit() {
|
|||
ins->type==DIV_INS_PET || ins->type==DIV_INS_SEGAPCM ||
|
||||
ins->type==DIV_INS_FM || ins->type==DIV_INS_K007232 || ins->type==DIV_INS_GA20 ||
|
||||
ins->type==DIV_INS_SM8521 || ins->type==DIV_INS_PV1000 || ins->type==DIV_INS_K053260 ||
|
||||
ins->type==DIV_INS_C140 || ins->type==DIV_INS_GBA_DMA) {
|
||||
ins->type==DIV_INS_C140 || ins->type==DIV_INS_GBA_DMA || ins->type==DIV_INS_GBA_MINMOD) {
|
||||
dutyMax=0;
|
||||
}
|
||||
if (ins->type==DIV_INS_VBOY) {
|
||||
|
|
@ -7036,6 +7046,9 @@ void FurnaceGUI::drawInsEdit() {
|
|||
if (ins->type==DIV_INS_MIKEY) {
|
||||
ex1Max=12;
|
||||
}
|
||||
if (ins->type==DIV_INS_GBA_MINMOD) {
|
||||
ex1Max=2;
|
||||
}
|
||||
|
||||
int panMin=0;
|
||||
int panMax=0;
|
||||
|
|
@ -7101,7 +7114,7 @@ void FurnaceGUI::drawInsEdit() {
|
|||
panMin=0;
|
||||
panMax=127;
|
||||
}
|
||||
if (ins->type==DIV_INS_C140 || ins->type==DIV_INS_C219) {
|
||||
if (ins->type==DIV_INS_C140 || ins->type==DIV_INS_C219 || ins->type==DIV_INS_GBA_MINMOD) {
|
||||
panMin=0;
|
||||
panMax=255;
|
||||
}
|
||||
|
|
@ -7246,6 +7259,8 @@ void FurnaceGUI::drawInsEdit() {
|
|||
macroList.push_back(FurnaceGUIMacroDesc("Control",&ins->std.ex1Macro,0,ex1Max,64,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,daveControlBits));
|
||||
} else if (ins->type==DIV_INS_MIKEY) {
|
||||
macroList.push_back(FurnaceGUIMacroDesc("Load LFSR",&ins->std.ex1Macro,0,12,160,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true));
|
||||
} else if (ins->type==DIV_INS_GBA_MINMOD) {
|
||||
macroList.push_back(FurnaceGUIMacroDesc("Special",&ins->std.ex1Macro,0,ex1Max,96,uiColors[GUI_COLOR_MACRO_OTHER],false,NULL,NULL,true,minModModeBits));
|
||||
} else {
|
||||
macroList.push_back(FurnaceGUIMacroDesc("Duty",&ins->std.ex1Macro,0,ex1Max,160,uiColors[GUI_COLOR_MACRO_OTHER]));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue