mirror of
https://github.com/holub/mame
synced 2025-05-14 01:48:19 +03:00
Cleaned up shared implementation of CDi [David Haywood]
- merged MESS CDi driver file with the MAME CDi driver file (used for Quizard) - the cdimono1 system is now the parent / bios of Quizard, the Quizard games run on a retail CDi unit with Jamma adapter / dongle for protection so this is a logical step.
This commit is contained in:
parent
31717fe741
commit
6c490f558a
@ -32,7 +32,7 @@ TODO:
|
||||
#include "sound/cdda.h"
|
||||
#include "cdrom.h"
|
||||
#include "cdi.lh"
|
||||
|
||||
#include "imagedev/chd_cd.h"
|
||||
|
||||
#if ENABLE_VERBOSE_LOG
|
||||
INLINE void verboselog(running_machine *machine, int n_level, const char *s_fmt, ...)
|
||||
@ -128,16 +128,49 @@ static INPUT_CHANGED( mcu_input )
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( cdi )
|
||||
PORT_START("MOUSEX")
|
||||
PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(0) PORT_CHANGED(cdislave_device::mouse_update, 0)
|
||||
PORT_START("MOUSEX")
|
||||
PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED(cdislave_device::mouse_update, 0)
|
||||
|
||||
PORT_START("MOUSEY")
|
||||
PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(0) PORT_CHANGED(cdislave_device::mouse_update, 0)
|
||||
PORT_START("MOUSEY")
|
||||
PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED(cdislave_device::mouse_update, 0)
|
||||
|
||||
PORT_START("MOUSEBTN")
|
||||
PORT_START("MOUSEBTN")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED(cdislave_device::mouse_update, 0)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED(cdislave_device::mouse_update, 0)
|
||||
PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("DEBUG")
|
||||
PORT_CONFNAME( 0x01, 0x00, "Plane A Disable")
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x02, 0x00, "Plane B Disable")
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x04, 0x00, "Force Backdrop Color")
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0xf0, 0x00, "Backdrop Color")
|
||||
PORT_CONFSETTING( 0x00, "Black" )
|
||||
PORT_CONFSETTING( 0x10, "Half-Bright Blue" )
|
||||
PORT_CONFSETTING( 0x20, "Half-Bright Green" )
|
||||
PORT_CONFSETTING( 0x30, "Half-Bright Cyan" )
|
||||
PORT_CONFSETTING( 0x40, "Half-Bright Red" )
|
||||
PORT_CONFSETTING( 0x50, "Half-Bright Magenta" )
|
||||
PORT_CONFSETTING( 0x60, "Half-Bright Yellow" )
|
||||
PORT_CONFSETTING( 0x70, "Half-Bright White" )
|
||||
PORT_CONFSETTING( 0x80, "Black (Alternate)" )
|
||||
PORT_CONFSETTING( 0x90, "Blue" )
|
||||
PORT_CONFSETTING( 0xa0, "Green" )
|
||||
PORT_CONFSETTING( 0xb0, "Cyan" )
|
||||
PORT_CONFSETTING( 0xc0, "Red" )
|
||||
PORT_CONFSETTING( 0xd0, "Magenta" )
|
||||
PORT_CONFSETTING( 0xe0, "Yellow" )
|
||||
PORT_CONFSETTING( 0xf0, "White" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( quizard )
|
||||
PORT_INCLUDE( cdi )
|
||||
|
||||
PORT_START("INPUT1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1) PORT_NAME("Coin 1") PORT_CHANGED(mcu_input, (void*)0x39)
|
||||
@ -154,36 +187,9 @@ static INPUT_PORTS_START( cdi )
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_NAME("Player 2 B") PORT_CHANGED(mcu_input, (void*)0x35)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_NAME("Player 2 C") PORT_CHANGED(mcu_input, (void*)0x36)
|
||||
PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("DEBUG")
|
||||
PORT_CONFNAME( 0x01, 0x00, "Plane A Disable")
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x02, 0x00, "Plane B Disable")
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x04, 0x00, "Force Backdrop Color")
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0xf0, 0x00, "Backdrop Color")
|
||||
PORT_CONFSETTING( 0x00, "Black" )
|
||||
PORT_CONFSETTING( 0x10, "Half-Bright Blue" )
|
||||
PORT_CONFSETTING( 0x20, "Half-Bright Green" )
|
||||
PORT_CONFSETTING( 0x30, "Half-Bright Cyan" )
|
||||
PORT_CONFSETTING( 0x40, "Half-Bright Red" )
|
||||
PORT_CONFSETTING( 0x50, "Half-Bright Magenta" )
|
||||
PORT_CONFSETTING( 0x60, "Half-Bright Yellow" )
|
||||
PORT_CONFSETTING( 0x70, "Half-Bright White" )
|
||||
PORT_CONFSETTING( 0x80, "Black (Alternate)" )
|
||||
PORT_CONFSETTING( 0x90, "Blue" )
|
||||
PORT_CONFSETTING( 0xa0, "Green" )
|
||||
PORT_CONFSETTING( 0xb0, "Cyan" )
|
||||
PORT_CONFSETTING( 0xc0, "Red" )
|
||||
PORT_CONFSETTING( 0xd0, "Magenta" )
|
||||
PORT_CONFSETTING( 0xe0, "Yellow" )
|
||||
PORT_CONFSETTING( 0xf0, "White" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static MACHINE_START( cdi )
|
||||
{
|
||||
cdi_state *state = machine->driver_data<cdi_state>();
|
||||
@ -268,7 +274,6 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
|
||||
|
||||
MCFG_CPU_ADD("maincpu", SCC68070, CLOCK_A/2)
|
||||
MCFG_CPU_PROGRAM_MAP(cdimono1_mem)
|
||||
MCFG_CPU_VBLANK_INT("screen", scc68070_mcu_frame)
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
@ -312,45 +317,75 @@ static MACHINE_CONFIG_START( cdi, cdi_state )
|
||||
MCFG_MK48T08_ADD( "mk48t08" )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrd12, cdi )
|
||||
// Standard CD-i system, with CD-ROM image device (MESS) and Software List (MESS)
|
||||
static MACHINE_CONFIG_DERIVED( cdimono1, cdi )
|
||||
MCFG_MACHINE_RESET( cdi )
|
||||
|
||||
MCFG_CDROM_ADD( "cdrom" )
|
||||
MCFG_CDROM_INTERFACE("cdi_cdrom")
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cd_list","cdi")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizard, cdi )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(cdimono1_mem)
|
||||
MCFG_CPU_VBLANK_INT("screen", scc68070_mcu_frame)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrd12, quizard )
|
||||
MCFG_MACHINE_RESET( quizrd12 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrd17, cdi )
|
||||
static MACHINE_CONFIG_DERIVED( quizrd17, quizard )
|
||||
MCFG_MACHINE_RESET( quizrd17 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrd22, cdi )
|
||||
static MACHINE_CONFIG_DERIVED( quizrd22, quizard )
|
||||
MCFG_MACHINE_RESET( quizrd22 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrd32, cdi )
|
||||
static MACHINE_CONFIG_DERIVED( quizrd32, quizard )
|
||||
MCFG_MACHINE_RESET( quizrd32 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrr41, cdi )
|
||||
static MACHINE_CONFIG_DERIVED( quizrr41, quizard )
|
||||
MCFG_MACHINE_RESET( quizrr41 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( quizrr42, cdi )
|
||||
static MACHINE_CONFIG_DERIVED( quizrr42, quizard )
|
||||
MCFG_MACHINE_RESET( quizrr42 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************
|
||||
* Rom Load *
|
||||
*************************/
|
||||
|
||||
ROM_START( cdi )
|
||||
ROM_REGION(0x80000, "maincpu", 0)
|
||||
ROM_LOAD( "cdi220b.rom", 0x000000, 0x80000, CRC(279683ca) SHA1(53360a1f21ddac952e95306ced64186a3fc0b93e) )
|
||||
ROM_START( cdimono1 )
|
||||
ROM_REGION(0x80000, "maincpu", 0)
|
||||
ROM_SYSTEM_BIOS( 0, "mcdi200", "Magnavox CD-i 200" )
|
||||
ROMX_LOAD( "cdi200.rom", 0x000000, 0x80000, CRC(40c4e6b9) SHA1(d961de803c89b3d1902d656ceb9ce7c02dccb40a), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 1, "pcdi220", "Philips CD-i 220 F2" )
|
||||
ROMX_LOAD( "cdi220b.rom", 0x000000, 0x80000, CRC(279683ca) SHA1(53360a1f21ddac952e95306ced64186a3fc0b93e), ROM_BIOS(2) )
|
||||
// This one is a Mono-IV board, needs to be a separate driver
|
||||
//ROM_SYSTEM_BIOS( 2, "pcdi490", "Philips CD-i 490" )
|
||||
//ROMX_LOAD( "cdi490.rom", 0x000000, 0x80000, CRC(e115f45b) SHA1(f71be031a5dfa837de225081b2ddc8dcb74a0552), ROM_BIOS(3) )
|
||||
// This one is a Mini-MMC board, needs to be a separate driver
|
||||
//ROM_SYSTEM_BIOS( 3, "pcdi910m", "Philips CD-i 910" )
|
||||
//ROMX_LOAD( "cdi910.rom", 0x000000, 0x80000, CRC(8ee44ed6) SHA1(3fcdfa96f862b0cb7603fb6c2af84cac59527b05), ROM_BIOS(4) )
|
||||
|
||||
ROM_REGION(0x2000, "cdic", 0)
|
||||
ROM_LOAD( "cdic.bin", 0x0000, 0x2000, NO_DUMP ) // Undumped 68HC05 microcontroller, might need decapping
|
||||
|
||||
ROM_REGION(0x2000, "slave", 0)
|
||||
ROM_LOAD( "slave.bin", 0x0000, 0x2000, NO_DUMP ) // Undumped 68HC05 microcontroller, might need decapping
|
||||
ROM_LOAD( "slave.bin", 0x0000, 0x2000, NO_DUMP ) // Undumped 68HC05 microcontroller, might need decapping
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( quizard )
|
||||
ROM_REGION(0x80000, "maincpu", 0)
|
||||
ROM_LOAD( "cdi220b.rom", 0x000000, 0x80000, CRC(279683ca) SHA1(53360a1f21ddac952e95306ced64186a3fc0b93e) )
|
||||
@ -439,15 +474,18 @@ ROM_END
|
||||
* Game driver(s) *
|
||||
*************************/
|
||||
|
||||
// BIOS
|
||||
GAME( 1991, cdi, 0, cdi, cdi, 0, ROT0, "Philips", "CD-i (Mono-I) BIOS", GAME_IS_BIOS_ROOT )
|
||||
// BIOS / System
|
||||
CONS( 1991, cdimono1, 0, 0, cdimono1, cdi, 0, "Philips", "CD-i (Mono-I) (PAL)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE | GAME_IS_BIOS_ROOT )
|
||||
|
||||
// The Quizard games are RETAIL CD-i units, with additional JAMMA adapters & dongles for protection, hence being 'clones' of the system.
|
||||
|
||||
// Working
|
||||
GAME( 1995, quizrd12, cdi, quizrd12, cdi, 0, ROT0, "TAB Austria", "Quizard 1.2", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd17, cdi, quizrd17, cdi, 0, ROT0, "TAB Austria", "Quizard 1.7", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd22, cdi, quizrd22, cdi, 0, ROT0, "TAB Austria", "Quizard 2.2", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd12, cdimono1, quizrd12, quizard, 0, ROT0, "TAB Austria", "Quizard 1.2", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd17, cdimono1, quizrd17, quizard, 0, ROT0, "TAB Austria", "Quizard 1.7", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd22, cdimono1, quizrd22, quizard, 0, ROT0, "TAB Austria", "Quizard 2.2", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
|
||||
// Partially working
|
||||
GAME( 1996, quizard, cdi, quizrd32, cdi, 0, ROT0, "TAB Austria", "Quizard 3.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1998, quizrr41, cdi, quizrr41, cdi, 0, ROT0, "TAB Austria", "Quizard Rainbow 4.1", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1998, quizrr42, cdi, quizrr42, cdi, 0, ROT0, "TAB Austria", "Quizard Rainbow 4.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1996, quizard, cdimono1, quizrd32, quizard, 0, ROT0, "TAB Austria", "Quizard 3.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1998, quizrr41, cdimono1, quizrr41, quizard, 0, ROT0, "TAB Austria", "Quizard Rainbow 4.1", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1998, quizrr42, cdimono1, quizrr42, quizard, 0, ROT0, "TAB Austria", "Quizard Rainbow 4.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
|
||||
|
@ -25,6 +25,7 @@ TODO:
|
||||
#include "machine/cdicdic.h"
|
||||
#include "includes/cdi.h"
|
||||
#include "sound/cdda.h"
|
||||
#include "imagedev/chd_cd.h"
|
||||
|
||||
#if ENABLE_VERBOSE_LOG
|
||||
INLINE void verboselog(running_machine *machine, int n_level, const char *s_fmt, ...)
|
||||
@ -861,9 +862,10 @@ void cdicdic_device::process_delayed_command()
|
||||
|
||||
m_time = next_msf << 8;
|
||||
|
||||
timer_adjust_oneshot(m_interrupt_timer, attotime::from_hz(75), 0);
|
||||
// the following line BREAKS 'The Apprentice', hangs when you attempt to start the game
|
||||
//timer_adjust_oneshot(m_interrupt_timer, attotime::from_hz(75), 0);
|
||||
|
||||
m_x_buffer |= 0x8000;
|
||||
m_x_buffer |= 0x8000;
|
||||
//m_data_buffer |= 0x4000;
|
||||
|
||||
for(index = 6; index < 2352/2; index++)
|
||||
@ -1231,8 +1233,19 @@ void cdicdic_device::device_reset()
|
||||
{
|
||||
init();
|
||||
|
||||
m_cd = cdrom_open(get_disk_handle(&m_machine, "cdrom"));
|
||||
cdda_set_cdrom(m_machine.device("cdda"), m_cd);
|
||||
device_t *cdrom_dev = m_machine.device("cdrom");
|
||||
if( cdrom_dev )
|
||||
{
|
||||
// MESS case (has CDROM device)
|
||||
m_cd = cd_get_cdrom_file(cdrom_dev);
|
||||
cdda_set_cdrom(m_machine.device("cdda"), m_cd);
|
||||
}
|
||||
else
|
||||
{
|
||||
// MAME case
|
||||
m_cd = cdrom_open(get_disk_handle(&m_machine, "cdrom"));
|
||||
cdda_set_cdrom(m_machine.device("cdda"), m_cd);
|
||||
}
|
||||
}
|
||||
|
||||
void cdicdic_device::init()
|
||||
|
@ -10490,7 +10490,7 @@ Other Sun games
|
||||
DRIVER( gnome_2a ) /* bootleg */
|
||||
|
||||
/* Disney */
|
||||
DRIVER( cdi ) /* Base unit */
|
||||
DRIVER( cdimono1 ) /* Base unit */
|
||||
DRIVER( quizard ) /* (c) Disney 1996 */
|
||||
DRIVER( quizrd22 ) /* (c) Disney 1995 */
|
||||
DRIVER( quizrd17 ) /* (c) Disney 1996 */
|
||||
|
Loading…
Reference in New Issue
Block a user