VS System: Updated dipswitch DB with dual system games (+some refactoring)

This commit is contained in:
Sour 2018-07-22 15:21:48 -04:00
parent 154905f9f4
commit a13f2dd3a8
6 changed files with 281 additions and 294 deletions

View file

@ -487,10 +487,6 @@ void GameDatabase::SetGameInfo(uint32_t romCrc, RomData &romData, bool updateRom
MessageManager::Log("[DB] Game not found in database");
}
#ifdef LIBRETRO
SetVsSystemDefaults(romData.Info.Hash.PrgCrc32);
#endif
romData.Info.DatabaseInfo = info;
}
@ -525,64 +521,3 @@ void GameDatabase::UpdateRomData(GameInfo &info, RomData &romData)
}
}
}
void GameDatabase::SetVsSystemDefaults(uint32_t prgCrc32)
{
//TODO: CLEANUP
switch(prgCrc32) {
case 0x8850924B:
//Tetris
//defaultDip = 32; //????
break;
case 0xCF36261E:
//SuperSkyKid
//inputType = VsInputType::SwapControllers;
//model = PpuModel::Ppu2C04A;
break;
case 0xE1AA8214:
//StarLuster
//defaultDip = 32; //????
break;
case 0x43A357EF:
//IceClimber
//inputType = VsInputType::SwapControllers;
//model = PpuModel::Ppu2C04D;
break;
case 0xD4EB5923:
//IceClimberB
//inputType = VsInputType::SwapControllers;
//model = PpuModel::Ppu2C04D;
break;
case 0x737DD1BF: case 0x4BF3972D:
//SuperMarioBros
//model = PpuModel::Ppu2C04D;
break;
case 0xAE8063EF:
//MachRiderFightingCourse, defaults
//model = PpuModel::Ppu2C03;
break;
case 0x8A6A9848: //1 crc left
//MachRider
//model = PpuModel::Ppu2C04B;
break;
case 0xC99EC059:
//RaidBungelingBay
//inputType = VsInputType::SwapControllers;
//model = PpuModel::Ppu2C04B;
break;
case 0xF9D3B0A3: case 0x66BB838F: case 0x9924980A:
//SuperXevious
//model = PpuModel::Ppu2C04A;
break;
}
}

View file

@ -20,7 +20,6 @@ private:
static void InitDatabase();
static void UpdateRomData(GameInfo &info, RomData &romData);
static void SetVsSystemDefaults(uint32_t prgCrc32);
public:
static void LoadGameDb(vector<string> data);

View file

