diff --git a/src/mame/drivers/flipjack.c b/src/mame/drivers/flipjack.c index 2b11d3ef9e6..63a9f310ee4 100644 --- a/src/mame/drivers/flipjack.c +++ b/src/mame/drivers/flipjack.c @@ -48,12 +48,13 @@ public: required_shared_ptr m_cram; UINT8 m_soundlatch; + UINT8 m_bank; DECLARE_WRITE8_MEMBER(flipjack_sound_nmi_ack_w); DECLARE_WRITE8_MEMBER(flipjack_soundlatch_w); + DECLARE_WRITE8_MEMBER(flipjack_bank_w); DECLARE_WRITE8_MEMBER(flipjack_unk_w); DECLARE_INPUT_CHANGED_MEMBER(flipjack_coin); - }; @@ -125,7 +126,7 @@ static SCREEN_UPDATE_RGB32( flipjack ) for (x=0;x<32;x++) { const gfx_element *gfx = screen.machine().gfx[0]; - UINT16 tile = state->m_vram[x+y*0x100]; + UINT16 tile = state->m_bank << 8 | state->m_vram[x+y*0x100]; drawgfx_transpen(bitmap,cliprect,gfx,tile,0,0,0,x*8,(y*8),0); } @@ -145,9 +146,15 @@ WRITE8_MEMBER(flipjack_state::flipjack_soundlatch_w) device_set_input_line(m_audiocpu, 0, ASSERT_LINE); } +WRITE8_MEMBER(flipjack_state::flipjack_bank_w) +{ + m_bank = data; + membank("bank1")->set_entry(data >> 2 & 1); +} + + WRITE8_MEMBER(flipjack_state::flipjack_unk_w) { - // banking related? } static READ8_DEVICE_HANDLER( flipjack_soundlatch_r ) @@ -173,7 +180,8 @@ INPUT_CHANGED_MEMBER(flipjack_state::flipjack_coin) static ADDRESS_MAP_START( flipjack_main_map, AS_PROGRAM, 8, flipjack_state ) - AM_RANGE(0x0000, 0x3fff) AM_ROM + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") AM_RANGE(0x4000, 0x5fff) AM_RAM AM_RANGE(0x6000, 0x67ff) AM_RAM AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) @@ -181,6 +189,7 @@ static ADDRESS_MAP_START( flipjack_main_map, AS_PROGRAM, 8, flipjack_state ) AM_RANGE(0x7010, 0x7010) AM_DEVWRITE("crtc", hd6845_device, address_w) AM_RANGE(0x7011, 0x7011) AM_DEVWRITE("crtc", hd6845_device, register_w) AM_RANGE(0x7020, 0x7020) AM_READ_PORT("DSW") + AM_RANGE(0x7800, 0x7800) AM_WRITE(flipjack_unk_w) AM_RANGE(0x8000, 0x9fff) AM_ROM AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("cram") AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("vram") @@ -189,7 +198,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( flipjack_main_io_map, AS_IO, 8, flipjack_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xff, 0xff) AM_WRITE(flipjack_unk_w) + AM_RANGE(0xff, 0xff) AM_WRITE(flipjack_bank_w) ADDRESS_MAP_END static ADDRESS_MAP_START( flipjack_sound_map, AS_PROGRAM, 8, flipjack_state ) @@ -209,27 +218,27 @@ ADDRESS_MAP_END static INPUT_PORTS_START( flipjack ) PORT_START("COIN") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, flipjack_state, flipjack_coin, 0) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, flipjack_state, flipjack_coin, 0) // where in P1/P2/P3 is it mapped? PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Launch Ball") - PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "P1:2" ) // P1 Left Flipper? - PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "P1:3" ) // P1 Tilt? - PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "P1:4" ) // P1 Right Flipper? + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Shoot") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Left Flipper") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Tilt") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Right Flipper") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "P1:6" ) - PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "P1:7" ) - PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "P1:8" ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("P2") - PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "P2:1" ) // P2 Launch Ball? - PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "P2:2" ) // P2 Left Flipper? - PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "P2:3" ) // P2 Tilt? - PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "P2:4" ) // P2 Right Flipper? + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL PORT_NAME("P2 Shoot") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Left Flipper") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_COCKTAIL PORT_NAME("P2 Tilt") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_NAME("P2 Right Flipper") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "P2:6" ) - PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "P2:7" ) - PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "P2:8" ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("P3") PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "P3:1" ) // coin? @@ -245,16 +254,18 @@ static INPUT_PORTS_START( flipjack ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coinage ) ) PORT_DIPLOCATION("A0:2") PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "A0:3" ) // drop target + PORT_DIPNAME( 0x04, 0x04, "Drop Target" ) PORT_DIPLOCATION("A0:3") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("A0:4") PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("A0:5") - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x10, "5" ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "A0:6" ) // extra lives + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "A0:5" ) // extra lives? + PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "A0:6" ) // " PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "A0:7" ) // " - PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "A0:8" ) // " + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Lives ) ) PORT_DIPLOCATION("A0:8") + PORT_DIPSETTING( 0x80, "3" ) + PORT_DIPSETTING( 0x00, "5" ) INPUT_PORTS_END @@ -328,7 +339,10 @@ GFXDECODE_END static MACHINE_START( flipjack ) { - //flipjack_state *state = machine.driver_data(); + flipjack_state *state = machine.driver_data(); + UINT8 *ROM = machine.root_device().memregion("maincpu")->base(); + machine.root_device().membank("bank1")->configure_entries(0, 2, &ROM[0x10000], 0x2000); + state->membank("bank1")->set_entry(0); } @@ -373,11 +387,11 @@ static MACHINE_CONFIG_START( flipjack, flipjack_state ) MACHINE_CONFIG_END ROM_START( flipjack ) - ROM_REGION( 0x12000, "maincpu", 0 ) + ROM_REGION( 0x14000, "maincpu", 0 ) ROM_LOAD( "3.d5", 0x0000, 0x2000, CRC(123bd992) SHA1(d845e2b9af5b81d950e5edf35201f1dd1c4af651) ) - ROM_LOAD( "2.m5", 0x2000, 0x2000, CRC(e2bdce13) SHA1(50d990095a35837570b3117763e990440d8656ae) ) - ROM_LOAD( "1.l5", 0x4000, 0x2000, CRC(4632263b) SHA1(b1fbb851ffd8aff36aff6f36672122fef3dd0af1) ) // what's this rom? ROM_LOAD( "4.f5", 0x8000, 0x2000, CRC(d27e0184) SHA1(f108993fc3fce9173a4961a76fc60655fdd1cd25) ) + ROM_LOAD( "1.l5", 0x10000, 0x2000, CRC(4632263b) SHA1(b1fbb851ffd8aff36aff6f36672122fef3dd0af1) ) + ROM_LOAD( "2.m5", 0x12000, 0x2000, CRC(e2bdce13) SHA1(50d990095a35837570b3117763e990440d8656ae) ) ROM_REGION( 0x2000, "audiocpu", 0 ) ROM_LOAD( "s.s5", 0x0000, 0x2000, CRC(34515a7b) SHA1(affe34198b77bddd314fae2851fd6a29d80f734e) )