modernized the MB14241 and MathBox devices. [Osso]

This commit is contained in:
Fabio Priuli 2013-05-31 05:59:35 +00:00
parent c43cc8f12f
commit 2840892ced
17 changed files with 372 additions and 478 deletions

1
.gitattributes vendored
View File

@ -2610,6 +2610,7 @@ src/mame/audio/pulsar.c svneol=native#text/plain
src/mame/audio/qix.c svneol=native#text/plain
src/mame/audio/redalert.c svneol=native#text/plain
src/mame/audio/redbaron.c svneol=native#text/plain
src/mame/audio/redbaron.h svneol=native#text/plain
src/mame/audio/scramble.c svneol=native#text/plain
src/mame/audio/segag80r.c svneol=native#text/plain
src/mame/audio/segag80v.c svneol=native#text/plain

View File

@ -7,72 +7,17 @@
#include "emu.h"
#include "machine/mb14241.h"
struct mb14241_state
{
UINT16 shift_data; /* 15 bits only */
UINT8 shift_count; /* 3 bits */
};
/*****************************************************************************
INLINE FUNCTIONS
*****************************************************************************/
//-------------------------------------------------
// mb14241_device - constructor
//-------------------------------------------------
INLINE mb14241_state *get_safe_token( device_t *device )
{
assert(device != NULL);
assert(device->type() == MB14241);
return (mb14241_state *)downcast<mb14241_device *>(device)->token();
}
/*****************************************************************************
IMPLEMENTATION
*****************************************************************************/
WRITE8_DEVICE_HANDLER( mb14241_shift_count_w )
{
mb14241_state *mb14241 = get_safe_token(device);
mb14241->shift_count = ~data & 0x07;
}
WRITE8_DEVICE_HANDLER( mb14241_shift_data_w )
{
mb14241_state *mb14241 = get_safe_token(device);
mb14241->shift_data = (mb14241->shift_data >> 8) | ((UINT16)data << 7);
}
READ8_DEVICE_HANDLER( mb14241_shift_result_r )
{
mb14241_state *mb14241 = get_safe_token(device);
return mb14241->shift_data >> mb14241->shift_count;
}
/*****************************************************************************
DEVICE INTERFACE
*****************************************************************************/
static DEVICE_START( mb14241 )
{
mb14241_state *mb14241 = get_safe_token(device);
device->save_item(NAME(mb14241->shift_data));
device->save_item(NAME(mb14241->shift_count));
}
static DEVICE_RESET( mb14241 )
{
mb14241_state *mb14241 = get_safe_token(device);
mb14241->shift_data = 0;
mb14241->shift_count = 0;
}
const device_type MB14241 = &device_creator<mb14241_device>;
mb14241_device::mb14241_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MB14241, "MB14241", tag, owner, clock)
{
m_token = global_alloc_clear(mb14241_state);
}
//-------------------------------------------------
@ -91,7 +36,8 @@ void mb14241_device::device_config_complete()
void mb14241_device::device_start()
{
DEVICE_START_NAME( mb14241 )(this);
save_item(NAME(m_shift_data));
save_item(NAME(m_shift_count));
}
//-------------------------------------------------
@ -100,5 +46,26 @@ void mb14241_device::device_start()
void mb14241_device::device_reset()
{
DEVICE_RESET_NAME( mb14241 )(this);
m_shift_data = 0;
m_shift_count = 0;
}
/*****************************************************************************
IMPLEMENTATION
*****************************************************************************/
WRITE8_MEMBER( mb14241_device::shift_count_w )
{
m_shift_count = ~data & 0x07;
}
WRITE8_MEMBER( mb14241_device::shift_data_w )
{
m_shift_data = (m_shift_data >> 8) | ((UINT16)data << 7);
}
READ8_MEMBER( mb14241_device::shift_result_r )
{
return m_shift_data >> m_shift_count;
}

View File

@ -7,25 +7,27 @@
#ifndef __MB14241_H__
#define __MB14241_H__
#include "devlegcy.h"
class mb14241_device : public device_t
{
public:
mb14241_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~mb14241_device() { global_free(m_token); }
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
DECLARE_WRITE8_MEMBER ( shift_count_w );
DECLARE_WRITE8_MEMBER ( shift_data_w );
DECLARE_READ8_MEMBER( shift_result_r );
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
private:
// internal state
void *m_token;
UINT16 m_shift_data; /* 15 bits only */
UINT8 m_shift_count; /* 3 bits */
};
extern const device_type MB14241;
@ -38,14 +40,4 @@ extern const device_type MB14241;
#define MCFG_MB14241_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, MB14241, 0)
/***************************************************************************
DEVICE I/O FUNCTIONS
***************************************************************************/
DECLARE_WRITE8_DEVICE_HANDLER ( mb14241_shift_count_w );
DECLARE_WRITE8_DEVICE_HANDLER ( mb14241_shift_data_w );
DECLARE_READ8_DEVICE_HANDLER( mb14241_shift_result_r );
#endif /* __MB14241_H__ */

View File

@ -9,8 +9,6 @@
#ifndef __UPD4701_H__
#define __UPD4701_H__
#include "devlegcy.h"
/***************************************************************************
MACROS / CONSTANTS
***************************************************************************/

View File

