summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/toaplan/toaplan1_m.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/toaplan/toaplan1_m.cpp')
-rw-r--r--src/mame/toaplan/toaplan1_m.cpp68
1 files changed, 18 insertions, 50 deletions
diff --git a/src/mame/toaplan/toaplan1_m.cpp b/src/mame/toaplan/toaplan1_m.cpp
index 8a977680df7..b66509583ba 100644
--- a/src/mame/toaplan/toaplan1_m.cpp
+++ b/src/mame/toaplan/toaplan1_m.cpp
@@ -79,7 +79,6 @@ void toaplan1_demonwld_state::dsp_bio_w(u16 data)
/* data 0x0000 means set DSP BIO line active and disable */
/* communication to main processor*/
-
logerror("DSP PC:%04x IO write %04x at port 3\n", m_dsp->pcbase(), data);
if (data & 0x8000)
m_dsp_bio = CLEAR_LINE;
@@ -96,7 +95,7 @@ void toaplan1_demonwld_state::dsp_bio_w(u16 data)
}
}
-READ_LINE_MEMBER(toaplan1_demonwld_state::bio_r)
+int toaplan1_demonwld_state::bio_r()
{
return m_dsp_bio;
}
@@ -143,8 +142,7 @@ void toaplan1_demonwld_state::dsp_ctrl_w(u8 data)
u8 toaplan1_samesame_state::port_6_word_r()
{
/* Bit 0x80 is secondary CPU (HD647180) ready signal */
- logerror("PC:%08x Warning !!! IO reading from $14000b\n",m_maincpu->pcbase());
- return (0x80 | m_tjump_io->read()) & 0xff;
+ return (m_soundlatch->pending_r() ? 0 : 0x80) | m_tjump_io->read();
}
u8 toaplan1_state::shared_r(offs_t offset)
@@ -167,28 +165,34 @@ void toaplan1_state::reset_sound()
m_audiocpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
+void toaplan1_samesame_state::reset_sound()
+{
+ toaplan1_state::reset_sound();
+ m_soundlatch->acknowledge_w();
+}
+
void toaplan1_state::reset_sound_w(u8 data)
{
if (data == 0) reset_sound();
}
-WRITE_LINE_MEMBER(toaplan1_rallybik_state::coin_counter_1_w)
+void toaplan1_rallybik_state::coin_counter_1_w(int state)
{
machine().bookkeeping().coin_counter_w(0, state);
}
-WRITE_LINE_MEMBER(toaplan1_rallybik_state::coin_counter_2_w)
+void toaplan1_rallybik_state::coin_counter_2_w(int state)
{
machine().bookkeeping().coin_counter_w(1, state);
}
-WRITE_LINE_MEMBER(toaplan1_rallybik_state::coin_lockout_1_w)
+void toaplan1_rallybik_state::coin_lockout_1_w(int state)
{
machine().bookkeeping().coin_lockout_w(0, !state);
}
-WRITE_LINE_MEMBER(toaplan1_rallybik_state::coin_lockout_2_w)
+void toaplan1_rallybik_state::coin_lockout_2_w(int state)
{
machine().bookkeeping().coin_lockout_w(1, !state);
}
@@ -196,36 +200,14 @@ WRITE_LINE_MEMBER(toaplan1_rallybik_state::coin_lockout_2_w)
void toaplan1_state::coin_w(u8 data)
{
- logerror("Z80 writing %02x to coin control\n",data);
- /* This still isnt too clear yet. */
- /* Coin C has no coin lock ? */
- /* Are some outputs for lights ? (no space on JAMMA for it though) */
-
- switch (data)
- {
- case 0xee: machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); break; /* Count slot B */
- case 0xed: machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); break; /* Count slot A */
- /* The following are coin counts after coin-lock active (faulty coin-lock ?) */
- case 0xe2: machine().bookkeeping().coin_counter_w(1,1); machine().bookkeeping().coin_counter_w(1,0); machine().bookkeeping().coin_lockout_w(1,1); break;
- case 0xe1: machine().bookkeeping().coin_counter_w(0,1); machine().bookkeeping().coin_counter_w(0,0); machine().bookkeeping().coin_lockout_w(0,1); break;
-
- case 0xec: machine().bookkeeping().coin_lockout_global_w(0); break; /* ??? count games played */
- case 0xe8: break; /* ??? Maximum credits reached with coin/credit ratio */
- case 0xe4: break; /* ??? Reset coin system */
-
- case 0x0c: machine().bookkeeping().coin_lockout_global_w(0); break; /* Unlock all coin slots */
- case 0x08: machine().bookkeeping().coin_lockout_w(2,0); break; /* Unlock coin slot C */
- case 0x09: machine().bookkeeping().coin_lockout_w(0,0); break; /* Unlock coin slot A */
- case 0x0a: machine().bookkeeping().coin_lockout_w(1,0); break; /* Unlock coin slot B */
-
- case 0x02: machine().bookkeeping().coin_lockout_w(1,1); break; /* Lock coin slot B */
- case 0x01: machine().bookkeeping().coin_lockout_w(0,1); break; /* Lock coin slot A */
- case 0x00: machine().bookkeeping().coin_lockout_global_w(1); break; /* Lock all coin slots */
- default: logerror("PC:%04x Writing unknown data (%04x) to coin count/lockout port\n",m_audiocpu->pcbase(),data); break;
- }
+ // Upper 4 bits are junk (normally 1110 or 0000, which are artifacts of sound command processing)
+ machine().bookkeeping().coin_counter_w(0, BIT(data, 0));
+ machine().bookkeeping().coin_counter_w(1, BIT(data, 1));
+ machine().bookkeeping().coin_lockout_w(0, !BIT(data, 2));
+ machine().bookkeeping().coin_lockout_w(1, !BIT(data, 3));
}
-WRITE_LINE_MEMBER(toaplan1_state::reset_callback)
+void toaplan1_state::reset_callback(int state)
{
reset_sound();
}
@@ -236,13 +218,6 @@ void toaplan1_state::machine_reset()
machine().bookkeeping().coin_lockout_global_w(0);
}
-/* zerowing, fireshrk, outzone */
-MACHINE_RESET_MEMBER(toaplan1_state,zerowing)
-{
- machine_reset();
- m_maincpu->set_reset_callback(*this, FUNC(toaplan1_state::reset_callback));
-}
-
void toaplan1_demonwld_state::machine_reset()
{
toaplan1_state::machine_reset();
@@ -266,10 +241,3 @@ void toaplan1_demonwld_state::machine_start()
save_item(NAME(m_dsp_bio));
save_item(NAME(m_dsp_execute));
}
-
-void toaplan1_samesame_state::machine_start()
-{
- toaplan1_state::machine_start();
- save_item(NAME(m_to_mcu));
- save_item(NAME(m_cmdavailable));
-}