diff options
Diffstat (limited to 'src/mame/drivers/exidy440.cpp')
-rw-r--r-- | src/mame/drivers/exidy440.cpp | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp index dda7d46f43d..21fdde6df95 100644 --- a/src/mame/drivers/exidy440.cpp +++ b/src/mame/drivers/exidy440.cpp @@ -234,13 +234,19 @@ Who Dunit 1988 6809 ***************************************************************************/ #include "emu.h" +#include "includes/exidy440.h" + #include "cpu/m6809/m6809.h" #include "machine/nvram.h" -#include "includes/exidy440.h" +#include "speaker.h" /* constants */ + #define MAIN_CPU_CLOCK (EXIDY440_MASTER_CLOCK / 8) +#define EXIDY440_AUDIO_CLOCK (XTAL(12'979'200) / 4) +#define EXIDY440_MC3418_CLOCK (EXIDY440_AUDIO_CLOCK / 4 / 16) +#define EXIDY440_MC3417_CLOCK (EXIDY440_AUDIO_CLOCK / 4 / 32) @@ -485,6 +491,27 @@ ADDRESS_MAP_START(exidy440_state::exidy440_map) ADDRESS_MAP_END +/************************************* + * + * Audio CPU memory handlers + * + *************************************/ + +ADDRESS_MAP_START(exidy440_state::exidy440_audio_map) + AM_RANGE(0x0000, 0x7fff) AM_NOP + AM_RANGE(0x8000, 0x801f) AM_MIRROR(0x03e0) AM_DEVREADWRITE("custom", exidy440_sound_device, m6844_r, m6844_w) + AM_RANGE(0x8400, 0x840f) AM_MIRROR(0x03f0) AM_DEVREADWRITE("custom", exidy440_sound_device, sound_volume_r, sound_volume_w) + AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x03ff) AM_DEVREAD("custom", exidy440_sound_device, sound_command_r) AM_WRITENOP + AM_RANGE(0x8c00, 0x93ff) AM_NOP + AM_RANGE(0x9400, 0x9403) AM_MIRROR(0x03fc) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_banks_w) + AM_RANGE(0x9800, 0x9800) AM_MIRROR(0x03ff) AM_READNOP AM_DEVWRITE("custom", exidy440_sound_device, sound_interrupt_clear_w) + AM_RANGE(0x9c00, 0x9fff) AM_NOP + AM_RANGE(0xa000, 0xbfff) AM_RAM + AM_RANGE(0xc000, 0xdfff) AM_NOP + AM_RANGE(0xe000, 0xffff) AM_ROM +ADDRESS_MAP_END + + /************************************* * @@ -1005,7 +1032,27 @@ MACHINE_CONFIG_START(exidy440_state::exidy440) exidy440_video(config); /* audio hardware */ - exidy440_audio(config); + MCFG_CPU_ADD("audiocpu", MC6809, EXIDY440_AUDIO_CLOCK) + MCFG_CPU_PROGRAM_MAP(exidy440_audio_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", driver_device, irq0_line_assert) + + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("custom", EXIDY440, EXIDY440_MC3418_CLOCK) + MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) + MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + +// MCFG_SOUND_ADD("cvsd1", MC3418, EXIDY440_MC3418_CLOCK) +// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + +// MCFG_SOUND_ADD("cvsd2", MC3418, EXIDY440_MC3418_CLOCK) +// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + +// MCFG_SOUND_ADD("cvsd3", MC3417, EXIDY440_MC3417_CLOCK) +// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + +// MCFG_SOUND_ADD("cvsd4", MC3417, EXIDY440_MC3417_CLOCK) +// MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END |