2019-05-11 23:11:55 +08:00
|
|
|
#include <stdint.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
#include "../../fceu.h"
|
|
|
|
|
#include "../../fceu-types.h"
|
|
|
|
|
#include "../../vsuni.h"
|
|
|
|
|
#include "../../git.h"
|
|
|
|
|
#include "../../driver.h"
|
|
|
|
|
#include "../../cart.h"
|
|
|
|
|
|
|
|
|
|
#include "dipswitch.h"
|
|
|
|
|
|
|
|
|
|
extern CartInfo iNESCart;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
2019-05-21 20:29:53 +08:00
|
|
|
char *name;
|
2019-05-11 23:11:55 +08:00
|
|
|
uint8 value;
|
|
|
|
|
} SETTING;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
2019-05-21 20:29:53 +08:00
|
|
|
const char *option_name;
|
2019-05-11 23:11:55 +08:00
|
|
|
unsigned settings_size;
|
|
|
|
|
uint8 mask;
|
|
|
|
|
SETTING settings[8];
|
|
|
|
|
} DIPSWITCH;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
unsigned gameid;
|
2019-05-21 20:29:53 +08:00
|
|
|
char *romname_short;
|
2019-05-11 23:11:55 +08:00
|
|
|
unsigned dipswitch_size;
|
2019-05-21 20:29:53 +08:00
|
|
|
DIPSWITCH dipswitch_core_options[5];
|
2019-05-11 23:11:55 +08:00
|
|
|
} VSUNIGAME;
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_battlecity = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_BATTLECITY, "battlecity", 3,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Credits for 2 Players", 2, 0x01,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "2", 0x01 },
|
|
|
|
|
{ "1", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x02,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "5", 0x02 },
|
|
|
|
|
{ "3", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x04,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "disabled", 0x04 },
|
|
|
|
|
{ "enabled", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_castlevania = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_CASTLEVANIA, "castlevania", 4,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage",
|
2019-05-11 23:11:55 +08:00
|
|
|
8,
|
|
|
|
|
0x07,
|
|
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "2", 0x08 }
|
|
|
|
|
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "100k", 0x00 },
|
|
|
|
|
{ "200k", 0x20 },
|
|
|
|
|
{ "300k", 0x10 },
|
|
|
|
|
{ "400k", 0x30 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Normal", 0x00 },
|
|
|
|
|
{ "Hard", 0x40 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_clucluland = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_CLUCLULAND, "clucluland", 2,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 4, 0x60,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "4", 0x40 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "5", 0x20 },
|
|
|
|
|
{ "2", 0x60 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_drmario = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_DRMARIO, "drmario", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Drop Rate Increase After", 4, 0x03,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "7 Pills", 0x00 },
|
|
|
|
|
{ "8 Pills", 0x01 },
|
|
|
|
|
{ "9 Pills", 0x02 },
|
|
|
|
|
{ "10 Pills", 0x03 }
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Virus Level", 4, 0x0c,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1", 0x00 },
|
|
|
|
|
{ "3", 0x04 },
|
|
|
|
|
{ "5", 0x08 },
|
|
|
|
|
{ "7", 0x0c }
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Drop Speed Up", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Slow", 0x00 },
|
|
|
|
|
{ "Medium", 0x10 },
|
|
|
|
|
{ "Fast", 0x20 },
|
|
|
|
|
{ "Fastest", 0x30 }
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Free Play", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "disabled", 0x00 },
|
|
|
|
|
{ "enabled", 0x40 }
|
|
|
|
|
},
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "enabled", 0x80 },
|
|
|
|
|
{ "disabled", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_duckhunt = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_DUCKHUNT, "duckhunt", 4,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x08 },
|
|
|
|
|
{ "Medium", 0x10 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Hard", 0x18 },
|
|
|
|
|
{ "Easy", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Miss per game", 2, 0x20,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "5", 0x20 },
|
|
|
|
|
{ "3", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Life", 4, 0xc0,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "30000", 0x00 },
|
|
|
|
|
{ "50000", 0x40 },
|
|
|
|
|
{ "80000", 0x80 },
|
|
|
|
|
{ "100000", 0xc0 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_excitebike = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_EXITEBIKE, "excitebike", 4,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Bike", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "100k and Every 50k", 0x00 },
|
|
|
|
|
{ "100k Only", 0x08 },
|
|
|
|
|
{ "Every 100k", 0x10 },
|
|
|
|
|
{ "None", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "1st Qualifying Time", 2, 0x20,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Easy", 0x00 },
|
|
|
|
|
{ "Hard", 0x20 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "2nd Qualifying Time", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Easy", 0x00 },
|
|
|
|
|
{ "Hard", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_freedomforce = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_FREEDOMFORCE, "freedomforce", 4,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Health Awarded At", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "10k 50k", 0x10 },
|
|
|
|
|
{ "20k 60k", 0x00 },
|
|
|
|
|
{ "20k 60k Every 60k", 0x08 },
|
|
|
|
|
{ "10k 50k Every 50k", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty (Damage)", 4, 0x60,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x00 },
|
|
|
|
|
{ "Easy", 0x40 },
|
|
|
|
|
{ "Hard", 0x20 },
|
|
|
|
|
{ "Hardest", 0x60 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty (Enemy)", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x80 },
|
|
|
|
|
{ "Hard", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_goonies = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_GOONIES, "goonies", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x08 },
|
|
|
|
|
{ "4", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "40000", 0x00 },
|
|
|
|
|
{ "50000", 0x20 },
|
|
|
|
|
{ "60000", 0x10 },
|
|
|
|
|
{ "70000", 0x30 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Timer", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Slow", 0x00 },
|
|
|
|
|
{ "Fast", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "enabled", 0x80 },
|
|
|
|
|
{ "disabled", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_gradius = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_GRADIUS, "gradius", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x08 },
|
|
|
|
|
{ "4", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "100k", 0x00 },
|
|
|
|
|
{ "200k", 0x20 },
|
|
|
|
|
{ "300k", 0x10 },
|
|
|
|
|
{ "400k", 0x30 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Normal", 0x00 },
|
|
|
|
|
{ "Hard", 0x40 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "enabled", 0x80 },
|
|
|
|
|
{ "disabled", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_gumshoe = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_GUMSHOE, "gumshoe", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x08 },
|
|
|
|
|
{ "Easy", 0x00 },
|
|
|
|
|
{ "Hard", 0x10 },
|
|
|
|
|
{ "Hardest", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x20,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x20 },
|
|
|
|
|
{ "5", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bullets per Balloon", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "2", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Man Awarded", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "At 50000", 0x00 },
|
|
|
|
|
{ "None", 0x80 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_hogansalley = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_HOGANSALLEY, "hogansalley", 4,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x08 },
|
|
|
|
|
{ "Easy", 0x00 },
|
|
|
|
|
{ "Hard", 0x10 },
|
|
|
|
|
{ "Hardest", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Misses Per Game", 2, 0x20,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "5", 0x20 },
|
|
|
|
|
{ "3", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Life", 4, 0xc0,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "30000", 0x00 },
|
|
|
|
|
{ "50000", 0x40 },
|
|
|
|
|
{ "80000", 0x80 },
|
|
|
|
|
{ "100000", 0xc0 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_iceclimber = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_ICECLIMBER, "iceclimber", 4,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "4", 0x10 },
|
|
|
|
|
{ "5", 0x08 },
|
|
|
|
|
{ "7", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 2, 0x20,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Easy", 0x00 },
|
|
|
|
|
{ "Hard", 0x20 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Time before bear appears", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Long", 0x00 },
|
|
|
|
|
{ "Short", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_jajamaru = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_JAJAMARU, "jajamaru", 3,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 3, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "4", 0x10 },
|
|
|
|
|
{ "5", 0x08 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "enabled", 0x80 },
|
|
|
|
|
{ "disabled", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
static VSUNIGAME dipswitch_machrider = {
|
|
|
|
|
VS_MACHRIDER, "machrider", 3,
|
|
|
|
|
{
|
|
|
|
|
{ "Coinage", 8, 0x07,
|
|
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{ "Time", 4, 0x18,
|
|
|
|
|
{
|
|
|
|
|
{ "280 (Easy)", 0x00 },
|
|
|
|
|
{ "250", 0x10 },
|
|
|
|
|
{ "220", 0x08 },
|
|
|
|
|
{ "200 (Hard)", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{ "Enemies", 2, 0x40,
|
|
|
|
|
{
|
|
|
|
|
{ "Less", 0x00 },
|
|
|
|
|
{ "More", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2019-05-11 23:11:55 +08:00
|
|
|
static VSUNIGAME dipswitch_mightybj = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_MIGHTYBOMBJACK, "mightybj", 2,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "4", 0x08 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "5", 0x18 },
|
|
|
|
|
{ "2", 0x10 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_pinball = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_PINBALL, "pinball", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x01 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x06 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x04 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x07 },
|
|
|
|
|
{ "Free Play", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Side Drain Walls", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "High", 0x00 },
|
|
|
|
|
{ "Low", 0x08 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Life", 2, 0x10,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "50000", 0x00 },
|
|
|
|
|
{ "70000", 0x10 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Balls", 4, 0x60,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "4", 0x40 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "5", 0x20 },
|
|
|
|
|
{ "2", 0x60 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Ball Speed", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Slow", 0x00 },
|
|
|
|
|
{ "Fast", 0x80 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_platoon = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_PLATOON, "platoon", 3,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x04,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "enabled", 0x00 },
|
|
|
|
|
{ "disabled", 0x04 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x08 },
|
|
|
|
|
{ "Medium", 0x10 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Hard", 0x18 },
|
|
|
|
|
{ "Easy", 0x00 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0xe0,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x20 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x40 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x60 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x80 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0xa0 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0xc0 },
|
|
|
|
|
{ "Free Play", 0xe0 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_rbibaseball = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_RBIBASEBALL, "atari_rbibb", 3,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 4, 0x03,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x01 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x02 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x03 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "1p-inn 2p-inn time-min", 4, 0x0c,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "2 2 4", 0x0c },
|
|
|
|
|
{ "3 2 6", 0x00 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "4 3 7", 0x08 },
|
|
|
|
|
{ "2 1 3", 0x04 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x10,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "enabled", 0x00 },
|
|
|
|
|
{ "disabled", 0x10 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_slalom = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_SLALOM, "slalom", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Freestyle Points", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Hold Time", 0x08 },
|
|
|
|
|
{ "Left Right", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x10 },
|
|
|
|
|
{ "Medium", 0x20 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Hard", 0x30 },
|
|
|
|
|
{ "Easy", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Allow Continue", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "enabled", 0x00 },
|
|
|
|
|
{ "disabled", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Inverted Input", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "disabled", 0x00 },
|
|
|
|
|
{ "enabled", 0x80 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_smb = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_SMB, "smb", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x06 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x01 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x05 },
|
|
|
|
|
{ "1 Coin 5 Credits", 0x03 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x04 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x02 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "3", 0x00 },
|
|
|
|
|
{ "2", 0x08 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Life", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "100 coins", 0x00 },
|
|
|
|
|
{ "150 coins", 0x20 },
|
|
|
|
|
{ "200 coins", 0x10 },
|
|
|
|
|
{ "250 coins", 0x30 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Timer", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Slow", 0x00 },
|
|
|
|
|
{ "Fast", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Continue Lives", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3", 0x80 },
|
|
|
|
|
{ "4", 0x00 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_soccer = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_SOCCER, "soccer", 3,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "1 Coin 4 Credits", 0x06 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Points Timer", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1000 Pts", 0x08 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "1200 Pts", 0x18 },
|
|
|
|
|
{ "600 Pts", 0x00 },
|
|
|
|
|
{ "800 Pts", 0x10 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x60,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x40 },
|
|
|
|
|
{ "Medium", 0x20 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Hard", 0x60 },
|
|
|
|
|
{ "Easy", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_starluster = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_STARLUSTER, "starluster", 1,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 4, 0x03,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x03 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_superskykid = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_SUPERSKYKID, "superskykid", 3,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x03,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
|
2019-05-11 23:11:55 +08:00
|
|
|
{ "Normal", 0x01 },
|
|
|
|
|
{ "Medium", 0x02 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Hard", 0x03 },
|
|
|
|
|
{ "Easy", 0x00 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives", 2, 0x04,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "3", 0x04 },
|
|
|
|
|
{ "2", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 4, 0x18,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x08 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x10 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x18 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_superxevious = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_SUPERXEVIOUS, "superxevious", 1,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x10 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x20 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x30 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_tetris = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_TETRIS, "tetris", 1,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x0c,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Normal", 0x04 },
|
|
|
|
|
{ "Medium", 0x08 },
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Hard", 0x0c },
|
|
|
|
|
{ "Easy", 0x00 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_tkoboxing = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_TKOBOXING, "tkoboxing", 2,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 4, 0x03,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x01 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x02 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x03 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 4, 0x0c,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Normal", 0x04 },
|
|
|
|
|
{ "Hard", 0x08 },
|
|
|
|
|
{ "Very Hard", 0x0c },
|
|
|
|
|
{ "Easy", 0x00 },
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME dipswitch_topgun = {
|
2019-05-21 20:29:53 +08:00
|
|
|
VS_TOPGUN, "topgun", 5,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Coinage", 8, 0x07,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "1 Coin 1 Credit", 0x00 },
|
|
|
|
|
{ "1 Coin 2 Credits", 0x04 },
|
|
|
|
|
{ "1 Coin 3 Credits", 0x02 },
|
|
|
|
|
{ "2 Coins 1 Credit", 0x01 },
|
|
|
|
|
{ "3 Coins 1 Credit", 0x05 },
|
|
|
|
|
{ "4 Coins 1 Credit", 0x06 },
|
|
|
|
|
{ "5 Coins 1 Credit", 0x03 },
|
|
|
|
|
{ "Free Play", 0x07 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Lives per Coin", 2, 0x08,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "3-12 Max", 0x00 },
|
|
|
|
|
{ "2-9 Max", 0x08 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Bonus Life", 4, 0x30,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "30k and Every 50k", 0x00 },
|
|
|
|
|
{ "50k and Every 100k", 0x20 },
|
|
|
|
|
{ "100k and Every 150k", 0x10 },
|
|
|
|
|
{ "200k and Every 200k", 0x30 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Difficulty", 2, 0x40,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
{ "Easy", 0x00 },
|
|
|
|
|
{ "Hard", 0x40 }
|
|
|
|
|
}
|
|
|
|
|
},
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "Demo Sounds", 2, 0x80,
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
{ "enabled", 0x80 },
|
|
|
|
|
{ "disabled", 0x00 }
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
typedef struct {
|
|
|
|
|
char key[64];
|
|
|
|
|
char val[150];
|
|
|
|
|
} VSUNIGAMEOPT;
|
2019-05-11 23:11:55 +08:00
|
|
|
|
|
|
|
|
static VSUNIGAME *vsgame = NULL;
|
2019-05-21 20:29:53 +08:00
|
|
|
static VSUNIGAMEOPT vscoreopt[5];
|
2019-05-11 23:11:55 +08:00
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
static void str_to_corekey_label(char *str)
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
unsigned i = 0;
|
2019-05-11 23:11:55 +08:00
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
while (str[i] != '\0')
|
|
|
|
|
{
|
|
|
|
|
if (str[i] == ' ')
|
|
|
|
|
str[i] = '_';
|
|
|
|
|
i++;
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
2019-05-21 20:29:53 +08:00
|
|
|
str[i] = '\0';
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
static void make_core_options(void)
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
unsigned i, dipswitch_size;
|
|
|
|
|
char core_prefix[32];
|
|
|
|
|
|
|
|
|
|
dipswitch_size = vsgame->dipswitch_size;
|
|
|
|
|
sprintf(core_prefix, "fceumm_dipswitch_%s", vsgame->romname_short);
|
|
|
|
|
for (i = 0; i < dipswitch_size; i++)
|
|
|
|
|
{
|
|
|
|
|
unsigned x;
|
|
|
|
|
char core_key[64], core_values[150];
|
|
|
|
|
DIPSWITCH *coreoptions = &vsgame->dipswitch_core_options[i];
|
|
|
|
|
|
|
|
|
|
/* make var key string from list */
|
|
|
|
|
sprintf(core_key, "%s%c%s", core_prefix, '-', coreoptions->option_name);
|
|
|
|
|
str_to_corekey_label(core_key);
|
|
|
|
|
|
|
|
|
|
/* make var values string from lists of values */
|
|
|
|
|
sprintf(core_values, "%s; ", coreoptions->option_name);
|
|
|
|
|
for (x = 0; x < coreoptions->settings_size; x++)
|
|
|
|
|
{
|
|
|
|
|
SETTING *corevalues = &coreoptions->settings[x];
|
2019-05-11 23:11:55 +08:00
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
strcat(core_values, corevalues->name);
|
|
|
|
|
if ((coreoptions->settings_size - 1) > x)
|
|
|
|
|
strcat(core_values, "|");
|
|
|
|
|
}
|
2019-05-11 23:11:55 +08:00
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
sprintf(vscoreopt[i].key, "%s", core_key);
|
|
|
|
|
sprintf(vscoreopt[i].val, "%s", core_values);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static VSUNIGAME *get_vsuni_dipswitch(unsigned id)
|
|
|
|
|
{
|
2019-05-11 23:11:55 +08:00
|
|
|
switch (id) {
|
|
|
|
|
case VS_BATTLECITY:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_battlecity);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_CASTLEVANIA:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_castlevania);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_CLUCLULAND:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_clucluland);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_DRMARIO:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_drmario);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_DUCKHUNT:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_duckhunt);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_EXITEBIKE:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_excitebike);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_FREEDOMFORCE:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_freedomforce);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_GOONIES:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_goonies);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_GRADIUS:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_gradius);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_GUMSHOE:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_gumshoe);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_HOGANSALLEY:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_hogansalley);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_ICECLIMBER:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_iceclimber);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_JAJAMARU:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_jajamaru);
|
2019-05-11 23:11:55 +08:00
|
|
|
/* case VS_LADIESGOLF: */
|
|
|
|
|
/* case VS_STROKEANDMATCHGOLF: */
|
|
|
|
|
case VS_MACHRIDER:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_machrider);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_MIGHTYBOMBJACK:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_mightybj);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_PINBALL:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_pinball);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_PLATOON:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_platoon);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_RBIBASEBALL:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_rbibaseball);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_SLALOM:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_slalom);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_SMB:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_smb);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_SOCCER:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_soccer);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_STARLUSTER:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_starluster);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_SUPERSKYKID:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_superskykid);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_SUPERXEVIOUS:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_superxevious);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_TETRIS:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_tetris);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_TKOBOXING:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_tkoboxing);
|
2019-05-11 23:11:55 +08:00
|
|
|
case VS_TOPGUN:
|
2019-05-21 20:29:53 +08:00
|
|
|
return (&dipswitch_topgun);
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
FCEU_printf("No dipsettings found. %d\n", id);
|
|
|
|
|
return (NULL);
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
static void update_dipswitch_vsuni(void)
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
struct retro_variable var = {0};
|
|
|
|
|
unsigned idx_dips, idx_var;
|
|
|
|
|
uint8 vsdip_new = 0x00;
|
|
|
|
|
|
|
|
|
|
if (vsgame == NULL)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
vsdip_new = FCEUI_VSUniGetDIPs();
|
|
|
|
|
for (idx_dips = 0; idx_dips < vsgame->dipswitch_size; idx_dips++)
|
|
|
|
|
{
|
|
|
|
|
DIPSWITCH *core_option = &vsgame->dipswitch_core_options[idx_dips];
|
2019-05-21 20:29:53 +08:00
|
|
|
var.key = vscoreopt[idx_dips].key;
|
2019-05-11 23:11:55 +08:00
|
|
|
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) == 0)
|
|
|
|
|
continue;
|
|
|
|
|
for (idx_var = 0; idx_var < core_option->settings_size; idx_var++)
|
|
|
|
|
{
|
|
|
|
|
SETTING *vs_settings = &core_option->settings[idx_var];
|
|
|
|
|
if (strcmp(var.value, vs_settings->name) != 0)
|
|
|
|
|
continue;
|
|
|
|
|
vsdip_new &= ~core_option->mask;
|
|
|
|
|
vsdip_new |= vs_settings->value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
if (FCEUI_VSUniGetDIPs() != vsdip_new)
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
vsdip = vsdip_new;
|
2019-05-11 23:11:55 +08:00
|
|
|
#ifdef DEBUG
|
|
|
|
|
FCEU_printf("Dipswitch changed %d%d%d%d%d%d%d%d\n",
|
|
|
|
|
(vsdip >> 0) & 1, (vsdip >> 1) & 1, (vsdip >> 2) & 1, (vsdip >> 3) & 1,
|
|
|
|
|
(vsdip >> 4) & 1, (vsdip >> 5) & 1, (vsdip >> 6) & 1, (vsdip >> 7) & 1);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Nintendo World Championship */
|
|
|
|
|
static struct retro_variable dipswitch_nwc[] = {
|
|
|
|
|
{ "fceumm_dipswitch_nwc_swa", "Dipswitch SW1 (18.7s); disabled|enabled" },
|
|
|
|
|
{ "fceumm_dipswitch_nwc_swb", "Dipswitch SW2 (37.5s); disabled|enabled" },
|
|
|
|
|
{ "fceumm_dipswitch_nwc_swc", "Dipswitch SW3 (1m 15s); enabled|disabled" },
|
|
|
|
|
{ "fceumm_dipswitch_nwc_swd", "Dipswitch SW4 (2m 30s); disabled|enabled" },
|
|
|
|
|
{ NULL, NULL }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static void update_dipswitch_nwc(void)
|
|
|
|
|
{
|
|
|
|
|
struct retro_variable var = {0};
|
|
|
|
|
unsigned dips = 0x00;
|
|
|
|
|
unsigned index;
|
|
|
|
|
|
|
|
|
|
for (index = 0; index < 4; index++)
|
|
|
|
|
{
|
|
|
|
|
struct retro_variable *nwc = &dipswitch_nwc[index];
|
|
|
|
|
var.key = nwc->key;
|
|
|
|
|
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
|
|
|
|
|
{
|
|
|
|
|
if (strcmp(var.value, "enabled") == 0)
|
|
|
|
|
dips |= (1 << index);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (GameInfo->cspecial != dips)
|
|
|
|
|
{
|
|
|
|
|
GameInfo->cspecial = dips;
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
|
FCEU_printf("Dipswitch changed = %d%d%d%d\n", (dips >> 0) & 1,
|
|
|
|
|
(dips >> 1) & 1, (dips >> 2) & 1, (dips >> 3) & 1);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-21 20:29:53 +08:00
|
|
|
void set_dipswitch_variables(unsigned *index, struct retro_variable *vars)
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
|
|
|
|
unsigned i, idx = *index;
|
|
|
|
|
|
|
|
|
|
/* VSUNI Dipswitch */
|
|
|
|
|
if (GameInfo->type == GIT_VSUNI)
|
|
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
vsgame = get_vsuni_dipswitch(GameInfo->gameid);
|
|
|
|
|
if (vsgame)
|
2019-05-11 23:11:55 +08:00
|
|
|
{
|
2019-05-21 20:29:53 +08:00
|
|
|
make_core_options();
|
|
|
|
|
for (i = 0; i < vsgame->dipswitch_size; i++, idx++) {
|
|
|
|
|
vars[idx].key = vscoreopt[i].key;
|
|
|
|
|
vars[idx].value = vscoreopt[i].val;
|
2019-05-11 23:11:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Nintendo World Championship cart (Mapper 105)*/
|
|
|
|
|
if (iNESCart.mapper == 105)
|
|
|
|
|
{
|
|
|
|
|
i = 0;
|
|
|
|
|
while (dipswitch_nwc[i].key) {
|
|
|
|
|
vars[idx] = dipswitch_nwc[i];
|
|
|
|
|
idx++;
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*index = idx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void update_dipswitch(void)
|
|
|
|
|
{
|
|
|
|
|
if (iNESCart.mapper == 105)
|
|
|
|
|
update_dipswitch_nwc();
|
|
|
|
|
|
|
|
|
|
if (GameInfo->type == GIT_VSUNI)
|
|
|
|
|
update_dipswitch_vsuni();
|
|
|
|
|
}
|