summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cdi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cdi.cpp')
-rw-r--r--src/mame/drivers/cdi.cpp181
1 files changed, 87 insertions, 94 deletions
diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp
index 0b2e23a1031..a2c70c94c23 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -317,7 +317,7 @@ MACHINE_RESET_MEMBER( cdi_state, cdimono2 )
m_dmadac[1] = machine().device<dmadac_sound_device>("dac2");
}
-MACHINE_RESET_MEMBER( cdi_state, quizard12 )
+MACHINE_RESET_MEMBER( cdi_state, quizard1 )
{
MACHINE_RESET_CALL_MEMBER( cdimono1 );
@@ -325,37 +325,7 @@ MACHINE_RESET_MEMBER( cdi_state, quizard12 )
m_scc->set_quizard_mcu_ack(0x5a);
}
-MACHINE_RESET_MEMBER( cdi_state, quizard17 )
-{
- MACHINE_RESET_CALL_MEMBER( cdimono1 );
-
- m_scc->set_quizard_mcu_value(0x021f);
- m_scc->set_quizard_mcu_ack(0x5a);
-}
-
-/* Untested - copied from quizard17 */
-MACHINE_RESET_MEMBER( cdi_state, quizard18 )
-{
- MACHINE_RESET_CALL_MEMBER( cdimono1 );
-
- m_scc->set_quizard_mcu_value(0x021f);
- m_scc->set_quizard_mcu_ack(0x5a);
-}
-
-MACHINE_RESET_MEMBER( cdi_state, quizard22 )
-{
- MACHINE_RESET_CALL_MEMBER( cdimono1 );
-
- // 0x2b1: Italian
- // 0x001: French
- // 0x188: German
-
- m_scc->set_quizard_mcu_value(0x188);
- m_scc->set_quizard_mcu_ack(0x59);
-}
-
-/* Untested - copied from quizard22 */
-MACHINE_RESET_MEMBER( cdi_state, quizard23 )
+MACHINE_RESET_MEMBER( cdi_state, quizard2 )
{
MACHINE_RESET_CALL_MEMBER( cdimono1 );
@@ -367,16 +337,9 @@ MACHINE_RESET_MEMBER( cdi_state, quizard23 )
m_scc->set_quizard_mcu_ack(0x59);
}
-MACHINE_RESET_MEMBER( cdi_state, quizard32 )
-{
- MACHINE_RESET_CALL_MEMBER( cdimono1 );
- m_scc->set_quizard_mcu_value(0x00ae);
- m_scc->set_quizard_mcu_ack(0x58);
-}
-/* Untested - copied from quizard32 */
-MACHINE_RESET_MEMBER( cdi_state, quizard34 )
+MACHINE_RESET_MEMBER( cdi_state, quizard3 )
{
MACHINE_RESET_CALL_MEMBER( cdimono1 );
@@ -384,8 +347,7 @@ MACHINE_RESET_MEMBER( cdi_state, quizard34 )
m_scc->set_quizard_mcu_ack(0x58);
}
-/* Untested - copied from quizard4r41 */
-MACHINE_RESET_MEMBER( cdi_state, quizard4r40 )
+MACHINE_RESET_MEMBER( cdi_state, quizard4 )
{
MACHINE_RESET_CALL_MEMBER( cdimono1 );
@@ -394,22 +356,7 @@ MACHINE_RESET_MEMBER( cdi_state, quizard4r40 )
m_scc->set_quizard_mcu_ack(0x57);
}
-MACHINE_RESET_MEMBER( cdi_state, quizard4r41 )
-{
- MACHINE_RESET_CALL_MEMBER( cdimono1 );
- //m_scc->set_quizard_mcu_value(0x0139);
- m_scc->set_quizard_mcu_value(0x011f);
- m_scc->set_quizard_mcu_ack(0x57);
-}
-
-MACHINE_RESET_MEMBER( cdi_state, quizard4r42 )
-{
- MACHINE_RESET_CALL_MEMBER( cdimono1 );
-
- m_scc->set_quizard_mcu_value(0x01ae);
- m_scc->set_quizard_mcu_ack(0x57);
-}
/**************************
* 68HC05 Handlers *
@@ -987,49 +934,47 @@ static MACHINE_CONFIG_DERIVED( quizard, cdimono1_base )
MCFG_CPU_VBLANK_INT_DRIVER("screen", cdi_state, mcu_frame)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( quizard12, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard12 )
-MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( quizard17, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard17 )
-MACHINE_CONFIG_END
+READ8_MEMBER( cdi_state::quizard_mcu_p1_r )
+{
+ return rand();
+}
-static MACHINE_CONFIG_DERIVED( quizard18, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard18 )
-MACHINE_CONFIG_END
+static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, cdi_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READ(quizard_mcu_p1_r)
+ADDRESS_MAP_END
-static MACHINE_CONFIG_DERIVED( quizard22, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard22 )
-MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( quizard1, quizard )
+ MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard1 )
+
+ MCFG_CPU_ADD("mcu", I8751, 8000000)
+ MCFG_CPU_IO_MAP(mcu_io_map)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cdi_state, irq0_line_pulse)
-static MACHINE_CONFIG_DERIVED( quizard23, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard23 )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( quizard32, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard32 )
+static MACHINE_CONFIG_DERIVED( quizard2, quizard )
+ MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard2 )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( quizard3, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard34 )
+ MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard3 )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( quizard4r40, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4r40 )
-MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( quizard4, quizard )
+ MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4 )
-static MACHINE_CONFIG_DERIVED( quizard4r41, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4r41 )
-MACHINE_CONFIG_END
+ MCFG_CPU_ADD("mcu", I8751, 8000000)
+ MCFG_CPU_IO_MAP(mcu_io_map)
+// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cdi_state, irq0_line_pulse)
-static MACHINE_CONFIG_DERIVED( quizard4r42, quizard )
- MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4r42 )
MACHINE_CONFIG_END
+
/*************************
* Rom Load *
*************************/
@@ -1111,7 +1056,19 @@ ROM_START( cdibios ) // for the quizard sets
ROM_LOAD( "slave.bin", 0x0000, 0x2000, NO_DUMP ) // Undumped 68HC05 microcontroller, might need decapping
ROM_END
-// Quizard
+/* Quizard notes
+
+ The MCU controls the protection sequence, which in turn controls the game display language.
+ Each Quizard game (1,2,3,4) requires it's own MCU, you can upgrade between revisions by changing
+ just the CD, but not between games as a new MCU is required.
+
+ The only dumped MCUs are German region ones for Quizard 1 and 4.
+ A Czech Quizard 4 MCU was located but it was an 89c51 type instead
+
+*/
+
+
+// Quizard (1)
ROM_START( quizard ) /* CD-ROM printed ??/?? */
ROM_REGION(0x80000, "maincpu", 0)
@@ -1125,8 +1082,12 @@ ROM_START( quizard ) /* CD-ROM printed ??/?? */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard18", 0, BAD_DUMP SHA1(ede873b22957f2a707bbd3039e962ef2ca5aedbd) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard1_german_d8751.bin", 0x0000, 0x1000, CRC(95f45b6b) SHA1(51b34956539b1e2cf0306f243a970750f1e18d01) )
ROM_END
+
ROM_START( quizard_17 )
ROM_REGION(0x80000, "maincpu", 0)
ROM_LOAD( "cdi220b.rom", 0x000000, 0x80000, CRC(279683ca) SHA1(53360a1f21ddac952e95306ced64186a3fc0b93e) )
@@ -1139,6 +1100,9 @@ ROM_START( quizard_17 )
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard17", 0, BAD_DUMP SHA1(4bd698f076505b4e17be978481bce027eb47123b) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard1_german_d8751.bin", 0x0000, 0x1000, CRC(95f45b6b) SHA1(51b34956539b1e2cf0306f243a970750f1e18d01) )
ROM_END
ROM_START( quizard_12 ) /* CD-ROM printed 01/95 */
@@ -1153,6 +1117,9 @@ ROM_START( quizard_12 ) /* CD-ROM printed 01/95 */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard12", 0, BAD_DUMP SHA1(6e41683b96b74e903040842aeb18437ad7813c82) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard1_german_d8751.bin", 0x0000, 0x1000, CRC(95f45b6b) SHA1(51b34956539b1e2cf0306f243a970750f1e18d01) )
ROM_END
ROM_START( quizard_10 )
@@ -1170,6 +1137,9 @@ ROM_START( quizard_10 )
// Drive: TS-L633R
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard10", 0, SHA1(5715db50f0d5ffe06f47c0943f4bf0481ab6048e) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard1_german_d8751.bin", 0x0000, 0x1000, CRC(95f45b6b) SHA1(51b34956539b1e2cf0306f243a970750f1e18d01) )
ROM_END
@@ -1187,6 +1157,9 @@ ROM_START( quizard2 ) /* CD-ROM printed ??/?? */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard23", 0, BAD_DUMP SHA1(cd909d9a54275d6f2d36e03e83eea996e781b4d3) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard2_d8751.bin", 0x0000, 0x1000, NO_DUMP )
ROM_END
ROM_START( quizard2_22 )
@@ -1201,6 +1174,9 @@ ROM_START( quizard2_22 )
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard22", 0, BAD_DUMP SHA1(03c8fdcf27ead6e221691111e8c679b551099543) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard2_d8751.bin", 0x0000, 0x1000, NO_DUMP )
ROM_END
// Quizard 3
@@ -1217,6 +1193,9 @@ ROM_START( quizard3 ) /* CD-ROM printed ??/?? */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard34", 0, BAD_DUMP SHA1(37ad49b72b5175afbb87141d57bc8604347fe032) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard3_d8751.bin", 0x0000, 0x1000, NO_DUMP )
ROM_END
ROM_START( quizard3_32 )
@@ -1231,6 +1210,9 @@ ROM_START( quizard3_32 )
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard32", 0, BAD_DUMP SHA1(31e9fa2169aa44d799c37170b238134ab738e1a1) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard3_d8751.bin", 0x0000, 0x1000, NO_DUMP )
ROM_END
@@ -1246,6 +1228,9 @@ ROM_START( quizard4 ) /* CD-ROM printed 09/98 */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard4r42", 0, BAD_DUMP SHA1(a5d5c8950b4650b8753f9119dc7f1ccaa2aa5442) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard4_german_d8751.bin", 0x0000, 0x1000, CRC(77be0b40) SHA1(113b5c239480a2259f55e411ba8fb3972e6d4301) )
ROM_END
ROM_START( quizard4_41 )
@@ -1260,6 +1245,9 @@ ROM_START( quizard4_41 )
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard4r41", 0, BAD_DUMP SHA1(2c0484c6545aac8e00b318328c6edce6f5dde43d) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard4_german_d8751.bin", 0x0000, 0x1000, CRC(77be0b40) SHA1(113b5c239480a2259f55e411ba8fb3972e6d4301) )
ROM_END
ROM_START( quizard4_40 ) /* CD-ROM printed 07/97 */
@@ -1274,6 +1262,9 @@ ROM_START( quizard4_40 ) /* CD-ROM printed 07/97 */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "quizard4r40", 0, BAD_DUMP SHA1(288cc37a994e4f1cbd47aa8c92342879c6fc0b87) )
+
+ ROM_REGION(0x1000, "mcu", 0)
+ ROM_LOAD( "quizard4_german_d8751.bin", 0x0000, 0x1000, CRC(77be0b40) SHA1(113b5c239480a2259f55e411ba8fb3972e6d4301) )
ROM_END
@@ -1293,17 +1284,19 @@ CONS( 1991, cdi490a, 0, 0, cdimono1, cdi, driver_device, 0,
GAME( 1995, cdibios, 0, cdimono1_base, quizard, driver_device, 0, ROT0, "Philips", "CD-i (Mono-I) (PAL) BIOS", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IS_BIOS_ROOT )
-GAME( 1995, quizard, cdibios, quizard18, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.8)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard_17, quizard, quizard17, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.7)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard_12, quizard, quizard12, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard_10, quizard, quizard12, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard, cdibios, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.8)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard_17, quizard, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.7)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard_12, quizard, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard_10, quizard, quizard1, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+
+GAME( 1995, quizard2, cdibios, quizard2, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.3)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard2_22, quizard2, quizard2, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard2, cdibios, quizard23, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.3)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard2_22, quizard2, quizard22, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+// Quizard 3 and 4 will hang after inserting a coin (incomplete protection sims?)
-GAME( 1995, quizard3, cdibios, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.4)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1996, quizard3_32, quizard3, quizard32, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard3, cdibios, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.4)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1996, quizard3_32, quizard3, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1998, quizard4, cdibios, quizard4r42, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) // doesn't boot
-GAME( 1998, quizard4_41, quizard4, quizard4r41, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1997, quizard4_40, quizard4, quizard4r40, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1998, quizard4, cdibios, quizard4, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1998, quizard4_41, quizard4, quizard4, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1997, quizard4_40, quizard4, quizard4, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )