Added region field in cart DB.

This field is required in order to distinguish between regional
versions where the game ID is the same but the save type differ,
such as the Castlevania games.

Also added more Japanese-specific game IDs and edited some descriptions.
This commit is contained in:
Simon Eriksson 2016-04-03 16:18:15 +02:00 committed by Tyler J. Stachecki
parent bb41f7208e
commit 802556002e
3 changed files with 171 additions and 168 deletions

View file

@ -84,7 +84,7 @@ int cen64_main(int argc, const char **argv) {
}
if (cart.size >= 0x40 && (cart_info = cart_db_get_entry(cart.ptr)) != NULL)
printf("Detected cart: %s* [%s]\n", cart_info->rom_id, cart_info->description);
printf("Detected cart: %s[%s] - %s\n", cart_info->rom_id, cart_info->regions, cart_info->description);
if (load_paks(controller)) {
cen64_alloc_cleanup();

View file

@ -17,170 +17,172 @@
#define NUM_CART_DB_ENTRIES (sizeof(cart_db_table) / sizeof(*cart_db_table))
static const struct cart_db_entry cart_db_table[] = {
{"CFZ", CART_DB_SAVE_TYPE_SRAM_256KBIT, "F-Zero X (NTSC)"},
{"CLB", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Party (NTSC)"},
{"CZL", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Legend of Zelda: Ocarina of Time (NTSC)"},
{"N3D", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Doraemon 3 - Nobita no Machi SOS!"},
{"NA2", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Virtual Pro Wrestling 2"},
{"NAB", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Air Boarder 64"},
{"NAD", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Worms Armageddon (USA)"},
{"NAF", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Doubutsu no Mori"},
{"NAG", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "AeroGauge"},
{"NAL", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Super Smash Bros"},
{"NB5", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Biohazard 2"},
{"NB6", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Super B-Daman - Battle Phoenix 64"},
{"NB7", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Banjo-Tooie"},
{"NBC", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Blast Corps"},
{"NBD", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman Hero"},
{"NBH", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Body Harvest"},
{"NBK", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Banjo-Kazooie"},
{"NBM", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman 64"},
{"NBN", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bakuretsu Muteki Bangaioh"},
{"NBV", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman 64: The Second Attack!"},
{"NCC", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Command & Conquer"},
{"NCH", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Chopper Attack"},
{"NCK", CART_DB_SAVE_TYPE_FLASH_1MBIT, "NBA Courtside 2"},
{"NCR", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Penny Racers"},
{"NCT", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Chameleon Twist"},
{"NCU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Cruis'n USA"},
{"NCW", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Cruis'n World"},
{"NCX", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Custom Robo"},
{"NCZ", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Custom Robo V2"},
{"ND2", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Doraemon 2 - Nobita to Hikari no Shinden"},
{"ND3", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Castlevania"},
{"ND4", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Castlevania - Legacy of Darkness"},
{"ND6", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Densha de Go! 64"},
{"NDA", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Derby Stallion 64"},
{"NDO", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Donkey Kong 64"},
{"NDP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Donkey Kong 64 (USA) (Demo) (Kiosk)"},
{"NDR", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Doraemon"},
{"NDU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Duck Dodgers"},
{"NDY", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Diddy Kong Racing"},
{"NEA", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "PGA European Tour"},
{"NEP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Star Wars Episode I: Racer"},
{"NER", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "AeroFighters Assault (USA)"},
{"NEV", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Neon Genesis Evangelion"},
{"NF2", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "F-1 World Grand Prix II"},
{"NFG", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Fighter Destiny 2"},
{"NFH", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bass Hunter 64"},
{"NFU", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Conker's Bad Fur Day"},
{"NFW", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "F-1 World Grand Prix"},
{"NFX", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Fox 64"},
{"NFZ", CART_DB_SAVE_TYPE_SRAM_256KBIT, "F-Zero X (PAL)"},
{"NG6", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Ganbare Goemon - Dero Dero Douchuu Obake Tenkomori"},
{"NGC", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "GT 64: Championship Edition"},
{"NGE", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "007: Goldeneye"},
{"NGL", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Getter Love!!"},
{"NGP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Goemon - Mononoke Sugoroku"},
{"NGU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tsumi to Batsu - Hoshi no Keishousha"},
{"NGV", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Glover"},
{"NHA", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman 64 (Japan)"},
{"NHF", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 Hanafuda - Tenshi no Yakusoku"},
{"NHP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Heiwa Pachinko World 64"},
{"NHY", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Hybrid Heaven (Japan)"},
{"NIC", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Indy Racing 2000"},
{"NIJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Indiana Jones and the Infernal Machine"},
{"NIM", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Ide Yosuke no Mahjong Juku"},
{"NJ5", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu 5"},
{"NJF", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Jet Force Gemini"},
{"NJG", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jinsei Game 64"},
{"NJM", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Earthworm Jim 3D"},
{"NK2", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Snowboard Kids 2"},
{"NK4", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Kirby 64: The Crystal Shards"},
{"NKA", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Fighters Destiny"},
{"NKG", CART_DB_SAVE_TYPE_SRAM_256KBIT, "MLB featuring Ken Griffey Jr."},
{"NKI", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Killer Instinct Gold"},
{"NKJ", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Ken Griffey Jr.'s Slugfest"},
{"NKT", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Kart 64"},
{"NLB", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Party (PAL)"},
{"NLL", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Last Legion UX"},
{"NLR", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Lode Runner 3D"},
{"NM6", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Mega Man 64"},
{"NM8", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Mario Tennis"},
{"NMF", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Mario Golf"},
{"NMI", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mission: Impossible"},
{"NML", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mickey's Speedway USA"},
{"NMO", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Monopoly"},
{"NMQ", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Paper Mario"},
{"NMR", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Multi Racing Championship"},
{"NMS", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Morita Shougi 64"},
{"NMU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Big Mountain 2000"},
{"NMV", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Mario Party 3"},
{"NMW", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Party 2"},
{"NMX", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Excitebike 64"},
{"NN6", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Dr. Mario 64"},
{"NNA", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Wars Episode I: Battle for Naboo"},
{"NNB", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "NBA Courtside"},
{"NNX", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Excitebike 64 (USA) (Demo) (Kiosk)"},
{"NOB", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Ogre Battle 64 "},
{"NOH", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Transformers - Beast Wars Transmetals"},
{"NOS", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 Oozumou"},
{"NP2", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Chou Kuukan Nighter Pro Yakyuu King 2"},
{"NP3", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Stadium 2"},
{"NP6", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu 6"},
{"NPA", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu 2000"},
{"NPD", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Perfect Dark"},
{"NPE", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu Basic Ban 2001"},
{"NPF", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Snap"},
{"NPG", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Hey You, Pikachu!"},
{"NPN", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Puzzle League"},
{"NPO", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Stadium"},
{"NPP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Parlor! Pro 64 "},
{"NPS", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou J.League 1999 - Perfect Striker 2"},
{"NPT", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Puyo Puyon Party"},
{"NPW", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Pilotwings 64"},
{"NPY", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Puyo Puyo Sun 64"},
{"NR7", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Robot Poncots 64 - 7tsu no Umi no Caramel"},
{"NRA", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Rally '99"},
{"NRC", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Top Gear Overdrive"},
{"NRE", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Resident Evil 2"},
{"NRH", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Rockman Dash"},
{"NRI", CART_DB_SAVE_TYPE_SRAM_256KBIT, "The New Tetris"},
{"NRS", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Wars: Rogue Squadron"},
{"NRZ", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Ridge Racer 64"},
{"NS4", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Super Robot Taisen 64"},
{"NS6", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Soldier: Vanishing Earth"},
{"NSA", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "AeroFighters Assault (PAL, Japan)"},
{"NSC", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Starshot: Space Circus Fever"},
{"NSI", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Fushigi no Dungeon - Fuurai no Shiren 2"},
{"NSM", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Super Mario 64"},
{"NSN", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Snow Speeder"},
{"NSQ", CART_DB_SAVE_TYPE_FLASH_1MBIT, "StarCraft 64"},
{"NSS", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Super Robot Spirits"},
{"NSU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Rocket: Robot on Wheels"},
{"NSV", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "SpaceStation Silicon Valley "},
{"NSW", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Wars: Shadows of the Empire"},
{"NT3", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Toukon Road 2"},
{"NT6", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tetris 64"},
{"NT9", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Tigger's Honey Hunt"},
{"NTB", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Transformers - Beast Wars Metals 64"},
{"NTC", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 Trump Collection"},
{"NTE", CART_DB_SAVE_TYPE_SRAM_256KBIT, "1080 Snowboarding"},
{"NTJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tom and Jerry in Fists of Furry"},
{"NTM", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mischief Makers"},
{"NTN", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "All-Star Tennis 99"},
{"NTP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tetrisphere"},
{"NTR", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Top Gear Rally (PAL, Japan)"},
{"NTW", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 de Hakken!! Tamagotchi"},
{"NTX", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Taz Express"},
{"NUB", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "PD Ultraman Battle Collection 64"},
{"NUM", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Nushi Duri 64 - Shiokaze ni Notte"},
{"NUT", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Nushi Duri 64"},
{"NVL", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "V-Rally 99"},
{"NVP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Virtual Pro Wrestling 64"},
{"NW2", CART_DB_SAVE_TYPE_SRAM_256KBIT, "WCW/nWo Revenge"},
{"NW4", CART_DB_SAVE_TYPE_FLASH_1MBIT, "WWF No Mercy"},
{"NWL", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Waialae Country Club"},
{"NWQ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Rally Challenge 2000"},
{"NWR", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Wave Race 64"},
{"NWU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Worms Armageddon (PAL)"},
{"NWX", CART_DB_SAVE_TYPE_SRAM_256KBIT, "WWF WrestleMania 2000"},
{"NXO", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Cruis'n Exotica"},
{"NYK", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Yakouchuu II - Satsujin Kouro"},
{"NYS", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Yoshi's Story"},
{"NYW", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Harvest Moon 64"},
{"NZL", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Legend of Zelda: Ocarina of Time (PAL)"},
{"NZS", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Legend of Zelda: Majora's Mask"},
{"CFZ", "EJ", CART_DB_SAVE_TYPE_SRAM_256KBIT, "F-Zero X (NTSC)"},
{"CLB", "EJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Party (NTSC)"},
{"CP2", "J", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Stadium 2 (Japan)"},
{"CPS", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Pokemon Stadium (Japan)"},
{"CZL", "EJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Legend of Zelda: Ocarina of Time (NTSC)"},
{"N3D", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Doraemon 3: Nobita no Machi SOS!"},
{"NA2", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Virtual Pro Wrestling 2"},
{"NAB", "JP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Air Boarder 64"},
{"NAD", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Worms Armageddon (USA)"},
{"NAF", "J", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Doubutsu no Mori"},
{"NAG", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "AeroGauge"},
{"NAL", "EJPU", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Super Smash Bros"},
{"NB5", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Biohazard 2"},
{"NB6", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Super B-Daman: Battle Phoenix 64"},
{"NB7", "EJPU", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Banjo-Tooie"},
{"NBC", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Blast Corps"},
{"NBD", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman Hero"},
{"NBH", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Body Harvest"},
{"NBK", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Banjo-Kazooie"},
{"NBM", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman 64"},
{"NBN", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bakuretsu Muteki Bangaioh"},
{"NBV", "EJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomberman 64: The Second Attack!"},
{"NCC", "DEP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Command & Conquer"},
{"NCH", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Chopper Attack"},
{"NCK", "E", CART_DB_SAVE_TYPE_FLASH_1MBIT, "NBA Courtside 2"},
{"NCR", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Penny Racers"},
{"NCT", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Chameleon Twist"},
{"NCU", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Cruis'n USA"},
{"NCW", "EP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Cruis'n World"},
{"NCX", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Custom Robo"},
{"NCZ", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Custom Robo V2"},
{"ND2", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Doraemon 2: Nobita to Hikari no Shinden"},
{"ND3", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Akumajou Dracula Mokushiroku"},
{"ND4", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Akumajou Dracula Mokushiroku Gaiden: Legend of Cornell"},
{"ND6", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Densha de Go! 64"},
{"NDA", "J", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Derby Stallion 64"},
{"NDO", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Donkey Kong 64"},
{"NDR", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Doraemon: Nobita to 3tsu no Seireiseki"},
{"NDU", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Duck Dodgers"},
{"NDY", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Diddy Kong Racing"},
{"NEA", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "PGA European Tour"},
{"NEP", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Star Wars Episode I: Racer"},
{"NER", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "AeroFighters Assault (USA)"},
{"NEV", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Neon Genesis Evangelion"},
{"NF2", "P", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "F-1 World Grand Prix II"},
{"NFG", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Fighter Destiny 2"},
{"NFH", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bass Hunter 64"},
{"NFU", "EP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Conker's Bad Fur Day"},
{"NFW", "DEFJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "F-1 World Grand Prix"},
{"NFX", "EJPU", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Fox 64"},
{"NFZ", "P", CART_DB_SAVE_TYPE_SRAM_256KBIT, "F-Zero X (PAL)"},
{"NG6", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Ganbare Goemon: Dero Dero Douchuu Obake Tenkomori"},
{"NGC", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "GT 64: Championship Edition"},
{"NGE", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "007: GoldenEye"},
{"NGL", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Getter Love!!"},
{"NGP", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Goemon: Mononoke Sugoroku"},
{"NGU", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tsumi to Batsu: Hoshi no Keishousha"},
{"NGV", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Glover"},
{"NHA", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Bomber Man 64 (Japan)"},
{"NHF", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 Hanafuda: Tenshi no Yakusoku"},
{"NHP", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Heiwa Pachinko World 64"},
{"NHY", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Hybrid Heaven (Japan)"},
{"NIC", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Indy Racing 2000"},
{"NIJ", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Indiana Jones and the Infernal Machine"},
{"NIM", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Ide Yosuke no Mahjong Juku"},
{"NJ5", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu 5"},
{"NJF", "EJP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Jet Force Gemini"},
{"NJG", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jinsei Game 64"},
{"NJM", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Earthworm Jim 3D"},
{"NK2", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Snowboard Kids 2"},
{"NK4", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Kirby 64: The Crystal Shards"},
{"NKA", "DEFJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Fighters Destiny"},
{"NKG", "EP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "MLB featuring Ken Griffey Jr."},
{"NKI", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Killer Instinct Gold"},
{"NKJ", "E", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Ken Griffey Jr.'s Slugfest"},
{"NKT", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Kart 64"},
{"NLB", "P", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Party (PAL)"},
{"NLL", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Last Legion UX"},
{"NLR", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Lode Runner 3D"},
{"NM6", "E", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Mega Man 64"},
{"NM8", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Mario Tennis"},
{"NMF", "EJP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Mario Golf"},
{"NMI", "DEFIPS", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mission: Impossible"},
{"NML", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mickey's Speedway USA"},
{"NMO", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Monopoly"},
{"NMQ", "EJP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Paper Mario"},
{"NMR", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Multi Racing Championship"},
{"NMS", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Morita Shougi 64"},
{"NMU", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Big Mountain 2000"},
{"NMV", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Mario Party 3"},
{"NMW", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mario Party 2"},
{"NMX", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Excitebike 64"},
{"NN6", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Dr. Mario 64"},
{"NNA", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Wars Episode I: Battle for Naboo"},
{"NNB", "EP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "NBA Courtside"},
{"NOB", "EJ", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Ogre Battle 64"},
{"NOH", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Transformers: Beast Wars Transmetals"},
{"NOS", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 Oozumou"},
{"NP2", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Chou Kuukan Nighter Pro Yakyuu King 2"},
{"NP3", "DEFIJPS", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Stadium 2 (USA, PAL)"},
{"NP6", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu 6"},
{"NPA", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu 2000"},
{"NPD", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Perfect Dark"},
{"NPE", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou Powerful Pro Yakyuu Basic Ban 2001"},
{"NPF", "DEFIJPSU", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Snap"},
{"NPG", "EJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Hey You, Pikachu!"},
{"NPN", "DEFP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Puzzle League"},
{"NPO", "DEFIPS", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Pokemon Stadium (USA, PAL)"},
{"NPP", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Parlor! Pro 64"},
{"NPS", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Jikkyou J.League 1999: Perfect Striker 2"},
{"NPT", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Puyo Puyon Party"},
{"NPW", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Pilotwings 64"},
{"NPY", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Puyo Puyo Sun 64"},
{"NR7", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Robot Poncots 64: 7tsu no Umi no Caramel"},
{"NRA", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Rally '99"},
{"NRC", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Top Gear Overdrive"},
{"NRE", "EP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Resident Evil 2"},
{"NRH", "J", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Rockman Dash"},
{"NRI", "EP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "The New Tetris"},
{"NRS", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Wars: Rogue Squadron"},
{"NRZ", "EP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Ridge Racer 64"},
{"NS4", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Super Robot Taisen 64"},
{"NS6", "EJ", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Soldier: Vanishing Earth"},
{"NSA", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "AeroFighters Assault (PAL, Japan)"},
{"NSC", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Starshot: Space Circus Fever"},
{"NSI", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Fushigi no Dungeon: Fuurai no Shiren 2"},
{"NSM", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Super Mario 64"},
{"NSN", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Snow Speeder"},
{"NSQ", "DEP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "StarCraft 64"},
{"NSS", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Super Robot Spirits"},
{"NSU", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Rocket: Robot on Wheels"},
{"NSV", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "SpaceStation Silicon Valley "},
{"NSW", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Star Wars: Shadows of the Empire"},
{"NT3", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Toukon Road 2"},
{"NT6", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tetris 64"},
{"NT9", "EP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Tigger's Honey Hunt"},
{"NTB", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Transformers: Beast Wars Metals 64"},
{"NTC", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 Trump Collection"},
{"NTE", "AP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "1080 Snowboarding"},
{"NTJ", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tom and Jerry in Fists of Furry"},
{"NTM", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Mischief Makers"},
{"NTN", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "All-Star Tennis 99"},
{"NTP", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Tetrisphere"},
{"NTR", "JP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Top Gear Rally (PAL, Japan)"},
{"NTW", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "64 de Hakken!! Tamagotchi"},
{"NTX", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Taz Express"},
{"NUB", "J", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "PD Ultraman Battle Collection 64"},
{"NUM", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Nushi Zuri 64: Shiokaze ni Notte"},
{"NUT", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Nushi Zuri 64"},
{"NVL", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "V-Rally 99 (USA, PAL)"},
{"NVP", "J", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Virtual Pro Wrestling 64"},
{"NVY", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "V-Rally 99 (Japan)"},
{"NW2", "EP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "WCW/nWo Revenge"},
{"NW4", "EP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "WWF No Mercy"},
{"NWL", "EP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Waialae Country Club"},
{"NWQ", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Rally Challenge 2000"},
{"NWR", "EJP", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Wave Race 64"},
{"NWU", "P", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Worms Armageddon (PAL)"},
{"NWX", "EJP", CART_DB_SAVE_TYPE_SRAM_256KBIT, "WWF WrestleMania 2000"},
{"NXO", "E", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Cruis'n Exotica"},
{"NYK", "J", CART_DB_SAVE_TYPE_EEPROM_4KBIT, "Yakouchuu II: Satsujin Kouro"},
{"NYS", "EJP", CART_DB_SAVE_TYPE_EEPROM_16KBIT, "Yoshi's Story"},
{"NYW", "EJ", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Harvest Moon 64"},
{"NZL", "P", CART_DB_SAVE_TYPE_SRAM_256KBIT, "Legend of Zelda: Ocarina of Time (PAL)"},
{"NZS", "EJP", CART_DB_SAVE_TYPE_FLASH_1MBIT, "Legend of Zelda: Majora's Mask"},
};
static int cart_db_table_sorter(const void *a, const void *b) {
@ -193,11 +195,11 @@ const struct cart_db_entry *cart_db_get_entry(const uint8_t *rom) {
char rom_id[4];
size_t i;
memcpy(rom_id, rom + 0x3b, sizeof(rom_id) - 1);
rom_id[3] = '\0';
memcpy(rom_id, rom + 0x3b, sizeof(rom_id));
for (i = 0; i < NUM_CART_DB_ENTRIES; i++) {
if (!strcmp(cart_db_table[i].rom_id, rom_id))
if (!strncmp(cart_db_table[i].rom_id, rom_id, 3) &&
strchr(cart_db_table[i].regions, rom_id[3]))
return cart_db_table + i;
}

View file

@ -20,6 +20,7 @@ enum cart_db_save_type {
struct cart_db_entry {
const char *rom_id;
const char *regions;
enum cart_db_save_type save_type;
const char *description;
};