From 0d4948e0dc1fc8bafec8d5f2660c233523c9bad5 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 10 Jun 2019 22:41:44 +0900 Subject: 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 --- src/mame/drivers/asuka.cpp | 57 +++++---- src/mame/drivers/opwolf.cpp | 133 +++++++-------------- src/mame/drivers/rastan.cpp | 64 ++++------ src/mame/drivers/rbisland.cpp | 265 +++++++++++++++++++----------------------- src/mame/drivers/volfied.cpp | 37 ++---- src/mame/includes/asuka.h | 8 +- src/mame/includes/rastan.h | 1 + src/mame/includes/rbisland.h | 1 + src/mame/includes/volfied.h | 2 +- src/mame/video/asuka.cpp | 42 ++----- src/mame/video/pc090oj.cpp | 128 ++++++++++---------- src/mame/video/pc090oj.h | 34 +++--- src/mame/video/rastan.cpp | 12 +- src/mame/video/rbisland.cpp | 16 ++- src/mame/video/volfied.cpp | 7 +- 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 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(PC090OJ_RAM_SIZE / 2); - m_ram_buffered = make_unique_clear(PC090OJ_RAM_SIZE / 2); + decode_gfx(gfxinfo); + gfx(0)->set_colors(palette().entries() / 16); + + m_ram = make_unique_clear(PC090OJ_RAM_SIZE / 2); + m_ram_buffered = make_unique_clear(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 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 void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward(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 void set_colpri_callback(T &&... args) { m_colpri_cb = pc090oj_colpri_cb_delegate(std::forward(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 m_ram; - std::unique_ptr 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 m_ram; + std::unique_ptr m_ram_buffered; - required_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; } -- cgit v1.2.3