summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound/cdp1864.h
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2009-09-12 11:11:19 +0000
committer Curt Coder <curtcoder@mail.com>2009-09-12 11:11:19 +0000
commitf53dd256f5df506ec51507c8b5d06099aa4248ed (patch)
tree971cdc092a665939f5df7f665b13b48c27329217 /src/emu/sound/cdp1864.h
parentb75dfbb386a90e7efd8e4e1d7f9582b89e31f842 (diff)
Added CDP1864 sound core for MESS.
Diffstat (limited to 'src/emu/sound/cdp1864.h')
-rw-r--r--src/emu/sound/cdp1864.h156
1 files changed, 156 insertions, 0 deletions
diff --git a/src/emu/sound/cdp1864.h b/src/emu/sound/cdp1864.h
new file mode 100644
index 00000000000..49307630ec3
--- /dev/null
+++ b/src/emu/sound/cdp1864.h
@@ -0,0 +1,156 @@
+/**********************************************************************
+
+ RCA CDP1864C COS/MOS PAL Compatible Color TV Interface
+
+ Copyright MESS Team.
+ Visit http://mamedev.org for licensing and usage restrictions.
+
+**********************************************************************
+ ________________
+ INLACE 1 ---| \/ |--- 40 Vdd
+ CLK IN_ 2 ---| |--- 39 AUD
+ CLR OUT_ 3 ---| |--- 38 CLR IN_
+ AOE 4 ---| |--- 37 DMA0_
+ SC1 5 ---| |--- 36 INT_
+ SC0 6 ---| |--- 35 TPA
+ MRD_ 7 ---| |--- 34 TPB
+ BUS 7 8 ---| |--- 33 EVS
+ BUS 6 9 ---| |--- 32 V SYNC
+ BUS 5 10 ---| CDP1864C |--- 31 H SYNC
+ BUS 4 11 ---| top view |--- 30 C SYNC_
+ BUS 3 12 ---| |--- 29 RED
+ BUS 2 13 ---| |--- 28 BLUE
+ BUS 1 14 ---| |--- 27 GREEN
+ BUS 0 15 ---| |--- 26 BCK GND_
+ CON_ 16 ---| |--- 25 BURST
+ N2 17 ---| |--- 24 ALT
+ EF_ 18 ---| |--- 23 R DATA
+ N0 19 ---| |--- 22 G DATA
+ Vss 20 ---|________________|--- 21 B DATA
+
+
+ http://homepage.mac.com/ruske/cosmacelf/cdp1864.pdf
+
+**********************************************************************/
+
+#ifndef __CDP1864__
+#define __CDP1864__
+
+#include "devcb.h"
+
+/***************************************************************************
+ PARAMETERS
+***************************************************************************/
+
+#define CDP1864_CLOCK XTAL_1_75MHz
+
+#define CDP1864_VISIBLE_COLUMNS 64
+#define CDP1864_VISIBLE_LINES 192
+
+#define CDP1864_HBLANK_END 1 * 8
+#define CDP1864_HBLANK_START 13 * 8
+#define CDP1864_HSYNC_START 0 * 8
+#define CDP1864_HSYNC_END 1 * 8
+#define CDP1864_SCREEN_START 4 * 8
+#define CDP1864_SCREEN_END 12 * 8
+#define CDP1864_SCREEN_WIDTH 14 * 8
+
+#define CDP1864_TOTAL_SCANLINES 312
+
+#define CDP1864_SCANLINE_VBLANK_START CDP1864_TOTAL_SCANLINES - 4
+#define CDP1864_SCANLINE_VBLANK_END 20
+#define CDP1864_SCANLINE_VSYNC_START 0
+#define CDP1864_SCANLINE_VSYNC_END 4
+#define CDP1864_SCANLINE_DISPLAY_START 60 // ???
+#define CDP1864_SCANLINE_DISPLAY_END CDP1864_SCANLINE_DISPLAY_START + CDP1864_VISIBLE_LINES
+#define CDP1864_SCANLINE_INT_START CDP1864_SCANLINE_DISPLAY_START - 2
+#define CDP1864_SCANLINE_INT_END CDP1864_SCANLINE_DISPLAY_START
+#define CDP1864_SCANLINE_EFX_TOP_START CDP1864_SCANLINE_DISPLAY_START - 4
+#define CDP1864_SCANLINE_EFX_TOP_END CDP1864_SCANLINE_DISPLAY_START
+#define CDP1864_SCANLINE_EFX_BOTTOM_START CDP1864_SCANLINE_DISPLAY_END - 4
+#define CDP1864_SCANLINE_EFX_BOTTOM_END CDP1864_SCANLINE_DISPLAY_END
+
+/***************************************************************************
+ MACROS / CONSTANTS
+***************************************************************************/
+
+#define CDP1864 DEVICE_GET_INFO_NAME(cdp1864)
+#define SOUND_CDP1864 CDP1864
+
+#define MDRV_CDP1864_ADD(_tag, _clock, _config) \
+ MDRV_DEVICE_ADD(_tag, SOUND, _clock) \
+ MDRV_DEVICE_CONFIG_DATAPTR(sound_config, type, SOUND_CDP1864) \
+ MDRV_DEVICE_CONFIG(_config)
+
+#define CDP1864_INTERFACE(name) \
+ const cdp1864_interface (name) =
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+typedef enum _cdp1864_format cdp1864_format;
+enum _cdp1864_format {
+ CDP1864_NON_INTERLACED = 0,
+ CDP1864_INTERLACED
+};
+
+typedef struct _cdp1864_interface cdp1864_interface;
+struct _cdp1864_interface
+{
+ const char *cpu_tag; /* cpu we are working with */
+ const char *screen_tag; /* screen we are acting on */
+
+ cdp1864_format interlace; /* interlace */
+
+ devcb_read_line in_rdata_func;
+ devcb_read_line in_bdata_func;
+ devcb_read_line in_gdata_func;
+
+ /* this gets called for every change of the INT pin (pin 36) */
+ devcb_write_line out_int_func;
+
+ /* this gets called for every change of the DMAO pin (pin 37) */
+ devcb_write_line out_dmao_func;
+
+ /* this gets called for every change of the EFX pin (pin 18) */
+ devcb_write_line out_efx_func;
+
+ double res_r; /* red output resistor value */
+ double res_g; /* green output resistor value */
+ double res_b; /* blue output resistor value */
+ double res_bkg; /* background output resistor value */
+};
+
+/***************************************************************************
+ PROTOTYPES
+***************************************************************************/
+
+/* device interface */
+DEVICE_GET_INFO( cdp1864 );
+
+/* display on (0x69) */
+READ8_DEVICE_HANDLER( cdp1864_dispon_r ) ATTR_NONNULL(1);
+
+/* display off (0x6c) */
+READ8_DEVICE_HANDLER( cdp1864_dispoff_r ) ATTR_NONNULL(1);
+
+/* step background color (0x61) */
+WRITE8_DEVICE_HANDLER( cdp1864_step_bgcolor_w ) ATTR_NONNULL(1);
+
+/* color on */
+WRITE_LINE_DEVICE_HANDLER( cdp1864_con_w ) ATTR_NONNULL(1);
+
+/* load tone latch (0x64) */
+WRITE8_DEVICE_HANDLER( cdp1864_tone_latch_w ) ATTR_NONNULL(1);
+
+/* audio output enable */
+WRITE_LINE_DEVICE_HANDLER( cdp1864_aoe_w ) ATTR_NONNULL(1);
+
+/* DMA write */
+WRITE8_DEVICE_HANDLER( cdp1864_dma_w ) ATTR_NONNULL(1);
+
+/* screen update */
+void cdp1864_update(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect) ATTR_NONNULL(1) ATTR_NONNULL(2) ATTR_NONNULL(3);
+
+#endif