From f8eb88c8e87953bb3def87c5770bdd3fafcae1f1 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 27 Dec 2016 20:06:53 +0000 Subject: [PATCH] added decapped dump of the d8751 on quzard4 sets [Team Europe] (also added NO_DUMP listings to the other - MCU might control region tho, so possibly needs further thought) have NOT hooked this up properly so not 100% sure it's good - timer interrupt code ends up jumping to unused area 000B: ljmp $016A 016A: clr tr0 016C: mov th0,#$FD 016F: mov tl0,#$12 0172: setb tr0 0174: push acc 0176: push psw 0178: mov a,r0 0179: push acc 017B: mov a,r1 017C: push acc 017E: anl c,/it1 0180: djnz r1,$013A 013A: rr a 013B: add a,r1 013C: mov r0,#$83 013E: mov p0.7,c 0140: acall $0012 0012: mov r7,a 0013: reti 0142: ljmp $E430 E430: nop E431: nop E432: nop E433: nop --- src/mame/drivers/cdi.cpp | 167 ++++++++++++++++----------------------- src/mame/includes/cdi.h | 17 ++-- 2 files changed, 77 insertions(+), 107 deletions(-) diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp index 0b2e23a1031..6b583ec591b 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("dac2"); } -MACHINE_RESET_MEMBER( cdi_state, quizard12 ) +MACHINE_RESET_MEMBER( cdi_state, quizard1 ) { MACHINE_RESET_CALL_MEMBER( cdimono1 ); @@ -325,24 +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_MEMBER( cdi_state, quizard2 ) { MACHINE_RESET_CALL_MEMBER( cdimono1 ); @@ -354,20 +337,9 @@ MACHINE_RESET_MEMBER( cdi_state, quizard22 ) m_scc->set_quizard_mcu_ack(0x59); } -/* Untested - copied from quizard22 */ -MACHINE_RESET_MEMBER( cdi_state, quizard23 ) -{ - 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); -} - -MACHINE_RESET_MEMBER( cdi_state, quizard32 ) +MACHINE_RESET_MEMBER( cdi_state, quizard3 ) { MACHINE_RESET_CALL_MEMBER( cdimono1 ); @@ -375,17 +347,7 @@ MACHINE_RESET_MEMBER( cdi_state, quizard32 ) m_scc->set_quizard_mcu_ack(0x58); } -/* Untested - copied from quizard32 */ -MACHINE_RESET_MEMBER( cdi_state, quizard34 ) -{ - MACHINE_RESET_CALL_MEMBER( cdimono1 ); - - m_scc->set_quizard_mcu_value(0x00ae); - 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,45 +934,38 @@ 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 ) +static MACHINE_CONFIG_DERIVED( quizard1, quizard ) + MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard1 ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( quizard17, quizard ) - MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard17 ) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_DERIVED( quizard18, quizard ) - MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard18 ) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_DERIVED( quizard22, quizard ) - MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard22 ) -MACHINE_CONFIG_END - -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 ) +READ8_MEMBER( cdi_state::quizard_mcu_p1_r ) +{ + return rand(); +} + +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( quizard4, quizard ) + MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4 ) + + MCFG_CPU_ADD("mcu", I8751, 8000000) + MCFG_CPU_IO_MAP(mcu_io_map) +// MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cdi_state, irq0_line_pulse) + MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( quizard4r41, quizard ) - MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4r41 ) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_DERIVED( quizard4r42, quizard ) - MCFG_MACHINE_RESET_OVERRIDE(cdi_state, quizard4r42 ) -MACHINE_CONFIG_END @@ -1125,6 +1065,9 @@ 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( "quizard_d8751.bin", 0x0000, 0x1000, NO_DUMP ) ROM_END ROM_START( quizard_17 ) @@ -1139,6 +1082,9 @@ ROM_START( quizard_17 ) DISK_REGION( "cdrom" ) DISK_IMAGE_READONLY( "quizard17", 0, BAD_DUMP SHA1(4bd698f076505b4e17be978481bce027eb47123b) ) + + ROM_REGION(0x1000, "mcu", 0) + ROM_LOAD( "quizard_d8751.bin", 0x0000, 0x1000, NO_DUMP ) ROM_END ROM_START( quizard_12 ) /* CD-ROM printed 01/95 */ @@ -1153,6 +1099,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( "quizard_d8751.bin", 0x0000, 0x1000, NO_DUMP ) ROM_END ROM_START( quizard_10 ) @@ -1170,6 +1119,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( "quizard_d8751.bin", 0x0000, 0x1000, NO_DUMP ) ROM_END @@ -1187,6 +1139,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 +1156,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 +1175,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 +1192,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 +1210,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_d8751.bin", 0x0000, 0x1000, CRC(7b409c91) SHA1(b02251d7279c66f6da7b79bf35ded033320b70ee) ) ROM_END ROM_START( quizard4_41 ) @@ -1260,6 +1227,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_d8751.bin", 0x0000, 0x1000, CRC(7b409c91) SHA1(b02251d7279c66f6da7b79bf35ded033320b70ee) ) ROM_END ROM_START( quizard4_40 ) /* CD-ROM printed 07/97 */ @@ -1274,6 +1244,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_d8751.bin", 0x0000, 0x1000, CRC(7b409c91) SHA1(b02251d7279c66f6da7b79bf35ded033320b70ee) ) ROM_END @@ -1293,17 +1266,17 @@ 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, 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 ) +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, 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( 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 ) // doesn't boot +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..4b9cfbee10a 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); + 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); };