SNES: Support "compact form" where delay resets aren't supported
This commit is contained in:
parent
e4db2486b5
commit
e2b08d9c83
2 changed files with 27 additions and 10 deletions
|
@ -65,6 +65,7 @@ namespace
|
||||||
bool do_hreset_flag = false;
|
bool do_hreset_flag = false;
|
||||||
long do_reset_flag = -1;
|
long do_reset_flag = -1;
|
||||||
bool support_hreset = false;
|
bool support_hreset = false;
|
||||||
|
bool support_dreset = false;
|
||||||
bool save_every_frame = false;
|
bool save_every_frame = false;
|
||||||
bool have_saved_this_frame = false;
|
bool have_saved_this_frame = false;
|
||||||
int16_t blanksound[1070] = {0};
|
int16_t blanksound[1070] = {0};
|
||||||
|
@ -175,7 +176,8 @@ namespace
|
||||||
}},
|
}},
|
||||||
{"hardreset", "Support hard resets", "0", boolean_values},
|
{"hardreset", "Support hard resets", "0", boolean_values},
|
||||||
{"saveevery", "Emulate saving each frame", "0", boolean_values},
|
{"saveevery", "Emulate saving each frame", "0", boolean_values},
|
||||||
{"radominit", "Random initial state", "0", boolean_values}
|
{"radominit", "Random initial state", "0", boolean_values},
|
||||||
|
{"compact", "Don't support delayed resets", "0", boolean_values}
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////// PORTS COMMON ///////////////////
|
////////////////// PORTS COMMON ///////////////////
|
||||||
|
@ -245,6 +247,7 @@ namespace
|
||||||
signed type1 = bsnes_settings.ivalue_to_index(_settings, "port1");
|
signed type1 = bsnes_settings.ivalue_to_index(_settings, "port1");
|
||||||
signed type2 = bsnes_settings.ivalue_to_index(_settings, "port2");
|
signed type2 = bsnes_settings.ivalue_to_index(_settings, "port2");
|
||||||
signed hreset = bsnes_settings.ivalue_to_index(_settings, "hardreset");
|
signed hreset = bsnes_settings.ivalue_to_index(_settings, "hardreset");
|
||||||
|
signed compact = bsnes_settings.ivalue_to_index(_settings, "compact");
|
||||||
signed esave = bsnes_settings.ivalue_to_index(_settings, "saveevery");
|
signed esave = bsnes_settings.ivalue_to_index(_settings, "saveevery");
|
||||||
signed irandom = bsnes_settings.ivalue_to_index(_settings, "radominit");
|
signed irandom = bsnes_settings.ivalue_to_index(_settings, "radominit");
|
||||||
|
|
||||||
|
@ -253,7 +256,8 @@ namespace
|
||||||
snes_unload_cartridge();
|
snes_unload_cartridge();
|
||||||
SNES::config.random = (irandom != 0);
|
SNES::config.random = (irandom != 0);
|
||||||
save_every_frame = (esave != 0);
|
save_every_frame = (esave != 0);
|
||||||
support_hreset = (hreset != 0);
|
support_hreset = (hreset != 0 || compact != 0);
|
||||||
|
support_dreset = (compact == 0);
|
||||||
SNES::config.expansion_port = SNES::System::ExpansionPortDevice::None;
|
SNES::config.expansion_port = SNES::System::ExpansionPortDevice::None;
|
||||||
bool r = fun(img);
|
bool r = fun(img);
|
||||||
if(r) {
|
if(r) {
|
||||||
|
@ -277,8 +281,11 @@ namespace
|
||||||
signed type1 = bsnes_settings.ivalue_to_index(_settings, "port1");
|
signed type1 = bsnes_settings.ivalue_to_index(_settings, "port1");
|
||||||
signed type2 = bsnes_settings.ivalue_to_index(_settings, "port2");
|
signed type2 = bsnes_settings.ivalue_to_index(_settings, "port2");
|
||||||
signed hreset = bsnes_settings.ivalue_to_index(_settings, "hardreset");
|
signed hreset = bsnes_settings.ivalue_to_index(_settings, "hardreset");
|
||||||
|
signed compact = bsnes_settings.ivalue_to_index(_settings, "compact");
|
||||||
controller_set r;
|
controller_set r;
|
||||||
if(hreset)
|
if(compact)
|
||||||
|
r.ports.push_back(&psystem_compact);
|
||||||
|
else if(hreset)
|
||||||
r.ports.push_back(&psystem_hreset);
|
r.ports.push_back(&psystem_hreset);
|
||||||
else
|
else
|
||||||
r.ports.push_back(&psystem);
|
r.ports.push_back(&psystem);
|
||||||
|
@ -302,12 +309,6 @@ namespace
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BSNES_HAS_DEBUGGER
|
|
||||||
#define BSNES_RESET_LEVEL 6
|
|
||||||
#else
|
|
||||||
#define BSNES_RESET_LEVEL 5
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class my_interface : public SNES::Interface
|
class my_interface : public SNES::Interface
|
||||||
{
|
{
|
||||||
string path(SNES::Cartridge::Slot slot, const string &hint)
|
string path(SNES::Cartridge::Slot slot, const string &hint)
|
||||||
|
@ -542,7 +543,7 @@ namespace
|
||||||
struct _bsnes_core : public core_core
|
struct _bsnes_core : public core_core
|
||||||
{
|
{
|
||||||
_bsnes_core() : core_core({&gamepad, &gamepad16, &justifier, &justifiers, &mouse, &multitap,
|
_bsnes_core() : core_core({&gamepad, &gamepad16, &justifier, &justifiers, &mouse, &multitap,
|
||||||
&multitap16, &none, &superscope, &psystem, &psystem_hreset}, {
|
&multitap16, &none, &superscope, &psystem, &psystem_hreset, &psystem_compact}, {
|
||||||
{0, "Soft reset", "reset", {}},
|
{0, "Soft reset", "reset", {}},
|
||||||
{1, "Hard reset", "hardreset", {}},
|
{1, "Hard reset", "hardreset", {}},
|
||||||
#ifdef BSNES_HAS_DEBUGGER
|
#ifdef BSNES_HAS_DEBUGGER
|
||||||
|
@ -831,6 +832,8 @@ again2:
|
||||||
const interface_device_reg* c_get_registers() { return snes_registers; }
|
const interface_device_reg* c_get_registers() { return snes_registers; }
|
||||||
unsigned c_action_flags(unsigned id)
|
unsigned c_action_flags(unsigned id)
|
||||||
{
|
{
|
||||||
|
if((id == 2 || id == 3) && !support_dreset)
|
||||||
|
return 0;
|
||||||
if(id == 0 || id == 2)
|
if(id == 0 || id == 2)
|
||||||
return 1;
|
return 1;
|
||||||
if(id == 1 || id == 3)
|
if(id == 1 || id == 3)
|
||||||
|
|
|
@ -84,6 +84,16 @@ system_controller_hreset = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
system_controller_compact = {
|
||||||
|
["name"] = "(system)", ["class"] = "(system)", ["buttons"] = {
|
||||||
|
{shadow, "F", "framesync"},
|
||||||
|
{shadow, "R", "reset"},
|
||||||
|
{shadow_null},
|
||||||
|
{shadow_null},
|
||||||
|
{shadow, "H", "hard"}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ports = {
|
ports = {
|
||||||
{
|
{
|
||||||
["symbol"] = "gamepad", ["iname"] = "gamepad", ["hname"] = "gamepad", ["controllers"] = {
|
["symbol"] = "gamepad", ["iname"] = "gamepad", ["hname"] = "gamepad", ["controllers"] = {
|
||||||
|
@ -145,5 +155,9 @@ ports = {
|
||||||
["symbol"] = "psystem_hreset", ["iname"] = "system", ["hname"] = "system", ["controllers"] = {
|
["symbol"] = "psystem_hreset", ["iname"] = "system", ["hname"] = "system", ["controllers"] = {
|
||||||
system_controller_hreset
|
system_controller_hreset
|
||||||
}, ["legal"] = {0}
|
}, ["legal"] = {0}
|
||||||
|
},{
|
||||||
|
["symbol"] = "psystem_compact", ["iname"] = "system", ["hname"] = "system", ["controllers"] = {
|
||||||
|
system_controller_compact
|
||||||
|
}, ["legal"] = {0}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue