recognize the MED ssf2 header
[picodrive.git] / pico / carthw.cfg
index 140cb0a..20742e0 100644 (file)
@@ -1,16 +1,21 @@
 # hardware (hw = ...):
-#  svp  - Sega Virtua Processor
-#  pico - Sega Pico (not really cart hw, but convenient to support here)
+#  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 = ...):
-#  x_in_1_mapper  - used in many *-in-1 pirate carts
+#  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
+#  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_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]
@@ -52,6 +63,28 @@ prop = filled_sram
 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.
@@ -178,3 +211,114 @@ 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
+