diff options
Diffstat (limited to 'src/mame/toaplan/toaplan1_m.cpp')
-rw-r--r-- | src/mame/toaplan/toaplan1_m.cpp | 68 |
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)); -} |