summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lastbank.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lastbank.cpp')
-rw-r--r--src/mame/drivers/lastbank.cpp158
1 files changed, 14 insertions, 144 deletions
diff --git a/src/mame/drivers/lastbank.cpp b/src/mame/drivers/lastbank.cpp
index 3bae4eb2926..c160ec71668 100644
--- a/src/mame/drivers/lastbank.cpp
+++ b/src/mame/drivers/lastbank.cpp
@@ -19,7 +19,6 @@
#include "machine/nvram.h"
#include "machine/tc009xlvc.h"
#include "machine/timer.h"
-#include "emupal.h"
#include "screen.h"
#include "speaker.h"
@@ -35,13 +34,10 @@ public:
, m_vdp(*this, "tc0091lvc")
, m_oki(*this, "oki")
, m_essnd(*this, "essnd")
- , m_mainbank(*this, "mainbank")
{ }
void lastbank(machine_config &config);
- void init_lastbank();
-
DECLARE_CUSTOM_INPUT_MEMBER(sound_status_r);
private:
@@ -50,37 +46,19 @@ private:
required_device<okim6295_device> m_oki;
required_device<es8712_device> m_essnd;
- required_memory_bank m_mainbank;
-
virtual void machine_start() override;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
- uint8_t m_ram_bank[4];
- uint8_t m_rom_bank;
- uint8_t m_irq_vector[3];
- uint8_t m_irq_enable;
uint8_t m_mux_data;
uint8_t m_sound_flags;
- template<int Bank> DECLARE_READ8_MEMBER(ram_r);
- template<int Bank> DECLARE_WRITE8_MEMBER(ram_w);
-
DECLARE_WRITE8_MEMBER(output_w);
DECLARE_READ8_MEMBER(mux_0_r);
DECLARE_WRITE8_MEMBER(mux_w);
DECLARE_WRITE8_MEMBER(sound_flags_w);
- DECLARE_READ8_MEMBER(rom_bank_r);
- DECLARE_WRITE8_MEMBER(rom_bank_w);
- DECLARE_READ8_MEMBER(ram_bank_r);
- DECLARE_WRITE8_MEMBER(ram_bank_w);
- DECLARE_READ8_MEMBER(irq_vector_r);
- DECLARE_WRITE8_MEMBER(irq_vector_w);
- DECLARE_READ8_MEMBER(irq_enable_r);
- DECLARE_WRITE8_MEMBER(irq_enable_w);
-
TIMER_DEVICE_CALLBACK_MEMBER(irq_scanline);
void lastbank_audio_io(address_map &map);
void lastbank_audio_map(address_map &map);
@@ -90,10 +68,6 @@ private:
void lastbank_state::machine_start()
{
- save_item(NAME(m_ram_bank));
- save_item(NAME(m_rom_bank));
- save_item(NAME(m_irq_vector));
- save_item(NAME(m_irq_enable));
save_item(NAME(m_mux_data));
save_item(NAME(m_sound_flags));
}
@@ -115,62 +89,6 @@ WRITE_LINE_MEMBER(lastbank_state::screen_vblank)
}
}
-READ8_MEMBER(lastbank_state::rom_bank_r)
-{
- return m_rom_bank;
-}
-
-WRITE8_MEMBER(lastbank_state::rom_bank_w)
-{
- if (m_rom_bank != data)
- {
- m_rom_bank = data;
- m_mainbank->set_entry(m_rom_bank);
- }
-}
-
-READ8_MEMBER(lastbank_state::irq_vector_r)
-{
- return m_irq_vector[offset];
-}
-
-WRITE8_MEMBER(lastbank_state::irq_vector_w)
-{
- m_irq_vector[offset] = data;
-}
-
-READ8_MEMBER(lastbank_state::irq_enable_r)
-{
- return m_irq_enable;
-}
-
-WRITE8_MEMBER(lastbank_state::irq_enable_w)
-{
- m_irq_enable = data;
-}
-
-READ8_MEMBER(lastbank_state::ram_bank_r)
-{
- return m_ram_bank[offset];
-}
-
-WRITE8_MEMBER(lastbank_state::ram_bank_w)
-{
- m_ram_bank[offset] = data;
-}
-
-template<int Bank>
-READ8_MEMBER(lastbank_state::ram_r)
-{
- return m_vdp->space().read_byte(offset + (m_ram_bank[Bank]) * 0x1000);;
-}
-
-template<int Bank>
-WRITE8_MEMBER(lastbank_state::ram_w)
-{
- m_vdp->space().write_byte(offset + (m_ram_bank[Bank]) * 0x1000,data);;
-}
-
READ8_MEMBER(lastbank_state::mux_0_r)
{
@@ -230,21 +148,15 @@ CUSTOM_INPUT_MEMBER(lastbank_state::sound_status_r)
void lastbank_state::tc0091lvc_map(address_map &map)
{
- map(0x0000, 0x5fff).rom();
- map(0x6000, 0x7fff).bankr("mainbank");
+ map(0x0000, 0xfdff).m(m_vdp, FUNC(tc0091lvc_device::cpu_map));
map(0x8000, 0x9fff).ram().share("nvram");
- map(0xc000, 0xcfff).rw(FUNC(lastbank_state::ram_r<0>), FUNC(lastbank_state::ram_w<0>));
- map(0xd000, 0xdfff).rw(FUNC(lastbank_state::ram_r<1>), FUNC(lastbank_state::ram_w<1>));
- map(0xe000, 0xefff).rw(FUNC(lastbank_state::ram_r<2>), FUNC(lastbank_state::ram_w<2>));
- map(0xf000, 0xfdff).rw(FUNC(lastbank_state::ram_r<3>), FUNC(lastbank_state::ram_w<3>));
-
map(0xfe00, 0xfeff).rw(m_vdp, FUNC(tc0091lvc_device::vregs_r), FUNC(tc0091lvc_device::vregs_w));
- map(0xff00, 0xff02).rw(FUNC(lastbank_state::irq_vector_r), FUNC(lastbank_state::irq_vector_w));
- map(0xff03, 0xff03).rw(FUNC(lastbank_state::irq_enable_r), FUNC(lastbank_state::irq_enable_w));
- map(0xff04, 0xff07).rw(FUNC(lastbank_state::ram_bank_r), FUNC(lastbank_state::ram_bank_w));
- map(0xff08, 0xff08).rw(FUNC(lastbank_state::rom_bank_r), FUNC(lastbank_state::rom_bank_w));
+ map(0xff00, 0xff02).rw(m_vdp, FUNC(tc0091lvc_device::irq_vector_r), FUNC(tc0091lvc_device::irq_vector_w));
+ map(0xff03, 0xff03).rw(m_vdp, FUNC(tc0091lvc_device::irq_enable_r), FUNC(tc0091lvc_device::irq_enable_w));
+ map(0xff04, 0xff07).rw(m_vdp, FUNC(tc0091lvc_device::ram_bank_r), FUNC(tc0091lvc_device::ram_bank_w));
+ map(0xff08, 0xff08).rw(m_vdp, FUNC(tc0091lvc_device::rom_bank_r), FUNC(tc0091lvc_device::rom_bank_w));
}
void lastbank_state::lastbank_map(address_map &map)
@@ -465,50 +377,18 @@ static INPUT_PORTS_START( lastbank )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-static const gfx_layout bg2_layout =
-{
- 8, 8,
- RGN_FRAC(1,1),
- 4,
- { 8, 12, 0, 4 },
- { 3, 2, 1, 0, 19, 18, 17, 16 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*8*4
-};
-
-#define O 8*8*4
-#define O2 2*O
-static const gfx_layout sp2_layout =
-{
- 16, 16,
- RGN_FRAC(1,1),
- 4,
- { 8, 12, 0, 4 },
- { 3, 2, 1, 0, 19, 18, 17, 16, O+3, O+2, O+1, O+0, O+19, O+18, O+17, O+16 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, O2+0*32, O2+1*32, O2+2*32, O2+3*32, O2+4*32, O2+5*32, O2+6*32, O2+7*32 },
- 8*8*4*4
-};
-#undef O
-#undef O2
-
-
-static GFXDECODE_START( gfx_lastbank )
- GFXDECODE_ENTRY( "gfx1", 0, bg2_layout, 0, 16 )
- GFXDECODE_ENTRY( "gfx1", 0, sp2_layout, 0, 16 )
-GFXDECODE_END
-
TIMER_DEVICE_CALLBACK_MEMBER(lastbank_state::irq_scanline)
{
int scanline = param;
- if (scanline == 240 && (m_irq_enable & 4))
+ if (scanline == 240 && (m_vdp->irq_enable() & 4))
{
- m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_irq_vector[2]); // Z80
+ m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_vdp->irq_vector(2)); // TC0091LVC
}
- if (scanline == 0 && (m_irq_enable & 2))
+ if (scanline == 0 && (m_vdp->irq_enable() & 2))
{
- m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_irq_vector[1]); // Z80
+ m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_vdp->irq_vector(1)); // TC0091LVC
}
}
@@ -539,13 +419,9 @@ void lastbank_state::lastbank(machine_config &config)
screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(lastbank_state::screen_update));
screen.screen_vblank().set(FUNC(lastbank_state::screen_vblank));
- screen.set_palette("palette");
-
- GFXDECODE(config, "gfxdecode", "palette", gfx_lastbank );
- PALETTE(config, "palette").set_entries(0x100);
+ screen.set_palette("tc0091lvc:palette");
TC0091LVC(config, m_vdp, 0);
- m_vdp->set_gfxdecode_tag("gfxdecode");
// MCFG_VIDEO_START_OVERRIDE(lastbank_state,lastbank)
@@ -578,13 +454,13 @@ void lastbank_state::lastbank(machine_config &config)
***************************************************************************/
ROM_START( lastbank )
- ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_REGION( 0x40000, "tc0091lvc", 0 )
ROM_LOAD( "3.u9", 0x00000, 0x40000, CRC(f430e1f0) SHA1(dd5b697f5c2250d98911f4c7d3e7d4cc16b0b40f) )
- ROM_REGION( 0x40000, "audiocpu", 0 )
+ ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "8.u48", 0x00000, 0x10000, CRC(3a7bfe10) SHA1(7dc543e11d3c0b9872fcc622339ade25383a1eb3) )
- ROM_REGION( 0x120000, "gfx1", 0 )
+ ROM_REGION( 0x120000, "tc0091lvc:gfx", 0 )
ROM_LOAD( "u11", 0x000000, 0x100000, CRC(2588d82d) SHA1(426f6821862d54123e53410e2776586ddf6b21e7) )
ROM_LOAD( "5.u10", 0x100000, 0x020000, CRC(51f3c5a7) SHA1(73d4c8817fe96d75be32c43e816e93c52b5d2b27) )
@@ -595,10 +471,4 @@ ROM_START( lastbank )
ROM_LOAD( "7.u60", 0x00000, 0x80000, CRC(41be7146) SHA1(00f1c0d5809efccf888e27518a2a5876c4b633d8) )
ROM_END
-void lastbank_state::init_lastbank()
-{
- uint32_t max = memregion("maincpu")->bytes() / 0x2000;
- m_mainbank->configure_entries(0, max, memregion("maincpu")->base(), 0x2000);
-}
-
-GAME( 1994, lastbank, 0, lastbank, lastbank, lastbank_state, init_lastbank, ROT0, "Excellent System", "Last Bank (v1.16)", 0 )
+GAME( 1994, lastbank, 0, lastbank, lastbank, lastbank_state, empty_init, ROT0, "Excellent System", "Last Bank (v1.16)", 0 )