diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c index d6eb399be6f..15f6d84fab6 100644 --- a/src/mame/drivers/coolridr.c +++ b/src/mame/drivers/coolridr.c @@ -2856,6 +2856,12 @@ static ADDRESS_MAP_START( system_h1_map, AS_PROGRAM, 32, coolridr_state ) AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP ADDRESS_MAP_END +static ADDRESS_MAP_START(aquastge_h1_map, AS_PROGRAM, 32, coolridr_state) + AM_RANGE(0x03c00000, 0x03c0ffff) AM_MIRROR(0x00200000) AM_RAM_WRITE(sysh1_dma_w) AM_SHARE("fb_vram") /* mostly mapped at 0x03e00000 */ + AM_RANGE(0x03e10000, 0x03e1ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ + AM_RANGE(0x03f00000, 0x03f0ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ + AM_IMPORT_FROM(system_h1_map) +ADDRESS_MAP_END READ16_MEMBER( coolridr_state::h1_soundram_r) { @@ -3034,6 +3040,15 @@ static ADDRESS_MAP_START( coolridr_submap, AS_PROGRAM, 32, coolridr_state ) AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP ADDRESS_MAP_END +static ADDRESS_MAP_START( aquastge_submap, AS_PROGRAM, 32, coolridr_state ) + AM_RANGE(0x05210000, 0x0521ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ + AM_RANGE(0x05200000, 0x0537ffff) AM_RAM + AM_RANGE(0x06000200, 0x06000207) AM_WRITENOP // program bug? + AM_RANGE(0x06100018, 0x0610001b) AM_READ_PORT("IN7") + + AM_IMPORT_FROM(coolridr_submap) +ADDRESS_MAP_END + /* TODO: what is this for, volume mixing? MIDI? */ WRITE8_MEMBER(coolridr_state::sound_to_sh1_w) { @@ -3057,6 +3072,134 @@ static GFXDECODE_START( coolridr ) // GFXDECODE_ENTRY( NULL, 0, tiles16x16_layout, 0, 0x100 ) GFXDECODE_END +#define DUMMY_INPUT_PORT(_x_) \ + PORT_START(_x_) \ + PORT_DIPNAME( 0x00000001, 0x00000001, _x_ ) \ + PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000002, 0x00000002, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000010, 0x00000010, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000010, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000020, 0x00000020, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000020, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00010000, 0x00010000, _x_ ) \ + PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00200000, 0x00200000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) \ + PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) \ + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \ + PORT_BIT( 0xff00ff00, IP_ACTIVE_LOW, IPT_UNUSED ) \ + +static INPUT_PORTS_START( aquastge ) + DUMMY_INPUT_PORT("IN0") + + PORT_START("IN1") + PORT_DIPNAME( 0x00000001, 0x00000001, "IN1" ) + PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000002, 0x00000002, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin") + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin") + PORT_SERVICE_NO_TOGGLE( 0x00040000, IP_ACTIVE_LOW ) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("P1 Service Switch") + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("P1 Start") + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("P2 Start") + PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Switch") + PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xff00ff00, IP_ACTIVE_LOW, IPT_UNUSED ) + + DUMMY_INPUT_PORT("IN2") + + DUMMY_INPUT_PORT("IN3") + + DUMMY_INPUT_PORT("IN5") + + DUMMY_INPUT_PORT("IN6") + + DUMMY_INPUT_PORT("IN7") + + PORT_START("AN0") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN2") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN3") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN4") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN5") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN6") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("AN7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + + // driver debug + PORT_START("CONFIG") + PORT_CONFNAME( 0x01, 0x01, "Use Threading Code" ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) +INPUT_PORTS_END + static INPUT_PORTS_START( coolridr ) PORT_START("IN0") PORT_DIPNAME( 0x00000001, 0x00000001, "IN0-0" ) @@ -3623,6 +3766,14 @@ static MACHINE_CONFIG_START( coolridr, coolridr_state ) MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( aquastge, coolridr ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(aquastge_h1_map) + + MCFG_CPU_MODIFY("sub") + MCFG_CPU_PROGRAM_MAP(aquastge_submap) +MACHINE_CONFIG_END + ROM_START( coolridr ) ROM_REGION( 0x200000, "maincpu", 0 ) /* SH2 code */ ROM_LOAD32_WORD_SWAP( "ep17659.30", 0x0000000, 0x080000, CRC(473027b0) SHA1(acaa212869dd79550235171b9f054e82750f74c3) ) @@ -3797,5 +3948,5 @@ DRIVER_INIT_MEMBER(coolridr_state, aquastge) } GAME( 1995, coolridr, 0, coolridr, coolridr, coolridr_state, coolridr, ROT0, "Sega", "Cool Riders",GAME_IMPERFECT_SOUND) // region is set in test mode, this set is for Japan, USA and Export (all regions) -GAME( 1995, aquastge, 0, coolridr, coolridr, coolridr_state, aquastge, ROT0, "Sega", "Aqua Stage",GAME_NOT_WORKING) +GAME( 1995, aquastge, 0, aquastge, aquastge, coolridr_state, aquastge, ROT0, "Sega", "Aqua Stage",GAME_NOT_WORKING)