From 5b974786d688f96ec058ac140f9baced4327134a Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Fri, 14 Jun 2013 09:03:12 +0000 Subject: [PATCH] Modernized Konami 056800 sound device. [Osso] --- src/emu/sound/k056800.c | 278 ++++++++++++++++-------------------- src/emu/sound/k056800.h | 46 +++--- src/mame/drivers/gticlub.c | 10 +- src/mame/drivers/hornet.c | 6 +- src/mame/drivers/nwk-tr.c | 10 +- src/mame/drivers/ultrsprt.c | 12 +- src/mame/drivers/zr107.c | 14 +- 7 files changed, 179 insertions(+), 197 deletions(-) diff --git a/src/emu/sound/k056800.c b/src/emu/sound/k056800.c index 5623fc20354..2289dd89180 100644 --- a/src/emu/sound/k056800.c +++ b/src/emu/sound/k056800.c @@ -9,166 +9,12 @@ #include "emu.h" #include "sound/k056800.h" -struct k056800_state -{ - UINT8 host_reg[8]; - UINT8 sound_reg[8]; - - emu_timer *sound_cpu_timer; - UINT8 sound_cpu_irq1_enable; - k056800_irq_cb irq_cb; -}; - -/***************************************************************************** - INLINE FUNCTIONS -*****************************************************************************/ - -INLINE k056800_state *k056800_get_safe_token( device_t *device ) -{ - assert(device != NULL); - assert(device->type() == K056800); - - return (k056800_state *)downcast(device)->token(); -} - -INLINE const k056800_interface *k056800_get_interface( device_t *device ) -{ - assert(device != NULL); - assert((device->type() == K056800)); - return (const k056800_interface *) device->static_config(); -} - -/***************************************************************************** - DEVICE HANDLERS -*****************************************************************************/ - - -static UINT8 k056800_host_reg_r( device_t *device, int reg ) -{ - k056800_state *k056800 = k056800_get_safe_token(device); - UINT8 value = k056800->host_reg[reg]; - if (reg == 2) - value &= ~3; // suppress VOLWR busy flags - - return value; -} - -static void k056800_host_reg_w( device_t *device, int reg, UINT8 data ) -{ - k056800_state *k056800 = k056800_get_safe_token(device); - - k056800->sound_reg[reg] = data; - - if (reg == 7) - k056800->irq_cb(device->machine(), 1); -} - -static UINT8 k056800_sound_reg_r( device_t *device, int reg ) -{ - k056800_state *k056800 = k056800_get_safe_token(device); - return k056800->sound_reg[reg]; -} - -static void k056800_sound_reg_w( device_t *device, int reg, UINT8 data ) -{ - k056800_state *k056800 = k056800_get_safe_token(device); - - if (reg == 4) - k056800->sound_cpu_irq1_enable = data & 0x01; - - k056800->host_reg[reg] = data; -} - -static TIMER_CALLBACK( k056800_sound_cpu_timer_tick ) -{ - k056800_state *k056800 = (k056800_state *)ptr; - - if (k056800->sound_cpu_irq1_enable) - k056800->irq_cb(machine, 0); -} - -READ32_DEVICE_HANDLER( k056800_host_r ) -{ - UINT32 r = 0; - - if (ACCESSING_BITS_24_31) - r |= k056800_host_reg_r(device, (offset * 4) + 0) << 24; - - if (ACCESSING_BITS_16_23) - r |= k056800_host_reg_r(device, (offset * 4) + 1) << 16; - - if (ACCESSING_BITS_8_15) - r |= k056800_host_reg_r(device, (offset * 4) + 2) << 8; - - if (ACCESSING_BITS_0_7) - r |= k056800_host_reg_r(device, (offset * 4) + 3) << 0; - - - return r; -} - -WRITE32_DEVICE_HANDLER( k056800_host_w ) -{ - if (ACCESSING_BITS_24_31) - k056800_host_reg_w(device, (offset * 4) + 0, (data >> 24) & 0xff); - - if (ACCESSING_BITS_16_23) - k056800_host_reg_w(device, (offset * 4) + 1, (data >> 16) & 0xff); - - if (ACCESSING_BITS_8_15) - k056800_host_reg_w(device, (offset * 4) + 2, (data >> 8) & 0xff); - - if (ACCESSING_BITS_0_7) - k056800_host_reg_w(device, (offset * 4) + 3, (data >> 0) & 0xff); - -} - -READ16_DEVICE_HANDLER( k056800_sound_r ) -{ - return k056800_sound_reg_r(device, offset); -} - -WRITE16_DEVICE_HANDLER( k056800_sound_w ) -{ - k056800_sound_reg_w(device, offset, data); -} - -/***************************************************************************** - DEVICE INTERFACE -*****************************************************************************/ - -static DEVICE_START( k056800 ) -{ - k056800_state *k056800 = k056800_get_safe_token(device); - const k056800_interface *intf = k056800_get_interface(device); - attotime timer_period = attotime::from_hz(device->clock()) * 14700 * 3; - - k056800->irq_cb = intf->irq_cb; - - k056800->sound_cpu_timer = device->machine().scheduler().timer_alloc(FUNC(k056800_sound_cpu_timer_tick), k056800); - k056800->sound_cpu_timer->adjust(timer_period, 0, timer_period); - - device->save_item(NAME(k056800->host_reg)); - device->save_item(NAME(k056800->sound_reg)); - device->save_item(NAME(k056800->sound_cpu_irq1_enable)); -} - -static DEVICE_RESET( k056800 ) -{ - k056800_state *k056800 = k056800_get_safe_token(device); - - memset(k056800->host_reg, 0, sizeof(k056800->host_reg)); - memset(k056800->sound_reg, 0, sizeof(k056800->sound_reg)); - - k056800->sound_cpu_irq1_enable = 0; -} const device_type K056800 = &device_creator; k056800_device::k056800_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, K056800, "Konami 056800 MIRAC", tag, owner, clock) + : device_t(mconfig, K056800, "Konami 056800 MIRAC", tag, owner, clock) { - m_token = global_alloc_clear(k056800_state); } //------------------------------------------------- @@ -179,6 +25,16 @@ k056800_device::k056800_device(const machine_config &mconfig, const char *tag, d void k056800_device::device_config_complete() { + // inherit a copy of the static data + const k056800_interface *intf = reinterpret_cast(static_config()); + if (intf != NULL) + *static_cast(this) = *intf; + + // or initialize to defaults if none provided + else + { + m_irq_cb = NULL; + } } //------------------------------------------------- @@ -187,7 +43,16 @@ void k056800_device::device_config_complete() void k056800_device::device_start() { - DEVICE_START_NAME( k056800 )(this); + attotime timer_period = attotime::from_hz(clock()) * 14700 * 3; + + m_irq_cb_func = m_irq_cb; + + m_sound_cpu_timer = timer_alloc(TIMER_TICK_SOUND_CPU); + m_sound_cpu_timer->adjust(timer_period, 0, timer_period); + + save_item(NAME(m_host_reg)); + save_item(NAME(m_sound_reg)); + save_item(NAME(m_sound_cpu_irq1_enable)); } //------------------------------------------------- @@ -196,5 +61,104 @@ void k056800_device::device_start() void k056800_device::device_reset() { - DEVICE_RESET_NAME( k056800 )(this); + memset(m_host_reg, 0, sizeof(m_host_reg)); + memset(m_sound_reg, 0, sizeof(m_sound_reg)); + + m_sound_cpu_irq1_enable = 0; +} + + +/***************************************************************************** + DEVICE HANDLERS +*****************************************************************************/ + + +UINT8 k056800_device::host_reg_r( int reg ) +{ + UINT8 value = m_host_reg[reg]; + if (reg == 2) + value &= ~3; // suppress VOLWR busy flags + + return value; +} + +void k056800_device::host_reg_w( int reg, UINT8 data ) +{ + m_sound_reg[reg] = data; + + if (reg == 7) + m_irq_cb(machine(), 1); +} + +UINT8 k056800_device::sound_reg_r( int reg ) +{ + return m_sound_reg[reg]; +} + +void k056800_device::sound_reg_w( int reg, UINT8 data ) +{ + if (reg == 4) + m_sound_cpu_irq1_enable = data & 0x01; + + m_host_reg[reg] = data; +} + +void k056800_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + switch (id) + { + case TIMER_TICK_SOUND_CPU: + if (m_sound_cpu_irq1_enable) + m_irq_cb_func(machine(), 0); + break; + + default: + assert_always(FALSE, "Unknown id in k056800_device::device_timer"); + } +} + +READ32_MEMBER( k056800_device::host_r ) +{ + UINT32 r = 0; + + if (ACCESSING_BITS_24_31) + r |= host_reg_r((offset * 4) + 0) << 24; + + if (ACCESSING_BITS_16_23) + r |= host_reg_r((offset * 4) + 1) << 16; + + if (ACCESSING_BITS_8_15) + r |= host_reg_r((offset * 4) + 2) << 8; + + if (ACCESSING_BITS_0_7) + r |= host_reg_r((offset * 4) + 3) << 0; + + + return r; +} + +WRITE32_MEMBER( k056800_device::host_w ) +{ + if (ACCESSING_BITS_24_31) + host_reg_w((offset * 4) + 0, (data >> 24) & 0xff); + + if (ACCESSING_BITS_16_23) + host_reg_w((offset * 4) + 1, (data >> 16) & 0xff); + + if (ACCESSING_BITS_8_15) + host_reg_w((offset * 4) + 2, (data >> 8) & 0xff); + + if (ACCESSING_BITS_0_7) + host_reg_w((offset * 4) + 3, (data >> 0) & 0xff); + +} + +READ16_MEMBER( k056800_device::sound_r ) +{ + return sound_reg_r(offset); +} + +WRITE16_MEMBER( k056800_device::sound_w ) +{ + sound_reg_w(offset, data); } diff --git a/src/emu/sound/k056800.h b/src/emu/sound/k056800.h index d1dfacecded..c0855e88039 100644 --- a/src/emu/sound/k056800.h +++ b/src/emu/sound/k056800.h @@ -7,8 +7,6 @@ #ifndef __K056800_H__ #define __K056800_H__ -#include "devlegcy.h" - /*************************************************************************** TYPE DEFINITIONS @@ -19,25 +17,47 @@ typedef void (*k056800_irq_cb)(running_machine &, int); struct k056800_interface { - k056800_irq_cb irq_cb; + k056800_irq_cb m_irq_cb; }; -class k056800_device : public device_t +class k056800_device : public device_t, + public k056800_interface { public: k056800_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~k056800_device() { global_free(m_token); } + ~k056800_device() {} + + enum + { + TIMER_TICK_SOUND_CPU + }; + + DECLARE_READ32_MEMBER( host_r ); + DECLARE_WRITE32_MEMBER( host_w ); + DECLARE_READ16_MEMBER( sound_r ); + DECLARE_WRITE16_MEMBER( sound_w ); - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); + + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + private: // internal state - void *m_token; + UINT8 m_host_reg[8]; + UINT8 m_sound_reg[8]; + emu_timer *m_sound_cpu_timer; + UINT8 m_sound_cpu_irq1_enable; + k056800_irq_cb m_irq_cb_func; + + UINT8 host_reg_r( int reg ); + void host_reg_w( int reg, UINT8 data ); + UINT8 sound_reg_r( int reg ); + void sound_reg_w( int reg, UINT8 data ); + }; extern const device_type K056800; @@ -53,14 +73,4 @@ extern const device_type K056800; MCFG_DEVICE_CONFIG(_interface) -/*************************************************************************** - DEVICE I/O FUNCTIONS -***************************************************************************/ - -DECLARE_READ32_DEVICE_HANDLER( k056800_host_r ); -DECLARE_WRITE32_DEVICE_HANDLER( k056800_host_w ); -DECLARE_READ16_DEVICE_HANDLER( k056800_sound_r ); -DECLARE_WRITE16_DEVICE_HANDLER( k056800_sound_w ); - - #endif /* __K056800_H__ */ diff --git a/src/mame/drivers/gticlub.c b/src/mame/drivers/gticlub.c index 2310af04b82..ceb7571b96c 100644 --- a/src/mame/drivers/gticlub.c +++ b/src/mame/drivers/gticlub.c @@ -248,6 +248,7 @@ public: m_work_ram(*this, "work_ram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), + m_k056800(*this, "k056800"), m_dsp(*this, "dsp"), m_dsp2(*this, "dsp2"), m_adc1038(*this, "adc1038"), @@ -256,6 +257,7 @@ public: required_shared_ptr m_work_ram; required_device m_maincpu; required_device m_audiocpu; + required_device m_k056800; required_device m_dsp; optional_device m_dsp2; required_device m_adc1038; @@ -449,9 +451,9 @@ static ADDRESS_MAP_START( gticlub_map, AS_PROGRAM, 32, gticlub_state ) AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, k056230_r, k056230_w, 0xffffffff) AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) - AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) - AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVREAD_LEGACY("k056800", k056800_host_r) // Hang Pilot - AM_RANGE(0x7e00c008, 0x7e00c00f) AM_DEVREAD_LEGACY("k056800", k056800_host_r) + AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE("k056800", k056800_device, host_w) + AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVREAD("k056800", k056800_device, host_r) // Hang Pilot + AM_RANGE(0x7e00c008, 0x7e00c00f) AM_DEVREAD("k056800", k056800_device, host_r) AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2") AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ @@ -462,7 +464,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_memmap, AS_PROGRAM, 16, gticlub_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("k056800", k056800_sound_r, k056800_sound_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("k056800", k056800_device, sound_r, sound_w) AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */ AM_RANGE(0x580000, 0x580001) AM_WRITENOP AM_RANGE(0x600000, 0x600001) AM_WRITENOP diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c index b1a7b446aea..e237028bb9e 100644 --- a/src/mame/drivers/hornet.c +++ b/src/mame/drivers/hornet.c @@ -334,6 +334,7 @@ public: m_sharc_dataram1(*this, "sharc_dataram1"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), + m_k056800(*this, "k056800"), m_gn680(*this, "gn680"), m_dsp(*this, "dsp"), m_dsp2(*this, "dsp2"), @@ -349,6 +350,7 @@ public: optional_shared_ptr m_sharc_dataram1; required_device m_maincpu; required_device m_audiocpu; + required_device m_k056800; optional_device m_gn680; required_device m_dsp; optional_device m_dsp2; @@ -657,7 +659,7 @@ static ADDRESS_MAP_START( hornet_map, AS_PROGRAM, 32, hornet_state ) AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ8(sysreg_r, 0xffffffff) AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE8(sysreg_w, 0xffffffff) AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */ - AM_RANGE(0x7d030000, 0x7d030007) AM_DEVREADWRITE_LEGACY("k056800", k056800_host_r, k056800_host_w) + AM_RANGE(0x7d030000, 0x7d030007) AM_DEVREADWRITE("k056800", k056800_device, host_r, host_w) AM_RANGE(0x7d042000, 0x7d043fff) AM_RAM /* COMM BOARD 0 */ AM_RANGE(0x7d044000, 0x7d044007) AM_READ(comm0_unk_r) AM_RANGE(0x7d048000, 0x7d048003) AM_WRITE(comm1_w) @@ -674,7 +676,7 @@ static ADDRESS_MAP_START( sound_memmap, AS_PROGRAM, 16, hornet_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Work RAM */ AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */ - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("k056800", k056800_sound_r, k056800_sound_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("k056800", k056800_device, sound_r, sound_w) AM_RANGE(0x480000, 0x480001) AM_WRITENOP AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP AM_RANGE(0x500000, 0x500001) AM_WRITENOP diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c index 83eea8ecc52..91378b52d5f 100644 --- a/src/mame/drivers/nwk-tr.c +++ b/src/mame/drivers/nwk-tr.c @@ -235,6 +235,7 @@ public: m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_dsp(*this, "dsp"), + m_k056800(*this, "k056800"), m_k001604(*this, "k001604"), m_adc12138(*this, "adc12138") { } @@ -244,6 +245,7 @@ public: required_device m_maincpu; required_device m_audiocpu; required_device m_dsp; + required_device m_k056800; required_device m_k001604; required_device m_adc12138; emu_timer *m_sound_irq_timer; @@ -546,9 +548,9 @@ static ADDRESS_MAP_START( nwktr_map, AS_PROGRAM, 32, nwktr_state ) AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ(sysreg_r) AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE(sysreg_w) AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8("m48t58", timekeeper_device, read, write, 0xffffffff) /* M48T58Y RTC/NVRAM */ - AM_RANGE(0x7d030000, 0x7d030007) AM_DEVREAD_LEGACY("k056800", k056800_host_r) - AM_RANGE(0x7d030000, 0x7d030007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) - AM_RANGE(0x7d030008, 0x7d03000f) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) + AM_RANGE(0x7d030000, 0x7d030007) AM_DEVREAD("k056800", k056800_device, host_r) + AM_RANGE(0x7d030000, 0x7d030007) AM_DEVWRITE("k056800", k056800_device, host_w) + AM_RANGE(0x7d030008, 0x7d03000f) AM_DEVWRITE("k056800", k056800_device, host_w) AM_RANGE(0x7d040000, 0x7d04ffff) AM_READWRITE(lanc1_r, lanc1_w) AM_RANGE(0x7d050000, 0x7d05ffff) AM_READWRITE(lanc2_r, lanc2_w) AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ @@ -562,7 +564,7 @@ static ADDRESS_MAP_START( sound_memmap, AS_PROGRAM, 16, nwktr_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x100000, 0x10ffff) AM_RAM /* Work RAM */ AM_RANGE(0x200000, 0x200fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */ - AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("k056800", k056800_sound_r, k056800_sound_w) + AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("k056800", k056800_device, sound_r, sound_w) AM_RANGE(0x600000, 0x600001) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c index 1633d078227..a022b5819aa 100644 --- a/src/mame/drivers/ultrsprt.c +++ b/src/mame/drivers/ultrsprt.c @@ -125,8 +125,8 @@ static ADDRESS_MAP_START( ultrsprt_map, AS_PROGRAM, 32, ultrsprt_state ) AM_RANGE(0x70000000, 0x70000003) AM_READWRITE(eeprom_r, eeprom_w) AM_RANGE(0x70000020, 0x70000023) AM_READ_PORT("P1") AM_RANGE(0x70000040, 0x70000043) AM_READ_PORT("P2") - AM_RANGE(0x70000080, 0x70000087) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) - AM_RANGE(0x70000088, 0x7000008f) AM_DEVREAD_LEGACY("k056800", k056800_host_r) + AM_RANGE(0x70000080, 0x70000087) AM_DEVWRITE("k056800", k056800_device, host_w) + AM_RANGE(0x70000088, 0x7000008f) AM_DEVREAD("k056800", k056800_device, host_r) AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE(int_ack_w) AM_RANGE(0x7f000000, 0x7f01ffff) AM_RAM AM_SHARE("workram") AM_RANGE(0x7f700000, 0x7f703fff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") @@ -142,10 +142,10 @@ READ16_MEMBER(ultrsprt_state::K056800_68k_r) UINT16 r = 0; if (ACCESSING_BITS_8_15) - r |= k056800_sound_r(m_k056800, space, (offset*2)+0, 0xffff) << 8; + r |= m_k056800->sound_r(space, (offset*2)+0, 0xffff) << 8; if (ACCESSING_BITS_0_7) - r |= k056800_sound_r(m_k056800, space, (offset*2)+1, 0xffff) << 0; + r |= m_k056800->sound_r(space, (offset*2)+1, 0xffff) << 0; return r; } @@ -153,10 +153,10 @@ READ16_MEMBER(ultrsprt_state::K056800_68k_r) WRITE16_MEMBER(ultrsprt_state::K056800_68k_w) { if (ACCESSING_BITS_8_15) - k056800_sound_w(m_k056800, space, (offset*2)+0, (data >> 8) & 0xff, 0x00ff); + m_k056800->sound_w(space, (offset*2)+0, (data >> 8) & 0xff, 0x00ff); if (ACCESSING_BITS_0_7) - k056800_sound_w(m_k056800, space, (offset*2)+1, (data >> 0) & 0xff, 0x00ff); + m_k056800->sound_w(space, (offset*2)+1, (data >> 0) & 0xff, 0x00ff); } static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, ultrsprt_state ) diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c index f22163fe349..87bb02b02d3 100644 --- a/src/mame/drivers/zr107.c +++ b/src/mame/drivers/zr107.c @@ -192,6 +192,7 @@ public: m_audiocpu(*this, "audiocpu"), m_dsp(*this, "dsp"), m_k001604(*this, "k001604"), + m_k056800(*this, "k056800"), m_k056832(*this, "k056832") { } UINT8 m_led_reg0; @@ -223,6 +224,7 @@ public: required_device m_audiocpu; required_device m_dsp; optional_device m_k001604; + required_device m_k056800; optional_device m_k056832; protected: @@ -447,8 +449,8 @@ static ADDRESS_MAP_START( zr107_map, AS_PROGRAM, 32, zr107_state ) AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_device, k056230_r, k056230_w, 0xffffffff) /* LANC registers */ AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */ - AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) - AM_RANGE(0x7e00c008, 0x7e00c00f) AM_DEVREAD_LEGACY("k056800", k056800_host_r) + AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE("k056800", k056800_device, host_w) + AM_RANGE(0x7e00c008, 0x7e00c00f) AM_DEVREAD("k056800", k056800_device, host_r) AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2") AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ ADDRESS_MAP_END @@ -475,8 +477,8 @@ static ADDRESS_MAP_START( jetwave_map, AS_PROGRAM, 32, zr107_state ) AM_RANGE(0x7e000000, 0x7e003fff) AM_MIRROR(0x80000000) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) AM_RANGE(0x7e008000, 0x7e009fff) AM_MIRROR(0x80000000) AM_DEVREADWRITE8("k056230", k056230_device, k056230_r, k056230_w, 0xffffffff) /* LANC registers */ AM_RANGE(0x7e00a000, 0x7e00bfff) AM_MIRROR(0x80000000) AM_DEVREADWRITE("k056230", k056230_device, lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */ - AM_RANGE(0x7e00c000, 0x7e00c007) AM_MIRROR(0x80000000) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) - AM_RANGE(0x7e00c008, 0x7e00c00f) AM_MIRROR(0x80000000) AM_DEVREAD_LEGACY("k056800", k056800_host_r) + AM_RANGE(0x7e00c000, 0x7e00c007) AM_MIRROR(0x80000000) AM_DEVWRITE("k056800", k056800_device, host_w) + AM_RANGE(0x7e00c008, 0x7e00c00f) AM_MIRROR(0x80000000) AM_DEVREAD("k056800", k056800_device, host_r) AM_RANGE(0x7f000000, 0x7f3fffff) AM_MIRROR(0x80000000) AM_ROM AM_REGION("user2", 0) AM_RANGE(0x7f800000, 0x7f9fffff) AM_MIRROR(0x80000000) AM_ROM AM_SHARE("share2") AM_RANGE(0x7fe00000, 0x7fffffff) AM_MIRROR(0x80000000) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ @@ -491,8 +493,8 @@ static ADDRESS_MAP_START( sound_memmap, AS_PROGRAM, 16, zr107_state ) AM_RANGE(0x100000, 0x103fff) AM_RAM /* Work RAM */ AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00) AM_RANGE(0x200000, 0x2004ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff) - AM_RANGE(0x400000, 0x40000f) AM_DEVWRITE_LEGACY("k056800", k056800_sound_w) - AM_RANGE(0x400010, 0x40001f) AM_DEVREAD_LEGACY("k056800", k056800_sound_r) + AM_RANGE(0x400000, 0x40000f) AM_DEVWRITE("k056800", k056800_device, sound_w) + AM_RANGE(0x400010, 0x40001f) AM_DEVREAD("k056800", k056800_device, sound_r) AM_RANGE(0x580000, 0x580001) AM_WRITENOP ADDRESS_MAP_END