diff --git a/.gitattributes b/.gitattributes index 594b9c030a4..b22890601b7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/src/emu/machine/mb14241.c b/src/emu/machine/mb14241.c index 091397d2caf..6cc861e9272 100644 --- a/src/emu/machine/mb14241.c +++ b/src/emu/machine/mb14241.c @@ -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(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(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; } diff --git a/src/emu/machine/mb14241.h b/src/emu/machine/mb14241.h index 8155b03d318..7b876c0252e 100644 --- a/src/emu/machine/mb14241.h +++ b/src/emu/machine/mb14241.h @@ -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); } + + DECLARE_WRITE8_MEMBER ( shift_count_w ); + DECLARE_WRITE8_MEMBER ( shift_data_w ); + DECLARE_READ8_MEMBER( shift_result_r ); - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); + 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__ */ diff --git a/src/emu/machine/upd4701.h b/src/emu/machine/upd4701.h index cf3af3357d3..6d361da3a41 100644 --- a/src/emu/machine/upd4701.h +++ b/src/emu/machine/upd4701.h @@ -9,8 +9,6 @@ #ifndef __UPD4701_H__ #define __UPD4701_H__ -#include "devlegcy.h" - /*************************************************************************** MACROS / CONSTANTS ***************************************************************************/ diff --git a/src/mame/audio/redbaron.c b/src/mame/audio/redbaron.c index e93d2819972..2b3b1a8b44b 100644 --- a/src/mame/audio/redbaron.c +++ b/src/mame/audio/redbaron.c @@ -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); diff --git a/src/mame/audio/redbaron.h b/src/mame/audio/redbaron.h new file mode 100644 index 00000000000..eda9c43ea78 --- /dev/null +++ b/src/mame/audio/redbaron.h @@ -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; diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c index fec148cf60b..efd6c83efd8 100644 --- a/src/mame/drivers/8080bw.c +++ b/src/mame/drivers/8080bw.c @@ -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) diff --git a/src/mame/drivers/bzone.c b/src/mame/drivers/bzone.c index be34757f5e6..9ecba8a432e 100644 --- a/src/mame/drivers/bzone.c +++ b/src/mame/drivers/bzone.c @@ -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("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 diff --git a/src/mame/drivers/fgoal.c b/src/mame/drivers/fgoal.c index acdd44e2fc2..9a7aa03a377 100644 --- a/src/mame/drivers/fgoal.c +++ b/src/mame/drivers/fgoal.c @@ -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)); diff --git a/src/mame/drivers/mw8080bw.c b/src/mame/drivers/mw8080bw.c index 116c8b38160..d60fac5740c 100644 --- a/src/mame/drivers/mw8080bw.c +++ b/src/mame/drivers/mw8080bw.c @@ -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) diff --git a/src/mame/drivers/tempest.c b/src/mame/drivers/tempest.c index 8bea2468ed6..dcde67990d0 100644 --- a/src/mame/drivers/tempest.c +++ b/src/mame/drivers/tempest.c @@ -287,8 +287,12 @@ 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 m_maincpu; + required_device m_mathbox; + UINT8 m_player_select; DECLARE_WRITE8_MEMBER(wdclr_w); DECLARE_WRITE8_MEMBER(tempest_led_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 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) diff --git a/src/mame/includes/bzone.h b/src/mame/includes/bzone.h index 6e1dbcbcdfa..9e64bfa609c 100644 --- a/src/mame/includes/bzone.h +++ b/src/mame/includes/bzone.h @@ -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 m_maincpu; + required_device m_mathbox; optional_device m_discrete; + optional_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 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; diff --git a/src/mame/includes/fgoal.h b/src/mame/includes/fgoal.h index fa51ea538d5..cff8c833d57 100644 --- a/src/mame/includes/fgoal.h +++ b/src/mame/includes/fgoal.h @@ -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 m_video_ram; @@ -31,7 +33,7 @@ public: /* devices */ required_device m_maincpu; - device_t *m_mb14241; + required_device m_mb14241; DECLARE_READ8_MEMBER(fgoal_analog_r); DECLARE_READ8_MEMBER(fgoal_nmi_reset_r); DECLARE_READ8_MEMBER(fgoal_irq_reset_r); diff --git a/src/mame/includes/mw8080bw.h b/src/mame/includes/mw8080bw.h index d306f4ef85b..3644cff2280 100644 --- a/src/mame/includes/mw8080bw.h +++ b/src/mame/includes/mw8080bw.h @@ -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 m_maincpu; + optional_device m_mb14241; required_shared_ptr m_main_ram; optional_shared_ptr m_colorram; optional_device m_discrete; @@ -75,7 +78,6 @@ public: emu_timer *m_interrupt_timer; /* other devices */ - device_t *m_mb14241; optional_device m_samples; optional_device m_samples1; optional_device m_samples2; diff --git a/src/mame/machine/mathbox.c b/src/mame/machine/mathbox.c index 6ab953a8132..12d8bcbb7d9 100644 --- a/src/mame/machine/mathbox.c +++ b/src/mame/machine/mathbox.c @@ -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(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(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: @@ -129,12 +141,12 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w ) REGc = (mb_q >> 1) & 0x7fff; mb_q = REGc + REGe; if (mb_q < 0) - REG7++; + REG7++; - mb->result = REG7; + m_result = REG7; if (REGf < 0) - break; + break; REG7 += REG2; @@ -157,13 +169,13 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w ) REGc = (mb_q >> 1) & 0x7fff; REG9 += REGc; if (REG9 < 0) - REG8++; + REG8++; REG9 <<= 1; /* why? only to get the desired load address? */ - mb->result = REG8; + m_result = REG8; if (REGf < 0) - break; + break; REG8 += REG3; @@ -186,43 +198,43 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w ) REGe = REG7 ^ mb_q; /* save sign of result */ REGd = mb_q; if (mb_q >= 0) - mb_q = REGc; + mb_q = REGc; else - { - REGd = - mb_q - 1; - mb_q = - REGc - 1; - if ((mb_q < 0) && ((mb_q + 1) < 0)) - REGd++; - mb_q++; - } + { + REGd = - mb_q - 1; + mb_q = - REGc - 1; + if ((mb_q < 0) && ((mb_q + 1) < 0)) + REGd++; + mb_q++; + } /* step 0c9: */ /* REGc = abs (REG7) */ if (REG7 >= 0) - REGc = REG7; + REGc = REG7; else - REGc = -REG7; + REGc = -REG7; REGf = REG6; /* step counter */ do - { - REGd -= REGc; - msb = ((mb_q & 0x8000) != 0); - mb_q <<= 1; - if (REGd >= 0) - mb_q++; - else - REGd += REGc; - REGd <<= 1; - REGd += msb; - } + { + REGd -= REGc; + msb = ((mb_q & 0x8000) != 0); + mb_q <<= 1; + if (REGd >= 0) + mb_q++; + else + REGd += REGc; + REGd <<= 1; + REGd += msb; + } 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: @@ -235,17 +247,17 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w ) /* window test? */ REG5 = (REG5 & 0x00ff) | (data << 8); do - { - REGe = (REG4 + REG7) >> 1; - REGf = (REG5 + REG8) >> 1; - if ((REGb < REGe) && (REGf < REGe) && ((REGe + REGf) >= 0)) - { REG7 = REGe; REG8 = REGf; } - else - { REG4 = REGe; REG5 = REGf; } - } + { + REGe = (REG4 + REG7) >> 1; + REGf = (REG5 + REG8) >> 1; + if ((REGb < REGe) && (REGf < REGe) && ((REGe + REGf) >= 0)) + { REG7 = REGe; REG8 = REGf; } + else + { REG4 = REGe; REG5 = REGf; } + } while (--REG6 >= 0); - mb->result = REG8; + m_result = REG8; break; case 0x1d: @@ -253,11 +265,11 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w ) REG2 -= REG0; if (REG2 < 0) - REG2 = -REG2; + REG2 = -REG2; REG3 -= REG1; if (REG3 < 0) - REG3 = -REG3; + REG3 = -REG3; /* fall into command 1e */ @@ -266,11 +278,11 @@ WRITE8_DEVICE_HANDLER( mathbox_go_w ) if (REG3 >= REG2) { REGc = REG2; REGd = REG3; } else - { REGd = REG2; REGc = REG3; } + { REGd = REG2; REGc = REG3; } 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(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; } diff --git a/src/mame/machine/mathbox.h b/src/mame/machine/mathbox.h index a89fbf653c2..de6bdc2e06a 100644 --- a/src/mame/machine/mathbox.h +++ b/src/mame/machine/mathbox.h @@ -5,43 +5,39 @@ * */ -#include "devlegcy.h" - /*************************************************************************** DEVICE CONFIGURATION MACROS ***************************************************************************/ #define MCFG_MATHBOX_ADD(_tag) \ 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); } + + DECLARE_WRITE8_MEMBER( go_w ); + DECLARE_READ8_MEMBER( status_r ); + DECLARE_READ8_MEMBER( lo_r ); + DECLARE_READ8_MEMBER( hi_r ); - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); -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; diff --git a/src/mame/machine/mw8080bw.c b/src/mame/machine/mw8080bw.c index e051c9aa803..1feed4bbfd3 100644 --- a/src/mame/machine/mw8080bw.c +++ b/src/mame/machine/mw8080bw.c @@ -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"); }