Simplify dipswitch options for Nintendo World Championships 1990 cart
This commit is contained in:
@@ -249,12 +249,12 @@ static int DetectMMC1WRAMSize(CartInfo *info, int *saveRAM) {
|
|||||||
|
|
||||||
static uint32 NWCIRQCount;
|
static uint32 NWCIRQCount;
|
||||||
static uint8 NWCRec;
|
static uint8 NWCRec;
|
||||||
static int32 nwcdip = 0x4;
|
static uint32 nwcdip = 0x4;
|
||||||
|
|
||||||
static void NWCIRQHook(int a) {
|
static void NWCIRQHook(int a) {
|
||||||
if (!(NWCRec & 0x10)) {
|
if (!(NWCRec & 0x10)) {
|
||||||
NWCIRQCount += a;
|
NWCIRQCount += a;
|
||||||
if (NWCIRQCount >= (0x20000000 | (nwcdip << 25))) {
|
if (NWCIRQCount >= nwcdip) {
|
||||||
NWCIRQCount = 0;
|
NWCIRQCount = 0;
|
||||||
X6502_IRQBegin(FCEU_IQEXT);
|
X6502_IRQBegin(FCEU_IQEXT);
|
||||||
}
|
}
|
||||||
@@ -284,11 +284,12 @@ static void NWCPRGHook(uint32 A, uint8 V) {
|
|||||||
static void NWCPower(void) {
|
static void NWCPower(void) {
|
||||||
GenMMC1Power();
|
GenMMC1Power();
|
||||||
setchr8r(0, 0);
|
setchr8r(0, 0);
|
||||||
nwcdip = (int32)GameInfo->cspecial;
|
nwcdip = 0x20000000 | ((uint32)GameInfo->cspecial << 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void NWCReset(void) {
|
static void NWCReset(void) {
|
||||||
nwcdip = (int32)GameInfo->cspecial;
|
nwcdip = 0x20000000 | ((uint32)GameInfo->cspecial << 25);
|
||||||
|
MMC1CMReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mapper105_Init(CartInfo *info) {
|
void Mapper105_Init(CartInfo *info) {
|
||||||
|
|||||||
@@ -1240,51 +1240,32 @@ static void update_dipswitch_vsuni(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Nintendo World Championship */
|
/* Nintendo World Championships 1990 */
|
||||||
static struct retro_core_option_definition dipswitch_nwc[] = {
|
static struct retro_core_option_definition dipswitch_nwc[] = {
|
||||||
{
|
{
|
||||||
"fceumm_dipswitch_nwc_swa",
|
"fceumm_dipswitch_nwc",
|
||||||
"Dipswitch SW1 (+18.7secs)",
|
"Gameplay Duration in minutes (Restart)",
|
||||||
"Adds 18.7 seconds to total time. Total time = 5 mins + enabled dipswitches.",
|
"Sets the game timer in minutes.",
|
||||||
{
|
{
|
||||||
{ "disabled", NULL },
|
{ "0", "5:00" },
|
||||||
{ "enabled", NULL },
|
{ "1", "5:19" },
|
||||||
|
{ "2", "5:38" },
|
||||||
|
{ "3", "5:56" },
|
||||||
|
{ "4", "6:15 (Tournament)" },
|
||||||
|
{ "5", "6:34" },
|
||||||
|
{ "6", "6:53" },
|
||||||
|
{ "7", "7:11" },
|
||||||
|
{ "8", "7:30" },
|
||||||
|
{ "9", "7:49" },
|
||||||
|
{ "10", "8:08" },
|
||||||
|
{ "11" "8:27" },
|
||||||
|
{ "12", "8:45" },
|
||||||
|
{ "13", "9:04" },
|
||||||
|
{ "14", "9:23" },
|
||||||
|
{ "15", "9:42" },
|
||||||
{ NULL, NULL},
|
{ NULL, NULL},
|
||||||
},
|
},
|
||||||
"disabled",
|
"4",
|
||||||
},
|
|
||||||
{
|
|
||||||
"fceumm_dipswitch_nwc_swb",
|
|
||||||
"Dipswitch SW1 (+37.5s)",
|
|
||||||
"Adds 37.5 seconds to total time. Total time = 5 mins + enabled dipswitches.",
|
|
||||||
{
|
|
||||||
{ "disabled", NULL },
|
|
||||||
{ "enabled", NULL },
|
|
||||||
{ NULL, NULL},
|
|
||||||
},
|
|
||||||
"disabled",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fceumm_dipswitch_nwc_swc",
|
|
||||||
"Dipswitch SW1 (+1m 15s)",
|
|
||||||
"Adds 1 minute and 15 seconds to total time. Total time = 5 mins + enabled dipswitches.",
|
|
||||||
{
|
|
||||||
{ "disabled", NULL },
|
|
||||||
{ "enabled", NULL },
|
|
||||||
{ NULL, NULL},
|
|
||||||
},
|
|
||||||
"enabled",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fceumm_dipswitch_nwc_swd",
|
|
||||||
"Dipswitch SW1 (+2m 30s)",
|
|
||||||
"Adds 2 minutes and 30 seconds to total time. Total time = 5 mins + time of enabled dipswitches.",
|
|
||||||
{
|
|
||||||
{ "disabled", NULL },
|
|
||||||
{ "enabled", NULL },
|
|
||||||
{ NULL, NULL},
|
|
||||||
},
|
|
||||||
"disabled",
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ NULL, NULL, NULL, { {0} }, NULL },
|
{ NULL, NULL, NULL, { {0} }, NULL },
|
||||||
@@ -1292,27 +1273,21 @@ static struct retro_core_option_definition dipswitch_nwc[] = {
|
|||||||
|
|
||||||
static void update_dipswitch_nwc(void)
|
static void update_dipswitch_nwc(void)
|
||||||
{
|
{
|
||||||
unsigned i, dips = 0x00;
|
int dpsw_nwc = 0x00;
|
||||||
|
struct retro_variable var = {
|
||||||
|
"fceumm_dipswitch_nwc",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
||||||
|
dpsw_nwc = atoi(var.value);
|
||||||
|
|
||||||
|
if (GameInfo->cspecial != dpsw_nwc)
|
||||||
{
|
{
|
||||||
struct retro_variable var = { NULL, NULL };
|
GameInfo->cspecial = dpsw_nwc;
|
||||||
const char *key = dipswitch_nwc[i].key;
|
|
||||||
|
|
||||||
var.key = key;
|
|
||||||
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) == 0)
|
|
||||||
continue;
|
|
||||||
if (strcmp(var.value, "enabled") != 0)
|
|
||||||
continue;
|
|
||||||
dips |= (1 << i);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (GameInfo->cspecial != dips)
|
|
||||||
{
|
|
||||||
GameInfo->cspecial = dips;
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
FCEU_printf("Dipswitch changed = %d%d%d%d\n", (dips >> 0) & 1,
|
FCEU_printf("Dipswitch changed = %d%d%d%d\n", (dpsw_nwc >> 0) & 1,
|
||||||
(dips >> 1) & 1, (dips >> 2) & 1, (dips >> 3) & 1);
|
(dpsw_nwc >> 1) & 1, (dpsw_nwc >> 2) & 1, (dpsw_nwc >> 3) & 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user