summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/segaic16.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/segaic16.h')
-rw-r--r--src/mame/machine/segaic16.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/mame/machine/segaic16.h b/src/mame/machine/segaic16.h
new file mode 100644
index 00000000000..26f98e7cdc0
--- /dev/null
+++ b/src/mame/machine/segaic16.h
@@ -0,0 +1,56 @@
+/***************************************************************************
+
+ Sega 16-bit common hardware
+
+***************************************************************************/
+
+/* open bus read helpers */
+READ16_HANDLER( segaic16_open_bus_r );
+
+/* memory mapping chip */
+struct segaic16_memory_map_entry
+{
+ UINT8 regbase; /* register offset for this region */
+ offs_t regoffs; /* offset within the region for this entry */
+ offs_t length; /* length in bytes of this entry */
+ offs_t mirror; /* maximal mirror values (will be truncated) */
+ offs_t romoffset; /* offset within REGION_CPU0, or ~0 for independent entries */
+ read16_handler read; /* read handler */
+ write16_handler write; /* write handler */
+ UINT16 ** base; /* pointer to memory base */
+ const char * name; /* friendly name for debugging */
+};
+
+void segaic16_memory_mapper_init(int cpunum, const struct segaic16_memory_map_entry *entrylist, void (*sound_w_callback)(UINT8), UINT8 (*sound_r_callback)(void));
+void segaic16_memory_mapper_reset(void);
+void segaic16_memory_mapper_config(const UINT8 *map_data);
+void segaic16_memory_mapper_set_decrypted(UINT8 *decrypted);
+READ8_HANDLER( segaic16_memory_mapper_r );
+WRITE8_HANDLER( segaic16_memory_mapper_w );
+READ16_HANDLER( segaic16_memory_mapper_lsb_r );
+WRITE16_HANDLER( segaic16_memory_mapper_lsb_w );
+
+/* multiply chip */
+READ16_HANDLER( segaic16_multiply_0_r );
+READ16_HANDLER( segaic16_multiply_1_r );
+READ16_HANDLER( segaic16_multiply_2_r );
+WRITE16_HANDLER( segaic16_multiply_0_w );
+WRITE16_HANDLER( segaic16_multiply_1_w );
+WRITE16_HANDLER( segaic16_multiply_2_w );
+
+/* divide chip */
+READ16_HANDLER( segaic16_divide_0_r );
+READ16_HANDLER( segaic16_divide_1_r );
+READ16_HANDLER( segaic16_divide_2_r );
+WRITE16_HANDLER( segaic16_divide_0_w );
+WRITE16_HANDLER( segaic16_divide_1_w );
+WRITE16_HANDLER( segaic16_divide_2_w );
+
+/* compare/timer chip */
+void segaic16_compare_timer_init(int which, void (*sound_write_callback)(UINT8), void (*timer_ack_callback)(void));
+int segaic16_compare_timer_clock(int which);
+READ16_HANDLER( segaic16_compare_timer_0_r );
+READ16_HANDLER( segaic16_compare_timer_1_r );
+WRITE16_HANDLER( segaic16_compare_timer_0_w );
+WRITE16_HANDLER( segaic16_compare_timer_1_w );
+