2 # svp - Sega Virtua Processor
3 # pico - Sega Pico (not really cart hw, but convenient to support here)
4 # prot - simple copy protection devices in unlicensed cartridges (see prot. below)
5 # flash - protection through reading the flash chip ID
6 # j_cart - 2 additional joypad ports on cart
8 # cartridge properties (prop = ...):
9 # no_sram - don't emulate sram/EEPROM even if ROM headers tell it's there
10 # no_eeprom - save storage is not EEPROM, even if ROM headers tell it is
11 # filled_sram - save storage needs to be initialized with FFh instead of 00h
12 # force_6btn - game only supports 6 button pad (32X X-men proto)
13 # no_z80_bus_lock - don't emulate z80 bus getting closed to the 68k when bus is released
16 # ssf2_mapper - used in Super Street Fighter2
17 # x_in_1_mapper - used in many *-in-1 pirate carts
19 # radica_mapper - similar to x_in_1_mapper
20 # piersolar_mapper - used in Pier Solar
21 # sf00x_mapper - versions x=1,2,4 used by superfighter team
22 # lk3_mapper - mapper for Lion King 3 / Super King Kong 99 and some more
23 # smw64_mapper - mapper for Super Mario World 64
25 # save storage memory range (inclusive, overrides ROM header):
26 # sram_range = <start, end>
29 # eeprom_type = <1|2|3> - enable EEPROM, use type X (7bit, 2 addr words, 3 addr words).
30 # See EkeEke's gen_eeprom.pdf "mode" descriptions for 24Cxx EEPROMs.
31 # eeprom_lines = <SCL,SDA_IN,SDA_OUT>
32 # - select data bus pins that are connected to EEPROM
33 # SCL, SDA_IN and SDA_OUT pins (0-15 for D0-D15).
35 # prot_ro_value16 = <addr, mask, val> - return constant <val> on reads at location
36 # (<addr> & <mask>), ignore writes.
37 # prot_rw_value16 = <addr, mask, val> - same as above, but writeable
40 check_str = 0x150, "Virtua Racing"
41 check_str = 0x810, "OHMP"
45 check_str = 0x150, "VIRTUA RACING"
46 check_str = 0x810, "OHMP"
49 [Soreike! Anpanman no Game de Asobou Anpanman - Pico]
50 check_str = 0x100, "SEGA IAC "
53 # Unou Kaihatsu Series: IMA IKUNO[U]JYUKU
54 [Unou Kaihatsu Series - Pico]
55 check_str = 0x100, "IMA IKUNO"
59 [X-Men (prototype) - 32X]
60 check_str = 0x120, "32X SAMPLE PROGRAM"
61 check_str = 0x32b74c, "Bishop Level"
66 check_str = 0x100, "SEGA 32X"
67 check_str = 0x150, "WWF RAW"
68 prop = wwfraw_hack # reads back data written to high ROM adresses from cache
72 check_str = 0x100, "SEGA 32X"
73 check_str = 0x120, "BLACKTHORNE"
74 prop = blackthorne_hack # reads back data overwritten by 2nd CPU from cache
78 check_str = 0x100, "SEGA"
79 check_str = 0x150, "MARS CHECK PROGRAM"
80 prop = marscheck_hack # reads back data overwritten by DMA from cache
82 # sram emulation triggers some protection for this one
84 check_str = 0x120, "PUGGSY"
87 # game has problems if it's save RAM is not initialized with FFh:
89 check_str = 0x150, "DINO DINI'S SOCCER"
94 check_str = 0x150, " HardBall III"
95 sram_range = 0x200000,0x20ffff
98 [Super Skidmarks, Micro Machines Military]
99 check_str = 0x150, " "
103 [Pete Sampras Tennis, Micro Machines Turbo Tournament 96]
104 check_str = 0x150, " "
108 [Micro Machines 2 - Turbo Tournament]
109 check_str = 0x150, "MICRO MACHINES II"
112 [Pete Sampras Tennis 96]
113 check_str = 0x150, "PETE SAMPRAS TENNIS '96"
118 check_str = 0x100, "SEGA SSF"
121 [Super Street Fighter II - The New Challengers (U)]
122 check_str = 0x150, "SUPER STREET FIGHTER2 The New Challengers"
126 # The Pier Solar mapper, custom eeprom location
127 [Pier Solar and the Great Architects]
128 check_str = 0x150, "PIER"
129 check_str = 0x610, "Respect"
130 hw = piersolar_mapper
132 # Beggar Prince, unusual SRAM location
134 check_str = 0x150, "BEGGAR PRINCE"
136 sram_range = 0x400000,0x40ffff
140 check_str = 0x150, "LEGEND OF WUKONG"
143 # Star Odyssey, r/w in SRAM mirror (double SRAM as a kludge)
145 check_str = 0x150, "STAR ODYSSEY"
147 sram_range = 0x200000,0x207fff
149 # Escape 2042, reads flash ID for protection
151 check_str = 0x120, "Escape 2042"
154 # detect *_in_1 based on first game and if it's larger than it should be,
155 # as some dumps look like to be incomplete.
156 # This will also pick overdumps, but those should still work with the mapper applied.
158 check_str = 0x120, "FLICKY"
159 check_size_gt = 0x020000
163 check_str = 0x150, "ROBOCOP 3"
164 check_size_gt = 0x080000
168 check_str = 0x150, "ALIEN 3"
169 check_size_gt = 0x080000
172 [5-in-1 Megadrive Portable]
173 check_str = 0x150, "TINY TOON ADVENTURES"
174 check_size_gt = 0x080000
178 check_str = 0x160, "FS MOONWALKER"
179 check_size_gt = 0x080000
183 check_str = 0x150, " SHOVE IT!"
184 check_size_gt = 0x020000
188 check_str = 0x150, "MS PACMAN"
189 check_size_gt = 0x020000
193 [Arcade Legends Sega]
194 check_str = 0x150, "KID CHAMELEON"
195 check_size_gt = 0x100000
198 [Arcade Legends Capcom]
199 check_str = 0x150, "STREET FIGHTER"
200 check_size_gt = 0x300000
204 [Earth Defend, The (Unl)]
205 check_str = 0x94, "THE EARTH DEFEND"
208 [Funny World & Balloon Boy (Unl)]
209 check_str = 0xfe, "WISEGAME 11-03-1993"
212 [Whac-A-Critter (Unl)]
213 check_str = 0x95, "MALLET LEGEND"
216 # EEPROM games - thanks to EkeEke for most of this info
218 check_str = 0x150, "COLLEGE SLAM"
222 [Frank Thomas Big Hurt Baseball]
223 check_str = 0x150, "FRANK THOMAS BIGHURT BASEBAL"
227 [Greatest Heavyweights]
228 check_str = 0x150, "GREATEST HEAVYWEIGHTS"
229 sram_range = 0x200000,0x200001
233 [Micro Machines 2 - Turbo Tournament]
234 check_str = 0x150, "MICRO MACHINES II"
236 sram_range = 0x300000,0x37ffff
240 [Micro Machines - Turbo Tournament '96]
241 check_str = 0x150, " "
243 sram_range = 0x300000,0x37ffff
247 [Micro Machines - Turbo Tournament '96]
248 check_str = 0x150, " "
250 sram_range = 0x300000,0x37ffff
254 [Micro Machines Military]
255 check_str = 0x150, " "
257 sram_range = 0x300000,0x37ffff
261 [Micro Machines Military]
262 check_str = 0x150, " "
264 sram_range = 0x300000,0x37ffff
269 check_str = 0x150, "BRIAN LARA CRICKET"
270 sram_range = 0x300000,0x3fffff
274 [Brian Lara Cricket 96]
275 check_str = 0x150, "BRIAN LARA 96"
276 sram_range = 0x300000,0x3fffff
281 check_str = 0x150, "NBA JAM "
285 [NBA Jam Tournament Edition]
286 check_str = 0x150, "NBA JAM TOURNAMENT EDITION"
287 sram_range = 0x200000,0x200001
291 [NFL Quarterback Club]
292 check_str = 0x150, "NFL QUARTERBACK CLUB"
297 check_str = 0x150, "NHLPA Hockey '93"
298 sram_range = 0x200000,0x200001
303 check_str = 0x150, "NHLPA HOCKEY '93"
304 sram_range = 0x200000,0x200001
309 check_str = 0x150, "RINGS OF POWER"
310 sram_range = 0x200000,0x200001
314 [Sports Talk Baseball]
315 check_str = 0x150, "MLBPA SPORTS TALK BASEBALL"
316 sram_range = 0x200000,0x200001
320 # Unlicensed games with simple protections
321 # some of these come from Haze, some from myself (notaz).
322 # more added by irixxxx from Mame and G+GX
323 # check_crc32 calculation for 1st 64 KB only to allow for overdumps
325 # lk3, mapper + bitswapping hardware
327 check_str = 0x104, " are Registered Trademarks"
328 check_crc32 = 0xc9706e25
331 [Super King Kong 99 (Unl)]
332 check_str = 0x104, " are Registered Trademarks"
333 check_crc32 = 0x4c98cc30
336 [Gunfight 3-in-1 (Unl)]
337 check_str = 0x104, " are Registered Trademarks"
338 check_crc32 = 0x6ec032cb
341 [Pocket Monsters II (Unl)]
342 check_str = 0x104, " "
343 check_crc32 = 0x0d097f5c
346 [Pokemon Stadium (Unl)]
347 check_str = 0x104, " "
348 check_crc32 = 0xbf7219df
352 check_str = 0x104, " "
353 check_crc32 = 0xb5b7606e
356 [Final Samurai V (Unl)] # aka Soul Edge
357 check_str = 0x104, " "
358 check_crc32 = 0xab3ae5e9
361 [Top Fighter 2000 (Unl)]
362 check_str = 0x104, " "
363 check_crc32 = 0x802f53f9
366 # smw64 mapper + prot
367 [Super Mario World 64 (Unl)]
369 check_crc32 = 0xf63b7bdc
373 [Bug's Life, A (Unl)]
374 check_str = 0x104, " "
375 check_crc32 = 0x50aa5a9b
377 prot_ro_value16 = 0xa13000,0xffff00,0x28
381 check_crc32 = 0xee20be2c
383 prot_ro_value16 = 0xa13000,-2,0x0c
385 [Super Mario World (Unl)]
386 check_str = 0x104, "SEGASEGASEGA"
387 check_crc32 = 0xc3616596
389 prot_ro_value16 = 0xa13000,-2,0x1c
391 [Super Mario Bros. 2 (Unl)] # aka Super Mario 2 1998
392 check_str = 0x104, " are Registered Trademarks"
393 check_crc32 = 0x7861fb28
395 prot_ro_value16 = 0xa13000,-2,0x0a
397 [Pocket Monsters (Unl)]
398 check_str = 0x104, " "
399 check_crc32 = 0xf4cb9b37
401 prot_ro_value16 = 0xa13000,-2,0x00
402 prot_ro_value16 = 0xa13002,-2,0x01
403 prot_ro_value16 = 0xa1303e,-2,0x1f
405 [King of Fighters '99, The (Unl)]
406 check_str = 0x104, " "
407 check_crc32 = 0x7bdfb390
409 prot_ro_value16 = 0xa13000,-2,0x00
410 prot_ro_value16 = 0xa13002,-2,0x01
411 prot_ro_value16 = 0xa1303e,-2,0x1f
414 [King of Fighters '98+2000, The (Unl)]
415 check_str = 0x104, " "
416 check_crc32 = 0x8fb8b29e
418 prot_ro_value16 = 0x480000,0xff0000,0xaa00
419 prot_ro_value16 = 0x4a0000,0xff0000,0x0a00
420 prot_ro_value16 = 0x4c0000,0xff0000,0xf000
421 prot_ro_value16 = 0x400000,0xc00000,0x0000 # default for 400000-7f0000
423 [Mahjong Lover (Unl), Super Majon Club (Unl), Insane Paradise (Unl)]
424 # Majiang qingren, Chaoji majiang Club, Fengkuang taohuayuan (Crazy Utopia)
425 check_str = 0x104, " MEGA DRIVE (C)"
426 check_str = 0x118, "CREATON."
427 check_str = 0x180, "MDGM-000"
429 prot_ro_value16 = 0x400000,-2,0x9000
430 prot_ro_value16 = 0x401000,-2,0xd300
432 [Rook Mann (Unl)] # aka Rock Heaven
434 check_crc32 = 0xab5d5d9e
436 prot_ro_value16 = 0x500008,-2,0x5000
439 check_str = 0x113, "KANKO 91-92"
440 check_crc32 = 0x79423515
442 prot_ro_value16 = 0x500008,-2,0x5000
443 prot_ro_value16 = 0x500208,-2,0xa000
445 [Lion King II, The (Unl)]
446 check_str = 0x104, " are Registered Trademarks"
447 check_crc32 = 0x7009cac3
449 prot_rw_value16 = 0x400000,0xc00004,0
450 prot_rw_value16 = 0x400004,0xc00004,0
452 [Squirrel King (Unl)]
453 check_str = 0x104, " are Registered Trademarks"
454 check_crc32 = 0x1c602dd4
456 prot_rw_value16 = 0x400000,0xc00000,0
457 prot_rw_value16 = 0x400004,0xc00004,0
459 [Tiny Toon Adventures 3 (Unl)]
460 check_str = 0x104, " are Registered Trademarks"
461 check_crc32 = 0xc31cfcca
463 prot_rw_value16 = 0x400000,0xc00000,0
464 prot_rw_value16 = 0x400004,0xc00004,0
466 [Barver Battle Saga (Unl)] # Taikong zhanshi
468 check_crc32 = 0x35e0ff17
470 prot_rw_value16 = 0x400000,0xc00000,0
471 prot_rw_value16 = 0x400004,0xc00004,0
473 [Final Fantasy (Unl)] # Taikong zhanshi (russian bootleg)
475 check_crc32 = 0x4b2b163a
477 prot_rw_value16 = 0x400000,0xc00000,0
478 prot_rw_value16 = 0x400004,0xc00004,0
480 [Water Margin (Unl)] # Shuihu Zhuan
482 check_crc32 = 0xfa80956a
484 prot_rw_value16 = 0x400000,0xc00000,0
485 prot_rw_value16 = 0x400004,0xc00004,0
487 [Legend of Fengshen Yingjie, The (Unl)] # Fengshen yingjie chuan (Canon)
489 check_crc32 = 0x91865ea4
491 prot_rw_value16 = 0x400000,0xc00000,0
492 prot_rw_value16 = 0x400004,0xc00004,0
494 [Legend of Arthur, The (Unl)] # Ya se chuanshuo
496 check_crc32 = 0x8e83dbfa
498 prot_ro_value16 = 0x400000,-2,0x6300
499 prot_ro_value16 = 0x400002,-2,0x9800
500 prot_ro_value16 = 0x400004,-2,0xc900
501 prot_ro_value16 = 0x400006,-2,0x1800
503 [Wucom Legend (Unl)] # Wukong waizhuan
504 check_str = 0x104, " are Registered Trademarks"
505 check_crc32 = 0xf838aa3b
507 prot_ro_value16 = 0x400000,-2,0x6300
508 prot_ro_value16 = 0x400002,-2,0x9800
509 prot_ro_value16 = 0x400004,-2,0xc900
510 prot_ro_value16 = 0x400006,-2,0x1800
512 [Super Magician (Unl)] # Ling huan daoshi
513 check_str = 0x172, "GAME : ELF WOR"
515 prot_ro_value16 = 0x400000,-2,0x5500
516 prot_ro_value16 = 0x400002,-2,0x0f00 # check is done if the above one fails
517 prot_ro_value16 = 0x400004,-2,0xc900
518 prot_ro_value16 = 0x400006,-2,0x1800 # similar to above
520 [Mighty Morphin Power Rangers (Unl)]
521 check_str = 0x104, " "
522 check_crc32 = 0x5fdeb37b
524 prot_ro_value16 = 0x400000,-2,0x5500
525 prot_ro_value16 = 0x400002,-2,0x0f00
526 prot_ro_value16 = 0x400004,-2,0xc900
527 prot_ro_value16 = 0x400006,-2,0x1800
529 [Smart Mouse (Unl)] # Huanle taoqi shu
531 check_crc32 = 0xc9539fce
533 prot_ro_value16 = 0x400000,-2,0x5500
534 prot_ro_value16 = 0x400002,-2,0x0f00
535 prot_ro_value16 = 0x400004,-2,0xaa00
536 prot_ro_value16 = 0x400006,-2,0xf000
539 check_str = 0x104, " "
540 check_crc32 = 0x6a95f766
542 prot_ro_value16 = 0x400000,-2,0x6300
543 prot_ro_value16 = 0x400002,-2,0x9800
544 prot_ro_value16 = 0x400004,-2,0xaa00 # or 0xc900
545 prot_ro_value16 = 0x400006,-2,0xf000
547 [Super Bubble Bobble (Unl)]
548 check_str = 0x104, " are Registered Trademarks"
549 check_crc32 = 0xf93f3d0b
551 prot_ro_value16 = 0x400000,-2,0x5500
552 prot_ro_value16 = 0x400002,-2,0x0f00
554 [Battle of Red Cliffs, The (Unl)] # Sanguo yanyi (Romance of the 3 Kingdoms)
555 check_str = 0x104, " are Registered Trademarks"
556 check_crc32 = 0x66165305
558 prot_ro_value16 = 0x400000,-2,0x5500
559 prot_ro_value16 = 0x400002,-2,0x0f00
560 prot_ro_value16 = 0x400004,-2,0xaa00
561 prot_ro_value16 = 0x400006,-2,0xf000
563 [Tunderbolt II (Unl)] # Leidian
564 check_str = 0xfe, "WISEGAME"
565 check_crc32 = 0x6f01bd65
567 prot_ro_value16 = 0x400000,-2,0x5500
568 prot_ro_value16 = 0x400002,-2,0x0f00
569 prot_ro_value16 = 0x400004,-2,0xaa00
570 prot_ro_value16 = 0x400006,-2,0xf000
572 [16 Tiles Mahjong 1+2 (Unl)] # Shi liu zhang majiang
573 check_str = 0xfe, "WISEGAME IS TRADE MARKER"
575 prot_ro_value16 = 0x400002,-2,0xaa00
576 prot_ro_value16 = 0x400004,-2,0xc900
577 prot_ro_value16 = 0x400006,-2,0xf000
579 [13 Tiles Mahjong] # Shi san zhang majiang
580 check_str = 0x104, " "
581 check_crc32 = 0x83397760
583 prot_ro_value16 = 0x400000,-2,0x6300
584 prot_ro_value16 = 0x400002,-2,0x9800
585 prot_ro_value16 = 0x400004,-2,0xaa00
586 prot_ro_value16 = 0x400006,-2,0xf000
588 [Super Poker (Unl)] # Chaoji puke
590 check_crc32 = 0xdd02797c
592 prot_ro_value16 = 0x400000,-2,0x5500
593 prot_ro_value16 = 0x400002,-2,0x0f00
594 prot_ro_value16 = 0x400004,-2,0xaa00
595 prot_ro_value16 = 0x400006,-2,0xf000
597 [777 Casino (Unl)] # Menghuan shuiguo pan
599 check_crc32 = 0xee9fc429
601 prot_ro_value16 = 0x400000,-2,0x6300
603 # Unlicensed homebrew games made by V.M.V.
604 # to prevent bus conflicts between the audio drivers in 68k and Z80
607 check_str = 0x180, "GM 00000000-00"
608 check_crc32 = 0x6732aab4
609 prop = no_z80_bus_lock
611 [Mario 3: Vokrug Sveta (Unl)]
612 check_str = 0x180, "GM 00000000-00"
613 check_crc32 = 0xe302585a
614 prop = no_z80_bus_lock
616 [Mario 4: Kosmicheskaya Odisseya (Unl)]
618 check_crc32 = 0x20ed0de8
619 prop = no_z80_bus_lock