2 # svp - Sega Virtua Processor
3 # pico - Sega Pico (not really cart hw, but convenient to support here)
4 # prot - siple copy protection devices in unlicensed cartridges (see prot. below)
5 # prot_lk3 - Lion King 3 / Super King Kong 99 protection.
7 # cartridge properties (prop = ...):
8 # no_sram - don't emulate sram/EEPROM even if ROM headers tell it's there
9 # no_eeprom - save storage is not EEPROM, even if ROM headers tell it is
10 # filled_sram - save storage needs to be initialized with FFh instead of 00h
11 # force_6btn - game only supports 6 button pad (32X X-men proto)
14 # ssf2_mapper - used in Super Street Fighter2
15 # x_in_1_mapper - used in many *-in-1 pirate carts
17 # radica_mapper - similar to x_in_1_mapper
18 # piersolar_mapper - used in Pier Solar
20 # save storage memory range (inclusive, overrides ROM header):
21 # sram_range = <start, end>
24 # eeprom_type = <1|2|3> - enable EEPROM, use type X (7bit, 2 addr words, 3 addr words).
25 # See EkeEke's gen_eeprom.pdf "mode" descriptions for 24Cxx EEPROMs.
26 # eeprom_lines = <SCL,SDA_IN,SDA_OUT>
27 # - select data bus pins that are connected to EEPROM
28 # SCL, SDA_IN and SDA_OUT pins (0-15 for D0-D15).
30 # prot_ro_value16 = <addr, mask, val> - return constant <val> on reads at location
31 # (<addr> & <mask>), ignore writes.
32 # prot_rw_value16 = <addr, mask, val> - same as above, but writeable
35 check_str = 0x150, "Virtua Racing"
36 check_str = 0x810, "OHMP"
40 check_str = 0x150, "VIRTUA RACING"
41 check_str = 0x810, "OHMP"
45 check_str = 0x100, "SEGA PICO"
49 check_str = 0x100, "IMA IKUNOUJYUKU"
52 # sram emulation triggers some protection for this one
54 check_str = 0x120, "PUGGSY"
57 # game has problems if it's save RAM is not initialized with FFh:
59 check_str = 0x150, "DINO DINI'S SOCCER"
62 [Micro Machines 2 - Turbo Tournament]
63 check_str = 0x150, "MICRO MACHINES II"
68 check_str = 0x150, "32X SAMPLE PROGRAM"
69 check_str = 0x32b74c, "Bishop Level"
74 check_str = 0x100, "SEGA SSF"
77 [Super Street Fighter II - The New Challengers (U)]
78 check_str = 0x150, "SUPER STREET FIGHTER2 The New Challengers"
82 # The Pier Solar mapper, custom eeprom location
83 [Pier Solar and the Great Architects]
84 check_str = 0x150, "PIER"
85 check_str = 0x610, "Respect"
88 # detect *_in_1 based on first game and if it's larger than it should be,
89 # as some dumps look like to be incomplete.
90 # This will also pick overdumps, but those should still work with the mapper applied.
92 check_str = 0x120, "FLICKY"
93 check_size_gt = 0x020000
97 check_str = 0x150, "ROBOCOP 3"
98 check_size_gt = 0x080000
102 check_str = 0x150, "ALIEN 3"
103 check_size_gt = 0x080000
107 check_str = 0x150, " SHOVE IT!"
108 check_size_gt = 0x020000
112 check_str = 0x150, "MS PACMAN"
113 check_size_gt = 0x020000
118 check_str = 0x150, "KID CHAMELEON"
119 check_size_gt = 0x100000
123 [Earth Defend, The (Unl)]
124 check_str = 0x94, "THE EARTH DEFEND"
127 [Funny World & Balloon Boy (Unl)]
128 check_str = 0xfe, "WISEGAME 11-03-1993"
131 [Whac-A-Critter (Unl)]
132 check_str = 0x95, "MALLET LEGEND"
135 # EEPROM games - thanks to EkeEke for most of this info
137 check_str = 0x150, "COLLEGE SLAM"
141 [Frank Thomas Big Hurt Baseball]
142 check_str = 0x150, "FRANK THOMAS BIGHURT BASEBAL"
147 check_str = 0x150, "MICRO MACHINES II"
148 sram_range = 0x300000,0x380001
152 [Micro Machines - Turbo Tournament '96]
153 check_str = 0x150, " "
155 sram_range = 0x300000,0x380001
159 [Micro Machines - Turbo Tournament '96]
160 check_str = 0x150, " "
162 sram_range = 0x300000,0x380001
166 [Micro Machines Military]
167 check_str = 0x150, " "
169 sram_range = 0x300000,0x380001
173 [Micro Machines Military]
174 check_str = 0x150, " "
176 sram_range = 0x300000,0x380001
181 check_str = 0x150, "NBA JAM "
185 [NBA Jam Tournament Edition]
186 check_str = 0x150, "NBA JAM TOURNAMENT EDITION"
187 sram_range = 0x200000,0x200001
191 [NFL Quarterback Club]
192 check_str = 0x150, "NFL QUARTERBACK CLUB"
197 check_str = 0x150, "NHLPA Hockey '93"
198 sram_range = 0x200000,0x200001
203 check_str = 0x150, "NHLPA HOCKEY '93"
204 sram_range = 0x200000,0x200001
209 check_str = 0x150, "RINGS OF POWER"
210 sram_range = 0x200000,0x200001
214 # Unlicensed games with simple protections
215 # some of these come from Haze, some from myself (notaz).
216 [Bug's Life, A (Unl)]
217 check_str = 0x104, " "
218 check_crc32 = 0x10458e09
220 prot_ro_value16 = 0xa13000,0xffff00,0x28
223 check_str = 0x172, "GAME : ELF WOR"
225 prot_ro_value16 = 0x400000,-2,0x5500
226 prot_ro_value16 = 0x400002,-2,0xc900 # check is done if the above one fails
227 prot_ro_value16 = 0x400004,-2,0x0f00
228 prot_ro_value16 = 0x400006,-2,0x1800 # similar to above
230 [King of Fighters '98, The (Unl)]
231 check_str = 0x104, " "
232 check_crc32 = 0xcbc38eea
234 prot_ro_value16 = 0x480000,0xff0000,0xaa00
235 prot_ro_value16 = 0x4a0000,0xff0000,0x0a00
236 prot_ro_value16 = 0x4c0000,0xff0000,0xf000
237 prot_ro_value16 = 0x400000,0xc00000,0x0000 # default for 400000-7f0000
240 check_str = 0x104, " are Registered Trademarks"
241 check_crc32 = 0xc004219d
244 [Lion King II, The (Unl)]
245 check_str = 0x104, " are Registered Trademarks"
246 check_crc32 = 0xaff46765
248 prot_rw_value16 = 0x400000,0xc00004,0
249 prot_rw_value16 = 0x400004,0xc00004,0
251 [Mahjong Lover (Unl)]
252 check_str = 0x118, "CREATON. "
253 check_crc32 = 0xddd02ba4
255 prot_ro_value16 = 0x400000,-2,0x9000
256 prot_ro_value16 = 0x401000,-2,0xd300
258 [Pocket Monsters (Unl)]
259 check_str = 0x104, " "
260 check_crc32 = 0xf68f6367
262 prot_ro_value16 = 0xa13002,-2,0x01
263 prot_ro_value16 = 0xa1303e,-2,0x1f
265 [Pocket Monsters (Unl) [a1]]
266 check_str = 0x104, " "
267 check_crc32 = 0xfb176667
269 prot_ro_value16 = 0xa13000,-2,0x14
270 prot_ro_value16 = 0xa13002,-2,0x01
271 prot_ro_value16 = 0xa1303e,-2,0x1f
275 check_crc32 = 0x3ee639f0
277 prot_ro_value16 = 0xa13000,-2,0x0c
281 check_crc32 = 0xdecdf740
283 prot_ro_value16 = 0x400000,-2,0x5500
284 prot_ro_value16 = 0x400002,-2,0x0f00
285 prot_ro_value16 = 0x400004,-2,0xaa00
286 prot_ro_value16 = 0x400006,-2,0xf000
289 check_str = 0x104, " "
290 check_crc32 = 0xf26f88d1
292 prot_ro_value16 = 0x400002,-2,0x9800
293 prot_ro_value16 = 0x400004,-2,0xaa00 # or 0xc900
294 prot_ro_value16 = 0x400006,-2,0xf000
296 [Super Bubble Bobble (Unl)]
297 check_str = 0x104, " are Registered Trademarks"
298 check_crc32 = 0x4820a161
300 prot_ro_value16 = 0x400000,-2,0x5500
301 prot_ro_value16 = 0x400002,-2,0x0f00
303 [Super King Kong 99 (Unl)]
304 check_str = 0x104, " are Registered Trademarks"
305 check_crc32 = 0x413dfee2
308 [Super Mario Bros. (Unl)]
309 check_str = 0x140, "SUPER MARIO BROS "
311 prot_ro_value16 = 0xa13000,-2,0x0c
313 [Super Mario 2 1998 (Unl)]
314 check_str = 0x104, " are Registered Trademarks"
315 check_crc32 = 0xf7e1b3e1
317 prot_ro_value16 = 0xa13000,-2,0x0a
320 check_str = 0x104, " are Registered Trademarks"
321 check_crc32 = 0xb8261ff5
323 prot_rw_value16 = 0x400000,0xc00000,0