diff options
Diffstat (limited to 'src/mame/drivers/dfruit.cpp')
-rw-r--r-- | src/mame/drivers/dfruit.cpp | 183 |
1 files changed, 17 insertions, 166 deletions
diff --git a/src/mame/drivers/dfruit.cpp b/src/mame/drivers/dfruit.cpp index 70ffd2dfddf..45dbfd85a95 100644 --- a/src/mame/drivers/dfruit.cpp +++ b/src/mame/drivers/dfruit.cpp @@ -25,7 +25,6 @@ #include "machine/tc009xlvc.h" #include "machine/timer.h" #include "sound/2203intf.h" -#include "emupal.h" #include "screen.h" #include "speaker.h" @@ -48,35 +47,8 @@ private: 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; - - DECLARE_READ8_MEMBER(dfruit_rom_r); - - DECLARE_READ8_MEMBER(dfruit_ram_0_r); - DECLARE_READ8_MEMBER(dfruit_ram_1_r); - DECLARE_READ8_MEMBER(dfruit_ram_2_r); - DECLARE_READ8_MEMBER(dfruit_ram_3_r); - DECLARE_WRITE8_MEMBER(dfruit_ram_0_w); - DECLARE_WRITE8_MEMBER(dfruit_ram_1_w); - DECLARE_WRITE8_MEMBER(dfruit_ram_2_w); - DECLARE_WRITE8_MEMBER(dfruit_ram_3_w); - - DECLARE_READ8_MEMBER(dfruit_rom_bank_r); - DECLARE_WRITE8_MEMBER(dfruit_rom_bank_w); - DECLARE_READ8_MEMBER(dfruit_ram_bank_r); - DECLARE_WRITE8_MEMBER(dfruit_ram_bank_w); - DECLARE_READ8_MEMBER(dfruit_irq_vector_r); - DECLARE_WRITE8_MEMBER(dfruit_irq_vector_w); - DECLARE_READ8_MEMBER(dfruit_irq_enable_r); - DECLARE_WRITE8_MEMBER(dfruit_irq_enable_w); - DECLARE_WRITE8_MEMBER(output_w); - - uint8_t ram_bank_r(uint16_t offset, uint8_t bank_num); - void ram_bank_w(uint16_t offset, uint8_t data, uint8_t bank_num); + TIMER_DEVICE_CALLBACK_MEMBER(scanline_callback); void dfruit_map(address_map &map); void tc0091lvc_map(address_map &map); @@ -103,92 +75,20 @@ WRITE_LINE_MEMBER(dfruit_state::screen_vblank) } } -READ8_MEMBER(dfruit_state::dfruit_rom_r) -{ - uint8_t *ROM = memregion("maincpu")->base(); - - return ROM[offset + m_rom_bank * 0x2000]; -} - -READ8_MEMBER(dfruit_state::dfruit_rom_bank_r) -{ - return m_rom_bank; -} - -WRITE8_MEMBER(dfruit_state::dfruit_rom_bank_w) -{ - m_rom_bank = data; -} - -READ8_MEMBER(dfruit_state::dfruit_irq_vector_r) -{ - return m_irq_vector[offset]; -} - -WRITE8_MEMBER(dfruit_state::dfruit_irq_vector_w) -{ - m_irq_vector[offset] = data; -} - -READ8_MEMBER(dfruit_state::dfruit_irq_enable_r) -{ - return m_irq_enable; -} - -WRITE8_MEMBER(dfruit_state::dfruit_irq_enable_w) -{ - m_irq_enable = data; -} - -READ8_MEMBER(dfruit_state::dfruit_ram_bank_r) -{ - return m_ram_bank[offset]; -} - -WRITE8_MEMBER(dfruit_state::dfruit_ram_bank_w) -{ - m_ram_bank[offset] = data; -} - -uint8_t dfruit_state::ram_bank_r(uint16_t offset, uint8_t bank_num) -{ - return m_vdp->space().read_byte(offset + (m_ram_bank[bank_num]) * 0x1000);; -} - -void dfruit_state::ram_bank_w(uint16_t offset, uint8_t data, uint8_t bank_num) -{ - m_vdp->space().write_byte(offset + (m_ram_bank[bank_num]) * 0x1000, data);; -} - -READ8_MEMBER(dfruit_state::dfruit_ram_0_r) { return ram_bank_r(offset, 0); } -READ8_MEMBER(dfruit_state::dfruit_ram_1_r) { return ram_bank_r(offset, 1); } -READ8_MEMBER(dfruit_state::dfruit_ram_2_r) { return ram_bank_r(offset, 2); } -READ8_MEMBER(dfruit_state::dfruit_ram_3_r) { return ram_bank_r(offset, 3); } -WRITE8_MEMBER(dfruit_state::dfruit_ram_0_w) { ram_bank_w(offset, data, 0); } -WRITE8_MEMBER(dfruit_state::dfruit_ram_1_w) { ram_bank_w(offset, data, 1); } -WRITE8_MEMBER(dfruit_state::dfruit_ram_2_w) { ram_bank_w(offset, data, 2); } -WRITE8_MEMBER(dfruit_state::dfruit_ram_3_w) { ram_bank_w(offset, data, 3); } void dfruit_state::tc0091lvc_map(address_map &map) { - map(0x0000, 0x5fff).rom(); - map(0x6000, 0x7fff).r(FUNC(dfruit_state::dfruit_rom_r)); + map(0x0000, 0xfdff).m(m_vdp, FUNC(tc0091lvc_device::cpu_map)); map(0x8000, 0x9fff).ram(); - map(0xc000, 0xcfff).rw(FUNC(dfruit_state::dfruit_ram_0_r), FUNC(dfruit_state::dfruit_ram_0_w)); - map(0xd000, 0xdfff).rw(FUNC(dfruit_state::dfruit_ram_1_r), FUNC(dfruit_state::dfruit_ram_1_w)); - map(0xe000, 0xefff).rw(FUNC(dfruit_state::dfruit_ram_2_r), FUNC(dfruit_state::dfruit_ram_2_w)); - map(0xf000, 0xfdff).rw(FUNC(dfruit_state::dfruit_ram_3_r), FUNC(dfruit_state::dfruit_ram_3_w)); - map(0xfe00, 0xfeff).rw(m_vdp, FUNC(tc0091lvc_device::vregs_r), FUNC(tc0091lvc_device::vregs_w)); - map(0xff00, 0xff02).rw(FUNC(dfruit_state::dfruit_irq_vector_r), FUNC(dfruit_state::dfruit_irq_vector_w)); - map(0xff03, 0xff03).rw(FUNC(dfruit_state::dfruit_irq_enable_r), FUNC(dfruit_state::dfruit_irq_enable_w)); - map(0xff04, 0xff07).rw(FUNC(dfruit_state::dfruit_ram_bank_r), FUNC(dfruit_state::dfruit_ram_bank_w)); - map(0xff08, 0xff08).rw(FUNC(dfruit_state::dfruit_rom_bank_r), FUNC(dfruit_state::dfruit_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 dfruit_state::dfruit_map(address_map &map) { tc0091lvc_map(map); @@ -371,68 +271,23 @@ static INPUT_PORTS_START( gemcrush ) 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 - -#if 0 -static const gfx_layout char_layout = -{ - 8, 8, - 1024, - 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 -}; -#endif - -static GFXDECODE_START( gfx_dfruit ) - GFXDECODE_ENTRY( "gfx1", 0, bg2_layout, 0, 16 ) - GFXDECODE_ENTRY( "gfx1", 0, sp2_layout, 0, 16 ) - //GFXDECODE_ENTRY( nullptr, 0, char_layout, 0, 16 ) // Ram-based -GFXDECODE_END - TIMER_DEVICE_CALLBACK_MEMBER(dfruit_state::scanline_callback) { 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]); // TC0091LVC + 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]); // TC0091LVC + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_vdp->irq_vector(1)); // TC0091LVC } - if (scanline == 196 && (m_irq_enable & 1)) + if (scanline == 196 && (m_vdp->irq_enable() & 1)) { - //m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_irq_vector[0]); // TC0091LVC + //m_maincpu->set_input_line_and_vector(0, HOLD_LINE, m_vdp->irq_vector(0)); // TC0091LVC } } @@ -461,13 +316,9 @@ void dfruit_state::dfruit(machine_config &config) screen.set_visarea(0*8, 40*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(dfruit_state::screen_update)); screen.screen_vblank().set(FUNC(dfruit_state::screen_vblank)); - screen.set_palette("palette"); - - GFXDECODE(config, "gfxdecode", "palette", gfx_dfruit); - PALETTE(config, "palette").set_entries(0x100); + screen.set_palette("tc0091lvc:palette"); TC0091LVC(config, m_vdp, 0); - m_vdp->set_gfxdecode_tag("gfxdecode"); i8255_device &ppi(I8255A(config, "i8255")); ppi.in_pa_callback().set_ioport("IN0"); @@ -490,18 +341,18 @@ void dfruit_state::dfruit(machine_config &config) ***************************************************************************/ ROM_START( dfruit ) - ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_REGION( 0x40000, "tc0091lvc", 0 ) ROM_LOAD( "n-3800ii_ver.1.20.ic2", 0x00000, 0x40000, CRC(4e7c3700) SHA1(17bc731a91460d8f67c2b2b6e038641d57cf93be) ) - ROM_REGION( 0x80000, "gfx1", 0 ) + ROM_REGION( 0x80000, "tc0091lvc:gfx", 0 ) ROM_LOAD( "c2.ic10", 0x00000, 0x80000, CRC(d869ab24) SHA1(382e874a846855a7f6f8811625aaa30d9dfa1ce2) ) ROM_END ROM_START( gemcrush ) - ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE00 ) + ROM_REGION( 0x40000, "tc0091lvc", ROMREGION_ERASE00 ) ROM_LOAD( "gcj_00.ic2", 0x000000, 0x040000, CRC(e1431390) SHA1(f1f63e23d4b73cc099adddeadcf1ea3e27688bcd) ) /* ST M27C2001 EPROM */ - ROM_REGION( 0x80000, "gfx1", ROMREGION_ERASE00 ) + ROM_REGION( 0x80000, "tc0091lvc:gfx", ROMREGION_ERASE00 ) ROM_LOAD( "gcj_01.ic10", 0x000000, 0x080000, CRC(5b9e7a6e) SHA1(345357feed8e80e6a06093fcb69f2b38063d057a) ) /* HN27C4096 EPROM */ ROM_END |