mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
Modernized Konami 056800 sound device. [Osso]
This commit is contained in:
parent
52423e5879
commit
5b974786d6
@ -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<k056800_device *>(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::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<const k056800_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<k056800_interface *>(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);
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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<UINT32> m_work_ram;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<k056800_device> m_k056800;
|
||||
required_device<cpu_device> m_dsp;
|
||||
optional_device<cpu_device> m_dsp2;
|
||||
required_device<adc1038_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
|
||||
|
@ -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<UINT32> m_sharc_dataram1;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<k056800_device> m_k056800;
|
||||
optional_device<cpu_device> m_gn680;
|
||||
required_device<cpu_device> m_dsp;
|
||||
optional_device<cpu_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
|
||||
|
@ -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<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_dsp;
|
||||
required_device<k056800_device> m_k056800;
|
||||
required_device<k001604_device> m_k001604;
|
||||
required_device<adc12138_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
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_dsp;
|
||||
optional_device<k001604_device> m_k001604;
|
||||
required_device<k056800_device> m_k056800;
|
||||
optional_device<k056832_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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user