/*************************************************************************** -= 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);