summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/exidy440.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/exidy440.cpp')
-rw-r--r--src/mame/drivers/exidy440.cpp51
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