From 81b4a049a2c4ce61667856c9dae75bdb4065ba2f Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 27 Jul 2022 17:20:02 +0200 Subject: - pktgaldx.cpp: subclasses and other small cleanups - vaportra.cpp: consolidated driver in one file, minor cleanups - few drivers and devices: removed some custom GFX decodes in favor of the ones provided in emu/video/generic.cpp --- src/mame/cinematronics/leland_v.cpp | 13 +- src/mame/dataeast/pktgaldx.cpp | 350 +++++++++++++----- src/mame/dataeast/pktgaldx.h | 81 ----- src/mame/dataeast/pktgaldx_v.cpp | 82 ----- src/mame/dataeast/vaportra.cpp | 697 ++++++++++++------------------------ src/mame/dataeast/vaportra.h | 77 ---- src/mame/dataeast/vaportra_v.cpp | 103 ------ src/mame/excellent/gcpinbal.cpp | 26 +- src/mame/fuuki/fuukifg2.cpp | 14 +- src/mame/jaleco/ms1_tmap.cpp | 13 +- src/mame/misc/quizpun2.cpp | 17 +- src/mame/snk/prehisle.cpp | 13 +- 12 files changed, 506 insertions(+), 980 deletions(-) delete mode 100644 src/mame/dataeast/pktgaldx.h delete mode 100644 src/mame/dataeast/pktgaldx_v.cpp delete mode 100644 src/mame/dataeast/vaportra.h delete mode 100644 src/mame/dataeast/vaportra_v.cpp diff --git a/src/mame/cinematronics/leland_v.cpp b/src/mame/cinematronics/leland_v.cpp index e6562c19324..9ba12b443b6 100644 --- a/src/mame/cinematronics/leland_v.cpp +++ b/src/mame/cinematronics/leland_v.cpp @@ -490,23 +490,12 @@ static const gfx_layout leland_layout = 8*8 }; -static const gfx_layout ataxx_layout = -{ - 8,8, - RGN_FRAC(1,6), - 6, - { RGN_FRAC(5,6), RGN_FRAC(4,6), RGN_FRAC(3,6), RGN_FRAC(2,6), RGN_FRAC(1,6), RGN_FRAC(0,6) }, - { STEP8(0,1) }, - { STEP8(0,8) }, - 8*8 -}; - static GFXDECODE_START( gfx_leland ) GFXDECODE_ENTRY( "bg_gfx", 0, leland_layout, 0, 8*16) // *16 is foreground GFXDECODE_END static GFXDECODE_START( gfx_ataxx ) - GFXDECODE_ENTRY( "bg_gfx", 0, ataxx_layout, 0, 16) // 16 is foreground + GFXDECODE_ENTRY( "bg_gfx", 0, gfx_8x8x6_planar, 0, 16) // 16 is foreground GFXDECODE_END void leland_state::leland_video(machine_config &config) diff --git a/src/mame/dataeast/pktgaldx.cpp b/src/mame/dataeast/pktgaldx.cpp index 751084ffc9d..7340114c07a 100644 --- a/src/mame/dataeast/pktgaldx.cpp +++ b/src/mame/dataeast/pktgaldx.cpp @@ -46,10 +46,10 @@ NOTE: Hold down both Player1 & Player2 Start buttons during boot up to see versi */ /* -original todo: +original TODO: verify sound. -bootleg todo: +bootleg TODO: Fix GFX glitches in background of girls after each level. Tidy up code. @@ -57,61 +57,230 @@ bootleg todo: */ #include "emu.h" -#include "pktgaldx.h" -#include "cpu/m68000/m68000.h" -#include "decocrpt.h" +#include "deco16ic.h" #include "deco102.h" +#include "deco104.h" +#include "decocrpt.h" +#include "decospr.h" + +#include "cpu/m68000/m68000.h" #include "sound/okim6295.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +namespace { + +class base_state : public driver_device +{ +public: + base_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_oki2(*this, "oki2"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette") + { } + +protected: + // devices + required_device m_maincpu; + required_device m_oki2; + required_device m_gfxdecode; + required_device m_palette; + + void oki_bank_w(uint16_t data); + + DECLARE_WRITE_LINE_MEMBER(vblank_w); + void vblank_ack_w(uint16_t data); +}; + +class pktgaldx_state : public base_state +{ +public: + pktgaldx_state(const machine_config &mconfig, device_type type, const char *tag) : + base_state(mconfig, type, tag), + m_pf1_rowscroll(*this, "pf1_rowscroll"), + m_pf2_rowscroll(*this, "pf2_rowscroll"), + m_spriteram(*this, "spriteram"), + m_decrypted_opcodes(*this, "decrypted_opcodes"), + m_deco104(*this, "ioprot104"), + m_sprgen(*this, "spritegen"), + m_deco_tilegen(*this, "tilegen") + { } + + void pktgaldx(machine_config &config); + + virtual void driver_init() override; + +private: + // memory pointers + required_shared_ptr m_pf1_rowscroll; + required_shared_ptr m_pf2_rowscroll; + required_shared_ptr m_spriteram; + required_shared_ptr m_decrypted_opcodes; + + // devices + required_device m_deco104; + required_device m_sprgen; + required_device m_deco_tilegen; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + DECO16IC_BANK_CB_MEMBER(bank_callback); + + uint16_t protection_region_f_104_r(offs_t offset); + void protection_region_f_104_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + + void decrypted_opcodes_map(address_map &map); + void prg_map(address_map &map); +}; + +class pktgaldxb_state : public base_state +{ +public: + pktgaldxb_state(const machine_config &mconfig, device_type type, const char *tag) : + base_state(mconfig, type, tag), + m_fgram(*this, "fgram"), + m_sprites(*this, "sprites") + { } + + void pktgaldxb(machine_config &config); + +private: + // memory pointers + required_shared_ptr m_fgram; + required_shared_ptr m_sprites; + + uint16_t unknown_r(); + uint16_t protection_r(); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void prg_map(address_map &map); +}; + +// video + + +uint32_t pktgaldx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + uint16_t flip = m_deco_tilegen->pf_control_r(0); + + // sprites are flipped relative to tilemaps + flip_screen_set(BIT(flip, 7)); + m_sprgen->set_flip_screen(!BIT(flip, 7)); + m_deco_tilegen->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); + + bitmap.fill(0, cliprect); // not confirmed + screen.priority().fill(0); + + m_deco_tilegen->tilemap_2_draw(screen, bitmap, cliprect, 0, 0); + m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x400); + m_deco_tilegen->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + +uint32_t pktgaldxb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(m_palette->black_pen(), cliprect); + + // the bootleg seems to treat the tilemaps as sprites + for (int offset = 0; offset < 0x1600 / 2; offset += 8) + { + int const tileno = m_sprites[offset + 3] | (m_sprites[offset + 2] << 16); + int const colour = m_sprites[offset + 1] >> 1; + int x = m_sprites[offset + 0]; + int y = m_sprites[offset + 4]; + + x -= 0xc2; + y &= 0x1ff; + y -= 8; + + m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x1000, colour, 0, 0, x, y, 0); + } + + for (int offset = 0x1600/2; offset < 0x2000 / 2; offset += 8) + { + int const tileno = m_sprites[offset + 3] | (m_sprites[offset + 2] << 16); + int const colour = m_sprites[offset + 1] >> 1; + int x = m_sprites[offset + 0] & 0x1ff; + int y = m_sprites[offset + 4] & 0x0ff; + + x -= 0xc2; + y &= 0x1ff; + y -= 8; + + m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x4000, colour, 0, 0, x, y, 0); + } + + for (int offset = 0x2000/2; offset < 0x4000 / 2; offset += 8) + { + int const tileno = m_sprites[offset + 3] | (m_sprites[offset + 2] << 16); + int const colour = m_sprites[offset + 1] >> 1; + int x = m_sprites[offset + 0] & 0x1ff; + int y = m_sprites[offset + 4] & 0x0ff; + + x -= 0xc2; + y &= 0x1ff; + y -= 8; + + m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x3000, colour, 0, 0, x, y, 0); + } + + return 0; +} + + +// machine + /**********************************************************************************/ -void pktgaldx_state::pktgaldx_oki_bank_w(uint16_t data) +void base_state::oki_bank_w(uint16_t data) { m_oki2->set_rom_bank(data & 3); } /**********************************************************************************/ -uint16_t pktgaldx_state::pktgaldx_protection_region_f_104_r(offs_t offset) +uint16_t pktgaldx_state::protection_region_f_104_r(offs_t offset) { - int real_address = 0 + (offset *2); + int real_address = 0 + (offset * 2); uint8_t cs = 0; - uint16_t data = m_deco104->read_data( real_address&0x7fff, cs ); + uint16_t data = m_deco104->read_data(real_address & 0x7fff, cs); return data; } -void pktgaldx_state::pktgaldx_protection_region_f_104_w(offs_t offset, uint16_t data, uint16_t mem_mask) +void pktgaldx_state::protection_region_f_104_w(offs_t offset, uint16_t data, uint16_t mem_mask) { - int real_address = 0 + (offset *2); + int real_address = 0 + (offset * 2); uint8_t cs = 0; - m_deco104->write_data( real_address&0x7fff, data, mem_mask, cs ); + m_deco104->write_data(real_address & 0x7fff, data, mem_mask, cs); } -WRITE_LINE_MEMBER( pktgaldx_state::vblank_w ) +WRITE_LINE_MEMBER(base_state::vblank_w) { if (state) m_maincpu->set_input_line(6, ASSERT_LINE); } -void pktgaldx_state::vblank_ack_w(uint16_t data) +void base_state::vblank_ack_w(uint16_t data) { m_maincpu->set_input_line(6, CLEAR_LINE); } -void pktgaldx_state::pktgaldx_map(address_map &map) +void pktgaldx_state::prg_map(address_map &map) { map(0x000000, 0x07ffff).rom(); map(0x100000, 0x100fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); map(0x102000, 0x102fff).rw(m_deco_tilegen, FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); - map(0x110000, 0x1107ff).ram().share("pf1_rowscroll"); - map(0x112000, 0x1127ff).ram().share("pf2_rowscroll"); + map(0x110000, 0x1107ff).ram().share(m_pf1_rowscroll); + map(0x112000, 0x1127ff).ram().share(m_pf2_rowscroll); - map(0x120000, 0x1207ff).ram().share("spriteram"); + map(0x120000, 0x1207ff).ram().share(m_spriteram); map(0x130000, 0x130fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x140000, 0x14000f).w("oki1", FUNC(okim6295_device::write)).umask16(0x00ff); @@ -120,29 +289,29 @@ void pktgaldx_state::pktgaldx_map(address_map &map) map(0x150007, 0x150007).r(m_oki2, FUNC(okim6295_device::read)); map(0x161800, 0x16180f).w(m_deco_tilegen, FUNC(deco16ic_device::pf_control_w)); - map(0x164800, 0x164801).w(FUNC(pktgaldx_state::pktgaldx_oki_bank_w)); + map(0x164800, 0x164801).w(FUNC(pktgaldx_state::oki_bank_w)); map(0x166800, 0x166801).w(FUNC(pktgaldx_state::vblank_ack_w)); - map(0x167800, 0x167fff).rw(FUNC(pktgaldx_state::pktgaldx_protection_region_f_104_r), FUNC(pktgaldx_state::pktgaldx_protection_region_f_104_w)).share("prot16ram"); /* Protection device */ + map(0x167800, 0x167fff).rw(FUNC(pktgaldx_state::protection_region_f_104_r), FUNC(pktgaldx_state::protection_region_f_104_w)).share("prot16ram"); map(0x170000, 0x17ffff).ram(); } void pktgaldx_state::decrypted_opcodes_map(address_map &map) { - map(0x000000, 0x07ffff).rom().share("decrypted_opcodes"); + map(0x000000, 0x07ffff).rom().share(m_decrypted_opcodes); } -/* Pocket Gal Deluxe (bootleg!) */ +// Pocket Gal Deluxe (bootleg!) -uint16_t pktgaldx_state::pckgaldx_unknown_r() +uint16_t pktgaldxb_state::unknown_r() { return 0xffff; } -uint16_t pktgaldx_state::pckgaldx_protection_r() +uint16_t pktgaldxb_state::protection_r() { - logerror("pckgaldx_protection_r address %06x\n",m_maincpu->pc()); + logerror("protection_r address %06x\n", m_maincpu->pc()); return -1; } @@ -156,15 +325,15 @@ cpu #0 (PC=00009B12): unmapped program memory word read from 00167842 & FF00 cpu #0 (PC=0000923C): unmapped program memory word read from 00167DB2 & 00FF */ -/* do the 300000 addresses somehow interact with the protection addresses on this bootleg? */ -/* or maybe protection writes go to sound ... */ +// do the 300000 addresses somehow interact with the protection addresses on this bootleg? +// or maybe protection writes go to sound ... -void pktgaldx_state::pktgaldb_map(address_map &map) +void pktgaldxb_state::prg_map(address_map &map) { map(0x000000, 0x0fffff).rom(); - map(0x100000, 0x100fff).ram().share("pktgaldb_fgram"); // fgram on original? + map(0x100000, 0x100fff).ram().share(m_fgram); // fgram on original? map(0x102000, 0x102fff).ram(); // bgram on original? - map(0x120000, 0x123fff).ram().share("pktgaldb_spr"); + map(0x120000, 0x123fff).ram().share(m_sprites); map(0x130000, 0x130fff).ram(); // palette on original? @@ -174,17 +343,17 @@ void pktgaldx_state::pktgaldb_map(address_map &map) map(0x150007, 0x150007).r(m_oki2, FUNC(okim6295_device::read)); // map(0x160000, 0x167fff).ram(); - map(0x164800, 0x164801).w(FUNC(pktgaldx_state::pktgaldx_oki_bank_w)); - map(0x16500a, 0x16500b).r(FUNC(pktgaldx_state::pckgaldx_unknown_r)); - map(0x166800, 0x166801).w(FUNC(pktgaldx_state::vblank_ack_w)); + map(0x164800, 0x164801).w(FUNC(pktgaldxb_state::oki_bank_w)); + map(0x16500a, 0x16500b).r(FUNC(pktgaldxb_state::unknown_r)); + map(0x166800, 0x166801).w(FUNC(pktgaldxb_state::vblank_ack_w)); /* should we really be using these to read the i/o in the BOOTLEG? these look like i/o through protection ... */ map(0x167842, 0x167843).portr("INPUTS"); map(0x167c4c, 0x167c4d).portr("DSW"); map(0x167db2, 0x167db3).portr("SYSTEM"); - map(0x167d10, 0x167d11).r(FUNC(pktgaldx_state::pckgaldx_protection_r)); // check code at 6ea - map(0x167d1a, 0x167d1b).r(FUNC(pktgaldx_state::pckgaldx_protection_r)); // check code at 7C4 + map(0x167d10, 0x167d11).r(FUNC(pktgaldxb_state::protection_r)); // check code at 6ea + map(0x167d1a, 0x167d1b).r(FUNC(pktgaldxb_state::protection_r)); // check code at 7c4 map(0x170000, 0x17ffff).ram(); @@ -256,7 +425,7 @@ static INPUT_PORTS_START( pktgaldx ) PORT_DIPSETTING( 0x0100, "3" ) PORT_DIPSETTING( 0x0300, "4" ) PORT_DIPSETTING( 0x0200, "5" ) - PORT_DIPNAME( 0x0c00, 0x0c00, "Time" ) PORT_DIPLOCATION("SW2:3,4") /* Listed as "Difficulty" */ + PORT_DIPNAME( 0x0c00, 0x0c00, "Time" ) PORT_DIPLOCATION("SW2:3,4") // Listed as "Difficulty" PORT_DIPSETTING( 0x0000, "60" ) PORT_DIPSETTING( 0x0400, "80" ) PORT_DIPSETTING( 0x0c00, "100" ) @@ -306,9 +475,9 @@ static const gfx_layout spritelayout = }; static GFXDECODE_START( gfx_pktgaldx ) - GFXDECODE_ENTRY( "gfx1", 0, tile_8x8_layout, 0, 32 ) /* Tiles (8x8) */ - GFXDECODE_ENTRY( "gfx1", 0, tile_16x16_layout, 0, 32 ) /* Tiles (16x16) */ - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 512, 32 ) /* Sprites (16x16) */ + GFXDECODE_ENTRY( "tiles", 0, tile_8x8_layout, 0, 32 ) // 8x8 + GFXDECODE_ENTRY( "tiles", 0, tile_16x16_layout, 0, 32 ) // 16x16 + GFXDECODE_ENTRY( "sprites", 0, spritelayout, 512, 32 ) // 16x16 GFXDECODE_END static const gfx_layout bootleg_spritelayout = @@ -324,7 +493,7 @@ static const gfx_layout bootleg_spritelayout = }; static GFXDECODE_START( gfx_bootleg ) - GFXDECODE_ENTRY( "gfx1", 0, bootleg_spritelayout, 0, 64 ) + GFXDECODE_ENTRY( "tiles", 0, bootleg_spritelayout, 0, 64 ) GFXDECODE_END @@ -334,24 +503,20 @@ DECO16IC_BANK_CB_MEMBER(pktgaldx_state::bank_callback) } -void pktgaldx_state::machine_start() -{ -} - void pktgaldx_state::pktgaldx(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware M68000(config, m_maincpu, 28_MHz_XTAL / 2); // The clock input is 14.000MHz on pin 6 - m_maincpu->set_addrmap(AS_PROGRAM, &pktgaldx_state::pktgaldx_map); + m_maincpu->set_addrmap(AS_PROGRAM, &pktgaldx_state::prg_map); m_maincpu->set_addrmap(AS_OPCODES, &pktgaldx_state::decrypted_opcodes_map); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(58); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate 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(pktgaldx_state::screen_update_pktgaldx)); + screen.set_screen_update(FUNC(pktgaldx_state::screen_update)); screen.screen_vblank().set(FUNC(pktgaldx_state::vblank_w)); screen.set_palette(m_palette); @@ -370,11 +535,11 @@ void pktgaldx_state::pktgaldx(machine_config &config) m_deco_tilegen->set_bank2_callback(FUNC(pktgaldx_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); - m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); + m_deco_tilegen->set_gfxdecode_tag(m_gfxdecode); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); - m_sprgen->set_gfxdecode_tag("gfxdecode"); + m_sprgen->set_gfxdecode_tag(m_gfxdecode); DECO104PROT(config, m_deco104, 0); m_deco104->port_a_cb().set_ioport("INPUTS"); @@ -382,7 +547,7 @@ void pktgaldx_state::pktgaldx(machine_config &config) m_deco104->port_c_cb().set_ioport("DSW"); m_deco104->set_interface_scramble(8,9, 4,5,6,7, 1,0,3,2); // hopefully this is correct, nothing else uses this arrangement! - /* sound hardware */ + // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -396,100 +561,100 @@ void pktgaldx_state::pktgaldx(machine_config &config) } -void pktgaldx_state::pktgaldb(machine_config &config) +void pktgaldxb_state::pktgaldxb(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware M68000(config, m_maincpu, 16000000); - m_maincpu->set_addrmap(AS_PROGRAM, &pktgaldx_state::pktgaldb_map); + m_maincpu->set_addrmap(AS_PROGRAM, &pktgaldxb_state::prg_map); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(58); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate 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(pktgaldx_state::screen_update_pktgaldb)); - screen.screen_vblank().set(FUNC(pktgaldx_state::vblank_w)); + screen.set_screen_update(FUNC(pktgaldxb_state::screen_update)); + screen.screen_vblank().set(FUNC(pktgaldxb_state::vblank_w)); screen.set_palette(m_palette); PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 4096); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bootleg); - /* sound hardware */ + // sound hardware SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - okim6295_device &oki1(OKIM6295(config, "oki1", 32220000/32, okim6295_device::PIN7_HIGH)); + okim6295_device &oki1(OKIM6295(config, "oki1", 32220000 / 32, okim6295_device::PIN7_HIGH)); oki1.add_route(ALL_OUTPUTS, "lspeaker", 0.75); oki1.add_route(ALL_OUTPUTS, "rspeaker", 0.75); - OKIM6295(config, m_oki2, 32220000/16, okim6295_device::PIN7_HIGH); + OKIM6295(config, m_oki2, 32220000 / 16, okim6295_device::PIN7_HIGH); m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.60); m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.60); } ROM_START( pktgaldx ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* DE102 code (encrypted) */ - ROM_LOAD16_WORD_SWAP( "ke00-2.12a", 0x00000, 0x80000, CRC(b04baf3a) SHA1(680d1b4ab4b6edef36cd96a60539fb7c2dac9637) ) /* Version 3.00 Euro */ + ROM_REGION( 0x80000, "maincpu", 0 ) // DE102 code (encrypted) + ROM_LOAD16_WORD_SWAP( "ke00-2.12a", 0x00000, 0x80000, CRC(b04baf3a) SHA1(680d1b4ab4b6edef36cd96a60539fb7c2dac9637) ) // Version 3.00 Euro - ROM_REGION( 0x100000, "gfx1", 0 ) + ROM_REGION( 0x100000, "tiles", 0 ) ROM_LOAD( "maz-02.2h", 0x00000, 0x100000, CRC(c9d35a59) SHA1(07b44c7d7d76b668b4d6ca5672bd1c2910228e68) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD16_BYTE( "maz-00.1b", 0x000000, 0x080000, CRC(fa3071f4) SHA1(72e7d920e9ca94f8cb166007a9e9e5426a201af8) ) ROM_LOAD16_BYTE( "maz-01.3b", 0x000001, 0x080000, CRC(4934fe21) SHA1(b852249f59906d69d32160ebaf9b4781193227e4) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "ke01.14f", 0x00000, 0x20000, CRC(8a106263) SHA1(229ab17403c2b8f4e89a90a8cda2f3c3a4b55d9e) ) - ROM_REGION( 0x100000, "oki2", 0 ) /* Oki samples (banked?) */ + ROM_REGION( 0x100000, "oki2", 0 ) // banked ROM_LOAD( "maz-03.13f", 0x00000, 0x100000, CRC(a313c964) SHA1(4a3664c4e2c44a017a0ab6a6d4361799cbda57b5) ) ROM_END ROM_START( pktgaldxj ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* DE102 code (encrypted) */ - ROM_LOAD16_WORD_SWAP( "kg00-2.12a", 0x00000, 0x80000, CRC(62dc4137) SHA1(23887dc3f6e7c4cdcb1bf4f4c87fe3cbe8cdbe69) ) /* Version 3.00 Japan */ + ROM_REGION( 0x80000, "maincpu", 0 ) // DE102 code (encrypted) + ROM_LOAD16_WORD_SWAP( "kg00-2.12a", 0x00000, 0x80000, CRC(62dc4137) SHA1(23887dc3f6e7c4cdcb1bf4f4c87fe3cbe8cdbe69) ) // Version 3.00 Japan - ROM_REGION( 0x100000, "gfx1", 0 ) + ROM_REGION( 0x100000, "tiles", 0 ) ROM_LOAD( "maz-02.2h", 0x00000, 0x100000, CRC(c9d35a59) SHA1(07b44c7d7d76b668b4d6ca5672bd1c2910228e68) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD16_BYTE( "maz-00.1b", 0x000000, 0x080000, CRC(fa3071f4) SHA1(72e7d920e9ca94f8cb166007a9e9e5426a201af8) ) ROM_LOAD16_BYTE( "maz-01.3b", 0x000001, 0x080000, CRC(4934fe21) SHA1(b852249f59906d69d32160ebaf9b4781193227e4) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "ke01.14f", 0x00000, 0x20000, CRC(8a106263) SHA1(229ab17403c2b8f4e89a90a8cda2f3c3a4b55d9e) ) - ROM_REGION( 0x100000, "oki2", 0 ) /* Oki samples (banked?) */ + ROM_REGION( 0x100000, "oki2", 0 ) // banked ROM_LOAD( "maz-03.13f", 0x00000, 0x100000, CRC(a313c964) SHA1(4a3664c4e2c44a017a0ab6a6d4361799cbda57b5) ) ROM_END ROM_START( pktgaldxa ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* DE102 code (encrypted) */ - ROM_LOAD16_WORD_SWAP( "rom.12a", 0x00000, 0x80000, CRC(c4c7cc68) SHA1(d3841459096a37ffd96fbf9017d3176893034c01) ) /* Version 3.00 Asia - Need to verify label */ + ROM_REGION( 0x80000, "maincpu", 0 ) // DE102 code (encrypted) + ROM_LOAD16_WORD_SWAP( "rom.12a", 0x00000, 0x80000, CRC(c4c7cc68) SHA1(d3841459096a37ffd96fbf9017d3176893034c01) ) // Version 3.00 Asia - Need to verify label - ROM_REGION( 0x100000, "gfx1", 0 ) + ROM_REGION( 0x100000, "tiles", 0 ) ROM_LOAD( "maz-02.2h", 0x00000, 0x100000, CRC(c9d35a59) SHA1(07b44c7d7d76b668b4d6ca5672bd1c2910228e68) ) - ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD16_BYTE( "maz-00.1b", 0x000000, 0x080000, CRC(fa3071f4) SHA1(72e7d920e9ca94f8cb166007a9e9e5426a201af8) ) ROM_LOAD16_BYTE( "maz-01.3b", 0x000001, 0x080000, CRC(4934fe21) SHA1(b852249f59906d69d32160ebaf9b4781193227e4) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "ke01.14f", 0x00000, 0x20000, CRC(8a106263) SHA1(229ab17403c2b8f4e89a90a8cda2f3c3a4b55d9e) ) - ROM_REGION( 0x100000, "oki2", 0 ) /* Oki samples (banked?) */ + ROM_REGION( 0x100000, "oki2", 0 ) // banked ROM_LOAD( "maz-03.13f", 0x00000, 0x100000, CRC(a313c964) SHA1(4a3664c4e2c44a017a0ab6a6d4361799cbda57b5) ) ROM_END ROM_START( pktgaldxb ) - ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE ("4.bin", 0x00000, 0x80000, CRC(67ce30aa) SHA1(c5228ed19eebbfb6d5f7cbfcb99734d9fcd5aba3) ) ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x80000, CRC(64cb4c33) SHA1(02f988f558113dd9a77079dee59e23583394fa98) ) - ROM_REGION( 0x400000, "gfx1", 0 ) + ROM_REGION( 0x400000, "tiles", 0 ) ROM_LOAD16_BYTE( "11.bin", 0x000000, 0x80000, CRC(a8c8f1fd) SHA1(9fd5fa500967a1bd692abdbeef89ce195c8aecd4) ) ROM_LOAD16_BYTE( "6.bin", 0x000001, 0x80000, CRC(0e3335a1) SHA1(2d6899336302d222e8404dde159e64911a8f94e6) ) ROM_LOAD16_BYTE( "10.bin", 0x100000, 0x80000, CRC(9dd743a9) SHA1(dbc3e2bd044dbf21b04c174bd860969ee53b4050) ) @@ -497,23 +662,28 @@ ROM_START( pktgaldxb ) ROM_LOAD16_BYTE( "9.bin", 0x200001, 0x80000, CRC(078f371c) SHA1(5b510a0f7f50c55cce1ffcc8f2e9c3432b23e352) ) ROM_LOAD16_BYTE( "8.bin", 0x200000, 0x80000, CRC(40f5a032) SHA1(c2ad585ddbc3ef40c6214cb30b4d78a2cd0a9446) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(8a106263) SHA1(229ab17403c2b8f4e89a90a8cda2f3c3a4b55d9e) ) - ROM_REGION( 0x100000, "oki2", 0 ) /* Oki samples (banked?) */ + ROM_REGION( 0x100000, "oki2", 0 ) // banked ROM_LOAD( "3.bin", 0x00000, 0x80000, CRC(4638747b) SHA1(56d79cd8d4d7b41b71f1e942b5a5bf1bafc5c6e7) ) ROM_LOAD( "2.bin", 0x80000, 0x80000, CRC(f841d995) SHA1(0ef2f8fd9be62b979862c3688e7aad34c7b0404d) ) ROM_END -void pktgaldx_state::init_pktgaldx() +void pktgaldx_state::driver_init() { - deco56_decrypt_gfx(machine(), "gfx1"); + base_state::driver_init(); + + deco56_decrypt_gfx(machine(), "tiles"); deco102_decrypt_cpu((uint16_t *)memregion("maincpu")->base(), m_decrypted_opcodes, 0x80000, 0x42ba, 0x00, 0x00); } -GAME( 1992, pktgaldx, 0, pktgaldx, pktgaldx, pktgaldx_state, init_pktgaldx, ROT0, "Data East Corporation", "Pocket Gal Deluxe (Euro v3.00)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, pktgaldxj, pktgaldx, pktgaldx, pktgaldx, pktgaldx_state, init_pktgaldx, ROT0, "Data East Corporation (Nihon System license)", "Pocket Gal Deluxe (Japan v3.00)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, pktgaldxa, pktgaldx, pktgaldx, pktgaldx, pktgaldx_state, init_pktgaldx, ROT0, "Data East Corporation", "Pocket Gal Deluxe (Asia v3.00)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, pktgaldxb, pktgaldx, pktgaldb, pktgaldx, pktgaldx_state, empty_init, ROT0, "bootleg", "Pocket Gal Deluxe (Euro v3.00, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +} // anonymous namespace + + +GAME( 1992, pktgaldx, 0, pktgaldx, pktgaldx, pktgaldx_state, driver_init, ROT0, "Data East Corporation", "Pocket Gal Deluxe (Euro v3.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, pktgaldxj, pktgaldx, pktgaldx, pktgaldx, pktgaldx_state, driver_init, ROT0, "Data East Corporation (Nihon System license)", "Pocket Gal Deluxe (Japan v3.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, pktgaldxa, pktgaldx, pktgaldx, pktgaldx, pktgaldx_state, driver_init, ROT0, "Data East Corporation", "Pocket Gal Deluxe (Asia v3.00)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, pktgaldxb, pktgaldx, pktgaldxb, pktgaldx, pktgaldxb_state, empty_init, ROT0, "bootleg", "Pocket Gal Deluxe (Euro v3.00, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/dataeast/pktgaldx.h b/src/mame/dataeast/pktgaldx.h deleted file mode 100644 index 263ef852b46..00000000000 --- a/src/mame/dataeast/pktgaldx.h +++ /dev/null @@ -1,81 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood, Bryan McPhail -/************************************************************************* - - Pocket Gal Deluxe - -*************************************************************************/ -#ifndef MAME_INCLUDES_PKTGALDX_H -#define MAME_INCLUDES_PKTGALDX_H - -#pragma once - -#include "sound/okim6295.h" -#include "decospr.h" -#include "deco16ic.h" -#include "deco104.h" -#include "emupal.h" - -class pktgaldx_state : public driver_device -{ -public: - pktgaldx_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_deco104(*this, "ioprot104"), - m_pf1_rowscroll(*this, "pf1_rowscroll"), - m_pf2_rowscroll(*this, "pf2_rowscroll"), - m_spriteram(*this, "spriteram"), - m_pktgaldb_fgram(*this, "pktgaldb_fgram"), - m_pktgaldb_sprites(*this, "pktgaldb_spr"), - m_sprgen(*this, "spritegen"), - m_maincpu(*this, "maincpu"), - m_oki2(*this, "oki2"), - m_deco_tilegen(*this, "tilegen"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_decrypted_opcodes(*this, "decrypted_opcodes") - { } - - void pktgaldx(machine_config &config); - void pktgaldb(machine_config &config); - - void init_pktgaldx(); - -private: - optional_device m_deco104; - - /* memory pointers */ - optional_shared_ptr m_pf1_rowscroll; - optional_shared_ptr m_pf2_rowscroll; - optional_shared_ptr m_spriteram; - optional_shared_ptr m_pktgaldb_fgram; - optional_shared_ptr m_pktgaldb_sprites; - optional_device m_sprgen; - - /* devices */ - required_device m_maincpu; - required_device m_oki2; - optional_device m_deco_tilegen; - required_device m_gfxdecode; - required_device m_palette; - optional_shared_ptr m_decrypted_opcodes; - - uint16_t pckgaldx_unknown_r(); - uint16_t pckgaldx_protection_r(); - void pktgaldx_oki_bank_w(uint16_t data); - virtual void machine_start() override; - uint32_t screen_update_pktgaldx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_pktgaldb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - uint16_t pktgaldx_protection_region_f_104_r(offs_t offset); - void pktgaldx_protection_region_f_104_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - DECLARE_WRITE_LINE_MEMBER( vblank_w ); - void vblank_ack_w(uint16_t data); - - DECO16IC_BANK_CB_MEMBER(bank_callback); - void decrypted_opcodes_map(address_map &map); - void pktgaldb_map(address_map &map); - void pktgaldx_map(address_map &map); -}; - -#endif // MAME_INCLUDES_PKTGALDX_H diff --git a/src/mame/dataeast/pktgaldx_v.cpp b/src/mame/dataeast/pktgaldx_v.cpp deleted file mode 100644 index e1c60315bc4..00000000000 --- a/src/mame/dataeast/pktgaldx_v.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:David Haywood, Bryan McPhail -#include "emu.h" -#include "pktgaldx.h" -#include "screen.h" - -/* Video on the orginal */ - -uint32_t pktgaldx_state::screen_update_pktgaldx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - uint16_t flip = m_deco_tilegen->pf_control_r(0); - - // sprites are flipped relative to tilemaps - flip_screen_set(BIT(flip, 7)); - m_sprgen->set_flip_screen(!BIT(flip, 7)); - m_deco_tilegen->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); - - bitmap.fill(0, cliprect); /* not Confirmed */ - screen.priority().fill(0); - - m_deco_tilegen->tilemap_2_draw(screen, bitmap, cliprect, 0, 0); - m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x400); - m_deco_tilegen->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); - return 0; -} - -/* Video for the bootleg */ - -uint32_t pktgaldx_state::screen_update_pktgaldb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - int x, y; - int offset = 0; - int tileno; - int colour; - - bitmap.fill(m_palette->black_pen(), cliprect); - - /* the bootleg seems to treat the tilemaps as sprites */ - for (offset = 0; offset < 0x1600 / 2; offset += 8) - { - tileno = m_pktgaldb_sprites[offset + 3] | (m_pktgaldb_sprites[offset + 2] << 16); - colour = m_pktgaldb_sprites[offset + 1] >> 1; - x = m_pktgaldb_sprites[offset + 0]; - y = m_pktgaldb_sprites[offset + 4]; - - x -= 0xc2; - y &= 0x1ff; - y -= 8; - - m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x1000, colour, 0, 0, x, y, 0); - } - - for (offset = 0x1600/2; offset < 0x2000 / 2; offset += 8) - { - tileno = m_pktgaldb_sprites[offset + 3] | (m_pktgaldb_sprites[offset + 2] << 16); - colour = m_pktgaldb_sprites[offset + 1] >> 1; - x = m_pktgaldb_sprites[offset + 0] & 0x1ff; - y = m_pktgaldb_sprites[offset + 4] & 0x0ff; - - x -= 0xc2; - y &= 0x1ff; - y -= 8; - - m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x4000, colour, 0, 0, x, y, 0); - } - - for (offset = 0x2000/2; offset < 0x4000 / 2; offset += 8) - { - tileno = m_pktgaldb_sprites[offset + 3] | (m_pktgaldb_sprites[offset + 2] << 16); - colour = m_pktgaldb_sprites[offset + 1] >> 1; - x = m_pktgaldb_sprites[offset + 0] & 0x1ff; - y = m_pktgaldb_sprites[offset + 4] & 0x0ff; - - x -= 0xc2; - y &= 0x1ff; - y -= 8; - - m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, tileno ^ 0x3000, colour, 0, 0, x, y, 0); - } - - return 0; -} diff --git a/src/mame/dataeast/vaportra.cpp b/src/mame/dataeast/vaportra.cpp index 1093a4cdc3c..dc3f5c338b5 100644 --- a/src/mame/dataeast/vaportra.cpp +++ b/src/mame/dataeast/vaportra.cpp @@ -9,24 +9,190 @@ Notes: ----- - - If you activate the service mode dip switch during the gameplay, it acts like invicibility - either for player 1 and player 2. It works for all sets. + - If you activate the service mode dip switch during the gameplay, it acts + like invincibility either for player 1 and player 2. It works for all sets. Emulation by Bryan McPhail, mish@tendril.co.uk added pal & prom-maps - Highwayman. ***************************************************************************/ #include "emu.h" -#include "vaportra.h" +#include "decmxc06.h" +#include "deco16ic.h" + +#include "cpu/h6280/h6280.h" #include "cpu/m68000/m68000.h" +#include "machine/gen_latch.h" #include "sound/okim6295.h" #include "sound/ymopm.h" #include "sound/ymopn.h" +#include "video/bufsprite.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +class vaportra_state : public driver_device +{ +public: + vaportra_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_audiocpu(*this, "audiocpu") + , m_deco_tilegen(*this, "tilegen%u", 1U) + , m_spritegen(*this, "spritegen") + , m_spriteram(*this, "spriteram") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "colors") + , m_soundlatch(*this, "soundlatch") + , m_paletteram(*this, "palette") + , m_paletteram_ext(*this, "palette_ext") + { } + + void vaportra(machine_config &config); + + virtual void driver_init() override; + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + // devices + required_device m_maincpu; + required_device m_audiocpu; + required_device_array m_deco_tilegen; + required_device m_spritegen; + required_device m_spriteram; + required_device m_gfxdecode; + required_device m_palette; + required_device m_soundlatch; + + required_shared_ptr m_paletteram; + required_shared_ptr m_paletteram_ext; + + // misc + uint16_t m_priority[2]{}; + + uint8_t irq6_ack_r(); + void irq6_ack_w(uint8_t data); + void priority_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void palette_ext_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + + void colpri_cb(u32 &colour, u32 &pri_mask); + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void update_palette( int offset ); + + DECO16IC_BANK_CB_MEMBER(bank_callback); + + void main_map(address_map &map); + void sound_map(address_map &map); +}; + + +// video + +/**************************************************************************** + + 2 Data East 55 chips for playfields (same as Dark Seal, etc) + 1 Data East MXC-06 chip for sprites (same as Bad Dudes, etc) + +***************************************************************************/ + +/******************************************************************************/ + +void vaportra_state::priority_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_priority[offset]); +} + +/******************************************************************************/ + +void vaportra_state::update_palette( int offset ) +{ + uint8_t r, g, b; + + // TODO : Values aren't written in game when higher than 0xf0, + // It's related to hardware colour resistors? + r = (m_paletteram[offset] >> 0) & 0xff; + g = (m_paletteram[offset] >> 8) & 0xff; + b = (m_paletteram_ext[offset] >> 0) & 0xff; + + m_palette->set_pen_color(offset, rgb_t(r,g,b)); +} + +void vaportra_state::palette_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_paletteram[offset]); + update_palette(offset); +} + +void vaportra_state::palette_ext_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_paletteram_ext[offset]); + update_palette(offset); +} + +/******************************************************************************/ + +void vaportra_state::colpri_cb(u32 &colour, u32 &pri_mask) +{ + pri_mask = 0; // above back, mid, foreground + if (colour >= m_priority[1]) + { + pri_mask |= GFX_PMASK_4; // behind foreground + } +} + +uint32_t vaportra_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + uint16_t const flip = m_deco_tilegen[0]->pf_control_r(0); + int const pri = m_priority[0] & 0x03; + + screen.priority().fill(0, cliprect); + flip_screen_set(!BIT(flip, 7)); + m_deco_tilegen[0]->pf_update(nullptr, nullptr); + m_deco_tilegen[1]->pf_update(nullptr, nullptr); + + m_spritegen->set_flip_screen(!BIT(flip, 7)); + + // Draw playfields + if (pri == 0) + { + m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); + } + else if (pri == 1) + { + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); + } + else if (pri == 2) + { + m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 4); + } + else + { + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); + m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); + } + + m_spritegen->draw_sprites(screen, bitmap, cliprect, m_gfxdecode->gfx(4), m_spriteram->buffer(), 0x800 / 2); + m_deco_tilegen[0]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + +// machine + /******************************************************************************/ uint8_t vaportra_state::irq6_ack_r() @@ -57,8 +223,8 @@ void vaportra_state::main_map(address_map &map) map(0x280000, 0x281fff).rw(m_deco_tilegen[0], FUNC(deco16ic_device::pf1_data_r), FUNC(deco16ic_device::pf1_data_w)); map(0x282000, 0x283fff).rw(m_deco_tilegen[0], FUNC(deco16ic_device::pf2_data_r), FUNC(deco16ic_device::pf2_data_w)); map(0x2c0000, 0x2c000f).w(m_deco_tilegen[0], FUNC(deco16ic_device::pf_control_w)); - map(0x300000, 0x3009ff).ram().w(FUNC(vaportra_state::palette_w)).share("palette"); - map(0x304000, 0x3049ff).ram().w(FUNC(vaportra_state::palette_ext_w)).share("palette_ext"); + map(0x300000, 0x3009ff).ram().w(FUNC(vaportra_state::palette_w)).share(m_paletteram); + map(0x304000, 0x3049ff).ram().w(FUNC(vaportra_state::palette_ext_w)).share(m_paletteram_ext); map(0x308001, 0x308001).rw(FUNC(vaportra_state::irq6_ack_r), FUNC(vaportra_state::irq6_ack_w)); map(0x30c000, 0x30c001).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); map(0x318000, 0x3187ff).mirror(0xce0000).ram().share("spriteram"); @@ -182,11 +348,11 @@ static const gfx_layout tilelayout = }; static GFXDECODE_START( gfx_vaportra ) - GFXDECODE_ENTRY( "gfx1", 0x000000, charlayout, 0x000, 0x500 ) /* Characters 8x8 */ - GFXDECODE_ENTRY( "gfx1", 0x000000, tilelayout, 0x000, 0x500 ) /* Tiles 16x16 */ - GFXDECODE_ENTRY( "gfx2", 0x000000, charlayout, 0x000, 0x500 ) /* Characters 8x8 */ - GFXDECODE_ENTRY( "gfx2", 0x000000, tilelayout, 0x000, 0x500 ) /* Tiles 16x16 */ // ok - GFXDECODE_ENTRY( "gfx3", 0x000000, tilelayout, 0x100, 16 ) /* Sprites 16x16 */ + GFXDECODE_ENTRY( "tiles1", 0x000000, charlayout, 0x000, 0x500 ) // Characters 8x8 + GFXDECODE_ENTRY( "tiles1", 0x000000, tilelayout, 0x000, 0x500 ) // Tiles 16x16 + GFXDECODE_ENTRY( "tiles2", 0x000000, charlayout, 0x000, 0x500 ) // Characters 8x8 + GFXDECODE_ENTRY( "tiles2", 0x000000, tilelayout, 0x000, 0x500 ) // Tiles 16x16 // ok + GFXDECODE_ENTRY( "sprites", 0x000000, tilelayout, 0x100, 16 ) // 16x16 GFXDECODE_END /******************************************************************************/ @@ -209,17 +375,17 @@ void vaportra_state::machine_reset() void vaportra_state::vaportra(machine_config &config) { - /* basic machine hardware */ - M68000(config, m_maincpu, XTAL(24'000'000)/2); /* Custom chip 59 */ + // basic machine hardware + M68000(config, m_maincpu, XTAL(24'000'000) / 2); // Custom chip 59 m_maincpu->set_addrmap(AS_PROGRAM, &vaportra_state::main_map); m_maincpu->set_vblank_int("screen", FUNC(vaportra_state::irq6_line_assert)); - H6280(config, m_audiocpu, XTAL(24'000'000)/4); /* Custom chip 45; Audio section crystal is 32.220 MHz but CPU clock is confirmed as coming from the 24MHz crystal (6Mhz exactly on the CPU) */ + H6280(config, m_audiocpu, XTAL(24'000'000) / 4); // Custom chip 45; Audio section crystal is 32.220 MHz but CPU clock is confirmed as coming from the 24MHz crystal (6Mhz exactly on the CPU) m_audiocpu->set_addrmap(AS_PROGRAM, &vaportra_state::sound_map); m_audiocpu->add_route(ALL_OUTPUTS, "mono", 0); // internal sound unused m_audiocpu->set_timer_scale(2); - /* video hardware */ + // video hardware BUFFERED_SPRITERAM16(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -260,53 +426,53 @@ void vaportra_state::vaportra(machine_config &config) m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_MXC06(config, m_spritegen, 0); - m_spritegen->set_colpri_callback(FUNC(vaportra_state::vaportra_colpri_cb)); + m_spritegen->set_colpri_callback(FUNC(vaportra_state::colpri_cb)); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); - YM2203(config, "ym1", XTAL(32'220'000)/8).add_route(ALL_OUTPUTS, "mono", 0.60); + YM2203(config, "ym1", XTAL(32'220'000) / 8).add_route(ALL_OUTPUTS, "mono", 0.60); - ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000)/9)); // uses a preset LS163 to force the odd speed - ym2.irq_handler().set_inputline(m_audiocpu, 1); /* IRQ2 */ + ym2151_device &ym2(YM2151(config, "ym2", XTAL(32'220'000) / 9)); // uses a preset LS163 to force the odd speed + ym2.irq_handler().set_inputline(m_audiocpu, 1); // IRQ2 ym2.add_route(0, "mono", 0.60); ym2.add_route(1, "mono", 0.60); - OKIM6295(config, "oki1", XTAL(32'220'000)/32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75); + OKIM6295(config, "oki1", XTAL(32'220'000) / 32, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.75); - OKIM6295(config, "oki2", XTAL(32'220'000)/16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); + OKIM6295(config, "oki2", XTAL(32'220'000) / 16, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.60); } /******************************************************************************/ ROM_START( vaportra ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "fl_02-1.bin", 0x00000, 0x20000, CRC(9ae36095) SHA1(c8d11a6033a44277a267915b4ca471c43acd1143) ) ROM_LOAD16_BYTE( "fl_00-1.bin", 0x00001, 0x20000, CRC(c08cc048) SHA1(b28f95856817b8a8cb6cc588d48e95196cbf52fd) ) ROM_LOAD16_BYTE( "fl_03.bin", 0x40000, 0x20000, CRC(80bd2844) SHA1(3fcaa409c7134388fa9458df8e8aaecc93f085e6) ) ROM_LOAD16_BYTE( "fl_01.bin", 0x40001, 0x20000, CRC(9474b085) SHA1(5510309ddab5fbf1dbb0a7b1e424a5dff5ec263d) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "fj04", 0x00000, 0x10000, CRC(e9aedf9b) SHA1(f7bcf8f666015140aaad8ee5cf619636934b7066) ) - ROM_REGION( 0x080000, "gfx1", 0 ) - ROM_LOAD( "vtmaa00.bin", 0x000000, 0x80000, CRC(0330e13b) SHA1(dce70667ea738295332556752d1305c5e941b383) ) /* chars & tiles */ + ROM_REGION( 0x080000, "tiles1", 0 ) // chars & tiles + ROM_LOAD( "vtmaa00.bin", 0x000000, 0x80000, CRC(0330e13b) SHA1(dce70667ea738295332556752d1305c5e941b383) ) - ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) /* tiles 3 */ - ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) /* tiles 2 */ + ROM_REGION( 0x100000, "tiles2", 0 ) + ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) + ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) - ROM_REGION( 0x100000, "gfx3", 0 ) - ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) /* sprites */ + ROM_REGION( 0x100000, "sprites", 0 ) + ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) ROM_LOAD( "vtmaa04.bin", 0x080000, 0x80000, CRC(b713e9cc) SHA1(af33943d75d2ee3a7385f624537008dca9e1d5d8) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "fj06", 0x00000, 0x20000, CRC(6e98a235) SHA1(374564b4e494d03cd1330c06e321b9452c22a075) ) - ROM_REGION( 0x40000, "oki2", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "fj05", 0x00000, 0x20000, CRC(39cda2b5) SHA1(f5c5a305025d451ab48f84cd63e36a3bbdefda96) ) ROM_REGION( 0x200, "proms", 0 ) @@ -321,33 +487,33 @@ ROM_START( vaportra ) ROM_END ROM_START( vaportra3 ) // 74 bytes of 68k code have been changed compared to vaportra set - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "fl02-3.bin", 0x00000, 0x20000, CRC(6c59be54) SHA1(ce60be53fb2cc3a26a28e8632c8638771d3db3c9) ) // == fl_02-1.bin (99.973297%) ROM_LOAD16_BYTE( "fl00-3.bin", 0x00001, 0x20000, CRC(69f8bef4) SHA1(7249d097c33adac9b42dd98d1328ad1c496ff927) ) // == fl_00-1.bin (99.970245%) ROM_LOAD16_BYTE( "fl_03.bin", 0x40000, 0x20000, CRC(80bd2844) SHA1(3fcaa409c7134388fa9458df8e8aaecc93f085e6) ) ROM_LOAD16_BYTE( "fl_01.bin", 0x40001, 0x20000, CRC(9474b085) SHA1(5510309ddab5fbf1dbb0a7b1e424a5dff5ec263d) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "fj04", 0x00000, 0x10000, CRC(e9aedf9b) SHA1(f7bcf8f666015140aaad8ee5cf619636934b7066) ) - ROM_REGION( 0x080000, "gfx1", 0 ) // original DE board with mask rom split into 4 roms + ROM_REGION( 0x080000, "tiles1", 0 ) // chars & tiles // original DE board with mask ROM split into 4 ROMs ROM_LOAD16_BYTE( "fl23", 0x00000, 0x20000, CRC(6089f9e7) SHA1(a036068398a8e72c8fcf29fadaaad5a8930c2bfe) ) ROM_LOAD16_BYTE( "fl25", 0x00001, 0x20000, CRC(3989290a) SHA1(7d2d8a334d4c206298d806eac4f2cd46e7d4f918) ) ROM_LOAD16_BYTE( "fl24", 0x40000, 0x20000, CRC(41551bfa) SHA1(bc636fec6d610f651101656d6e9ad06656ce516a) ) ROM_LOAD16_BYTE( "fl26", 0x40001, 0x20000, CRC(dc67fa5c) SHA1(459a1ee059d6bb2fb2c6744fffeb25b915b29e67) ) - ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) /* tiles 3 */ - ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) /* tiles 2 */ + ROM_REGION( 0x100000, "tiles2", 0 ) + ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) + ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) - ROM_REGION( 0x100000, "gfx3", 0 ) - ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) /* sprites */ + ROM_REGION( 0x100000, "sprites", 0 ) + ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) ROM_LOAD( "vtmaa04.bin", 0x080000, 0x80000, CRC(b713e9cc) SHA1(af33943d75d2ee3a7385f624537008dca9e1d5d8) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "fj06", 0x00000, 0x20000, CRC(6e98a235) SHA1(374564b4e494d03cd1330c06e321b9452c22a075) ) - ROM_REGION( 0x40000, "oki2", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "fj05", 0x00000, 0x20000, CRC(39cda2b5) SHA1(f5c5a305025d451ab48f84cd63e36a3bbdefda96) ) ROM_REGION( 0x200, "proms", 0 ) @@ -362,30 +528,30 @@ ROM_START( vaportra3 ) // 74 bytes of 68k code have been changed compared to vap ROM_END ROM_START( vaportrau ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "fj02", 0x00000, 0x20000, CRC(a2affb73) SHA1(0d49397cc9891047a0b92e92e2e3d0e7fcaf8db9) ) ROM_LOAD16_BYTE( "fj00", 0x00001, 0x20000, CRC(ef05e07b) SHA1(0e505709fa251e6b30f019c0c28ee9ba2b29a50a) ) ROM_LOAD16_BYTE( "fj03", 0x40000, 0x20000, CRC(44893379) SHA1(da1340bc1821a552c317cb9a7c1ba69eb080b055) ) ROM_LOAD16_BYTE( "fj01", 0x40001, 0x20000, CRC(97fbc107) SHA1(b2899eb4347c0471397b83051e46c94dff3526f5) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "fj04", 0x00000, 0x10000, CRC(e9aedf9b) SHA1(f7bcf8f666015140aaad8ee5cf619636934b7066) ) - ROM_REGION( 0x080000, "gfx1", 0 ) - ROM_LOAD( "vtmaa00.bin", 0x000000, 0x80000, CRC(0330e13b) SHA1(dce70667ea738295332556752d1305c5e941b383) ) /* chars & tiles */ + ROM_REGION( 0x080000, "tiles1", 0 ) // chars & tiles + ROM_LOAD( "vtmaa00.bin", 0x000000, 0x80000, CRC(0330e13b) SHA1(dce70667ea738295332556752d1305c5e941b383) ) - ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) /* tiles 3 */ - ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) /* tiles 2 */ + ROM_REGION( 0x100000, "tiles2", 0 ) + ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) + ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) - ROM_REGION( 0x100000, "gfx3", 0 ) - ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) /* sprites */ + ROM_REGION( 0x100000, "sprites", 0 ) + ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) ROM_LOAD( "vtmaa04.bin", 0x080000, 0x80000, CRC(b713e9cc) SHA1(af33943d75d2ee3a7385f624537008dca9e1d5d8) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "fj06", 0x00000, 0x20000, CRC(6e98a235) SHA1(374564b4e494d03cd1330c06e321b9452c22a075) ) - ROM_REGION( 0x40000, "oki2", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "fj05", 0x00000, 0x20000, CRC(39cda2b5) SHA1(f5c5a305025d451ab48f84cd63e36a3bbdefda96) ) ROM_REGION( 0x200, "proms", 0 ) @@ -400,438 +566,49 @@ ROM_START( vaportrau ) ROM_END ROM_START( kuhga ) - ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */ + ROM_REGION( 0x80000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "fp02-3.bin", 0x00000, 0x20000, CRC(d0705ef4) SHA1(781efbf36d9dda543895e0a59cd4d72667439a93) ) ROM_LOAD16_BYTE( "fp00-3.bin", 0x00001, 0x20000, CRC(1da92e48) SHA1(6507bd9bbc31ee03e38b82cc135aebf090902761) ) ROM_LOAD16_BYTE( "fp03.bin", 0x40000, 0x20000, CRC(ea0da0f1) SHA1(ca40e694cb0aa0c13672c14fd4a389bc6d26cbc6) ) ROM_LOAD16_BYTE( "fp01.bin", 0x40001, 0x20000, CRC(e3ecbe86) SHA1(382e959111ec37ad94da8fd6dcefe2d2aab346b6) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "fj04", 0x00000, 0x10000, CRC(e9aedf9b) SHA1(f7bcf8f666015140aaad8ee5cf619636934b7066) ) - ROM_REGION( 0x080000, "gfx1", 0 ) - ROM_LOAD( "vtmaa00.bin", 0x000000, 0x80000, CRC(0330e13b) SHA1(dce70667ea738295332556752d1305c5e941b383) ) /* chars & tiles */ + ROM_REGION( 0x080000, "tiles1", 0 ) // chars & tiles + ROM_LOAD( "vtmaa00.bin", 0x000000, 0x80000, CRC(0330e13b) SHA1(dce70667ea738295332556752d1305c5e941b383) ) - ROM_REGION( 0x100000, "gfx2", 0 ) - ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) /* tiles 3 */ - ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) /* tiles 2 */ + ROM_REGION( 0x100000, "tiles2", 0 ) + ROM_LOAD( "vtmaa02.bin", 0x000000, 0x80000, CRC(091ff98e) SHA1(814dc08c055bad5368955a4b1fe6a706b58adc02) ) + ROM_LOAD( "vtmaa01.bin", 0x080000, 0x80000, CRC(c217a31b) SHA1(e259d48190d6890781fb0338e17e14822876babb) ) - ROM_REGION( 0x100000, "gfx3", 0 ) - ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) /* sprites */ + ROM_REGION( 0x100000, "sprites", 0 ) + ROM_LOAD( "vtmaa03.bin", 0x000000, 0x80000, CRC(1a30bf81) SHA1(00e6c713e12133a99d64ca80638c9cbc8e26b2c8) ) ROM_LOAD( "vtmaa04.bin", 0x080000, 0x80000, CRC(b713e9cc) SHA1(af33943d75d2ee3a7385f624537008dca9e1d5d8) ) - ROM_REGION( 0x40000, "oki1", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki1", 0 ) ROM_LOAD( "fj06", 0x00000, 0x20000, CRC(6e98a235) SHA1(374564b4e494d03cd1330c06e321b9452c22a075) ) - ROM_REGION( 0x40000, "oki2", 0 ) /* ADPCM samples */ + ROM_REGION( 0x40000, "oki2", 0 ) ROM_LOAD( "fj05", 0x00000, 0x20000, CRC(39cda2b5) SHA1(f5c5a305025d451ab48f84cd63e36a3bbdefda96) ) ROM_REGION( 0x200, "proms", 0 ) ROM_LOAD( "fj-27.bin", 0x00000, 0x00200, CRC(65045742) SHA1(5dfb6c85a70b208cd16d3bf8ec1897e77f4a9b7d) ) ROM_END -/* -Pals ----- -Fuse Plot - 1 -? - -PAL16L8/A/A-2/A-4 -* -DD PAL16L8/A/A-2/A-4* -QP20* -QF2048* -G0* -F0* -L0 11111111111111111111111111111111* -L32 10111011101110111111111111111111* -L64 00000000000000000000000000000000* -L96 00000000000000000000000000000000* -L128 00000000000000000000000000000000* -L160 00000000000000000000000000000000* -L192 00000000000000000000000000000000* -L224 00000000000000000000000000000000* -L256 11111111111111111111111111111111* -L288 10101011101101111111111111111111* -L320 00000000000000000000000000000000* -L352 00000000000000000000000000000000* -L384 00000000000000000000000000000000* -L416 00000000000000000000000000000000* -L448 00000000000000000000000000000000* -L480 00000000000000000000000000000000* -L512 11111111111111111111111111111111* -L544 10011011101101111111111111111111* -L576 00000000000000000000000000000000* -L608 00000000000000000000000000000000* -L640 00000000000000000000000000000000* -L672 00000000000000000000000000000000* -L704 00000000000000000000000000000000* -L736 00000000000000000000000000000000* -L768 11111111111111111111111111111111* -L800 01011011101101111111111111111111* -L832 00000000000000000000000000000000* -L864 00000000000000000000000000000000* -L896 00000000000000000000000000000000* -L928 00000000000000000000000000000000* -L960 00000000000000000000000000000000* -L992 00000000000000000000000000000000* -L1024 11111111111111111111111111111111* -L1056 01101011101101111111111111111111* -L1088 00000000000000000000000000000000* -L1120 00000000000000000000000000000000* -L1152 00000000000000000000000000000000* -L1184 00000000000000000000000000000000* -L1216 00000000000000000000000000000000* -L1248 00000000000000000000000000000000* -L1280 11111111111111111111111111111111* -L1312 10100111101101111111111111111111* -L1344 00000000000000000000000000000000* -L1376 00000000000000000000000000000000* -L1408 00000000000000000000000000000000* -L1440 00000000000000000000000000000000* -L1472 00000000000000000000000000000000* -L1504 00000000000000000000000000000000* -L1536 11111111111111111111111111111111* -L1568 11111111111111111011111110111111* -L1600 00000000000000000000000000000000* -L1632 00000000000000000000000000000000* -L1664 00000000000000000000000000000000* -L1696 00000000000000000000000000000000* -L1728 00000000000000000000000000000000* -L1760 00000000000000000000000000000000* -L1792 11111111111111111111111111111111* -L1824 11111111111111111111101110111111* -L1856 00000000000000000000000000000000* -L1888 00000000000000000000000000000000* -L1920 00000000000000000000000000000000* -L1952 00000000000000000000000000000000* -L1984 00000000000000000000000000000000* -L2016 00000000000000000000000000000000* -C3E44* -? - -Fuse Plot - TD0 -? - -PAL16L8B/D/H-15 -* -DD PAL16L8B/D/H-15* -QP20* -QF2048* -G0* -F0* -L0 11111111111111111111111111111111* -L32 10101111111111111111111111111111* -L64 00000000000000000000000000000000* -L96 00000000000000000000000000000000* -L128 00000000000000000000000000000000* -L160 00000000000000000000000000000000* -L192 00000000000000000000000000000000* -L224 00000000000000000000000000000000* -L256 11111111111111111111111111111111* -L288 11111111111110111111111111111111* -L320 11111111111111111011111111111111* -L352 11111111111111111111101111111111* -L384 00000000000000000000000000000000* -L416 00000000000000000000000000000000* -L448 00000000000000000000000000000000* -L480 00000000000000000000000000000000* -L512 11111111111111111111111111111111* -L544 11111111111111111111011111101111* -L576 00000000000000000000000000000000* -L608 00000000000000000000000000000000* -L640 00000000000000000000000000000000* -L672 00000000000000000000000000000000* -L704 00000000000000000000000000000000* -L736 00000000000000000000000000000000* -L768 11111111111111111111111111111111* -L800 11111111111111111111101111101111* -L832 00000000000000000000000000000000* -L864 00000000000000000000000000000000* -L896 00000000000000000000000000000000* -L928 00000000000000000000000000000000* -L960 00000000000000000000000000000000* -L992 00000000000000000000000000000000* -L1024 11111111111111111111111111111111* -L1056 10011111101111111111111111111111* -L1088 00000000000000000000000000000000* -L1120 00000000000000000000000000000000* -L1152 00000000000000000000000000000000* -L1184 00000000000000000000000000000000* -L1216 00000000000000000000000000000000* -L1248 00000000000000000000000000000000* -L1280 11111111111111111111111111111111* -L1312 01011111101111111111111111111111* -L1344 00000000000000000000000000000000* -L1376 00000000000000000000000000000000* -L1408 00000000000000000000000000000000* -L1440 00000000000000000000000000000000* -L1472 00000000000000000000000000000000* -L1504 00000000000000000000000000000000* -L1536 11111111111111111111111111111111* -L1568 01101111101111111111111111111111* -L1600 00000000000000000000000000000000* -L1632 00000000000000000000000000000000* -L1664 00000000000000000000000000000000* -L1696 00000000000000000000000000000000* -L1728 00000000000000000000000000000000* -L1760 00000000000000000000000000000000* -L1792 11111111111111111111111111111111* -L1824 10100111111111111111111111111111* -L1856 11111111111111111111111110111011* -L1888 10011111101111111111111111111111* -L1920 01011111101111111111111111111111* -L1952 00000000000000000000000000000000* -L1984 00000000000000000000000000000000* -L2016 00000000000000000000000000000000* -C52BB* -? - -Fuse Plot - TD1 -? - -PAL16L8B/D/H-15 -* -DD PAL16L8B/D/H-15* -QP20* -QF2048* -G0* -F0* -L0 11111111111111111111111111111111* -L32 10111011111111111111111111111111* -L64 00000000000000000000000000000000* -L96 00000000000000000000000000000000* -L128 00000000000000000000000000000000* -L160 00000000000000000000000000000000* -L192 00000000000000000000000000000000* -L224 00100000000000000000000000000000* -L256 11111111111111111111111111111111* -L288 11101111101110111111111111111111* -L320 00000000000000000000000000000000* -L352 00000000000000000000000000000000* -L384 00000000000000000000000000000000* -L416 00000000000000000000000000000000* -L448 00000000000000000000000000000000* -L480 00000000000000000000000000000000* -L512 11111111111111111111111111111111* -L544 11101111011110111111111111111111* -L576 00000000000000000000000000000000* -L608 00000000000000000000000000000000* -L640 00000000000000000000000000000000* -L672 00000000000000000000000000000000* -L704 00000000000000000000000000000000* -L736 00100000000000000000000000000000* -L768 11111111111111111111111111111111* -L800 10111111101110111111111111111111* -L832 00000000000000000000000000000000* -L864 00000000000000000000000000000000* -L896 00000000000000000000000000000000* -L928 00000000000000000000000000000000* -L960 00000000000000000000000000000000* -L992 00000000000000000000000000000000* -L1024 11111111111111111111111111111111* -L1056 10111111011110111111111111111111* -L1088 00000000000000000000000000000000* -L1120 00000000000000000000000000000000* -L1152 00000000000000000000000000000000* -L1184 00000000000000000000000000000000* -L1216 00000000000000000000000000000000* -L1248 00000000000000000000000000000000* -L1280 11111111111111111111111111111111* -L1312 11100111111111111111111111111111* -L1344 00000000000000000000000000000000* -L1376 00000000000000000000000000000000* -L1408 00000000000000000000000000000000* -L1440 00000000000000000000000000000000* -L1472 00000000000000000000000000000000* -L1504 00000000000000000000000000000000* -L1536 11111111111111111111111111111111* -L1568 10110111111111111111111111111111* -L1600 00000000000000000000000000000000* -L1632 00000000000000000000000000000000* -L1664 00000000000000000000000000000000* -L1696 00000000000000000000000000000000* -L1728 00000000000000000000000000000000* -L1760 00000000000000000000000000000000* -L1792 11111111111111111111111111111111* -L1824 11101011111111111111111111111111* -L1856 00000000000000000000000000000000* -L1888 00000000000000000000000000000000* -L1920 00000000000000000000000000000000* -L1952 00000000000000000000000000000000* -L1984 00000000000000000000000000000000* -L2016 00000000000000000000000000000000* -C3EBA* -? - -Fuse Plot - TD2 -? - -PAL16L8B/D/H-15 -* -DD PAL16L8B/D/H-15* -QP20* -QF2048* -G0* -F0* -L0 11111111111111111111111111111111* -L32 11110111011110110111111111111111* -L64 00000000000000000000000000000000* -L96 00000000000000000000000000000000* -L128 00000000000000000000000000000000* -L160 00000000000000000000000000000000* -L192 00000000000000000000000000000000* -L224 00000000000000000000000000000000* -L256 11111111111111111111111111111111* -L288 11111011011110110111111111111111* -L320 00000000000000000000000000000000* -L352 00000000000000000000000000000000* -L384 00000000000000000000000000000000* -L416 00000000000000000000000000000000* -L448 00000000000000000000000000000000* -L480 00000000000000000000000000000000* -L512 11111111111111111111111111111111* -L544 11111011101110111011111111111111* -L576 00000000000000000000000000000000* -L608 00000000000000000000000000000000* -L640 00000000000000000000000000000000* -L672 00000000000000000000000000000000* -L704 00000000000000000000000000000000* -L736 00000000000000000000000000000000* -L768 11111111111111111111111111111111* -L800 11110111101110111011111111111111* -L832 00000000000000000000000000000000* -L864 00000000000000000000000000000000* -L896 00000000000000000000000000000000* -L928 00000000000000000000000000000000* -L960 00000000000000000000000000000000* -L992 00000000000000000000000000000000* -L1024 11111111111111111111111111111111* -L1056 11111011011110111011111111111111* -L1088 00000000000000000000000000000000* -L1120 00000000000000000000000000000000* -L1152 00000000000000000000000000000000* -L1184 00000000000000000000000000000000* -L1216 00000000000000000000000000000000* -L1248 00000000000000000000000000000000* -L1280 11111111111111111111111111111111* -L1312 11110111011110111011111111111111* -L1344 00000000000000000000000000000000* -L1376 00000000000000000000000000000000* -L1408 00000000000000000000000000000000* -L1440 00000000000000000000000000000000* -L1472 00000000000000000000000000000000* -L1504 00000000000000000000000000000000* -L1536 11111011101101111011111111111111* -L1568 11101111111111111111111111111111* -L1600 00000000000000000000000000000000* -L1632 00000000000000000000000000000000* -L1664 00000000000000000000000000000000* -L1696 00000000000000000000000000000000* -L1728 00000000000000000000000000000000* -L1760 00000000000000000000000000000000* -L1792 11111011101101111011111111111111* -L1824 10111111111111111111111111111111* -L1856 00000000000000000000000000000000* -L1888 00000000000000000000000000000000* -L1920 00000000000000000000000000000000* -L1952 00000000000000000000000000000000* -L1984 00000000000000000000000000000000* -L2016 00000000000000000000000000000000* -C3DEC* -? - -Fuse Plot - TD3 -? - -PAL16L8B/D/H-15 -* -DD PAL16L8B/D/H-15* -QP20* -QF2048* -G0* -F0* -L0 11111111111111111111111111111111* -L32 11111010111111111111111111111111* -L64 11111101111111111111111111111111* -L96 00000000000000000000000000000000* -L128 00000000000000000000000000000000* -L160 00000000000000000000000000000000* -L192 00000000000000000000000000000000* -L224 00000000000000000000000000000000* -L256 11111111111111111111111111111111* -L288 11111011111111111111111111111111* -L320 10111111111111111111111111111111* -L352 00000000000000000000000000000000* -L384 00000000000000000000000000000000* -L416 00000000000000000000000000000000* -L448 00000000000000000000000000000000* -L480 00000000000000000000000000000000* -L512 11111111111111111111111111111111* -L544 11111110111111111111111110111111* -L576 00000000000000000000000000000000* -L608 00000000000000000000000000000000* -L640 00000000000000000000000000000000* -L672 00000000000000000000000000000000* -L704 00000000000000000000000000000000* -L736 00000000000000000000000000000000* -L768 11111111111111111111111111111111* -L800 11111110111111111111101111111111* -L832 00000000000000000000000000000000* -L864 00000000000000000000000000000000* -L896 00000000000000000000000000000000* -L928 00000000000000000000000000000000* -L960 00000000000000000000000000000000* -L992 00000000000000000000000000000000* -L1024 11111111111111111111111111111111* -L1056 11111011111111111011111111111111* -L1088 00000000000000000000000000000000* -L1120 00000000000000000000000000000000* -L1152 00000000000000000000000000000000* -L1184 00000000000000000000000000000000* -L1216 00000000000000000000000000000000* -L1248 00000000000000000000000000000000* -L1280 11111111111111111111111111111111* -L1312 10111111111111111011111111111111* -L1344 00000000000000000000000000000000* -L1376 00000000000000000000000000000000* -L1408 00000000000000000000000000000000* -L1440 00000000000000000000000000000000* -L1472 00000000000000000000000000000000* -L1504 00000000000000000000000000000000* -L1536 11111111111111111111111111111111* -L1568 10111111111110111111111111111111* -L1600 00000000000000000000000000000000* -L1632 00000000000000000000000000000000* -L1664 00000000000000000000000000000000* -L1696 00000000000000000000000000000000* -L1728 00000000000000000000000000000000* -L1760 00000000000000000000000000000000* -L1792 00000000000000000000000000000000* -L1824 00000000000000000000000000000000* -L1856 00000000000000000000000000000000* -L1888 00000000000000000000000000000000* -L1920 00000000000000000000000000000000* -L1952 00000000000000000000000000000000* -L1984 00000000000000000000000000000000* -L2016 00000000000000000000000000000000* -C3D54* -? - -*/ /******************************************************************************/ -void vaportra_state::init_vaportra() +void vaportra_state::driver_init() { - uint8_t *RAM = memregion("maincpu")->base(); + uint8_t *rom = memregion("maincpu")->base(); for (int i = 0x00000; i < 0x80000; i++) - RAM[i] = bitswap<8>(RAM[i],0,6,5,4,3,2,1,7); + rom[i] = bitswap<8>(rom[i], 0, 6, 5, 4, 3, 2, 1, 7); } /******************************************************************************/ -GAME( 1989, vaportra, 0, vaportra, vaportra, vaportra_state, init_vaportra, ROT270, "Data East Corporation", "Vapor Trail - Hyper Offence Formation (World revision 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, vaportra3, vaportra, vaportra, vaportra, vaportra_state, init_vaportra, ROT270, "Data East Corporation", "Vapor Trail - Hyper Offence Formation (World revision 3?)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, vaportrau, vaportra, vaportra, vaportra, vaportra_state, init_vaportra, ROT270, "Data East USA", "Vapor Trail - Hyper Offence Formation (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, kuhga, vaportra, vaportra, vaportra, vaportra_state, init_vaportra, ROT270, "Data East Corporation", "Kuhga - Operation Code 'Vapor Trail' (Japan revision 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, vaportra, 0, vaportra, vaportra, vaportra_state, driver_init, ROT270, "Data East Corporation", "Vapor Trail - Hyper Offence Formation (World revision 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, vaportra3, vaportra, vaportra, vaportra, vaportra_state, driver_init, ROT270, "Data East Corporation", "Vapor Trail - Hyper Offence Formation (World revision 3?)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, vaportrau, vaportra, vaportra, vaportra, vaportra_state, driver_init, ROT270, "Data East USA", "Vapor Trail - Hyper Offence Formation (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, kuhga, vaportra, vaportra, vaportra, vaportra_state, driver_init, ROT270, "Data East Corporation", "Kuhga - Operation Code 'Vapor Trail' (Japan revision 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/dataeast/vaportra.h b/src/mame/dataeast/vaportra.h deleted file mode 100644 index 52be254a94c..00000000000 --- a/src/mame/dataeast/vaportra.h +++ /dev/null @@ -1,77 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail -/************************************************************************* - - Vapor Trail - -*************************************************************************/ -#ifndef MAME_INCLUDES_VAPORTRA_H -#define MAME_INCLUDES_VAPORTRA_H - -#pragma once - -#include "cpu/h6280/h6280.h" -#include "machine/gen_latch.h" -#include "video/bufsprite.h" -#include "deco16ic.h" -#include "decmxc06.h" -#include "emupal.h" - -class vaportra_state : public driver_device -{ -public: - vaportra_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_audiocpu(*this, "audiocpu") - , m_deco_tilegen(*this, "tilegen%u", 1U) - , m_spritegen(*this, "spritegen") - , m_spriteram(*this, "spriteram") - , m_gfxdecode(*this, "gfxdecode") - , m_palette(*this, "colors") - , m_soundlatch(*this, "soundlatch") - , m_paletteram(*this, "palette") - , m_paletteram_ext(*this, "palette_ext") - { } - - void vaportra(machine_config &config); - - void init_vaportra(); - -private: - /* devices */ - required_device m_maincpu; - required_device m_audiocpu; - required_device_array m_deco_tilegen; - required_device m_spritegen; - required_device m_spriteram; - required_device m_gfxdecode; - required_device m_palette; - required_device m_soundlatch; - - required_shared_ptr m_paletteram; - required_shared_ptr m_paletteram_ext; - - /* misc */ - uint16_t m_priority[2]{}; - - uint8_t irq6_ack_r(); - void irq6_ack_w(uint8_t data); - void priority_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - void palette_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - void palette_ext_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - - virtual void machine_start() override; - virtual void machine_reset() override; - - void vaportra_colpri_cb(u32 &colour, u32 &pri_mask); - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void update_palette( int offset ); - - DECO16IC_BANK_CB_MEMBER(bank_callback); - - void main_map(address_map &map); - void sound_map(address_map &map); -}; - -#endif // MAME_INCLUDES_VAPORTRA_H diff --git a/src/mame/dataeast/vaportra_v.cpp b/src/mame/dataeast/vaportra_v.cpp deleted file mode 100644 index f7e194c043a..00000000000 --- a/src/mame/dataeast/vaportra_v.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail -/*************************************************************************** - - Vapour Trail Video emulation - Bryan McPhail, mish@tendril.co.uk - -**************************************************************************** - - 2 Data East 55 chips for playfields (same as Dark Seal, etc) - 1 Data East MXC-06 chip for sprites (same as Bad Dudes, etc) - -***************************************************************************/ - -#include "emu.h" -#include "vaportra.h" - -/******************************************************************************/ - -void vaportra_state::priority_w(offs_t offset, uint16_t data, uint16_t mem_mask) -{ - COMBINE_DATA(&m_priority[offset]); -} - -/******************************************************************************/ - -void vaportra_state::update_palette( int offset ) -{ - uint8_t r, g, b; - - // TODO : Values aren't write in game when higher than 0xf0, - // It's related from hardware colour resistors? - r = (m_paletteram[offset] >> 0) & 0xff; - g = (m_paletteram[offset] >> 8) & 0xff; - b = (m_paletteram_ext[offset] >> 0) & 0xff; - - m_palette->set_pen_color(offset, rgb_t(r,g,b)); -} - -void vaportra_state::palette_w(offs_t offset, uint16_t data, uint16_t mem_mask) -{ - COMBINE_DATA(&m_paletteram[offset]); - update_palette(offset); -} - -void vaportra_state::palette_ext_w(offs_t offset, uint16_t data, uint16_t mem_mask) -{ - COMBINE_DATA(&m_paletteram_ext[offset]); - update_palette(offset); -} - -/******************************************************************************/ - -void vaportra_state::vaportra_colpri_cb(u32 &colour, u32 &pri_mask) -{ - pri_mask = 0; // above back, mid, foreground - if (colour >= m_priority[1]) - { - pri_mask |= GFX_PMASK_4; // behind foreground - } -} - -uint32_t vaportra_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - uint16_t flip = m_deco_tilegen[0]->pf_control_r(0); - int pri = m_priority[0] & 0x03; - - screen.priority().fill(0, cliprect); - flip_screen_set(!BIT(flip, 7)); - m_deco_tilegen[0]->pf_update(nullptr, nullptr); - m_deco_tilegen[1]->pf_update(nullptr, nullptr); - - m_spritegen->set_flip_screen(!BIT(flip, 7)); - - /* Draw playfields */ - if (pri == 0) - { - m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 2); - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); - } - else if (pri == 1) - { - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); - } - else if (pri == 2) - { - m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 4); - } - else - { - m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 1); - m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); - m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); - } - - m_spritegen->draw_sprites(screen, bitmap, cliprect, m_gfxdecode->gfx(4), m_spriteram->buffer(), 0x800 / 2); - m_deco_tilegen[0]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); - return 0; -} diff --git a/src/mame/excellent/gcpinbal.cpp b/src/mame/excellent/gcpinbal.cpp index ed94f9e939a..e20f64c3e30 100644 --- a/src/mame/excellent/gcpinbal.cpp +++ b/src/mame/excellent/gcpinbal.cpp @@ -295,31 +295,9 @@ INPUT_PORTS_END GFX DECODING **************************************************************/ -static const gfx_layout charlayout = -{ - 16,16, /* 16*16 characters */ - RGN_FRAC(1,1), - 4, /* 4 bits per pixel */ - { STEP4(0,1) }, - { STEP16(0,4) }, - { STEP16(0,4*16) }, - 16*16*4 /* every sprite takes 128 consecutive bytes */ -}; - -static const gfx_layout char_8x8_layout = -{ - 8,8, /* 8*8 characters */ - RGN_FRAC(1,1), - 4, /* 4 bits per pixel */ - { STEP4(0,1) }, - { STEP8(0,4) }, - { STEP8(0,4*8) }, - 8*8*4 /* every sprite takes 32 consecutive bytes */ -}; - static GFXDECODE_START( gfx_gcpinbal ) - GFXDECODE_ENTRY( "bg0", 0, charlayout, 0, 0x60 ) // playfield - GFXDECODE_ENTRY( "fg0", 0, char_8x8_layout, 0x700, 0x10 ) // playfield + GFXDECODE_ENTRY( "bg0", 0, gfx_16x16x4_packed_msb, 0, 0x60 ) // playfield + GFXDECODE_ENTRY( "fg0", 0, gfx_8x8x4_packed_msb, 0x700, 0x10 ) // playfield GFXDECODE_END diff --git a/src/mame/fuuki/fuukifg2.cpp b/src/mame/fuuki/fuukifg2.cpp index d83d4e92f63..acd47580443 100644 --- a/src/mame/fuuki/fuukifg2.cpp +++ b/src/mame/fuuki/fuukifg2.cpp @@ -337,18 +337,6 @@ INPUT_PORTS_END // graphics layouts //------------------------------------------------- -/* 16x16x4 */ -static const gfx_layout layout_16x16x4 = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { STEP4(0,1) }, - { STEP16(0,4) }, - { STEP16(0,16*4) }, - 16*16*4 -}; - /* 16x16x8 */ static const gfx_layout layout_16x16x8 = { @@ -362,7 +350,7 @@ static const gfx_layout layout_16x16x8 = }; static GFXDECODE_START( gfx_fuuki16 ) - GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 0x400*0, 0x40 ) // [0] Layer 0 + GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_msb, 0x400*0, 0x40 ) // [0] Layer 0 GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x400*1, 0x40 ) // [1] Layer 1 GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x4_packed_msb, 0x400*3, 0x40 ) // [2] Layer 2 GFXDECODE_END diff --git a/src/mame/jaleco/ms1_tmap.cpp b/src/mame/jaleco/ms1_tmap.cpp index 1dc2a62d8ef..303478ac4c6 100644 --- a/src/mame/jaleco/ms1_tmap.cpp +++ b/src/mame/jaleco/ms1_tmap.cpp @@ -63,19 +63,8 @@ megasys1_tilemap_device::megasys1_tilemap_device(const machine_config &mconfig, * *************************************/ -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 -}; - GFXDECODE_MEMBER(megasys1_tilemap_device::gfxinfo) - GFXDECODE_DEVICE(DEVICE_SELF, 0, tilelayout, 0, 16) + GFXDECODE_DEVICE(DEVICE_SELF, 0, gfx_8x8x4_packed_msb, 0, 16) GFXDECODE_END //------------------------------------------------- diff --git a/src/mame/misc/quizpun2.cpp b/src/mame/misc/quizpun2.cpp index e68823671f7..050e49c766f 100644 --- a/src/mame/misc/quizpun2.cpp +++ b/src/mame/misc/quizpun2.cpp @@ -570,17 +570,6 @@ INPUT_PORTS_END Graphics Layout ***************************************************************************/ -static const gfx_layout layout_16x16x4 = -{ - 16, 16, - RGN_FRAC(1, 1), - 4, - { STEP4(0,1) }, - { 4*1,4*0, 4*3,4*2, 4*5,4*4, 4*7,4*6, 4*9,4*8, 4*11,4*10, 4*13,4*12, 4*15,4*14 }, - { STEP16(0,16*4) }, - 16*16*4 -}; - static const gfx_layout layout_16x16x1 = { 16, 16, @@ -593,9 +582,9 @@ static const gfx_layout layout_16x16x1 = }; static GFXDECODE_START( gfx_quizpun2 ) - GFXDECODE_ENTRY( "bg", 0, layout_16x16x4, 0, 256/16 ) - GFXDECODE_ENTRY( "fg", 0, layout_16x16x1, 0x100, 256/2 ) - GFXDECODE_ENTRY( "fg2", 0, layout_16x16x1, 0x100, 256/2 ) + GFXDECODE_ENTRY( "bg", 0, gfx_16x16x4_packed_lsb, 0, 256/16 ) + GFXDECODE_ENTRY( "fg", 0, layout_16x16x1 , 0x100, 256/2 ) + GFXDECODE_ENTRY( "fg2", 0, layout_16x16x1, 0x100, 256/2 ) GFXDECODE_END /*************************************************************************** diff --git a/src/mame/snk/prehisle.cpp b/src/mame/snk/prehisle.cpp index 24ac4ceb3fc..8a8ae3a2973 100644 --- a/src/mame/snk/prehisle.cpp +++ b/src/mame/snk/prehisle.cpp @@ -160,19 +160,8 @@ INPUT_PORTS_END /******************************************************************************/ -static const gfx_layout charlayout = -{ - 8,8, /* 8*8 characters */ - RGN_FRAC(1,1), - 4, /* 4 bits per pixel */ - { STEP4(0,1) }, - { STEP8(0,4) }, - { STEP8(0,4*8) }, - 32*8 /* every char takes 32 consecutive bytes */ -}; - static GFXDECODE_START( gfx_prehisle ) - GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 16 ) + GFXDECODE_ENTRY( "chars", 0, gfx_8x8x4_packed_msb, 0, 16 ) GFXDECODE_ENTRY( "bgtiles", 0, gfx_8x8x4_col_2x2_group_packed_msb, 768, 16 ) GFXDECODE_ENTRY( "fgtiles", 0, gfx_8x8x4_col_2x2_group_packed_msb, 512, 16 ) GFXDECODE_ENTRY( "sprites", 0, gfx_8x8x4_col_2x2_group_packed_msb, 256, 16 ) -- cgit v1.2.3