summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2015-07-06 23:00:10 +0200
committer angelosa <salese_corp_ltd@email.it>2015-07-06 23:00:10 +0200
commite3babf8351ac78a1e653b6b275483d6aed6c96f7 (patch)
tree4d2668d18c08c4ecfdf6e267453c59755a5fc7b2
parent92775ea0143935a39c8d357e48881320118e0775 (diff)
Some work towards Aqua Stage, looks like both SH-2/SH-1 shared RAMs addresses can be modified somehow. It currently asks for attendant if out of service mode (which is probably the purpose of the extra input field I suppose). (nw)
-rw-r--r--src/mame/drivers/coolridr.c153
1 files changed, 152 insertions, 1 deletions
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)