# hardware (hw = ...):
#  svp      - Sega Virtua Processor
#  pico     - Sega Pico (not really cart hw, but convenient to support here)
#  prot     - siple copy protection devices in unlicensed cartridges (see prot. below)
#  prot_lk3 - Lion King 3 / Super King Kong 99 protection.
#
# 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)
#  
# 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
#
# save storage memory range (inclusive, overrides ROM header):
#  sram_range = <start, end>
#
# 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 = <SCL,SDA_IN,SDA_OUT>
#                        - 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 = <addr, mask, val> - return constant <val> on reads at location
#                                        (<addr> & <mask>), ignore writes.
#  prot_rw_value16 = <addr, mask, val> - 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

[Pico]
check_str = 0x100, "SEGA PICO"
hw = pico

[Pico]
check_str = 0x100, "IMA IKUNOUJYUKU"
hw = pico

# 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

# X-Men proto
[X-Men (prototype)]
check_str = 0x150, "32X SAMPLE PROGRAM"
check_str = 0x32b74c, "Bishop Level"
prop = force_6btn

# 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

# 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

[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
[radica_v1]
check_str = 0x150, "KID CHAMELEON"
check_size_gt = 0x100000
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

[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

# Unlicensed games with simple protections
# some of these come from Haze, some from myself (notaz).
[Bug's Life, A (Unl)]
check_str = 0x104, "                "
check_crc32 = 0x10458e09
hw = prot
prot_ro_value16 = 0xa13000,0xffff00,0x28

[Elf Wor (Unl)]
check_str = 0x172, "GAME : ELF WOR"
hw = prot
prot_ro_value16 = 0x400000,-2,0x5500
prot_ro_value16 = 0x400002,-2,0xc900 # check is done if the above one fails
prot_ro_value16 = 0x400004,-2,0x0f00
prot_ro_value16 = 0x400006,-2,0x1800 # similar to above

[King of Fighters '98, The (Unl)]
check_str = 0x104, "                "
check_crc32 = 0xcbc38eea
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

[Lion King 3 (Unl)]
check_str = 0x104, " are Registered  Trademarks"
check_crc32 = 0xc004219d
hw = prot_lk3

[Lion King II, The (Unl)]
check_str = 0x104, " are Registered  Trademarks"
check_crc32 = 0xaff46765
hw = prot
prot_rw_value16 = 0x400000,0xc00004,0
prot_rw_value16 = 0x400004,0xc00004,0

[Mahjong Lover (Unl)]
check_str = 0x118, "CREATON. "
check_crc32 = 0xddd02ba4
hw = prot
prot_ro_value16 = 0x400000,-2,0x9000
prot_ro_value16 = 0x401000,-2,0xd300

[Pocket Monsters (Unl)]
check_str = 0x104, "                "
check_crc32 = 0xf68f6367
hw = prot
prot_ro_value16 = 0xa13002,-2,0x01
prot_ro_value16 = 0xa1303e,-2,0x1f

[Pocket Monsters (Unl) [a1]]
check_str = 0x104, "                "
check_crc32 = 0xfb176667
hw = prot
prot_ro_value16 = 0xa13000,-2,0x14
prot_ro_value16 = 0xa13002,-2,0x01
prot_ro_value16 = 0xa1303e,-2,0x1f

[Rockman X3 (Unl)]
check_csum = 0
check_crc32 = 0x3ee639f0
hw = prot
prot_ro_value16 = 0xa13000,-2,0x0c

[Smart Mouse (Unl)]
check_csum = 0
check_crc32 = 0xdecdf740
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 = 0xf26f88d1
hw = prot
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 = 0x4820a161
hw = prot
prot_ro_value16 = 0x400000,-2,0x5500
prot_ro_value16 = 0x400002,-2,0x0f00

[Super King Kong 99 (Unl)]
check_str = 0x104, " are Registered  Trademarks"
check_crc32 = 0x413dfee2
hw = prot_lk3

[Super Mario Bros. (Unl)]
check_str = 0x140, "SUPER MARIO BROS "
hw = prot
prot_ro_value16 = 0xa13000,-2,0x0c

[Super Mario 2 1998 (Unl)]
check_str = 0x104, " are Registered  Trademarks"
check_crc32 = 0xf7e1b3e1
hw = prot
prot_ro_value16 = 0xa13000,-2,0x0a

[Squirrel King (R)]
check_str = 0x104, " are Registered  Trademarks"
check_crc32 = 0xb8261ff5
hw = prot
prot_rw_value16 = 0x400000,0xc00000,0

