summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-06-17 14:19:18 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-06-17 14:19:18 +0000
commite5ffa886e3c76a62a397e7f36709e765d22c4664 (patch)
treeb98bfc95f765eb512768e6c9aef332ad6fab4ad1
parent23ea9d2db49f9bd6b90edfbfd3f6f43ad22ea375 (diff)
From: abcd efgh [mailto:cix_999@yahoo.it]
Subject: ddragon3 fix & The Combatribes (Italian bootleg) Added The Combatribes (Italian bootleg) to the ddragon3 drive, the game has an different z80's rom sound and the sprites roms are split in more small. I've also done some fixes in ddragon3 drive (on mama tester ID 01441,00417,00181): - Fixed the mess dips location in ctribe - Added dips location in all sets of ddragon3 - Added the missing dips (now are 8x2) on ctribe,ctribe1,ctribeb,ctribb2 and ddrago3b - Fixed the "Stage Clear Energy" dips in ctribe - Adjusted the frame rate from 60hz to around 57 as reported on mametester ID 00417 - Adjusted OKI frequency to 1.000mhz (according to recording on mametester ID 00181) - Adjusted the ddragon3 & ctribe volume (according to recording on mametester ID 00181 and 01441) Bye Sonikos
-rw-r--r--src/mame/drivers/ddragon3.c314
-rw-r--r--src/mame/mamedriv.c1
2 files changed, 176 insertions, 139 deletions
diff --git a/src/mame/drivers/ddragon3.c b/src/mame/drivers/ddragon3.c
index f0c0e15f4cc..9fa77c870b0 100644
--- a/src/mame/drivers/ddragon3.c
+++ b/src/mame/drivers/ddragon3.c
@@ -44,7 +44,11 @@ extern VIDEO_START( ddragon3 );
extern VIDEO_UPDATE( ddragon3 );
extern VIDEO_UPDATE( ctribe );
-/* Read/Write Handlers */
+/*************************************
+ *
+ * Read/Write Handlers
+ *
+ *************************************/
static WRITE8_HANDLER( oki_bankswitch_w )
{
@@ -89,7 +93,11 @@ static WRITE16_HANDLER( ddragon3_io16_w )
}
}
-/* Memory Maps */
+/*************************************
+ *
+ * Memory Maps
+ *
+ *************************************/
static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
@@ -199,10 +207,14 @@ static ADDRESS_MAP_START( ctribe_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x9800, 0x9800) AM_WRITE(OKIM6295_data_0_w)
ADDRESS_MAP_END
-/* Input Ports */
+/*************************************
+ *
+ * Game-specific port definitions
+ *
+ *************************************/
static INPUT_PORTS_START( ddragon3 )
- PORT_START_TAG("IN1")
+ PORT_START_TAG("IN0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
@@ -220,47 +232,48 @@ static INPUT_PORTS_START( ddragon3 )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
- PORT_START
+ PORT_START_TAG("IN1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START // DSW1&2
- PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) )
+ PORT_START_TAG("IN2")
+ PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0001, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0002, DEF_STR( 1C_2C ) )
- PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x0010, 0x0010, "Continue Discount" )
+ PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:4" )
+ PORT_DIPNAME( 0x0010, 0x0010, "Continue Discount" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) )
+ PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
+ PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW1:8" )
+ PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
- PORT_DIPNAME( 0x0400, 0x0400, "Player Vs. Player Damage" )
+ PORT_DIPNAME( 0x0400, 0x0400, "Player Vs. Player Damage" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_SERVICE( 0x1000, IP_ACTIVE_LOW )
- PORT_DIPNAME( 0x2000, 0x2000, "Stage Clear Energy" )
+ PORT_DIPUNUSED_DIPLOC( 0x0800, 0x0800, "SW2:4" )
+ PORT_SERVICE_DIPLOC( 0x1000, IP_ACTIVE_LOW, "SW2:5" )
+ PORT_DIPNAME( 0x2000, 0x2000, "Stage Clear Energy" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x2000, "50" )
- PORT_DIPNAME( 0x4000, 0x4000, "Starting Energy" )
+ PORT_DIPNAME( 0x4000, 0x4000, "Starting Energy" ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x0000, "200" )
PORT_DIPSETTING( 0x4000, "230" )
- PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Players ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x8000, "2" )
PORT_DIPSETTING( 0x0000, "3" )
@@ -276,27 +289,27 @@ static INPUT_PORTS_START( ddragon3 )
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-static INPUT_PORTS_START( ddrago3b )
- PORT_START
+static INPUT_PORTS_START( ctribe )
+ PORT_START_TAG("IN0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) // punch
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) // jump
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) // kick
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) // Unused in game but work on input test
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Flip_Screen ) )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_VBLANK )
+ PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_BIT( 0xe000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START
+ PORT_START_TAG("IN1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
@@ -306,21 +319,23 @@ static INPUT_PORTS_START( ddrago3b )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
- PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coinage ) )
+ PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0100, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0300, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0200, DEF_STR( 1C_2C ) )
- PORT_BIT( 0x0c00, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x1000, 0x1000, "Continue Discount" )
+ PORT_DIPUNUSED_DIPLOC( 0x0400, 0x0400, "SW1:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x0800, 0x0800, "SW1:4" )
+ PORT_DIPNAME( 0x1000, 0x1000, "Continue Discount" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
- PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPUNUSED_DIPLOC( 0x4000, 0x4000, "SW1:8" )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START
+ PORT_START_TAG("IN2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
@@ -330,116 +345,57 @@ static INPUT_PORTS_START( ddrago3b )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 )
- PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) )
+ PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
- PORT_DIPNAME( 0x0400, 0x0400, "Player Vs. Player Damage" )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_SERVICE( 0x1000, IP_ACTIVE_LOW )
- PORT_DIPNAME( 0x2000, 0x2000, "Stage Clear Energy" )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, "50" )
+ PORT_DIPNAME( 0x0400, 0x0400, "Timer Speed" ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x0400, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x0000, "Fast" )
+ PORT_DIPUNUSED_DIPLOC( 0x0800, 0x0800, "SW2:4" )
+ PORT_SERVICE_DIPLOC( 0x1000, IP_ACTIVE_LOW, "SW2:5" )
+ PORT_DIPNAME( 0x2000, 0x2000, "Stage Clear Energy" ) PORT_CONDITION("IN3",0x0100,PORTCOND_EQUALS,0x0100) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPSETTING( 0x2000, "0" )
+ PORT_DIPSETTING( 0x0000, "50" )
+ PORT_DIPNAME( 0x2000, 0x2000, "Stage Clear Energy" ) PORT_CONDITION("IN3",0x0100,PORTCOND_EQUALS,0x0000) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPSETTING( 0x2000, "100" )
+ PORT_DIPSETTING( 0x0000, "150" )
PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START
+ PORT_START_TAG("IN3")
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_DIPNAME( 0x0100, 0x0100, "Starting Energy" )
- PORT_DIPSETTING( 0x0000, "200" )
- PORT_DIPSETTING( 0x0100, "230" )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Players ) )
- PORT_DIPSETTING( 0x0200, "2" )
- PORT_DIPSETTING( 0x0000, "3" )
- PORT_BIT( 0xfc00, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( ctribe )
- PORT_START
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) // punch
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) // jump
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
-
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_VBLANK )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x0100, 0x0100, "More Stage Clear Energy" ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0xe000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
-
- PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
- PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x0300, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( 1C_2C ) )
- PORT_BIT( 0x0c00, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x1000, 0x1000, "Continue Discount" ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x0200, "2" )
+ PORT_DIPSETTING( 0x0000, "3" )
PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
- PORT_START
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START3 )
+static INPUT_PORTS_START( ddrago3b )
+ PORT_INCLUDE( ctribe )
- PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
- PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x0300, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x0100, "Less than Difficult" )
- PORT_DIPSETTING( 0x0000, "Difficult" )
- PORT_DIPNAME( 0x0400, 0x0400, "Timer Speed" ) PORT_DIPLOCATION("SW2:3")
- PORT_DIPSETTING( 0x0400, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x0000, "Fast" )
+ PORT_MODIFY("IN0")
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x1000, 0x1000, "Test Mode" ) PORT_DIPLOCATION("SW2:5")
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+
+ PORT_MODIFY("IN2")
+ PORT_DIPNAME( 0x0400, 0x0400, "Player Vs. Player Damage" ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x6000, 0x6000, "Stage Clear Energy" ) PORT_DIPLOCATION("SW2:6,7")
- PORT_DIPSETTING( 0x6000, "0" )
- PORT_DIPSETTING( 0x4000, "50" )
- PORT_DIPSETTING( 0x2000, "100" ) /* According to manual but doesn't work on real pcb. */
- PORT_DIPSETTING( 0x0000, "150" ) /* According to manual but doesn't work on real pcb. */
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START
- PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:8")
- PORT_DIPSETTING( 0x0200, "2" )
- PORT_DIPSETTING( 0x0000, "3" )
- PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_MODIFY("IN3")
+ PORT_DIPNAME( 0x0100, 0x0100, "Starting Energy" ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPSETTING( 0x0000, "200" )
+ PORT_DIPSETTING( 0x0100, "230" )
INPUT_PORTS_END
-/* Graphics Layouts */
+/*************************************
+ *
+ * Graphics Layouts
+ *
+ *************************************/
static const gfx_layout tile_layout =
{
@@ -466,14 +422,22 @@ static const gfx_layout sprite_layout = {
32*8 /* every tile takes 32 consecutive bytes */
};
-/* Graphics Decode Info */
+/*************************************
+ *
+ * Graphics Decode Info
+ *
+ *************************************/
static GFXDECODE_START( ddragon3 )
GFXDECODE_ENTRY( REGION_GFX1, 0, tile_layout, 256, 32 )
GFXDECODE_ENTRY( REGION_GFX2, 0, sprite_layout, 0, 16 )
GFXDECODE_END
-/* Sound Interfaces */
+/*************************************
+ *
+ * Sound Interfaces
+ *
+ *************************************/
static void dd3_ymirq_handler(running_machine *machine, int irq)
{
@@ -485,7 +449,11 @@ static const struct YM2151interface ym2151_interface =
dd3_ymirq_handler
};
-/* Interrupt Generators */
+/*************************************
+ *
+ * Interrupt Generators
+ *
+ *************************************/
static INTERRUPT_GEN( ddragon3_cpu_interrupt ) { /* 6:0x177e - 5:0x176a */
if( cpu_getiloops() == 0 ){
@@ -496,7 +464,11 @@ static INTERRUPT_GEN( ddragon3_cpu_interrupt ) { /* 6:0x177e - 5:0x176a */
}
}
-/* Machine Drivers */
+/*************************************
+ *
+ * Machine driver
+ *
+ *************************************/
static MACHINE_DRIVER_START( ddragon3 )
/* basic machine hardware */
@@ -504,13 +476,13 @@ static MACHINE_DRIVER_START( ddragon3 )
MDRV_CPU_PROGRAM_MAP(readmem, writemem)
MDRV_CPU_VBLANK_INT_HACK(ddragon3_cpu_interrupt, 2)
- MDRV_CPU_ADD_TAG("audio", Z80, 3579545) // Guess
+ MDRV_CPU_ADD_TAG("audio", Z80, 3579545) // Guess (confirmed on bootleg)
/* audio CPU */
MDRV_CPU_PROGRAM_MAP(readmem_sound, writemem_sound)
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)
- MDRV_SCREEN_REFRESH_RATE(60)
+ MDRV_SCREEN_REFRESH_RATE(57)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(40*8, 32*8)
@@ -525,15 +497,15 @@ static MACHINE_DRIVER_START( ddragon3 )
/* sound hardware */
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
- MDRV_SOUND_ADD(YM2151, 3579545)
+ MDRV_SOUND_ADD_TAG("ym2151", YM2151, 3579545) /* music */
MDRV_SOUND_CONFIG(ym2151_interface)
- MDRV_SOUND_ROUTE(0, "left", 1.00) /* music */
- MDRV_SOUND_ROUTE(1, "right", 1.00)
+ MDRV_SOUND_ROUTE(0, "left", 0.50)
+ MDRV_SOUND_ROUTE(1, "right", 0.50)
- MDRV_SOUND_ADD(OKIM6295, 1122000)
+ MDRV_SOUND_ADD_TAG("oki", OKIM6295, 1000000) /* sound fx */
MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7high) // clock frequency & pin 7 not verified
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 1.00) /* sound fx */
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 1.00)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 1.50)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 1.50)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( ddrago3b )
@@ -556,9 +528,21 @@ static MACHINE_DRIVER_START( ctribe )
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MDRV_VIDEO_UPDATE(ctribe)
+
+ MDRV_SOUND_MODIFY("ym2151")
+ MDRV_SOUND_ROUTE(0, "left", 1.20)
+ MDRV_SOUND_ROUTE(1, "right", 1.20)
+
+ MDRV_SOUND_MODIFY("oki")
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 0.80)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.80)
MACHINE_DRIVER_END
-/* ROMs */
+/*************************************
+ *
+ * ROM definition(s)
+ *
+ *************************************/
ROM_START( ddragon3 )
ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 64k for cpu code */
@@ -772,7 +756,58 @@ ROM_START( ctribeb )
ROM_CONTINUE( 0x000000, 0x20000 )
ROM_END
-/* Game Drivers */
+ROM_START( ctribb2 )
+ ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 64k for cpu code */
+ ROM_LOAD16_BYTE( "1.bin", 0x00001, 0x20000, CRC(9cfa997f) SHA1(ee49b4b9e9cd29616f244fdf3912ef743e2404ce) )
+ ROM_LOAD16_BYTE( "3.bin", 0x00000, 0x20000, CRC(2ece8681) SHA1(17ee2ceb893e2eb08fa4cabcdebcec02bee16cda) )
+ ROM_LOAD16_BYTE( "2.bin", 0x40001, 0x10000, CRC(8c2c6dbd) SHA1(b99b9be6e0bdc8340fedd258819c4df587926a84) )
+ /* No EVEN rom! */
+
+ ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for sound cpu code */
+ ROM_LOAD( "6.bin", 0x00000, 0x10000, CRC(0101df2d) SHA1(35e1efa4a11c0f9d9db5ee057926e5de29c3a4c1) )
+
+ ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "7.bin", 0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) ) /* Background */
+ ROM_LOAD( "8.bin", 0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
+ ROM_LOAD( "11.bin", 0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
+ ROM_LOAD( "12.bin", 0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
+ ROM_LOAD( "9.bin", 0x100000, 0x20000, CRC(2719d7ce) SHA1(35275d32b584c477033037bc041a3687ecca412d) )
+ ROM_LOAD( "10.bin", 0x140000, 0x20000, CRC(753a4f53) SHA1(c76a449ef29dde671196cda1f128b0b2d4839a97) )
+ ROM_LOAD( "13.bin", 0x180000, 0x20000, CRC(59e01fe1) SHA1(67f5a4e9c9e9ebc6218b7c2ede0e5ff51682ee2f) )
+ ROM_LOAD( "14.bin", 0x1c0000, 0x20000, CRC(a69ab4f3) SHA1(bc99c6a587c972cb5c9e719c53ef921a28f1498e) )
+
+ ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE )
+ ROM_LOAD( "34.bin", 0x000000, 0x20000, CRC(5b498f0e) SHA1(9d93ca1f44e1f04eb3b66db6027130683c9431a2) ) /* Sprites */
+ ROM_LOAD( "33.bin", 0x020000, 0x20000, CRC(14d79049) SHA1(250c87aa238fc794cd0f07e3388b97137cc1228f) )
+ ROM_LOAD( "32.bin", 0x040000, 0x20000, CRC(9631ea23) SHA1(de0a6595731d185ea18959bd04e3ac9e4261a8f8) )
+ ROM_LOAD( "31.bin", 0x060000, 0x20000, CRC(0ca8d3b9) SHA1(c48e7c456acb9deb7f01c19ab9a66360af09a13d) )
+ ROM_LOAD( "30.bin", 0x080000, 0x10000, CRC(972faddb) SHA1(f2b211e8f8301667e6c9a3ce9612e39b16e66a67) )
+ ROM_LOAD( "29.bin", 0x100000, 0x20000, CRC(479ae8ea) SHA1(6bfbab5ed7ae7275be0c177c7e39cff19210c0ab) )
+ ROM_LOAD( "28.bin", 0x120000, 0x20000, CRC(95598bbf) SHA1(2a155bbb09dc4efca6e1a6b847829f7ec09d323e) )
+ ROM_LOAD( "27.bin", 0x140000, 0x20000, CRC(4a3d006d) SHA1(d32fa627e3a4683101aff233bfc8a016c78a1702) )
+ ROM_LOAD( "26.bin", 0x160000, 0x20000, CRC(aa34a3cb) SHA1(9bcf5db3a89a300468e9300a9fc5fd33d1ba60de) )
+ ROM_LOAD( "25.bin", 0x180000, 0x10000, CRC(eb3ab374) SHA1(db66cb7976c111fa76a3a211e96ad1d7b78ce0ad) )
+ ROM_LOAD( "24.bin", 0x200000, 0x20000, CRC(d60bbff0) SHA1(b5e978b1d58f4d0ff05e51b728bb3ec06eea7d08) )
+ ROM_LOAD( "23.bin", 0x220000, 0x20000, CRC(d9595c47) SHA1(323e572a022d5297c727dc8b1717269c5b9134b7) )
+ ROM_LOAD( "22.bin", 0x240000, 0x20000, CRC(5a19a911) SHA1(d7ce955d3127b57ee560379055d71bacf3a9d6a1) )
+ ROM_LOAD( "21.bin", 0x260000, 0x20000, CRC(071360f9) SHA1(8269115484f3ceb69c3b2a215f684dd31a366989) )
+ ROM_LOAD( "20.bin", 0x280000, 0x10000, CRC(c602ac97) SHA1(44440739636b684c6dcac837f59664120c9ba5f3) )
+ ROM_LOAD( "19.bin", 0x300000, 0x20000, CRC(8d22736a) SHA1(d17f92544efebbdf89ca9fd11ab7c16d2636f175) )
+ ROM_LOAD( "18.bin", 0x320000, 0x20000, CRC(0f157822) SHA1(a1e16e4036b0c68c3f58cb0520f8120fe60b0dfa) )
+ ROM_LOAD( "17.bin", 0x340000, 0x20000, CRC(7f48c824) SHA1(af6b48dbcf88cfcaecb8cec5dd9eb4c25f4bf9a8) )
+ ROM_LOAD( "16.bin", 0x360000, 0x20000, CRC(cd1e9bd5) SHA1(1f956ab476b2c403c0dbf9e6169cfe2c51bb45ac) )
+ ROM_LOAD( "15.bin", 0x380000, 0x10000, CRC(4da1d8e5) SHA1(568e9e8d00f1b1ca27c28df5fc0ffc74ad91da7e) )
+
+ ROM_REGION( 0x040000, REGION_SOUND1, 0 ) /* ADPCM Samples */
+ ROM_LOAD( "5.bin", 0x000000, 0x20000, CRC(f92a7f4a) SHA1(3717ef64876be9ada378b449749918ce9072073a) )
+ ROM_LOAD( "4.bin", 0x020000, 0x20000, CRC(1a3a0b39) SHA1(8847530027cf4be03ffbc6d78dee97b459d03a04) )
+ROM_END
+
+/*************************************
+ *
+ * Game driver(s)
+ *
+ *************************************/
GAME( 1990, ddragon3, 0, ddragon3, ddragon3, 0, ROT0, "Technos", "Double Dragon 3 - The Rosetta Stone (US)", GAME_SUPPORTS_SAVE )
GAME( 1990, ddrago3j, ddragon3, ddragon3, ddragon3, 0, ROT0, "Technos", "Double Dragon 3 - The Rosetta Stone (Japan)", GAME_SUPPORTS_SAVE )
@@ -780,3 +815,4 @@ GAME( 1990, ddrago3b, ddragon3, ddrago3b, ddrago3b, 0, ROT0, "bootleg", "Double
GAME( 1990, ctribe, 0, ctribe, ctribe, 0, ROT0, "Technos", "The Combatribes (US)", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribe1, ctribe, ctribe, ctribe, 0, ROT0, "Technos", "The Combatribes (US) - Set 1?", GAME_SUPPORTS_SAVE )
GAME( 1990, ctribeb, ctribe, ctribe, ctribe, 0, ROT0, "bootleg", "The Combatribes (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1990, ctribb2, ctribe, ctribe, ctribe, 0, ROT0, "bootleg", "The Combatribes (Italian bootleg)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index c6a265ae809..6db6ded5821 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -5851,6 +5851,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
DRIVER( ctribe ) /* TA-0028 (c) 1990 (US) */
DRIVER( ctribe1 ) /* TA-0028 (c) 1990 (US) - Set 1? */
DRIVER( ctribeb ) /* bootleg */
+ DRIVER( ctribb2 ) /* bootleg */
DRIVER( blockout ) /* TA-0029 (c) 1989 + California Dreams */
DRIVER( blckout2 ) /* TA-0029 (c) 1989 + California Dreams */
DRIVER( blckoutj ) /* TA-0029 (c) 1989 + California Dreams (Japan) */