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)

This commit is contained in:
angelosa 2015-07-06 23:00:10 +02:00
parent 92775ea014
commit e3babf8351

View file

@ -2856,6 +2856,12 @@ static ADDRESS_MAP_START( system_h1_map, AS_PROGRAM, 32, coolridr_state )
AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP
ADDRESS_MAP_END 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) 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 AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP
ADDRESS_MAP_END 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? */ /* TODO: what is this for, volume mixing? MIDI? */
WRITE8_MEMBER(coolridr_state::sound_to_sh1_w) 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_ENTRY( NULL, 0, tiles16x16_layout, 0, 0x100 )
GFXDECODE_END 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 ) static INPUT_PORTS_START( coolridr )
PORT_START("IN0") PORT_START("IN0")
PORT_DIPNAME( 0x00000001, 0x00000001, "IN0-0" ) PORT_DIPNAME( 0x00000001, 0x00000001, "IN0-0" )
@ -3623,6 +3766,14 @@ static MACHINE_CONFIG_START( coolridr, coolridr_state )
MCFG_SOUND_ROUTE(0, "rspeaker", 1.0) MCFG_SOUND_ROUTE(0, "rspeaker", 1.0)
MACHINE_CONFIG_END 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_START( coolridr )
ROM_REGION( 0x200000, "maincpu", 0 ) /* SH2 code */ ROM_REGION( 0x200000, "maincpu", 0 ) /* SH2 code */
ROM_LOAD32_WORD_SWAP( "ep17659.30", 0x0000000, 0x080000, CRC(473027b0) SHA1(acaa212869dd79550235171b9f054e82750f74c3) ) 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, 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)