diff options
author | 2016-12-30 10:51:19 -0500 | |
---|---|---|
committer | 2016-12-30 10:51:19 -0500 | |
commit | 2f45bedc821af9036d913c7fc32609dcba2a24a9 (patch) | |
tree | ba0f2dd1baa4a73b10acd53da77a87ca3a215833 /src | |
parent | f65b091dc81d0b23b3dfcc5d7f9223ea733d2388 (diff) | |
parent | d1b660a5fce552220b20d4b63f24cdf0e93cf8e4 (diff) |
Merge pull request #1883 from mamehaze/xxx
added decapped dump of the d8751 on quizard4 sets [Team Europe]
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/cdi.cpp | 181 | ||||
-rw-r--r-- | src/mame/includes/cdi.h | 17 |
2 files changed, 94 insertions, 104 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 ) diff --git a/src/mame/includes/cdi.h b/src/mame/includes/cdi.h index 869f3c59355..6b73b21c475 100644 --- a/src/mame/includes/cdi.h +++ b/src/mame/includes/cdi.h @@ -8,6 +8,7 @@ #include "machine/cdicdic.h" #include "sound/dmadac.h" #include "video/mcd212.h" +#include "cpu/mcs51/mcs51.h" /*----------- driver state -----------*/ @@ -106,21 +107,17 @@ public: DECLARE_MACHINE_RESET(cdimono1); DECLARE_MACHINE_RESET(cdimono2); - DECLARE_MACHINE_RESET(quizard12); - DECLARE_MACHINE_RESET(quizard17); - DECLARE_MACHINE_RESET(quizard18); - DECLARE_MACHINE_RESET(quizard22); - DECLARE_MACHINE_RESET(quizard23); - DECLARE_MACHINE_RESET(quizard32); - DECLARE_MACHINE_RESET(quizard34); - DECLARE_MACHINE_RESET(quizard4r40); - DECLARE_MACHINE_RESET(quizard4r41); - DECLARE_MACHINE_RESET(quizard4r42); + DECLARE_MACHINE_RESET(quizard1); + DECLARE_MACHINE_RESET(quizard2); + DECLARE_MACHINE_RESET(quizard3); + DECLARE_MACHINE_RESET(quizard4); DECLARE_READ8_MEMBER(servo_io_r); DECLARE_WRITE8_MEMBER(servo_io_w); DECLARE_READ8_MEMBER(slave_io_r); DECLARE_WRITE8_MEMBER(slave_io_w); + DECLARE_READ8_MEMBER(quizard_mcu_p1_r); + uint32_t screen_update_cdimono1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_cdimono1_lcd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); }; |