Add internal database so that we automatically set Famicom 4P
or Fourscore for games that support it
This commit is contained in:
@@ -832,11 +832,272 @@ input_cheat:
|
|||||||
FCEUI_AddCheat(name, a, v, c, type);
|
FCEUI_AddCheat(name, a, v, c, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct cartridge_db
|
||||||
|
{
|
||||||
|
char title[256];
|
||||||
|
uint32_t crc;
|
||||||
|
} cartridge_db_t;
|
||||||
|
|
||||||
|
static const struct cartridge_db fourscore_db_list[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"Bomberman II (USA)",
|
||||||
|
0x1ebb5b42
|
||||||
|
},
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
"Championship Bowling (USA)",
|
||||||
|
0xeac38105
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
"Chris Evert & Ivan Lendl in Top Players' Tennis (USA)",
|
||||||
|
0xf99e37eb
|
||||||
|
},
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
"Crash 'n' the Boys - Street Challenge (USA)",
|
||||||
|
0xc7f0c457
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
"Four Players' Tennis (Europe)",
|
||||||
|
0x48b8ee58
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Danny Sullivan's Indy Heat (Europe)",
|
||||||
|
0x27ca0679,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Gauntlet II (Europe)",
|
||||||
|
0x79f688bc
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Gauntlet II (USA)",
|
||||||
|
0x1b71ccdb
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Greg Norman's Golf Power (USA)",
|
||||||
|
0x1352f1b9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Harlem Globetrotters (USA)",
|
||||||
|
0x2e6ee98d
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ivan 'Ironman' Stewart's Super Off Road (Europe)",
|
||||||
|
0x05104517
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ivan 'Ironman' Stewart's Super Off Road (USA)",
|
||||||
|
0x4b041b6b
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kings of the Beach - Professional Beach Volleyball (USA)",
|
||||||
|
0xf54b34bd
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Magic Johnson's Fast Break (USA)",
|
||||||
|
0xc6c2edb5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"M.U.L.E. (USA)",
|
||||||
|
0x0939852f
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Monster Truck Rally (USA)",
|
||||||
|
0x2f698c4d
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"NES Play Action Football (USA)",
|
||||||
|
0xb9b4d9e0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nightmare on Elm Street, A (USA)",
|
||||||
|
0xda2cb59a
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nintendo World Cup (Europe)",
|
||||||
|
0x8da6667d
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nintendo World Cup (Europe) (Rev A)",
|
||||||
|
0x7c16f819
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nintendo World Cup (Europe) (Rev B)",
|
||||||
|
0x7f08d0d9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nintendo World Cup (USA)",
|
||||||
|
0xa22657fa
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"R.C. Pro-Am II (Europe)",
|
||||||
|
0x308da987
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"R.C. Pro-Am II (USA)",
|
||||||
|
0x9edd2159
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Rackets & Rivals (Europe)",
|
||||||
|
0x8fa6e92c
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Roundball - 2-on-2 Challenge (Europe)",
|
||||||
|
0xad0394f0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Roundball - 2-on-2 Challenge (USA)",
|
||||||
|
0x6e4dcfd2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Spot - The Video Game (Japan)",
|
||||||
|
0x0abdd5ca
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Spot - The Video Game (USA)",
|
||||||
|
0xcfae9dfa
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Smash T.V. (Europe)",
|
||||||
|
0x0b8f8128
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Smash T.V. (USA)",
|
||||||
|
0x6ee94d32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Jeopardy! (USA)",
|
||||||
|
0xcf4487a2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Spike V'Ball (Europe)",
|
||||||
|
0xc05a63b2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Spike V'Ball (USA)",
|
||||||
|
0xe840fd21
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Spike V'Ball + Nintendo World Cup (USA)",
|
||||||
|
0x407d6ffd
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Swords and Serpents (Europe)",
|
||||||
|
0xd153caf6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Swords and Serpents (France)",
|
||||||
|
0x46135141
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Swords and Serpents (USA)",
|
||||||
|
0x3417ec46
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Battle City (Japan) (4 Players Hack) http://www.romhacking.net/hacks/2142/",
|
||||||
|
0x69977c9e
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bomberman 3 (Homebrew) http://tempect.de/senil/games.html",
|
||||||
|
0x2da5ece0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"K.Y.F.F. (Homebrew) http://slydogstudios.org/index.php/k-y-f-f/",
|
||||||
|
0x90d2e9f0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super PakPak (Homebrew) http://wiki.nesdev.com/w/index.php/Super_PakPak",
|
||||||
|
0x1394ded0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Mario Bros. + Tetris + Nintendo World Cup (Europe)",
|
||||||
|
0x73298c87
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Mario Bros. + Tetris + Nintendo World Cup (Europe) (Rev A)",
|
||||||
|
0xf46ef39a
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct cartridge_db famicom_4p_db_list[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"Bakutoushi Patton-Kun (Japan) (FDS)",
|
||||||
|
0xc39b3bb2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Bomber Man II (Japan)",
|
||||||
|
0x0c401790
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Championship Bowling (Japan)",
|
||||||
|
0x9992f445
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Downtown - Nekketsu Koushinkyoku - Soreyuke Daiundoukai (Japan)",
|
||||||
|
0x3e470fe0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Ike Ike! Nekketsu Hockey-bu - Subette Koronde Dairantou (Japan)",
|
||||||
|
0x4f032933
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Kunio-kun no Nekketsu Soccer League (Japan)",
|
||||||
|
0x4b5177e9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Moero TwinBee - Cinnamon Hakase o Sukue! (Japan)",
|
||||||
|
0x9f03b11f
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Moero TwinBee - Cinnamon Hakase wo Sukue! (Japan) (FDS)",
|
||||||
|
0x13205221
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nekketsu Kakutou Densetsu (Japan)",
|
||||||
|
0x37e24797
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nekketsu Koukou Dodgeball-bu (Japan)",
|
||||||
|
0x62c67984
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Nekketsu! Street Basket - Ganbare Dunk Heroes (Japan)",
|
||||||
|
0x88062d9a
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Dodge Ball (USA) (3-4p with Game Genie code GEUOLZZA)",
|
||||||
|
0x689971f9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Super Dodge Ball (USA) (patched) http://www.romhacking.net/hacks/71/",
|
||||||
|
0x4ff17864
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"U.S. Championship V'Ball (Japan)",
|
||||||
|
0x213cb3fb
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"U.S. Championship V'Ball (Japan) (Beta)",
|
||||||
|
0xd7077d96
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Wit's (Japan)",
|
||||||
|
0xb1b16b8a
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
extern uint32_t iNESGameCRC32;
|
extern uint32_t iNESGameCRC32;
|
||||||
|
|
||||||
bool retro_load_game(const struct retro_game_info *game)
|
bool retro_load_game(const struct retro_game_info *game)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
char* dir=NULL;
|
char* dir=NULL;
|
||||||
|
size_t fourscore_len = sizeof(fourscore_db_list) / sizeof(fourscore_db_list[0]);
|
||||||
|
size_t famicom_4p_len = sizeof(famicom_4p_db_list) / sizeof(famicom_4p_db_list[0]);
|
||||||
|
|
||||||
struct retro_input_descriptor desc[] = {
|
struct retro_input_descriptor desc[] = {
|
||||||
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" },
|
{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" },
|
||||||
@@ -903,6 +1164,26 @@ bool retro_load_game(const struct retro_game_info *game)
|
|||||||
if (!environ_cb(RETRO_ENVIRONMENT_GET_OVERSCAN, &use_overscan))
|
if (!environ_cb(RETRO_ENVIRONMENT_GET_OVERSCAN, &use_overscan))
|
||||||
use_overscan = true;
|
use_overscan = true;
|
||||||
|
|
||||||
|
FCEUI_DisableFourScore(1);
|
||||||
|
|
||||||
|
for (i = 0; i < fourscore_len; i++)
|
||||||
|
{
|
||||||
|
if (fourscore_db_list[i].crc == iNESGameCRC32)
|
||||||
|
{
|
||||||
|
FCEUI_DisableFourScore(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < famicom_4p_len; i++)
|
||||||
|
{
|
||||||
|
if (famicom_4p_db_list[i].crc == iNESGameCRC32)
|
||||||
|
{
|
||||||
|
FCEUI_SetInputFC(SIFC_4PLAYER, &JSReturn[0], 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user