| 1 | # hardware (hw = ...): |
| 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 |
| 7 | # |
| 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 |
| 14 | # |
| 15 | # mappers (hw = ...): |
| 16 | # ssf2_mapper - used in Super Street Fighter2 |
| 17 | # x_in_1_mapper - used in many *-in-1 pirate carts |
| 18 | # realtec_mapper |
| 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 |
| 24 | # |
| 25 | # save storage memory range (inclusive, overrides ROM header): |
| 26 | # sram_range = <start, end> |
| 27 | # |
| 28 | # EEPROM: |
| 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). |
| 34 | # hw = prot: |
| 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 |
| 38 | |
| 39 | [Virtua Racing - SVP] |
| 40 | check_str = 0x150, "Virtua Racing" |
| 41 | check_str = 0x810, "OHMP" |
| 42 | hw = svp |
| 43 | |
| 44 | [Virtua Racing - SVP] |
| 45 | check_str = 0x150, "VIRTUA RACING" |
| 46 | check_str = 0x810, "OHMP" |
| 47 | hw = svp |
| 48 | |
| 49 | [Soreike! Anpanman no Game de Asobou Anpanman - Pico] |
| 50 | check_str = 0x100, "SEGA IAC " |
| 51 | hw = pico |
| 52 | |
| 53 | # Unou Kaihatsu Series: IMA IKUNO[U]JYUKU |
| 54 | [Unou Kaihatsu Series - Pico] |
| 55 | check_str = 0x100, "IMA IKUNO" |
| 56 | hw = pico |
| 57 | |
| 58 | # X-Men proto |
| 59 | [X-Men (prototype) - 32X] |
| 60 | check_str = 0x120, "32X SAMPLE PROGRAM" |
| 61 | check_str = 0x32b74c, "Bishop Level" |
| 62 | prop = force_6btn |
| 63 | |
| 64 | # WWF Raw |
| 65 | [WWF Raw - 32X] |
| 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 |
| 69 | |
| 70 | # Blackthorne |
| 71 | [Blackthorne - 32X] |
| 72 | check_str = 0x100, "SEGA 32X" |
| 73 | check_str = 0x120, "BLACKTHORNE" |
| 74 | prop = blackthorne_hack # reads back data overwritten by 2nd CPU from cache |
| 75 | |
| 76 | # Mars check program |
| 77 | [Mars Check - 32X] |
| 78 | check_str = 0x100, "SEGA" |
| 79 | check_str = 0x150, "MARS CHECK PROGRAM" |
| 80 | prop = marscheck_hack # reads back data overwritten by DMA from cache |
| 81 | |
| 82 | # sram emulation triggers some protection for this one |
| 83 | [Puggsy] |
| 84 | check_str = 0x120, "PUGGSY" |
| 85 | prop = no_sram |
| 86 | |
| 87 | # game has problems if it's save RAM is not initialized with FFh: |
| 88 | [Dino Dini's Soccer] |
| 89 | check_str = 0x150, "DINO DINI'S SOCCER" |
| 90 | prop = filled_sram |
| 91 | |
| 92 | # bad headers |
| 93 | [HardBall III] |
| 94 | check_str = 0x150, " HardBall III" |
| 95 | sram_range = 0x200000,0x20ffff |
| 96 | |
| 97 | # J-Cart |
| 98 | [Super Skidmarks, Micro Machines Military] |
| 99 | check_str = 0x150, " " |
| 100 | check_csum = 0x168b |
| 101 | hw = j_cart |
| 102 | |
| 103 | [Pete Sampras Tennis, Micro Machines Turbo Tournament 96] |
| 104 | check_str = 0x150, " " |
| 105 | check_csum = 0x165e |
| 106 | hw = j_cart |
| 107 | |
| 108 | [Micro Machines 2 - Turbo Tournament] |
| 109 | check_str = 0x150, "MICRO MACHINES II" |
| 110 | hw = j_cart |
| 111 | |
| 112 | [Pete Sampras Tennis 96] |
| 113 | check_str = 0x150, "PETE SAMPRAS TENNIS '96" |
| 114 | hw = j_cart |
| 115 | |
| 116 | # The SSF2 mapper |
| 117 | [Mega Everdrive] |
| 118 | check_str = 0x100, "SEGA SSF" |
| 119 | hw = ssf2_mapper |
| 120 | |
| 121 | [Super Street Fighter II - The New Challengers (U)] |
| 122 | check_str = 0x150, "SUPER STREET FIGHTER2 The New Challengers" |
| 123 | hw = ssf2_mapper |
| 124 | prop = no_sram |
| 125 | |
| 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 |
| 131 | |
| 132 | # Beggar Prince, unusual SRAM location |
| 133 | [Beggar Prince] |
| 134 | check_str = 0x150, "BEGGAR PRINCE" |
| 135 | hw = sf001_mapper |
| 136 | sram_range = 0x400000,0x40ffff |
| 137 | prop = filled_sram |
| 138 | |
| 139 | [Legend of Wukong] |
| 140 | check_str = 0x150, "LEGEND OF WUKONG" |
| 141 | hw = sf002_mapper |
| 142 | |
| 143 | # Star Odyssey, r/w in SRAM mirror (double SRAM as a kludge) |
| 144 | [Star Odyssey] |
| 145 | check_str = 0x150, "STAR ODYSSEY" |
| 146 | hw = sf004_mapper |
| 147 | sram_range = 0x200000,0x207fff |
| 148 | |
| 149 | # Escape 2042, reads flash ID for protection |
| 150 | [Escape 2042] |
| 151 | check_str = 0x120, "Escape 2042" |
| 152 | hw = flash |
| 153 | |
| 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. |
| 157 | [12-in-1 (Unl)] |
| 158 | check_str = 0x120, "FLICKY" |
| 159 | check_size_gt = 0x020000 |
| 160 | hw = x_in_1_mapper |
| 161 | |
| 162 | [4-in-1] |
| 163 | check_str = 0x150, "ROBOCOP 3" |
| 164 | check_size_gt = 0x080000 |
| 165 | hw = x_in_1_mapper |
| 166 | |
| 167 | [4-in-1 a1] |
| 168 | check_str = 0x150, "ALIEN 3" |
| 169 | check_size_gt = 0x080000 |
| 170 | hw = x_in_1_mapper |
| 171 | |
| 172 | [5-in-1 Megadrive Portable] |
| 173 | check_str = 0x150, "TINY TOON ADVENTURES" |
| 174 | check_size_gt = 0x080000 |
| 175 | hw = x_in_1_mapper |
| 176 | |
| 177 | [40-games-in-1] |
| 178 | check_str = 0x160, "FS MOONWALKER" |
| 179 | check_size_gt = 0x080000 |
| 180 | hw = x_in_1_mapper |
| 181 | |
| 182 | [Super 15-in-1] |
| 183 | check_str = 0x150, " SHOVE IT!" |
| 184 | check_size_gt = 0x020000 |
| 185 | hw = x_in_1_mapper |
| 186 | |
| 187 | [Super 19-in-1] |
| 188 | check_str = 0x150, "MS PACMAN" |
| 189 | check_size_gt = 0x020000 |
| 190 | hw = x_in_1_mapper |
| 191 | |
| 192 | # radica |
| 193 | [Arcade Legends Sega] |
| 194 | check_str = 0x150, "KID CHAMELEON" |
| 195 | check_size_gt = 0x100000 |
| 196 | hw = radica_mapper |
| 197 | |
| 198 | [Arcade Legends Capcom] |
| 199 | check_str = 0x150, "STREET FIGHTER" |
| 200 | check_size_gt = 0x300000 |
| 201 | hw = radica_mapper |
| 202 | |
| 203 | # realtec |
| 204 | [Earth Defend, The (Unl)] |
| 205 | check_str = 0x94, "THE EARTH DEFEND" |
| 206 | hw = realtec_mapper |
| 207 | |
| 208 | [Funny World & Balloon Boy (Unl)] |
| 209 | check_str = 0xfe, "WISEGAME 11-03-1993" |
| 210 | hw = realtec_mapper |
| 211 | |
| 212 | [Whac-A-Critter (Unl)] |
| 213 | check_str = 0x95, "MALLET LEGEND" |
| 214 | hw = realtec_mapper |
| 215 | |
| 216 | # EEPROM games - thanks to EkeEke for most of this info |
| 217 | [College Slam] |
| 218 | check_str = 0x150, "COLLEGE SLAM" |
| 219 | eeprom_type = 3 |
| 220 | eeprom_lines = 8,0,0 |
| 221 | |
| 222 | [Frank Thomas Big Hurt Baseball] |
| 223 | check_str = 0x150, "FRANK THOMAS BIGHURT BASEBAL" |
| 224 | eeprom_type = 3 |
| 225 | eeprom_lines = 8,0,0 |
| 226 | |
| 227 | [Greatest Heavyweights] |
| 228 | check_str = 0x150, "GREATEST HEAVYWEIGHTS" |
| 229 | sram_range = 0x200000,0x200001 |
| 230 | eeprom_type = 1 |
| 231 | eeprom_lines = 1,0,0 |
| 232 | |
| 233 | [Micro Machines 2 - Turbo Tournament] |
| 234 | check_str = 0x150, "MICRO MACHINES II" |
| 235 | prop = filled_sram |
| 236 | sram_range = 0x300000,0x37ffff |
| 237 | eeprom_type = 2 |
| 238 | eeprom_lines = 9,8,7 |
| 239 | |
| 240 | [Micro Machines - Turbo Tournament '96] |
| 241 | check_str = 0x150, " " |
| 242 | check_csum = 0x165e |
| 243 | sram_range = 0x300000,0x37ffff |
| 244 | eeprom_type = 2 |
| 245 | eeprom_lines = 9,8,7 |
| 246 | |
| 247 | [Micro Machines - Turbo Tournament '96] |
| 248 | check_str = 0x150, " " |
| 249 | check_csum = 0x2c41 |
| 250 | sram_range = 0x300000,0x37ffff |
| 251 | eeprom_type = 2 |
| 252 | eeprom_lines = 9,8,7 |
| 253 | |
| 254 | [Micro Machines Military] |
| 255 | check_str = 0x150, " " |
| 256 | check_csum = 0x168b |
| 257 | sram_range = 0x300000,0x37ffff |
| 258 | eeprom_type = 2 |
| 259 | eeprom_lines = 9,8,7 |
| 260 | |
| 261 | [Micro Machines Military] |
| 262 | check_str = 0x150, " " |
| 263 | check_csum = 0xcee0 |
| 264 | sram_range = 0x300000,0x37ffff |
| 265 | eeprom_type = 2 |
| 266 | eeprom_lines = 9,8,7 |
| 267 | |
| 268 | [Brian Lara Cricket] |
| 269 | check_str = 0x150, "BRIAN LARA CRICKET" |
| 270 | sram_range = 0x300000,0x3fffff |
| 271 | eeprom_type = 2 |
| 272 | eeprom_lines = 9,8,7 |
| 273 | |
| 274 | [Brian Lara Cricket 96] |
| 275 | check_str = 0x150, "BRIAN LARA 96" |
| 276 | sram_range = 0x300000,0x3fffff |
| 277 | eeprom_type = 2 |
| 278 | eeprom_lines = 9,8,7 |
| 279 | |
| 280 | [NBA Jam] |
| 281 | check_str = 0x150, "NBA JAM " |
| 282 | eeprom_type = 2 |
| 283 | eeprom_lines = 1,0,1 |
| 284 | |
| 285 | [NBA Jam Tournament Edition] |
| 286 | check_str = 0x150, "NBA JAM TOURNAMENT EDITION" |
| 287 | sram_range = 0x200000,0x200001 |
| 288 | eeprom_type = 2 |
| 289 | eeprom_lines = 8,0,0 |
| 290 | |
| 291 | [NFL Quarterback Club] |
| 292 | check_str = 0x150, "NFL QUARTERBACK CLUB" |
| 293 | eeprom_type = 2 |
| 294 | eeprom_lines = 8,0,0 |
| 295 | |
| 296 | [NHLPA Hockey '93] |
| 297 | check_str = 0x150, "NHLPA Hockey '93" |
| 298 | sram_range = 0x200000,0x200001 |
| 299 | eeprom_type = 1 |
| 300 | eeprom_lines = 6,7,7 |
| 301 | |
| 302 | [NHLPA Hockey '93] |
| 303 | check_str = 0x150, "NHLPA HOCKEY '93" |
| 304 | sram_range = 0x200000,0x200001 |
| 305 | eeprom_type = 1 |
| 306 | eeprom_lines = 6,7,7 |
| 307 | |
| 308 | [Rings of Power] |
| 309 | check_str = 0x150, "RINGS OF POWER" |
| 310 | sram_range = 0x200000,0x200001 |
| 311 | eeprom_type = 1 |
| 312 | eeprom_lines = 6,7,7 |
| 313 | |
| 314 | [Sports Talk Baseball] |
| 315 | check_str = 0x150, "MLBPA SPORTS TALK BASEBALL" |
| 316 | sram_range = 0x200000,0x200001 |
| 317 | eeprom_type = 1 |
| 318 | eeprom_lines = 1,0,0 |
| 319 | |
| 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 |
| 324 | |
| 325 | # lk3, mapper + bitswapping hardware |
| 326 | [Lion King 3 (Unl)] |
| 327 | check_str = 0x104, " are Registered Trademarks" |
| 328 | check_crc32 = 0xc9706e25 |
| 329 | hw = lk3_mapper |
| 330 | |
| 331 | [Super King Kong 99 (Unl)] |
| 332 | check_str = 0x104, " are Registered Trademarks" |
| 333 | check_crc32 = 0x4c98cc30 |
| 334 | hw = lk3_mapper |
| 335 | |
| 336 | [Gunfight 3-in-1 (Unl)] |
| 337 | check_str = 0x104, " are Registered Trademarks" |
| 338 | check_crc32 = 0x6ec032cb |
| 339 | hw = lk3_mapper |
| 340 | |
| 341 | [Pocket Monsters II (Unl)] |
| 342 | check_str = 0x104, " " |
| 343 | check_crc32 = 0x0d097f5c |
| 344 | hw = lk3_mapper |
| 345 | |
| 346 | [Pokemon Stadium (Unl)] |
| 347 | check_str = 0x104, " " |
| 348 | check_crc32 = 0xbf7219df |
| 349 | hw = lk3_mapper |
| 350 | |
| 351 | [Mulan (Unl)] |
| 352 | check_str = 0x104, " " |
| 353 | check_crc32 = 0xb5b7606e |
| 354 | hw = lk3_mapper |
| 355 | |
| 356 | [Final Samurai V (Unl)] # aka Soul Edge |
| 357 | check_str = 0x104, " " |
| 358 | check_crc32 = 0xab3ae5e9 |
| 359 | hw = lk3_mapper |
| 360 | |
| 361 | [Top Fighter 2000 (Unl)] |
| 362 | check_str = 0x104, " " |
| 363 | check_crc32 = 0x802f53f9 |
| 364 | hw = lk3_mapper |
| 365 | |
| 366 | # smw64 mapper + prot |
| 367 | [Super Mario World 64 (Unl)] |
| 368 | check_csum = 0 |
| 369 | check_crc32 = 0xf63b7bdc |
| 370 | hw = smw64_mapper |
| 371 | |
| 372 | # cart I/O area |
| 373 | [Bug's Life, A (Unl)] |
| 374 | check_str = 0x104, " " |
| 375 | check_crc32 = 0x50aa5a9b |
| 376 | hw = prot |
| 377 | prot_ro_value16 = 0xa13000,0xffff00,0x28 |
| 378 | |
| 379 | [Rockman X3 (Unl)] |
| 380 | check_csum = 0 |
| 381 | check_crc32 = 0xee20be2c |
| 382 | hw = prot |
| 383 | prot_ro_value16 = 0xa13000,-2,0x0c |
| 384 | |
| 385 | [Super Mario World (Unl)] |
| 386 | check_str = 0x104, "SEGASEGASEGA" |
| 387 | check_crc32 = 0xc3616596 |
| 388 | hw = prot |
| 389 | prot_ro_value16 = 0xa13000,-2,0x1c |
| 390 | |
| 391 | [Super Mario Bros. 2 (Unl)] # aka Super Mario 2 1998 |
| 392 | check_str = 0x104, " are Registered Trademarks" |
| 393 | check_crc32 = 0x7861fb28 |
| 394 | hw = prot |
| 395 | prot_ro_value16 = 0xa13000,-2,0x0a |
| 396 | |
| 397 | [Pocket Monsters (Unl)] |
| 398 | check_str = 0x104, " " |
| 399 | check_crc32 = 0xf4cb9b37 |
| 400 | hw = prot |
| 401 | prot_ro_value16 = 0xa13000,-2,0x00 |
| 402 | prot_ro_value16 = 0xa13002,-2,0x01 |
| 403 | prot_ro_value16 = 0xa1303e,-2,0x1f |
| 404 | |
| 405 | [King of Fighters '99, The (Unl)] |
| 406 | check_str = 0x104, " " |
| 407 | check_crc32 = 0x7bdfb390 |
| 408 | hw = prot |
| 409 | prot_ro_value16 = 0xa13000,-2,0x00 |
| 410 | prot_ro_value16 = 0xa13002,-2,0x01 |
| 411 | prot_ro_value16 = 0xa1303e,-2,0x1f |
| 412 | |
| 413 | # cart upper 4MB |
| 414 | [King of Fighters '98+2000, The (Unl)] |
| 415 | check_str = 0x104, " " |
| 416 | check_crc32 = 0x8fb8b29e |
| 417 | hw = prot |
| 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 |
| 422 | |
| 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" |
| 428 | hw = prot |
| 429 | prot_ro_value16 = 0x400000,-2,0x9000 |
| 430 | prot_ro_value16 = 0x401000,-2,0xd300 |
| 431 | |
| 432 | [Rook Mann (Unl)] # aka Rock Heaven |
| 433 | check_csum = 0x6cca |
| 434 | check_crc32 = 0xab5d5d9e |
| 435 | hw = prot |
| 436 | prot_ro_value16 = 0x500008,-2,0x5000 |
| 437 | |
| 438 | [Rock World (Unl)] |
| 439 | check_str = 0x113, "KANKO 91-92" |
| 440 | check_crc32 = 0x79423515 |
| 441 | hw = prot |
| 442 | prot_ro_value16 = 0x500008,-2,0x5000 |
| 443 | prot_ro_value16 = 0x500208,-2,0xa000 |
| 444 | |
| 445 | [Lion King II, The (Unl)] |
| 446 | check_str = 0x104, " are Registered Trademarks" |
| 447 | check_crc32 = 0x7009cac3 |
| 448 | hw = prot |
| 449 | prot_rw_value16 = 0x400000,0xc00004,0 |
| 450 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 451 | |
| 452 | [Squirrel King (Unl)] |
| 453 | check_str = 0x104, " are Registered Trademarks" |
| 454 | check_crc32 = 0x1c602dd4 |
| 455 | hw = prot |
| 456 | prot_rw_value16 = 0x400000,0xc00000,0 |
| 457 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 458 | |
| 459 | [Tiny Toon Adventures 3 (Unl)] |
| 460 | check_str = 0x104, " are Registered Trademarks" |
| 461 | check_crc32 = 0xc31cfcca |
| 462 | hw = prot |
| 463 | prot_rw_value16 = 0x400000,0xc00000,0 |
| 464 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 465 | |
| 466 | [Barver Battle Saga (Unl)] # Taikong zhanshi |
| 467 | check_csum = 0x30b9 |
| 468 | check_crc32 = 0x35e0ff17 |
| 469 | hw = prot |
| 470 | prot_rw_value16 = 0x400000,0xc00000,0 |
| 471 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 472 | |
| 473 | [Final Fantasy (Unl)] # Taikong zhanshi (russian bootleg) |
| 474 | check_csum = 0x5ff9 |
| 475 | check_crc32 = 0x4b2b163a |
| 476 | hw = prot |
| 477 | prot_rw_value16 = 0x400000,0xc00000,0 |
| 478 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 479 | |
| 480 | [Water Margin (Unl)] # Shuihu Zhuan |
| 481 | check_csum = 0x6001 |
| 482 | check_crc32 = 0xfa80956a |
| 483 | hw = prot |
| 484 | prot_rw_value16 = 0x400000,0xc00000,0 |
| 485 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 486 | |
| 487 | [Legend of Fengshen Yingjie, The (Unl)] # Fengshen yingjie chuan (Canon) |
| 488 | check_csum = 0xffff |
| 489 | check_crc32 = 0x91865ea4 |
| 490 | hw = prot |
| 491 | prot_rw_value16 = 0x400000,0xc00000,0 |
| 492 | prot_rw_value16 = 0x400004,0xc00004,0 |
| 493 | |
| 494 | [Legend of Arthur, The (Unl)] # Ya se chuanshuo |
| 495 | check_csum = 0xffff |
| 496 | check_crc32 = 0x8e83dbfa |
| 497 | hw = prot |
| 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 |
| 502 | |
| 503 | [Wucom Legend (Unl)] # Wukong waizhuan |
| 504 | check_str = 0x104, " are Registered Trademarks" |
| 505 | check_crc32 = 0xf838aa3b |
| 506 | hw = prot |
| 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 |
| 511 | |
| 512 | [Super Magician (Unl)] # Ling huan daoshi |
| 513 | check_str = 0x172, "GAME : ELF WOR" |
| 514 | hw = prot |
| 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 |
| 519 | |
| 520 | [Mighty Morphin Power Rangers (Unl)] |
| 521 | check_str = 0x104, " " |
| 522 | check_crc32 = 0x5fdeb37b |
| 523 | hw = prot |
| 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 |
| 528 | |
| 529 | [Smart Mouse (Unl)] # Huanle taoqi shu |
| 530 | check_csum = 0 |
| 531 | check_crc32 = 0xc9539fce |
| 532 | hw = prot |
| 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 |
| 537 | |
| 538 | [Soul Blade (Unl)] |
| 539 | check_str = 0x104, " " |
| 540 | check_crc32 = 0x6a95f766 |
| 541 | hw = prot |
| 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 |
| 546 | |
| 547 | [Super Bubble Bobble (Unl)] |
| 548 | check_str = 0x104, " are Registered Trademarks" |
| 549 | check_crc32 = 0xf93f3d0b |
| 550 | hw = prot |
| 551 | prot_ro_value16 = 0x400000,-2,0x5500 |
| 552 | prot_ro_value16 = 0x400002,-2,0x0f00 |
| 553 | |
| 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 |
| 557 | hw = prot |
| 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 |
| 562 | |
| 563 | [Tunderbolt II (Unl)] # Leidian |
| 564 | check_str = 0xfe, "WISEGAME" |
| 565 | check_crc32 = 0x6f01bd65 |
| 566 | hw = prot |
| 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 |
| 571 | |
| 572 | [16 Tiles Mahjong 1+2 (Unl)] # Shi liu zhang majiang |
| 573 | check_str = 0xfe, "WISEGAME IS TRADE MARKER" |
| 574 | hw = prot |
| 575 | prot_ro_value16 = 0x400002,-2,0xaa00 |
| 576 | prot_ro_value16 = 0x400004,-2,0xc900 |
| 577 | prot_ro_value16 = 0x400006,-2,0xf000 |
| 578 | |
| 579 | [13 Tiles Mahjong] # Shi san zhang majiang |
| 580 | check_str = 0x104, " " |
| 581 | check_crc32 = 0x83397760 |
| 582 | hw = prot |
| 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 |
| 587 | |
| 588 | [Super Poker (Unl)] # Chaoji puke |
| 589 | check_csum = 0xffff |
| 590 | check_crc32 = 0xdd02797c |
| 591 | hw = prot |
| 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 |
| 596 | |
| 597 | [777 Casino (Unl)] # Menghuan shuiguo pan |
| 598 | check_csum = 0 |
| 599 | check_crc32 = 0xee9fc429 |
| 600 | hw = prot |
| 601 | prot_ro_value16 = 0x400000,-2,0x6300 |
| 602 | |
| 603 | # Unlicensed homebrew games made by V.M.V. |
| 604 | # to prevent bus conflicts between the audio drivers in 68k and Z80 |
| 605 | |
| 606 | [Ben 10 (Unl)] |
| 607 | check_str = 0x180, "GM 00000000-00" |
| 608 | check_crc32 = 0x6732aab4 |
| 609 | prop = no_z80_bus_lock |
| 610 | |
| 611 | [Mario 3: Vokrug Sveta (Unl)] |
| 612 | check_str = 0x180, "GM 00000000-00" |
| 613 | check_crc32 = 0xe302585a |
| 614 | prop = no_z80_bus_lock |
| 615 | |
| 616 | [Mario 4: Kosmicheskaya Odisseya (Unl)] |
| 617 | check_csum = 8224 |
| 618 | check_crc32 = 0x20ed0de8 |
| 619 | prop = no_z80_bus_lock |