summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2015-12-30 01:13:00 +0100
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2015-12-30 01:13:00 +0100
commit46d81222418792b6d8334eacb3a79b7e812f6bf6 (patch)
tree43d8e9129235dbbcf1d0a6777b9666533d98ccea /src
parente2981261081fbe7c3162fe05b071c0d516dc0352 (diff)
Fix cdimono1 and quizard crash bugs, nw
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cdi.cpp34
-rw-r--r--src/mame/includes/cdi.h7
2 files changed, 24 insertions, 17 deletions
diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp
index 3c405ef3c15..524e28e2749 100644
--- a/src/mame/drivers/cdi.cpp
+++ b/src/mame/drivers/cdi.cpp
@@ -163,14 +163,14 @@ INPUT_CHANGED_MEMBER(cdi_state::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(2) PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave_hle", 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_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_START("MOUSEBTN")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("DEBUG")
@@ -204,14 +204,14 @@ INPUT_PORTS_END
static INPUT_PORTS_START( cdimono2 )
PORT_START("MOUSEX")
- PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave_hle", 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_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x3ff, 0x000, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_MINMAX(0x000, 0x3ff) PORT_KEYDELTA(2) //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_START("MOUSEBTN")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") //PORT_CHANGED_MEMBER("slave", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Mouse Button 1") //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Mouse Button 2") //PORT_CHANGED_MEMBER("slave_hle", cdislave_device, mouse_update, 0)
PORT_BIT(0xfc, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("DEBUG")
@@ -276,6 +276,7 @@ MACHINE_RESET_MEMBER( cdi_state, cdimono1 )
UINT16 *dst = m_planea;
memcpy(dst, src, 0x8);
memset(m_servo_io_regs, 0, 0x20);
+ memset(m_slave_io_regs, 0, 0x20);
m_maincpu->reset();
@@ -408,10 +409,11 @@ READ8_MEMBER( cdi_state::servo_io_r )
verboselog(*this, 1, "SERVO Port A Data read (%02x)\n", ret);
break;
case m68hc05eg_io_reg_t::PORT_B_DATA:
+ ret = 0x08;
verboselog(*this, 1, "SERVO Port B Data read (%02x)\n", ret);
- ret |= 0x08;
break;
case m68hc05eg_io_reg_t::PORT_C_DATA:
+ ret |= INV_CADDYSWITCH_IN;
verboselog(*this, 1, "SERVO Port C Data read (%02x)\n", ret);
break;
case m68hc05eg_io_reg_t::PORT_D_INPUT:
@@ -511,13 +513,13 @@ WRITE8_MEMBER( cdi_state::servo_io_w )
{
case m68hc05eg_io_reg_t::PORT_A_DATA:
verboselog(*this, 1, "SERVO Port A Data write (%02x)\n", data);
- break;
+ return;
case m68hc05eg_io_reg_t::PORT_B_DATA:
verboselog(*this, 1, "SERVO Port B Data write (%02x)\n", data);
- break;
+ return;
case m68hc05eg_io_reg_t::PORT_C_DATA:
verboselog(*this, 1, "SERVO Port C Data write (%02x)\n", data);
- break;
+ return;
case m68hc05eg_io_reg_t::PORT_D_INPUT:
verboselog(*this, 1, "SERVO Port D Input write (%02x)\n", data);
return;
@@ -708,13 +710,13 @@ WRITE8_MEMBER( cdi_state::slave_io_w )
{
case m68hc05eg_io_reg_t::PORT_A_DATA:
verboselog(*this, 1, "SLAVE Port A Data write (%02x)\n", data);
- break;
+ return;
case m68hc05eg_io_reg_t::PORT_B_DATA:
verboselog(*this, 1, "SLAVE Port B Data write (%02x)\n", data);
- break;
+ return;
case m68hc05eg_io_reg_t::PORT_C_DATA:
verboselog(*this, 1, "SLAVE Port C Data write (%02x)\n", data);
- break;
+ return;
case m68hc05eg_io_reg_t::PORT_D_INPUT:
verboselog(*this, 1, "SLAVE Port D Input write (%02x)\n", data);
return;
@@ -868,8 +870,6 @@ static MACHINE_CONFIG_START( cdimono2, cdi_state )
MCFG_MACHINE_RESET_OVERRIDE( cdi_state, cdimono2 )
MCFG_CDI68070_ADD("scc68070")
- //MCFG_CDICDIC_ADD("cdic")
- //MCFG_CDISLAVE_ADD("slave")
MCFG_CPU_ADD("servo", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
MCFG_CPU_PROGRAM_MAP(cdimono2_servo_mem)
MCFG_CPU_ADD("slave", M68HC05EG, 2000000) /* Unknown clock speed, docs say 2MHz internal clock */
diff --git a/src/mame/includes/cdi.h b/src/mame/includes/cdi.h
index 79cccbe1e90..2e7b13ada04 100644
--- a/src/mame/includes/cdi.h
+++ b/src/mame/includes/cdi.h
@@ -64,6 +64,13 @@ public:
ACOUNT_LO = 0x1b
};
+ enum servo_portc_bit_t
+ {
+ INV_JUC_OUT = (1 << 2),
+ INV_DIV4_IN = (1 << 5),
+ INV_CADDYSWITCH_IN = (1 << 7)
+ };
+
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT16> m_planea;
required_shared_ptr<UINT16> m_planeb;