summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2019-03-31 10:33:12 -0400
committer GitHub <noreply@github.com>2019-03-31 10:33:12 -0400
commit8cf2b9ac83ff1431a087a28d9fa7b7babcef0303 (patch)
tree60db9c916556903fdfda618353bb476479ea7421
parentf86c3204dd0937175ea5072a72afc6e8cde9ee03 (diff)
parentecf99d87ae417df77df11fea0f5976e8fbfe63e0 (diff)
Merge pull request #4835 from cam900/simpl156_args
simpl156.cpp : Updates
-rw-r--r--src/mame/drivers/simpl156.cpp196
-rw-r--r--src/mame/includes/simpl156.h29
-rw-r--r--src/mame/video/simpl156.cpp14
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<unsigned Layer>
+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<unsigned Layer>
+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<uint8_t> 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<eeprom_serial_93cxx_device> m_eeprom;
required_device<okim6295_device> m_okimusic;
/* memory pointers */
- std::unique_ptr<uint16_t[]> m_pf1_rowscroll;
- std::unique_ptr<uint16_t[]> m_pf2_rowscroll;
- required_shared_ptr<uint32_t> m_mainram;
- required_shared_ptr<uint32_t> m_systemram;
+ std::unique_ptr<u16[]> m_rowscroll[2];
+ required_shared_ptr<u32> m_mainram;
+ required_shared_ptr<u32> m_systemram;
optional_device<decospr_device> m_sprgen;
required_device<palette_device> m_palette;
- std::unique_ptr<uint16_t[]> m_spriteram;
+ std::unique_ptr<u16[]> 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<unsigned Layer> u32 rowscroll_r(offs_t offset);
+ template<unsigned Layer> 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<uint16_t[]>(0x800/2);
- m_pf2_rowscroll = make_unique_clear<uint16_t[]>(0x800/2);
- m_spriteram = make_unique_clear<uint16_t[]>(0x2000/2);
+ m_rowscroll[0] = make_unique_clear<u16[]>(0x800/2);
+ m_rowscroll[1] = make_unique_clear<u16[]>(0x800/2);
+ m_spriteram = make_unique_clear<u16[]>(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);