@ -10,72 +10,16 @@ namespace Mesen.GUI.Config
{
public class GameDipswitchDefinition
{
public string GameID;
public byte DefaultDipSwitches;
public List<List<string>> DipSwitches;
private static Dictionary<string, GameDipswitchDefinition> _gameConfigs = new Dictionary<string, GameDipswitchDefinition>();
public static string GetGameIdByCrc(UInt32 prgCrc32)
{
switch(prgCrc32) {
case 0x9213A19E: return "BalloonFight";
case 0xEB2DBA63: case 0x98CFE016: return "TKOBoxing";
case 0x135ADF7C: return "RBIBaseball";
case 0xED588F00: return "DuckHunt";
case 0x16D3F469: return "NinjaJajamaruKun";
case 0x8850924B: return "Tetris";
case 0x8C0C2DF5: return "TopGun";
case 0x70901B25: return "Slalom";
case 0xCF36261E: return "SuperSkyKid";
case 0xE1AA8214: return "StarLuster";
case 0xD5D7EAC4: return "DrMario";
case 0xFFBEF374: return "Castlevania";
case 0xE2C0A2BE: return "Platoon";
case 0x29155E0C: return "ExciteBike";
case 0xCBE85490: return "ExciteBikeB";
case 0x07138C06: return "CluCluLand";
case 0x43A357EF: return "IceClimber";
case 0xD4EB5923: return "IceClimberB";
case 0x737DD1BF: case 0x4BF3972D: case 0x8B60CC58: case 0x8192C804: return "SuperMarioBros";
case 0xE528F651: return "Pinball";
case 0xEC461DB9: return "PinballB";
case 0xAE8063EF: return "MachRiderFightingCourse";
case 0x0B65A917: case 0x8A6A9848: return "MachRider";
case 0x46914E3E: return "Soccer";
case 0x70433F2C: return "BattleCity";
case 0xD99A2087: return "Gradius";
case 0x1E438D52: return "Goonies";
case 0xFF5135A3: return "HoganAlley";
case 0x17AE56BE: return "FreedomForce";
case 0xC99EC059: return "RaidBungelingBay";
case 0xF9D3B0A3: case 0x66BB838F: case 0x9924980A: return "SuperXevious";
case 0xA93A5AEE: return "Golf";
case 0xCC2C4B5D: case 0x86167220: return "GolfB";
case 0xCA85E56D: return "MightyBombJack";
case 0xFE446787: return "Gumshoe";
}
return null;
}
public static string GetGameID()
{
string gameID = GetGameIdByCrc(InteropEmu.GetRomInfo().PrgCrc32);
if(gameID != null) {
return gameID;
}
return "Unknown";
}
private static Dictionary<int, GameDipswitchDefinition> _gameConfigs = new Dictionary<int, GameDipswitchDefinition>();
public static GameDipswitchDefinition GetDipswitchDefinition()
{
string gameID = GetGameID();
if(gameID != null && _gameConfigs.ContainsKey(gameID)) {
return _gameConfigs[gameID];
int prgCrc32 = (int)InteropEmu.GetRomInfo().PrgCrc32;
if(_gameConfigs.ContainsKey(prgCrc32)) {
return _gameConfigs[prgCrc32];
} else {
return null;
}
@ -84,39 +28,38 @@ namespace Mesen.GUI.Config
static GameDipswitchDefinition()
{
XmlDocument config = new XmlDocument();
config.Load(ResourceManager.GetZippedResource("VsSystem.xml"));
config.Load(ResourceManager.GetZippedResource("DipswitchDefinitions.xml"));
foreach(XmlNode gameNode in config.SelectNodes("/VsSystemGames/Game")) {
foreach(XmlNode gameNode in config.SelectNodes("/DipswitchDefinitions/Game")) {
var gameDipswitches = new GameDipswitchDefinition();
gameDipswitches.GameID = gameNode.Attributes["ID"].Value;
if(gameNode.Attributes["DefaultDip"] != null) {
gameDipswitches.DefaultDipSwitches = (byte)Int32.Parse(gameNode.Attributes["DefaultDip"].Value);
}
gameDipswitches.DipSwitches = new List<List<string>>();
foreach(XmlNode dipSwitch in gameNode.SelectNodes("DipSwitch")) {
if(dipSwitch.Attributes["Localization"] != null) {
var list = new List<string>();
gameDipswitches.DipSwitches.Add(list);
list.Add(dipSwitch.Attributes["Localization"].Value);
foreach(XmlNode option in dipSwitch.SelectNodes("Option")) {
list.Add(option.InnerText);
}
} else {
var list = new List<string>();
gameDipswitches.DipSwitches.Add(list);
list.Add("Unknown");
list.Add("Off");
list.Add("On");
string crcValues = gameNode.Attributes["PrgCrc32"].Value;
foreach(string crc in crcValues.Split(',')) {
if(gameNode.Attributes["DefaultDip"] != null) {
gameDipswitches.DefaultDipSwitches = (byte)Int32.Parse(gameNode.Attributes["DefaultDip"].Value);
}
gameDipswitches.DipSwitches = new List<List<string>>();
foreach(XmlNode dipSwitch in gameNode.SelectNodes("DipSwitch")) {
if(dipSwitch.Attributes["Localization"] != null) {
var list = new List<string>();
gameDipswitches.DipSwitches.Add(list);
list.Add(dipSwitch.Attributes["Localization"].Value);
foreach(XmlNode option in dipSwitch.SelectNodes("Option")) {
list.Add(option.InnerText);
}
} else {
var list = new List<string>();
gameDipswitches.DipSwitches.Add(list);
list.Add("Unknown");
list.Add("Off");
list.Add("On");
}
}
_gameConfigs[int.Parse(crc, System.Globalization.NumberStyles.HexNumber)] = gameDipswitches;
}
_gameConfigs[gameNode.Attributes["ID"].Value] = gameDipswitches;
}
}
}
}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<VsSystemGames>
<Game ID="BalloonFight">
<DipswitchDefinitions>
<Game Name="(Dual) VS Balloon Fight" PrgCrc32="9213A19E">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -39,7 +39,216 @@
<Option>Every 10,000 points</Option>
</DipSwitch>
</Game>
<Game ID="BattleCity" Localization="Battle City">
<Game Name="(Dual) VS Baseball" PrgCrc32="44691677">
<DipSwitch Localization="Player Defense Strength">
<Option>Weak</Option>
<Option>Medium</Option>
<Option>Normal</Option>
<Option>Strong</Option>
</DipSwitch>
<DipSwitch Localization="Player Offense Strength">
<Option>Weak</Option>
<Option>Medium</Option>
<Option>Normal</Option>
<Option>Strong</Option>
</DipSwitch>
<DipSwitch Localization="Computer Defense Strength">
<Option>Weak</Option>
<Option>Medium</Option>
<Option>Normal</Option>
<Option>Strong</Option>
</DipSwitch>
<DipSwitch Localization="Computer Offense Strength">
<Option>Weak</Option>
<Option>Medium</Option>
<Option>Normal</Option>
<Option>Strong</Option>
</DipSwitch>
<DipSwitch />
<DipSwitch Localization="Coins">
<Option>1 Coin = 1 Credit</Option>
<Option>2 Coins = 1 Credit</Option>
<Option>1 Coin = 2 Credits</Option>
<Option>Free Play</Option>
</DipSwitch>
<DipSwitch Localization="Starting Points">
<Option>80</Option>
<Option>250</Option>
<Option>150</Option>
<Option>350</Option>
<Option>100</Option>
<Option>300</Option>
<Option>200</Option>
<Option>400</Option>
</DipSwitch>
<DipSwitch Localization="Bonus Play">
<Option>On</Option>
<Option>Off</Option>
</DipSwitch>
<DipSwitch Localization="Demo Sounds">
<Option>Off</Option>
<Option>On</Option>
</DipSwitch>
</Game>
<Game Name="(Dual) VS Mahjong" PrgCrc32="5734B934,91D1B01B">
<DipSwitch />
<DipSwitch />
<DipSwitch />
<DipSwitch />
<DipSwitch Localization="Time">
<Option>90</Option>
<Option>45</Option>
<Option>60</Option>
<Option>30</Option>
</DipSwitch>
<DipSwitch />
<DipSwitch />
<DipSwitch />
<DipSwitch Localization="Coinage">
<Option>1 Coin = 1 Credit</Option>
<Option>2 Coins = 1 Credit</Option>
<Option>1 Coin = 2 Credits</Option>
<Option>Free Play</Option>
</DipSwitch>
<DipSwitch />
<DipSwitch />
<DipSwitch Localization="Starting Points">
<Option>30000</Option>
<Option>20000</Option>
<Option>25000</Option>
<Option>15000</Option>
</DipSwitch>
<DipSwitch Localization="Demo Sounds">
<Option>Off</Option>
<Option>On</Option>
</DipSwitch>
</Game>
<Game Name="(Dual) VS Raid on Bungeling Bay" PrgCrc32="99FB3B3B,E07AF8EA">
<DipSwitch Localization="Coins">
<Option>1 Coin = 1 Credit</Option>
<Option>2 Coins = 1 Credit</Option>
<Option>1 Coin = 3 Credits</Option>
<Option>4 Coins = 1 Credit</Option>
<Option>1 Coin = 2 Credits</Option>
<Option>3 Coins = 1 Credit</Option>
<Option>1 Coin = 4 Credits</Option>
<Option>Free Play</Option>
</DipSwitch>
<DipSwitch Localization="Lives">
<Option>2</Option>
<Option>3</Option>
</DipSwitch>>
<DipSwitch />
<DipSwitch />
<DipSwitch />
<DipSwitch />
<DipSwitch />
</Game>
<Game Name="(Dual) VS Tennis" PrgCrc32="2AF7E14E">
<DipSwitch Localization="Difficulty Vs Computer">
<Option>Easy</Option>
<Option>Medium</Option>
<Option>Normal</Option>
<Option>Hard</Option>
</DipSwitch>
<DipSwitch Localization="Difficulty Vs Player">
<Option>Easy</Option>
<Option>Medium</Option>
<Option>Normal</Option>
<Option>Hard</Option>
</DipSwitch>
<DipSwitch Localization="Racket Size">
<Option>Large</Option>
<Option>Small</Option>
</DipSwitch>
<DipSwitch Localization="Extra Score">
<Option>1 Set</Option>
<Option>1 Game</Option>
</DipSwitch>
<DipSwitch Localization="Court Color">
<Option>Green</Option>
<Option>Blue</Option>
</DipSwitch>
<DipSwitch Localization="Copyright">
<Option>Japan</Option>
<Option>USA</Option>
</DipSwitch>
<DipSwitch />
<DipSwitch Localization="Coins">
<Option>1 Coin = 1 Credit</Option>
<Option>2 Coins = 1 Credit</Option>
<Option>1 Coin = 2 Credits</Option>
<Option>Free Play</Option>
</DipSwitch>
<DipSwitch Localization="Game Mode Credits">
<Option>1/1/1/1</Option>
<Option>2/2/2/2</Option>
<Option>1/2/1/2</Option>
<Option>2/2/4/4</Option>
</DipSwitch>
<DipSwitch Localization="Rackets per Game">
<Option>3</Option>
<Option>5</Option>
<Option>4</Option>
<Option>2</Option>
</DipSwitch>
<DipSwitch Localization="Demo Sounds">
<Option>Off</Option>
<Option>On</Option>
</DipSwitch>
</Game>
<Game Name="(Dual) VS Wrecking Crew" PrgCrc32="12B36F73">
<DipSwitch Localization="Lives">
<Option>3</Option>
<Option>5</Option>
<Option>4</Option>
<Option>6</Option>
</DipSwitch>
<DipSwitch Localization="1st Bonus Life">
<Option>20000 points</Option>
<Option>70000 points</Option>
<Option>40000 points</Option>
<Option>100000 points</Option>
<Option>30000 points</Option>
<Option>80000 points</Option>
<Option>50000 points</Option>
<Option>None</Option>
</DipSwitch>
<DipSwitch Localization="Additional Bonus Lives">
<Option>20000 points</Option>
<Option>70000 points</Option>
<Option>40000 points</Option>
<Option>100000 points</Option>
<Option>30000 points</Option>
<Option>80000 points</Option>
<Option>50000 points</Option>
<Option>None</Option>
</DipSwitch>
<DipSwitch Localization="Coins">
<Option>Free Play</Option>
<Option>1 coin = 1 credit</Option>
<Option>1 coin = 3 credits</Option>
<Option>3 coins = 1 credit</Option>
<Option>1 coin = 4 credits</Option>
<Option>2 coins = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
<Option>4 coins = 1 credit</Option>
</DipSwitch>
<DipSwitch Localization="Difficulty">
<Option>Easy</Option>
<Option>Normal</Option>
<Option>Medium</Option>
<Option>Hard</Option>
</DipSwitch>
<DipSwitch Localization="Copyright">
<Option>Japan</Option>
<Option>USA</Option>
</DipSwitch>
<DipSwitch />
<DipSwitch />
</Game>
<Game Name="Battle City" PrgCrc32="70433F2C">
<DipSwitch Localization="Credits for 2 Players">
<Option>1</Option>
<Option>2</Option>
@ -62,7 +271,7 @@
<Option>RP2C04-0004</Option>
</DipSwitch>
</Game>
<Game ID="Castlevania" Localization="Castlevania">
<Game Name="Castlevania" PrgCrc32="FFBEF374">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -88,7 +297,7 @@
<Option>Hard</Option>
</DipSwitch>
</Game>
<Game ID="CluCluLand" Localization="Clu Clu Land">
<Game Name="Clu Clu Land" PrgCrc32="07138C06">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -109,7 +318,7 @@
</DipSwitch>
<DipSwitch />
</Game>
<Game ID="DrMario" Localization="Dr. Mario">
<Game Name="Dr. Mario" PrgCrc32="D5D7EAC4">
<DipSwitch Localization="Drop Rate Increases After">
<Option>7 Pills</Option>
<Option>8 Pills</Option>
@ -137,7 +346,7 @@
<Option>On</Option>
</DipSwitch>
</Game>
<Game ID="DuckHunt" Localization="Duck Hunt">
<Game Name="Duck Hunt" PrgCrc32="ED588F00">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -165,7 +374,7 @@
<Option>100000</Option>
</DipSwitch>
</Game>
<Game ID="ExciteBike" Localization="Excitebike">
<Game Name="Excitebike" PrgCrc32="29155E0C,CBE85490">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -191,33 +400,7 @@
<Option>Hard</Option>
</DipSwitch>
</Game>
<Game ID="ExciteBikeB" Localization="Excitebike">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
<Option>1 coin = 3 credits</Option>
<Option>4 coins = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
<Option>3 coins = 1 credit</Option>
<Option>1 coin = 4 credits</Option>
<Option>Free Play</Option>
</DipSwitch>
<DipSwitch Localization="Bonus">
<Option>100k and Every 50k</Option>
<Option>100k Only</Option>
<Option>Every 100k</Option>
<Option>None</Option>
</DipSwitch>
<DipSwitch Localization="Part 1 Qualifying Time">
<Option>Normal</Option>
<Option>Hard</Option>
</DipSwitch>
<DipSwitch Localization="Part 2 Qualifying Time">
<Option>Normal</Option>
<Option>Hard</Option>
</DipSwitch>
</Game>
<Game ID="FreedomForce" Localization="Freedom Force">
<Game Name="Freedom Force" PrgCrc32="17AE56BE">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -234,7 +417,7 @@
<DipSwitch />
<DipSwitch />
</Game>
<Game ID="Golf" Localization="Golf">
<Game Name="Golf" PrgCrc32="A93A5AEE,86167220,CC2C4B5D">
<DipSwitch Localization="Coins">
<Option>Free Play</Option>
<Option>1 coin = 1 credit</Option>
@ -264,37 +447,7 @@
<Option>Hard</Option>
</DipSwitch>
</Game>
<Game ID="GolfB" Localization="Golf">
<DipSwitch Localization="Coins">
<Option>Free Play</Option>
<Option>1 coin = 1 credit</Option>
<Option>1 coin = 3 credits</Option>
<Option>3 coins = 1 credit</Option>
<Option>1 coin = 4 credits</Option>
<Option>2 coins = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
<Option>4 coins = 1 credit</Option>
</DipSwitch>
<DipSwitch Localization="Hole Size">
<Option>Large</Option>
<Option>Small</Option>
</DipSwitch>
<DipSwitch Localization="Points per Stroke">
<Option>Easy</Option>
<Option>Hard</Option>
</DipSwitch>
<DipSwitch Localization="Starting Points">
<Option>10</Option>
<Option>16</Option>
<Option>13</Option>
<Option>20</Option>
</DipSwitch>
<DipSwitch Localization="Difficulty Vs. Computer">
<Option>Easy</Option>
<Option>Hard</Option>
</DipSwitch>
</Game>
<Game ID="Goonies" Localization="Goonies">
<Game Name="Goonies" PrgCrc32="1E438D52">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -320,7 +473,7 @@
<Option>On</Option>
</DipSwitch>
</Game>
<Game ID="Gradius" Localization="Gradius">
<Game Name="Gradius" PrgCrc32="D99A2087">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -350,7 +503,7 @@
<Option>On</Option>
</DipSwitch>
</Game>
<Game ID="Gumshoe" Localization="Gumshoe">
<Game Name="Gumshoe" PrgCrc32="FE446787">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -380,7 +533,7 @@
<Option>100000</Option>
</DipSwitch>
</Game>
<Game ID="HoganAlley" Localization="Hogan's Alley">
<Game Name="Hogan's Alley" PrgCrc32="FF5135A3">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -408,7 +561,7 @@
<Option>100000</Option>
</DipSwitch>
</Game>
<Game ID="IceClimber" Localization="Ice Climber">
<Game Name="Ice Climber" PrgCrc32="43A357EF,D4EB5923">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -434,33 +587,7 @@
<Option>Short</Option>
</DipSwitch>
</Game>
<Game ID="IceClimberB" Localization="Ice Climber">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
<Option>1 coin = 3 credits</Option>
<Option>4 coins = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
<Option>3 coins = 1 credit</Option>
<Option>1 coin = 4 credits</Option>
<Option>Free Play</Option>
</DipSwitch>
<DipSwitch Localization="Lives">
<Option>3</Option>
<Option>5</Option>
<Option>4</Option>
<Option>7</Option>
</DipSwitch>
<DipSwitch Localization="Difficulty">
<Option>Normal</Option>
<Option>Hard</Option>
</DipSwitch>
<DipSwitch Localization="Time before the bear">
<Option>Long</Option>
<Option>Short</Option>
</DipSwitch>
</Game>
<Game ID="MachRider" Localization="Mach Rider">
<Game Name="Mach Rider" PrgCrc32="0B65A917,8A6A9848">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -481,7 +608,7 @@
<DipSwitch />
<DipSwitch />
</Game>
<Game ID="MachRiderFightingCourse" Localization="Mach Rider - Fighting Course">
<Game Name="Mach Rider - Fighting Course" PrgCrc32="AE8063EF">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -500,7 +627,7 @@
<DipSwitch />
<DipSwitch />
</Game>
<Game ID="MightyBombJack" Localization="Mighty Bomb Jack">
<Game Name="Mighty Bomb Jack" PrgCrc32="CA85E56D">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -521,7 +648,7 @@
<DipSwitch />
<DipSwitch />
</Game>
<Game ID="NinjaJajamaruKun" Localization="Ninja Jajamaru Kun">
<Game Name="Ninja Jajamaru Kun" PrgCrc32="16D3F469">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -545,7 +672,7 @@
<Option>On</Option>
</DipSwitch>
</Game>
<Game ID="Pinball" Localization="Pinball (Japan)">
<Game Name="Pinball" PrgCrc32="E528F651,EC461DB9">
<DipSwitch Localization="Coins">
<Option>Free Play</Option>
<Option>1 coin = 1 credit</Option>
@ -569,31 +696,7 @@
<Option>Fast</Option>
</DipSwitch>
</Game>
<Game ID="PinballB" Localization="Pinball (US)">
<DipSwitch Localization="Coins">
<Option>Free Play</Option>
<Option>1 coin = 1 credit</Option>
<Option>1 coin = 3 credits</Option>
<Option>3 coins = 1 credit</Option>
<Option>1 coin = 4 credits</Option>
<Option>2 coins = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
<Option>4 coins = 1 credit</Option>
</DipSwitch>
<DipSwitch />
<DipSwitch />
<DipSwitch Localization="Balls">
<Option>3</Option>
<Option>5</Option>
<Option>4</Option>
<Option>2</Option>
</DipSwitch>
<DipSwitch Localization="Ball Speed">
<Option>Normal</Option>
<Option>Fast</Option>
</DipSwitch>
</Game>
<Game ID="Platoon" Localization="Platoon">
<Game Name="Platoon" PrgCrc32="E2C0A2BE">
<DipSwitch />
<DipSwitch />
<DipSwitch Localization="Demo Sounds">
@ -613,7 +716,7 @@
<Option>Free Play</Option>
</DipSwitch>
</Game>
<Game ID="RBIBaseball" Localization="RBI Baseball">
<Game Name="RBI Baseball" PrgCrc32="135ADF7C">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
@ -640,7 +743,7 @@
<Option>Unused</Option>
</DipSwitch>
</Game>
<Game ID="RaidBungelingBay" Localization="Raid on Bungeling Bay">
<Game Name="Raid on Bungeling Bay" PrgCrc32="C99EC059">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -660,7 +763,7 @@
<DipSwitch />
<DipSwitch />
</Game>
<Game ID="Slalom" Localization="Slalom">
<Game Name="Slalom" PrgCrc32="70901B25">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -690,7 +793,7 @@
<Option>On</Option>
</DipSwitch>
</Game>
<Game ID="Soccer" Localization="Soccer">
<Game Name="Soccer" PrgCrc32="46914E3E">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -714,7 +817,7 @@
<Option>Very Hard</Option>
</DipSwitch>
</Game>
<Game ID="StarLuster" Localization="Star Luster" DefaultDip="32">
<Game Name="Star Luster" PrgCrc32="E1AA8214" DefaultDip="32">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -732,7 +835,7 @@
</DipSwitch>
<DipSwitch />
</Game>
<Game ID="SuperMarioBros" Localization="Super Mario Bros">
<Game Name="Super Mario Bros" PrgCrc32="8192C804,8B60CC58,4BF3972D,737DD1BF">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>1 coin = 3 credits</Option>
@ -762,7 +865,7 @@
<Option>3</Option>
</DipSwitch>
</Game>
<Game ID="SuperSkyKid" Localization="Super Sky Kid">
<Game Name="Super Sky Kid" PrgCrc32="CF36261E">
<DipSwitch />
<DipSwitch />
<DipSwitch Localization="Lives">
@ -786,7 +889,7 @@
<Option>Unused</Option>
</DipSwitch>
</Game>
<Game ID="SuperXevious" Localization="Super Xevious">
<Game Name="Super Xevious" PrgCrc32="F9D3B0A3,66BB838F,9924980A">
<DipSwitch />
<DipSwitch />
<DipSwitch />
@ -804,7 +907,7 @@
<Option>RP2C04-0004</Option>
</DipSwitch>
</Game>
<Game ID="Tetris" Localization="Tetris" DefaultDip="32">
<Game Name="Tetris" PrgCrc32="8850924B" DefaultDip="32">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>2 coins = 1 credit</Option>
@ -822,7 +925,7 @@
</DipSwitch>
<DipSwitch />
</Game>
<Game ID="TKOBoxing" Localization="TKO Boxing">
<Game Name="TKO Boxing" PrgCrc32="98CFE016,EB2DBA63">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>1 coin = 2 credits</Option>
@ -839,7 +942,7 @@
<DipSwitch />
<DipSwitch />
</Game>
<Game ID="TopGun" Localization="Top Gun">
<Game Name="Top Gun" PrgCrc32="8C0C2DF5">
<DipSwitch Localization="Coins">
<Option>1 coin = 1 credit</Option>
<Option>3 coins = 1 credit</Option>
@ -869,4 +972,4 @@
<Option>On</Option>
</DipSwitch>
</Game>
</VsSystemGames>
</DipswitchDefinitions>

View file

@ -1802,7 +1802,7 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</Content>
<Content Include="Dependencies\VsSystem.xml">
<Content Include="Dependencies\DipswitchDefinitions.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</Content>

View file

@ -978,6 +978,13 @@ extern "C" {
bool result = _console->Initialize(game->path);
if(result) {
//Set default dipswitches for some VS System games
switch(_console->GetRomInfo().Hash.PrgCrc32) {
case 0x8850924B: _console->GetSettings()->SetDipSwitches(32); break; //VS Tetris
case 0xE1AA8214: _console->GetSettings()->SetDipSwitches(32); break; //StarLuster
default: _console->GetSettings()->SetDipSwitches(0); break;
}
update_core_controllers();
update_input_descriptors();