mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
fireshrk: Soundlatch modernization
This commit is contained in:
parent
8c8161227f
commit
0e18d5e91f
3 changed files with 19 additions and 35 deletions
|
@ -755,7 +755,7 @@ void toaplan1_samesame_state::main_map(address_map &map)
|
|||
map(0x140008, 0x140009).portr("SYSTEM");
|
||||
map(0x14000b, 0x14000b).r(FUNC(toaplan1_samesame_state::port_6_word_r)); /* Territory, and MCU ready */
|
||||
map(0x14000d, 0x14000d).w(FUNC(toaplan1_samesame_state::coin_w)); /* Coin counter/lockout */
|
||||
map(0x14000f, 0x14000f).w(FUNC(toaplan1_samesame_state::mcu_w)); /* Commands sent to HD647180 */
|
||||
map(0x14000f, 0x14000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* Commands sent to HD647180 */
|
||||
map(0x180001, 0x180001).w(FUNC(toaplan1_samesame_state::bcu_flipscreen_w));
|
||||
map(0x180002, 0x180003).rw(FUNC(toaplan1_samesame_state::tileram_offs_r), FUNC(toaplan1_samesame_state::tileram_offs_w));
|
||||
map(0x180004, 0x180007).rw(FUNC(toaplan1_samesame_state::tileram_r), FUNC(toaplan1_samesame_state::tileram_w));
|
||||
|
@ -987,26 +987,9 @@ u8 toaplan1_state::vimana_tjump_invert_r()
|
|||
return (m_tjump_io->read() ^ 0xff) | 0xc0; // high 2 bits of port G always read as 1
|
||||
}
|
||||
|
||||
void toaplan1_samesame_state::mcu_w(u8 data)
|
||||
{
|
||||
m_to_mcu = data;
|
||||
m_cmdavailable = 1;
|
||||
}
|
||||
|
||||
u8 toaplan1_samesame_state::soundlatch_r()
|
||||
{
|
||||
return m_to_mcu;
|
||||
}
|
||||
|
||||
void toaplan1_samesame_state::sound_done_w(u8 data)
|
||||
{
|
||||
m_to_mcu = data;
|
||||
m_cmdavailable = 0;
|
||||
}
|
||||
|
||||
u8 toaplan1_samesame_state::cmdavailable_r()
|
||||
{
|
||||
if (m_cmdavailable) return 0xff;
|
||||
if (m_soundlatch->pending_r()) return 0xff;
|
||||
else return 0x00;
|
||||
}
|
||||
|
||||
|
@ -1015,8 +998,8 @@ void toaplan1_samesame_state::hd647180_io_map(address_map &map)
|
|||
map.global_mask(0xff);
|
||||
|
||||
map(0x63, 0x63).nopr(); // read port D
|
||||
map(0xa0, 0xa0).r(FUNC(toaplan1_samesame_state::soundlatch_r));
|
||||
map(0xb0, 0xb0).w(FUNC(toaplan1_samesame_state::sound_done_w));
|
||||
map(0xa0, 0xa0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
||||
map(0xb0, 0xb0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
|
||||
|
||||
map(0x80, 0x81).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
|
||||
}
|
||||
|
@ -2123,6 +2106,8 @@ void toaplan1_samesame_state::samesame(machine_config &config)
|
|||
audiocpu.set_addrmap(AS_IO, &toaplan1_samesame_state::hd647180_io_map);
|
||||
audiocpu.in_pd_callback().set(FUNC(toaplan1_samesame_state::cmdavailable_r));
|
||||
|
||||
GENERIC_LATCH_8(config, m_soundlatch).set_separate_acknowledge(true);
|
||||
|
||||
config.set_perfect_quantum(m_maincpu);
|
||||
|
||||
/* video hardware */
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/tms32010/tms32010.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/ymopl.h"
|
||||
#include "toaplan_scu.h"
|
||||
#include "emupal.h"
|
||||
|
@ -134,7 +135,7 @@ protected:
|
|||
void register_common();
|
||||
void log_vram();
|
||||
void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
void reset_sound();
|
||||
virtual void reset_sound();
|
||||
DECLARE_WRITE_LINE_MEMBER(reset_callback);
|
||||
required_device<m68000_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
|
@ -230,21 +231,20 @@ class toaplan1_samesame_state : public toaplan1_state
|
|||
{
|
||||
public:
|
||||
toaplan1_samesame_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
toaplan1_state(mconfig, type, tag)
|
||||
toaplan1_state(mconfig, type, tag),
|
||||
m_soundlatch(*this, "soundlatch")
|
||||
{
|
||||
}
|
||||
|
||||
void samesame(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void reset_sound() override;
|
||||
|
||||
private:
|
||||
// Fire Shark sound
|
||||
u8 m_to_mcu = 0;
|
||||
u8 m_cmdavailable = 0;
|
||||
required_device<generic_latch_8_device> m_soundlatch;
|
||||
|
||||
void mcu_w(u8 data);
|
||||
u8 soundlatch_r();
|
||||
void sound_done_w(u8 data);
|
||||
u8 cmdavailable_r();
|
||||
|
|
|
@ -143,7 +143,7 @@ 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)
|
||||
|
@ -166,6 +166,12 @@ 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();
|
||||
|
@ -258,10 +264,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));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue