summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2019-06-10 22:41:44 +0900
committer R. Belmont <rb6502@users.noreply.github.com>2019-06-10 09:41:44 -0400
commit0d4948e0dc1fc8bafec8d5f2660c233523c9bad5 (patch)
treed6cfb785f8d09462fd8fdeb37c8ae80d351baafc
parent32b655b292c44017581813c1ac3e5225f0781309 (diff)
pc090oj.cpp : Updates (#5196)
* pc090oj.cpp : Updates Internalize gfxdecode, Use callback for color bank / priority behavior, Reduce defines, Unnecessary lines, Simplify handlers, Use shorter / correct type values asuka.cpp, opwolf.cpp, rastan.cpp, rbisland.cpp, volfied.cpp : Simplify gfxdecodes, Reduce trampolines, Duplicates, Fix namings * rastan.cpp, volfied.cpp : Minor note fixes
-rw-r--r--src/mame/drivers/asuka.cpp57
-rw-r--r--src/mame/drivers/opwolf.cpp133
-rw-r--r--src/mame/drivers/rastan.cpp64
-rw-r--r--src/mame/drivers/rbisland.cpp265
-rw-r--r--src/mame/drivers/volfied.cpp37
-rw-r--r--src/mame/includes/asuka.h8
-rw-r--r--src/mame/includes/rastan.h1
-rw-r--r--src/mame/includes/rbisland.h1
-rw-r--r--src/mame/includes/volfied.h2
-rw-r--r--src/mame/video/asuka.cpp42
-rw-r--r--src/mame/video/pc090oj.cpp128
-rw-r--r--src/mame/video/pc090oj.h34
-rw-r--r--src/mame/video/rastan.cpp12
-rw-r--r--src/mame/video/rbisland.cpp16
-rw-r--r--src/mame/video/volfied.cpp7
15 files changed, 345 insertions, 462 deletions
diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp
index eb932832ad4..57424f25b38 100644
--- a/src/mame/drivers/asuka.cpp
+++ b/src/mame/drivers/asuka.cpp
@@ -328,7 +328,7 @@ void asuka_state::bonzeadv_map(address_map &map)
map(0x10c000, 0x10ffff).ram();
map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
map(0x390000, 0x390001).portr("DSWA");
- map(0x3a0000, 0x3a0001).w(FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x3a0000, 0x3a0001).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
map(0x3b0000, 0x3b0001).portr("DSWB");
map(0x3c0000, 0x3c0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
map(0x3d0000, 0x3d0001).nopr();
@@ -347,7 +347,7 @@ void asuka_state::asuka_map(address_map &map)
map(0x100000, 0x103fff).ram();
map(0x1076f0, 0x1076f1).nopr(); /* Mofflott init does dummy reads here */
map(0x200000, 0x20000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
- map(0x3a0000, 0x3a0003).w(FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x3a0000, 0x3a0003).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
map(0x3e0000, 0x3e0001).nopr();
map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
@@ -361,7 +361,7 @@ void asuka_state::asuka_map(address_map &map)
void asuka_state::cadash_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
- map(0x080000, 0x080003).w(FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x080000, 0x080003).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
map(0x0c0000, 0x0c0001).nopr();
map(0x0c0001, 0x0c0001).w("ciu", FUNC(pc060ha_device::master_port_w));
map(0x0c0003, 0x0c0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
@@ -381,7 +381,7 @@ void asuka_state::eto_map(address_map &map)
map(0x200000, 0x203fff).ram();
map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
map(0x400000, 0x40000f).r(m_tc0220ioc, FUNC(tc0220ioc_device::read)).umask16(0x00ff); /* service mode mirror */
- map(0x4a0000, 0x4a0003).w(FUNC(asuka_state::asuka_spritectrl_w));
+ map(0x4a0000, 0x4a0003).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
map(0x4e0000, 0x4e0001).nopr();
map(0x4e0001, 0x4e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
map(0x4e0003, 0x4e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
@@ -760,8 +760,7 @@ INPUT_PORTS_END
**************************************************************/
static GFXDECODE_START( gfx_asuka )
- GFXDECODE_ENTRY( "pc090oj", 0, gfx_16x16x4_packed_msb, 0, 256 ) /* OBJ */
- GFXDECODE_ENTRY( "tc0100scn", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* SCR */
+ GFXDECODE_ENTRY( "tc0100scn", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* SCR */
GFXDECODE_END
@@ -784,7 +783,7 @@ void asuka_state::machine_reset()
m_adpcm_ff = false;
}
-WRITE_LINE_MEMBER(asuka_state::screen_vblank_asuka)
+WRITE_LINE_MEMBER(asuka_state::screen_vblank)
{
// rising edge
if (state)
@@ -842,19 +841,19 @@ void asuka_state::bonzeadv(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 3*8, 31*8-1);
- screen.set_screen_update(FUNC(asuka_state::screen_update_bonzeadv));
- screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
+ screen.set_screen_update(FUNC(asuka_state::screen_update));
+ screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette(m_tc0110pcr);
+ m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb), this);
TC0100SCN(config, m_tc0100scn, 0);
- m_tc0100scn->set_gfx_region(1);
+ m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette(m_tc0110pcr);
@@ -900,20 +899,20 @@ void asuka_state::asuka(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(asuka_state::screen_update_asuka));
- screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
+ screen.set_screen_update(FUNC(asuka_state::screen_update));
+ screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8);
- m_pc090oj->set_usebuffer(1);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
+ m_pc090oj->set_usebuffer(true);
m_pc090oj->set_palette(m_tc0110pcr);
+ m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this);
TC0100SCN(config, m_tc0100scn, 0);
- m_tc0100scn->set_gfx_region(1);
+ m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette(m_tc0110pcr);
@@ -971,20 +970,20 @@ void asuka_state::cadash(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(asuka_state::screen_update_bonzeadv));
- screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
+ screen.set_screen_update(FUNC(asuka_state::screen_update));
+ screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8);
- m_pc090oj->set_usebuffer(1);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
+ m_pc090oj->set_usebuffer(true);
m_pc090oj->set_palette(m_tc0110pcr);
+ m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb), this);
TC0100SCN(config, m_tc0100scn, 0);
- m_tc0100scn->set_gfx_region(1);
+ m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette(m_tc0110pcr);
@@ -1031,19 +1030,19 @@ void asuka_state::mofflott(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(asuka_state::screen_update_asuka));
- screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
+ screen.set_screen_update(FUNC(asuka_state::screen_update));
+ screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette(m_tc0110pcr);
+ m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this);
TC0100SCN(config, m_tc0100scn, 0);
- m_tc0100scn->set_gfx_region(1);
+ m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette(m_tc0110pcr);
@@ -1098,19 +1097,19 @@ void asuka_state::eto(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
- screen.set_screen_update(FUNC(asuka_state::screen_update_asuka));
- screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
+ screen.set_screen_update(FUNC(asuka_state::screen_update));
+ screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette(m_tc0110pcr);
+ m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this);
TC0100SCN(config, m_tc0100scn, 0);
- m_tc0100scn->set_gfx_region(1);
+ m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette(m_tc0110pcr);
diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp
index 7516a7d3068..893f88200c2 100644
--- a/src/mame/drivers/opwolf.cpp
+++ b/src/mame/drivers/opwolf.cpp
@@ -342,7 +342,8 @@ private:
TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
DECLARE_MACHINE_RESET(opwolf);
- uint32_t screen_update_opwolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void opwolf_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void opwolf_msm5205_vck(msm5205_device *device, int chip);
template<int N> DECLARE_WRITE_LINE_MEMBER(msm5205_vck_w);
@@ -648,7 +649,7 @@ WRITE16_MEMBER(opwolf_state::opwolf_spritectrl_w)
/* bit 4 -> LATCH - used to signal light gun position can be latched to inputs on v-blank */
/* bits 5-7 are the sprite palette bank */
- m_pc090oj->set_sprite_ctrl((data & 0xe0) >> 5);
+ m_pc090oj->sprite_ctrl_w(data);
/* If data & 3, the Piston Motor is activated via M-1/M-2 connector */
if (data & 3)
@@ -662,7 +663,13 @@ WRITE16_MEMBER(opwolf_state::opwolf_spritectrl_w)
}
}
-uint32_t opwolf_state::screen_update_opwolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+void opwolf_state::opwolf_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
+{
+ sprite_colbank = (sprite_ctrl & 0xe0) >> 1;
+ pri_mask = 0xfc; /* sprites under top bg layer */
+}
+
+uint32_t opwolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int layer[2];
@@ -678,7 +685,7 @@ uint32_t opwolf_state::screen_update_opwolf(screen_device &screen, bitmap_ind16
m_pc080sn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
m_pc080sn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 1);
+ m_pc090oj->draw_sprites(screen, bitmap, cliprect);
// if (ioport("P1X")->read())
// popmessage("%d %d", machine(), "P1X"), ioport("P1Y")->read());
@@ -691,58 +698,8 @@ uint32_t opwolf_state::screen_update_opwolf(screen_device &screen, bitmap_ind16
// DRAWGFX LAYOUTS
//**************************************************************************
-static const gfx_layout charlayout =
-{
- 8,8, /* 8*8 characters */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 },
- { 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8 /* every sprite takes 32 consecutive bytes */
-};
-
-static const gfx_layout tilelayout =
-{
- 16,16, /* 16*16 sprites */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 },
- { 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4, 10*4, 11*4, 8*4, 9*4, 14*4, 15*4, 12*4, 13*4 },
- { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
- 128*8 /* every sprite takes 128 consecutive bytes */
-};
-
-static const gfx_layout charlayout_b =
-{
- 8,8, /* 8*8 characters */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 },
- { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8 /* every sprite takes 32 consecutive bytes */
-};
-
-static const gfx_layout tilelayout_b =
-{
- 16,16, /* 16*16 sprites */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 },
- { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, 8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
- { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
- 128*8 /* every sprite takes 128 consecutive bytes */
-};
-
static GFXDECODE_START( gfx_opwolf )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* sprites */
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* scr tiles */
-GFXDECODE_END
-
-static GFXDECODE_START( gfx_opwolfb )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout_b, 0, 128 ) /* sprites */
- GFXDECODE_ENTRY( "gfx1", 0, charlayout_b, 0, 128 ) /* scr tiles */
+ GFXDECODE_ENTRY( "pc080sn", 0, gfx_8x8x4_packed_msb, 0, 128 ) /* scr tiles */
GFXDECODE_END
@@ -961,19 +918,19 @@ void opwolf_state::opwolf(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
+ screen.set_screen_update(FUNC(opwolf_state::screen_update));
screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048);
PC080SN(config, m_pc080sn, 0);
- m_pc080sn->set_gfx_region(1);
+ m_pc080sn->set_gfx_region(0);
m_pc080sn->set_gfxdecode_tag("gfxdecode");
PC090OJ(config, m_pc090oj, 0);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette("palette");
+ m_pc090oj->set_colpri_callback(FUNC(opwolf_state::opwolf_colpri_cb), this);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -1035,19 +992,19 @@ void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1);
- screen.set_screen_update(FUNC(opwolf_state::screen_update_opwolf));
+ screen.set_screen_update(FUNC(opwolf_state::screen_update));
screen.set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_opwolfb);
+ GFXDECODE(config, "gfxdecode", "palette", gfx_opwolf);
PALETTE(config, "palette").set_format(palette_device::xRGB_444, 2048);
PC080SN(config, m_pc080sn, 0);
- m_pc080sn->set_gfx_region(1);
+ m_pc080sn->set_gfx_region(0);
m_pc080sn->set_gfxdecode_tag("gfxdecode");
PC090OJ(config, m_pc090oj, 0);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette("palette");
+ m_pc090oj->set_colpri_callback(FUNC(opwolf_state::opwolf_colpri_cb), this);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -1094,11 +1051,11 @@ ROM_START( opwolf )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b20-18.73", 0x0000, 0x2000, CRC(5987b4e9) SHA1(d4b3d1c35a6eac86c86bd4ea49f1f157a2c05b2a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
+ ROM_REGION( 0x80000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
ROM_REGION( 0x80000, "adpcm", 0 ) /* ADPCM samples */
ROM_LOAD( "b20-08.21", 0x00000, 0x80000, CRC(f3e19c64) SHA1(39d48645f776c9c2ade537d959ecc6f9dc6dfa1b) )
@@ -1122,11 +1079,11 @@ ROM_START( opwolfa )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b20-18.73", 0x0000, 0x2000, CRC(5987b4e9) SHA1(d4b3d1c35a6eac86c86bd4ea49f1f157a2c05b2a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
+ ROM_REGION( 0x80000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
ROM_REGION( 0x80000, "adpcm", 0 ) /* ADPCM samples */
ROM_LOAD( "b20-08.21", 0x00000, 0x80000, CRC(f3e19c64) SHA1(39d48645f776c9c2ade537d959ecc6f9dc6dfa1b) )
@@ -1145,11 +1102,11 @@ ROM_START( opwolfj )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b20-18.73", 0x0000, 0x2000, CRC(5987b4e9) SHA1(d4b3d1c35a6eac86c86bd4ea49f1f157a2c05b2a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
+ ROM_REGION( 0x80000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
ROM_REGION( 0x80000, "adpcm", 0 ) /* ADPCM samples */
ROM_LOAD( "b20-08.21", 0x00000, 0x80000, CRC(f3e19c64) SHA1(39d48645f776c9c2ade537d959ecc6f9dc6dfa1b) )
@@ -1168,11 +1125,11 @@ ROM_START( opwolfjsc )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b20-18.73", 0x0000, 0x2000, CRC(5987b4e9) SHA1(d4b3d1c35a6eac86c86bd4ea49f1f157a2c05b2a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
+ ROM_REGION( 0x80000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
ROM_REGION( 0x80000, "adpcm", 0 ) /* ADPCM samples */
ROM_LOAD( "b20-08.21", 0x00000, 0x80000, CRC(f3e19c64) SHA1(39d48645f776c9c2ade537d959ecc6f9dc6dfa1b) )
@@ -1191,11 +1148,11 @@ ROM_START( opwolfu ) /* Taito TC0030 C-Chip labeled B20-18 (yes, it has a specif
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b20-18.73", 0x0000, 0x2000, CRC(5987b4e9) SHA1(d4b3d1c35a6eac86c86bd4ea49f1f157a2c05b2a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
+ ROM_REGION( 0x80000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-14.72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */
ROM_REGION( 0x80000, "adpcm", 0 ) /* ADPCM samples */
ROM_LOAD( "b20-08.21", 0x00000, 0x80000, CRC(f3e19c64) SHA1(39d48645f776c9c2ade537d959ecc6f9dc6dfa1b) )
@@ -1217,11 +1174,11 @@ ROM_START( opwolfp )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
ROM_LOAD( "ic10", 0x00000, 0x10000, CRC(684b40dd) SHA1(0546e01cf2c76b9c60730a14835cdeaaec21d26f) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-13.13", 0x00000, 0x80000, CRC(f6acdab1) SHA1(716b94ab3fa330ecf22df576f6a9f47a49c7554a) ) /* SCR tiles (8 x 8) */
- ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "b20-06.ic72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */ // same content as b20-14.72 despite different label (confirmed)
+ ROM_REGION( 0x80000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b20-06.ic72", 0x00000, 0x80000, CRC(89f889e5) SHA1(1592f6ce4fbb75e33d6ab957e5b90242a7a7a8c4) ) /* Sprites (16 x 16) */ // same content as b20-14.72 despite different label (confirmed)
ROM_REGION( 0x80000, "adpcm", 0 ) /* ADPCM samples */
ROM_LOAD( "b20-08.21", 0x00000, 0x80000, CRC(f3e19c64) SHA1(39d48645f776c9c2ade537d959ecc6f9dc6dfa1b) )
@@ -1240,7 +1197,7 @@ ROM_START( opwolfb )
ROM_REGION( 0x10000, "sub", 0 ) /* c-chip substitute Z80 */
ROM_LOAD( "opwlfb.09", 0x00000, 0x08000, CRC(ab27a3dd) SHA1(cf589e7a9ccf3e86020b86f917fb91f3d8ba7512) )
- ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_REGION( 0x80000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "opwlfb.08", 0x00000, 0x10000, CRC(134d294e) SHA1(bd05169dbd761c2944f0ac51c1ec114577777452) ) /* SCR tiles (8 x 8) */
ROM_LOAD16_BYTE( "opwlfb.06", 0x20000, 0x10000, CRC(317d0e66) SHA1(70298c0ef5243f481b18f904be9404527d1d99d5) )
ROM_LOAD16_BYTE( "opwlfb.07", 0x40000, 0x10000, CRC(e1c4095e) SHA1(d5f1d26d6612e78001002f92de670e68e00c6f9e) )
@@ -1250,7 +1207,7 @@ ROM_START( opwolfb )
ROM_LOAD16_BYTE( "opwlfb.03", 0x40001, 0x10000, CRC(ccf8ba80) SHA1(8366f5ef0de885e5241567d1a083d98a8a2875d9) )
ROM_LOAD16_BYTE( "opwlfb.01", 0x60001, 0x10000, CRC(0a65f256) SHA1(4dfcd3cb138a87d002eb65a02f94e33f4d07676d) )
- ROM_REGION( 0x80000, "gfx2", 0 )
+ ROM_REGION( 0x80000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "opwlfb.14", 0x00000, 0x10000, CRC(663786eb) SHA1(a25710f6c16158e51d0934f184390a01ff0a614a) ) /* Sprites (16 x 16) */
ROM_LOAD16_BYTE( "opwlfb.15", 0x20000, 0x10000, CRC(315b8aa9) SHA1(4a904e5532421d933e4c401c03c958eb32b15e03) )
ROM_LOAD16_BYTE( "opwlfb.16", 0x40000, 0x10000, CRC(e01099e3) SHA1(4c5391d71978f72c57c140e58a767e138acdce12) )
diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp
index 602b88a9fd9..dc9d741188c 100644
--- a/src/mame/drivers/rastan.cpp
+++ b/src/mame/drivers/rastan.cpp
@@ -314,31 +314,8 @@ static INPUT_PORTS_START( rastsaga )
INPUT_PORTS_END
-static const gfx_layout tilelayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
-static const gfx_layout spritelayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP16(0,4) },
- { STEP16(0,4*16) },
- 16*16*4
-};
-
static GFXDECODE_START( gfx_rastan )
- GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 0x80 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 0x80 )
+ GFXDECODE_ENTRY( "pc080sn", 0, gfx_8x8x4_packed_msb, 0, 0x80 )
GFXDECODE_END
@@ -392,9 +369,8 @@ void rastan_state::rastan(machine_config &config)
m_pc080sn->set_gfxdecode_tag("gfxdecode");
PC090OJ(config, m_pc090oj, 0);
- m_pc090oj->set_gfx_region(1);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette("palette");
+ m_pc090oj->set_colpri_callback(FUNC(rastan_state::rastan_colpri_cb), this);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -444,13 +420,13 @@ ROM_START( rastan )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -472,13 +448,13 @@ ROM_START( rastana )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -500,13 +476,13 @@ ROM_START( rastanb ) /* Earlier code base, but uses 2 US region roms and shows T
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -535,13 +511,13 @@ ROM_START( rastanu ) /* This US set is based on newer code */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -563,13 +539,13 @@ ROM_START( rastanua ) /* This US set is based on newer code */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -601,13 +577,13 @@ ROM_START( rastanub ) /* This US set is based on the earlier code */
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -629,13 +605,13 @@ ROM_START( rastsaga )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -657,13 +633,13 @@ ROM_START( rastsagaa )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
@@ -685,13 +661,13 @@ ROM_START( rastsagab )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "b04-19.49", 0x00000, 0x10000, CRC(ee81fdd8) SHA1(fa59dac2583a7d2979550dffc6f9c6c2bd67bfd5) )
- ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_REGION( 0x080000, "pc080sn", 0 )
ROM_LOAD16_BYTE( "b04-01.40", 0x00000, 0x20000, CRC(cd30de19) SHA1(f8d158d38cd07a24cb5ddefd4ce90beec706924d) )
ROM_LOAD16_BYTE( "b04-02.67", 0x00001, 0x20000, CRC(54040fec) SHA1(a2bea2ce1cebd25b33be41723299ca0512d95f9e) )
ROM_LOAD16_BYTE( "b04-03.39", 0x40000, 0x20000, CRC(ab67e064) SHA1(5c49f0ff9221cba9f2bb8da86eb4448c73012410) )
ROM_LOAD16_BYTE( "b04-04.66", 0x40001, 0x20000, CRC(94737e93) SHA1(3df7f085fe6468bda11fab2e86252df6f74f7a99) )
- ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_REGION( 0x080000, "pc090oj", 0 )
ROM_LOAD16_BYTE( "b04-05.15", 0x00000, 0x20000, CRC(c22d94ac) SHA1(04f69f9af7ac4242e95dba32988afa3616d75a92) )
ROM_LOAD16_BYTE( "b04-06.28", 0x00001, 0x20000, CRC(002ccf39) SHA1(fdc29f39198f9b488e298ee89b0eeb3417527733) )
ROM_LOAD16_BYTE( "b04-07.14", 0x40000, 0x20000, CRC(b5632a51) SHA1(da6ebe6afe245443a76b33714213549356c0c5c3) )
diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp
index 585323a7c1d..d1830452649 100644
--- a/src/mame/drivers/rbisland.cpp
+++ b/src/mame/drivers/rbisland.cpp
@@ -353,7 +353,7 @@ void rbisland_state::rbisland_map(address_map &map)
map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x201000, 0x203fff).ram(); /* r/w in initial checks */
map(0x390000, 0x390003).portr("DSWA");
- map(0x3a0000, 0x3a0001).w(FUNC(rbisland_state::rbisland_spritectrl_w));
+ map(0x3a0000, 0x3a0001).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
map(0x3b0000, 0x3b0003).portr("DSWB");
map(0x3c0000, 0x3c0003).nopw(); /* written very often, watchdog? */
map(0x3e0000, 0x3e0001).nopr();
@@ -568,60 +568,36 @@ INPUT_PORTS_END
GFX DECODING
**************************************************************/
-static const gfx_layout tilelayout =
-{
- 8,8, /* 8*8 tiles */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 },
- { 8, 12, 0, 4, 24, 28, 16, 20 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8 /* every tile takes 32 consecutive bytes */
-};
-
-static const gfx_layout spritelayout =
-{
- 16,16, /* 16*16 sprites */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 },
- { 8, 12, 0, 4, 24, 28, 16, 20, 40, 44, 32, 36, 56, 60, 48, 52 },
- { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
- 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
- 128*8 /* every sprite takes 128 consecutive bytes */
-};
-
static GFXDECODE_START( gfx_rbisland )
- GFXDECODE_ENTRY( "gfx2", 0x000000, spritelayout, 0, 0x80 ) /* OBJ 16x16 */
- GFXDECODE_ENTRY( "gfx1", 0x000000, tilelayout, 0, 0x80 ) /* SCR 8x8 */
+ GFXDECODE_ENTRY( "pc080sn", 0, gfx_8x8x4_packed_msb, 0, 0x80 ) /* SCR 8x8 */
GFXDECODE_END
static const gfx_layout jumping_tilelayout =
{
8,8, /* 8*8 tiles */
- 16384, /* 16384 tiles */
+ RGN_FRAC(1,1), /* 16384 tiles */
4, /* 4 bits per pixel */
- { 0, 0x20000*8, 0x40000*8, 0x60000*8 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8 /* every tile takes 8 consecutive bytes */
+ { STEP4(0,8) },
+ { STEP8(0,1) },
+ { STEP8(0,8*4) },
+ 8*8*4 /* every tile takes 8 consecutive bytes */
};
static const gfx_layout jumping_spritelayout =
{
16,16, /* 16*16 sprites */
- 5120, /* 5120 sprites */
+ RGN_FRAC(1,1), /* 5120 sprites */
4, /* 4 bits per pixel */
- { 0x78000*8,0x50000*8,0x28000*8,0 },
- { 0, 1, 2, 3, 4, 5, 6, 7, 8*16+0, 8*16+1, 8*16+2, 8*16+3, 8*16+4, 8*16+5, 8*16+6, 8*16+7 },
- { 0, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
- 32*8 /* every sprite takes 32 consecutive bytes */
+ { STEP4(0,8) },
+ { STEP8(0,1), STEP8(8*4*16,1) },
+ { STEP16(0,8*4) },
+ 16*16*4 /* every sprite takes 32 consecutive bytes */
};
static GFXDECODE_START( gfx_jumping )
- GFXDECODE_ENTRY( "gfx2", 0, jumping_spritelayout, 0, 0x80 ) /* OBJ 16x16 */
- GFXDECODE_ENTRY( "gfx1", 0, jumping_tilelayout, 0, 0x80 ) /* SCR 8x8 */
+ GFXDECODE_ENTRY( "sprites", 0, jumping_spritelayout, 0, 0x80 ) /* OBJ 16x16 */
+ GFXDECODE_ENTRY( "pc080sn", 0, jumping_tilelayout, 0, 0x80 ) /* SCR 8x8 */
GFXDECODE_END
@@ -687,12 +663,12 @@ void rbisland_state::rbisland(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
PC080SN(config, m_pc080sn, 0);
- m_pc080sn->set_gfx_region(1);
+ m_pc080sn->set_gfx_region(0);
m_pc080sn->set_gfxdecode_tag(m_gfxdecode);
PC090OJ(config, m_pc090oj, 0);
- m_pc090oj->set_gfxdecode_tag(m_gfxdecode);
m_pc090oj->set_palette(m_palette);
+ m_pc090oj->set_colpri_callback(FUNC(rbisland_state::rbisland_colpri_cb), this);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -722,7 +698,6 @@ void rbisland_state::jumping(machine_config &config)
config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough unless otherwise */
-
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
@@ -778,13 +753,13 @@ ROM_START( rbisland )
ROM_LOAD( "b22-14.43", 0x00000, 0x4000, CRC(113c1a5b) SHA1(effa2adf54a6be78b2d4baf3a47529342fb0d895) )
ROM_CONTINUE( 0x10000, 0xc000 )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b22-01.2", 0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) ) /* tiles */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b22-01.2", 0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) ) /* tiles */
- ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD( "b22-02.5", 0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) ) /* sprites */
- ROM_LOAD16_BYTE( "b22-12.7", 0x80000, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
- ROM_LOAD16_BYTE( "b22-13.6", 0x80001, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
+ ROM_REGION( 0xa0000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b22-02.5", 0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) ) /* sprites */
+ ROM_LOAD16_BYTE ( "b22-13.6", 0x80000, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
+ ROM_LOAD16_BYTE ( "b22-12.7", 0x80001, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
ROM_END
ROM_START( rbislando )
@@ -803,13 +778,13 @@ ROM_START( rbislando )
ROM_LOAD( "b22-14.43", 0x00000, 0x4000, CRC(113c1a5b) SHA1(effa2adf54a6be78b2d4baf3a47529342fb0d895) )
ROM_CONTINUE( 0x10000, 0xc000 )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b22-01.2", 0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) ) /* tiles */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b22-01.2", 0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) ) /* tiles */
- ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD( "b22-02.5", 0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) ) /* sprites */
- ROM_LOAD16_BYTE( "b22-12.7", 0x80000, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
- ROM_LOAD16_BYTE( "b22-13.6", 0x80001, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
+ ROM_REGION( 0xa0000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b22-02.5", 0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) ) /* sprites */
+ ROM_LOAD16_BYTE ( "b22-13.6", 0x80000, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
+ ROM_LOAD16_BYTE ( "b22-12.7", 0x80001, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
ROM_END
ROM_START( rbislande )
@@ -833,13 +808,13 @@ ROM_START( rbislande )
ROM_LOAD( "b22-14.43", 0x00000, 0x4000, CRC(113c1a5b) SHA1(effa2adf54a6be78b2d4baf3a47529342fb0d895) )
ROM_CONTINUE( 0x10000, 0xc000 )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b22-01.2", 0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) ) /* tiles */
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD16_WORD_SWAP( "b22-01.2", 0x00000, 0x80000, CRC(b76c9168) SHA1(e924be0c8294b930488bb04583784254a840a52e) ) /* tiles */
- ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD( "b22-02.5", 0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) ) /* sprites */
- ROM_LOAD16_BYTE( "b22-12.7", 0x80000, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
- ROM_LOAD16_BYTE( "b22-13.6", 0x80001, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
+ ROM_REGION( 0xa0000, "pc090oj", 0 )
+ ROM_LOAD16_WORD_SWAP( "b22-02.5", 0x00000, 0x80000, CRC(1b87ecf0) SHA1(37a463184f4064fe0565367236e289d57639614c) ) /* sprites */
+ ROM_LOAD16_BYTE ( "b22-13.6", 0x80000, 0x10000, CRC(2fda099f) SHA1(a1e27a4497f6733608be924d69d965b19f725b99) )
+ ROM_LOAD16_BYTE ( "b22-12.7", 0x80001, 0x10000, CRC(67a76dc6) SHA1(626ee684eb3ea859c695ffe03344ccaa442da4af) )
ROM_END
ROM_START( jumping )
@@ -859,29 +834,29 @@ ROM_START( jumping )
ROM_CONTINUE( 0x10000, 0x4000 )
ROM_CONTINUE( 0x0c000, 0x4000 )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "17.ic8", 0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) ) /* tiles */
- ROM_LOAD( "18.ic7", 0x10000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
- ROM_LOAD( "15.ic10", 0x20000, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
- ROM_LOAD( "16.ic9", 0x30000, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
- ROM_LOAD( "13.ic12", 0x40000, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
- ROM_LOAD( "14.ic11", 0x50000, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
- ROM_LOAD( "11.ic14", 0x60000, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
- ROM_LOAD( "12.ic13", 0x70000, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
-
- ROM_REGION( 0xa0000, "gfx2", ROMREGION_INVERT )
- ROM_LOAD( "jb2_ic62", 0x00000, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) ) /* sprites */
- ROM_LOAD( "jb2_ic61", 0x10000, 0x10000, CRC(37c5923b) SHA1(c83ef45564c56ef62d7019aecbd79dccc671deee) )
- ROM_LOAD( "jb2_ic60", 0x20000, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
- ROM_LOAD( "jb2_ic78", 0x28000, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
- ROM_LOAD( "jb2_ic77", 0x38000, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
- ROM_LOAD( "jb2_ic76", 0x48000, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
- ROM_LOAD( "jb2_ic93", 0x50000, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
- ROM_LOAD( "jb2_ic92", 0x60000, 0x10000, CRC(3fbccd33) SHA1(137880a564573db1f9e6de5c730af6709ca301f3) )
- ROM_LOAD( "jb2_ic91", 0x70000, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
- ROM_LOAD( "jb2_i121", 0x78000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
- ROM_LOAD( "jb2_i120", 0x88000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
- ROM_LOAD( "jb2_i119", 0x98000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD32_BYTE( "17.ic8", 0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) ) /* tiles */
+ ROM_LOAD32_BYTE( "18.ic7", 0x40000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
+ ROM_LOAD32_BYTE( "15.ic10", 0x00001, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
+ ROM_LOAD32_BYTE( "16.ic9", 0x40001, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
+ ROM_LOAD32_BYTE( "13.ic12", 0x00002, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
+ ROM_LOAD32_BYTE( "14.ic11", 0x40002, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
+ ROM_LOAD32_BYTE( "11.ic14", 0x00003, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
+ ROM_LOAD32_BYTE( "12.ic13", 0x40003, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
+
+ ROM_REGION( 0xa0000, "sprites", ROMREGION_INVERT )
+ ROM_LOAD32_BYTE( "jb2_ic62", 0x00003, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) ) /* sprites */
+ ROM_LOAD32_BYTE( "jb2_ic61", 0x40003, 0x10000, CRC(37c5923b) SHA1(c83ef45564c56ef62d7019aecbd79dccc671deee) )
+ ROM_LOAD32_BYTE( "jb2_ic60", 0x80003, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
+ ROM_LOAD32_BYTE( "jb2_ic78", 0x00002, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
+ ROM_LOAD32_BYTE( "jb2_ic77", 0x40002, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
+ ROM_LOAD32_BYTE( "jb2_ic76", 0x80002, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
+ ROM_LOAD32_BYTE( "jb2_ic93", 0x00001, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
+ ROM_LOAD32_BYTE( "jb2_ic92", 0x40001, 0x10000, CRC(3fbccd33) SHA1(137880a564573db1f9e6de5c730af6709ca301f3) )
+ ROM_LOAD32_BYTE( "jb2_ic91", 0x80001, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
+ ROM_LOAD32_BYTE( "jb2_i121", 0x00000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
+ ROM_LOAD32_BYTE( "jb2_i120", 0x40000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
+ ROM_LOAD32_BYTE( "jb2_i119", 0x80000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
ROM_REGION( 0x200, "pals", 0 )
ROM_LOAD( "jumping-pal16r6.bin", 0x000, 0x104, CRC(12e9a7b8) SHA1(a0ce8b6083c9adfcb4bdbca87f63a01f292525f3) )
@@ -906,29 +881,29 @@ ROM_START( jumpinga )
ROM_CONTINUE( 0x10000, 0x4000 )
ROM_CONTINUE( 0x0c000, 0x4000 )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "17.ic8", 0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) ) /* tiles */
- ROM_LOAD( "18.ic7", 0x10000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
- ROM_LOAD( "15.ic10", 0x20000, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
- ROM_LOAD( "16.ic9", 0x30000, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
- ROM_LOAD( "13.ic12", 0x40000, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
- ROM_LOAD( "14.ic11", 0x50000, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
- ROM_LOAD( "11.ic14", 0x60000, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
- ROM_LOAD( "12.ic13", 0x70000, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
-
- ROM_REGION( 0xa0000, "gfx2", ROMREGION_INVERT )
- ROM_LOAD( "jb2_ic62", 0x00000, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) ) /* sprites */
- ROM_LOAD( "20.bin", 0x10000, 0x10000, CRC(89b3d8ee) SHA1(8491de6e8292e58b9a8696be15827bcb1ea42845) ) // dumped multiple times, always the same
- ROM_LOAD( "jb2_ic60", 0x20000, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
- ROM_LOAD( "jb2_ic78", 0x28000, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
- ROM_LOAD( "jb2_ic77", 0x38000, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
- ROM_LOAD( "jb2_ic76", 0x48000, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
- ROM_LOAD( "jb2_ic93", 0x50000, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
- ROM_LOAD( "jb2_ic92", 0x60000, 0x10000, CRC(3fbccd33) SHA1(137880a564573db1f9e6de5c730af6709ca301f3) )
- ROM_LOAD( "jb2_ic91", 0x70000, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
- ROM_LOAD( "jb2_i121", 0x78000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
- ROM_LOAD( "jb2_i120", 0x88000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
- ROM_LOAD( "jb2_i119", 0x98000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD32_BYTE( "17.ic8", 0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) ) /* tiles */
+ ROM_LOAD32_BYTE( "18.ic7", 0x40000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
+ ROM_LOAD32_BYTE( "15.ic10", 0x00001, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
+ ROM_LOAD32_BYTE( "16.ic9", 0x40001, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
+ ROM_LOAD32_BYTE( "13.ic12", 0x00002, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
+ ROM_LOAD32_BYTE( "14.ic11", 0x40002, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
+ ROM_LOAD32_BYTE( "11.ic14", 0x00003, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
+ ROM_LOAD32_BYTE( "12.ic13", 0x40003, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
+
+ ROM_REGION( 0xa0000, "sprites", ROMREGION_INVERT )
+ ROM_LOAD32_BYTE( "jb2_ic62", 0x00003, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) ) /* sprites */
+ ROM_LOAD32_BYTE( "20.bin", 0x40003, 0x10000, CRC(89b3d8ee) SHA1(8491de6e8292e58b9a8696be15827bcb1ea42845) ) // dumped multiple times, always the same
+ ROM_LOAD32_BYTE( "jb2_ic60", 0x80003, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
+ ROM_LOAD32_BYTE( "jb2_ic78", 0x00002, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
+ ROM_LOAD32_BYTE( "jb2_ic77", 0x40002, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
+ ROM_LOAD32_BYTE( "jb2_ic76", 0x80002, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
+ ROM_LOAD32_BYTE( "jb2_ic93", 0x00001, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
+ ROM_LOAD32_BYTE( "jb2_ic92", 0x40001, 0x10000, CRC(3fbccd33) SHA1(137880a564573db1f9e6de5c730af6709ca301f3) )
+ ROM_LOAD32_BYTE( "jb2_ic91", 0x80001, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
+ ROM_LOAD32_BYTE( "jb2_i121", 0x00000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
+ ROM_LOAD32_BYTE( "jb2_i120", 0x40000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
+ ROM_LOAD32_BYTE( "jb2_i119", 0x80000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
ROM_REGION( 0x200, "pals", 0 )
ROM_LOAD( "jumping-pal16r6.bin", 0x000, 0x104, CRC(12e9a7b8) SHA1(a0ce8b6083c9adfcb4bdbca87f63a01f292525f3) )
@@ -938,49 +913,47 @@ ROM_END
/* red 'Imnoe' PCB */
ROM_START( jumpingi )
- ROM_REGION( 0xa0000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "05.ic3", 0x00000, 0x20000, CRC(69ac4af4) SHA1(39055573e412e2591f7a68f9fee5919528529544) )
- ROM_LOAD16_BYTE( "03.ic6", 0x00001, 0x20000, CRC(38975cdc) SHA1(23c02a4574a95904805d5f458c06c77c14d11c14) )
- ROM_LOAD16_BYTE( "06.ic2", 0x40000, 0x20000, CRC(3ebb0fb8) SHA1(1b41b305623d121255eb70cb992e4d9da13abd82) ) // b22-03.23
- ROM_LOAD16_BYTE( "04.ic5", 0x40001, 0x20000, CRC(91625e7f) SHA1(765afd973d9b82bb496b04beca284bf2769d6e6f) ) // b22-04.24
- ROM_LOAD16_BYTE( "02", 0x80001, 0x10000, CRC(0810d327) SHA1(fe91ac02e617bde413dc8a20b7cbcaf3e20aeb28) ) /* c-chip substitute */
-
- ROM_REGION( 0x14000, "audiocpu", 0 )
- ROM_LOAD( "01.ic53", 0x00000, 0x8000, CRC(8527c00e) SHA1(86e3824caca39aca4ca4df63bb4474adacfc4c53) )
- ROM_CONTINUE( 0x10000, 0x4000 )
- ROM_CONTINUE( 0x0c000, 0x4000 )
-
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "13.ic8", 0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) ) /* tiles */
- ROM_LOAD( "14.ic7", 0x10000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
- ROM_LOAD( "11.ic10", 0x20000, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
- ROM_LOAD( "12.ic9", 0x30000, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
- ROM_LOAD( "09.ic12", 0x40000, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
- ROM_LOAD( "10.ic11", 0x50000, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
- ROM_LOAD( "07.ic14", 0x60000, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
- ROM_LOAD( "08.ic13", 0x70000, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
-
- ROM_REGION( 0xa0000, "gfx2", ROMREGION_INVERT )
- ROM_LOAD( "15.ic62", 0x00000, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) ) /* sprites */
- ROM_LOAD( "19.ic61", 0x10000, 0x10000, CRC(89b3d8ee) SHA1(8491de6e8292e58b9a8696be15827bcb1ea42845) )
- ROM_LOAD( "23.ic60", 0x20000, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
- ROM_LOAD( "16.ic78", 0x28000, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
- ROM_LOAD( "20.ic77", 0x38000, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
- ROM_LOAD( "24.ic76", 0x48000, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
- ROM_LOAD( "17.ic93", 0x50000, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
- ROM_LOAD( "21.ic92", 0x60000, 0x10000, CRC(16e1b0ff) SHA1(1467a317d07a447d01113e6b6b9f5aca30cb0dcb) )
- ROM_LOAD( "25.ic91", 0x70000, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
- ROM_LOAD( "18.ic121", 0x78000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
- ROM_LOAD( "22.ic120", 0x88000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
- ROM_LOAD( "26.ic119", 0x98000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
-
- ROM_REGION( 0x200, "pals", 0 )
- ROM_LOAD( "jp2.ic56", 0x000, 0x104, CRC(12e9a7b8) SHA1(a0ce8b6083c9adfcb4bdbca87f63a01f292525f3) ) // PAL16R6A-2CN
- ROM_LOAD( "jp1.ic13", 0x000, 0x144, CRC(76944f81) SHA1(ab78e4e157ffdc13aea5dc360268b2640e60d19c) ) // PAL20L8A-2CNS
- ROM_LOAD( "jp3.ic51", 0x000, 0x104, CRC(c1e6cb8f) SHA1(9908e62bb9b806047b7a344bb62334bd696b9fc8) ) // PAL16L8A-2CN z80 address decoder?
-ROM_END
+ ROM_REGION( 0xa0000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "05.ic3", 0x00000, 0x20000, CRC(69ac4af4) SHA1(39055573e412e2591f7a68f9fee5919528529544) )
+ ROM_LOAD16_BYTE( "03.ic6", 0x00001, 0x20000, CRC(38975cdc) SHA1(23c02a4574a95904805d5f458c06c77c14d11c14) )
+ ROM_LOAD16_BYTE( "06.ic2", 0x40000, 0x20000, CRC(3ebb0fb8) SHA1(1b41b305623d121255eb70cb992e4d9da13abd82) ) // b22-03.23
+ ROM_LOAD16_BYTE( "04.ic5", 0x40001, 0x20000, CRC(91625e7f) SHA1(765afd973d9b82bb496b04beca284bf2769d6e6f) ) // b22-04.24
+ ROM_LOAD16_BYTE( "02", 0x80001, 0x10000, CRC(0810d327) SHA1(fe91ac02e617bde413dc8a20b7cbcaf3e20aeb28) ) /* c-chip substitute */
+
+ ROM_REGION( 0x14000, "audiocpu", 0 )
+ ROM_LOAD( "01.ic53", 0x00000, 0x8000, CRC(8527c00e) SHA1(86e3824caca39aca4ca4df63bb4474adacfc4c53) )
+ ROM_CONTINUE( 0x10000, 0x4000 )
+ ROM_CONTINUE( 0x0c000, 0x4000 )
+ ROM_REGION( 0x80000, "pc080sn", 0 )
+ ROM_LOAD32_BYTE( "13.ic8", 0x00000, 0x10000, CRC(65b76309) SHA1(1e345726e137f4c56d4bf239651c986fd53a16c3) ) /* tiles */
+ ROM_LOAD32_BYTE( "14.ic7", 0x40000, 0x10000, CRC(43a94283) SHA1(d6a05cbc7b996a8e7f1520563f6fada9a59021a4) )
+ ROM_LOAD32_BYTE( "11.ic10", 0x00001, 0x10000, CRC(e61933fb) SHA1(02bc0e1a7a3ce9e15fb83b28ce8fafb0b8d80ebd) )
+ ROM_LOAD32_BYTE( "12.ic9", 0x40001, 0x10000, CRC(ed031eb2) SHA1(905be4d890ff7bb8a4d8ad85b2a11483fb4d67eb) )
+ ROM_LOAD32_BYTE( "09.ic12", 0x00002, 0x10000, CRC(312700ca) SHA1(c79edc9c25f364d0afd79aaa21cfe2fe46044314) )
+ ROM_LOAD32_BYTE( "10.ic11", 0x40002, 0x10000, CRC(de3b0b88) SHA1(14b8871821e4c0abbb9967c5aa282cf4e67884fe) )
+ ROM_LOAD32_BYTE( "07.ic14", 0x00003, 0x10000, CRC(9fdc6c8e) SHA1(ff4e1a98dc982bce2f9d235cac62c7166f477f64) )
+ ROM_LOAD32_BYTE( "08.ic13", 0x40003, 0x10000, CRC(06226492) SHA1(834280ec49e61a0c9c6b6fe2033e1b20bd1bffbf) )
+
+ ROM_REGION( 0xa0000, "sprites", ROMREGION_INVERT )
+ ROM_LOAD32_BYTE( "15.ic62", 0x00003, 0x10000, CRC(8548db6c) SHA1(675cd301259d5ed16098a38ac58b27b5ccd91264) ) /* sprites */
+ ROM_LOAD32_BYTE( "19.ic61", 0x40003, 0x10000, CRC(89b3d8ee) SHA1(8491de6e8292e58b9a8696be15827bcb1ea42845) )
+ ROM_LOAD32_BYTE( "23.ic60", 0x80003, 0x08000, CRC(662a2f1e) SHA1(1c5e8b1f0623e64faf9cd60f9653fc5957191a9b) )
+ ROM_LOAD32_BYTE( "16.ic78", 0x00002, 0x10000, CRC(925865e1) SHA1(457de50bc03e8b949ac7d46ae4188201e87574a8) )
+ ROM_LOAD32_BYTE( "20.ic77", 0x40002, 0x10000, CRC(b09695d1) SHA1(e6d315f9befb7b47f42668d573a1102e52d78aea) )
+ ROM_LOAD32_BYTE( "24.ic76", 0x80002, 0x08000, CRC(41937743) SHA1(890c832a7cf87e6fe749d4824b02d57e10872bdf) )
+ ROM_LOAD32_BYTE( "17.ic93", 0x00001, 0x10000, CRC(f644eeab) SHA1(9d45e9dfb08e8c90b4b10f5dc383fa4732161a81) )
+ ROM_LOAD32_BYTE( "21.ic92", 0x40001, 0x10000, CRC(16e1b0ff) SHA1(1467a317d07a447d01113e6b6b9f5aca30cb0dcb) )
+ ROM_LOAD32_BYTE( "25.ic91", 0x80001, 0x08000, CRC(d886c014) SHA1(9327c332c98a81451e9e0624344d2601ef06e490) )
+ ROM_LOAD32_BYTE( "18.ic121", 0x00000, 0x10000, CRC(93df1e4d) SHA1(b100d265b973254ec9cd44b6c32f62b4bac3b732) )
+ ROM_LOAD32_BYTE( "22.ic120", 0x40000, 0x10000, CRC(7c4e893b) SHA1(eceecb38554157ee24d228a2c722dad750a6a07d) )
+ ROM_LOAD32_BYTE( "26.ic119", 0x80000, 0x08000, CRC(7e1d58d8) SHA1(d586a018c3ec3e6e6a39992170d324361e03c68a) )
+ ROM_REGION( 0x200, "pals", 0 )
+ ROM_LOAD( "jp2.ic56", 0x000, 0x104, CRC(12e9a7b8) SHA1(a0ce8b6083c9adfcb4bdbca87f63a01f292525f3) ) // PAL16R6A-2CN
+ ROM_LOAD( "jp1.ic13", 0x000, 0x144, CRC(76944f81) SHA1(ab78e4e157ffdc13aea5dc360268b2640e60d19c) ) // PAL20L8A-2CNS
+ ROM_LOAD( "jp3.ic51", 0x000, 0x104, CRC(c1e6cb8f) SHA1(9908e62bb9b806047b7a344bb62334bd696b9fc8) ) // PAL16L8A-2CN z80 address decoder?
+ROM_END
void rbisland_state::init_rbisland()
diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp
index 84da9e14907..67b01bf2355 100644
--- a/src/mame/drivers/volfied.cpp
+++ b/src/mame/drivers/volfied.cpp
@@ -76,7 +76,7 @@ void volfied_state::main_map(address_map &map)
map(0x400000, 0x47ffff).rw(FUNC(volfied_state::video_ram_r), FUNC(volfied_state::video_ram_w));
map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0x600000, 0x600001).w(FUNC(volfied_state::video_mask_w));
- map(0x700000, 0x700001).w(FUNC(volfied_state::sprite_ctrl_w));
+ map(0x700000, 0x700001).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
map(0xd00000, 0xd00001).rw(FUNC(volfied_state::video_ctrl_r), FUNC(volfied_state::video_ctrl_w));
map(0xe00001, 0xe00001).w("ciu", FUNC(pc060ha_device::master_port_w));
map(0xe00003, 0xe00003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
@@ -187,26 +187,6 @@ static INPUT_PORTS_START( volfiedj )
INPUT_PORTS_END
-/**************************************************************
- GFX DECODING
-**************************************************************/
-
-static const gfx_layout tilelayout =
-{
- 16, 16,
- 0x1800,
- 4,
- { 0, 1, 2, 3 },
- { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, 8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 },
- { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
- 128*8
-};
-
-static GFXDECODE_START( gfx_volfied )
- GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 4096, 256 )
-GFXDECODE_END
-
-
/***********************************************************
MACHINE DRIVERS
***********************************************************/
@@ -270,12 +250,11 @@ void volfied_state::volfied(machine_config &config)
m_screen->set_screen_update(FUNC(volfied_state::screen_update));
m_screen->set_palette("palette");
- GFXDECODE(config, "gfxdecode", "palette", gfx_volfied);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 8192);
PC090OJ(config, m_pc090oj, 0);
- m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette("palette");
+ m_pc090oj->set_colpri_callback(FUNC(volfied_state::volfied_colpri_cb), this);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -313,7 +292,7 @@ ROM_START( volfied )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "cchip_c04-23", 0x0000, 0x2000, CRC(46b0b479) SHA1(73aa2267eb468c5aa5db67183047e9aef8321215) )
- ROM_REGION( 0xc0000, "gfx1", 0 ) /* sprites 16x16 */
+ ROM_REGION( 0xc0000, "pc090oj", 0 ) /* sprites 16x16 */
ROM_LOAD16_BYTE( "c04-16.2", 0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
ROM_LOAD16_BYTE( "c04-18.4", 0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
@@ -345,7 +324,7 @@ ROM_START( volfiedo )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "cchip_c04-23", 0x0000, 0x2000, CRC(46b0b479) SHA1(73aa2267eb468c5aa5db67183047e9aef8321215) )
- ROM_REGION( 0xc0000, "gfx1", 0 ) /* sprites 16x16 */
+ ROM_REGION( 0xc0000, "pc090oj", 0 ) /* sprites 16x16 */
ROM_LOAD16_BYTE( "c04-16.2", 0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
ROM_LOAD16_BYTE( "c04-18.4", 0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
@@ -377,7 +356,7 @@ ROM_START( volfiedu )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "cchip_c04-23", 0x0000, 0x2000, CRC(46b0b479) SHA1(73aa2267eb468c5aa5db67183047e9aef8321215) )
- ROM_REGION( 0xc0000, "gfx1", 0 ) /* sprites 16x16 */
+ ROM_REGION( 0xc0000, "pc090oj", 0 ) /* sprites 16x16 */
ROM_LOAD16_BYTE( "c04-16.2", 0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
ROM_LOAD16_BYTE( "c04-18.4", 0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
@@ -409,7 +388,7 @@ ROM_START( volfieduo )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "cchip_c04-23", 0x0000, 0x2000, CRC(46b0b479) SHA1(73aa2267eb468c5aa5db67183047e9aef8321215) )
- ROM_REGION( 0xc0000, "gfx1", 0 ) /* sprites 16x16 */
+ ROM_REGION( 0xc0000, "pc090oj", 0 ) /* sprites 16x16 */
ROM_LOAD16_BYTE( "c04-16.2", 0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
ROM_LOAD16_BYTE( "c04-18.4", 0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
@@ -441,7 +420,7 @@ ROM_START( volfiedj )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "cchip_c04-23", 0x0000, 0x2000, CRC(46b0b479) SHA1(73aa2267eb468c5aa5db67183047e9aef8321215) )
- ROM_REGION( 0xc0000, "gfx1", 0 ) /* sprites 16x16 */
+ ROM_REGION( 0xc0000, "pc090oj", 0 ) /* sprites 16x16 */
ROM_LOAD16_BYTE( "c04-16.2", 0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
ROM_LOAD16_BYTE( "c04-18.4", 0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
@@ -473,7 +452,7 @@ ROM_START( volfiedjo )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "cchip_c04-23", 0x0000, 0x2000, CRC(46b0b479) SHA1(73aa2267eb468c5aa5db67183047e9aef8321215) )
- ROM_REGION( 0xc0000, "gfx1", 0 ) /* sprites 16x16 */
+ ROM_REGION( 0xc0000, "pc090oj", 0 ) /* sprites 16x16 */
ROM_LOAD16_BYTE( "c04-16.2", 0x00000, 0x20000, CRC(8c2476ef) SHA1(972ddc8e47a669f1aeca67d02b4a0bed867ddb7d) )
ROM_LOAD16_BYTE( "c04-18.4", 0x00001, 0x20000, CRC(7665212c) SHA1(b816ac2a95ee273aaf90991f53766d7f0d5d9238) )
ROM_LOAD16_BYTE( "c04-15.1", 0x40000, 0x20000, CRC(7c50b978) SHA1(aa9cad5f09f5d9dceaf4e06bcd347f1d5d02d292) )
diff --git a/src/mame/includes/asuka.h b/src/mame/includes/asuka.h
index 4687e120fb1..0369ebb122c 100644
--- a/src/mame/includes/asuka.h
+++ b/src/mame/includes/asuka.h
@@ -93,13 +93,13 @@ private:
void msm5205_address_w(u8 data);
u16 cadash_share_r(offs_t offset);
void cadash_share_w(offs_t offset, u16 data);
- void asuka_spritectrl_w(u16 data);
void msm5205_start_w(u8 data);
void msm5205_stop_w(u8 data);
void counters_w(u8 data);
- uint32_t screen_update_bonzeadv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_asuka(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank_asuka);
+ void asuka_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
+ void bonzeadv_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank);
INTERRUPT_GEN_MEMBER(cadash_interrupt);
INTERRUPT_GEN_MEMBER(bonze_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
diff --git a/src/mame/includes/rastan.h b/src/mame/includes/rastan.h
index 4334ca03c60..bbe03ef619b 100644
--- a/src/mame/includes/rastan.h
+++ b/src/mame/includes/rastan.h
@@ -61,6 +61,7 @@ private:
void sound_bankswitch_w(u8 data);
void msm5205_start_w(u8 data);
void msm5205_stop_w(u8 data);
+ void rastan_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(msm5205_vck);
void main_map(address_map &map);
diff --git a/src/mame/includes/rbisland.h b/src/mame/includes/rbisland.h
index cd540597591..99842ceac41 100644
--- a/src/mame/includes/rbisland.h
+++ b/src/mame/includes/rbisland.h
@@ -57,6 +57,7 @@ private:
DECLARE_WRITE8_MEMBER(bankswitch_w);
DECLARE_WRITE8_MEMBER(counters_w);
DECLARE_VIDEO_START(jumping);
+ void rbisland_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
uint32_t screen_update_rainbow(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_jumping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(cchip_timer);
diff --git a/src/mame/includes/volfied.h b/src/mame/includes/volfied.h
index f3b2bd48f72..f635e76788c 100644
--- a/src/mame/includes/volfied.h
+++ b/src/mame/includes/volfied.h
@@ -46,8 +46,8 @@ private:
DECLARE_WRITE16_MEMBER(video_ctrl_w);
DECLARE_READ16_MEMBER(video_ctrl_r);
DECLARE_WRITE16_MEMBER(video_mask_w);
- DECLARE_WRITE16_MEMBER(sprite_ctrl_w);
DECLARE_WRITE8_MEMBER(counters_w);
+ void volfied_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
diff --git a/src/mame/video/asuka.cpp b/src/mame/video/asuka.cpp
index 33f98594e31..7fc322895ed 100644
--- a/src/mame/video/asuka.cpp
+++ b/src/mame/video/asuka.cpp
@@ -8,10 +8,16 @@
SPRITE READ AND WRITE HANDLERS
**************************************************************/
-void asuka_state::asuka_spritectrl_w(u16 data)
+void asuka_state::asuka_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
{
- /* Bits 2-5 are color bank; in asuka games bit 0 is global priority */
- m_pc090oj->set_sprite_ctrl(((data & 0x3c) >> 2) | ((data & 0x1) << 15));
+ sprite_colbank = (sprite_ctrl & 0x3c) << 2;
+ pri_mask = (sprite_ctrl & 1) ? 0xfc : 0xf0; /* variable sprite/tile priority */
+}
+
+void asuka_state::bonzeadv_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
+{
+ sprite_colbank = (sprite_ctrl & 0x3c) << 2;
+ pri_mask = 0xf0; /* sprites over top bg layer */
}
@@ -19,32 +25,7 @@ void asuka_state::asuka_spritectrl_w(u16 data)
SCREEN REFRESH
**************************************************************/
-uint32_t asuka_state::screen_update_asuka(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- u8 layer[3];
-
- m_tc0100scn->tilemap_update();
-
- layer[0] = m_tc0100scn->bottomlayer();
- layer[1] = layer[0] ^ 1;
- layer[2] = 2;
-
- screen.priority().fill(0, cliprect);
-
- /* Ensure screen blanked even when bottom layer not drawn due to disable bit */
- bitmap.fill(0, cliprect);
-
- m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
- m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
- m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
-
- /* Sprites may be over or under top bg layer */
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 2);
- return 0;
-}
-
-
-uint32_t asuka_state::screen_update_bonzeadv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t asuka_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
u8 layer[3];
@@ -63,7 +44,6 @@ uint32_t asuka_state::screen_update_bonzeadv(screen_device &screen, bitmap_ind16
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
- /* Sprites are always over both bg layers */
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 0);
+ m_pc090oj->draw_sprites(screen, bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/pc090oj.cpp b/src/mame/video/pc090oj.cpp
index 2b679b09722..43d87c2e6f4 100644
--- a/src/mame/video/pc090oj.cpp
+++ b/src/mame/video/pc090oj.cpp
@@ -61,10 +61,10 @@ Taito pc090oj
#include "emu.h"
#include "pc090oj.h"
+#include "screen.h"
-#define PC090OJ_RAM_SIZE 0x4000
-#define PC090OJ_ACTIVE_RAM_SIZE 0x800
-
+static constexpr u32 PC090OJ_RAM_SIZE = 0x4000;
+static constexpr u32 PC090OJ_ACTIVE_RAM_SIZE = 0x800;
/*****************************************************************************
@@ -74,29 +74,40 @@ Taito pc090oj
DEFINE_DEVICE_TYPE(PC090OJ, pc090oj_device, "pc090oj", "Taito PC090OJ")
-pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, PC090OJ, tag, owner, clock),
- device_gfx_interface(mconfig, *this),
- m_ctrl(0),
- m_sprite_ctrl(0),
- m_ram(nullptr),
- m_ram_buffered(nullptr),
- m_gfxnum(0),
- m_x_offset(0),
- m_y_offset(0),
- m_use_buffer(0),
- m_gfxdecode(*this, finder_base::DUMMY_TAG)
+pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, PC090OJ, tag, owner, clock)
+ , device_gfx_interface(mconfig, *this, nullptr)
+ , m_ctrl(0)
+ , m_sprite_ctrl(0)
+ , m_ram(nullptr)
+ , m_ram_buffered(nullptr)
+ , m_x_offset(0)
+ , m_y_offset(0)
+ , m_use_buffer(false)
{
}
+/*************************************
+ *
+ * Graphics definitions
+ *
+ *************************************/
+
+GFXDECODE_MEMBER(pc090oj_device::gfxinfo)
+ GFXDECODE_DEVICE(DEVICE_SELF, 0, gfx_16x16x4_packed_msb, 0, 1)
+GFXDECODE_END
+
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void pc090oj_device::device_start()
{
- m_ram = make_unique_clear<uint16_t[]>(PC090OJ_RAM_SIZE / 2);
- m_ram_buffered = make_unique_clear<uint16_t[]>(PC090OJ_RAM_SIZE / 2);
+ decode_gfx(gfxinfo);
+ gfx(0)->set_colors(palette().entries() / 16);
+
+ m_ram = make_unique_clear<u16[]>(PC090OJ_RAM_SIZE / 2);
+ m_ram_buffered = make_unique_clear<u16[]>(PC090OJ_RAM_SIZE / 2);
save_pointer(NAME(m_ram), PC090OJ_RAM_SIZE / 2);
save_pointer(NAME(m_ram_buffered), PC090OJ_RAM_SIZE / 2);
@@ -117,17 +128,17 @@ void pc090oj_device::device_reset()
DEVICE HANDLERS
*****************************************************************************/
-void pc090oj_device::set_sprite_ctrl( uint16_t sprctrl )
+void pc090oj_device::sprite_ctrl_w(u16 data)
{
- m_sprite_ctrl = sprctrl;
+ m_sprite_ctrl = data;
}
-READ16_MEMBER( pc090oj_device::word_r )
+u16 pc090oj_device::word_r(offs_t offset)
{
return m_ram[offset];
}
-WRITE16_MEMBER( pc090oj_device::word_w )
+void pc090oj_device::word_w(offs_t offset, u16 data, u16 mem_mask)
{
COMBINE_DATA(&m_ram[offset]);
@@ -146,50 +157,37 @@ WRITE16_MEMBER( pc090oj_device::word_w )
}
}
-void pc090oj_device::eof_callback( )
+void pc090oj_device::eof_callback()
{
if (m_use_buffer)
{
- int i;
- for (i = 0; i < PC090OJ_ACTIVE_RAM_SIZE / 2; i++)
+ for (int i = 0; i < PC090OJ_ACTIVE_RAM_SIZE / 2; i++)
m_ram_buffered[i] = m_ram[i];
}
}
-void pc090oj_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_type )
+void pc090oj_device::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int offs, priority = 0;
- int sprite_colbank = (m_sprite_ctrl & 0xf) << 4; /* top nibble */
+ const bool priority = !m_colpri_cb.isnull();
+ u32 sprite_colbank = 0, pri_mask = 0;
+ if (priority)
+ m_colpri_cb(sprite_colbank, pri_mask, m_sprite_ctrl);
- switch (pri_type)
- {
- case 0x00:
- priority = 0; /* sprites over top bg layer */
- break;
-
- case 0x01:
- priority = 1; /* sprites under top bg layer */
- break;
+ int start, end, inc;
+ if (priority) { start = 0; end = PC090OJ_ACTIVE_RAM_SIZE / 2; inc = 4; }
+ else { start = (PC090OJ_ACTIVE_RAM_SIZE / 2) - 4; end = -4; inc = -4; }
- case 0x02:
- priority = m_sprite_ctrl >> 15; /* variable sprite/tile priority */
- }
-
- for (offs = 0; offs < PC090OJ_ACTIVE_RAM_SIZE / 2; offs += 4)
+ for (int offs = start; offs != end; offs += inc)
{
- int flipx, flipy;
- int x, y;
- int data, code, color;
-
- data = m_ram_buffered[offs];
- flipy = (data & 0x8000) >> 15;
- flipx = (data & 0x4000) >> 14;
- color = (data & 0x000f) | sprite_colbank;
+ const u16 data = m_ram_buffered[offs];
+ int flipy = (data & 0x8000) >> 15;
+ int flipx = (data & 0x4000) >> 14;
+ const u32 color = (data & 0x000f) | sprite_colbank;
- code = m_ram_buffered[offs + 2] & 0x1fff;
- x = m_ram_buffered[offs + 3] & 0x1ff; /* mask verified with Rainbowe board */
- y = m_ram_buffered[offs + 1] & 0x1ff; /* mask verified with Rainbowe board */
+ const u32 code = m_ram_buffered[offs + 2] & 0x1fff;
+ int x = m_ram_buffered[offs + 3] & 0x1ff; /* mask verified with Rainbowe board */
+ int y = m_ram_buffered[offs + 1] & 0x1ff; /* mask verified with Rainbowe board */
/* treat coords as signed */
if (x > 0x140) x -= 0x200;
@@ -206,12 +204,24 @@ void pc090oj_device::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre
x += m_x_offset;
y += m_y_offset;
- m_gfxdecode->gfx(m_gfxnum)->prio_transpen(bitmap,cliprect,
- code,
- color,
- flipx,flipy,
- x,y,
- priority_bitmap,
- priority ? 0xfc : 0xf0,0);
+ if (priority)
+ {
+ gfx(0)->prio_transpen(bitmap,cliprect,
+ code,
+ color,
+ flipx,flipy,
+ x,y,
+ screen.priority(),pri_mask,
+ 0);
+ }
+ else
+ {
+ gfx(0)->transpen(bitmap,cliprect,
+ code,
+ color,
+ flipx,flipy,
+ x,y,
+ 0);
+ }
}
}
diff --git a/src/mame/video/pc090oj.h b/src/mame/video/pc090oj.h
index 930aa5aecc0..6a518d9b669 100644
--- a/src/mame/video/pc090oj.h
+++ b/src/mame/video/pc090oj.h
@@ -5,27 +5,28 @@
#pragma once
+typedef device_delegate<void (u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)> pc090oj_colpri_cb_delegate;
+
class pc090oj_device : public device_t, public device_gfx_interface
{
public:
- pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
// configuration
- template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
- void set_gfx_region(int gfxregion) { m_gfxnum = gfxregion; }
- void set_usebuffer(int use_buf) { m_use_buffer = use_buf; }
+ void set_usebuffer(bool use_buf) { m_use_buffer = use_buf; }
void set_offsets(int x_offset, int y_offset)
{
m_x_offset = x_offset;
m_y_offset = y_offset;
}
+ template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = pc090oj_colpri_cb_delegate(std::forward<T>(args)...); }
- DECLARE_READ16_MEMBER( word_r );
- DECLARE_WRITE16_MEMBER( word_w );
+ u16 word_r(offs_t offset);
+ void word_w(offs_t offset, u16 data, u16 mem_mask = 0);
+ void sprite_ctrl_w(u16 data);
- void set_sprite_ctrl(uint16_t sprctrl);
void eof_callback();
- void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &priority_bitmap, int pri_type);
+ void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
// device-level overrides
@@ -42,18 +43,19 @@ private:
routines here modular.
*/
+ pc090oj_colpri_cb_delegate m_colpri_cb;
- uint16_t m_ctrl;
- uint16_t m_sprite_ctrl;
+ // decoding info
+ DECLARE_GFXDECODE_MEMBER(gfxinfo);
- std::unique_ptr<uint16_t[]> m_ram;
- std::unique_ptr<uint16_t[]> m_ram_buffered;
+ u16 m_ctrl;
+ u16 m_sprite_ctrl;
- int m_gfxnum;
- int m_x_offset, m_y_offset;
- int m_use_buffer;
+ std::unique_ptr<u16[]> m_ram;
+ std::unique_ptr<u16[]> m_ram_buffered;
- required_device<gfxdecode_device> m_gfxdecode;
+ int m_x_offset, m_y_offset;
+ bool m_use_buffer;
};
DECLARE_DEVICE_TYPE(PC090OJ, pc090oj_device)
diff --git a/src/mame/video/rastan.cpp b/src/mame/video/rastan.cpp
index c9d1e5f5d78..88806e349bd 100644
--- a/src/mame/video/rastan.cpp
+++ b/src/mame/video/rastan.cpp
@@ -13,10 +13,16 @@
/***************************************************************************/
-void rastan_state::spritectrl_w(u16 data)
+void rastan_state::rastan_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
{
/* bits 5-7 are the sprite palette bank */
- m_pc090oj->set_sprite_ctrl((data & 0xe0) >> 5);
+ sprite_colbank = (sprite_ctrl & 0xe0) >> 1;
+ pri_mask = 0; /* sprites over everything */
+}
+
+void rastan_state::spritectrl_w(u16 data)
+{
+ m_pc090oj->sprite_ctrl_w(data);
/* bit 4 unused */
@@ -45,6 +51,6 @@ u32 rastan_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, con
m_pc080sn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
m_pc080sn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 0);
+ m_pc090oj->draw_sprites(screen, bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/rbisland.cpp b/src/mame/video/rbisland.cpp
index c326b856f01..943301aeacd 100644
--- a/src/mame/video/rbisland.cpp
+++ b/src/mame/video/rbisland.cpp
@@ -14,16 +14,14 @@
/***************************************************************************/
-WRITE16_MEMBER(rbisland_state::rbisland_spritectrl_w)
+void rbisland_state::rbisland_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
{
- if (offset == 0)
- {
- /* bits 0 and 1 always set */
- /* bits 5-7 are the sprite palette bank */
- /* other bits unknown */
+ /* bits 0 and 1 always set */
+ /* bits 5-7 are the sprite palette bank */
+ /* other bits unknown */
- m_pc090oj->set_sprite_ctrl((data & 0xe0) >> 5);
- }
+ sprite_colbank = (sprite_ctrl & 0xe0) >> 1;
+ pri_mask = 0xfc; /* sprites under top bg layer */
}
WRITE16_MEMBER(rbisland_state::jumping_spritectrl_w)
@@ -54,7 +52,7 @@ uint32_t rbisland_state::screen_update_rainbow(screen_device &screen, bitmap_ind
m_pc080sn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
m_pc080sn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 1);
+ m_pc090oj->draw_sprites(screen, bitmap, cliprect);
return 0;
}
diff --git a/src/mame/video/volfied.cpp b/src/mame/video/volfied.cpp
index 70ffc0bfb20..f0fa5c001fa 100644
--- a/src/mame/video/volfied.cpp
+++ b/src/mame/video/volfied.cpp
@@ -57,9 +57,10 @@ WRITE16_MEMBER(volfied_state::video_mask_w)
COMBINE_DATA(&m_video_mask);
}
-WRITE16_MEMBER(volfied_state::sprite_ctrl_w)
+void volfied_state::volfied_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
{
- m_pc090oj->set_sprite_ctrl((data & 0x3c) >> 2);
+ sprite_colbank = 0x100 | ((sprite_ctrl & 0x3c) << 2);
+ pri_mask = 0; /* sprites over everything */
}
@@ -123,6 +124,6 @@ uint32_t volfied_state::screen_update(screen_device &screen, bitmap_ind16 &bitma
{
screen.priority().fill(0, cliprect);
refresh_pixel_layer(bitmap);
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 0);
+ m_pc090oj->draw_sprites(screen, bitmap, cliprect);
return 0;
}