From ecf99d87ae417df77df11fea0f5976e8fbfe63e0 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 31 Mar 2019 19:50:32 +0900 Subject: simpl156.cpp : Updates Simplify handlers, Simplify gfxdecode, Reduce duplicates, Fix namings, spacing, OKI clock confirmed by PCB OSCs - PCBs hasn't 32.22MHz XTAL --- src/mame/drivers/simpl156.cpp | 196 ++++++++++++++++++------------------------ src/mame/includes/simpl156.h | 29 +++---- src/mame/video/simpl156.cpp | 14 +-- 3 files changed, 106 insertions(+), 133 deletions(-) diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp index afd62eb23c9..bda220440e4 100644 --- a/src/mame/drivers/simpl156.cpp +++ b/src/mame/drivers/simpl156.cpp @@ -149,7 +149,7 @@ static INPUT_PORTS_START( magdrop ) INPUT_PORTS_END -WRITE32_MEMBER(simpl156_state::simpl156_eeprom_w) +void simpl156_state::eeprom_w(u32 data) { //int okibank; @@ -165,12 +165,12 @@ WRITE32_MEMBER(simpl156_state::simpl156_eeprom_w) /* we need to throw away bits for all ram accesses as the devices are connected as 16-bit */ -READ32_MEMBER(simpl156_state::simpl156_spriteram_r) +u32 simpl156_state::spriteram_r(offs_t offset) { return m_spriteram[offset] ^ 0xffff0000; } -WRITE32_MEMBER(simpl156_state::simpl156_spriteram_w) +void simpl156_state::spriteram_w(offs_t offset, u32 data, u32 mem_mask) { data &= 0x0000ffff; mem_mask &= 0x0000ffff; @@ -179,12 +179,12 @@ WRITE32_MEMBER(simpl156_state::simpl156_spriteram_w) } -READ32_MEMBER(simpl156_state::simpl156_mainram_r) +u32 simpl156_state::mainram_r(offs_t offset) { - return m_mainram[offset]^0xffff0000; + return m_mainram[offset] ^ 0xffff0000; } -WRITE32_MEMBER(simpl156_state::simpl156_mainram_w) +void simpl156_state::mainram_w(offs_t offset, u32 data, u32 mem_mask) { data &= 0x0000ffff; mem_mask &= 0x0000ffff; @@ -192,30 +192,19 @@ WRITE32_MEMBER(simpl156_state::simpl156_mainram_w) COMBINE_DATA(&m_mainram[offset]); } -READ32_MEMBER(simpl156_state::simpl156_pf1_rowscroll_r) +template +u32 simpl156_state::rowscroll_r(offs_t offset) { - return m_pf1_rowscroll[offset] ^ 0xffff0000; + return m_rowscroll[Layer][offset] ^ 0xffff0000; } -WRITE32_MEMBER(simpl156_state::simpl156_pf1_rowscroll_w) +template +void simpl156_state::rowscroll_w(offs_t offset, u32 data, u32 mem_mask) { data &= 0x0000ffff; mem_mask &= 0x0000ffff; - COMBINE_DATA(&m_pf1_rowscroll[offset]); -} - -READ32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_r) -{ - return m_pf2_rowscroll[offset] ^ 0xffff0000; -} - -WRITE32_MEMBER(simpl156_state::simpl156_pf2_rowscroll_w) -{ - data &= 0x0000ffff; - mem_mask &= 0x0000ffff; - - COMBINE_DATA(&m_pf2_rowscroll[offset]); + COMBINE_DATA(&m_rowscroll[Layer][offset]); } /* Memory Map controled by PALs */ @@ -225,16 +214,16 @@ void simpl156_state::joemacr_map(address_map &map) { map.unmap_value_high(); map(0x000000, 0x07ffff).rom(); - map(0x100000, 0x107fff).rw(FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram - map(0x110000, 0x111fff).rw(FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x100000, 0x107fff).rw(FUNC(simpl156_state::mainram_r), FUNC(simpl156_state::mainram_w)).share("mainram"); // main ram + map(0x110000, 0x111fff).rw(FUNC(simpl156_state::spriteram_r), FUNC(simpl156_state::spriteram_w)); map(0x120000, 0x120fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); - map(0x130000, 0x130003).portr("IN1").w(FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x130000, 0x130003).portr("IN1").w(FUNC(simpl156_state::eeprom_w)); map(0x140000, 0x14001f).rw(m_deco_tilegen, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); map(0x150000, 0x151fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x152000, 0x153fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x154000, 0x155fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); - map(0x160000, 0x161fff).rw(FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); - map(0x164000, 0x165fff).rw(FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x160000, 0x161fff).rw(FUNC(simpl156_state::rowscroll_r<0>), FUNC(simpl156_state::rowscroll_w<0>)); + map(0x164000, 0x165fff).rw(FUNC(simpl156_state::rowscroll_r<1>), FUNC(simpl156_state::rowscroll_w<1>)); map(0x170000, 0x170003).readonly().nopw(); // ? map(0x180000, 0x180000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0x1c0000, 0x1c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); @@ -251,16 +240,16 @@ void simpl156_state::chainrec_map(address_map &map) map(0x200000, 0x200003).portr("IN0"); map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) map(0x3c0000, 0x3c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x400000, 0x407fff).rw(FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram? - map(0x410000, 0x411fff).rw(FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x400000, 0x407fff).rw(FUNC(simpl156_state::mainram_r), FUNC(simpl156_state::mainram_w)).share("mainram"); // main ram? + map(0x410000, 0x411fff).rw(FUNC(simpl156_state::spriteram_r), FUNC(simpl156_state::spriteram_w)); map(0x420000, 0x420fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); - map(0x430000, 0x430003).portr("IN1").w(FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x430000, 0x430003).portr("IN1").w(FUNC(simpl156_state::eeprom_w)); map(0x440000, 0x44001f).rw(m_deco_tilegen, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); map(0x450000, 0x451fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x452000, 0x453fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x454000, 0x455fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); - map(0x460000, 0x461fff).rw(FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); - map(0x464000, 0x465fff).rw(FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x460000, 0x461fff).rw(FUNC(simpl156_state::rowscroll_r<0>), FUNC(simpl156_state::rowscroll_w<0>)); + map(0x464000, 0x465fff).rw(FUNC(simpl156_state::rowscroll_r<1>), FUNC(simpl156_state::rowscroll_w<1>)); map(0x470000, 0x470003).readonly().nopw(); // ?? map(0x480000, 0x480000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); } @@ -274,16 +263,16 @@ void simpl156_state::magdrop_map(address_map &map) map(0x200000, 0x200003).portr("IN0"); map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) map(0x340000, 0x340000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x380000, 0x387fff).rw(FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram? - map(0x390000, 0x391fff).rw(FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x380000, 0x387fff).rw(FUNC(simpl156_state::mainram_r), FUNC(simpl156_state::mainram_w)).share("mainram"); // main ram? + map(0x390000, 0x391fff).rw(FUNC(simpl156_state::spriteram_r), FUNC(simpl156_state::spriteram_w)); map(0x3a0000, 0x3a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); - map(0x3b0000, 0x3b0003).portr("IN1").w(FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x3b0000, 0x3b0003).portr("IN1").w(FUNC(simpl156_state::eeprom_w)); map(0x3c0000, 0x3c001f).rw(m_deco_tilegen, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); map(0x3d0000, 0x3d1fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x3d2000, 0x3d3fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x3d4000, 0x3d5fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); - map(0x3e0000, 0x3e1fff).rw(FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); - map(0x3e4000, 0x3e5fff).rw(FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x3e0000, 0x3e1fff).rw(FUNC(simpl156_state::rowscroll_r<0>), FUNC(simpl156_state::rowscroll_w<0>)); + map(0x3e4000, 0x3e5fff).rw(FUNC(simpl156_state::rowscroll_r<1>), FUNC(simpl156_state::rowscroll_w<1>)); map(0x3f0000, 0x3f0003).readonly().nopw(); //? map(0x400000, 0x400000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); } @@ -297,16 +286,16 @@ void simpl156_state::magdropp_map(address_map &map) map(0x200000, 0x200003).portr("IN0"); map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) map(0x4c0000, 0x4c0000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x680000, 0x687fff).rw(FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram? - map(0x690000, 0x691fff).rw(FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x680000, 0x687fff).rw(FUNC(simpl156_state::mainram_r), FUNC(simpl156_state::mainram_w)).share("mainram"); // main ram? + map(0x690000, 0x691fff).rw(FUNC(simpl156_state::spriteram_r), FUNC(simpl156_state::spriteram_w)); map(0x6a0000, 0x6a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); - map(0x6b0000, 0x6b0003).portr("IN1").w(FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x6b0000, 0x6b0003).portr("IN1").w(FUNC(simpl156_state::eeprom_w)); map(0x6c0000, 0x6c001f).rw(m_deco_tilegen, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); map(0x6d0000, 0x6d1fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x6d2000, 0x6d3fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x6d4000, 0x6d5fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); - map(0x6e0000, 0x6e1fff).rw(FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); - map(0x6e4000, 0x6e5fff).rw(FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x6e0000, 0x6e1fff).rw(FUNC(simpl156_state::rowscroll_r<0>), FUNC(simpl156_state::rowscroll_w<0>)); + map(0x6e4000, 0x6e5fff).rw(FUNC(simpl156_state::rowscroll_r<1>), FUNC(simpl156_state::rowscroll_w<1>)); map(0x6f0000, 0x6f0003).readonly().nopw(); // ? map(0x780000, 0x780000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); } @@ -319,16 +308,16 @@ void simpl156_state::mitchell156_map(address_map &map) map(0x000000, 0x07ffff).rom(); map(0x100000, 0x100000).rw("okisfx", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0x140000, 0x140000).rw(m_okimusic, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x180000, 0x187fff).rw(FUNC(simpl156_state::simpl156_mainram_r), FUNC(simpl156_state::simpl156_mainram_w)).share("mainram"); // main ram - map(0x190000, 0x191fff).rw(FUNC(simpl156_state::simpl156_spriteram_r), FUNC(simpl156_state::simpl156_spriteram_w)); + map(0x180000, 0x187fff).rw(FUNC(simpl156_state::mainram_r), FUNC(simpl156_state::mainram_w)).share("mainram"); // main ram + map(0x190000, 0x191fff).rw(FUNC(simpl156_state::spriteram_r), FUNC(simpl156_state::spriteram_w)); map(0x1a0000, 0x1a0fff).rw(m_palette, FUNC(palette_device::read16), FUNC(palette_device::write16)).umask32(0x0000ffff).share("palette"); - map(0x1b0000, 0x1b0003).portr("IN1").w(FUNC(simpl156_state::simpl156_eeprom_w)); + map(0x1b0000, 0x1b0003).portr("IN1").w(FUNC(simpl156_state::eeprom_w)); map(0x1c0000, 0x1c001f).rw(m_deco_tilegen, FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); map(0x1d0000, 0x1d1fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x1d2000, 0x1d3fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_dword_r), FUNC(deco16ic_device::pf1_data_dword_w)); map(0x1d4000, 0x1d5fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf2_data_dword_r), FUNC(deco16ic_device::pf2_data_dword_w)); - map(0x1e0000, 0x1e1fff).rw(FUNC(simpl156_state::simpl156_pf1_rowscroll_r), FUNC(simpl156_state::simpl156_pf1_rowscroll_w)); - map(0x1e4000, 0x1e5fff).rw(FUNC(simpl156_state::simpl156_pf2_rowscroll_r), FUNC(simpl156_state::simpl156_pf2_rowscroll_w)); + map(0x1e0000, 0x1e1fff).rw(FUNC(simpl156_state::rowscroll_r<0>), FUNC(simpl156_state::rowscroll_w<0>)); + map(0x1e4000, 0x1e5fff).rw(FUNC(simpl156_state::rowscroll_r<1>), FUNC(simpl156_state::rowscroll_w<1>)); map(0x1f0000, 0x1f0003).readonly().nopw(); // ? map(0x200000, 0x200003).portr("IN0"); map(0x201000, 0x201fff).ram().share("systemram"); // work ram (32-bit) @@ -341,8 +330,8 @@ static const gfx_layout tile_8x8_layout = RGN_FRAC(1,2), 4, { RGN_FRAC(1,2)+8,RGN_FRAC(1,2)+0,RGN_FRAC(0,2)+8,RGN_FRAC(0,2)+0 }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, + { STEP8(0,1) }, + { STEP8(0,8*2) }, 8*16 }; @@ -352,31 +341,18 @@ static const gfx_layout tile_16x16_layout = RGN_FRAC(1,2), 4, { RGN_FRAC(1,2)+8,RGN_FRAC(1,2)+0,RGN_FRAC(0,2)+8,RGN_FRAC(0,2)+0 }, - { 256,257,258,259,260,261,262,263,0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,8*16,9*16,10*16,11*16,12*16,13*16,14*16,15*16 }, + { STEP8(8*2*16,1), STEP8(0,1) }, + { STEP16(0,8*2) }, 32*16 }; -static const gfx_layout spritelayout = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { 24,8,16,0 }, - { 512,513,514,515,516,517,518,519, 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 8*32, 9*32,10*32,11*32,12*32,13*32,14*32,15*32}, - 32*32 -}; - static GFXDECODE_START( gfx_simpl156 ) - GFXDECODE_ENTRY( "gfx1", 0, tile_8x8_layout, 0, 32 ) /* Tiles (8x8) */ - GFXDECODE_ENTRY( "gfx1", 0, tile_16x16_layout, 0, 32 ) /* Tiles (16x16) */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x200, 32) /* Sprites (16x16) */ - + GFXDECODE_ENTRY( "gfx1", 0, tile_8x8_layout, 0, 32 ) /* Tiles (8x8) */ + GFXDECODE_ENTRY( "gfx1", 0, tile_16x16_layout, 0, 32 ) /* Tiles (16x16) */ + GFXDECODE_ENTRY( "gfx2", 0, tile_16x16_layout, 0x200, 32 ) /* Sprites (16x16) */ GFXDECODE_END -INTERRUPT_GEN_MEMBER(simpl156_state::simpl156_vbl_interrupt) +INTERRUPT_GEN_MEMBER(simpl156_state::interrupt) { device.execute().set_input_line(ARM_IRQ_LINE, HOLD_LINE); } @@ -394,7 +370,7 @@ DECOSPR_PRIORITY_CB_MEMBER(simpl156_state::pri_callback) case 0x0000: return 0; case 0x4000: return 0xf0; case 0x8000: return 0xf0 | 0xcc; - case 0xc000: return 0xf0 | 0xcc;; /* or 0xf0|0xcc|0xaa ? */ + case 0xc000: return 0xf0 | 0xcc; /* or 0xf0|0xcc|0xaa ? */ } return 0; @@ -404,9 +380,9 @@ DECOSPR_PRIORITY_CB_MEMBER(simpl156_state::pri_callback) void simpl156_state::chainrec(machine_config &config) { /* basic machine hardware */ - ARM(config, m_maincpu, 28000000 /* /4 */); /*DE156*/ /* 7.000 MHz */ /* measured at 7.. seems to need 28? */ + ARM(config, m_maincpu, 28_MHz_XTAL /* /4 */); /*DE156*/ /* 7.000 MHz */ /* measured at 7.. seems to need 28? */ m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::chainrec_map); - m_maincpu->set_vblank_int("screen", FUNC(simpl156_state::simpl156_vbl_interrupt)); + m_maincpu->set_vblank_int("screen", FUNC(simpl156_state::interrupt)); EEPROM_93C46_16BIT(config, "eeprom"); // 93C45 @@ -416,7 +392,7 @@ void simpl156_state::chainrec(machine_config &config) screen.set_vblank_time(ATTOSECONDS_IN_USEC(800)); screen.set_size(64*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(simpl156_state::screen_update_simpl156)); + screen.set_screen_update(FUNC(simpl156_state::screen_update)); screen.set_palette(m_palette); PALETTE(config, m_palette); @@ -448,11 +424,11 @@ void simpl156_state::chainrec(machine_config &config) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - okim6295_device &okisfx(OKIM6295(config, "okisfx", 32220000/32, okim6295_device::PIN7_HIGH)); + okim6295_device &okisfx(OKIM6295(config, "okisfx", 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH)); okisfx.add_route(ALL_OUTPUTS, "lspeaker", 0.6); okisfx.add_route(ALL_OUTPUTS, "rspeaker", 0.6); - OKIM6295(config, m_okimusic, 32220000/16, okim6295_device::PIN7_HIGH); + OKIM6295(config, m_okimusic, 28_MHz_XTAL / 14, okim6295_device::PIN7_HIGH); m_okimusic->add_route(ALL_OUTPUTS, "lspeaker", 0.2); m_okimusic->add_route(ALL_OUTPUTS, "rspeaker", 0.2); } @@ -488,7 +464,7 @@ void simpl156_state::mitchell156(machine_config &config) /* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &simpl156_state::mitchell156_map); - m_okimusic->set_clock(32220000/32); + m_okimusic->set_clock(28_MHz_XTAL / 28); } @@ -533,8 +509,8 @@ ROM_START( joemacr ) ROM_LOAD( "02.u8h", 0x080000, 0x080000, CRC(642c08db) SHA1(9a541fd56ae34c24f803e08869702be6fafd81d1) ) ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mbn01", 0x000001, 0x080000, CRC(a3a37353) SHA1(c4509c8268afb647c20e71b42ae8ebd2bdf075e6) ) /* 03.u11 */ - ROM_LOAD16_BYTE( "mbn02", 0x000000, 0x080000, CRC(aa2230c5) SHA1(43b7ac5c69cde1840a5255a8897e1c5d5f89fd7b) ) /* 04.u12 */ + ROM_LOAD( "mbn01", 0x080000, 0x080000, CRC(a3a37353) SHA1(c4509c8268afb647c20e71b42ae8ebd2bdf075e6) ) /* 03.u11 */ + ROM_LOAD( "mbn02", 0x000000, 0x080000, CRC(aa2230c5) SHA1(43b7ac5c69cde1840a5255a8897e1c5d5f89fd7b) ) /* 04.u12 */ ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "mbn04", 0x00000, 0x40000, CRC(dcbd4771) SHA1(2a1ab6b0fc372333c7eb17aab077fe1ca5ba1dea) ) /* 07.u46 */ @@ -569,8 +545,8 @@ ROM_START( joemacra ) ROM_LOAD( "mbn00", 0x000000, 0x100000, CRC(11b2dac7) SHA1(71a50f606caddeb0ef266e2d3df9e429a4873f21) ) ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mbn01", 0x000001, 0x080000, CRC(a3a37353) SHA1(c4509c8268afb647c20e71b42ae8ebd2bdf075e6) ) - ROM_LOAD16_BYTE( "mbn02", 0x000000, 0x080000, CRC(aa2230c5) SHA1(43b7ac5c69cde1840a5255a8897e1c5d5f89fd7b) ) + ROM_LOAD( "mbn01", 0x080000, 0x080000, CRC(a3a37353) SHA1(c4509c8268afb647c20e71b42ae8ebd2bdf075e6) ) + ROM_LOAD( "mbn02", 0x000000, 0x080000, CRC(aa2230c5) SHA1(43b7ac5c69cde1840a5255a8897e1c5d5f89fd7b) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "mbn04", 0x00000, 0x40000, CRC(dcbd4771) SHA1(2a1ab6b0fc372333c7eb17aab077fe1ca5ba1dea) ) @@ -587,8 +563,8 @@ ROM_START( joemacrj ) ROM_LOAD( "mbn00", 0x000000, 0x100000, CRC(11b2dac7) SHA1(71a50f606caddeb0ef266e2d3df9e429a4873f21) ) ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mbn01", 0x000001, 0x080000, CRC(a3a37353) SHA1(c4509c8268afb647c20e71b42ae8ebd2bdf075e6) ) - ROM_LOAD16_BYTE( "mbn02", 0x000000, 0x080000, CRC(aa2230c5) SHA1(43b7ac5c69cde1840a5255a8897e1c5d5f89fd7b) ) + ROM_LOAD( "mbn01", 0x080000, 0x080000, CRC(a3a37353) SHA1(c4509c8268afb647c20e71b42ae8ebd2bdf075e6) ) + ROM_LOAD( "mbn02", 0x000000, 0x080000, CRC(aa2230c5) SHA1(43b7ac5c69cde1840a5255a8897e1c5d5f89fd7b) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "mbn04", 0x00000, 0x40000, CRC(dcbd4771) SHA1(2a1ab6b0fc372333c7eb17aab077fe1ca5ba1dea) ) @@ -634,10 +610,10 @@ ROM_START( chainrec ) ROM_LOAD( "mcc-00", 0x000000, 0x100000, CRC(646b03ec) SHA1(9a2fc11b1575032b5a784d88c3a90913068d1e69) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD32_BYTE( "u3", 0x000000, 0x080000, CRC(92659721) SHA1(b446ce98ec9c2c16375ef00639cfb463b365b8f7) ) /* No DECO ID numbers on labels */ - ROM_LOAD32_BYTE( "u4", 0x000002, 0x080000, CRC(e304eb32) SHA1(61a647ec89695a6b25ff924bdc6d29cbd7aca82b) ) - ROM_LOAD32_BYTE( "u5", 0x000001, 0x080000, CRC(1b6f01ea) SHA1(753fc670707432e317d035b09b0bad0762fea731) ) - ROM_LOAD32_BYTE( "u6", 0x000003, 0x080000, CRC(531a56f2) SHA1(89602bb873a3b110bffc216f921ba228e53380f9) ) + ROM_LOAD16_BYTE( "u3", 0x000000, 0x080000, CRC(92659721) SHA1(b446ce98ec9c2c16375ef00639cfb463b365b8f7) ) /* No DECO ID numbers on labels */ + ROM_LOAD16_BYTE( "u4", 0x000001, 0x080000, CRC(e304eb32) SHA1(61a647ec89695a6b25ff924bdc6d29cbd7aca82b) ) + ROM_LOAD16_BYTE( "u5", 0x100000, 0x080000, CRC(1b6f01ea) SHA1(753fc670707432e317d035b09b0bad0762fea731) ) + ROM_LOAD16_BYTE( "u6", 0x100001, 0x080000, CRC(531a56f2) SHA1(89602bb873a3b110bffc216f921ba228e53380f9) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "mcc-04", 0x00000, 0x40000, CRC(86ee6ade) SHA1(56ad3f432c7f430f19fcba7c89940c63da165906) ) @@ -681,8 +657,8 @@ ROM_START( magdrop ) ROM_LOAD( "mcc-00", 0x000000, 0x100000, CRC(646b03ec) SHA1(9a2fc11b1575032b5a784d88c3a90913068d1e69) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mcc-01.a13", 0x000001, 0x100000, CRC(13d88745) SHA1(0ce4ec1481f31be860ee80322de6e32f9a566229) ) - ROM_LOAD16_BYTE( "mcc-02.a14", 0x000000, 0x100000, CRC(d0f97126) SHA1(3848a6f00d0e57aaf383298c4d111eb63a88b073) ) + ROM_LOAD( "mcc-01.a13", 0x100000, 0x100000, CRC(13d88745) SHA1(0ce4ec1481f31be860ee80322de6e32f9a566229) ) + ROM_LOAD( "mcc-02.a14", 0x000000, 0x100000, CRC(d0f97126) SHA1(3848a6f00d0e57aaf383298c4d111eb63a88b073) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "mcc-04", 0x00000, 0x40000, CRC(86ee6ade) SHA1(56ad3f432c7f430f19fcba7c89940c63da165906) ) @@ -702,8 +678,8 @@ ROM_START( magdropp ) ROM_LOAD( "mcc-00", 0x000000, 0x100000, CRC(646b03ec) SHA1(9a2fc11b1575032b5a784d88c3a90913068d1e69) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mcc-01.a13", 0x000001, 0x100000, CRC(13d88745) SHA1(0ce4ec1481f31be860ee80322de6e32f9a566229) ) - ROM_LOAD16_BYTE( "mcc-02.a14", 0x000000, 0x100000, CRC(d0f97126) SHA1(3848a6f00d0e57aaf383298c4d111eb63a88b073) ) + ROM_LOAD( "mcc-01.a13", 0x100000, 0x100000, CRC(13d88745) SHA1(0ce4ec1481f31be860ee80322de6e32f9a566229) ) + ROM_LOAD( "mcc-02.a14", 0x000000, 0x100000, CRC(d0f97126) SHA1(3848a6f00d0e57aaf383298c4d111eb63a88b073) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "mcc-04", 0x00000, 0x40000, CRC(86ee6ade) SHA1(56ad3f432c7f430f19fcba7c89940c63da165906) ) @@ -768,8 +744,8 @@ ROM_START( charlien ) ROM_CONTINUE( 0x180000, 0x080000) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mbr-01.14a", 0x000001, 0x100000, CRC(46c90215) SHA1(152acdeea34ec1db3f761066a0c1ff6e43e47f9d) ) - ROM_LOAD16_BYTE( "mbr-03.14h", 0x000000, 0x100000, CRC(c448a68a) SHA1(4b607dfee269abdfeb710b74b73ef87dc2b30e8c) ) + ROM_LOAD( "mbr-01.14a", 0x100000, 0x100000, CRC(46c90215) SHA1(152acdeea34ec1db3f761066a0c1ff6e43e47f9d) ) + ROM_LOAD( "mbr-03.14h", 0x000000, 0x100000, CRC(c448a68a) SHA1(4b607dfee269abdfeb710b74b73ef87dc2b30e8c) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "nd01-0.13h", 0x00000, 0x40000, CRC(635a100a) SHA1(f6ec70890892e7557097ccd519de37247bb8c98d) ) @@ -849,10 +825,10 @@ ROM_START( prtytime ) ROM_CONTINUE( 0x180000, 0x080000) ROM_REGION( 0x800000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mcb-02.14a", 0x000001, 0x200000, CRC(423cfb38) SHA1(b8c772a8ab471c365a11a88c85e1c8c7d2ad6e80) ) - ROM_LOAD16_BYTE( "mcb-05.14h", 0x000000, 0x200000, CRC(81540cfb) SHA1(6f7bc62c3c4d4a29eb1e0cfb261ace461bbca57c) ) - ROM_LOAD16_BYTE( "mcb-01.13a", 0x400001, 0x200000, CRC(06f40a57) SHA1(896f1d373e911dcff7223bf21756ad35b28b4c5d) ) - ROM_LOAD16_BYTE( "mcb-03.14d", 0x400000, 0x200000, CRC(0aef73af) SHA1(76cf13f53da5202da80820f98660edee1eef7f1a) ) + ROM_LOAD( "mcb-01.13a", 0x600000, 0x200000, CRC(06f40a57) SHA1(896f1d373e911dcff7223bf21756ad35b28b4c5d) ) + ROM_LOAD( "mcb-02.14a", 0x400000, 0x200000, CRC(423cfb38) SHA1(b8c772a8ab471c365a11a88c85e1c8c7d2ad6e80) ) + ROM_LOAD( "mcb-03.14d", 0x200000, 0x200000, CRC(0aef73af) SHA1(76cf13f53da5202da80820f98660edee1eef7f1a) ) + ROM_LOAD( "mcb-05.14h", 0x000000, 0x200000, CRC(81540cfb) SHA1(6f7bc62c3c4d4a29eb1e0cfb261ace461bbca57c) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "pz_01-0.13h", 0x00000, 0x40000, CRC(8925bce2) SHA1(0ff2d5db7a24a2af30bd753eba274572c32cc2e7) ) @@ -875,10 +851,10 @@ ROM_START( gangonta ) ROM_CONTINUE( 0x180000, 0x080000) ROM_REGION( 0x800000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mcb-02.14a", 0x000001, 0x200000, CRC(423cfb38) SHA1(b8c772a8ab471c365a11a88c85e1c8c7d2ad6e80) ) - ROM_LOAD16_BYTE( "mcb-05.14h", 0x000000, 0x200000, CRC(81540cfb) SHA1(6f7bc62c3c4d4a29eb1e0cfb261ace461bbca57c) ) - ROM_LOAD16_BYTE( "mcb-01.13a", 0x400001, 0x200000, CRC(06f40a57) SHA1(896f1d373e911dcff7223bf21756ad35b28b4c5d) ) - ROM_LOAD16_BYTE( "mcb-03.14d", 0x400000, 0x200000, CRC(0aef73af) SHA1(76cf13f53da5202da80820f98660edee1eef7f1a) ) + ROM_LOAD( "mcb-01.13a", 0x600000, 0x200000, CRC(06f40a57) SHA1(896f1d373e911dcff7223bf21756ad35b28b4c5d) ) + ROM_LOAD( "mcb-02.14a", 0x400000, 0x200000, CRC(423cfb38) SHA1(b8c772a8ab471c365a11a88c85e1c8c7d2ad6e80) ) + ROM_LOAD( "mcb-03.14d", 0x200000, 0x200000, CRC(0aef73af) SHA1(76cf13f53da5202da80820f98660edee1eef7f1a) ) + ROM_LOAD( "mcb-05.14h", 0x000000, 0x200000, CRC(81540cfb) SHA1(6f7bc62c3c4d4a29eb1e0cfb261ace461bbca57c) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "rd_01-0.13h", 0x00000, 0x40000, CRC(70fd18c6) SHA1(368cd8e10c5f5a13eb3813974a7e6b46a4fa6b6c) ) @@ -940,10 +916,10 @@ ROM_START( osman ) ROM_CONTINUE( 0x180000, 0x080000) ROM_REGION( 0x800000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mcf-02.14a", 0x000001, 0x200000, CRC(21251b33) SHA1(d252fe5c6eef8cbc9327e4176b4868b1cb17a738) ) - ROM_LOAD16_BYTE( "mcf-04.14h", 0x000000, 0x200000, CRC(4fa55577) SHA1(e229ba9cce46b92ce255aa33b974e19b214c4017) ) - ROM_LOAD16_BYTE( "mcf-01.13a", 0x400001, 0x200000, CRC(83881e25) SHA1(ae82cf0f704e6efea94c6c1d276d4e3e5b3ebe43) ) - ROM_LOAD16_BYTE( "mcf-03.14d", 0x400000, 0x200000, CRC(faf1d51d) SHA1(675dbbfe15b8010d54b2b3af26d42cdd753c2ce2) ) + ROM_LOAD( "mcf-01.13a", 0x600000, 0x200000, CRC(83881e25) SHA1(ae82cf0f704e6efea94c6c1d276d4e3e5b3ebe43) ) + ROM_LOAD( "mcf-02.14a", 0x400000, 0x200000, CRC(21251b33) SHA1(d252fe5c6eef8cbc9327e4176b4868b1cb17a738) ) + ROM_LOAD( "mcf-03.14d", 0x200000, 0x200000, CRC(faf1d51d) SHA1(675dbbfe15b8010d54b2b3af26d42cdd753c2ce2) ) + ROM_LOAD( "mcf-04.14h", 0x000000, 0x200000, CRC(4fa55577) SHA1(e229ba9cce46b92ce255aa33b974e19b214c4017) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "sa01-0.13h", 0x00000, 0x40000, CRC(cea8368e) SHA1(1fcc641381fdc29bd50d3a4b23e67647f79e505a)) @@ -968,10 +944,10 @@ ROM_START( candance ) ROM_CONTINUE( 0x180000, 0x080000) ROM_REGION( 0x800000, "gfx2", 0 ) - ROM_LOAD16_BYTE( "mcf-02.14a", 0x000001, 0x200000, CRC(21251b33) SHA1(d252fe5c6eef8cbc9327e4176b4868b1cb17a738) ) - ROM_LOAD16_BYTE( "mcf-04.14h", 0x000000, 0x200000, CRC(4fa55577) SHA1(e229ba9cce46b92ce255aa33b974e19b214c4017) ) - ROM_LOAD16_BYTE( "mcf-01.13a", 0x400001, 0x200000, CRC(83881e25) SHA1(ae82cf0f704e6efea94c6c1d276d4e3e5b3ebe43) ) - ROM_LOAD16_BYTE( "mcf-03.14d", 0x400000, 0x200000, CRC(faf1d51d) SHA1(675dbbfe15b8010d54b2b3af26d42cdd753c2ce2) ) + ROM_LOAD( "mcf-01.13a", 0x600000, 0x200000, CRC(83881e25) SHA1(ae82cf0f704e6efea94c6c1d276d4e3e5b3ebe43) ) + ROM_LOAD( "mcf-02.14a", 0x400000, 0x200000, CRC(21251b33) SHA1(d252fe5c6eef8cbc9327e4176b4868b1cb17a738) ) + ROM_LOAD( "mcf-03.14d", 0x200000, 0x200000, CRC(faf1d51d) SHA1(675dbbfe15b8010d54b2b3af26d42cdd753c2ce2) ) + ROM_LOAD( "mcf-04.14h", 0x000000, 0x200000, CRC(4fa55577) SHA1(e229ba9cce46b92ce255aa33b974e19b214c4017) ) ROM_REGION( 0x80000, "okisfx", 0 ) /* Oki samples */ ROM_LOAD( "sa01-0.13h", 0x00000, 0x40000, CRC(cea8368e) SHA1(1fcc641381fdc29bd50d3a4b23e67647f79e505a)) @@ -1050,9 +1026,9 @@ void simpl156_state::init_simpl156() std::vector buf1(length); /* hmm low address line goes to banking chip instead? */ - for (uint32_t x = 0; x < length; x++) + for (u32 x = 0; x < length; x++) { - uint32_t addr = bitswap<24> (x,23, + u32 addr = bitswap<24> (x,23, 22,21, 0,20, 19,18,17,16, 15,14,13,12, diff --git a/src/mame/includes/simpl156.h b/src/mame/includes/simpl156.h index 10e785f8da7..9173ef520e7 100644 --- a/src/mame/includes/simpl156.h +++ b/src/mame/includes/simpl156.h @@ -46,26 +46,23 @@ private: required_device m_eeprom; required_device m_okimusic; /* memory pointers */ - std::unique_ptr m_pf1_rowscroll; - std::unique_ptr m_pf2_rowscroll; - required_shared_ptr m_mainram; - required_shared_ptr m_systemram; + std::unique_ptr m_rowscroll[2]; + required_shared_ptr m_mainram; + required_shared_ptr m_systemram; optional_device m_sprgen; required_device m_palette; - std::unique_ptr m_spriteram; + std::unique_ptr m_spriteram; size_t m_spriteram_size; DECO16IC_BANK_CB_MEMBER(bank_callback); DECOSPR_PRIORITY_CB_MEMBER(pri_callback); - DECLARE_WRITE32_MEMBER(simpl156_eeprom_w); - DECLARE_READ32_MEMBER(simpl156_spriteram_r); - DECLARE_WRITE32_MEMBER(simpl156_spriteram_w); - DECLARE_READ32_MEMBER(simpl156_mainram_r); - DECLARE_WRITE32_MEMBER(simpl156_mainram_w); - DECLARE_READ32_MEMBER(simpl156_pf1_rowscroll_r); - DECLARE_WRITE32_MEMBER(simpl156_pf1_rowscroll_w); - DECLARE_READ32_MEMBER(simpl156_pf2_rowscroll_r); - DECLARE_WRITE32_MEMBER(simpl156_pf2_rowscroll_w); + void eeprom_w(u32 data); + u32 spriteram_r(offs_t offset); + void spriteram_w(offs_t offset, u32 data, u32 mem_mask); + u32 mainram_r(offs_t offset); + void mainram_w(offs_t offset, u32 data, u32 mem_mask); + template u32 rowscroll_r(offs_t offset); + template void rowscroll_w(offs_t offset, u32 data, u32 mem_mask); DECLARE_READ32_MEMBER(joemacr_speedup_r); DECLARE_READ32_MEMBER(chainrec_speedup_r); DECLARE_READ32_MEMBER(prtytime_speedup_r); @@ -73,8 +70,8 @@ private: DECLARE_READ32_MEMBER(osman_speedup_r); virtual void video_start() override; - uint32_t screen_update_simpl156(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(simpl156_vbl_interrupt); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(interrupt); void chainrec_map(address_map &map); void joemacr_map(address_map &map); diff --git a/src/mame/video/simpl156.cpp b/src/mame/video/simpl156.cpp index 7871f104b91..ebc85e0451a 100644 --- a/src/mame/video/simpl156.cpp +++ b/src/mame/video/simpl156.cpp @@ -12,23 +12,23 @@ void simpl156_state::video_start() { /* allocate the ram as 16-bit (we do it here because the CPU is 32-bit) */ - m_pf1_rowscroll = make_unique_clear(0x800/2); - m_pf2_rowscroll = make_unique_clear(0x800/2); - m_spriteram = make_unique_clear(0x2000/2); + m_rowscroll[0] = make_unique_clear(0x800/2); + m_rowscroll[1] = make_unique_clear(0x800/2); + m_spriteram = make_unique_clear(0x2000/2); memset(m_spriteram.get(), 0xff, 0x2000); /* and register the allocated ram so that save states still work */ - save_pointer(NAME(m_pf1_rowscroll), 0x800/2); - save_pointer(NAME(m_pf2_rowscroll), 0x800/2); + save_pointer(NAME(m_rowscroll[0]), 0x800/2); + save_pointer(NAME(m_rowscroll[1]), 0x800/2); save_pointer(NAME(m_spriteram), 0x2000/2); } -uint32_t simpl156_state::screen_update_simpl156(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 simpl156_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { screen.priority().fill(0); - m_deco_tilegen->pf_update(m_pf1_rowscroll.get(), m_pf2_rowscroll.get()); + m_deco_tilegen->pf_update(m_rowscroll[0].get(), m_rowscroll[1].get()); bitmap.fill(256, cliprect); -- cgit v1.2.3