@ -214,7 +214,7 @@ void redbaron_sound_device::sound_stream_update(sound_stream &stream, stream_sam
}
WRITE8_MEMBER( redbaron_sound_device::redbaron_sounds_w )
WRITE8_MEMBER( redbaron_sound_device::sounds_w )
{
/* If sound is off, don't bother playing samples */
if( data == m_latch )
@ -226,7 +226,7 @@ WRITE8_MEMBER( redbaron_sound_device::redbaron_sounds_w )
#ifdef UNUSED_FUNCTION
WRITE8_MEMBER( redbaron_sound_device::redbaron_pokey_w )
WRITE8_MEMBER( redbaron_sound_device::pokey_w )
{
if( m_latch & 0x20 )
pokey_w(device, offset, data);

45
src/mame/audio/redbaron.h Normal file
View File

@ -0,0 +1,45 @@
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> redbaron_sound_device
class redbaron_sound_device : public device_t,
public device_sound_interface
{
public:
redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
DECLARE_WRITE8_MEMBER( sounds_w );
protected:
// device-level overrides
virtual void device_start();
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
private:
INT16 *m_vol_lookup;
INT16 m_vol_crash[16];
sound_stream *m_channel;
int m_latch;
int m_poly_counter;
int m_poly_shift;
int m_filter_counter;
int m_crash_amp;
int m_shot_amp;
int m_shot_amp_counter;
int m_squeal_amp;
int m_squeal_amp_counter;
int m_squeal_off_counter;
int m_squeal_on_counter;
int m_squeal_out;
};
extern const device_type REDBARON;

View File

@ -175,7 +175,6 @@
#include "emu.h"
#include "cpu/m6800/m6800.h"
#include "cpu/i8085/i8085.h"
#include "machine/mb14241.h"
#include "machine/eeprom.h"
#include "sound/ay8910.h"
#include "sound/speaker.h"
@ -350,9 +349,9 @@ INPUT_PORTS_END
static ADDRESS_MAP_START( invadpt2_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -416,9 +415,9 @@ MACHINE_CONFIG_END
static ADDRESS_MAP_START( spacerng_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(spacerng_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -441,9 +440,9 @@ MACHINE_CONFIG_END
static ADDRESS_MAP_START( spcewars_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(spcewars_sh_port_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(spcewars_sh_port_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
ADDRESS_MAP_END
@ -794,9 +793,9 @@ READ8_MEMBER(_8080bw_state::invrvnge_02_r)
static ADDRESS_MAP_START( invrvnge_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(invrvnge_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invrvnge_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invrvnge_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -1003,9 +1002,9 @@ MACHINE_CONFIG_END
static ADDRESS_MAP_START( lrescue_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(lrescue_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(lrescue_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(lrescue_sh_port_2_w)
ADDRESS_MAP_END
@ -1101,11 +1100,11 @@ static ADDRESS_MAP_START( cosmicmo_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ(invrvnge_02_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(cosmicmo_05_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -1207,9 +1206,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( rollingc_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(rollingc_sh_port_w)
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
ADDRESS_MAP_END
@ -1266,9 +1265,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( schaser_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(schaser_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schaser_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(schaser_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -1390,9 +1389,9 @@ READ8_MEMBER(_8080bw_state::schasercv_02_r)
static ADDRESS_MAP_START( schasercv_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ(schasercv_02_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(schasercv_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ(schasercv_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schasercv_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(schasercv_sh_port_2_w)
ADDRESS_MAP_END
@ -1475,11 +1474,11 @@ static ADDRESS_MAP_START( sflush_map, AS_PROGRAM, 8, _8080bw_state )
AM_RANGE(0x0000, 0x1fff) AM_RAM
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_SHARE("main_ram")
AM_RANGE(0x8008, 0x8008) AM_READ_PORT("PADDLE")
AM_RANGE(0x8009, 0x8009) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x8009, 0x8009) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x800a, 0x800a) AM_READ_PORT("IN2")
AM_RANGE(0x800b, 0x800b) AM_READ_PORT("IN0")
AM_RANGE(0x8018, 0x8018) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x8019, 0x8019) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x8018, 0x8018) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x8019, 0x8019) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x801a, 0x801a) AM_WRITENOP
AM_RANGE(0x801c, 0x801c) AM_WRITENOP
AM_RANGE(0x801d, 0x801d) AM_WRITENOP
@ -1555,9 +1554,9 @@ MACHINE_CONFIG_END
static ADDRESS_MAP_START( lupin3_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(lupin3_00_w)
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(lupin3_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(lupin3_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(lupin3_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -1717,10 +1716,10 @@ READ8_MEMBER(_8080bw_state::polaris_port00_r)
// It sounds better then the actual circuit used.
// Probably an unfinished feature.
static ADDRESS_MAP_START( polaris_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ(polaris_port00_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x00, 0x00) AM_READ(polaris_port00_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(polaris_sh_port_1_w)
AM_RANGE(0x03, 0x03) AM_DEVREADWRITE_LEGACY("mb14241", mb14241_shift_result_r, mb14241_shift_data_w)
AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("mb14241", mb14241_device, shift_result_r, shift_data_w)
AM_RANGE(0x04, 0x04) AM_WRITE(polaris_sh_port_2_w)
AM_RANGE(0x05, 0x05) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x06, 0x06) AM_WRITE(polaris_sh_port_3_w)
@ -1890,9 +1889,9 @@ INPUT_PORTS_END
static ADDRESS_MAP_START( ballbomb_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(ballbomb_01_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(ballbomb_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(ballbomb_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(ballbomb_sh_port_2_w)
ADDRESS_MAP_END
@ -2129,9 +2128,9 @@ READ8_MEMBER(_8080bw_state::indianbtbr_01_r)
static ADDRESS_MAP_START( indianbt_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ(indianbt_r)
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(indianbt_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(indianbt_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(indianbt_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x07, 0x07) AM_WRITE(indianbt_sh_port_3_w)
@ -2140,9 +2139,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( indianbtbr_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ(indianbtbr_01_r)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(indianbtbr_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(indianbtbr_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(indianbtbr_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x07, 0x07) AM_WRITENOP
@ -2205,9 +2204,9 @@ WRITE8_MEMBER(_8080bw_state::steelwkr_sh_port_3_w)
static ADDRESS_MAP_START( steelwkr_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ(invrvnge_02_r) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invadpt2_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(steelwkr_sh_port_3_w)
ADDRESS_MAP_END
@ -2575,11 +2574,11 @@ static ADDRESS_MAP_START( vortex_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x00, 0x00) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x00, 0x00) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x01, 0x01) AM_WRITE(invaders_audio_1_w)
AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x06, 0x06) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x07, 0x07) AM_WRITE(invaders_audio_2_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -2858,9 +2857,9 @@ READ8_MEMBER(_8080bw_state::claybust_gun_hi_r)
static ADDRESS_MAP_START( claybust_io_map, AS_IO, 8, _8080bw_state )
//AM_RANGE(0x00, 0x00) AM_WRITENOP // ?
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_READ(claybust_gun_lo_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) //AM_WRITENOP // port3 write looks sound-related
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_READ(claybust_gun_lo_r) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) //AM_WRITENOP // port3 write looks sound-related
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
//AM_RANGE(0x05, 0x05) AM_WRITENOP // ?
AM_RANGE(0x06, 0x06) AM_READ(claybust_gun_hi_r)
@ -2950,9 +2949,9 @@ TODO sound to be verified.
static ADDRESS_MAP_START( galactic_io_map, AS_IO, 8, _8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_WRITE(galactic_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(galactic_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(galactic_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x07, 0x07) AM_WRITE(galactic_07_w)

View File

@ -208,7 +208,6 @@
#include "cpu/m6502/m6502.h"
#include "video/vector.h"
#include "video/avgdvg.h"
#include "machine/mathbox.h"
#include "machine/atari_vg.h"
#include "includes/bzone.h"
#include "sound/pokey.h"
@ -283,9 +282,8 @@ READ8_MEMBER(bzone_state::redbaron_joy_r)
WRITE8_MEMBER(bzone_state::redbaron_joysound_w)
{
redbaron_sound_device *device = machine().device<redbaron_sound_device>("custom");
m_rb_input_select = data & 1;
device->redbaron_sounds_w(space, offset, data);
m_redbaronsound->sounds_w(space, offset, data);
}
@ -306,12 +304,12 @@ static ADDRESS_MAP_START( bzone_map, AS_PROGRAM, 8, bzone_state )
AM_RANGE(0x1200, 0x1200) AM_WRITE_LEGACY(avgdvg_go_w)
AM_RANGE(0x1400, 0x1400) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x1600, 0x1600) AM_WRITE_LEGACY(avgdvg_reset_w)
AM_RANGE(0x1800, 0x1800) AM_DEVREAD_LEGACY("mathbox", mathbox_status_r)
AM_RANGE(0x1810, 0x1810) AM_DEVREAD_LEGACY("mathbox", mathbox_lo_r)
AM_RANGE(0x1818, 0x1818) AM_DEVREAD_LEGACY("mathbox", mathbox_hi_r)
AM_RANGE(0x1800, 0x1800) AM_DEVREAD("mathbox", mathbox_device, status_r)
AM_RANGE(0x1810, 0x1810) AM_DEVREAD("mathbox", mathbox_device, lo_r)
AM_RANGE(0x1818, 0x1818) AM_DEVREAD("mathbox", mathbox_device, hi_r)
AM_RANGE(0x1820, 0x182f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
AM_RANGE(0x1840, 0x1840) AM_WRITE(bzone_sounds_w)
AM_RANGE(0x1860, 0x187f) AM_DEVWRITE_LEGACY("mathbox", mathbox_go_w)
AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
AM_RANGE(0x3000, 0x7fff) AM_ROM
ADDRESS_MAP_END
@ -326,16 +324,16 @@ static ADDRESS_MAP_START( redbaron_map, AS_PROGRAM, 8, bzone_state )
AM_RANGE(0x1200, 0x1200) AM_WRITE_LEGACY(avgdvg_go_w)
AM_RANGE(0x1400, 0x1400) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x1600, 0x1600) AM_WRITE_LEGACY(avgdvg_reset_w)
AM_RANGE(0x1800, 0x1800) AM_DEVREAD_LEGACY("mathbox", mathbox_status_r)
AM_RANGE(0x1800, 0x1800) AM_DEVREAD("mathbox", mathbox_device, status_r)
AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN4")
AM_RANGE(0x1804, 0x1804) AM_DEVREAD_LEGACY("mathbox", mathbox_lo_r)
AM_RANGE(0x1806, 0x1806) AM_DEVREAD_LEGACY("mathbox", mathbox_hi_r)
AM_RANGE(0x1804, 0x1804) AM_DEVREAD("mathbox", mathbox_device, lo_r)
AM_RANGE(0x1806, 0x1806) AM_DEVREAD("mathbox", mathbox_device, hi_r)
AM_RANGE(0x1808, 0x1808) AM_WRITE(redbaron_joysound_w) /* and select joystick pot also */
AM_RANGE(0x180a, 0x180a) AM_WRITENOP /* sound reset, yet todo */
AM_RANGE(0x180c, 0x180c) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("pokey", pokey_device, read, write)
AM_RANGE(0x1820, 0x185f) AM_DEVREADWRITE("earom", atari_vg_earom_device, read, write)
AM_RANGE(0x1860, 0x187f) AM_DEVWRITE_LEGACY("mathbox", mathbox_go_w)
AM_RANGE(0x1860, 0x187f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000)
AM_RANGE(0x3000, 0x7fff) AM_ROM
ADDRESS_MAP_END

View File

@ -18,7 +18,6 @@ Differences between these sets include
#include "emu.h"
#include "cpu/m6800/m6800.h"
#include "machine/mb14241.h"
#include "includes/fgoal.h"
@ -147,13 +146,13 @@ READ8_MEMBER(fgoal_state::fgoal_row_r)
WRITE8_MEMBER(fgoal_state::fgoal_row_w)
{
m_row = data;
mb14241_shift_data_w(m_mb14241, space, 0, 0);
m_mb14241->shift_data_w(space, 0, 0);
}
WRITE8_MEMBER(fgoal_state::fgoal_col_w)
{
m_col = data;
mb14241_shift_count_w(m_mb14241, space, 0, data);
m_mb14241->shift_count_w(space, 0, data);
}
READ8_MEMBER(fgoal_state::fgoal_address_hi_r)
@ -168,14 +167,14 @@ READ8_MEMBER(fgoal_state::fgoal_address_lo_r)
READ8_MEMBER(fgoal_state::fgoal_shifter_r)
{
UINT8 v = mb14241_shift_result_r(m_mb14241, space, 0);
UINT8 v = m_mb14241->shift_result_r(space, 0);
return BITSWAP8(v, 7, 6, 5, 4, 3, 2, 1, 0);
}
READ8_MEMBER(fgoal_state::fgoal_shifter_reverse_r)
{
UINT8 v = mb14241_shift_result_r(m_mb14241, space, 0);
UINT8 v = m_mb14241->shift_result_r(space, 0);
return BITSWAP8(v, 0, 1, 2, 3, 4, 5, 6, 7);
}
@ -225,7 +224,7 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, fgoal_state )
AM_RANGE(0x00f1, 0x00f1) AM_WRITE(fgoal_col_w)
AM_RANGE(0x00f2, 0x00f2) AM_WRITE(fgoal_row_w)
AM_RANGE(0x00f3, 0x00f3) AM_WRITE(fgoal_col_w)
AM_RANGE(0x00f4, 0x00f7) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x00f4, 0x00f7) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x00f8, 0x00fb) AM_WRITE(fgoal_sound1_w)
AM_RANGE(0x00fc, 0x00ff) AM_WRITE(fgoal_sound2_w)
@ -339,8 +338,6 @@ GFXDECODE_END
void fgoal_state::machine_start()
{
m_mb14241 = machine().device("mb14241");
save_item(NAME(m_xpos));
save_item(NAME(m_ypos));
save_item(NAME(m_current_color));

View File

@ -148,7 +148,6 @@
#include "emu.h"
#include "cpu/i8085/i8085.h"
#include "machine/rescap.h"
#include "machine/mb14241.h"
#include "includes/mw8080bw.h"
#include "280zzzap.lh"
@ -173,7 +172,7 @@
READ8_MEMBER(mw8080bw_state::mw8080bw_shift_result_rev_r)
{
UINT8 ret = mb14241_shift_result_r(m_mb14241, space, 0);
UINT8 ret = m_mb14241->shift_result_r(space, 0);
return BITSWAP8(ret,0,1,2,3,4,5,6,7);
}
@ -189,7 +188,7 @@ READ8_MEMBER(mw8080bw_state::mw8080bw_reversable_shift_result_r)
}
else
{
ret = mb14241_shift_result_r(m_mb14241, space, 0);
ret = m_mb14241->shift_result_r(space, 0);
}
return ret;
@ -197,7 +196,7 @@ READ8_MEMBER(mw8080bw_state::mw8080bw_reversable_shift_result_r)
WRITE8_MEMBER(mw8080bw_state::mw8080bw_reversable_shift_count_w)
{
mb14241_shift_count_w(m_mb14241, space, offset, data);
m_mb14241->shift_count_w(space, offset, data);
m_rev_shift_res = data & 0x08;
}
@ -331,12 +330,12 @@ static ADDRESS_MAP_START( seawolf_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_WRITE(seawolf_explosion_lamp_w)
AM_RANGE(0x02, 0x02) AM_WRITE(seawolf_periscope_lamp_w)
AM_RANGE(0x03, 0x03) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x05, 0x05) AM_WRITE(seawolf_audio_w)
ADDRESS_MAP_END
@ -430,10 +429,10 @@ WRITE8_MEMBER(mw8080bw_state::gunfight_io_w)
gunfight_audio_w(space, 0, data);
if (offset & 0x02)
mb14241_shift_count_w(m_mb14241, space, 0, data);
m_mb14241->shift_count_w(space, 0, data);
if (offset & 0x04)
mb14241_shift_data_w(m_mb14241, space, 0, data);
m_mb14241->shift_data_w(space, 0, data);
}
@ -443,7 +442,7 @@ static ADDRESS_MAP_START( gunfight_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
/* no decoder, just 3 AND gates */
AM_RANGE(0x00, 0x07) AM_WRITE(gunfight_io_w)
@ -625,10 +624,10 @@ WRITE8_MEMBER(mw8080bw_state::tornbase_io_w)
tornbase_audio_w(space, 0, data);
if (offset & 0x02)
mb14241_shift_count_w(m_mb14241, space, 0, data);
m_mb14241->shift_count_w(space, 0, data);
if (offset & 0x04)
mb14241_shift_data_w(m_mb14241, space, 0, data);
m_mb14241->shift_data_w(space, 0, data);
}
@ -637,7 +636,7 @@ static ADDRESS_MAP_START( tornbase_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
/* no decoder, just 3 AND gates */
AM_RANGE(0x00, 0x07) AM_WRITE(tornbase_io_w)
@ -757,11 +756,11 @@ static ADDRESS_MAP_START( zzzap_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x02, 0x02) AM_WRITE(zzzap_audio_1_w)
AM_RANGE(0x03, 0x03) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x05, 0x05) AM_WRITE(zzzap_audio_2_w)
AM_RANGE(0x07, 0x07) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -983,7 +982,7 @@ static ADDRESS_MAP_START( boothill_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r)
AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(boothill_audio_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
@ -1204,10 +1203,10 @@ static ADDRESS_MAP_START( desertgu_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(desertgu_audio_1_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
@ -1326,10 +1325,10 @@ static ADDRESS_MAP_START( dplay_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(dplay_audio_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
@ -1505,7 +1504,7 @@ static ADDRESS_MAP_START( gmissile_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r)
AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(gmissile_audio_1_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(gmissile_audio_2_w)
@ -1599,7 +1598,7 @@ static ADDRESS_MAP_START( m4_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r)
AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(m4_audio_1_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(m4_audio_2_w)
@ -1709,10 +1708,10 @@ static ADDRESS_MAP_START( clowns_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(clowns_audio_1_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
@ -1847,10 +1846,10 @@ static ADDRESS_MAP_START( spacwalk_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(spacwalk_audio_1_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
@ -1937,15 +1936,15 @@ MACHINE_CONFIG_END
static ADDRESS_MAP_START( shuffle_io_map, AS_IO, 8, mw8080bw_state )
ADDRESS_MAP_GLOBAL_MASK(0xf) /* yes, 4, and no mirroring on the read handlers */
AM_RANGE(0x01, 0x01) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r)
AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1")
AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2")
AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x08) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_MIRROR(0x08) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_1_w)
AM_RANGE(0x06, 0x06) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_2_w)
@ -2020,10 +2019,10 @@ static ADDRESS_MAP_START( dogpatch_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(dogpatch_audio_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w)
@ -2281,10 +2280,10 @@ static ADDRESS_MAP_START( phantom2_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(phantom2_audio_1_w)
AM_RANGE(0x06, 0x06) AM_WRITE(phantom2_audio_2_w)
@ -2362,7 +2361,7 @@ READ8_MEMBER(mw8080bw_state::bowler_shift_result_r)
anything unusual on the schematics that would cause
the bits to flip */
return ~mb14241_shift_result_r(m_mb14241, space, 0);
return ~m_mb14241->shift_result_r(space, 0);
}
WRITE8_MEMBER(mw8080bw_state::bowler_lights_1_w)
@ -2410,8 +2409,8 @@ static ADDRESS_MAP_START( bowler_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2")
AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3")
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x05, 0x05) AM_WRITE(bowler_audio_1_w)
AM_RANGE(0x06, 0x06) AM_WRITE(bowler_audio_2_w)
@ -2590,11 +2589,11 @@ static ADDRESS_MAP_START( invaders_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invaders_audio_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -2721,10 +2720,10 @@ static ADDRESS_MAP_START( blueshrk_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r)
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(blueshrk_audio_w)
AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
@ -2801,12 +2800,12 @@ static ADDRESS_MAP_START( invad2ct_io_map, AS_IO, 8, mw8080bw_state )
AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0")
AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1")
AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r)
AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r)
AM_RANGE(0x01, 0x01) AM_WRITE(invad2ct_audio_3_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w)
AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w)
AM_RANGE(0x03, 0x03) AM_WRITE(invad2ct_audio_1_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(invad2ct_audio_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x07, 0x07) AM_WRITE(invad2ct_audio_4_w)

View File

@ -287,7 +287,11 @@ class tempest_state : public driver_device
public:
tempest_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu") { }
m_maincpu(*this, "maincpu"),
m_mathbox(*this, "mathbox") { }
required_device<cpu_device> m_maincpu;
required_device<mathbox_device> m_mathbox;
UINT8 m_player_select;
DECLARE_WRITE8_MEMBER(wdclr_w);
@ -299,7 +303,6 @@ public:
DECLARE_READ8_MEMBER(input_port_1_bit_r);
DECLARE_READ8_MEMBER(input_port_2_bit_r);
virtual void machine_start();
required_device<cpu_device> m_maincpu;
};
@ -412,11 +415,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tempest_state )
AM_RANGE(0x5000, 0x5000) AM_WRITE(wdclr_w)
AM_RANGE(0x5800, 0x5800) AM_WRITE_LEGACY(avgdvg_reset_w)
AM_RANGE(0x6000, 0x603f) AM_DEVWRITE("earom", atari_vg_earom_device, write)
AM_RANGE(0x6040, 0x6040) AM_DEVREAD_LEGACY("mathbox", mathbox_status_r) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
AM_RANGE(0x6040, 0x6040) AM_DEVREAD("mathbox", mathbox_device, status_r) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w)
AM_RANGE(0x6050, 0x6050) AM_DEVREAD("earom", atari_vg_earom_device, read)
AM_RANGE(0x6060, 0x6060) AM_DEVREAD_LEGACY("mathbox", mathbox_lo_r)
AM_RANGE(0x6070, 0x6070) AM_DEVREAD_LEGACY("mathbox", mathbox_hi_r)
AM_RANGE(0x6080, 0x609f) AM_DEVWRITE_LEGACY("mathbox", mathbox_go_w)
AM_RANGE(0x6060, 0x6060) AM_DEVREAD("mathbox", mathbox_device, lo_r)
AM_RANGE(0x6070, 0x6070) AM_DEVREAD("mathbox", mathbox_device, hi_r)
AM_RANGE(0x6080, 0x609f) AM_DEVWRITE("mathbox", mathbox_device, go_w)
AM_RANGE(0x60c0, 0x60cf) AM_DEVREADWRITE("pokey1", pokey_device, read, write)
AM_RANGE(0x60d0, 0x60df) AM_DEVREADWRITE("pokey2", pokey_device, read, write)
AM_RANGE(0x60e0, 0x60e0) AM_WRITE(tempest_led_w)

View File

@ -4,6 +4,8 @@
*************************************************************************/
#include "audio/redbaron.h"
#include "machine/mathbox.h"
#include "sound/discrete.h"
#define BZONE_MASTER_CLOCK (XTAL_12_096MHz)
@ -14,10 +16,16 @@ class bzone_state : public driver_device
public:
bzone_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_discrete(*this, "discrete") ,
m_maincpu(*this, "maincpu") { }
m_maincpu(*this, "maincpu"),
m_mathbox(*this, "mathbox"),
m_discrete(*this, "discrete"),
m_redbaronsound(*this, "custom")
{ }
required_device<cpu_device> m_maincpu;
required_device<mathbox_device> m_mathbox;
optional_device<discrete_device> m_discrete;
optional_device<redbaron_sound_device> m_redbaronsound;
UINT8 m_analog_data;
UINT8 m_rb_input_select;
@ -32,7 +40,6 @@ public:
DECLARE_MACHINE_START(redbaron);
INTERRUPT_GEN_MEMBER(bzone_interrupt);
DECLARE_WRITE8_MEMBER(bzone_sounds_w);
required_device<cpu_device> m_maincpu;
};
@ -40,52 +47,5 @@ public:
MACHINE_CONFIG_EXTERN( bzone_audio );
/*----------- defined in audio/redbaron.c -----------*/
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> redbaron_sound_device
class redbaron_sound_device : public device_t,
public device_sound_interface
{
public:
redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~redbaron_sound_device() { }
protected:
// device-level overrides
virtual void device_start();
// sound stream update overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
public:
DECLARE_WRITE8_MEMBER( redbaron_sounds_w );
private:
INT16 *m_vol_lookup;
INT16 m_vol_crash[16];
sound_stream *m_channel;
int m_latch;
int m_poly_counter;
int m_poly_shift;
int m_filter_counter;
int m_crash_amp;
int m_shot_amp;
int m_shot_amp_counter;
int m_squeal_amp;
int m_squeal_amp_counter;
int m_squeal_off_counter;
int m_squeal_on_counter;
int m_squeal_out;
};
extern const device_type REDBARON;

View File

@ -1,4 +1,4 @@
#include "machine/mb14241.h"
class fgoal_state : public driver_device
{
@ -11,7 +11,9 @@ public:
fgoal_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_video_ram(*this, "video_ram"),
m_maincpu(*this, "maincpu"){ }
m_maincpu(*this, "maincpu"),
m_mb14241(*this, "mb14241")
{ }
/* memory pointers */
required_shared_ptr<UINT8> m_video_ram;
@ -31,7 +33,7 @@ public:
/* devices */
required_device<cpu_device> m_maincpu;
device_t *m_mb14241;
required_device<mb14241_device> m_mb14241;
DECLARE_READ8_MEMBER(fgoal_analog_r);
DECLARE_READ8_MEMBER(fgoal_nmi_reset_r);
DECLARE_READ8_MEMBER(fgoal_irq_reset_r);

View File

@ -4,6 +4,7 @@
****************************************************************************/
#include "machine/mb14241.h"
#include "sound/discrete.h"
#include "sound/sn76477.h"
#include "sound/samples.h"
@ -37,6 +38,7 @@ public:
mw8080bw_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
m_mb14241(*this,"mb14241"),
m_main_ram(*this, "main_ram"),
m_colorram(*this, "colorram"),
m_discrete(*this, "discrete"),
@ -47,6 +49,7 @@ public:
/* device/memory pointers */
required_device<cpu_device> m_maincpu;
optional_device<mb14241_device> m_mb14241;
required_shared_ptr<UINT8> m_main_ram;
optional_shared_ptr<UINT8> m_colorram;
optional_device<discrete_device> m_discrete;
@ -75,7 +78,6 @@ public:
emu_timer *m_interrupt_timer;
/* other devices */
device_t *m_mb14241;
optional_device<samples_device> m_samples;
optional_device<samples_device> m_samples1;
optional_device<samples_device> m_samples2;

View File

@ -8,62 +8,74 @@
#include "emu.h"
#include "mathbox.h"
#define REG0 mb->reg [0x00]
#define REG1 mb->reg [0x01]
#define REG2 mb->reg [0x02]
#define REG3 mb->reg [0x03]
#define REG4 mb->reg [0x04]
#define REG5 mb->reg [0x05]
#define REG6 mb->reg [0x06]
#define REG7 mb->reg [0x07]
#define REG8 mb->reg [0x08]
#define REG9 mb->reg [0x09]
#define REGa mb->reg [0x0a]
#define REGb mb->reg [0x0b]
#define REGc mb->reg [0x0c]
#define REGd mb->reg [0x0d]
#define REGe mb->reg [0x0e]
#define REGf mb->reg [0x0f]
#define REG0 m_reg [0x00]
#define REG1 m_reg [0x01]
#define REG2 m_reg [0x02]
#define REG3 m_reg [0x03]
#define REG4 m_reg [0x04]
#define REG5 m_reg [0x05]
#define REG6 m_reg [0x06]
#define REG7 m_reg [0x07]
#define REG8 m_reg [0x08]
#define REG9 m_reg [0x09]
#define REGa m_reg [0x0a]
#define REGb m_reg [0x0b]
#define REGc m_reg [0x0c]
#define REGd m_reg [0x0d]
#define REGe m_reg [0x0e]
#define REGf m_reg [0x0f]
#define MB_TEST 0
#define LOG(x) do { if (MB_TEST) logerror x; } while (0)
struct mathbox_state
//-------------------------------------------------
// mathbox_device - constructor
//-------------------------------------------------
const device_type MATHBOX = &device_creator<mathbox_device>;
mathbox_device::mathbox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MATHBOX, "MATHBOX", tag, owner, clock)
{
device_t *device;
/* math box scratch registers */
INT16 reg[16];
}
/* math box result */
INT16 result;
};
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
/***************************************************************************
INLINE FUNCTIONS
***************************************************************************/
/*-------------------------------------------------
get_safe_token - convert a device's token
into a mathbox_state
-------------------------------------------------*/
INLINE mathbox_state *get_safe_token(device_t *device)
void mathbox_device::device_config_complete()
{
assert(device != NULL);
assert(device->type() == MATHBOX);
return (mathbox_state *)downcast<mathbox_device *>(device)->token();
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void mathbox_device::device_start()
{
/* register for save states */
save_item(NAME(m_result));
save_item(NAME(m_reg));
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void mathbox_device::device_reset()
{
m_result = 0;
memset(m_reg, 0, sizeof(INT16)*16);
}
WRITE8_DEVICE_HANDLER( mathbox_go_w )
WRITE8_MEMBER( mathbox_device::go_w )
{
mathbox_state *mb = get_safe_token(device);
INT32 mb_temp; /* temp 32-bit multiply results */
INT16 mb_q; /* temp used in division */
int msb;
@ -72,37 +84,37 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
switch (offset)
{
case 0x00: mb->result = REG0 = (REG0 & 0xff00) | data; break;
case 0x01: mb->result = REG0 = (REG0 & 0x00ff) | (data << 8); break;
case 0x02: mb->result = REG1 = (REG1 & 0xff00) | data; break;
case 0x03: mb->result = REG1 = (REG1 & 0x00ff) | (data << 8); break;
case 0x04: mb->result = REG2 = (REG2 & 0xff00) | data; break;
case 0x05: mb->result = REG2 = (REG2 & 0x00ff) | (data << 8); break;
case 0x06: mb->result = REG3 = (REG3 & 0xff00) | data; break;
case 0x07: mb->result = REG3 = (REG3 & 0x00ff) | (data << 8); break;
case 0x08: mb->result = REG4 = (REG4 & 0xff00) | data; break;
case 0x09: mb->result = REG4 = (REG4 & 0x00ff) | (data << 8); break;
case 0x00: m_result = REG0 = (REG0 & 0xff00) | data; break;
case 0x01: m_result = REG0 = (REG0 & 0x00ff) | (data << 8); break;
case 0x02: m_result = REG1 = (REG1 & 0xff00) | data; break;
case 0x03: m_result = REG1 = (REG1 & 0x00ff) | (data << 8); break;
case 0x04: m_result = REG2 = (REG2 & 0xff00) | data; break;
case 0x05: m_result = REG2 = (REG2 & 0x00ff) | (data << 8); break;
case 0x06: m_result = REG3 = (REG3 & 0xff00) | data; break;
case 0x07: m_result = REG3 = (REG3 & 0x00ff) | (data << 8); break;
case 0x08: m_result = REG4 = (REG4 & 0xff00) | data; break;
case 0x09: m_result = REG4 = (REG4 & 0x00ff) | (data << 8); break;
case 0x0a: mb->result = REG5 = (REG5 & 0xff00) | data; break;
case 0x0a: m_result = REG5 = (REG5 & 0xff00) | data; break;
/* note: no function loads low part of REG5 without performing a computation */
case 0x0c: mb->result = REG6 = data; break;
case 0x0c: m_result = REG6 = data; break;
/* note: no function loads high part of REG6 */
case 0x15: mb->result = REG7 = (REG7 & 0xff00) | data; break;
case 0x16: mb->result = REG7 = (REG7 & 0x00ff) | (data << 8); break;
case 0x15: m_result = REG7 = (REG7 & 0xff00) | data; break;
case 0x16: m_result = REG7 = (REG7 & 0x00ff) | (data << 8); break;
case 0x1a: mb->result = REG8 = (REG8 & 0xff00) | data; break;
case 0x1b: mb->result = REG8 = (REG8 & 0x00ff) | (data << 8); break;
case 0x1a: m_result = REG8 = (REG8 & 0xff00) | data; break;
case 0x1b: m_result = REG8 = (REG8 & 0x00ff) | (data << 8); break;
case 0x0d: mb->result = REGa = (REGa & 0xff00) | data; break;
case 0x0e: mb->result = REGa = (REGa & 0x00ff) | (data << 8); break;
case 0x0f: mb->result = REGb = (REGb & 0xff00) | data; break;
case 0x10: mb->result = REGb = (REGb & 0x00ff) | (data << 8); break;
case 0x0d: m_result = REGa = (REGa & 0xff00) | data; break;
case 0x0e: m_result = REGa = (REGa & 0x00ff) | (data << 8); break;
case 0x0f: m_result = REGb = (REGb & 0xff00) | data; break;
case 0x10: m_result = REGb = (REGb & 0x00ff) | (data << 8); break;
case 0x17: mb->result = REG7; break;
case 0x19: mb->result = REG8; break;
case 0x18: mb->result = REG9; break;
case 0x17: m_result = REG7; break;
case 0x19: m_result = REG8; break;
case 0x18: m_result = REG9; break;
case 0x0b:
@ -131,7 +143,7 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
if (mb_q < 0)
REG7++;
mb->result = REG7;
m_result = REG7;
if (REGf < 0)
break;
@ -160,7 +172,7 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
REG8++;
REG9 <<= 1; /* why? only to get the desired load address? */
mb->result = REG8;
m_result = REG8;
if (REGf < 0)
break;
@ -220,9 +232,9 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
while (--REGf >= 0);
if (REGe >= 0)
mb->result = mb_q;
m_result = mb_q;
else
mb->result = - mb_q;
m_result = - mb_q;
break;
case 0x11:
@ -245,7 +257,7 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
}
while (--REG6 >= 0);
mb->result = REG8;
m_result = REG8;
break;
case 0x1d:
@ -270,7 +282,7 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
REGc >>= 2;
REGd += REGc;
REGc >>= 1;
mb->result = REGd = (REGc + REGd);
m_result = REGd = (REGc + REGd);
break;
case 0x1f:
@ -279,96 +291,20 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w )
break;
}
LOG((" result %04x\n", mb->result & 0xffff));
LOG((" result %04x\n", m_result & 0xffff));
}
READ8_DEVICE_HANDLER( mathbox_status_r )
READ8_MEMBER( mathbox_device::status_r )
{
return 0x00; /* always done! */
}
READ8_DEVICE_HANDLER( mathbox_lo_r )
READ8_MEMBER( mathbox_device::lo_r )
{
mathbox_state *mb = get_safe_token(device);
return mb->result & 0xff;
return m_result & 0xff;
}
READ8_DEVICE_HANDLER( mathbox_hi_r )
READ8_MEMBER( mathbox_device::hi_r )
{
mathbox_state *mb = get_safe_token(device);
return (mb->result >> 8) & 0xff;
}
/***************************************************************************
DEVICE INTERFACE
***************************************************************************/
/*-------------------------------------------------
mathbox_portb_r - return port B output
value
-------------------------------------------------*/
static DEVICE_START( mathbox )
{
mathbox_state *mb = get_safe_token(device);
/* validate arguments */
assert(device != NULL);
/* set static values */
mb->device = device;
/* register for save states */
device->save_item(NAME(mb->result));
device->save_item(NAME(mb->reg));
}
static DEVICE_RESET( mathbox )
{
mathbox_state *mb = get_safe_token(device);
mb->result = 0;
memset(mb->reg, 0, sizeof(INT16)*16);
}
const device_type MATHBOX = &device_creator<mathbox_device>;
mathbox_device::mathbox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, MATHBOX, "MATHBOX", tag, owner, clock)
{
m_token = global_alloc_clear(mathbox_state);
}
//-------------------------------------------------
// device_config_complete - perform any
// operations now that the configuration is
// complete
//-------------------------------------------------
void mathbox_device::device_config_complete()
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void mathbox_device::device_start()
{
DEVICE_START_NAME( mathbox )(this);
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void mathbox_device::device_reset()
{
DEVICE_RESET_NAME( mathbox )(this);
return (m_result >> 8) & 0xff;
}

View File

@ -5,8 +5,6 @@
*
*/
#include "devlegcy.h"
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
@ -15,33 +13,31 @@
MCFG_DEVICE_ADD(_tag, MATHBOX, 0)
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
DECLARE_WRITE8_DEVICE_HANDLER( mathbox_go_w );
DECLARE_READ8_DEVICE_HANDLER( mathbox_status_r );
DECLARE_READ8_DEVICE_HANDLER( mathbox_lo_r );
DECLARE_READ8_DEVICE_HANDLER( mathbox_hi_r );
/* ----- device interface ----- */
class mathbox_device : public device_t
{
public:
mathbox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~mathbox_device() { global_free(m_token); }
// access to legacy token
void *token() const { assert(m_token != NULL); return m_token; }
DECLARE_WRITE8_MEMBER( go_w );
DECLARE_READ8_MEMBER( status_r );
DECLARE_READ8_MEMBER( lo_r );
DECLARE_READ8_MEMBER( hi_r );
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
private:
private:
// internal state
void *m_token;
/* math box scratch registers */
INT16 m_reg[16];
/* math box result */
INT16 m_result;
};
extern const device_type MATHBOX;

View File

@ -98,7 +98,6 @@ MACHINE_START_MEMBER(mw8080bw_state,mw8080bw)
m_sn = machine().device("snsnd");
m_sn1 = machine().device("sn1");
m_sn2 = machine().device("sn2");
m_mb14241 = machine().device("mb14241");
}