# hardware (hw = ...): # svp - Sega Virtua Processor # pico - Sega Pico (not really cart hw, but convenient to support here) # prot - simple copy protection devices in unlicensed cartridges (see prot. below) # # cartridge properties (prop = ...): # no_sram - don't emulate sram/EEPROM even if ROM headers tell it's there # no_eeprom - save storage is not EEPROM, even if ROM headers tell it is # filled_sram - save storage needs to be initialized with FFh instead of 00h # force_6btn - game only supports 6 button pad (32X X-men proto) # no_z80_bus_lock - don't emulate z80 bus getting closed to the 68k when bus is released # # mappers (hw = ...): # ssf2_mapper - used in Super Street Fighter2 # x_in_1_mapper - used in many *-in-1 pirate carts # realtec_mapper # radica_mapper - similar to x_in_1_mapper # piersolar_mapper - used in Pier Solar # sf00x_mapper - versions x=1,2,4 used by superfighter team # lk3_mapper - mapper for Lion King 3 / Super King Kong 99 and some more # smw64_mapper - mapper for Super Mario World 64 # # save storage memory range (inclusive, overrides ROM header): # sram_range = # # EEPROM: # eeprom_type = <1|2|3> - enable EEPROM, use type X (7bit, 2 addr words, 3 addr words). # See EkeEke's gen_eeprom.pdf "mode" descriptions for 24Cxx EEPROMs. # eeprom_lines = # - select data bus pins that are connected to EEPROM # SCL, SDA_IN and SDA_OUT pins (0-15 for D0-D15). # hw = prot: # prot_ro_value16 = - return constant on reads at location # ( & ), ignore writes. # prot_rw_value16 = - same as above, but writeable [Virtua Racing - SVP] check_str = 0x150, "Virtua Racing" check_str = 0x810, "OHMP" hw = svp [Virtua Racing - SVP] check_str = 0x150, "VIRTUA RACING" check_str = 0x810, "OHMP" hw = svp [Soreike! Anpanman no Game de Asobou Anpanman - Pico] check_str = 0x100, "SEGA IAC " hw = pico # Unou Kaihatsu Series: IMA IKUNO[U]JYUKU [Unou Kaihatsu Series - Pico] check_str = 0x100, "IMA IKUNO" hw = pico # X-Men proto [X-Men (prototype) - 32X] check_str = 0x120, "32X SAMPLE PROGRAM" check_str = 0x32b74c, "Bishop Level" prop = force_6btn # WWF Raw [WWF Raw - 32X] check_str = 0x100, "SEGA 32X" check_str = 0x150, "WWF RAW" prop = wwfraw_hack # reads back data written to high ROM adresses from cache # Blackthorne [Blackthorne - 32X] check_str = 0x100, "SEGA 32X" check_str = 0x120, "BLACKTHORNE" prop = blackthorne_hack # reads back data overwritten by 2nd CPU from cache # Mars check program [Mars Check - 32X] check_str = 0x100, "SEGA" check_str = 0x150, "MARS CHECK PROGRAM" prop = marscheck_hack # reads back data overwritten by DMA from cache # sram emulation triggers some protection for this one [Puggsy] check_str = 0x120, "PUGGSY" prop = no_sram # game has problems if it's save RAM is not initialized with FFh: [Dino Dini's Soccer] check_str = 0x150, "DINO DINI'S SOCCER" prop = filled_sram [Micro Machines 2 - Turbo Tournament] check_str = 0x150, "MICRO MACHINES II" prop = filled_sram # bad headers [HardBall III] check_str = 0x150, " HardBall III" sram_range = 0x200000,0x20ffff # The SSF2 mapper [Mega Everdrive] check_str = 0x100, "SEGA SSF" hw = ssf2_mapper [Super Street Fighter II - The New Challengers (U)] check_str = 0x150, "SUPER STREET FIGHTER2 The New Challengers" hw = ssf2_mapper prop = no_sram # The Pier Solar mapper, custom eeprom location [Pier Solar and the Great Architects] check_str = 0x150, "PIER" check_str = 0x610, "Respect" hw = piersolar_mapper # Beggar Prince, unusual SRAM location [Beggar Prince] check_str = 0x150, "BEGGAR PRINCE" hw = sf001_mapper sram_range = 0x400000,0x40ffff prop = filled_sram [Legend of Wukong] check_str = 0x150, "LEGEND OF WUKONG" hw = sf002_mapper # Star Odyssey, r/w in SRAM mirror (double SRAM as a kludge) [Star Odyssey] check_str = 0x150, "STAR ODYSSEY" hw = sf004_mapper sram_range = 0x200000,0x207fff # detect *_in_1 based on first game and if it's larger than it should be, # as some dumps look like to be incomplete. # This will also pick overdumps, but those should still work with the mapper applied. [12-in-1 (Unl)] check_str = 0x120, "FLICKY" check_size_gt = 0x020000 hw = x_in_1_mapper [4-in-1] check_str = 0x150, "ROBOCOP 3" check_size_gt = 0x080000 hw = x_in_1_mapper [4-in-1 a1] check_str = 0x150, "ALIEN 3" check_size_gt = 0x080000 hw = x_in_1_mapper [5-in-1 Megadrive Portable] check_str = 0x150, "TINY TOON ADVENTURES" check_size_gt = 0x080000 hw = x_in_1_mapper [40-games-in-1] check_str = 0x160, "FS MOONWALKER" check_size_gt = 0x080000 hw = x_in_1_mapper [Super 15-in-1] check_str = 0x150, " SHOVE IT!" check_size_gt = 0x020000 hw = x_in_1_mapper [Super 19-in-1] check_str = 0x150, "MS PACMAN" check_size_gt = 0x020000 hw = x_in_1_mapper # radica [Arcade Legends Sega] check_str = 0x150, "KID CHAMELEON" check_size_gt = 0x100000 hw = radica_mapper [Arcade Legends Capcom] check_str = 0x150, "STREET FIGHTER" check_size_gt = 0x300000 hw = radica_mapper # realtec [Earth Defend, The (Unl)] check_str = 0x94, "THE EARTH DEFEND" hw = realtec_mapper [Funny World & Balloon Boy (Unl)] check_str = 0xfe, "WISEGAME 11-03-1993" hw = realtec_mapper [Whac-A-Critter (Unl)] check_str = 0x95, "MALLET LEGEND" hw = realtec_mapper # EEPROM games - thanks to EkeEke for most of this info [College Slam] check_str = 0x150, "COLLEGE SLAM" eeprom_type = 3 eeprom_lines = 8,0,0 [Frank Thomas Big Hurt Baseball] check_str = 0x150, "FRANK THOMAS BIGHURT BASEBAL" eeprom_type = 3 eeprom_lines = 8,0,0 [Greatest Heavyweights] check_str = 0x150, "GREATEST HEAVYWEIGHTS" sram_range = 0x200000,0x200001 eeprom_type = 1 eeprom_lines = 1,0,0 [MICRO MACHINES II] check_str = 0x150, "MICRO MACHINES II" sram_range = 0x300000,0x380001 eeprom_type = 2 eeprom_lines = 9,8,7 [Micro Machines - Turbo Tournament '96] check_str = 0x150, " " check_csum = 0x165e sram_range = 0x300000,0x380001 eeprom_type = 2 eeprom_lines = 9,8,7 [Micro Machines - Turbo Tournament '96] check_str = 0x150, " " check_csum = 0x2c41 sram_range = 0x300000,0x380001 eeprom_type = 2 eeprom_lines = 9,8,7 [Micro Machines Military] check_str = 0x150, " " check_csum = 0x168b sram_range = 0x300000,0x380001 eeprom_type = 2 eeprom_lines = 9,8,7 [Micro Machines Military] check_str = 0x150, " " check_csum = 0xcee0 sram_range = 0x300000,0x380001 eeprom_type = 2 eeprom_lines = 9,8,7 [NBA Jam] check_str = 0x150, "NBA JAM " eeprom_type = 2 eeprom_lines = 1,0,1 [NBA Jam Tournament Edition] check_str = 0x150, "NBA JAM TOURNAMENT EDITION" sram_range = 0x200000,0x200001 eeprom_type = 2 eeprom_lines = 8,0,0 [NFL Quarterback Club] check_str = 0x150, "NFL QUARTERBACK CLUB" eeprom_type = 2 eeprom_lines = 8,0,0 [NHLPA Hockey '93] check_str = 0x150, "NHLPA Hockey '93" sram_range = 0x200000,0x200001 eeprom_type = 1 eeprom_lines = 6,7,7 [NHLPA Hockey '93] check_str = 0x150, "NHLPA HOCKEY '93" sram_range = 0x200000,0x200001 eeprom_type = 1 eeprom_lines = 6,7,7 [Rings of Power] check_str = 0x150, "RINGS OF POWER" sram_range = 0x200000,0x200001 eeprom_type = 1 eeprom_lines = 6,7,7 [Sports Talk Baseball] check_str = 0x150, "MLBPA SPORTS TALK BASEBALL" sram_range = 0x200000,0x200001 eeprom_type = 1 eeprom_lines = 1,0,0 # Unlicensed games with simple protections # some of these come from Haze, some from myself (notaz). # more added by irixxxx from Mame and G+GX # check_crc32 calculation for 1st 64 KB only to allow for overdumps # lk3, mapper + bitswapping hardware [Lion King 3 (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0xc9706e25 hw = lk3_mapper [Super King Kong 99 (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0x4c98cc30 hw = lk3_mapper [Gunfight 3-in-1 (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0x6ec032cb hw = lk3_mapper [Pocket Monsters II (Unl)] check_str = 0x104, " " check_crc32 = 0x0d097f5c hw = lk3_mapper [Pokemon Stadium (Unl)] check_str = 0x104, " " check_crc32 = 0xbf7219df hw = lk3_mapper [Mulan (Unl)] check_str = 0x104, " " check_crc32 = 0xb5b7606e hw = lk3_mapper [Final Samurai V (Unl)] # aka Soul Edge check_str = 0x104, " " check_crc32 = 0xab3ae5e9 hw = lk3_mapper [Top Fighter 2000 (Unl)] check_str = 0x104, " " check_crc32 = 0x802f53f9 hw = lk3_mapper # smw64 mapper + prot [Super Mario World 64 (Unl)] check_csum = 0 check_crc32 = 0xf63b7bdc hw = smw64_mapper # cart I/O area [Bug's Life, A (Unl)] check_str = 0x104, " " check_crc32 = 0x50aa5a9b hw = prot prot_ro_value16 = 0xa13000,0xffff00,0x28 [Rockman X3 (Unl)] check_csum = 0 check_crc32 = 0xee20be2c hw = prot prot_ro_value16 = 0xa13000,-2,0x0c [Super Mario World (Unl)] check_str = 0x104, "SEGASEGASEGA" check_crc32 = 0xc3616596 hw = prot prot_ro_value16 = 0xa13000,-2,0x1c [Super Mario Bros. 2 (Unl)] # aka Super Mario 2 1998 check_str = 0x104, " are Registered Trademarks" check_crc32 = 0x7861fb28 hw = prot prot_ro_value16 = 0xa13000,-2,0x0a [Pocket Monsters (Unl)] check_str = 0x104, " " check_crc32 = 0xf4cb9b37 hw = prot prot_ro_value16 = 0xa13000,-2,0x00 prot_ro_value16 = 0xa13002,-2,0x01 prot_ro_value16 = 0xa1303e,-2,0x1f [King of Fighters '99, The (Unl)] check_str = 0x104, " " check_crc32 = 0x7bdfb390 hw = prot prot_ro_value16 = 0xa13000,-2,0x00 prot_ro_value16 = 0xa13002,-2,0x01 prot_ro_value16 = 0xa1303e,-2,0x1f # cart upper 4MB [King of Fighters '98+2000, The (Unl)] check_str = 0x104, " " check_crc32 = 0x8fb8b29e hw = prot prot_ro_value16 = 0x480000,0xff0000,0xaa00 prot_ro_value16 = 0x4a0000,0xff0000,0x0a00 prot_ro_value16 = 0x4c0000,0xff0000,0xf000 prot_ro_value16 = 0x400000,0xc00000,0x0000 # default for 400000-7f0000 [Mahjong Lover (Unl), Super Majon Club (Unl), Insane Paradise (Unl)] # Majiang qingren, Chaoji majiang Club, Fengkuang taohuayuan (Crazy Utopia) check_str = 0x104, " MEGA DRIVE (C)" check_str = 0x118, "CREATON." check_str = 0x180, "MDGM-000" hw = prot prot_ro_value16 = 0x400000,-2,0x9000 prot_ro_value16 = 0x401000,-2,0xd300 [Rook Mann (Unl)] # aka Rock Heaven check_csum = 0x6cca check_crc32 = 0xab5d5d9e hw = prot prot_ro_value16 = 0x500008,-2,0x5000 [Rock World (Unl)] check_str = 0x113, "KANKO 91-92" check_crc32 = 0x79423515 hw = prot prot_ro_value16 = 0x500008,-2,0x5000 prot_ro_value16 = 0x500208,-2,0xa000 [Lion King II, The (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0x7009cac3 hw = prot prot_rw_value16 = 0x400000,0xc00004,0 prot_rw_value16 = 0x400004,0xc00004,0 [Squirrel King (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0x1c602dd4 hw = prot prot_rw_value16 = 0x400000,0xc00000,0 prot_rw_value16 = 0x400004,0xc00004,0 [Tiny Toon Adventures 3 (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0xc31cfcca hw = prot prot_rw_value16 = 0x400000,0xc00000,0 prot_rw_value16 = 0x400004,0xc00004,0 [Barver Battle Saga (Unl)] # Taikong zhanshi check_csum = 0x30b9 check_crc32 = 0x35e0ff17 hw = prot prot_rw_value16 = 0x400000,0xc00000,0 prot_rw_value16 = 0x400004,0xc00004,0 [Final Fantasy (Unl)] # Taikong zhanshi (russian bootleg) check_csum = 0x5ff9 check_crc32 = 0x4b2b163a hw = prot prot_rw_value16 = 0x400000,0xc00000,0 prot_rw_value16 = 0x400004,0xc00004,0 [Water Margin (Unl)] # Shuihu Zhuan check_csum = 0x6001 check_crc32 = 0xfa80956a hw = prot prot_rw_value16 = 0x400000,0xc00000,0 prot_rw_value16 = 0x400004,0xc00004,0 [Legend of Fengshen Yingjie, The (Unl)] # Fengshen yingjie chuan (Canon) check_csum = 0xffff check_crc32 = 0x91865ea4 hw = prot prot_rw_value16 = 0x400000,0xc00000,0 prot_rw_value16 = 0x400004,0xc00004,0 [Legend of Arthur, The (Unl)] # Ya se chuanshuo check_csum = 0xffff check_crc32 = 0x8e83dbfa hw = prot prot_ro_value16 = 0x400000,-2,0x6300 prot_ro_value16 = 0x400002,-2,0x9800 prot_ro_value16 = 0x400004,-2,0xc900 prot_ro_value16 = 0x400006,-2,0x1800 [Wucom Legend (Unl)] # Wukong waizhuan check_str = 0x104, " are Registered Trademarks" check_crc32 = 0xf838aa3b hw = prot prot_ro_value16 = 0x400000,-2,0x6300 prot_ro_value16 = 0x400002,-2,0x9800 prot_ro_value16 = 0x400004,-2,0xc900 prot_ro_value16 = 0x400006,-2,0x1800 [Super Magician (Unl)] # Ling huan daoshi check_str = 0x172, "GAME : ELF WOR" hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 # check is done if the above one fails prot_ro_value16 = 0x400004,-2,0xc900 prot_ro_value16 = 0x400006,-2,0x1800 # similar to above [Mighty Morphin Power Rangers (Unl)] check_str = 0x104, " " check_crc32 = 0x5fdeb37b hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 prot_ro_value16 = 0x400004,-2,0xc900 prot_ro_value16 = 0x400006,-2,0x1800 [Smart Mouse (Unl)] # Huanle taoqi shu check_csum = 0 check_crc32 = 0xc9539fce hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 prot_ro_value16 = 0x400004,-2,0xaa00 prot_ro_value16 = 0x400006,-2,0xf000 [Soul Blade (Unl)] check_str = 0x104, " " check_crc32 = 0x6a95f766 hw = prot prot_ro_value16 = 0x400000,-2,0x6300 prot_ro_value16 = 0x400002,-2,0x9800 prot_ro_value16 = 0x400004,-2,0xaa00 # or 0xc900 prot_ro_value16 = 0x400006,-2,0xf000 [Super Bubble Bobble (Unl)] check_str = 0x104, " are Registered Trademarks" check_crc32 = 0xf93f3d0b hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 [Battle of Red Cliffs, The (Unl)] # Sanguo yanyi (Romance of the 3 Kingdoms) check_str = 0x104, " are Registered Trademarks" check_crc32 = 0x66165305 hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 prot_ro_value16 = 0x400004,-2,0xaa00 prot_ro_value16 = 0x400006,-2,0xf000 [Tunderbolt II (Unl)] # Leidian check_str = 0xfe, "WISEGAME" check_crc32 = 0x6f01bd65 hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 prot_ro_value16 = 0x400004,-2,0xaa00 prot_ro_value16 = 0x400006,-2,0xf000 [16 Tiles Mahjong 1+2 (Unl)] # Zhang majiang check_str = 0xfe, "WISEGAME IS TRADE MARKER" hw = prot prot_ro_value16 = 0x400002,-2,0xaa00 prot_ro_value16 = 0x400004,-2,0xc900 prot_ro_value16 = 0x400006,-2,0xf000 [Super Poker (Unl)] # Chaoji puke check_csum = 0xffff check_crc32 = 0xdd02797c hw = prot prot_ro_value16 = 0x400000,-2,0x5500 prot_ro_value16 = 0x400002,-2,0x0f00 prot_ro_value16 = 0x400004,-2,0xaa00 prot_ro_value16 = 0x400006,-2,0xf000 [777 Casino (Unl)] # Menghuan shuiguo pan check_csum = 0 check_crc32 = 0xee9fc429 hw = prot prot_ro_value16 = 0x400000,-2,0x6300 # Unlicensed homebrew games made by V.M.V. # to prevent bus conflicts between the audio drivers in 68k and Z80 [Ben 10 (Unl)] check_str = 0x180, "GM 00000000-00" check_crc32 = 0x6732aab4 prop = no_z80_bus_lock [Mario 3: Vokrug Sveta (Unl)] check_str = 0x180, "GM 00000000-00" check_crc32 = 0xe302585a prop = no_z80_bus_lock [Mario 4: Kosmicheskaya Odisseya (Unl)] check_csum = 8224 check_crc32 = 0x20ed0de8 prop = no_z80_bus_lock