Merge pull request #1883 from mamehaze/xxx

added decapped dump of the d8751 on quizard4 sets [Team Europe]
This commit is contained in:
R. Belmont 2016-12-30 10:51:19 -05:00 committed by GitHub
commit 2f45bedc82
2 changed files with 99 additions and 109 deletions

View File

@ -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,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,43 @@ 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 )
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( 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)
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 )
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
@ -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, 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 )
// Quizard 3 and 4 will hang after inserting a coin (incomplete protection sims?)
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( 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, 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 )

View File

@ -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);
};