PicoIn.quirks |= PQUIRK_MARSCHECK_HACK;\r
else if (strcmp(p, "force_6btn") == 0)\r
PicoIn.quirks |= PQUIRK_FORCE_6BTN;\r
+ else if (strcmp(p, "no_z80_bus_lock") == 0)\r
+ PicoIn.quirks |= PQUIRK_NO_Z80_BUS_LOCK;\r
else {\r
elprintf(EL_STATUS, "carthw:%d: unsupported prop: %s", line, p);\r
goto bad_nomsg;\r
# prot - simple copy protection devices in unlicensed cartridges (see prot. below)
#
# 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)
+# 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)
+# no_z80_bus_lock - don't emulate z80 bus getting closed to the 68k when bus is released
#
# mappers (hw = ...):
# ssf2_mapper - used in Super Street Fighter2
hw = prot
prot_ro_value16 = 0x400000,-2,0x6300
+# Unlicensed homebrew games made by V.M.V.
+# to prevent bus conflicts between the audio drivers in 68k and Z80
+
+[Ben 10 (Unl)]
+check_str = 0x180, "GM 00000000-00"
+check_crc32 = 0x6732aab4
+prop = no_z80_bus_lock
+
+[Mario 3: Vokrug Sveta (Unl)]
+check_str = 0x180, "GM 00000000-00"
+check_crc32 = 0xe302585a
+prop = no_z80_bus_lock
+
+[Mario 4: Kosmicheskaya Odisseya (Unl)]
+check_csum = 8224
+check_crc32 = 0x20ed0de8
+prop = no_z80_bus_lock
"check_crc32=0xee9fc429\n"
"hw=prot\n"
"prot_ro_value16=0x400000,-2,0x6300\n"
+ "[]\n"
+ "check_str=0x180,\"GM 00000000-00\"\n"
+ "check_crc32=0x6732aab4\n"
+ "prop=no_z80_bus_lock\n"
+ "[]\n"
+ "check_str=0x180,\"GM 00000000-00\"\n"
+ "check_crc32=0xe302585a\n"
+ "prop=no_z80_bus_lock\n"
+ "[]\n"
+ "check_csum=8224\n"
+ "check_crc32=0x20ed0de8\n"
+ "prop=no_z80_bus_lock\n"
;
static u32 PicoRead8_z80(u32 a)\r
{\r
u32 d = 0xff;\r
- if ((Pico.m.z80Run & 1) || Pico.m.z80_reset) {\r
+ if (!(PicoIn.quirks & PQUIRK_NO_Z80_BUS_LOCK) && ((Pico.m.z80Run & 1) || Pico.m.z80_reset)) {\r
elprintf(EL_ANOMALY, "68k z80 read with no bus! [%06x] @ %06x", a, SekPc);\r
// open bus. Pulled down if MegaCD2 is attached.\r
return 0;\r
\r
static void PicoWrite8_z80(u32 a, u32 d)\r
{\r
- if ((Pico.m.z80Run & 1) || Pico.m.z80_reset) {\r
+ if (!(PicoIn.quirks & PQUIRK_NO_Z80_BUS_LOCK) && ((Pico.m.z80Run & 1) || Pico.m.z80_reset)) {\r
// verified on real hw\r
elprintf(EL_ANOMALY, "68k z80 write with no bus or reset! [%06x] %02x @ %06x", a, d&0xff, SekPc);\r
return;\r
#define PQUIRK_BLACKTHORNE_HACK (1<<1)\r
#define PQUIRK_WWFRAW_HACK (1<<2)\r
#define PQUIRK_MARSCHECK_HACK (1<<3)\r
+#define PQUIRK_NO_Z80_BUS_LOCK (1<<4)\r
\r
// the emulator is configured and some status is reported\r
// through this global state (not saved in savestates)\r