Compare commits
19 Commits
da259a33b7
...
6ac4529f3b
Author | SHA1 | Date |
---|---|---|
tildearrow | 6ac4529f3b | |
tildearrow | ff3cebfffd | |
tildearrow | fda2ca0645 | |
cam900 | 8ad7a5bf7d | |
cam900 | e0dc22a6f1 | |
cam900 | a3d54ca933 | |
cam900 | 1873a2a708 | |
cam900 | b1e2e33f2d | |
cam900 | b326087721 | |
cam900 | 213d613534 | |
cam900 | 36f542972c | |
cam900 | c69318b222 | |
cam900 | 2a43272c66 | |
cam900 | 2a881c9f66 | |
cam900 | 90fa977d23 | |
cam900 | d84d678929 | |
cam900 | b1070f531a | |
cam900 | c8c2704a99 | |
cam900 | e6b84280aa |
|
@ -322,14 +322,8 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event)
|
||||||
mouse_pos.y += window_y;
|
mouse_pos.y += window_y;
|
||||||
}
|
}
|
||||||
// Fix for high DPI mac/idevice/wayland
|
// Fix for high DPI mac/idevice/wayland
|
||||||
ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO();
|
mouse_pos.x *= io.InputScale;
|
||||||
if (!platform_io.Monitors.empty() && platform_io.Monitors[0].DpiScale > 1.0f)
|
mouse_pos.y *= io.InputScale;
|
||||||
{
|
|
||||||
// The Framebuffer is scaled by an integer ceiling of the actual ratio, so 2.0 not 1.685 on Mac!
|
|
||||||
//printf("multiply by %f\n",platform_io.Monitors[0].DpiScale);
|
|
||||||
mouse_pos.x *= std::ceil(platform_io.Monitors[0].DpiScale);
|
|
||||||
mouse_pos.y *= std::ceil(platform_io.Monitors[0].DpiScale);
|
|
||||||
}
|
|
||||||
io.AddMouseSourceEvent(event->motion.which == SDL_TOUCH_MOUSEID ? ImGuiMouseSource_TouchScreen : ImGuiMouseSource_Mouse);
|
io.AddMouseSourceEvent(event->motion.which == SDL_TOUCH_MOUSEID ? ImGuiMouseSource_TouchScreen : ImGuiMouseSource_Mouse);
|
||||||
io.AddMousePosEvent(mouse_pos.x, mouse_pos.y);
|
io.AddMousePosEvent(mouse_pos.x, mouse_pos.y);
|
||||||
return true;
|
return true;
|
||||||
|
@ -627,13 +621,8 @@ static void ImGui_ImplSDL2_UpdateMouseData()
|
||||||
mouse_y -= window_y;
|
mouse_y -= window_y;
|
||||||
}
|
}
|
||||||
// Fix for high DPI mac/idevice/wayland
|
// Fix for high DPI mac/idevice/wayland
|
||||||
ImGuiPlatformIO& platform_io = ImGui::GetPlatformIO();
|
mouse_x *= io.InputScale;
|
||||||
if (!platform_io.Monitors.empty() && platform_io.Monitors[0].DpiScale > 1.0f)
|
mouse_y *= io.InputScale;
|
||||||
{
|
|
||||||
// The Framebuffer is scaled by an integer ceiling of the actual ratio, so 2.0 not 1.685 on Mac!
|
|
||||||
mouse_x *= std::ceil(platform_io.Monitors[0].DpiScale);
|
|
||||||
mouse_y *= std::ceil(platform_io.Monitors[0].DpiScale);
|
|
||||||
}
|
|
||||||
io.AddMousePosEvent((float)mouse_x, (float)mouse_y);
|
io.AddMousePosEvent((float)mouse_x, (float)mouse_y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -793,7 +782,7 @@ void ImGui_ImplSDL2_NewFrame()
|
||||||
io.DisplayFramebufferScale = ImVec2(1.0f, 1.0f);
|
io.DisplayFramebufferScale = ImVec2(1.0f, 1.0f);
|
||||||
io.DisplaySize = ImVec2((float)display_w, (float)display_h);
|
io.DisplaySize = ImVec2((float)display_w, (float)display_h);
|
||||||
//printf("write %d/%d to DpiScale\n",display_w,w);
|
//printf("write %d/%d to DpiScale\n",display_w,w);
|
||||||
platform_io.Monitors[0].DpiScale=(float)display_w/(float)w;
|
io.InputScale=(float)display_w/(float)w;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution)
|
// Setup time step (we don't use SDL_GetTicks() because it is using millisecond resolution)
|
||||||
|
|
|
@ -1273,6 +1273,7 @@ ImGuiIO::ImGuiIO()
|
||||||
DisplaySize = ImVec2(-1.0f, -1.0f);
|
DisplaySize = ImVec2(-1.0f, -1.0f);
|
||||||
DeltaTime = 1.0f / 60.0f;
|
DeltaTime = 1.0f / 60.0f;
|
||||||
IniSavingRate = 5.0f;
|
IniSavingRate = 5.0f;
|
||||||
|
InputScale = 1.0f;
|
||||||
IniFilename = "imgui.ini"; // Important: "imgui.ini" is relative to current working dir, most apps will want to lock this to an absolute path (e.g. same path as executables).
|
IniFilename = "imgui.ini"; // Important: "imgui.ini" is relative to current working dir, most apps will want to lock this to an absolute path (e.g. same path as executables).
|
||||||
LogFilename = "imgui_log.txt";
|
LogFilename = "imgui_log.txt";
|
||||||
#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
|
#ifndef IMGUI_DISABLE_OBSOLETE_KEYIO
|
||||||
|
|
|
@ -2060,6 +2060,7 @@ struct ImGuiIO
|
||||||
ImVec2 DisplaySize; // <unset> // Main display size, in pixels (generally == GetMainViewport()->Size). May change every frame.
|
ImVec2 DisplaySize; // <unset> // Main display size, in pixels (generally == GetMainViewport()->Size). May change every frame.
|
||||||
float DeltaTime; // = 1.0f/60.0f // Time elapsed since last frame, in seconds. May change every frame.
|
float DeltaTime; // = 1.0f/60.0f // Time elapsed since last frame, in seconds. May change every frame.
|
||||||
float IniSavingRate; // = 5.0f // Minimum time between saving positions/sizes to .ini file, in seconds.
|
float IniSavingRate; // = 5.0f // Minimum time between saving positions/sizes to .ini file, in seconds.
|
||||||
|
float InputScale; // = 1.0f // Used by backend in system managed scale situations.
|
||||||
const char* IniFilename; // = "imgui.ini" // Path to .ini file (important: default "imgui.ini" is relative to current working dir!). Set NULL to disable automatic .ini loading/saving or if you want to manually call LoadIniSettingsXXX() / SaveIniSettingsXXX() functions.
|
const char* IniFilename; // = "imgui.ini" // Path to .ini file (important: default "imgui.ini" is relative to current working dir!). Set NULL to disable automatic .ini loading/saving or if you want to manually call LoadIniSettingsXXX() / SaveIniSettingsXXX() functions.
|
||||||
const char* LogFilename; // = "imgui_log.txt"// Path to .log file (default parameter to ImGui::LogToFile when no file is specified).
|
const char* LogFilename; // = "imgui_log.txt"// Path to .log file (default parameter to ImGui::LogToFile when no file is specified).
|
||||||
void* UserData; // = NULL // Store your own data.
|
void* UserData; // = NULL // Store your own data.
|
||||||
|
|
|
@ -283,6 +283,7 @@ struct DivSysDef {
|
||||||
DivInstrumentType chanInsType[DIV_MAX_CHANS][2];
|
DivInstrumentType chanInsType[DIV_MAX_CHANS][2];
|
||||||
const EffectHandlerMap effectHandlers;
|
const EffectHandlerMap effectHandlers;
|
||||||
const EffectHandlerMap postEffectHandlers;
|
const EffectHandlerMap postEffectHandlers;
|
||||||
|
const EffectHandlerMap preEffectHandlers;
|
||||||
DivSysDef(
|
DivSysDef(
|
||||||
const char* sysName, const char* sysNameJ, unsigned char fileID, unsigned char fileID_DMF, int chans,
|
const char* sysName, const char* sysNameJ, unsigned char fileID, unsigned char fileID_DMF, int chans,
|
||||||
bool isFMChip, bool isSTDChip, unsigned int vgmVer, bool compound, unsigned int formatMask, const char* desc,
|
bool isFMChip, bool isSTDChip, unsigned int vgmVer, bool compound, unsigned int formatMask, const char* desc,
|
||||||
|
@ -292,7 +293,8 @@ struct DivSysDef {
|
||||||
std::initializer_list<DivInstrumentType> chInsType1,
|
std::initializer_list<DivInstrumentType> chInsType1,
|
||||||
std::initializer_list<DivInstrumentType> chInsType2={},
|
std::initializer_list<DivInstrumentType> chInsType2={},
|
||||||
const EffectHandlerMap fxHandlers_={},
|
const EffectHandlerMap fxHandlers_={},
|
||||||
const EffectHandlerMap postFxHandlers_={}):
|
const EffectHandlerMap postFxHandlers_={},
|
||||||
|
const EffectHandlerMap preFxHandlers_={}):
|
||||||
name(sysName),
|
name(sysName),
|
||||||
nameJ(sysNameJ),
|
nameJ(sysNameJ),
|
||||||
description(desc),
|
description(desc),
|
||||||
|
@ -305,7 +307,8 @@ struct DivSysDef {
|
||||||
vgmVersion(vgmVer),
|
vgmVersion(vgmVer),
|
||||||
sampleFormatMask(formatMask),
|
sampleFormatMask(formatMask),
|
||||||
effectHandlers(fxHandlers_),
|
effectHandlers(fxHandlers_),
|
||||||
postEffectHandlers(postFxHandlers_) {
|
postEffectHandlers(postFxHandlers_),
|
||||||
|
preEffectHandlers(preFxHandlers_) {
|
||||||
memset(chanNames,0,DIV_MAX_CHANS*sizeof(void*));
|
memset(chanNames,0,DIV_MAX_CHANS*sizeof(void*));
|
||||||
memset(chanShortNames,0,DIV_MAX_CHANS*sizeof(void*));
|
memset(chanShortNames,0,DIV_MAX_CHANS*sizeof(void*));
|
||||||
memset(chanTypes,0,DIV_MAX_CHANS*sizeof(int));
|
memset(chanTypes,0,DIV_MAX_CHANS*sizeof(int));
|
||||||
|
@ -484,6 +487,7 @@ class DivEngine {
|
||||||
// MIDI stuff
|
// MIDI stuff
|
||||||
std::function<int(const TAMidiMessage&)> midiCallback=[](const TAMidiMessage&) -> int {return -2;};
|
std::function<int(const TAMidiMessage&)> midiCallback=[](const TAMidiMessage&) -> int {return -2;};
|
||||||
|
|
||||||
|
void processRowPre(int i);
|
||||||
void processRow(int i, bool afterDelay);
|
void processRow(int i, bool afterDelay);
|
||||||
void nextOrder();
|
void nextOrder();
|
||||||
void nextRow();
|
void nextRow();
|
||||||
|
@ -492,6 +496,7 @@ class DivEngine {
|
||||||
bool nextTick(bool noAccum=false, bool inhibitLowLat=false);
|
bool nextTick(bool noAccum=false, bool inhibitLowLat=false);
|
||||||
bool perSystemEffect(int ch, unsigned char effect, unsigned char effectVal);
|
bool perSystemEffect(int ch, unsigned char effect, unsigned char effectVal);
|
||||||
bool perSystemPostEffect(int ch, unsigned char effect, unsigned char effectVal);
|
bool perSystemPostEffect(int ch, unsigned char effect, unsigned char effectVal);
|
||||||
|
bool perSystemPreEffect(int ch, unsigned char effect, unsigned char effectVal);
|
||||||
void recalcChans();
|
void recalcChans();
|
||||||
void reset();
|
void reset();
|
||||||
void playSub(bool preserveDrift, int goalRow=0);
|
void playSub(bool preserveDrift, int goalRow=0);
|
||||||
|
|
|
@ -947,6 +947,7 @@ void DivPlatformX1_010::setFlags(const DivConfig& flags) {
|
||||||
CHECK_CUSTOM_CLOCK;
|
CHECK_CUSTOM_CLOCK;
|
||||||
rate=chipClock/512;
|
rate=chipClock/512;
|
||||||
stereo=flags.getBool("stereo",false);
|
stereo=flags.getBool("stereo",false);
|
||||||
|
isBanked=flags.getBool("isBanked",false);
|
||||||
for (int i=0; i<16; i++) {
|
for (int i=0; i<16; i++) {
|
||||||
oscBuf[i]->rate=rate;
|
oscBuf[i]->rate=rate;
|
||||||
}
|
}
|
||||||
|
@ -979,7 +980,7 @@ bool DivPlatformX1_010::isSampleLoaded(int index, int sample) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DivPlatformX1_010::renderSamples(int sysID) {
|
void DivPlatformX1_010::renderSamples(int sysID) {
|
||||||
memset(sampleMem,0,getSampleMemCapacity());
|
memset(sampleMem,0,16777216);
|
||||||
memset(sampleOffX1,0,256*sizeof(unsigned int));
|
memset(sampleOffX1,0,256*sizeof(unsigned int));
|
||||||
memset(sampleLoaded,0,256*sizeof(bool));
|
memset(sampleLoaded,0,256*sizeof(bool));
|
||||||
|
|
||||||
|
@ -1018,10 +1019,6 @@ void DivPlatformX1_010::renderSamples(int sysID) {
|
||||||
sampleMemLen=memPos+256;
|
sampleMemLen=memPos+256;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DivPlatformX1_010::setBanked(bool banked) {
|
|
||||||
isBanked=banked;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DivPlatformX1_010::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
|
int DivPlatformX1_010::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) {
|
||||||
parent=p;
|
parent=p;
|
||||||
dumpWrites=false;
|
dumpWrites=false;
|
||||||
|
@ -1032,7 +1029,7 @@ int DivPlatformX1_010::init(DivEngine* p, int channels, int sugRate, const DivCo
|
||||||
oscBuf[i]=new DivDispatchOscBuffer;
|
oscBuf[i]=new DivDispatchOscBuffer;
|
||||||
}
|
}
|
||||||
setFlags(flags);
|
setFlags(flags);
|
||||||
sampleMem=new unsigned char[getSampleMemCapacity()];
|
sampleMem=new unsigned char[16777216];
|
||||||
sampleMemLen=0;
|
sampleMemLen=0;
|
||||||
x1_010.reset();
|
x1_010.reset();
|
||||||
reset();
|
reset();
|
||||||
|
|
|
@ -153,7 +153,6 @@ class DivPlatformX1_010: public DivDispatch, public vgsound_emu_mem_intf {
|
||||||
bool isSampleLoaded(int index, int sample);
|
bool isSampleLoaded(int index, int sample);
|
||||||
void renderSamples(int chipID);
|
void renderSamples(int chipID);
|
||||||
const char** getRegisterSheet();
|
const char** getRegisterSheet();
|
||||||
void setBanked(bool banked);
|
|
||||||
int init(DivEngine* parent, int channels, int sugRate, const DivConfig& flags);
|
int init(DivEngine* parent, int channels, int sugRate, const DivConfig& flags);
|
||||||
void quit();
|
void quit();
|
||||||
DivPlatformX1_010():
|
DivPlatformX1_010():
|
||||||
|
|
|
@ -407,6 +407,38 @@ bool DivEngine::perSystemPostEffect(int ch, unsigned char effect, unsigned char
|
||||||
return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2));
|
return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DivEngine::perSystemPreEffect(int ch, unsigned char effect, unsigned char effectVal) {
|
||||||
|
DivSysDef* sysDef=sysDefs[sysOfChan[ch]];
|
||||||
|
if (sysDef==NULL) return false;
|
||||||
|
auto iter=sysDef->preEffectHandlers.find(effect);
|
||||||
|
if (iter==sysDef->preEffectHandlers.end()) return false;
|
||||||
|
EffectHandler handler=iter->second;
|
||||||
|
int val=0;
|
||||||
|
int val2=0;
|
||||||
|
try {
|
||||||
|
val=handler.val?handler.val(effect,effectVal):effectVal;
|
||||||
|
val2=handler.val2?handler.val2(effect,effectVal):0;
|
||||||
|
} catch (DivDoNotHandleEffect& e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// wouldn't this cause problems if it were to return 0?
|
||||||
|
return dispatchCmd(DivCommand(handler.dispatchCmd,ch,val,val2));
|
||||||
|
}
|
||||||
|
|
||||||
|
void DivEngine::processRowPre(int i) {
|
||||||
|
int whatOrder=curOrder;
|
||||||
|
int whatRow=curRow;
|
||||||
|
DivPattern* pat=curPat[i].getPattern(curOrders->ord[i][whatOrder],false);
|
||||||
|
for (int j=0; j<curPat[i].effectCols; j++) {
|
||||||
|
short effect=pat->data[whatRow][4+(j<<1)];
|
||||||
|
short effectVal=pat->data[whatRow][5+(j<<1)];
|
||||||
|
|
||||||
|
if (effectVal==-1) effectVal=0;
|
||||||
|
effectVal&=255;
|
||||||
|
perSystemPreEffect(i,effect,effectVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DivEngine::processRow(int i, bool afterDelay) {
|
void DivEngine::processRow(int i, bool afterDelay) {
|
||||||
int whatOrder=afterDelay?chan[i].delayOrder:curOrder;
|
int whatOrder=afterDelay?chan[i].delayOrder:curOrder;
|
||||||
int whatRow=afterDelay?chan[i].delayRow:curRow;
|
int whatRow=afterDelay?chan[i].delayRow:curRow;
|
||||||
|
@ -1135,6 +1167,11 @@ void DivEngine::nextRow() {
|
||||||
prevRow=curRow;
|
prevRow=curRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i=0; i<chans; i++) {
|
||||||
|
// try to find pre effects
|
||||||
|
processRowPre(i);
|
||||||
|
}
|
||||||
|
|
||||||
for (int i=0; i<chans; i++) {
|
for (int i=0; i<chans; i++) {
|
||||||
if (song.delayBehavior!=2) {
|
if (song.delayBehavior!=2) {
|
||||||
chan[i].rowDelay=0;
|
chan[i].rowDelay=0;
|
||||||
|
|
|
@ -454,11 +454,10 @@ void DivEngine::registerSystems() {
|
||||||
{0x18, {DIV_CMD_FM_EXTCH, "18xx: Toggle extended channel 3 mode"}},
|
{0x18, {DIV_CMD_FM_EXTCH, "18xx: Toggle extended channel 3 mode"}},
|
||||||
});
|
});
|
||||||
|
|
||||||
EffectHandlerMap fmOPN2EffectHandlerMap(fmExtChEffectHandlerMap);
|
EffectHandlerMap fmOPN2EffectHandlerMap={
|
||||||
fmOPN2EffectHandlerMap.insert({
|
|
||||||
{0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode (LEGACY)"}},
|
{0x17, {DIV_CMD_SAMPLE_MODE, "17xx: Toggle PCM mode (LEGACY)"}},
|
||||||
{0xdf, {DIV_CMD_SAMPLE_DIR, "DFxx: Set sample playback direction (0: normal; 1: reverse)"}},
|
{0xdf, {DIV_CMD_SAMPLE_DIR, "DFxx: Set sample playback direction (0: normal; 1: reverse)"}},
|
||||||
});
|
};
|
||||||
|
|
||||||
EffectHandlerMap fmOPLDrumsEffectHandlerMap(fmEffectHandlerMap);
|
EffectHandlerMap fmOPLDrumsEffectHandlerMap(fmEffectHandlerMap);
|
||||||
fmOPLDrumsEffectHandlerMap.insert({
|
fmOPLDrumsEffectHandlerMap.insert({
|
||||||
|
@ -773,8 +772,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_AY8910]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_AY8910]=new DivSysDef(
|
||||||
|
@ -1032,8 +1032,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE},
|
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY},
|
||||||
{},
|
{},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNPostEffectHandlerMap
|
fmOPNPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_YM2203_CSM]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_YM2203_CSM]=new DivSysDef(
|
||||||
|
@ -1044,8 +1045,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE},
|
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY},
|
||||||
{},
|
{},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNPostEffectHandlerMap
|
fmOPNPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_YM2608]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_YM2608]=new DivSysDef(
|
||||||
|
@ -1068,8 +1070,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_YM2608_CSM]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_YM2608_CSM]=new DivSysDef(
|
||||||
|
@ -1080,8 +1083,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_NOISE, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_OPL]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_OPL]=new DivSysDef(
|
||||||
|
@ -1290,7 +1294,8 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA},
|
||||||
fmOPN2EffectHandlerMap,
|
fmOPN2EffectHandlerMap,
|
||||||
fmOPN2PostEffectHandlerMap
|
fmOPN2PostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_YM2612_CSM]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_YM2612_CSM]=new DivSysDef(
|
||||||
|
@ -1302,7 +1307,8 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL},
|
||||||
fmOPN2EffectHandlerMap,
|
fmOPN2EffectHandlerMap,
|
||||||
fmOPN2PostEffectHandlerMap
|
fmOPN2PostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_SCC]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_SCC]=new DivSysDef(
|
||||||
|
@ -1372,8 +1378,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_YM2610_CSM]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_YM2610_CSM]=new DivSysDef(
|
||||||
|
@ -1384,8 +1391,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_OPLL_DRUMS]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_OPLL_DRUMS]=new DivSysDef(
|
||||||
|
@ -1461,8 +1469,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_YM2610B_CSM]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_YM2610B_CSM]=new DivSysDef(
|
||||||
|
@ -1473,8 +1482,9 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
{DIV_CH_FM, DIV_CH_FM, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_OP, DIV_CH_FM, DIV_CH_FM, DIV_CH_FM, DIV_CH_NOISE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PULSE, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM, DIV_CH_PCM},
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AY, DIV_INS_AY, DIV_INS_AY, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMA, DIV_INS_ADPCMB},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA, DIV_INS_AMIGA},
|
||||||
fmExtChEffectHandlerMap,
|
{},
|
||||||
fmOPNAPostEffectHandlerMap
|
fmOPNAPostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_SEGAPCM_COMPAT]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_SEGAPCM_COMPAT]=new DivSysDef(
|
||||||
|
@ -1771,7 +1781,8 @@ void DivEngine::registerSystems() {
|
||||||
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AMIGA, DIV_INS_FM},
|
{DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_FM, DIV_INS_AMIGA, DIV_INS_FM},
|
||||||
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL, DIV_INS_NULL},
|
{DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_NULL, DIV_INS_AMIGA, DIV_INS_NULL, DIV_INS_NULL},
|
||||||
fmOPN2EffectHandlerMap,
|
fmOPN2EffectHandlerMap,
|
||||||
fmOPN2PostEffectHandlerMap
|
fmOPN2PostEffectHandlerMap,
|
||||||
|
fmExtChEffectHandlerMap
|
||||||
);
|
);
|
||||||
|
|
||||||
sysDefs[DIV_SYSTEM_T6W28]=new DivSysDef(
|
sysDefs[DIV_SYSTEM_T6W28]=new DivSysDef(
|
||||||
|
|
|
@ -3628,6 +3628,8 @@ bool FurnaceGUI::loop() {
|
||||||
if (prevScrW!=scrW || prevScrH!=scrH) {
|
if (prevScrW!=scrW || prevScrH!=scrH) {
|
||||||
logV("size change 2: %dx%d (from %dx%d)",scrW,scrH,prevScrW,prevScrH);
|
logV("size change 2: %dx%d (from %dx%d)",scrW,scrH,prevScrW,prevScrH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ImGui::GetIO().InputScale=(float)canvasW/(float)scrW;
|
||||||
}
|
}
|
||||||
|
|
||||||
wantCaptureKeyboard=ImGui::GetIO().WantTextInput;
|
wantCaptureKeyboard=ImGui::GetIO().WantTextInput;
|
||||||
|
|
|
@ -2101,7 +2101,10 @@ void FurnaceGUI::initSystemPresets() {
|
||||||
);
|
);
|
||||||
ENTRY(
|
ENTRY(
|
||||||
"Seta 2", {
|
"Seta 2", {
|
||||||
CH(DIV_SYSTEM_X1_010, 1.0f, 0, "clockSel=1")
|
CH(DIV_SYSTEM_X1_010, 1.0f, 0,
|
||||||
|
"clockSel=1\n"
|
||||||
|
"isBanked=true\n"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
ENTRY(
|
ENTRY(
|
||||||
|
|
|
@ -1016,6 +1016,7 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
||||||
case DIV_SYSTEM_X1_010: {
|
case DIV_SYSTEM_X1_010: {
|
||||||
int clockSel=flags.getInt("clockSel",0);
|
int clockSel=flags.getInt("clockSel",0);
|
||||||
bool stereo=flags.getBool("stereo",false);
|
bool stereo=flags.getBool("stereo",false);
|
||||||
|
bool isBanked=flags.getBool("isBanked",false);
|
||||||
|
|
||||||
ImGui::Text("Clock rate:");
|
ImGui::Text("Clock rate:");
|
||||||
ImGui::Indent();
|
ImGui::Indent();
|
||||||
|
@ -1037,10 +1038,15 @@ bool FurnaceGUI::drawSysConf(int chan, DivSystem type, DivConfig& flags, bool mo
|
||||||
altered=true;
|
altered=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui::Checkbox("Bankswitched (Seta 2)",&isBanked)) {
|
||||||
|
altered=true;
|
||||||
|
}
|
||||||
|
|
||||||
if (altered) {
|
if (altered) {
|
||||||
e->lockSave([&]() {
|
e->lockSave([&]() {
|
||||||
flags.set("clockSel",clockSel);
|
flags.set("clockSel",clockSel);
|
||||||
flags.set("stereo",stereo);
|
flags.set("stereo",stereo);
|
||||||
|
flags.set("isBanked",isBanked);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue