mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
Modernized the irem_audio device. [Osso]
This commit is contained in:
parent
6b608a9339
commit
9148af4550
@ -6,53 +6,46 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/m6800/m6800.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/msm5205.h"
|
||||
#include "sound/discrete.h"
|
||||
#include "audio/irem.h"
|
||||
#include "devlegcy.h"
|
||||
|
||||
struct irem_audio_state
|
||||
|
||||
const device_type IREM_AUDIO = &device_creator<irem_audio_device>;
|
||||
|
||||
irem_audio_device::irem_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, IREM_AUDIO, "Irem Audio", tag, owner, clock, "irem_audio", __FILE__),
|
||||
device_sound_interface(mconfig, *this),
|
||||
m_port1(0),
|
||||
m_port2(0)
|
||||
{
|
||||
UINT8 m_port1;
|
||||
UINT8 m_port2;
|
||||
|
||||
ay8910_device *m_ay1;
|
||||
ay8910_device *m_ay2;
|
||||
msm5205_device *m_adpcm1;
|
||||
msm5205_device *m_adpcm2;
|
||||
};
|
||||
|
||||
INLINE irem_audio_state *get_safe_token( device_t *device )
|
||||
{
|
||||
assert(device != NULL);
|
||||
assert(device->type() == IREM_AUDIO);
|
||||
|
||||
return (irem_audio_state *)downcast<irem_audio_device *>(device)->token();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Sound board initialization
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static DEVICE_START( irem_audio )
|
||||
void irem_audio_device::device_config_complete()
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
running_machine &machine = device->machine();
|
||||
|
||||
state->m_adpcm1 = machine.device<msm5205_device>("msm1");
|
||||
state->m_adpcm2 = machine.device<msm5205_device>("msm2");
|
||||
state->m_ay1 = machine.device<ay8910_device>("ay1");
|
||||
state->m_ay2 = machine.device<ay8910_device>("ay2");
|
||||
|
||||
device->save_item(NAME(state->m_port1));
|
||||
device->save_item(NAME(state->m_port2));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void irem_audio_device::device_start()
|
||||
{
|
||||
m_adpcm1 = machine().device<msm5205_device>("msm1");
|
||||
m_adpcm2 = machine().device<msm5205_device>("msm2");
|
||||
m_ay1 = machine().device<ay8910_device>("ay1");
|
||||
m_ay2 = machine().device<ay8910_device>("ay2");
|
||||
|
||||
save_item(NAME(m_port1));
|
||||
save_item(NAME(m_port2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
@ -62,7 +55,7 @@ static DEVICE_START( irem_audio )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
WRITE8_HANDLER( irem_sound_cmd_w )
|
||||
WRITE8_MEMBER( irem_audio_device::cmd_w )
|
||||
{
|
||||
driver_device *drvstate = space.machine().driver_data<driver_device>();
|
||||
if ((data & 0x80) == 0)
|
||||
@ -79,40 +72,36 @@ WRITE8_HANDLER( irem_sound_cmd_w )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( m6803_port1_w )
|
||||
WRITE8_MEMBER( irem_audio_device::m6803_port1_w )
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
|
||||
state->m_port1 = data;
|
||||
m_port1 = data;
|
||||
}
|
||||
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( m6803_port2_w )
|
||||
WRITE8_MEMBER( irem_audio_device::m6803_port2_w )
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
|
||||
/* write latch */
|
||||
if ((state->m_port2 & 0x01) && !(data & 0x01))
|
||||
if ((m_port2 & 0x01) && !(data & 0x01))
|
||||
{
|
||||
/* control or data port? */
|
||||
if (state->m_port2 & 0x04)
|
||||
if (m_port2 & 0x04)
|
||||
{
|
||||
/* PSG 0 or 1? */
|
||||
if (state->m_port2 & 0x08)
|
||||
state->m_ay1->address_w(space, 0, state->m_port1);
|
||||
if (state->m_port2 & 0x10)
|
||||
state->m_ay2->address_w(space, 0, state->m_port1);
|
||||
if (m_port2 & 0x08)
|
||||
m_ay1->address_w(space, 0, m_port1);
|
||||
if (m_port2 & 0x10)
|
||||
m_ay2->address_w(space, 0, m_port1);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* PSG 0 or 1? */
|
||||
if (state->m_port2 & 0x08)
|
||||
state->m_ay1->data_w(space, 0, state->m_port1);
|
||||
if (state->m_port2 & 0x10)
|
||||
state->m_ay2->data_w(space, 0, state->m_port1);
|
||||
if (m_port2 & 0x08)
|
||||
m_ay1->data_w(space, 0, m_port1);
|
||||
if (m_port2 & 0x10)
|
||||
m_ay2->data_w(space, 0, m_port1);
|
||||
}
|
||||
}
|
||||
state->m_port2 = data;
|
||||
m_port2 = data;
|
||||
}
|
||||
|
||||
|
||||
@ -123,20 +112,18 @@ static WRITE8_DEVICE_HANDLER( m6803_port2_w )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static READ8_DEVICE_HANDLER( m6803_port1_r )
|
||||
READ8_MEMBER( irem_audio_device::m6803_port1_r )
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
|
||||
/* PSG 0 or 1? */
|
||||
if (state->m_port2 & 0x08)
|
||||
return state->m_ay1->data_r(space, 0);
|
||||
if (state->m_port2 & 0x10)
|
||||
return state->m_ay2->data_r(space, 0);
|
||||
if (m_port2 & 0x08)
|
||||
return m_ay1->data_r(space, 0);
|
||||
if (m_port2 & 0x10)
|
||||
return m_ay2->data_r(space, 0);
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
||||
static READ8_DEVICE_HANDLER( m6803_port2_r )
|
||||
READ8_MEMBER( irem_audio_device::m6803_port2_r )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -149,23 +136,21 @@ static READ8_DEVICE_HANDLER( m6803_port2_r )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( ay8910_0_portb_w )
|
||||
WRITE8_MEMBER( irem_audio_device::ay8910_0_portb_w )
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
|
||||
/* bits 2-4 select MSM5205 clock & 3b/4b playback mode */
|
||||
state->m_adpcm1->playmode_w((data >> 2) & 7);
|
||||
if (state->m_adpcm2 != NULL)
|
||||
state->m_adpcm2->playmode_w(((data >> 2) & 4) | 3); /* always in slave mode */
|
||||
m_adpcm1->playmode_w((data >> 2) & 7);
|
||||
if (m_adpcm2 != NULL)
|
||||
m_adpcm2->playmode_w(((data >> 2) & 4) | 3); /* always in slave mode */
|
||||
|
||||
/* bits 0 and 1 reset the two chips */
|
||||
state->m_adpcm1->reset_w(data & 1);
|
||||
if (state->m_adpcm2 != NULL)
|
||||
state->m_adpcm2->reset_w(data & 2);
|
||||
m_adpcm1->reset_w(data & 1);
|
||||
if (m_adpcm2 != NULL)
|
||||
m_adpcm2->reset_w(data & 2);
|
||||
}
|
||||
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( ay8910_1_porta_w )
|
||||
WRITE8_MEMBER( irem_audio_device::ay8910_1_porta_w )
|
||||
{
|
||||
#ifdef MAME_DEBUG
|
||||
if (data & 0x0f) popmessage("analog sound %x",data&0x0f);
|
||||
@ -180,33 +165,29 @@ static WRITE8_DEVICE_HANDLER( ay8910_1_porta_w )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static WRITE8_HANDLER( sound_irq_ack_w )
|
||||
WRITE8_MEMBER( irem_audio_device::sound_irq_ack_w )
|
||||
{
|
||||
space.machine().device("iremsound")->execute().set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( m52_adpcm_w )
|
||||
WRITE8_MEMBER( irem_audio_device::m52_adpcm_w )
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
|
||||
if (offset & 1)
|
||||
{
|
||||
state->m_adpcm1->data_w(data);
|
||||
m_adpcm1->data_w(data);
|
||||
}
|
||||
if (offset & 2)
|
||||
{
|
||||
if (state->m_adpcm2 != NULL)
|
||||
state->m_adpcm2->data_w(data);
|
||||
if (m_adpcm2 != NULL)
|
||||
m_adpcm2->data_w(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( m62_adpcm_w )
|
||||
WRITE8_MEMBER( irem_audio_device::m62_adpcm_w )
|
||||
{
|
||||
irem_audio_state *state = get_safe_token(device);
|
||||
|
||||
msm5205_device *adpcm = (offset & 1) ? state->m_adpcm2 : state->m_adpcm1;
|
||||
msm5205_device *adpcm = (offset & 1) ? m_adpcm2 : m_adpcm1;
|
||||
if (adpcm != NULL)
|
||||
adpcm->data_w(data);
|
||||
}
|
||||
@ -219,17 +200,15 @@ static WRITE8_DEVICE_HANDLER( m62_adpcm_w )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void adpcm_int(device_t *device,int st)
|
||||
void irem_audio_device::adpcm_int(int st)
|
||||
{
|
||||
msm5205_device *adpcm2 = device->machine().device<msm5205_device>("msm2");
|
||||
|
||||
device->machine().device("iremsound")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
machine().device("iremsound")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
|
||||
/* the first MSM5205 clocks the second */
|
||||
if (adpcm2 != NULL)
|
||||
if (m_adpcm2 != NULL)
|
||||
{
|
||||
adpcm2->vclk_w(1);
|
||||
adpcm2->vclk_w(0);
|
||||
m_adpcm2->vclk_w(1);
|
||||
m_adpcm2->vclk_w(0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -254,7 +233,7 @@ static const ay8910_interface irem_ay8910_interface_1 =
|
||||
DEVCB_DRIVER_MEMBER(driver_device, soundlatch_byte_r),
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DEVICE_HANDLER("irem_audio", ay8910_0_portb_w)
|
||||
DEVCB_DEVICE_MEMBER("irem_audio", irem_audio_device, ay8910_0_portb_w)
|
||||
};
|
||||
|
||||
static const ay8910_interface irem_ay8910_interface_2 =
|
||||
@ -263,13 +242,13 @@ static const ay8910_interface irem_ay8910_interface_2 =
|
||||
{470, 0, 0},
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_HANDLER(ay8910_1_porta_w),
|
||||
DEVCB_DEVICE_MEMBER("irem_audio", irem_audio_device, ay8910_1_porta_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static const msm5205_interface irem_msm5205_interface_1 =
|
||||
{
|
||||
DEVCB_LINE(adpcm_int), /* interrupt function */
|
||||
DEVCB_DEVICE_LINE_MEMBER("irem_audio", irem_audio_device, adpcm_int), /* interrupt function */
|
||||
MSM5205_S96_4B /* default to 4KHz, but can be changed at run time */
|
||||
};
|
||||
|
||||
@ -380,29 +359,29 @@ DISCRETE_SOUND_END
|
||||
/* large map uses 8k ROMs, small map uses 4k ROMs; this is selected via a jumper */
|
||||
static ADDRESS_MAP_START( m52_small_sound_map, AS_PROGRAM, 8, driver_device )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
|
||||
AM_RANGE(0x0000, 0x0fff) AM_DEVWRITE_LEGACY("irem_audio", m52_adpcm_w)
|
||||
AM_RANGE(0x1000, 0x1fff) AM_WRITE_LEGACY(sound_irq_ack_w)
|
||||
AM_RANGE(0x0000, 0x0fff) AM_DEVWRITE("irem_audio", irem_audio_device, m52_adpcm_w)
|
||||
AM_RANGE(0x1000, 0x1fff) AM_DEVWRITE("irem_audio", irem_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x2000, 0x7fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( m52_large_sound_map, AS_PROGRAM, 8, driver_device )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_DEVWRITE_LEGACY("irem_audio", m52_adpcm_w)
|
||||
AM_RANGE(0x2000, 0x3fff) AM_WRITE_LEGACY(sound_irq_ack_w)
|
||||
AM_RANGE(0x0000, 0x1fff) AM_DEVWRITE("irem_audio", irem_audio_device, m52_adpcm_w)
|
||||
AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("irem_audio", irem_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x4000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/* complete address map verified from Kid Niki schematics */
|
||||
static ADDRESS_MAP_START( m62_sound_map, AS_PROGRAM, 8, driver_device )
|
||||
AM_RANGE(0x0800, 0x0800) AM_MIRROR(0xf7fc) AM_WRITE_LEGACY(sound_irq_ack_w)
|
||||
AM_RANGE(0x0801, 0x0802) AM_MIRROR(0xf7fc) AM_DEVWRITE_LEGACY("irem_audio", m62_adpcm_w)
|
||||
AM_RANGE(0x0800, 0x0800) AM_MIRROR(0xf7fc) AM_DEVWRITE("irem_audio", irem_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x0801, 0x0802) AM_MIRROR(0xf7fc) AM_DEVWRITE("irem_audio", irem_audio_device, m62_adpcm_w)
|
||||
AM_RANGE(0x4000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( irem_sound_portmap, AS_IO, 8, driver_device )
|
||||
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVREADWRITE_LEGACY("irem_audio", m6803_port1_r, m6803_port1_w)
|
||||
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_DEVREADWRITE_LEGACY("irem_audio", m6803_port2_r, m6803_port2_w)
|
||||
AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVREADWRITE("irem_audio", irem_audio_device, m6803_port1_r, m6803_port1_w)
|
||||
AM_RANGE(M6801_PORT2, M6801_PORT2) AM_DEVREADWRITE("irem_audio", irem_audio_device, m6803_port2_r, m6803_port2_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -486,40 +465,10 @@ MACHINE_CONFIG_DERIVED( m62_audio, irem_audio_base )
|
||||
MCFG_CPU_PROGRAM_MAP(m62_sound_map)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
const device_type IREM_AUDIO = &device_creator<irem_audio_device>;
|
||||
|
||||
irem_audio_device::irem_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, IREM_AUDIO, "Irem Audio", tag, owner, clock, "irem_audio", __FILE__),
|
||||
device_sound_interface(mconfig, *this)
|
||||
{
|
||||
m_token = global_alloc_clear(irem_audio_state);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void irem_audio_device::device_config_complete()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void irem_audio_device::device_start()
|
||||
{
|
||||
DEVICE_START_NAME( irem_audio )(this);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// sound_stream_update - handle a stream update
|
||||
//-------------------------------------------------
|
||||
|
||||
void irem_audio_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
|
||||
{
|
||||
// should never get here
|
||||
fatalerror("sound_stream_update called; not applicable to legacy sound devices\n");
|
||||
}
|
||||
|
@ -1,18 +1,26 @@
|
||||
DECLARE_WRITE8_HANDLER( irem_sound_cmd_w );
|
||||
|
||||
MACHINE_CONFIG_EXTERN( m52_sound_c_audio );
|
||||
MACHINE_CONFIG_EXTERN( m52_large_audio );
|
||||
MACHINE_CONFIG_EXTERN( m62_audio );
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/msm5205.h"
|
||||
|
||||
class irem_audio_device : public device_t,
|
||||
public device_sound_interface
|
||||
{
|
||||
public:
|
||||
irem_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~irem_audio_device() { global_free(m_token); }
|
||||
~irem_audio_device() {}
|
||||
|
||||
DECLARE_WRITE8_MEMBER( cmd_w );
|
||||
DECLARE_WRITE8_MEMBER( m6803_port1_w );
|
||||
DECLARE_WRITE8_MEMBER( m6803_port2_w );
|
||||
DECLARE_READ8_MEMBER( m6803_port1_r );
|
||||
DECLARE_READ8_MEMBER( m6803_port2_r );
|
||||
DECLARE_WRITE8_MEMBER( ay8910_0_portb_w );
|
||||
DECLARE_WRITE8_MEMBER( ay8910_1_porta_w );
|
||||
DECLARE_WRITE8_MEMBER( sound_irq_ack_w );
|
||||
DECLARE_WRITE8_MEMBER( m52_adpcm_w );
|
||||
DECLARE_WRITE8_MEMBER( m62_adpcm_w );
|
||||
|
||||
void adpcm_int(int st);
|
||||
|
||||
// access to legacy token
|
||||
void *token() const { assert(m_token != NULL); return m_token; }
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -20,9 +28,20 @@ protected:
|
||||
|
||||
// sound stream update overrides
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
private:
|
||||
// internal state
|
||||
void *m_token;
|
||||
UINT8 m_port1;
|
||||
UINT8 m_port2;
|
||||
|
||||
ay8910_device *m_ay1;
|
||||
ay8910_device *m_ay2;
|
||||
msm5205_device *m_adpcm1;
|
||||
msm5205_device *m_adpcm2;
|
||||
};
|
||||
|
||||
MACHINE_CONFIG_EXTERN( m52_sound_c_audio );
|
||||
MACHINE_CONFIG_EXTERN( m52_large_audio );
|
||||
MACHINE_CONFIG_EXTERN( m62_audio );
|
||||
|
||||
extern const device_type IREM_AUDIO;
|
||||
|
@ -64,7 +64,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, m52_state )
|
||||
AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r)
|
||||
AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07f8) AM_READ_PORT("IN1")
|
||||
@ -80,7 +80,7 @@ static ADDRESS_MAP_START( alpha1v_map, AS_PROGRAM, 8, m52_state )
|
||||
AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram") // bigger or mirrored?
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w)
|
||||
AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1")
|
||||
|
@ -69,7 +69,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, m57_state )
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(m57_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x9000, 0x91ff) AM_RAM AM_SHARE("scrollram")
|
||||
AM_RANGE(0xc820, 0xc8ff) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_WRITE(m57_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1")
|
||||
|
@ -33,7 +33,7 @@ static ADDRESS_MAP_START( yard_map, AS_PROGRAM, 8, m58_state )
|
||||
AM_RANGE(0xa200, 0xa200) AM_RAM AM_SHARE("scroll_x_high")
|
||||
AM_RANGE(0xa400, 0xa400) AM_RAM AM_SHARE("scroll_y_low")
|
||||
AM_RANGE(0xa800, 0xa800) AM_RAM AM_SHARE("score_disable")
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_WRITE(yard_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1")
|
||||
|
@ -183,7 +183,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( kungfum_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -201,7 +201,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( battroad_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -229,7 +229,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ldrun2_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -250,7 +250,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ldrun3_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -270,7 +270,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( ldrun4_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -298,7 +298,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( kidniki_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -351,7 +351,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( youjyudn_io_map, AS_IO, 8, m62_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w) /* + coin counters */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
|
@ -184,7 +184,7 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x080000, 0x083fff) AM_RAM /* work RAM */
|
||||
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE_LEGACY("k053250_1", k053250_ram_r, k053250_ram_w)
|
||||
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
|
||||
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
|
||||
AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w)
|
||||
AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w)
|
||||
|
@ -59,7 +59,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, travrusa_state )
|
||||
AM_RANGE(0x9000, 0x9000) AM_WRITE(travrusa_scroll_x_low_w)
|
||||
AM_RANGE(0xa000, 0xa000) AM_WRITE(travrusa_scroll_x_high_w)
|
||||
AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0xd000, 0xd000) AM_WRITE_LEGACY(irem_sound_cmd_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_WRITE(travrusa_flipscreen_w) /* + coin counters - not written by shtrider */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READ_PORT("SYSTEM") /* IN0 */
|
||||
AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P1") /* IN1 */
|
||||
|
Loading…
Reference in New Issue
Block a user