yamato,toprollr: add coin b dipswitch

This commit is contained in:
hap 2024-11-14 11:52:18 +01:00
parent 8f334e9685
commit 204fb88de7
2 changed files with 76 additions and 48 deletions

View File

@ -160,9 +160,6 @@ TODO:
lives - $6155
TODO:
- COINB DSW is missing
-------------------------------------------------------------------
Top Roller
@ -304,13 +301,15 @@ uint8_t swimmer_state::soundlatch_read_and_clear()
void toprollr_state::toprollr_rombank_w(int state)
{
m_rombank = m_mainlatch->q5_r() | (m_mainlatch->q6_r() << 1);
uint8_t bank = m_mainlatch->output_state() >> 5 & 3;
if (m_rombank < 3)
if (bank < 3)
{
m_bank1->set_entry(m_rombank);
m_bank1d->set_entry(m_rombank);
m_bank1->set_entry(bank);
m_bank1d->set_entry(bank);
}
else
logerror("invalid ROM bank %d\n", bank); // doesn't happen
}
@ -380,7 +379,6 @@ void cclimber_state::cannonb_map(address_map &map)
}
void swimmer_state::swimmer_root_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
@ -438,8 +436,8 @@ void yamato_state::yamato_map(address_map &map)
map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
map(0xa000, 0xa000).mirror(0x07ff).portr("P1");
map(0xa800, 0xa800).mirror(0x07ff).portr("P2");
map(0xb000, 0xb000).mirror(0x07ff).portr("DSW");
map(0xb800, 0xb800).mirror(0x07ff).portr("COIN");
map(0xb000, 0xb000).mirror(0x07ff).portr("DSW1");
map(0xb800, 0xb800).mirror(0x07ff).portr("SYSTEM");
}
void yamato_state::yamato_decrypted_opcodes_map(address_map &map)
@ -550,6 +548,7 @@ void swimmer_state::swimmer_audio_map(address_map &map)
void yamato_state::yamato_audio_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x07ff).rom();
map(0x5000, 0x53ff).ram();
}
@ -1039,8 +1038,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( yamato )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CONDITION("DSW2", 0x01, EQUALS, 0x01)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CONDITION("DSW2", 0x02, EQUALS, 0x02)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
@ -1049,8 +1048,8 @@ static INPUT_PORTS_START( yamato )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CONDITION("DSW2", 0x04, EQUALS, 0x04)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CONDITION("DSW2", 0x08, EQUALS, 0x08)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
@ -1058,7 +1057,7 @@ static INPUT_PORTS_START( yamato )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_START("DSW")
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "4" )
@ -1083,20 +1082,53 @@ static INPUT_PORTS_START( yamato )
PORT_DIPSETTING( 0x80, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
PORT_START("COIN")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) // set 1 only
PORT_START("DSW2")
PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x07, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 ) // set 1 only
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END
// Same as 'yamato', but no coin 2 or service coin
static INPUT_PORTS_START( yamato2 )
PORT_INCLUDE( yamato )
PORT_MODIFY("DSW2")
PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("SYSTEM")
PORT_BIT( 0x11, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( toprollr )
PORT_START("P1")
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, "Invalid" )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x07, DEF_STR( Free_Play ) )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
@ -1104,7 +1136,7 @@ static INPUT_PORTS_START( toprollr )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_START("P2")
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
@ -1142,10 +1174,9 @@ static INPUT_PORTS_START( toprollr )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( au )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
@ -2345,13 +2376,13 @@ Dip Switch - Donkey King
ROM_START( dking )
ROM_REGION( 0x6000, "maincpu", 0 )
ROM_LOAD( "d11.r2", 0x0800, 0x0800, CRC(f7cace41) SHA1(981dbb1cddd66a0cbc8fe147172ffe7eb5b7fa21) )
ROM_CONTINUE( 0x0000, 0x800 )
ROM_LOAD( "d7.1n", 0x1000, 0x1000, CRC(fe89dea4) SHA1(c39372ebe9950808ebc1ff7909c291496b206026) )
ROM_LOAD( "d9.2m", 0x2000, 0x1000, CRC(b9c34e14) SHA1(dcfe45dede6aef52a2989978762df9c5463bbbf2) )
ROM_LOAD( "d10.2n", 0x3000, 0x1000, CRC(243e458d) SHA1(de98fc90915913069b6802d5c662db18f56c36be) )
ROM_LOAD( "d8.1r", 0x4800, 0x0800, CRC(7c66fb5c) SHA1(5eda9b0037f958433d96bc945c1273b66ef9cac5) )
ROM_CONTINUE( 0x4000, 0x800 )
ROM_LOAD( "d11.r2", 0x0800, 0x0800, CRC(f7cace41) SHA1(981dbb1cddd66a0cbc8fe147172ffe7eb5b7fa21) )
ROM_CONTINUE( 0x0000, 0x0800 )
ROM_LOAD( "d7.1n", 0x1000, 0x1000, CRC(fe89dea4) SHA1(c39372ebe9950808ebc1ff7909c291496b206026) )
ROM_LOAD( "d9.2m", 0x2000, 0x1000, CRC(b9c34e14) SHA1(dcfe45dede6aef52a2989978762df9c5463bbbf2) )
ROM_LOAD( "d10.2n", 0x3000, 0x1000, CRC(243e458d) SHA1(de98fc90915913069b6802d5c662db18f56c36be) )
ROM_LOAD( "d8.1r", 0x4800, 0x0800, CRC(7c66fb5c) SHA1(5eda9b0037f958433d96bc945c1273b66ef9cac5) )
ROM_CONTINUE( 0x4000, 0x0800 )
ROM_REGION( 0x4000, "tile", 0 )
ROM_LOAD( "falcon6", 0x0000, 0x1000, CRC(a8916dc8) SHA1(472520aae3837e6026f2a7577d3b2aff371a316c) ) // d4.6n
@ -2863,15 +2894,15 @@ ROM_END
ROM_START( guzzlers ) // Swimmer Conversion, 1k vs 2k romsize in maincpu
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "guzz1.l9", 0x0000, 0x1000, CRC(48f751ee) SHA1(a8ff19d150d382a43ad705fe2a470450e317aac3) )
ROM_LOAD( "guzz2.k9", 0x1000, 0x1000, CRC(c13f23e6) SHA1(2cd31e0419875c50433f1763e35e32afcaf68fde) )
ROM_LOAD( "guzz3.j9", 0x2000, 0x1000, CRC(7a523fd8) SHA1(683249d2ffdde21f74d80280e538645ac143d45c) )
ROM_LOAD( "guzz4.f9", 0x3000, 0x1000, CRC(d2bb2204) SHA1(87f821f1cb92577e10beb67be29d9eecd9e8a04f) )
ROM_LOAD( "guzz5.e9", 0x4000, 0x1000, CRC(09856fd0) SHA1(f2eeffe2c35f652a855502f808fd5056252ce7fd) )
ROM_LOAD( "guzz6.d9", 0x5000, 0x1000, CRC(80990d1e) SHA1(282f5247b88f29ee6178c771ecddf2a5ed995913) )
ROM_LOAD( "guzz7.c9", 0x6000, 0x1000, CRC(fe37b99d) SHA1(9219fe4506e81e574f5ae84ec10dc1df511f76a1) )
ROM_LOAD( "guzz8.a9", 0x7000, 0x1000, CRC(8d44f5f8) SHA1(957f1b880f6f815ac31c1a37c40cdff75dd119cf) )
ROM_LOAD( "guzz-16.bin", 0xe000, 0x2000, CRC(61ee00b7) SHA1(ea8516c8dfb2de32a8034f94c7d0c086e3596740) ) // 16.
ROM_LOAD( "guzz1.l9", 0x0000, 0x1000, CRC(48f751ee) SHA1(a8ff19d150d382a43ad705fe2a470450e317aac3) )
ROM_LOAD( "guzz2.k9", 0x1000, 0x1000, CRC(c13f23e6) SHA1(2cd31e0419875c50433f1763e35e32afcaf68fde) )
ROM_LOAD( "guzz3.j9", 0x2000, 0x1000, CRC(7a523fd8) SHA1(683249d2ffdde21f74d80280e538645ac143d45c) )
ROM_LOAD( "guzz4.f9", 0x3000, 0x1000, CRC(d2bb2204) SHA1(87f821f1cb92577e10beb67be29d9eecd9e8a04f) )
ROM_LOAD( "guzz5.e9", 0x4000, 0x1000, CRC(09856fd0) SHA1(f2eeffe2c35f652a855502f808fd5056252ce7fd) )
ROM_LOAD( "guzz6.d9", 0x5000, 0x1000, CRC(80990d1e) SHA1(282f5247b88f29ee6178c771ecddf2a5ed995913) )
ROM_LOAD( "guzz7.c9", 0x6000, 0x1000, CRC(fe37b99d) SHA1(9219fe4506e81e574f5ae84ec10dc1df511f76a1) )
ROM_LOAD( "guzz8.a9", 0x7000, 0x1000, CRC(8d44f5f8) SHA1(957f1b880f6f815ac31c1a37c40cdff75dd119cf) )
ROM_LOAD( "guzz-16.bin", 0xe000, 0x2000, CRC(61ee00b7) SHA1(ea8516c8dfb2de32a8034f94c7d0c086e3596740) ) // 16.
ROM_REGION( 0x1000, "audiocpu", 0 )
ROM_LOAD( "guzz-12.bin", 0x0000, 0x1000, CRC(f3754d9e) SHA1(bb30832aba4e82ab0ecce40fc1223d9771ff7dd2) ) // GUZZ12.L4
@ -3010,12 +3041,12 @@ ROM_START( toprollr )
ROM_LOAD( "12.p3", 0x0000, 0x2000, CRC(7f989dc9) SHA1(3b4d18cbb992872b3cf8f5eaf5381ed3a9468cc1) )
ROM_REGION( 0x01a0, "proms", 0 )
ROM_LOAD( "prom.p2", 0x0000, 0x0020, CRC(42e828fa) SHA1(81250b1f7c3956b3902324adbbaf3b5989e854ee) ) //08-0f sprites + fg (wrong?)
ROM_LOAD( "prom.r2", 0x0020, 0x0020, CRC(99b87eed) SHA1(06c3164d681fe4aff0338c0dad1a921f7fe7369d) ) //10-17 sprites
ROM_LOAD( "prom.a1", 0x0040, 0x0020, CRC(7d626d6c) SHA1(7c7202d0ec5bf0381e7104eef53afa5fa4596a29) ) //00-07 big sprites
ROM_LOAD( "prom.p9", 0x0060, 0x0020, CRC(eb399c02) SHA1(bf3d6c6dd982cb54446cf8a010b7adb949514bdb) ) //18-1f bg
ROM_LOAD( "prom.n9", 0x0080, 0x0020, CRC(fb03ea99) SHA1(4dcef86106cef713dfcbd965072bfa8fe4b68e15) ) //20-27 bg
ROM_LOAD( "prom.s9", 0x00a0, 0x0100, CRC(abf4c5fb) SHA1(a953f14642d4b72328293b36bc3c65b13491ffff) ) //unknown prom (filled with 2 bit vals)
ROM_LOAD( "prom.p2", 0x0000, 0x0020, CRC(42e828fa) SHA1(81250b1f7c3956b3902324adbbaf3b5989e854ee) ) // 08-0f sprites + fg (wrong?)
ROM_LOAD( "prom.r2", 0x0020, 0x0020, CRC(99b87eed) SHA1(06c3164d681fe4aff0338c0dad1a921f7fe7369d) ) // 10-17 sprites
ROM_LOAD( "prom.a1", 0x0040, 0x0020, CRC(7d626d6c) SHA1(7c7202d0ec5bf0381e7104eef53afa5fa4596a29) ) // 00-07 big sprites
ROM_LOAD( "prom.p9", 0x0060, 0x0020, CRC(eb399c02) SHA1(bf3d6c6dd982cb54446cf8a010b7adb949514bdb) ) // 18-1f bg
ROM_LOAD( "prom.n9", 0x0080, 0x0020, CRC(fb03ea99) SHA1(4dcef86106cef713dfcbd965072bfa8fe4b68e15) ) // 20-27 bg
ROM_LOAD( "prom.s9", 0x00a0, 0x0100, CRC(abf4c5fb) SHA1(a953f14642d4b72328293b36bc3c65b13491ffff) ) // unknown prom (filled with 2 bit vals)
ROM_END
@ -3032,8 +3063,6 @@ void toprollr_state::init_toprollr()
m_bank1->set_entry(0);
m_bank1d->set_entry(0);
save_item(NAME(m_rombank));
}
@ -3123,6 +3152,6 @@ GAME( 1983, guzzlers, guzzler, guzzler, guzzler, swimmer_state, empty_i
GAME( 1983, au, 0, au, au, swimmer_state, empty_init, ROT90, "Tehkan", "Au (location test)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, yamato, 0, yamato, yamato, yamato_state, empty_init, ROT90, "Sega", "Yamato (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1983, yamato2, yamato, yamato, yamato, yamato_state, empty_init, ROT90, "Sega", "Yamato (World?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1983, yamato2, yamato, yamato, yamato2, yamato_state, empty_init, ROT90, "Sega", "Yamato (World?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1983, toprollr, 0, toprollr, toprollr, toprollr_state, init_toprollr, ROT90, "Jaleco", "Top Roller", MACHINE_SUPPORTS_SAVE )

View File

@ -199,7 +199,6 @@ private:
TILE_GET_INFO_MEMBER(toproller_get_bg_tile_info);
tilemap_t *m_bg_tilemap = nullptr;
uint8_t m_rombank = 0;
};
class yamato_state : public cclimber_state