summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/megasys1.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/megasys1.h')
-rw-r--r--src/mame/includes/megasys1.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h
new file mode 100644
index 00000000000..663d3550fc4
--- /dev/null
+++ b/src/mame/includes/megasys1.h
@@ -0,0 +1,195 @@
+/***************************************************************************
+
+ -= Jaleco Mega System 1 =-
+
+ driver by Luca Elia (l.elia@tin.it)
+
+
+ This file contains definitions used across multiple megasys1
+ and non megasys1 Jaleco games:
+
+ * Input ports
+ * Scrolling layers handling
+ * Code decryption handling
+
+***************************************************************************/
+
+
+/***************************************************************************
+
+ Input Ports
+
+***************************************************************************/
+
+
+/* IN0 - COINS */
+#define COINS \
+ PORT_START_TAG("IN0")\
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
+
+/* IN1/3 - PLAYER 1/2 */
+#define JOY_4BUTTONS(_flag_) \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(_flag_)
+
+#define JOY_3BUTTONS(_flag_) \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+#define JOY_2BUTTONS(_flag_) \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+/* IN2 - RESERVE */
+#define RESERVE \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Reserve 1P */\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Reserve 2P */\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+/* IN4 - Coinage DSWs */
+// 1] 01-41 02-31 03-21 07-11 06-12 05-13 04-14 00-FC * 2
+// 2] 04-31 02-21 07-11 03-12 05-13 01-14 06-15 00-FC
+// 00-41 20-31 10-21 38-11 18-12 28-13 08-14 30-15
+
+
+#define COINAGE_6BITS \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )\
+ PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_5C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_5C ) )\
+
+#define COINAGE_6BITS_2 \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )\
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )\
+ PORT_DIPSETTING( 0x08, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+
+#define COINAGE_8BITS \
+ PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )\
+ PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )\
+/* PORT_DIPSETTING( 0x05, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )*/ \
+ PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )\
+ PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )\
+ PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+ PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )\
+ PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )\
+/* PORT_DIPSETTING( 0x50, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x20, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) )*/ \
+ PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )\
+ PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )\
+ PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+
+
+/***************************************************************************
+
+ Scrolling Layers Handling
+
+***************************************************************************/
+
+/*----------- defined in video/megasys1.c -----------*/
+
+/* Variables */
+extern tilemap *megasys1_tmap[3];
+
+extern UINT16 *megasys1_scrollram[3];
+extern UINT16 *megasys1_objectram, *megasys1_vregs, *megasys1_ram;
+
+extern int megasys1_scrollx[3], megasys1_scrolly[3];
+extern int megasys1_active_layers;
+//extern int megasys1_screen_flag, megasys1_sprite_flag;
+extern int megasys1_bits_per_color_code;
+
+
+/* Functions */
+VIDEO_START( megasys1 );
+
+WRITE16_HANDLER( megasys1_scrollram_0_w );
+WRITE16_HANDLER( megasys1_scrollram_1_w );
+WRITE16_HANDLER( megasys1_scrollram_2_w );
+
+void megasys1_set_vreg_flag(int which, int data);
+
+/*----------- defined in drivers/megasys1.c -----------*/
+
+void astyanax_rom_decode(int cpu);
+void phantasm_rom_decode(int cpu);
+void rodland_rom_decode (int cpu);