mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
Modernized the m72 audio device. [Osso]
This commit is contained in:
parent
12d8c005a7
commit
acf5377cee
@ -41,226 +41,19 @@ Shisensho II 1993 Rev 3.34 M81 Yes
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "sound/dac.h"
|
||||
#include "m72.h"
|
||||
#include "devlegcy.h"
|
||||
|
||||
|
||||
/*
|
||||
|
||||
The sound CPU runs in interrup mode 0. IRQ is shared by two sources: the
|
||||
YM2151 (bit 4 of the vector), and the main CPU (bit 5).
|
||||
Since the vector can be changed from different contexts (the YM2151 timer
|
||||
callback, the main CPU context, and the sound CPU context), it's important
|
||||
to accurately arbitrate the changes to avoid out-of-order execution. We do
|
||||
that by handling all vector changes in a single timer callback.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
VECTOR_INIT,
|
||||
YM2151_ASSERT,
|
||||
YM2151_CLEAR,
|
||||
Z80_ASSERT,
|
||||
Z80_CLEAR
|
||||
};
|
||||
|
||||
struct m72_audio_state
|
||||
{
|
||||
UINT8 irqvector;
|
||||
UINT32 sample_addr;
|
||||
UINT8 *samples;
|
||||
UINT32 samples_size;
|
||||
address_space *space;
|
||||
dac_device *dac;
|
||||
};
|
||||
|
||||
INLINE m72_audio_state *get_safe_token(device_t *device)
|
||||
{
|
||||
assert(device != NULL);
|
||||
assert(device->type() == M72);
|
||||
|
||||
return (m72_audio_state *)downcast<m72_audio_device *>(device)->token();
|
||||
}
|
||||
|
||||
|
||||
static TIMER_CALLBACK( setvector_callback )
|
||||
{
|
||||
m72_audio_state *state = (m72_audio_state *)ptr;
|
||||
|
||||
switch(param)
|
||||
{
|
||||
case VECTOR_INIT:
|
||||
state->irqvector = 0xff;
|
||||
break;
|
||||
|
||||
case YM2151_ASSERT:
|
||||
state->irqvector &= 0xef;
|
||||
break;
|
||||
|
||||
case YM2151_CLEAR:
|
||||
state->irqvector |= 0x10;
|
||||
break;
|
||||
|
||||
case Z80_ASSERT:
|
||||
state->irqvector &= 0xdf;
|
||||
break;
|
||||
|
||||
case Z80_CLEAR:
|
||||
state->irqvector |= 0x20;
|
||||
break;
|
||||
}
|
||||
|
||||
if (state->irqvector == 0)
|
||||
logerror("You didn't call m72_init_sound()\n");
|
||||
|
||||
machine.device("soundcpu")->execute().set_input_line_and_vector(0, (state->irqvector == 0xff) ? CLEAR_LINE : ASSERT_LINE, state->irqvector);
|
||||
}
|
||||
|
||||
static DEVICE_START( m72_audio )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
state->samples = device->machine().root_device().memregion("samples")->base();
|
||||
state->samples_size = device->machine().root_device().memregion("samples")->bytes();
|
||||
state->space = &device->machine().device("soundcpu")->memory().space(AS_IO);
|
||||
state->dac = device->machine().device<dac_device>("dac");
|
||||
|
||||
device->save_item(NAME(state->irqvector));
|
||||
device->save_item(NAME(state->sample_addr));
|
||||
}
|
||||
|
||||
static DEVICE_RESET( m72_audio )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
setvector_callback(device->machine(), state, VECTOR_INIT);
|
||||
}
|
||||
|
||||
WRITE_LINE_DEVICE_HANDLER(m72_ym2151_irq_handler)
|
||||
{
|
||||
device_t *audio = device->machine().device("m72");
|
||||
m72_audio_state *audstate = get_safe_token(audio);
|
||||
|
||||
device->machine().scheduler().synchronize(FUNC(setvector_callback), state ? YM2151_ASSERT : YM2151_CLEAR, audstate);
|
||||
}
|
||||
|
||||
WRITE16_DEVICE_HANDLER( m72_sound_command_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
driver_device *drvstate = space.machine().driver_data<driver_device>();
|
||||
drvstate->soundlatch_byte_w(*state->space, offset, data);
|
||||
space.machine().scheduler().synchronize(FUNC(setvector_callback), Z80_ASSERT, state);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( m72_sound_command_byte_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
driver_device *drvstate = space.machine().driver_data<driver_device>();
|
||||
drvstate->soundlatch_byte_w(*state->space, offset, data);
|
||||
space.machine().scheduler().synchronize(FUNC(setvector_callback), Z80_ASSERT, state);
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( m72_sound_irq_ack_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
space.machine().scheduler().synchronize(FUNC(setvector_callback), Z80_CLEAR, state);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m72_set_sample_start(device_t *device, int start)
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
state->sample_addr = start;
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( vigilant_sample_addr_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
if (offset == 1)
|
||||
state->sample_addr = (state->sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
state->sample_addr = (state->sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( shisen_sample_addr_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
state->sample_addr >>= 2;
|
||||
|
||||
if (offset == 1)
|
||||
state->sample_addr = (state->sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
state->sample_addr = (state->sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
|
||||
state->sample_addr <<= 2;
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( rtype2_sample_addr_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
state->sample_addr >>= 5;
|
||||
|
||||
if (offset == 1)
|
||||
state->sample_addr = (state->sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
state->sample_addr = (state->sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
|
||||
state->sample_addr <<= 5;
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( poundfor_sample_addr_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
/* poundfor writes both sample start and sample END - a first for Irem...
|
||||
we don't handle the end written here, 00 marks the sample end as usual. */
|
||||
if (offset > 1) return;
|
||||
|
||||
state->sample_addr >>= 4;
|
||||
|
||||
if (offset == 1)
|
||||
state->sample_addr = (state->sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
state->sample_addr = (state->sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
|
||||
state->sample_addr <<= 4;
|
||||
}
|
||||
|
||||
READ8_DEVICE_HANDLER( m72_sample_r )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
return state->samples[state->sample_addr];
|
||||
}
|
||||
|
||||
WRITE8_DEVICE_HANDLER( m72_sample_w )
|
||||
{
|
||||
m72_audio_state *state = get_safe_token(device);
|
||||
|
||||
state->dac->write_signed8(data);
|
||||
state->sample_addr = (state->sample_addr + 1) & (state->samples_size - 1);
|
||||
}
|
||||
|
||||
const device_type M72 = &device_creator<m72_audio_device>;
|
||||
|
||||
m72_audio_device::m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, M72, "M72 Custom", tag, owner, clock, "m72_audio", __FILE__),
|
||||
device_sound_interface(mconfig, *this)
|
||||
device_sound_interface(mconfig, *this),
|
||||
m_irqvector(0),
|
||||
m_sample_addr(0),
|
||||
m_samples(NULL),
|
||||
m_samples_size(0)
|
||||
{
|
||||
m_token = global_alloc_clear(m72_audio_state);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -279,7 +72,13 @@ void m72_audio_device::device_config_complete()
|
||||
|
||||
void m72_audio_device::device_start()
|
||||
{
|
||||
DEVICE_START_NAME( m72_audio )(this);
|
||||
m_samples = machine().root_device().memregion("samples")->base();
|
||||
m_samples_size = machine().root_device().memregion("samples")->bytes();
|
||||
m_space = &machine().device("soundcpu")->memory().space(AS_IO);
|
||||
m_dac = machine().device<dac_device>("dac");
|
||||
|
||||
save_item(NAME(m_irqvector));
|
||||
save_item(NAME(m_sample_addr));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -288,15 +87,151 @@ void m72_audio_device::device_start()
|
||||
|
||||
void m72_audio_device::device_reset()
|
||||
{
|
||||
DEVICE_RESET_NAME( m72_audio )(this);
|
||||
m_irqvector = 0xff;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
The sound CPU runs in interrup mode 0. IRQ is shared by two sources: the
|
||||
YM2151 (bit 4 of the vector), and the main CPU (bit 5).
|
||||
Since the vector can be changed from different contexts (the YM2151 timer
|
||||
callback, the main CPU context, and the sound CPU context), it's important
|
||||
to accurately arbitrate the changes to avoid out-of-order execution. We do
|
||||
that by handling all vector changes in a single timer callback.
|
||||
|
||||
*/
|
||||
|
||||
TIMER_CALLBACK_MEMBER( m72_audio_device::setvector_callback )
|
||||
{
|
||||
switch(param)
|
||||
{
|
||||
case VECTOR_INIT:
|
||||
m_irqvector = 0xff;
|
||||
break;
|
||||
|
||||
case YM2151_ASSERT:
|
||||
m_irqvector &= 0xef;
|
||||
break;
|
||||
|
||||
case YM2151_CLEAR:
|
||||
m_irqvector |= 0x10;
|
||||
break;
|
||||
|
||||
case Z80_ASSERT:
|
||||
m_irqvector &= 0xdf;
|
||||
break;
|
||||
|
||||
case Z80_CLEAR:
|
||||
m_irqvector |= 0x20;
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_irqvector == 0)
|
||||
logerror("You didn't call m72_init_sound()\n");
|
||||
|
||||
machine().device("soundcpu")->execute().set_input_line_and_vector(0, (m_irqvector == 0xff) ? CLEAR_LINE : ASSERT_LINE, m_irqvector);
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(m72_audio_device::ym2151_irq_handler)
|
||||
{
|
||||
machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), state ? YM2151_ASSERT : YM2151_CLEAR);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( m72_audio_device::sound_command_w )
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
driver_device *drvstate = space.machine().driver_data<driver_device>();
|
||||
drvstate->soundlatch_byte_w(*m_space, offset, data);
|
||||
space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_ASSERT);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::sound_command_byte_w )
|
||||
{
|
||||
driver_device *drvstate = space.machine().driver_data<driver_device>();
|
||||
drvstate->soundlatch_byte_w(*m_space, offset, data);
|
||||
space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_ASSERT);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::sound_irq_ack_w )
|
||||
{
|
||||
space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(m72_audio_device::setvector_callback), this), Z80_CLEAR);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void m72_audio_device::set_sample_start(int start)
|
||||
{
|
||||
m_sample_addr = start;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::vigilant_sample_addr_w )
|
||||
{
|
||||
if (offset == 1)
|
||||
m_sample_addr = (m_sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
m_sample_addr = (m_sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::shisen_sample_addr_w )
|
||||
{
|
||||
m_sample_addr >>= 2;
|
||||
|
||||
if (offset == 1)
|
||||
m_sample_addr = (m_sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
m_sample_addr = (m_sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
|
||||
m_sample_addr <<= 2;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::rtype2_sample_addr_w )
|
||||
{
|
||||
m_sample_addr >>= 5;
|
||||
|
||||
if (offset == 1)
|
||||
m_sample_addr = (m_sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
m_sample_addr = (m_sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
|
||||
m_sample_addr <<= 5;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::poundfor_sample_addr_w )
|
||||
{
|
||||
/* poundfor writes both sample start and sample END - a first for Irem...
|
||||
we don't handle the end written here, 00 marks the sample end as usual. */
|
||||
if (offset > 1) return;
|
||||
|
||||
m_sample_addr >>= 4;
|
||||
|
||||
if (offset == 1)
|
||||
m_sample_addr = (m_sample_addr & 0x00ff) | ((data << 8) & 0xff00);
|
||||
else
|
||||
m_sample_addr = (m_sample_addr & 0xff00) | ((data << 0) & 0x00ff);
|
||||
|
||||
m_sample_addr <<= 4;
|
||||
}
|
||||
|
||||
READ8_MEMBER( m72_audio_device::sample_r )
|
||||
{
|
||||
return m_samples[m_sample_addr];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( m72_audio_device::sample_w )
|
||||
{
|
||||
m_dac->write_signed8(data);
|
||||
m_sample_addr = (m_sample_addr + 1) & (m_samples_size - 1);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// sound_stream_update - handle a stream update
|
||||
//-------------------------------------------------
|
||||
|
||||
void m72_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");
|
||||
}
|
||||
|
@ -4,29 +4,39 @@
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
WRITE_LINE_DEVICE_HANDLER(m72_ym2151_irq_handler);
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( m72_sound_command_byte_w );
|
||||
DECLARE_WRITE16_DEVICE_HANDLER( m72_sound_command_w );
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( m72_sound_irq_ack_w );
|
||||
DECLARE_READ8_DEVICE_HANDLER( m72_sample_r );
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( m72_sample_w );
|
||||
|
||||
/* the port goes to different address bits depending on the game */
|
||||
void m72_set_sample_start(device_t *device, int start);
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( vigilant_sample_addr_w );
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( shisen_sample_addr_w );
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( rtype2_sample_addr_w );
|
||||
DECLARE_WRITE8_DEVICE_HANDLER( poundfor_sample_addr_w );
|
||||
#include "emu.h"
|
||||
#include "sound/dac.h"
|
||||
|
||||
class m72_audio_device : public device_t,
|
||||
public device_sound_interface
|
||||
{
|
||||
public:
|
||||
m72_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~m72_audio_device() { global_free(m_token); }
|
||||
~m72_audio_device() {}
|
||||
|
||||
enum
|
||||
{
|
||||
VECTOR_INIT,
|
||||
YM2151_ASSERT,
|
||||
YM2151_CLEAR,
|
||||
Z80_ASSERT,
|
||||
Z80_CLEAR
|
||||
};
|
||||
|
||||
WRITE_LINE_MEMBER( ym2151_irq_handler );
|
||||
DECLARE_WRITE8_MEMBER( sound_command_byte_w );
|
||||
DECLARE_WRITE16_MEMBER( sound_command_w );
|
||||
DECLARE_WRITE8_MEMBER(sound_irq_ack_w );
|
||||
DECLARE_READ8_MEMBER( sample_r );
|
||||
DECLARE_WRITE8_MEMBER( sample_w );
|
||||
|
||||
/* the port goes to different address bits depending on the game */
|
||||
void set_sample_start( int start );
|
||||
DECLARE_WRITE8_MEMBER( vigilant_sample_addr_w );
|
||||
DECLARE_WRITE8_MEMBER( shisen_sample_addr_w );
|
||||
DECLARE_WRITE8_MEMBER( rtype2_sample_addr_w );
|
||||
DECLARE_WRITE8_MEMBER( poundfor_sample_addr_w );
|
||||
|
||||
// access to legacy token
|
||||
void *token() const { assert(m_token != NULL); return m_token; }
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -35,9 +45,17 @@ 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_irqvector;
|
||||
UINT32 m_sample_addr;
|
||||
UINT8 *m_samples;
|
||||
UINT32 m_samples_size;
|
||||
address_space *m_space;
|
||||
dac_device *m_dac;
|
||||
|
||||
TIMER_CALLBACK_MEMBER( setvector_callback );
|
||||
};
|
||||
|
||||
extern const device_type M72;
|
||||
|
@ -85,8 +85,6 @@ other supported games as well.
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/nec/nec.h"
|
||||
#include "machine/irem_cpu.h"
|
||||
#include "audio/m72.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "includes/iremipt.h"
|
||||
#include "includes/m72.h"
|
||||
@ -104,7 +102,6 @@ other supported games as well.
|
||||
|
||||
MACHINE_START_MEMBER(m72_state,m72)
|
||||
{
|
||||
m_audio = machine().device("m72");
|
||||
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::m72_scanline_interrupt),this));
|
||||
|
||||
save_item(NAME(m_mcu_sample_addr));
|
||||
@ -433,46 +430,46 @@ int m72_state::find_sample(int num)
|
||||
INTERRUPT_GEN_MEMBER(m72_state::fake_nmi)
|
||||
{
|
||||
address_space &space = generic_space();
|
||||
int sample = m72_sample_r(m_audio,space,0);
|
||||
int sample = m_audio->sample_r(space,0);
|
||||
if (sample)
|
||||
m72_sample_w(m_audio,space,0,sample);
|
||||
m_audio->sample_w(space,0,sample);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(m72_state::bchopper_sample_trigger_w)
|
||||
{
|
||||
static const int a[6] = { 0x0000, 0x0010, 0x2510, 0x6510, 0x8510, 0x9310 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 6) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 6) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::nspirit_sample_trigger_w)
|
||||
{
|
||||
static const int a[9] = { 0x0000, 0x0020, 0x2020, 0, 0x5720, 0, 0x7b60, 0x9b60, 0xc360 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::imgfight_sample_trigger_w)
|
||||
{
|
||||
static const int a[7] = { 0x0000, 0x0020, 0x44e0, 0x98a0, 0xc820, 0xf7a0, 0x108c0 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 7) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 7) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::loht_sample_trigger_w)
|
||||
{
|
||||
static const int a[7] = { 0x0000, 0x0020, 0, 0x2c40, 0x4320, 0x7120, 0xb200 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 7) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 7) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::xmultiplm72_sample_trigger_w)
|
||||
{
|
||||
static const int a[3] = { 0x0000, 0x0020, 0x1a40 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 3) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 3) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::dbreedm72_sample_trigger_w)
|
||||
{
|
||||
static const int a[9] = { 0x00000, 0x00020, 0x02c40, 0x08160, 0x0c8c0, 0x0ffe0, 0x13000, 0x15820, 0x15f40 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::airduel_sample_trigger_w)
|
||||
@ -480,7 +477,7 @@ WRITE16_MEMBER(m72_state::airduel_sample_trigger_w)
|
||||
static const int a[16] = {
|
||||
0x00000, 0x00020, 0x03ec0, 0x05640, 0x06dc0, 0x083a0, 0x0c000, 0x0eb60,
|
||||
0x112e0, 0x13dc0, 0x16520, 0x16d60, 0x18ae0, 0x1a5a0, 0x1bf00, 0x1c340 };
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 16) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 16) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::dkgenm72_sample_trigger_w)
|
||||
@ -491,7 +488,7 @@ WRITE16_MEMBER(m72_state::dkgenm72_sample_trigger_w)
|
||||
0x10fa0, 0x10fc0, 0x10fe0, 0x11f40, 0x12b20, 0x130a0, 0x13c60, 0x14740,
|
||||
0x153c0, 0x197e0, 0x1af40, 0x1c080 };
|
||||
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 28) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 28) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(m72_state::gallop_sample_trigger_w)
|
||||
@ -502,7 +499,7 @@ WRITE16_MEMBER(m72_state::gallop_sample_trigger_w)
|
||||
0x10200, 0x10220, 0x10240, 0x11380, 0x12760, 0x12780, 0x127a0, 0x13c40,
|
||||
0x140a0, 0x16760, 0x17e40, 0x18ee0, 0x19f60, 0x1bbc0, 0x1cee0 };
|
||||
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 31) m72_set_sample_start(m_audio, a[data & 0xff]);
|
||||
if (ACCESSING_BITS_0_7 && (data & 0xff) < 31) m_audio->set_sample_start(a[data & 0xff]);
|
||||
}
|
||||
|
||||
|
||||
@ -948,7 +945,7 @@ static ADDRESS_MAP_START( m72_portmap, AS_IO, 16, m72_state )
|
||||
AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(m72_port02_w) /* coin counters, reset sound cpu, other stuff? */
|
||||
AM_RANGE(0x04, 0x05) AM_WRITE(m72_dmaon_w)
|
||||
AM_RANGE(0x06, 0x07) AM_WRITE(m72_irq_line_w)
|
||||
@ -964,7 +961,7 @@ static ADDRESS_MAP_START( rtype2_portmap, AS_IO, 16, m72_state )
|
||||
AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w)
|
||||
AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */
|
||||
AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w)
|
||||
@ -977,7 +974,7 @@ static ADDRESS_MAP_START( poundfor_portmap, AS_IO, 16, m72_state )
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x08, 0x0f) AM_READ(poundfor_trackball_r)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w)
|
||||
AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */
|
||||
AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w)
|
||||
@ -990,7 +987,7 @@ static ADDRESS_MAP_START( majtitle_portmap, AS_IO, 16, m72_state )
|
||||
AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w)
|
||||
AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */
|
||||
AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w)
|
||||
@ -1004,7 +1001,7 @@ static ADDRESS_MAP_START( hharry_portmap, AS_IO, 16, m72_state )
|
||||
AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w) /* coin counters, reset sound cpu, other stuff? */
|
||||
AM_RANGE(0x04, 0x05) AM_WRITE(m72_dmaon_w)
|
||||
AM_RANGE(0x06, 0x07) AM_WRITE(m72_irq_line_w)
|
||||
@ -1019,7 +1016,7 @@ static ADDRESS_MAP_START( kengo_portmap, AS_IO, 16, m72_state )
|
||||
AM_RANGE(0x00, 0x01) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w)
|
||||
AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w)
|
||||
AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w)
|
||||
@ -1042,36 +1039,36 @@ static ADDRESS_MAP_START( rtype_sound_portmap, AS_IO, 8, m72_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, m72_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( rtype2_sound_portmap, AS_IO, 8, m72_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", rtype2_sample_addr_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r)
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, rtype2_sample_addr_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
|
||||
// AM_RANGE(0x87, 0x87) AM_WRITENOP /* ??? */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( poundfor_sound_portmap, AS_IO, 8, m72_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x10, 0x13) AM_DEVWRITE_LEGACY("m72", poundfor_sample_addr_w)
|
||||
AM_RANGE(0x10, 0x13) AM_DEVWRITE("m72", m72_audio_device, poundfor_sample_addr_w)
|
||||
AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x42, 0x42) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x42, 0x42) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x42, 0x42) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, m72_state )
|
||||
@ -1818,7 +1815,7 @@ static MACHINE_CONFIG_START( m72_base, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -1873,7 +1870,7 @@ static MACHINE_CONFIG_START( rtype, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
@ -1910,7 +1907,7 @@ static MACHINE_CONFIG_START( xmultipl, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -1951,7 +1948,7 @@ static MACHINE_CONFIG_START( xmultiplm72, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -1992,7 +1989,7 @@ static MACHINE_CONFIG_START( dbreed, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2033,7 +2030,7 @@ static MACHINE_CONFIG_START( dbreedm72, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2074,7 +2071,7 @@ static MACHINE_CONFIG_START( rtype2, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2115,7 +2112,7 @@ static MACHINE_CONFIG_START( majtitle, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2156,7 +2153,7 @@ static MACHINE_CONFIG_START( hharry, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2197,7 +2194,7 @@ static MACHINE_CONFIG_START( hharryu, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2238,7 +2235,7 @@ static MACHINE_CONFIG_START( dkgenm72, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2279,7 +2276,7 @@ static MACHINE_CONFIG_START( poundfor, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
@ -2320,7 +2317,7 @@ static MACHINE_CONFIG_START( cosmccop, m72_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0);
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "cpu/nec/nec.h"
|
||||
#include "includes/iremipt.h"
|
||||
#include "machine/irem_cpu.h"
|
||||
#include "audio/m72.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "includes/m90.h"
|
||||
@ -31,7 +30,6 @@
|
||||
|
||||
void m90_state::machine_start()
|
||||
{
|
||||
m_audio = machine().device("m72");
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
@ -99,7 +97,7 @@ static ADDRESS_MAP_START( bomblord_main_cpu_map, AS_PROGRAM, 16, m90_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( m90_main_cpu_io_map, AS_IO, 16, m90_state )
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", m72_sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
|
||||
AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
|
||||
AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w)
|
||||
AM_RANGE(0x02, 0x03) AM_READ_PORT("SYSTEM")
|
||||
@ -131,10 +129,10 @@ static ADDRESS_MAP_START( m90_sound_cpu_io_map, AS_IO, 8, m90_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", rtype2_sample_addr_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r)
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, rtype2_sample_addr_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( dynablsb_sound_cpu_io_map, AS_IO, 8, m90_state )
|
||||
@ -146,10 +144,10 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( m99_sound_cpu_io_map, AS_IO, 8, m90_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("m72", poundfor_sample_addr_w)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, poundfor_sample_addr_w)
|
||||
AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x42, 0x42) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x42, 0x42) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x42, 0x42) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -669,17 +667,17 @@ GFXDECODE_END
|
||||
INTERRUPT_GEN_MEMBER(m90_state::fake_nmi)
|
||||
{
|
||||
address_space &space = machine().firstcpu->space(AS_PROGRAM);
|
||||
int sample = m72_sample_r(m_audio,space,0);
|
||||
int sample = m_audio->sample_r(space,0);
|
||||
if (sample)
|
||||
m72_sample_w(m_audio,space,0,sample);
|
||||
m_audio->sample_w(space,0,sample);
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(m90_state::bomblord_fake_nmi)
|
||||
{
|
||||
address_space &space = machine().firstcpu->space(AS_PROGRAM);
|
||||
int sample = m72_sample_r(m_audio,space,0);
|
||||
int sample = m_audio->sample_r(space,0);
|
||||
if (sample != 0x80)
|
||||
m72_sample_w(m_audio,space,0,sample);
|
||||
m_audio->sample_w(space,0,sample);
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(m90_state::m90_interrupt)
|
||||
@ -731,7 +729,7 @@ static MACHINE_CONFIG_START( m90, m90_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0)
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.15)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.15)
|
||||
|
||||
|
@ -8,7 +8,6 @@ driver by Nicola Salmoria
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "audio/m72.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "includes/shisen.h"
|
||||
@ -53,7 +52,7 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( shisen_io_map, AS_IO, 8, shisen_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READWRITE(sichuan2_dsw1_r, sichuan2_coin_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_DEVWRITE_LEGACY("m72", m72_sound_command_byte_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_DEVWRITE("m72", m72_audio_device, sound_command_byte_w)
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE(sichuan2_bankswitch_w)
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("P2")
|
||||
AM_RANGE(0x04, 0x04) AM_READ_PORT("COIN")
|
||||
@ -68,10 +67,10 @@ static ADDRESS_MAP_START( shisen_sound_io_map, AS_IO, 8, shisen_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r)
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", shisen_sample_addr_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w)
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r)
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, shisen_sample_addr_w)
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w)
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w)
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -233,7 +232,7 @@ static MACHINE_CONFIG_START( shisen, shisen_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0)
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", 3579545)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.5)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.5)
|
||||
|
||||
|
@ -16,7 +16,6 @@ Buccaneers has a 5.6888 Mhz and a 18.432 Mhz OSC
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "audio/m72.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/2203intf.h"
|
||||
#include "sound/2151intf.h"
|
||||
@ -72,7 +71,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( vigilant_io_map, AS_IO, 8, vigilant_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE_LEGACY("m72", m72_sound_command_byte_w) /* SD */
|
||||
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("m72", m72_audio_device, sound_command_byte_w) /* SD */
|
||||
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(vigilant_out2_w) /* OUT2 */
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
|
||||
@ -98,7 +97,7 @@ static ADDRESS_MAP_START( kikcubic_io_map, AS_IO, 8, vigilant_state )
|
||||
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(vigilant_bank_select_w)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("m72", m72_sound_command_byte_w)
|
||||
AM_RANGE(0x06, 0x06) AM_DEVWRITE("m72", m72_audio_device, sound_command_byte_w)
|
||||
// AM_RANGE(0x07, 0x07) AM_WRITENOP /* ?? */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -110,10 +109,10 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, vigilant_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
|
||||
AM_RANGE(0x80, 0x81) AM_READ(soundlatch_byte_r) AM_DEVWRITE_LEGACY("m72", vigilant_sample_addr_w) /* STL / STH */
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) /* COUNT UP */
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) /* IRQ clear */
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r) /* S ROM C */
|
||||
AM_RANGE(0x80, 0x81) AM_READ(soundlatch_byte_r) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w) /* IRQ clear */
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( buccanrs_sound_io_map, AS_IO, 8, vigilant_state )
|
||||
@ -121,10 +120,10 @@ static ADDRESS_MAP_START( buccanrs_sound_io_map, AS_IO, 8, vigilant_state )
|
||||
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
|
||||
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
|
||||
AM_RANGE(0x80, 0x80) AM_READ(soundlatch_byte_r) /* SDRE */
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE_LEGACY("m72", vigilant_sample_addr_w) /* STL / STH */
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE_LEGACY("m72", m72_sample_w) /* COUNT UP */
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE_LEGACY("m72", m72_sound_irq_ack_w) /* IRQ clear */
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD_LEGACY("m72", m72_sample_r) /* S ROM C */
|
||||
AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */
|
||||
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */
|
||||
AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w) /* IRQ clear */
|
||||
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -500,7 +499,7 @@ static MACHINE_CONFIG_START( vigilant, vigilant_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0)
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", 3579645)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
|
||||
|
||||
@ -540,7 +539,7 @@ static MACHINE_CONFIG_START( buccanrs, vigilant_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0)
|
||||
|
||||
MCFG_SOUND_ADD("ym1", YM2203, 18432000/6)
|
||||
MCFG_YM2203_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_YM2203_AY8910_INTF(&ay8910_config)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
|
||||
MCFG_SOUND_ROUTE(0, "rspeaker", 0.35)
|
||||
@ -597,7 +596,7 @@ static MACHINE_CONFIG_START( kikcubic, vigilant_state )
|
||||
MCFG_SOUND_ADD("m72", M72, 0)
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", 3579645)
|
||||
MCFG_YM2151_IRQ_HANDLER(WRITELINE(driver_device, member_wrapper_line<m72_ym2151_irq_handler>))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
Irem M72 hardware
|
||||
|
||||
*************************************************************************/
|
||||
#include "audio/m72.h"
|
||||
#include "sound/dac.h"
|
||||
|
||||
class m72_state : public driver_device
|
||||
@ -19,7 +20,8 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_soundcpu(*this, "soundcpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_dac(*this, "dac") { }
|
||||
m_dac(*this, "dac"),
|
||||
m_audio(*this, "m72") { }
|
||||
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
required_shared_ptr<UINT16> m_videoram1;
|
||||
@ -27,6 +29,12 @@ public:
|
||||
optional_shared_ptr<UINT16> m_majtitle_rowscrollram;
|
||||
optional_shared_ptr<UINT16> m_spriteram2;
|
||||
optional_shared_ptr<UINT8> m_soundram;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<dac_device> m_dac;
|
||||
optional_device<m72_audio_device> m_audio;
|
||||
|
||||
UINT16 *m_protection_ram;
|
||||
emu_timer *m_scanline_timer;
|
||||
@ -48,7 +56,6 @@ public:
|
||||
INT32 m_scrolly2;
|
||||
INT32 m_video_off;
|
||||
int m_majtitle_rowscroll;
|
||||
device_t *m_audio;
|
||||
DECLARE_WRITE16_MEMBER(m72_main_mcu_sound_w);
|
||||
DECLARE_WRITE16_MEMBER(m72_main_mcu_w);
|
||||
DECLARE_WRITE8_MEMBER(m72_mcu_data_w);
|
||||
@ -137,8 +144,4 @@ public:
|
||||
int find_sample(int num);
|
||||
void copy_le(UINT16 *dest, const UINT8 *src, UINT8 bytes);
|
||||
void install_protection_handler(const UINT8 *code,const UINT8 *crc);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<dac_device> m_dac;
|
||||
};
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include "audio/m72.h"
|
||||
|
||||
class m90_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -6,10 +8,16 @@ public:
|
||||
m_video_data(*this, "video_data"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_soundcpu(*this, "soundcpu") { }
|
||||
m_soundcpu(*this, "soundcpu"),
|
||||
m_audio(*this, "m72") { }
|
||||
|
||||
required_shared_ptr<UINT16> m_video_data;
|
||||
optional_shared_ptr<UINT16> m_spriteram;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
optional_device<m72_audio_device> m_audio;
|
||||
|
||||
UINT16 m_video_control_data[8];
|
||||
tilemap_t *m_pf1_layer;
|
||||
tilemap_t *m_pf2_layer;
|
||||
@ -17,7 +25,6 @@ public:
|
||||
tilemap_t *m_pf2_wide_layer;
|
||||
UINT8 m_last_pf1;
|
||||
UINT8 m_last_pf2;
|
||||
device_t *m_audio;
|
||||
DECLARE_WRITE16_MEMBER(m90_coincounter_w);
|
||||
DECLARE_WRITE16_MEMBER(quizf1_bankswitch_w);
|
||||
DECLARE_WRITE16_MEMBER(dynablsb_sound_command_w);
|
||||
@ -57,6 +64,4 @@ public:
|
||||
void bomblord_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void dynablsb_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
void markdirty(tilemap_t *tmap,int page,offs_t offset);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
};
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include "audio/m72.h"
|
||||
|
||||
class shisen_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -5,12 +7,17 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_paletteram(*this, "paletteram"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_maincpu(*this, "maincpu") { }
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audio (*this, "m72") { }
|
||||
|
||||
int m_gfxbank;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
required_shared_ptr<UINT8> m_paletteram;
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<m72_audio_device> m_audio;
|
||||
|
||||
int m_gfxbank;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
DECLARE_READ8_MEMBER(sichuan2_dsw1_r);
|
||||
DECLARE_WRITE8_MEMBER(sichuan2_coin_w);
|
||||
DECLARE_WRITE8_MEMBER(sichuan2_videoram_w);
|
||||
@ -19,5 +26,4 @@ public:
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_sichuan2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include "audio/m72.h"
|
||||
|
||||
class vigilant_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -5,10 +7,15 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_maincpu(*this, "maincpu") { }
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audio(*this, "m72") { }
|
||||
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<m72_audio_device> m_audio;
|
||||
|
||||
int m_horiz_scroll_low;
|
||||
int m_horiz_scroll_high;
|
||||
int m_rear_horiz_scroll_low;
|
||||
@ -33,5 +40,4 @@ public:
|
||||
void draw_foreground(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int opaque );
|
||||
void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
@ -1,5 +1,4 @@
|
||||
#include "emu.h"
|
||||
#include "audio/m72.h"
|
||||
#include "includes/m72.h"
|
||||
|
||||
/***************************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user