summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2022-03-28 18:11:51 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2022-03-28 18:11:51 +0200
commit19fe9e23a68ea2928006e7f319d3c3c296c704c9 (patch)
tree802a5a3443d932131b2169756844cfcbc42ca114
parentd832d6a3662d60ddd8aac9843ddd1f924dfc9976 (diff)
- diverboy.cpp, exzisus.cpp: finders, other minor cleanups
- various drivers: removed some custom GFX decodes in favor of the ones provided in emu/video/generic.cpp
-rw-r--r--scripts/target/mame/arcade.lua2
-rw-r--r--src/mame/drivers/acommand.cpp15
-rw-r--r--src/mame/drivers/aerofgt.cpp14
-rw-r--r--src/mame/drivers/akkaarrh.cpp26
-rw-r--r--src/mame/drivers/angelkds.cpp18
-rw-r--r--src/mame/drivers/arcadecl.cpp14
-rw-r--r--src/mame/drivers/atarig1.cpp13
-rw-r--r--src/mame/drivers/atarig42.cpp13
-rw-r--r--src/mame/drivers/atarigt.cpp14
-rw-r--r--src/mame/drivers/baraduke.cpp21
-rw-r--r--src/mame/drivers/battlex.cpp15
-rw-r--r--src/mame/drivers/bbusters.cpp14
-rw-r--r--src/mame/drivers/btime.cpp39
-rw-r--r--src/mame/drivers/carpolo.cpp13
-rw-r--r--src/mame/drivers/centiped.cpp19
-rw-r--r--src/mame/drivers/cop01.cpp15
-rw-r--r--src/mame/drivers/crshrace.cpp19
-rw-r--r--src/mame/drivers/cybstorm.cpp18
-rw-r--r--src/mame/drivers/dblcrown.cpp13
-rw-r--r--src/mame/drivers/dbz.cpp17
-rw-r--r--src/mame/drivers/deniam.cpp16
-rw-r--r--src/mame/drivers/discoboy.cpp307
-rw-r--r--src/mame/drivers/diverboy.cpp17
-rw-r--r--src/mame/drivers/docastle.cpp13
-rw-r--r--src/mame/drivers/dominob.cpp15
-rw-r--r--src/mame/drivers/dooyong.cpp27
-rw-r--r--src/mame/drivers/dreamwld.cpp15
-rw-r--r--src/mame/drivers/dynadice.cpp13
-rw-r--r--src/mame/drivers/efdt.cpp13
-rw-r--r--src/mame/drivers/elan_eu3a14.cpp14
-rw-r--r--src/mame/drivers/esh.cpp15
-rw-r--r--src/mame/drivers/exzisus.cpp230
-rw-r--r--src/mame/drivers/fastfred.cpp38
-rw-r--r--src/mame/drivers/finalizr.cpp17
-rw-r--r--src/mame/drivers/firefox.cpp15
-rw-r--r--src/mame/drivers/freekick.cpp15
-rw-r--r--src/mame/drivers/freeway.cpp13
-rw-r--r--src/mame/drivers/funtech.cpp14
-rw-r--r--src/mame/drivers/fuukifg2.cpp18
-rw-r--r--src/mame/drivers/fuukifg3.cpp18
-rw-r--r--src/mame/drivers/galaga.cpp13
-rw-r--r--src/mame/drivers/galaxia.cpp13
-rw-r--r--src/mame/drivers/gauntlet.cpp16
-rw-r--r--src/mame/drivers/ginganin.cpp19
-rw-r--r--src/mame/drivers/gladiatr.cpp15
-rw-r--r--src/mame/drivers/goal92.cpp13
-rw-r--r--src/mame/drivers/goldstar.cpp13
-rw-r--r--src/mame/drivers/gottlieb.cpp16
-rw-r--r--src/mame/drivers/gstriker.cpp18
-rw-r--r--src/mame/drivers/gundealr.cpp15
-rw-r--r--src/mame/drivers/headonb.cpp13
-rw-r--r--src/mame/drivers/himesiki.cpp13
-rw-r--r--src/mame/drivers/hitme.cpp13
-rw-r--r--src/mame/drivers/homedata.cpp30
-rw-r--r--src/mame/drivers/igs011.cpp28
-rw-r--r--src/mame/drivers/ironhors.cpp15
-rw-r--r--src/mame/drivers/joystand.cpp25
-rw-r--r--src/mame/drivers/kickgoal.cpp36
-rw-r--r--src/mame/drivers/klax.cpp22
-rw-r--r--src/mame/drivers/kncljoe.cpp17
-rw-r--r--src/mame/drivers/konblands.cpp12
-rw-r--r--src/mame/drivers/liberate.cpp43
-rw-r--r--src/mame/drivers/m14.cpp13
-rw-r--r--src/mame/drivers/m62.cpp17
-rw-r--r--src/mame/drivers/m63.cpp34
-rw-r--r--src/mame/drivers/m90.cpp15
-rw-r--r--src/mame/drivers/macrossp.cpp14
-rw-r--r--src/mame/drivers/mainsnk.cpp16
-rw-r--r--src/mame/drivers/mastboy.cpp16
-rw-r--r--src/mame/drivers/mechatt.cpp13
-rw-r--r--src/mame/drivers/mirax.cpp15
-rw-r--r--src/mame/drivers/mystwarr.cpp13
-rw-r--r--src/mame/drivers/namcos86.cpp17
-rw-r--r--src/mame/drivers/news.cpp13
-rw-r--r--src/mame/drivers/nova2001.cpp27
-rw-r--r--src/mame/drivers/pandoras.cpp15
-rw-r--r--src/mame/drivers/paradise.cpp33
-rw-r--r--src/mame/drivers/powerbal.cpp13
-rw-r--r--src/mame/drivers/rabbit.cpp19
-rw-r--r--src/mame/drivers/rbmk.cpp21
-rw-r--r--src/mame/drivers/realbrk.cpp19
-rw-r--r--src/mame/drivers/ron.cpp13
-rw-r--r--src/mame/drivers/rungun.cpp15
-rw-r--r--src/mame/drivers/seabattl.cpp15
-rw-r--r--src/mame/drivers/seicupbl.cpp13
-rw-r--r--src/mame/drivers/shangha3.cpp14
-rw-r--r--src/mame/drivers/sigmab98.cpp15
-rw-r--r--src/mame/drivers/snk.cpp31
-rw-r--r--src/mame/drivers/sonson.cpp16
-rw-r--r--src/mame/drivers/spbactn.cpp16
-rw-r--r--src/mame/drivers/speedatk.cpp14
-rw-r--r--src/mame/drivers/sshot.cpp13
-rw-r--r--src/mame/drivers/statriv2.cpp13
-rw-r--r--src/mame/drivers/stuntair.cpp15
-rw-r--r--src/mame/drivers/superqix.cpp17
-rw-r--r--src/mame/drivers/suprgolf.cpp13
-rw-r--r--src/mame/drivers/suprslam.cpp13
-rw-r--r--src/mame/drivers/system16.cpp13
-rw-r--r--src/mame/drivers/taotaido.cpp17
-rw-r--r--src/mame/drivers/tbowl.cpp19
-rw-r--r--src/mame/drivers/terracre.cpp21
-rw-r--r--src/mame/drivers/thunderj.cpp18
-rw-r--r--src/mame/drivers/tmnt.cpp14
-rw-r--r--src/mame/drivers/toaplan2.cpp13
-rw-r--r--src/mame/drivers/trackfld.cpp15
-rw-r--r--src/mame/drivers/travrusa.cpp17
-rw-r--r--src/mame/drivers/tsamurai.cpp28
-rw-r--r--src/mame/drivers/tugboat.cpp30
-rw-r--r--src/mame/drivers/twin16.cpp21
-rw-r--r--src/mame/drivers/unkpoker.cpp14
-rw-r--r--src/mame/drivers/warpwarp.cpp17
-rw-r--r--src/mame/drivers/xavix.cpp13
-rw-r--r--src/mame/includes/exzisus.h54
-rw-r--r--src/mame/video/exzisus.cpp169
114 files changed, 609 insertions, 2066 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 108228f30b1..e63cb642176 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -4033,8 +4033,6 @@ files {
MAME_DIR .. "src/mame/video/darius.cpp",
MAME_DIR .. "src/mame/drivers/dinoking.cpp",
MAME_DIR .. "src/mame/drivers/exzisus.cpp",
- MAME_DIR .. "src/mame/includes/exzisus.h",
- MAME_DIR .. "src/mame/video/exzisus.cpp",
MAME_DIR .. "src/mame/drivers/fgoal.cpp",
MAME_DIR .. "src/mame/includes/fgoal.h",
MAME_DIR .. "src/mame/video/fgoal.cpp",
diff --git a/src/mame/drivers/acommand.cpp b/src/mame/drivers/acommand.cpp
index c675a72bd75..ab0bcfeb350 100644
--- a/src/mame/drivers/acommand.cpp
+++ b/src/mame/drivers/acommand.cpp
@@ -440,21 +440,8 @@ static INPUT_PORTS_START( acommand )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
-static const gfx_layout tilelayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4,
- 16*32+0*4, 16*32+1*4, 16*32+2*4, 16*32+3*4, 16*32+4*4, 16*32+5*4, 16*32+6*4, 16*32+7*4 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
- 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
- 32*32
-};
-
static GFXDECODE_START( gfx_acommand )
- GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0x1800, 256 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x4_col_2x2_group_packed_msb, 0x1800, 256 )
GFXDECODE_END
TIMER_DEVICE_CALLBACK_MEMBER(acommand_state::acommand_scanline)
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index 9c01b7cfaca..dde1fbe94ba 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -1311,18 +1311,6 @@ static const gfx_layout aerofgt_spritelayout =
128*8
};
-static const gfx_layout spikes91_spritelayout =
-{
- 16,16,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 },
- { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
- 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
- 16*16
-};
-
static const gfx_layout aerfboot_spritelayout =
@@ -1390,7 +1378,7 @@ GFXDECODE_END
static GFXDECODE_START( gfx_spikes91 )
GFXDECODE_ENTRY( "gfx1", 0, pspikesb_charlayout, 0, 64 ) /* colors 0-1023 in 8 banks */
- GFXDECODE_ENTRY( "gfx2", 0, spikes91_spritelayout, 1024, 64 ) /* colors 1024-2047 in 4 banks */
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_planar, 1024, 64 ) /* colors 1024-2047 in 4 banks */
GFXDECODE_END
static GFXDECODE_START( gfx_kickball )
diff --git a/src/mame/drivers/akkaarrh.cpp b/src/mame/drivers/akkaarrh.cpp
index daec390cb82..863107568a0 100644
--- a/src/mame/drivers/akkaarrh.cpp
+++ b/src/mame/drivers/akkaarrh.cpp
@@ -359,31 +359,9 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout pflayout =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-static const gfx_layout spritelayout =
-{
- 16,16,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
- { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
- 16*16
-};
-
static GFXDECODE_START( gfx_akkaarrh )
- GFXDECODE_ENTRY( "gfx1", 0x0000, pflayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0x0000, spritelayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, gfx_8x8x4_planar, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0x0000, gfx_16x16x4_planar, 0, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp
index e7cba15d536..28f85df65de 100644
--- a/src/mame/drivers/angelkds.cpp
+++ b/src/mame/drivers/angelkds.cpp
@@ -454,18 +454,6 @@ all the 8x8 tiles are in one format, the 16x16 sprites in another
*/
-static const gfx_layout angelkds_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 0, 4, 8, 12, 16, 20, 24, 28 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*32
-};
-
-
static const gfx_layout angelkds_spritelayout =
{
16,16,
@@ -478,9 +466,9 @@ static const gfx_layout angelkds_spritelayout =
};
static GFXDECODE_START( gfx_angelkds )
- GFXDECODE_ENTRY( "gfx1", 0, angelkds_charlayout, 0x30, 1 )
- GFXDECODE_ENTRY( "gfx3", 0, angelkds_charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx4", 0, angelkds_charlayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0x30, 1 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x4_packed_msb, 0, 16 )
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x4_packed_msb, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, angelkds_spritelayout, 0x20, 0x0d )
GFXDECODE_END
diff --git a/src/mame/drivers/arcadecl.cpp b/src/mame/drivers/arcadecl.cpp
index 1743cce3745..dc7ecc5c9ae 100644
--- a/src/mame/drivers/arcadecl.cpp
+++ b/src/mame/drivers/arcadecl.cpp
@@ -290,20 +290,8 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout molayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
-
static GFXDECODE_START( gfx_arcadecl )
- GFXDECODE_ENTRY( "gfx1", 0, molayout, 256, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 256, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp
index 507c6a9395b..a00a7ed7c04 100644
--- a/src/mame/drivers/atarig1.cpp
+++ b/src/mame/drivers/atarig1.cpp
@@ -289,21 +289,10 @@ static const gfx_layout pftoplayout =
8*8
};
-static const gfx_layout anlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,32) },
- 32*8
-};
-
static GFXDECODE_START( gfx_atarig1 )
GFXDECODE_ENTRY( "gfx1", 0, pflayout, 0x300, 8 )
- GFXDECODE_ENTRY( "gfx2", 0, anlayout, 0x100, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x100, 16 )
GFXDECODE_ENTRY( "gfx1", 0, pftoplayout, 0x300, 8 )
GFXDECODE_END
diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp
index 2a17942f426..a23009e6c8f 100644
--- a/src/mame/drivers/atarig42.cpp
+++ b/src/mame/drivers/atarig42.cpp
@@ -495,20 +495,9 @@ static const gfx_layout pftoplayout =
16*8
};
-static const gfx_layout anlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 0, 4, 8, 12, 16, 20, 24, 28 },
- { 0*8, 4*8, 8*8, 12*8, 16*8, 20*8, 24*8, 28*8 },
- 32*8
-};
-
static GFXDECODE_START( gfx_atarig42 )
GFXDECODE_ENTRY( "gfx1", 0, pflayout, 0x000, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, anlayout, 0x000, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x000, 16 )
GFXDECODE_ENTRY( "gfx1", 0, pftoplayout, 0x000, 64 )
GFXDECODE_END
diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp
index ea8f845c18d..38132e9b1ef 100644
--- a/src/mame/drivers/atarigt.cpp
+++ b/src/mame/drivers/atarigt.cpp
@@ -787,21 +787,9 @@ static const gfx_layout pftoplayout =
};
-static const gfx_layout anlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 32*8
-};
-
-
static GFXDECODE_START( gfx_atarigt )
GFXDECODE_ENTRY( "gfx1", 0, pflayout, 0x000, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, anlayout, 0x000, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x000, 16 )
GFXDECODE_ENTRY( "gfx1", 0, pftoplayout, 0x000, 64 )
GFXDECODE_END
diff --git a/src/mame/drivers/baraduke.cpp b/src/mame/drivers/baraduke.cpp
index 093e77128a8..a675a62f03f 100644
--- a/src/mame/drivers/baraduke.cpp
+++ b/src/mame/drivers/baraduke.cpp
@@ -336,24 +336,11 @@ static const gfx_layout tile_layout =
16*8
};
-static const gfx_layout spritelayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 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 },
- { 8*8*0, 8*8*1, 8*8*2, 8*8*3, 8*8*4, 8*8*5, 8*8*6, 8*8*7,
- 8*8*8, 8*8*9, 8*8*10, 8*8*11, 8*8*12, 8*8*13, 8*8*14, 8*8*15 },
- 128*8
-};
-
static GFXDECODE_START( gfx_baraduke )
- GFXDECODE_ENTRY( "gfx1", 0, text_layout, 0, 512 )
- GFXDECODE_ENTRY( "gfx2", 0x0000, tile_layout, 0, 256 )
- GFXDECODE_ENTRY( "gfx2", 0x4000, tile_layout, 0, 256 )
- GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0, 128 )
+ GFXDECODE_ENTRY( "gfx1", 0, text_layout, 0, 512 )
+ GFXDECODE_ENTRY( "gfx2", 0x0000, tile_layout, 0, 256 )
+ GFXDECODE_ENTRY( "gfx2", 0x4000, tile_layout, 0, 256 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_16x16x4_packed_msb, 0, 128 )
GFXDECODE_END
diff --git a/src/mame/drivers/battlex.cpp b/src/mame/drivers/battlex.cpp
index d1aab0ccce0..3679d83dc0c 100644
--- a/src/mame/drivers/battlex.cpp
+++ b/src/mame/drivers/battlex.cpp
@@ -238,17 +238,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout battlex_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 0, 4, 8, 12, 16, 20, 24, 28 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*8*4
-};
-
static const gfx_layout battlex_spritelayout =
{
16,16,
@@ -263,8 +252,8 @@ static const gfx_layout battlex_spritelayout =
};
static GFXDECODE_START( gfx_battlex )
- GFXDECODE_ENTRY( "gfx1", 0, battlex_charlayout, 64, 8 )
- GFXDECODE_ENTRY( "gfx2", 0, battlex_spritelayout, 0, 8 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 64, 8 )
+ GFXDECODE_ENTRY( "gfx2", 0, battlex_spritelayout, 0, 8 )
GFXDECODE_END
diff --git a/src/mame/drivers/bbusters.cpp b/src/mame/drivers/bbusters.cpp
index 47ff891ef19..b4ecd9d8394 100644
--- a/src/mame/drivers/bbusters.cpp
+++ b/src/mame/drivers/bbusters.cpp
@@ -463,18 +463,6 @@ INPUT_PORTS_END
/******************************************************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 32*8
-};
-
-
static const gfx_layout tilelayout =
{
16,16, /* 16*16 sprites */
@@ -487,7 +475,7 @@ static const gfx_layout tilelayout =
};
static GFXDECODE_START( gfx_bbusters )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout, 0, 16 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_msb, 0, 16 )
GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 768, 16 )
GFXDECODE_ENTRY( "gfx5", 0, tilelayout, 1024+256, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp
index 4ccf0bfa03d..93caecd59e2 100644
--- a/src/mame/drivers/btime.cpp
+++ b/src/mame/drivers/btime.cpp
@@ -1130,17 +1130,6 @@ static INPUT_PORTS_START( sdtennis )
// and the coinage DIP switches are ignored in this case
INPUT_PORTS_END
-static const gfx_layout tile8layout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static const gfx_layout disco_tile8layout =
{
8,8,
@@ -1187,32 +1176,32 @@ static const gfx_layout bnj_tile16layout =
};
static GFXDECODE_START( gfx_btime )
- GFXDECODE_ENTRY( "gfx1", 0, tile8layout, 0, 1 ) /* char set #1 */
- GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
- GFXDECODE_ENTRY( "gfx2", 0, tile16layout, 8, 1 ) /* background tiles */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1 ) /* char set #1 */
+ GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx2", 0, tile16layout, 8, 1 ) /* background tiles */
GFXDECODE_END
static GFXDECODE_START( gfx_cookrace )
- GFXDECODE_ENTRY( "gfx1", 0, tile8layout, 0, 1 ) /* char set #1 */
- GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
- GFXDECODE_ENTRY( "gfx2", 0, tile8layout, 8, 1 ) /* background tiles */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1 ) /* char set #1 */
+ GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 8, 1 ) /* background tiles */
GFXDECODE_END
static GFXDECODE_START( gfx_lnc )
- GFXDECODE_ENTRY( "gfx1", 0, tile8layout, 0, 1 ) /* char set #1 */
- GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1 ) /* char set #1 */
+ GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
GFXDECODE_END
static GFXDECODE_START( gfx_bnj )
- GFXDECODE_ENTRY( "gfx1", 0, tile8layout, 0, 1 ) /* char set #1 */
- GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
- GFXDECODE_ENTRY( "gfx2", 0, bnj_tile16layout,8, 1 ) /* background tiles */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1 ) /* char set #1 */
+ GFXDECODE_ENTRY( "gfx1", 0, tile16layout, 0, 1 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx2", 0, bnj_tile16layout, 8, 1 ) /* background tiles */
GFXDECODE_END
static GFXDECODE_START( gfx_zoar )
- GFXDECODE_ENTRY( "gfx1", 0, tile8layout, 0, 8 ) /* char set #1 */
- GFXDECODE_ENTRY( "gfx3", 0, tile16layout, 0, 8 ) /* sprites */
- GFXDECODE_ENTRY( "gfx2", 0, tile16layout, 0, 8 ) /* background tiles */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 8 ) /* char set #1 */
+ GFXDECODE_ENTRY( "gfx3", 0, tile16layout, 0, 8 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx2", 0, tile16layout, 0, 8 ) /* background tiles */
GFXDECODE_END
static GFXDECODE_START( gfx_disco )
diff --git a/src/mame/drivers/carpolo.cpp b/src/mame/drivers/carpolo.cpp
index 3d878d9abc6..a36b6d7b7b4 100644
--- a/src/mame/drivers/carpolo.cpp
+++ b/src/mame/drivers/carpolo.cpp
@@ -208,21 +208,10 @@ static const gfx_layout goallayout =
0
};
-static const gfx_layout alphalayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static GFXDECODE_START( gfx_carpolo )
GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 12 )
GFXDECODE_ENTRY( "gfx2", 0, goallayout, 12*2, 2 )
- GFXDECODE_ENTRY( "gfx3", 0, alphalayout, 12*2+2*16, 4 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x1, 12*2+2*16, 4 )
GFXDECODE_END
/*************************************
diff --git a/src/mame/drivers/centiped.cpp b/src/mame/drivers/centiped.cpp
index f592a920d52..af742873ef4 100644
--- a/src/mame/drivers/centiped.cpp
+++ b/src/mame/drivers/centiped.cpp
@@ -1719,17 +1719,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,2),
- 2,
- { RGN_FRAC(1,2), 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
8,16,
@@ -1743,13 +1732,13 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_centiped )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 4, 4*4*4 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar, 0, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 4, 4*4*4 )
GFXDECODE_END
static GFXDECODE_START( gfx_milliped )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 4*4, 4*4*4*4 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar, 0, 4 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 4*4, 4*4*4*4 )
GFXDECODE_END
diff --git a/src/mame/drivers/cop01.cpp b/src/mame/drivers/cop01.cpp
index e3ab4f4a5f8..7676a3bb2d6 100644
--- a/src/mame/drivers/cop01.cpp
+++ b/src/mame/drivers/cop01.cpp
@@ -376,17 +376,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout tilelayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 4+8*0, 0+8*0, 4+8*1, 0+8*1, 4+8*2, 0+8*2, 4+8*3, 0+8*3 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -407,8 +396,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_cop01 )
- GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 16, 8 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 1 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_lsb, 16, 8 )
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 16+8*16, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp
index 648065506c9..a49b0b80426 100644
--- a/src/mame/drivers/crshrace.cpp
+++ b/src/mame/drivers/crshrace.cpp
@@ -368,23 +368,10 @@ static const gfx_layout tilelayout =
128*8
};
-static const gfx_layout spritelayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 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*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_crshrace )
- GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 1 )
- GFXDECODE_ENTRY( "tiles", 0, tilelayout, 256, 16 )
- GFXDECODE_ENTRY( "sprites", 0, spritelayout, 512, 32 )
+ GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 1 )
+ GFXDECODE_ENTRY( "tiles", 0, tilelayout, 256, 16 )
+ GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 512, 32 )
GFXDECODE_END
diff --git a/src/mame/drivers/cybstorm.cpp b/src/mame/drivers/cybstorm.cpp
index dbd7318286c..b447a34dc07 100644
--- a/src/mame/drivers/cybstorm.cpp
+++ b/src/mame/drivers/cybstorm.cpp
@@ -216,22 +216,10 @@ static const gfx_layout pflayout =
};
-static const gfx_layout molayout =
-{
- 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) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static GFXDECODE_START( gfx_cybstorm )
- GFXDECODE_ENTRY( "gfx2", 0, pflayout, 0, 16 ) /* sprites & playfield */
- GFXDECODE_ENTRY( "gfx3", 0, molayout, 4096, 64 ) /* sprites & playfield */
- GFXDECODE_ENTRY( "gfx1", 0, anlayout, 16384, 64 ) /* characters 8x8 */
+ GFXDECODE_ENTRY( "gfx2", 0, pflayout, 0, 16 ) /* sprites & playfield */
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x6_planar, 4096, 64 ) /* sprites & playfield */
+ GFXDECODE_ENTRY( "gfx1", 0, anlayout, 16384, 64 ) /* characters 8x8 */
GFXDECODE_END
diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp
index 1324361f58a..5fd87e2e704 100644
--- a/src/mame/drivers/dblcrown.cpp
+++ b/src/mame/drivers/dblcrown.cpp
@@ -501,17 +501,6 @@ static INPUT_PORTS_START( dblcrown )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-static const gfx_layout char_8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4,0, 12,8, 20,16, 28,24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8
-};
-
static const gfx_layout char_16x16_layout =
{
16,16,
@@ -526,7 +515,7 @@ static const gfx_layout char_16x16_layout =
static GFXDECODE_START( gfx_dblcrown )
#ifdef DEBUG_VRAM
- GFXDECODE_ENTRY( "vram", 0, char_8x8_layout, 0, 0x10 )
+ GFXDECODE_ENTRY( "vram", 0, gfx_8x8x4_packed_lsb, 0, 0x10 )
#endif
GFXDECODE_ENTRY( "gfx1", 0, char_16x16_layout, 0, 0x10 )
GFXDECODE_END
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index b41dabaf041..03de25d6d6d 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -291,22 +291,9 @@ INPUT_PORTS_END
/**********************************************************************************/
-static const gfx_layout bglayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 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_dbz )
- GFXDECODE_ENTRY( "gfx3", 0, bglayout, 0, 512 )
- GFXDECODE_ENTRY( "gfx4", 0, bglayout, 0, 512 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_16x16x4_packed_msb, 0, 512 )
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_16x16x4_packed_msb, 0, 512 )
GFXDECODE_END
/**********************************************************************************/
diff --git a/src/mame/drivers/deniam.cpp b/src/mame/drivers/deniam.cpp
index e775f218a68..6ce91362ad2 100644
--- a/src/mame/drivers/deniam.cpp
+++ b/src/mame/drivers/deniam.cpp
@@ -200,21 +200,9 @@ INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static GFXDECODE_START( gfx_deniam )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* colors 0-1023 */
- /* sprites use colors 1024-2047 */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 128 ) /* colors 0-1023 */
+ /* sprites use colors 1024-2047 */
GFXDECODE_END
diff --git a/src/mame/drivers/discoboy.cpp b/src/mame/drivers/discoboy.cpp
index d05be663349..58a04782acd 100644
--- a/src/mame/drivers/discoboy.cpp
+++ b/src/mame/drivers/discoboy.cpp
@@ -31,8 +31,8 @@ PROGRAM NO-93-01-14-0024
+------------------------------------------+
Notes:
- Zilog Z0840004PSC (Z80 cpu, main program CPU)
- Goldstar Z8400B PS (Z80 cpu, sound CPU)
+ Zilog Z0840004PSC (Z80 CPU, main program CPU)
+ Goldstar Z8400B PS (Z80 CPU, sound CPU)
Yamaha YM3014/YM3812 (rebadged as 83142/5A12)
OKI M5205
TI TPC1020AFN-084C
@@ -42,17 +42,30 @@ Notes:
#include "emu.h"
+
#include "cpu/z80/z80.h"
#include "machine/74157.h"
-#include "machine/bankdev.h"
#include "machine/gen_latch.h"
#include "sound/msm5205.h"
#include "sound/ymopl.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+// configurable logging
+#define LOG_UNKWRITE (1U << 1)
+
+//#define VERBOSE (LOG_GENERAL | LOG_UNKWRITE)
+
+#include "logmacro.h"
+
+#define LOGUNKWRITE(...) LOGMASKED(LOG_UNKWRITE, __VA_ARGS__)
+
+
+namespace {
+
class discoboy_state : public driver_device
{
public:
@@ -64,144 +77,119 @@ public:
m_adpcm_select(*this, "adpcm_select"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
- m_soundlatch(*this, "soundlatch"),
m_ram_att(*this, "att_ram"),
- m_rambank1(*this, "rambank1"),
- m_ram_1(*this, "ram_1"),
- m_ram_2(*this, "ram_2") { }
+ m_palram(*this, "palram_%u", 1U, 0x800U, ENDIANNESS_LITTLE),
+ m_spriteram(*this, "spriteram", 0x1000U, ENDIANNESS_LITTLE),
+ m_tileram(*this, "tileram", 0x1000U, ENDIANNESS_LITTLE),
+ m_main_rombank(*this, "main_rombank"),
+ m_soundbank(*this, "soundbank"),
+ m_palrambank(*this, "palrambank"),
+ m_spritetilebank(*this, "spritetilebank") { }
void discoboy(machine_config &config);
- void init_discoboy();
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
private:
- /* video-related */
- uint8_t m_gfxbank = 0;
- uint8_t m_port_00 = 0;
+ // video-related
+ uint8_t m_gfxbank = 0;
+ uint8_t m_port_00 = 0;
- bool m_toggle = false;
+ bool m_toggle = false;
- /* devices */
+ // devices
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<msm5205_device> m_msm;
required_device<ls157_device> m_adpcm_select;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- required_device<generic_latch_8_device> m_soundlatch;
- /* memory */
+ // memory
required_shared_ptr<uint8_t> m_ram_att;
- required_device<address_map_bank_device> m_rambank1;
- required_shared_ptr<uint8_t> m_ram_1;
- required_shared_ptr<uint8_t> m_ram_2;
- uint8_t m_ram_3[0x1000];
- uint8_t m_ram_4[0x1000];
- void rambank_select_w(uint8_t data);
+ memory_share_array_creator<uint8_t, 2> m_palram;
+ memory_share_creator<uint8_t> m_spriteram;
+ memory_share_creator<uint8_t> m_tileram;
+ required_memory_bank m_main_rombank;
+ required_memory_bank m_soundbank;
+ required_memory_bank m_palrambank;
+ required_memory_bank m_spritetilebank;
+
+ void palrambank_select_w(uint8_t data);
void port_00_w(uint8_t data);
void port_01_w(uint8_t data);
void port_06_w(uint8_t data);
- uint8_t rambank2_r(offs_t offset);
- void rambank2_w(offs_t offset, uint8_t data);
uint8_t port_06_r();
- void yunsung8_sound_bankswitch_w(uint8_t data);
- virtual void machine_start() override;
- virtual void machine_reset() override;
+ void sound_bankswitch_w(uint8_t data);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
- DECLARE_WRITE_LINE_MEMBER(yunsung8_adpcm_int);
- void discoboy_map(address_map &map);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(adpcm_int);
+ void main_prg_map(address_map &map);
void io_map(address_map &map);
- void rambank1_map(address_map &map);
- void sound_map(address_map &map);
+ void sound_prg_map(address_map &map);
};
-void discoboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
+void discoboy_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int flipscreen = 0;
- int offs, sx, sy;
- for (offs = 0x1000 - 0x40; offs >= 0; offs -= 0x20)
+ for (int offs = 0x1000 - 0x40; offs >= 0; offs -= 0x20)
{
- int code = m_ram_4[offs];
- int attr = m_ram_4[offs + 1];
+ int code = m_spriteram[offs];
+ int attr = m_spriteram[offs + 1];
int color = attr & 0x0f;
- sx = m_ram_4[offs + 3] + ((attr & 0x10) << 4);
- sy = ((m_ram_4[offs + 2] + 8) & 0xff) - 8;
+ int sx = m_spriteram[offs + 3] + ((attr & 0x10) << 4);
+ int sy = ((m_spriteram[offs + 2] + 8) & 0xff) - 8;
code += (attr & 0xe0) << 3;
if (code >= 0x400)
{
- if ((m_gfxbank & 0x30) == 0x00)
+ switch (m_gfxbank & 0x30)
{
- code = 0x400 + (code & 0x3ff);
- }
- else if ((m_gfxbank & 0x30) == 0x10)
- {
- code = 0x400 + (code & 0x3ff) + 0x400;
- }
- else if ((m_gfxbank & 0x30) == 0x20)
- {
- code = 0x400 + (code & 0x3ff) + 0x800;
- }
- else if ((m_gfxbank & 0x30) == 0x30)
- {
- code = 0x400 + (code & 0x3ff) + 0xc00;
- }
- else
- {
- code = machine().rand();
+ case 0x00: code = 0x400 + (code & 0x3ff); break;
+ case 0x10: code = 0x400 + (code & 0x3ff) + 0x400; break;
+ case 0x20: code = 0x400 + (code & 0x3ff) + 0x800; break;
+ case 0x30: code = 0x400 + (code & 0x3ff) + 0xc00; break;
+ default: code = machine().rand();
}
}
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
+ m_gfxdecode->gfx(0)->transpen(bitmap, cliprect,
code,
color,
- flipscreen,0,
- sx,sy,15);
+ flipscreen, 0,
+ sx, sy, 15);
}
}
uint32_t discoboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- uint16_t x, y;
- int i;
int count = 0;
- for (i = 0; i < 0x800; i += 2)
- {
- uint16_t pal;
- int r, g, b;
- pal = m_ram_1[i] | (m_ram_1[i + 1] << 8);
-
- b = ((pal >> 0) & 0xf) << 4;
- g = ((pal >> 4) & 0xf) << 4;
- r = ((pal >> 8) & 0xf) << 4;
-
- m_palette->set_pen_color(i / 2, rgb_t(r, g, b));
- }
-
- for (i = 0; i < 0x800; i += 2)
+ for (int j = 0; j < 2; j++)
{
- uint16_t pal;
- int r,g,b;
- pal = m_ram_2[i] | (m_ram_2[i + 1] << 8);
+ for (int i = 0; i < 0x800; i += 2)
+ {
+ uint16_t pal = m_palram[j][i] | (m_palram[j][i + 1] << 8);
- b = ((pal >> 0) & 0xf) << 4;
- g = ((pal >> 4) & 0xf) << 4;
- r = ((pal >> 8) & 0xf) << 4;
+ int b = ((pal >> 0) & 0xf) << 4;
+ int g = ((pal >> 4) & 0xf) << 4;
+ int r = ((pal >> 8) & 0xf) << 4;
- m_palette->set_pen_color((i / 2) + 0x400, rgb_t(r, g, b));
+ m_palette->set_pen_color((i / 2) + j * 0x400, rgb_t(r, g, b));
+ }
}
bitmap.fill(0x3ff, cliprect);
- for (y = 0; y < 32; y++)
+ for (uint8_t y = 0; y < 32; y++)
{
- for (x = 0; x < 64; x++)
+ for (uint8_t x = 0; x < 64; x++)
{
- uint16_t tileno = m_ram_3[count] | (m_ram_3[count + 1] << 8);
+ uint16_t tileno = m_tileram[count] | (m_tileram[count + 1] << 8);
if (tileno > 0x2000)
{
@@ -223,78 +211,45 @@ uint32_t discoboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
-void discoboy_state::rambank_select_w(uint8_t data)
+void discoboy_state::palrambank_select_w(uint8_t data)
{
- if (data & 0x20)
- m_rambank1->set_bank(1);
- else
- m_rambank1->set_bank(0);
+ m_palrambank->set_entry(BIT(data, 5));
- if (data &= 0x83) logerror("rambank_select_w !!!!!");
+ if (data &= 0x83) LOGUNKWRITE("palrambank_select_w !!!!! %02x\n", data);
}
void discoboy_state::port_00_w(uint8_t data)
{
- if (data & 0xfe) logerror("unk port_00_w %02x\n",data);
- m_port_00 = data;
+ if (data & 0xfe) LOGUNKWRITE("unk port_00_w %02x\n", data);
+ m_spritetilebank->set_entry(BIT(data, 0));
}
void discoboy_state::port_01_w(uint8_t data)
{
// 00 10 20 30 during gameplay 1,2,3 other times?? title screen bit 0x40 toggle
- //printf("unk port_01_w %02x\n",data);
+ LOGUNKWRITE("unk port_01_w %02x\n", data);
// discoboy gfxbank
m_gfxbank = data & 0xf0;
- membank("mainbank")->set_entry(data & 0x07);
+ m_main_rombank->set_entry(data & 0x07);
}
void discoboy_state::port_06_w(uint8_t data)
{
- //printf("unk discoboy_port_06_w %02x\n",data);
- if (data != 0) logerror("port 06!!!! %02x\n",data);
-}
-
-uint8_t discoboy_state::rambank2_r(offs_t offset)
-{
- if (m_port_00 == 0x00)
- return m_ram_3[offset];
- else if (m_port_00 == 0x01)
- return m_ram_4[offset];
- else
- printf("unk rb2_r\n");
-
- return machine().rand();
-}
-
-void discoboy_state::rambank2_w(offs_t offset, uint8_t data)
-{
- if (m_port_00 == 0x00)
- m_ram_3[offset] = data;
- else if (m_port_00 == 0x01)
- m_ram_4[offset] = data;
- else
- printf("unk rb2_w\n");
+ if (data != 0) LOGUNKWRITE("port 06!!!! %02x\n",data);
}
-void discoboy_state::discoboy_map(address_map &map)
+void discoboy_state::main_prg_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("mainbank");
- map(0xc000, 0xc7ff).m(m_rambank1, FUNC(address_map_bank_device::amap8));
- map(0xc800, 0xcfff).ram().share("att_ram");
- map(0xd000, 0xdfff).rw(FUNC(discoboy_state::rambank2_r), FUNC(discoboy_state::rambank2_w));
+ map(0x8000, 0xbfff).bankr(m_main_rombank);
+ map(0xc000, 0xc7ff).bankrw(m_palrambank);
+ map(0xc800, 0xcfff).ram().share(m_ram_att);
+ map(0xd000, 0xdfff).bankrw(m_spritetilebank);
map(0xe000, 0xefff).ram();
map(0xf000, 0xffff).ram();
}
-void discoboy_state::rambank1_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram().share("ram_1");
- map(0x0800, 0x0fff).ram().share("ram_2");
-}
-
-
uint8_t discoboy_state::port_06_r()
{
return 0x00;
@@ -306,34 +261,34 @@ void discoboy_state::io_map(address_map &map)
map(0x00, 0x00).portr("DSWA").w(FUNC(discoboy_state::port_00_w));
map(0x01, 0x01).portr("SYSTEM").w(FUNC(discoboy_state::port_01_w));
map(0x02, 0x02).portr("P1");
- map(0x03, 0x03).portr("P2").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x03, 0x03).portr("P2").w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x04, 0x04).portr("DSWB");
map(0x06, 0x06).rw(FUNC(discoboy_state::port_06_r), FUNC(discoboy_state::port_06_w)); // ???
- map(0x07, 0x07).w(FUNC(discoboy_state::rambank_select_w)); // 0x20 is palette bank bit.. others?
+ map(0x07, 0x07).w(FUNC(discoboy_state::palrambank_select_w)); // 0x20 is palette bank bit.. others?
}
-/* Sound */
+// Sound
-void discoboy_state::yunsung8_sound_bankswitch_w(uint8_t data)
+void discoboy_state::sound_bankswitch_w(uint8_t data)
{
- /* Note: this is bit 5 on yunsung8.cpp */
+ // Note: this is bit 5 on yunsung8.cpp
m_msm->reset_w((data & 0x08) >> 3);
- membank("sndbank")->set_entry(data & 0x07);
+ m_soundbank->set_entry(data & 0x07);
if (data != (data & (~0x0f)))
- logerror("%s: Bank %02X\n", machine().describe_context(), data);
+ LOGUNKWRITE("%s: Bank %02X\n", machine().describe_context(), data);
}
-void discoboy_state::sound_map(address_map &map)
+void discoboy_state::sound_prg_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("sndbank");
- map(0xe000, 0xe000).w(FUNC(discoboy_state::yunsung8_sound_bankswitch_w));
+ map(0x8000, 0xbfff).bankr(m_soundbank);
+ map(0xe000, 0xe000).w(FUNC(discoboy_state::sound_bankswitch_w));
map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write));
map(0xf000, 0xf7ff).ram();
- map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xf800, 0xf800).r("soundlatch", FUNC(generic_latch_8_device::read));
}
@@ -428,13 +383,27 @@ static const gfx_layout tiles8x8_layout2 =
};
static GFXDECODE_START( gfx_discoboy )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x000, 128 )
+ GFXDECODE_ENTRY( "sprites", 0, tiles8x8_layout, 0x000, 128 )
GFXDECODE_ENTRY( "bgtiles", 0, tiles8x8_layout2, 0x000, 128 )
GFXDECODE_ENTRY( "bgtiles_bank", 0, tiles8x8_layout2, 0x000, 128 )
GFXDECODE_END
void discoboy_state::machine_start()
{
+ uint8_t *rom = memregion("maincpu")->base();
+ uint8_t *audio = memregion("audiocpu")->base();
+
+ m_main_rombank->configure_entries(0, 8, &rom[0x10000], 0x4000);
+ m_main_rombank->set_entry(0);
+ m_soundbank->configure_entries(0, 8, &audio[0x00000], 0x4000);
+ m_soundbank->set_entry(0);
+
+ m_palrambank->configure_entry(0, m_palram[0]);
+ m_palrambank->configure_entry(1, m_palram[1]);
+
+ m_spritetilebank->configure_entry(0, m_tileram);
+ m_spritetilebank->configure_entry(1, m_spriteram);
+
save_item(NAME(m_port_00));
save_item(NAME(m_gfxbank));
save_item(NAME(m_toggle));
@@ -447,7 +416,7 @@ void discoboy_state::machine_reset()
m_toggle = false;
}
-WRITE_LINE_MEMBER(discoboy_state::yunsung8_adpcm_int)
+WRITE_LINE_MEMBER(discoboy_state::adpcm_int)
{
if (!state)
return;
@@ -459,18 +428,16 @@ WRITE_LINE_MEMBER(discoboy_state::yunsung8_adpcm_int)
void discoboy_state::discoboy(machine_config &config)
{
- /* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz? */
- m_maincpu->set_addrmap(AS_PROGRAM, &discoboy_state::discoboy_map);
+ // basic machine hardware
+ Z80(config, m_maincpu, XTAL(12'000'000) / 2); // 6 MHz?
+ m_maincpu->set_addrmap(AS_PROGRAM, &discoboy_state::main_prg_map);
m_maincpu->set_addrmap(AS_IO, &discoboy_state::io_map);
m_maincpu->set_vblank_int("screen", FUNC(discoboy_state::irq0_line_hold));
- Z80(config, m_audiocpu, XTAL(10'000'000)/2); /* 5 MHz? */
- m_audiocpu->set_addrmap(AS_PROGRAM, &discoboy_state::sound_map);
+ Z80(config, m_audiocpu, XTAL(10'000'000) / 2); // 5 MHz?
+ m_audiocpu->set_addrmap(AS_PROGRAM, &discoboy_state::sound_prg_map);
- ADDRESS_MAP_BANK(config, "rambank1").set_map(&discoboy_state::rambank1_map).set_options(ENDIANNESS_BIG, 8, 13, 0x800);
-
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@@ -482,14 +449,13 @@ void discoboy_state::discoboy(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_discoboy);
PALETTE(config, m_palette).set_entries(0x1000);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- GENERIC_LATCH_8(config, m_soundlatch);
- m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
+ GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
- ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(10'000'000)/4)); /* 2.5 MHz? */
+ ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(10'000'000) / 4)); // 2.5 MHz?
ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.6);
ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.6);
@@ -497,8 +463,8 @@ void discoboy_state::discoboy(machine_config &config)
m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
MSM5205(config, m_msm, XTAL(400'000));
- m_msm->vck_legacy_callback().set(FUNC(discoboy_state::yunsung8_adpcm_int)); /* interrupt function */
- m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz, 4 Bits */
+ m_msm->vck_legacy_callback().set(FUNC(discoboy_state::adpcm_int)); // interrupt function
+ m_msm->set_prescaler_selector(msm5205_device::S96_4B); // 4KHz, 4 Bits
m_msm->add_route(ALL_OUTPUTS, "lspeaker", 0.80);
m_msm->add_route(ALL_OUTPUTS, "rspeaker", 0.80);
}
@@ -513,7 +479,7 @@ ROM_START( discoboy )
ROM_LOAD( "2.u28", 0x00000, 0x10000, CRC(7c2ed174) SHA1(ace209dc4cc7a4ffca062842defd84cefc5b10d2) )
ROM_LOAD( "1.u45", 0x10000, 0x10000, CRC(c266c6df) SHA1(f76e38ded43f56a486cf6569c679ddb57a4165fb) )
- ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x100000, "sprites", ROMREGION_INVERT )
ROM_LOAD( "5.u94", 0x00000, 0x10000, CRC(dbd20836) SHA1(d97651626b1dc16b93f8aed28bac19fd177e626f) )
ROM_LOAD( "6.u124", 0x10000, 0x40000, CRC(e20d41f8) SHA1(792294a34840867072bc484d6f3cae3502c8bc28) )
ROM_LOAD( "7.u95", 0x80000, 0x10000, CRC(1d5617a2) SHA1(6b6bd50c1984748dc8bf6600431d9bb6fe443873) )
@@ -542,7 +508,7 @@ ROM_START( discoboyp ) // all ROMs had PROMAT stickers but copyright in the game
ROM_LOAD( "discob.u28", 0x00000, 0x10000, CRC(7c2ed174) SHA1(ace209dc4cc7a4ffca062842defd84cefc5b10d2) )
ROM_LOAD( "discob.u45", 0x10000, 0x10000, CRC(c266c6df) SHA1(f76e38ded43f56a486cf6569c679ddb57a4165fb) )
- ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT )
+ ROM_REGION( 0x100000, "sprites", ROMREGION_INVERT )
ROM_LOAD( "discob.u94", 0x00000, 0x10000, CRC(c436f1e5) SHA1(511e23b85f1b4fc732bd9648c0582848c20e6378) )
ROM_LOAD( "discob.u124", 0x10000, 0x40000, CRC(0b0bf653) SHA1(ce609e9ee270eda6e74612ed5334fd6c3c81ef18) )
ROM_LOAD( "discob.u95", 0x80000, 0x10000, CRC(ddea540e) SHA1(b69b94409bb15174f7780c637b183a2563c3d6c3) )
@@ -561,23 +527,8 @@ ROM_START( discoboyp ) // all ROMs had PROMAT stickers but copyright in the game
ROM_LOAD( "discob.u49", 0x0c0000, 0x40000, CRC(9f884db4) SHA1(fd916b0ac54961bbd9b3f23d3ee5d35d747cbf17) )
ROM_END
-void discoboy_state::init_discoboy()
-{
- uint8_t *ROM = memregion("maincpu")->base();
- uint8_t *AUDIO = memregion("audiocpu")->base();
-
- memset(m_ram_3, 0, sizeof(m_ram_3));
- memset(m_ram_4, 0, sizeof(m_ram_4));
-
- save_item(NAME(m_ram_3));
- save_item(NAME(m_ram_4));
-
- membank("mainbank")->configure_entries(0, 8, &ROM[0x10000], 0x4000);
- membank("mainbank")->set_entry(0);
- membank("sndbank")->configure_entries(0, 8, &AUDIO[0x00000], 0x4000);
- membank("sndbank")->set_entry(0);
-}
+} // anonymous namespace
-GAME( 1993, discoboy, 0, discoboy, discoboy, discoboy_state, init_discoboy, ROT270, "Soft Art Co.", "Disco Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1993, discoboyp, discoboy, discoboy, discoboy, discoboy_state, init_discoboy, ROT270, "Soft Art Co.", "Disco Boy (Promat license?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, discoboy, 0, discoboy, discoboy, discoboy_state, empty_init, ROT270, "Soft Art Co.", "Disco Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, discoboyp, discoboy, discoboy, discoboy, discoboy_state, empty_init, ROT270, "Soft Art Co.", "Disco Boy (Promat license?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/diverboy.cpp b/src/mame/drivers/diverboy.cpp
index 1cc743beea6..01c0510097e 100644
--- a/src/mame/drivers/diverboy.cpp
+++ b/src/mame/drivers/diverboy.cpp
@@ -251,22 +251,9 @@ INPUT_PORTS_END
-static const gfx_layout diverboy_spritelayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4, 0, 12, 8, 20, 16, 28, 24,
- 36, 32, 44, 40, 52, 48, 60, 56 },
- { 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 },
- 16*64
-};
-
static GFXDECODE_START( gfx_diverboy )
- GFXDECODE_ENTRY( "gfx1", 0, diverboy_spritelayout, 0, 4*16 )
- GFXDECODE_ENTRY( "gfx2", 0, diverboy_spritelayout, 0, 4*16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_lsb, 0, 4*16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 0, 4*16 )
GFXDECODE_END
diff --git a/src/mame/drivers/docastle.cpp b/src/mame/drivers/docastle.cpp
index 70bc9ca10e5..bab8511dba6 100644
--- a/src/mame/drivers/docastle.cpp
+++ b/src/mame/drivers/docastle.cpp
@@ -513,17 +513,6 @@ INPUT_PORTS_END
/* Graphics Layouts */
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { STEP8(0,4) },
- { STEP8(0,32) },
- 32*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -538,7 +527,7 @@ static const gfx_layout spritelayout =
/* Graphics Decode Information */
static GFXDECODE_START( gfx_docastle )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0, 64 )
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 32*2 )
GFXDECODE_END
diff --git a/src/mame/drivers/dominob.cpp b/src/mame/drivers/dominob.cpp
index 8284dd506ce..40c99c71b1e 100644
--- a/src/mame/drivers/dominob.cpp
+++ b/src/mame/drivers/dominob.cpp
@@ -269,17 +269,6 @@ static INPUT_PORTS_START( dominob )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3)},
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout bglayout =
{
32,32,
@@ -297,8 +286,8 @@ static const gfx_layout bglayout =
};
static GFXDECODE_START( gfx_dominob )
- GFXDECODE_ENTRY("gfx1", 0, charlayout, 0, 0x20)
- GFXDECODE_ENTRY("gfx2", 0, bglayout, 0x100, 0x10)
+ GFXDECODE_ENTRY("gfx1", 0, gfx_8x8x3_planar, 0, 0x20)
+ GFXDECODE_ENTRY("gfx2", 0, bglayout, 0x100, 0x10)
GFXDECODE_END
diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp
index 1f1dacb3f9b..05e02f09e48 100644
--- a/src/mame/drivers/dooyong.cpp
+++ b/src/mame/drivers/dooyong.cpp
@@ -1340,17 +1340,6 @@ const gfx_layout lastday_charlayout =
8*8*2
};
-const gfx_layout bluehawk_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
const gfx_layout tilelayout =
{
32,32,
@@ -1404,18 +1393,18 @@ GFXDECODE_START( gfx_flytiger )
GFXDECODE_END
GFXDECODE_START( gfx_bluehawk )
- GFXDECODE_ENTRY( "tx", 0, bluehawk_charlayout, 0, 16 )
- GFXDECODE_ENTRY( "sprite", 0, spritelayout, 256, 16 )
- GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16 )
- GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16 )
- GFXDECODE_ENTRY( "fg1", 0, tilelayout, 0, 16 )
+ GFXDECODE_ENTRY( "tx", 0, gfx_8x8x4_packed_msb, 0, 16 )
+ GFXDECODE_ENTRY( "sprite", 0, spritelayout, 256, 16 )
+ GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16 )
+ GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16 )
+ GFXDECODE_ENTRY( "fg1", 0, tilelayout, 0, 16 )
GFXDECODE_END
GFXDECODE_START( gfx_primella )
- GFXDECODE_ENTRY( "tx", 0, bluehawk_charlayout, 0, 16 )
+ GFXDECODE_ENTRY( "tx", 0, gfx_8x8x4_packed_msb, 0, 16 )
/* no sprites */
- GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16 )
- GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16 )
+ GFXDECODE_ENTRY( "bg0", 0, tilelayout, 768, 16 )
+ GFXDECODE_ENTRY( "fg0", 0, tilelayout, 512, 16 )
GFXDECODE_END
GFXDECODE_START( gfx_rshark )
diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp
index a50a0344830..cd5245aff0c 100644
--- a/src/mame/drivers/dreamwld.cpp
+++ b/src/mame/drivers/dreamwld.cpp
@@ -693,20 +693,9 @@ static INPUT_PORTS_START( gaialast )
PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW1:8" )
INPUT_PORTS_END
-static const gfx_layout layout_16x16x4 =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- {STEP4(0,1)},
- {STEP16(0,4)},
- {STEP16(0,4*16)},
- 16*16*4
-};
-
static GFXDECODE_START( gfx_dreamwld )
- GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0x000, 0x40 ) // [0] Sprites
- GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 0x800, 0x48 ) // [1] Layer 0 + 1
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_msb, 0x000, 0x40 ) // [0] Sprites
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_msb, 0x800, 0x48 ) // [1] Layer 0 + 1
GFXDECODE_END
diff --git a/src/mame/drivers/dynadice.cpp b/src/mame/drivers/dynadice.cpp
index 58679e20fa8..b2daa99a8bd 100644
--- a/src/mame/drivers/dynadice.cpp
+++ b/src/mame/drivers/dynadice.cpp
@@ -200,17 +200,6 @@ static INPUT_PORTS_START( dynadice )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout charlayout2 =
{
8,8,
@@ -224,7 +213,7 @@ static const gfx_layout charlayout2 =
static GFXDECODE_START( gfx_dynadice )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 ) /* 1bpp */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 1 ) /* 1bpp */
GFXDECODE_ENTRY( "gfx2", 0, charlayout2, 0, 1 ) /* 3bpp */
GFXDECODE_END
diff --git a/src/mame/drivers/efdt.cpp b/src/mame/drivers/efdt.cpp
index 2da74a9f3ce..2a4c772dd97 100644
--- a/src/mame/drivers/efdt.cpp
+++ b/src/mame/drivers/efdt.cpp
@@ -517,17 +517,6 @@ static const gfx_layout tilelayout3bpp =
8 * 8
};
-static const gfx_layout tilelayout1bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8 * 8
-};
-
/**************************************************
* Graphics Decode Information *
@@ -535,7 +524,7 @@ static const gfx_layout tilelayout1bpp =
static GFXDECODE_START( gfx_efdt )
GFXDECODE_ENTRY( "gfx1", 0, tilelayout3bpp, 0, 256*6 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout1bpp, 0, 256 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x1, 0, 256 )
GFXDECODE_END
diff --git a/src/mame/drivers/elan_eu3a14.cpp b/src/mame/drivers/elan_eu3a14.cpp
index 22ff577244b..45953f54841 100644
--- a/src/mame/drivers/elan_eu3a14.cpp
+++ b/src/mame/drivers/elan_eu3a14.cpp
@@ -726,24 +726,12 @@ static const gfx_layout helper8x8x8_layout =
8 * 8 * 8
};
-static const gfx_layout helper8x8x4_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,8*4) },
- 8 * 8 * 4
-};
-
-
static GFXDECODE_START( gfx_helper )
// dummy standard decodes to see background tiles, not used for drawing
GFXDECODE_ENTRY( "maincpu", 0, helper16x16x8_layout, 0x0, 2 )
GFXDECODE_ENTRY( "maincpu", 0, helper16x16x4_layout, 0x0, 32 )
GFXDECODE_ENTRY( "maincpu", 0, helper8x8x8_layout, 0x0, 2 )
- GFXDECODE_ENTRY( "maincpu", 0, helper8x8x4_layout, 0x0, 32 )
+ GFXDECODE_ENTRY( "maincpu", 0, gfx_8x8x4_packed_msb, 0x0, 32 )
GFXDECODE_END
diff --git a/src/mame/drivers/esh.cpp b/src/mame/drivers/esh.cpp
index 830ffaa4640..615a7fbbdb1 100644
--- a/src/mame/drivers/esh.cpp
+++ b/src/mame/drivers/esh.cpp
@@ -318,20 +318,9 @@ void esh_state::esh_palette(palette_device &palette) const
}
}
-static const gfx_layout esh_gfx_layout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0,1,2,3,4,5,6,7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_esh )
- GFXDECODE_ENTRY("gfx1", 0, esh_gfx_layout, 0x0, 0x20)
- GFXDECODE_ENTRY("gfx2", 0, esh_gfx_layout, 0x0, 0x20)
+ GFXDECODE_ENTRY("gfx1", 0, gfx_8x8x3_planar, 0x0, 0x20)
+ GFXDECODE_ENTRY("gfx2", 0, gfx_8x8x3_planar, 0x0, 0x20)
GFXDECODE_END
INTERRUPT_GEN_MEMBER(esh_state::vblank_callback_esh)
diff --git a/src/mame/drivers/exzisus.cpp b/src/mame/drivers/exzisus.cpp
index 3b0c7bc799b..a76e16eb09e 100644
--- a/src/mame/drivers/exzisus.cpp
+++ b/src/mame/drivers/exzisus.cpp
@@ -29,66 +29,203 @@ System specs :
* The second, later PCB has a single video output and is JAMMA compliant.
TODO:
-- There must be a way for cpu a to stop cpu c, otherwise the RAM check in test
+- There must be a way for CPU a to stop CPU c, otherwise the RAM check in test
mode cannot work. However, the only way I found to do that is making writes
to F404 pulse the reset line, which isn't a common way to handle these things.
****************************************************************************/
#include "emu.h"
-#include "includes/exzisus.h"
-#include "includes/taitoipt.h"
+
#include "audio/taitosnd.h"
+#include "includes/taitoipt.h"
#include "cpu/z80/z80.h"
#include "sound/ymopm.h"
+
+#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+namespace {
+
+class exzisus_state : public driver_device
+{
+public:
+ exzisus_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_cpuc(*this, "cpuc"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
+ m_objectram(*this, "objectram%u", 0U),
+ m_videoram(*this, "videoram%u", 0U),
+ m_sharedram_ac(*this, "sharedram_ac"),
+ m_sharedram_ab(*this, "sharedram_ab"),
+ m_cpubank(*this, "cpubank%u", 0U)
+ { }
+
+ void exzisus(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+private:
+ required_device<cpu_device> m_cpuc;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+
+ required_shared_ptr_array<uint8_t, 2> m_objectram;
+ required_shared_ptr_array<uint8_t, 2> m_videoram;
+ required_shared_ptr<uint8_t> m_sharedram_ac;
+ required_shared_ptr<uint8_t> m_sharedram_ab;
+ required_memory_bank_array<2> m_cpubank;
+
+ template <uint8_t Which> void cpu_bankswitch_w(uint8_t data);
+ void coincounter_w(uint8_t data);
+ void cpuc_reset_w(uint8_t data);
+
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void cpua_map(address_map &map);
+ void cpub_map(address_map &map);
+ void cpuc_map(address_map &map);
+ void sound_map(address_map &map);
+};
+
+
+// video
+
/***************************************************************************
- Memory Handler(s)
+ Video hardware of this hardware is almost similar with "mexico86". So,
+ most routines are derived from mexico86 driver.
+
+***************************************************************************/
+
+/***************************************************************************
+ Screen refresh
***************************************************************************/
-void exzisus_state::cpua_bankswitch_w(uint8_t data)
+uint32_t exzisus_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- membank("cpuabank")->set_entry(data & 0x0f);
- flip_screen_set(data & 0x40);
+ // Is this correct ?
+ bitmap.fill(1023, cliprect);
+
+ // 2 TC0010VCU. TODO: devicify if more drivers use this chip
+ for (int j = 0; j < 2; j++)
+ {
+ int sx = 0;
+
+ for (int offs = 0 ; offs < m_objectram[j].bytes() ; offs += 4)
+ {
+ int height;
+
+ // Skip empty sprites.
+ if ( !(*(uint32_t *)(&m_objectram[j][offs])) )
+ {
+ continue;
+ }
+
+ int gfx_num = m_objectram[j][offs + 1];
+ int gfx_attr = m_objectram[j][offs + 3];
+
+ int gfx_offs;
+ if ((gfx_num & 0x80) == 0) // 16x16 sprites
+ {
+ gfx_offs = ((gfx_num & 0x7f) << 3);
+ height = 2;
+
+ sx = m_objectram[j][offs + 2];
+ sx |= (gfx_attr & 0x40) << 2;
+ }
+ else // tilemaps (each sprite is a 16x256 column)
+ {
+ gfx_offs = ((gfx_num & 0x3f) << 7) + 0x0400;
+ height = 32;
+
+ if (gfx_num & 0x40) // Next column
+ {
+ sx += 16;
+ }
+ else
+ {
+ sx = m_objectram[j][offs + 2];
+ sx |= (gfx_attr & 0x40) << 2;
+ }
+ }
+
+ int sy = 256 - (height << 3) - (m_objectram[j][offs]);
+
+ for (int xc = 0 ; xc < 2 ; xc++)
+ {
+ int goffs = gfx_offs;
+ for (int yc = 0 ; yc < height ; yc++)
+ {
+ int code = (m_videoram[j][goffs + 1] << 8) | m_videoram[j][goffs];
+ int color = (m_videoram[j][goffs + 1] >> 6) | (gfx_attr & 0x0f);
+ int x = (sx + (xc << 3)) & 0xff;
+ int y = (sy + (yc << 3)) & 0xff;
+
+ if (flip_screen())
+ {
+ x = 248 - x;
+ y = 248 - y;
+ }
+
+ m_gfxdecode->gfx(j)->transpen(bitmap, cliprect,
+ code & 0x3fff,
+ color,
+ flip_screen(), flip_screen(),
+ x, y, 15);
+ goffs += 2;
+ }
+ gfx_offs += height << 1;
+ }
+ }
+ }
+ return 0;
}
-void exzisus_state::cpub_bankswitch_w(uint8_t data)
+
+// machine
+
+/***************************************************************************
+
+ Memory Handler(s)
+
+***************************************************************************/
+
+template <uint8_t Which>
+void exzisus_state::cpu_bankswitch_w(uint8_t data)
{
- membank("cpubbank")->set_entry(data & 0x0f);
+ m_cpubank[Which]->set_entry(data & 0x0f);
flip_screen_set(data & 0x40);
}
void exzisus_state::coincounter_w(uint8_t data)
{
- machine().bookkeeping().coin_lockout_w(0,~data & 0x01);
- machine().bookkeeping().coin_lockout_w(1,~data & 0x02);
- machine().bookkeeping().coin_counter_w(0,data & 0x04);
- machine().bookkeeping().coin_counter_w(1,data & 0x08);
+ machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
+ machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
+ machine().bookkeeping().coin_counter_w(0, data & 0x04);
+ machine().bookkeeping().coin_counter_w(1, data & 0x08);
}
-// is it ok that cpub_reset refers to cpuc?
-void exzisus_state::cpub_reset_w(uint8_t data)
+void exzisus_state::cpuc_reset_w(uint8_t data)
{
m_cpuc->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
#if 0
-// without cpub_reset_w, the following patch would be needed for
-// the RAM check to work
+// without cpuc_reset_w, the following patch would be needed for the RAM check to work
void exzisus_state::init_exzisus()
{
uint8_t *RAM = memregion("cpua")->base();
- /* Fix WORK RAM error */
+ // Fix WORK RAM error
RAM[0x67fd] = 0x18;
- /* Fix ROM 1 error */
+ // Fix ROM 1 error
RAM[0x6829] = 0x18;
}
#endif
@@ -103,41 +240,41 @@ void exzisus_state::init_exzisus()
void exzisus_state::cpua_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("cpuabank");
- map(0xc000, 0xc5ff).ram().share("objectram1");
- map(0xc600, 0xdfff).ram().share("videoram1");
- map(0xe000, 0xefff).ram().share("sharedram_ac");
- map(0xf400, 0xf400).w(FUNC(exzisus_state::cpua_bankswitch_w));
- map(0xf404, 0xf404).w(FUNC(exzisus_state::cpub_reset_w)); // ??
- map(0xf800, 0xffff).ram().share("sharedram_ab");
+ map(0x8000, 0xbfff).bankr(m_cpubank[0]);
+ map(0xc000, 0xc5ff).ram().share(m_objectram[1]);
+ map(0xc600, 0xdfff).ram().share(m_videoram[1]);
+ map(0xe000, 0xefff).ram().share(m_sharedram_ac);
+ map(0xf400, 0xf400).w(FUNC(exzisus_state::cpu_bankswitch_w<0>));
+ map(0xf404, 0xf404).w(FUNC(exzisus_state::cpuc_reset_w)); // ??
+ map(0xf800, 0xffff).ram().share(m_sharedram_ab);
}
void exzisus_state::cpub_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("cpubbank");
- map(0xc000, 0xc5ff).ram().share("objectram0");
- map(0xc600, 0xdfff).ram().share("videoram0");
+ map(0x8000, 0xbfff).bankr(m_cpubank[1]);
+ map(0xc000, 0xc5ff).ram().share(m_objectram[0]);
+ map(0xc600, 0xdfff).ram().share(m_videoram[0]);
map(0xe000, 0xefff).ram();
map(0xf000, 0xf000).nopr().w("ciu", FUNC(pc060ha_device::master_port_w));
map(0xf001, 0xf001).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
map(0xf400, 0xf400).portr("P1");
- map(0xf400, 0xf400).w(FUNC(exzisus_state::cpub_bankswitch_w));
+ map(0xf400, 0xf400).w(FUNC(exzisus_state::cpu_bankswitch_w<1>));
map(0xf401, 0xf401).portr("P2");
map(0xf402, 0xf402).portr("SYSTEM");
map(0xf402, 0xf402).w(FUNC(exzisus_state::coincounter_w));
map(0xf404, 0xf404).portr("DSWA");
map(0xf404, 0xf404).nopw(); // ??
map(0xf405, 0xf405).portr("DSWB");
- map(0xf800, 0xffff).ram().share("sharedram_ab");
+ map(0xf800, 0xffff).ram().share(m_sharedram_ab);
}
void exzisus_state::cpuc_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0x85ff).ram().share("objectram1");
- map(0x8600, 0x9fff).ram().share("videoram1");
- map(0xa000, 0xafff).ram().share("sharedram_ac");
+ map(0x8000, 0x85ff).ram().share(m_objectram[1]);
+ map(0x8600, 0x9fff).ram().share(m_videoram[1]);
+ map(0xa000, 0xafff).ram().share(m_sharedram_ac);
map(0xb000, 0xbfff).ram();
}
@@ -206,8 +343,8 @@ INPUT_PORTS_END
void exzisus_state::machine_start()
{
- membank("cpuabank")->configure_entries(0, 16, memregion("cpua")->base(), 0x4000);
- membank("cpubbank")->configure_entries(0, 16, memregion("cpub")->base(), 0x4000);
+ m_cpubank[0]->configure_entries(0, 16, memregion("cpua")->base(), 0x4000);
+ m_cpubank[1]->configure_entries(0, 16, memregion("cpub")->base(), 0x4000);
}
static const gfx_layout charlayout =
@@ -228,10 +365,10 @@ GFXDECODE_END
-/* All clocks are unconfirmed */
+// All clocks are unconfirmed
void exzisus_state::exzisus(machine_config &config)
{
- /* basic machine hardware */
+ // basic machine hardware
z80_device &cpua(Z80(config, "cpua", 6000000));
cpua.set_addrmap(AS_PROGRAM, &exzisus_state::cpua_map);
cpua.set_vblank_int("screen", FUNC(exzisus_state::irq0_line_hold));
@@ -247,9 +384,9 @@ void exzisus_state::exzisus(machine_config &config)
z80_device &audiocpu(Z80(config, "audiocpu", 4000000));
audiocpu.set_addrmap(AS_PROGRAM, &exzisus_state::sound_map);
- config.set_maximum_quantum(attotime::from_hz(600)); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
+ config.set_maximum_quantum(attotime::from_hz(600)); // 10 CPU slices per frame - enough for the sound CPU to read all commands
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@@ -261,7 +398,7 @@ void exzisus_state::exzisus(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_exzisus);
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 1024);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "mono").front_center();
ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
@@ -351,9 +488,9 @@ ROM_START( exzisusa )
ROM_LOAD( "b23-09.3d", 0x50000, 0x10000, CRC(6651617f) SHA1(6351a0b01589cb181b896285ade70e9dfcd799ec) )
ROM_REGION( 0x00c00, "proms", 0 )
- /* These appear to be twice the correct size */
+ // These appear to be twice the correct size
ROM_LOAD( "b23-04.15l", 0x00000, 0x00400, CRC(5042cffa) SHA1(c969748866a12681cf2dbf25a46da2c4e4f92313) )
- ROM_LOAD( "b23-03.14l", 0x00400, 0x00400, BAD_DUMP CRC(9458fd45) SHA1(7f7cdacf37bb6f15de1109fa73ba3c5fc88893d0) ) /* D0 is fixed */
+ ROM_LOAD( "b23-03.14l", 0x00400, 0x00400, BAD_DUMP CRC(9458fd45) SHA1(7f7cdacf37bb6f15de1109fa73ba3c5fc88893d0) ) // D0 is fixed
ROM_LOAD( "b23-05.16l", 0x00800, 0x00400, CRC(87f0f69a) SHA1(37df6fd56245fab9beaabfd86fd8f95d7c42c2a5) )
ROM_END
@@ -388,12 +525,15 @@ ROM_START( exzisust )
ROM_LOAD( "b23-09.3d", 0x50000, 0x10000, CRC(6651617f) SHA1(6351a0b01589cb181b896285ade70e9dfcd799ec) )
ROM_REGION( 0x00c00, "proms", 0 )
- /* These appear to be twice the correct size */
+ // These appear to be twice the correct size
ROM_LOAD( "b23-04.15l", 0x00000, 0x00400, CRC(5042cffa) SHA1(c969748866a12681cf2dbf25a46da2c4e4f92313) )
- ROM_LOAD( "b23-03.14l", 0x00400, 0x00400, BAD_DUMP CRC(9458fd45) SHA1(7f7cdacf37bb6f15de1109fa73ba3c5fc88893d0) ) /* D0 is fixed */
+ ROM_LOAD( "b23-03.14l", 0x00400, 0x00400, BAD_DUMP CRC(9458fd45) SHA1(7f7cdacf37bb6f15de1109fa73ba3c5fc88893d0) ) // D0 is fixed
ROM_LOAD( "b23-05.16l", 0x00800, 0x00400, CRC(87f0f69a) SHA1(37df6fd56245fab9beaabfd86fd8f95d7c42c2a5) )
ROM_END
+} // anonymous namespace
+
+
GAME( 1987, exzisus, 0, exzisus, exzisus, exzisus_state, empty_init, ROT0, "Taito Corporation", "Exzisus (Japan, dedicated)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, exzisusa, exzisus, exzisus, exzisus, exzisus_state, empty_init, ROT0, "Taito Corporation", "Exzisus (Japan, conversion)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, exzisust, exzisus, exzisus, exzisus, exzisus_state, empty_init, ROT0, "Taito Corporation (TAD license)", "Exzisus (TAD license)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp
index b4d1014d79c..0427e91e830 100644
--- a/src/mame/drivers/fastfred.cpp
+++ b/src/mame/drivers/fastfred.cpp
@@ -555,17 +555,6 @@ static INPUT_PORTS_START( imagoa )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -592,32 +581,21 @@ static const gfx_layout imago_spritelayout =
32*8
};
-static const gfx_layout imago_char_1bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_fastfred )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 32 )
GFXDECODE_END
static GFXDECODE_START( gfx_jumpcoas )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 32 )
GFXDECODE_END
static GFXDECODE_START( gfx_imago )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
- GFXDECODE_ENTRY( nullptr, 0xb800, imago_spritelayout, 0, 32 )
- GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0, 32 )
- GFXDECODE_ENTRY( "gfx4", 0, imago_char_1bpp, 0x140, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( nullptr, 0xb800, imago_spritelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x1, 0x140, 1 )
GFXDECODE_END
WRITE_LINE_MEMBER(fastfred_state::vblank_irq)
diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp
index 827473a276e..6103226c533 100644
--- a/src/mame/drivers/finalizr.cpp
+++ b/src/mame/drivers/finalizr.cpp
@@ -192,17 +192,6 @@ INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -217,9 +206,9 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_finalizr )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 16*16, 16 )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 16*16, 16 ) // to handle 8x8 sprites
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 16*16, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 16*16, 16 ) // to handle 8x8 sprites
GFXDECODE_END
diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp
index 7d322f4b496..3706cf28594 100644
--- a/src/mame/drivers/firefox.cpp
+++ b/src/mame/drivers/firefox.cpp
@@ -598,17 +598,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout tilelayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,32) },
- 32*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -621,8 +610,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_firefox )
- GFXDECODE_ENTRY("tiles", 0, tilelayout, 0, 1)
- GFXDECODE_ENTRY("sprites", 0, spritelayout, 256, 4)
+ GFXDECODE_ENTRY("tiles", 0, gfx_8x8x4_packed_msb, 0, 1)
+ GFXDECODE_ENTRY("sprites", 0, spritelayout, 256, 4)
GFXDECODE_END
diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp
index b80f0441d0b..af5a575eb73 100644
--- a/src/mame/drivers/freekick.cpp
+++ b/src/mame/drivers/freekick.cpp
@@ -731,17 +731,6 @@ uint8_t freekick_state::snd_rom_r()
*
*************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0,1,2,3, 4,5,6,7 },
- { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -758,8 +747,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_freekick )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x000, 32 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x100, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0x000, 32 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x100, 32 )
GFXDECODE_END
/*************************************
diff --git a/src/mame/drivers/freeway.cpp b/src/mame/drivers/freeway.cpp
index 1b403926048..cc391f110cc 100644
--- a/src/mame/drivers/freeway.cpp
+++ b/src/mame/drivers/freeway.cpp
@@ -108,19 +108,8 @@ static INPUT_PORTS_START(freeway)
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_MEMORY_RESET) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, freeway_state, nmi_w)
INPUT_PORTS_END
-static const gfx_layout char_layout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8,
-};
-
static GFXDECODE_START(gfx_freeway)
- GFXDECODE_ENTRY("gfx", 0, char_layout, 0x0, 1)
+ GFXDECODE_ENTRY("gfx", 0, gfx_8x8x3_planar, 0x0, 1)
GFXDECODE_END
void freeway_state::freeway(machine_config &config)
diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp
index d8e4b27a7a1..f92e74bae27 100644
--- a/src/mame/drivers/funtech.cpp
+++ b/src/mame/drivers/funtech.cpp
@@ -424,20 +424,8 @@ static const gfx_layout tiles8x32_layout =
};
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 4, 0, 12, 8, 20, 16, 28, 24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8
-};
-
-
static GFXDECODE_START( gfx_funtech )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, tiles8x32_layout, 0x100, 1 )
GFXDECODE_END
diff --git a/src/mame/drivers/fuukifg2.cpp b/src/mame/drivers/fuukifg2.cpp
index 93c971edead..97b1d9d0676 100644
--- a/src/mame/drivers/fuukifg2.cpp
+++ b/src/mame/drivers/fuukifg2.cpp
@@ -353,18 +353,6 @@ INPUT_PORTS_END
***************************************************************************/
-/* 8x8x4 */
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,8*4) },
- 8*8*4
-};
-
/* 16x16x4 */
static const gfx_layout layout_16x16x4 =
{
@@ -390,9 +378,9 @@ 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( "gfx3", 0, layout_16x16x8, 0x400*1, 0x40 ) // [1] Layer 1
- GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x4, 0x400*3, 0x40 ) // [2] Layer 2
+ GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 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/drivers/fuukifg3.cpp b/src/mame/drivers/fuukifg3.cpp
index 74c7c8fbd06..06990bbeab6 100644
--- a/src/mame/drivers/fuukifg3.cpp
+++ b/src/mame/drivers/fuukifg3.cpp
@@ -442,18 +442,6 @@ INPUT_PORTS_END
***************************************************************************/
-/* 8x8x4 */
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,8*4) },
- 8*8*4
-};
-
/* 16x16x8 */
static const gfx_layout layout_16x16x8 =
{
@@ -467,9 +455,9 @@ static const gfx_layout layout_16x16x8 =
};
static GFXDECODE_START( gfx_fuuki32 )
- GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x400*0, 0x40 ) // [0] Layer 1
- GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x400*1, 0x40 ) // [1] Layer 2
- GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x4, 0x400*3, 0x40 ) // [2] BG Layer
+ GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x8, 0x400*0, 0x40 ) // [0] Layer 1
+ GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0x400*1, 0x40 ) // [1] Layer 2
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x4_packed_msb, 0x400*3, 0x40 ) // [2] BG Layer
GFXDECODE_END
diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp
index 4fa12aef4cf..38f5c2c1165 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -1442,17 +1442,6 @@ static const gfx_layout charlayout_2bpp =
16*8
};
-static const gfx_layout charlayout_xevious =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static const gfx_layout charlayout_digdug =
{
8,8,
@@ -1531,7 +1520,7 @@ static GFXDECODE_START( gfx_galaga )
GFXDECODE_END
static GFXDECODE_START( gfx_xevious )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout_xevious, 128*4+64*8, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 128*4+64*8, 64 )
GFXDECODE_ENTRY( "gfx2", 0, bgcharlayout, 0, 128 )
GFXDECODE_ENTRY( "gfx3", 0, spritelayout_xevious, 128*4, 64 )
GFXDECODE_END
diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp
index 3adc36a6285..c54e038f618 100644
--- a/src/mame/drivers/galaxia.cpp
+++ b/src/mame/drivers/galaxia.cpp
@@ -269,17 +269,6 @@ INPUT_PORTS_END
***************************************************************************/
-static const gfx_layout tiles8x8x1_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { RGN_FRAC(0,1) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout tiles8x8x2_layout =
{
8,8,
@@ -296,7 +285,7 @@ static GFXDECODE_START( gfx_galaxia )
GFXDECODE_END
static GFXDECODE_START( gfx_astrowar )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8x1_layout, 0, 8 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 8 )
GFXDECODE_END
diff --git a/src/mame/drivers/gauntlet.cpp b/src/mame/drivers/gauntlet.cpp
index 4b24a959c9c..258cd6b5410 100644
--- a/src/mame/drivers/gauntlet.cpp
+++ b/src/mame/drivers/gauntlet.cpp
@@ -446,21 +446,9 @@ static const gfx_layout anlayout =
};
-static const gfx_layout pfmolayout =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static GFXDECODE_START( gfx_gauntlet )
- GFXDECODE_ENTRY( "gfx2", 0, pfmolayout, 256, 32 )
- GFXDECODE_ENTRY( "gfx1", 0, anlayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_planar, 256, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, anlayout, 0, 64 )
GFXDECODE_END
diff --git a/src/mame/drivers/ginganin.cpp b/src/mame/drivers/ginganin.cpp
index 9ca0156ef05..35c6d4dcca6 100644
--- a/src/mame/drivers/ginganin.cpp
+++ b/src/mame/drivers/ginganin.cpp
@@ -205,22 +205,11 @@ static const gfx_layout layout16x16 =
16*16*4
};
-static const gfx_layout layout8x8 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
static GFXDECODE_START( gfx_ginganin )
- GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 256*3, 16 ) /* [0] bg */
- GFXDECODE_ENTRY( "gfx2", 0, layout16x16, 256*2, 16 ) /* [1] fg */
- GFXDECODE_ENTRY( "gfx3", 0, layout8x8, 256*0, 16 ) /* [2] txt */
- GFXDECODE_ENTRY( "gfx4", 0, layout16x16, 256*1, 16 ) /* [3] sprites */
+ GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 256*3, 16 ) /* [0] bg */
+ GFXDECODE_ENTRY( "gfx2", 0, layout16x16, 256*2, 16 ) /* [1] fg */
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x4_packed_msb, 256*0, 16 ) /* [2] txt */
+ GFXDECODE_ENTRY( "gfx4", 0, layout16x16, 256*1, 16 ) /* [3] sprites */
GFXDECODE_END
diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp
index e395544889e..8e8f176fc20 100644
--- a/src/mame/drivers/gladiatr.cpp
+++ b/src/mame/drivers/gladiatr.cpp
@@ -890,17 +890,6 @@ INPUT_PORTS_END
/*******************************************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout tilelayout =
{
8,8,
@@ -926,13 +915,13 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_ppking )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 1 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 32 )
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x100, 32 )
GFXDECODE_END
static GFXDECODE_START( gfx_gladiatr )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x200, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0x200, 1 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0x000, 32 )
GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x100, 32 )
GFXDECODE_END
diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp
index a6649b33121..3d7804b0b20 100644
--- a/src/mame/drivers/goal92.cpp
+++ b/src/mame/drivers/goal92.cpp
@@ -231,17 +231,6 @@ WRITE_LINE_MEMBER(goal92_state::goal92_adpcm_int)
m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4),RGN_FRAC(2,4),RGN_FRAC(1,4),RGN_FRAC(0,4) },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static const gfx_layout layout_16x16x4 =
{
16,16,
@@ -270,7 +259,7 @@ static const gfx_layout layout_16x16x4_2 =
static GFXDECODE_START( gfx_goal92 )
GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0*16, 8*16 ) // Sprites
- GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 48*16, 16 ) // Text Layer
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_planar, 48*16, 16 ) // Text Layer
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 0*16, 16 ) // BG Layer
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 16*16, 16 ) // Mid Layer
GFXDECODE_ENTRY( "gfx2", 0, layout_16x16x4, 32*16, 16 ) // FG Layer
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index 5c46838b0a9..eb4a092f823 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -8237,17 +8237,6 @@ static const gfx_layout tiles8x32x5_layout =
};
#endif
-static const gfx_layout cb3c_tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 4, 0, 12, 8, 20, 16, 28, 24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*32
-};
-
static const gfx_layout cb3c_tiles8x32_layout =
{
@@ -8401,7 +8390,7 @@ static GFXDECODE_START( gfx_chry10 )
GFXDECODE_END
static GFXDECODE_START( gfx_cb3c )
- GFXDECODE_ENTRY( "gfx1", 0, cb3c_tiles8x8_layout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, cb3c_tiles8x32_layout, 128, 8 )
GFXDECODE_END
diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp
index eea33822f48..8ec49aafc79 100644
--- a/src/mame/drivers/gottlieb.cpp
+++ b/src/mame/drivers/gottlieb.cpp
@@ -1746,16 +1746,6 @@ INPUT_PORTS_END
/* the games can store char gfx data in either a 4k RAM area (128 chars), or */
/* a 8k ROM area (256 chars). */
-static const gfx_layout bg_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,32) },
- 32*8
-};
static const gfx_layout fg_layout =
{
@@ -1769,9 +1759,9 @@ static const gfx_layout fg_layout =
};
static GFXDECODE_START( gfxdecode )
- GFXDECODE_RAM( "charram", 0, bg_layout, 0, 1 ) /* the game dynamically modifies this */
- GFXDECODE_ENTRY( "bgtiles", 0, bg_layout, 0, 1 )
- GFXDECODE_ENTRY( "sprites", 0, fg_layout, 0, 1 )
+ GFXDECODE_RAM( "charram", 0, gfx_8x8x4_packed_msb, 0, 1 ) /* the game dynamically modifies this */
+ GFXDECODE_ENTRY( "bgtiles", 0, gfx_8x8x4_packed_msb, 0, 1 )
+ GFXDECODE_ENTRY( "sprites", 0, fg_layout, 0, 1 )
GFXDECODE_END
diff --git a/src/mame/drivers/gstriker.cpp b/src/mame/drivers/gstriker.cpp
index 6fbf01cd9d1..70d28b62353 100644
--- a/src/mame/drivers/gstriker.cpp
+++ b/src/mame/drivers/gstriker.cpp
@@ -207,18 +207,6 @@ void gstriker_state::sh_bankswitch_w(uint8_t data)
/*** GFX DECODE **************************************************************/
-static const gfx_layout gs_8x8x4_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4, 0, 12, 8, 20, 16, 28, 24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*32
-};
-
-
static const gfx_layout gs_16x16x4_layout =
{
16,16,
@@ -236,9 +224,9 @@ static const gfx_layout gs_16x16x4_layout =
};
static GFXDECODE_START( gfx_gstriker )
- GFXDECODE_ENTRY( "gfx1", 0, gs_8x8x4_layout, 0, 256 )
- GFXDECODE_ENTRY( "gfx2", 0, gs_16x16x4_layout, 0, 256 )
- GFXDECODE_ENTRY( "gfx3", 0, gs_16x16x4_layout, 0, 256 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 256 )
+ GFXDECODE_ENTRY( "gfx2", 0, gs_16x16x4_layout, 0, 256 )
+ GFXDECODE_ENTRY( "gfx3", 0, gs_16x16x4_layout, 0, 256 )
GFXDECODE_END
diff --git a/src/mame/drivers/gundealr.cpp b/src/mame/drivers/gundealr.cpp
index 77ba0783eee..cb0c6689ab4 100644
--- a/src/mame/drivers/gundealr.cpp
+++ b/src/mame/drivers/gundealr.cpp
@@ -383,17 +383,6 @@ INPUT_PORTS_END
-static const gfx_layout layout8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
static const gfx_layout layout16x16x4 =
{
16,16,
@@ -406,8 +395,8 @@ static const gfx_layout layout16x16x4 =
};
static GFXDECODE_START( gfx_gundealr )
- GFXDECODE_ENTRY( "gfx1", 0, layout8x8x4, 0, 16 ) /* colors 0-255 */
- GFXDECODE_ENTRY( "gfx2", 0, layout16x16x4, 256, 16 ) /* colors 256-511 */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0, 16 ) /* colors 0-255 */
+ GFXDECODE_ENTRY( "gfx2", 0, layout16x16x4, 256, 16 ) /* colors 256-511 */
GFXDECODE_END
diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp
index e012316af66..6dfb9cf8ab6 100644
--- a/src/mame/drivers/headonb.cpp
+++ b/src/mame/drivers/headonb.cpp
@@ -216,17 +216,6 @@ INPUT_PORTS_END
GFX Layouts
******************************************************************************/
-static const gfx_layout charlayout_1bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static const gfx_layout charlayout_3bpp =
{
8,8,
@@ -239,7 +228,7 @@ static const gfx_layout charlayout_3bpp =
};
static GFXDECODE_START( gfx_foolrace )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout_1bpp, 0, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 1 )
GFXDECODE_END
static GFXDECODE_START( gfx_blackhol )
diff --git a/src/mame/drivers/himesiki.cpp b/src/mame/drivers/himesiki.cpp
index e0a70e4c6ec..9b25a268663 100644
--- a/src/mame/drivers/himesiki.cpp
+++ b/src/mame/drivers/himesiki.cpp
@@ -364,17 +364,6 @@ INPUT_PORTS_END
/****************************************************************************/
-static const gfx_layout layout_bg =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4,0,12,8,20,16,28,24 },
- { STEP8(0,32) },
- 8*8*4
-};
-
static const gfx_layout layout_p103a =
{
32,32,
@@ -398,7 +387,7 @@ static const gfx_layout layout_spr =
};
static GFXDECODE_START( gfx_himesiki )
- GFXDECODE_ENTRY( "bgtiles", 0, layout_bg, 0x000, 16 )
+ GFXDECODE_ENTRY( "bgtiles", 0, gfx_8x8x4_packed_lsb, 0x000, 16 )
GFXDECODE_ENTRY( "sprites", 0, layout_spr, 0x200, 16 )
GFXDECODE_ENTRY( "spr_p103a", 0, layout_p103a, 0x200, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/hitme.cpp b/src/mame/drivers/hitme.cpp
index 33b65f0c945..e5a62f0acc3 100644
--- a/src/mame/drivers/hitme.cpp
+++ b/src/mame/drivers/hitme.cpp
@@ -280,19 +280,8 @@ static GFXDECODE_START( gfx_hitme )
GFXDECODE_END
-static const gfx_layout barricad_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_barricad )
- GFXDECODE_ENTRY( "gfx1", 0, barricad_charlayout, 0, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 1 )
GFXDECODE_END
diff --git a/src/mame/drivers/homedata.cpp b/src/mame/drivers/homedata.cpp
index 4ce82246b1f..c03421c93ce 100644
--- a/src/mame/drivers/homedata.cpp
+++ b/src/mame/drivers/homedata.cpp
@@ -1101,20 +1101,9 @@ INPUT_PORTS_END
/**************************************************************************/
-static const gfx_layout char_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static GFXDECODE_START( gfx_mrokumei )
- GFXDECODE_ENTRY( "gfx1", 0, char_layout, 0x6000, 0x100 )
- GFXDECODE_ENTRY( "gfx2", 0, char_layout, 0x7000, 0x100 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0x6000, 0x100 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x7000, 0x100 )
GFXDECODE_END
static const gfx_layout tile_layout =
@@ -1491,20 +1480,9 @@ void homedata_state::cpu2_map(address_map &map)
-static const gfx_layout mirderbychar_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static GFXDECODE_START( gfx_mirderby )
- GFXDECODE_ENTRY( "gfx1", 0, mirderbychar_layout, 0x0000, 0x10 )
- GFXDECODE_ENTRY( "gfx2", 0, mirderbychar_layout, 0x0000, 0x10 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0x0000, 0x10 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x0000, 0x10 )
GFXDECODE_END
/* Miracle Derby - Ascot
diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp
index 574bfa14bfd..ee9df97852c 100644
--- a/src/mame/drivers/igs011.cpp
+++ b/src/mame/drivers/igs011.cpp
@@ -3994,16 +3994,6 @@ INPUT_PORTS_END
// for debugging
#if 0
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { 4, 0, 12, 8, 20,16, 28,24 },
- { STEP8(0,8*4) },
- 8*8*4
-};
static const gfx_layout layout_16x16x4 =
{
16,16,
@@ -4047,17 +4037,17 @@ static const gfx_layout layout_16x16x1 =
};
static GFXDECODE_START( gfx_igs011 )
- GFXDECODE_ENTRY( "blitter", 0, layout_8x8x4, 0, 0x80 )
- GFXDECODE_ENTRY( "blitter", 0, layout_16x16x4, 0, 0x80 )
- GFXDECODE_ENTRY( "blitter", 0, layout_8x8x8, 0, 0x08 )
- GFXDECODE_ENTRY( "blitter", 0, layout_16x16x8, 0, 0x08 )
+ GFXDECODE_ENTRY( "blitter", 0, gfx_8x8x4_packed_lsb, 0, 0x80 )
+ GFXDECODE_ENTRY( "blitter", 0, layout_16x16x4, 0, 0x80 )
+ GFXDECODE_ENTRY( "blitter", 0, layout_8x8x8, 0, 0x08 )
+ GFXDECODE_ENTRY( "blitter", 0, layout_16x16x8, 0, 0x08 )
GFXDECODE_END
static GFXDECODE_START( gfx_igs011_hi )
- GFXDECODE_ENTRY( "blitter", 0, layout_8x8x4, 0, 0x80 )
- GFXDECODE_ENTRY( "blitter", 0, layout_16x16x4, 0, 0x80 )
- GFXDECODE_ENTRY( "blitter", 0, layout_8x8x8, 0, 0x08 )
- GFXDECODE_ENTRY( "blitter", 0, layout_16x16x8, 0, 0x08 )
- GFXDECODE_ENTRY( "blitter_hi", 0, layout_16x16x1, 0, 0x80 )
+ GFXDECODE_ENTRY( "blitter", 0, gfx_8x8x4_packed_lsb, 0, 0x80 )
+ GFXDECODE_ENTRY( "blitter", 0, layout_16x16x4, 0, 0x80 )
+ GFXDECODE_ENTRY( "blitter", 0, layout_8x8x8, 0, 0x08 )
+ GFXDECODE_ENTRY( "blitter", 0, layout_16x16x8, 0, 0x08 )
+ GFXDECODE_ENTRY( "blitter_hi", 0, layout_16x16x1, 0, 0x80 )
GFXDECODE_END
#endif
diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp
index 9597559e63a..8f8cf08f04b 100644
--- a/src/mame/drivers/ironhors.cpp
+++ b/src/mame/drivers/ironhors.cpp
@@ -218,17 +218,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout ironhors_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static const gfx_layout ironhors_spritelayout =
{
16,16,
@@ -243,9 +232,9 @@ static const gfx_layout ironhors_spritelayout =
};
static GFXDECODE_START( gfx_ironhors )
- GFXDECODE_ENTRY( "gfx1", 0, ironhors_charlayout, 0, 16*8 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0, 16*8 )
GFXDECODE_ENTRY( "gfx1", 0, ironhors_spritelayout, 16*8*16, 16*8 )
- GFXDECODE_ENTRY( "gfx1", 0, ironhors_charlayout, 16*8*16, 16*8 ) // to handle 8x8 sprites
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 16*8*16, 16*8 ) // to handle 8x8 sprites
GFXDECODE_END
diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp
index 2e6606b3f10..e911bce21e7 100644
--- a/src/mame/drivers/joystand.cpp
+++ b/src/mame/drivers/joystand.cpp
@@ -523,17 +523,6 @@ static INPUT_PORTS_START( joystand )
INPUT_PORTS_END
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0, 1) },
- { STEP8(0, 4) },
- { STEP8(0, 4*8) },
- 8*8*4
-};
-
static const gfx_layout layout_16x16x8 =
{
16,16,
@@ -546,13 +535,13 @@ static const gfx_layout layout_16x16x8 =
};
static GFXDECODE_START( gfx_joystand )
- GFXDECODE_ENTRY( "tiles", 0, layout_8x8x4, 0, 0x100 )
- GFXDECODE_ENTRY( "cart.u5", 0, layout_16x16x8, 0, 0x10 )
- GFXDECODE_ENTRY( "cart.u6", 0, layout_16x16x8, 0, 0x10 )
- GFXDECODE_ENTRY( "cart.u3", 0, layout_16x16x8, 0, 0x10 )
- GFXDECODE_ENTRY( "cart.u4", 0, layout_16x16x8, 0, 0x10 )
- GFXDECODE_ENTRY( "cart.u1", 0, layout_16x16x8, 0, 0x10 )
- GFXDECODE_ENTRY( "cart.u2", 0, layout_16x16x8, 0, 0x10 )
+ GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x4_packed_msb, 0, 0x100 )
+ GFXDECODE_ENTRY( "cart.u5", 0, layout_16x16x8, 0, 0x10 )
+ GFXDECODE_ENTRY( "cart.u6", 0, layout_16x16x8, 0, 0x10 )
+ GFXDECODE_ENTRY( "cart.u3", 0, layout_16x16x8, 0, 0x10 )
+ GFXDECODE_ENTRY( "cart.u4", 0, layout_16x16x8, 0, 0x10 )
+ GFXDECODE_ENTRY( "cart.u1", 0, layout_16x16x8, 0, 0x10 )
+ GFXDECODE_ENTRY( "cart.u2", 0, layout_16x16x8, 0, 0x10 )
GFXDECODE_END
diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp
index ebab4c76fad..b043988fdf1 100644
--- a/src/mame/drivers/kickgoal.cpp
+++ b/src/mame/drivers/kickgoal.cpp
@@ -269,30 +269,6 @@ static const gfx_layout layout_8x8 =
};
-static const gfx_layout layout_8x8_alt =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
-
-static const gfx_layout layout_16x16 =
-{
- 16,16,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { STEP16(0,1) },
- { STEP16(0,16) },
- 16*16
-};
-
-
static const gfx_layout layout_32x32 =
{
32,32,
@@ -305,15 +281,15 @@ static const gfx_layout layout_32x32 =
};
static GFXDECODE_START( gfx_kickgoal )
- GFXDECODE_ENTRY( "gfx1", 0, layout_8x8, 0x000, 0x40 ) // FG GFX for even column like CPS1
- GFXDECODE_ENTRY( "gfx1", 0, layout_16x16, 0x000, 0x40 )
- GFXDECODE_ENTRY( "gfx1", 0, layout_32x32, 0x000, 0x40 )
- GFXDECODE_ENTRY( "gfx1", 1, layout_8x8, 0x000, 0x40 ) // FG GFX for odd column like CPS1
+ GFXDECODE_ENTRY( "gfx1", 0, layout_8x8, 0x000, 0x40 ) // FG GFX for even column like CPS1
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_planar, 0x000, 0x40 )
+ GFXDECODE_ENTRY( "gfx1", 0, layout_32x32, 0x000, 0x40 )
+ GFXDECODE_ENTRY( "gfx1", 1, layout_8x8, 0x000, 0x40 ) // FG GFX for odd column like CPS1
GFXDECODE_END
static GFXDECODE_START( gfx_actionhw )
- GFXDECODE_ENTRY( "gfx1", 0, layout_8x8_alt, 0x000, 0x40 )
- GFXDECODE_ENTRY( "gfx1", 0, layout_16x16, 0x000, 0x40 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_planar, 0x000, 0x40 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_planar, 0x000, 0x40 )
GFXDECODE_END
/* MACHINE drivers ***********************************************************/
diff --git a/src/mame/drivers/klax.cpp b/src/mame/drivers/klax.cpp
index 309705aa38a..1e1a44f1e00 100644
--- a/src/mame/drivers/klax.cpp
+++ b/src/mame/drivers/klax.cpp
@@ -171,21 +171,9 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout pfmolayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
-
-static GFXDECODE_START( gfx_klax )
- GFXDECODE_ENTRY( "gfx1", 0, pfmolayout, 256, 16 ) /* playfield */
- GFXDECODE_ENTRY( "gfx2", 0, pfmolayout, 0, 16 ) /* sprites */
+ static GFXDECODE_START( gfx_klax )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 256, 16 ) /* playfield */
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0, 16 ) /* sprites */
GFXDECODE_END
static const gfx_layout bootleg_layout =
@@ -200,8 +188,8 @@ static const gfx_layout bootleg_layout =
};
static GFXDECODE_START( gfx_klax5bl )
- GFXDECODE_ENTRY( "gfx1", 0, bootleg_layout, 256, 16 ) /* playfield */
- GFXDECODE_ENTRY( "gfx2", 0, pfmolayout, 0, 16 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx1", 0, bootleg_layout, 256, 16 ) /* playfield */
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0, 16 ) /* sprites */
GFXDECODE_END
diff --git a/src/mame/drivers/kncljoe.cpp b/src/mame/drivers/kncljoe.cpp
index 7edfb93b483..814d7eef42b 100644
--- a/src/mame/drivers/kncljoe.cpp
+++ b/src/mame/drivers/kncljoe.cpp
@@ -193,17 +193,6 @@ static INPUT_PORTS_START( kncljoe )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -218,9 +207,9 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_kncljoe )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x00, 16 ) /* colors 0x00-0x7f direct mapped */
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 16 ) /* colors 0x80-0x8f with lookup table */
- GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x80, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0x00, 16 ) /* colors 0x00-0x7f direct mapped */
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x80, 16 ) /* colors 0x80-0x8f with lookup table */
+ GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x80, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/konblands.cpp b/src/mame/drivers/konblands.cpp
index f05d631c279..6b5d325585a 100644
--- a/src/mame/drivers/konblands.cpp
+++ b/src/mame/drivers/konblands.cpp
@@ -224,19 +224,9 @@ static INPUT_PORTS_START( konblands )
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
static GFXDECODE_START( gfx_konblands )
- GFXDECODE_ENTRY( "gfx", 0, charlayout, 0, 1 )
+ GFXDECODE_ENTRY( "gfx", 0, gfx_8x8x4_packed_msb, 0, 1 )
GFXDECODE_END
diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp
index 8bcc3d19253..4eeafc7b8eb 100644
--- a/src/mame/drivers/liberate.cpp
+++ b/src/mame/drivers/liberate.cpp
@@ -574,17 +574,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0,1,2,3,4,5,6,7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout sprites =
{
16,16,
@@ -657,28 +646,28 @@ static const gfx_layout pro_tiles =
static GFXDECODE_START( gfx_liberate )
- GFXDECODE_ENTRY( "gfx1", 0x00000, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "gfx1", 0x00000, sprites, 0, 4 )
- GFXDECODE_ENTRY( "gfx2", 0x00000, tiles1, 0, 4 )
- GFXDECODE_ENTRY( "gfx2", 0x00000, tiles2, 0, 4 )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, gfx_8x8x3_planar, 0, 4 )
+ GFXDECODE_ENTRY( "gfx1", 0x00000, sprites, 0, 4 )
+ GFXDECODE_ENTRY( "gfx2", 0x00000, tiles1, 0, 4 )
+ GFXDECODE_ENTRY( "gfx2", 0x00000, tiles2, 0, 4 )
GFXDECODE_END
static GFXDECODE_START( gfx_prosport )
- GFXDECODE_ENTRY( "prosport_fg_gfx", 0x00000, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "protenns_fg_gfx", 0x00000, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "probowl_fg_gfx", 0x00000, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "progolf_fg_gfx", 0x00000, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "prosport_fg_gfx", 0x00000, sprites, 0, 4 )
- GFXDECODE_ENTRY( "protenns_fg_gfx", 0x00000, sprites, 0, 4 )
- GFXDECODE_ENTRY( "probowl_fg_gfx", 0x00000, sprites, 0, 4 )
- GFXDECODE_ENTRY( "progolf_fg_gfx", 0x00000, sprites, 0, 4 )
- GFXDECODE_ENTRY( "gfx2", 0x00000, pro_tiles, 0, 4 ) //backgrounds
+ GFXDECODE_ENTRY( "prosport_fg_gfx", 0x00000, gfx_8x8x3_planar, 0, 4 )
+ GFXDECODE_ENTRY( "protenns_fg_gfx", 0x00000, gfx_8x8x3_planar, 0, 4 )
+ GFXDECODE_ENTRY( "probowl_fg_gfx", 0x00000, gfx_8x8x3_planar, 0, 4 )
+ GFXDECODE_ENTRY( "progolf_fg_gfx", 0x00000, gfx_8x8x3_planar, 0, 4 )
+ GFXDECODE_ENTRY( "prosport_fg_gfx", 0x00000, sprites, 0, 4 )
+ GFXDECODE_ENTRY( "protenns_fg_gfx", 0x00000, sprites, 0, 4 )
+ GFXDECODE_ENTRY( "probowl_fg_gfx", 0x00000, sprites, 0, 4 )
+ GFXDECODE_ENTRY( "progolf_fg_gfx", 0x00000, sprites, 0, 4 )
+ GFXDECODE_ENTRY( "gfx2", 0x00000, pro_tiles, 0, 4 ) //backgrounds
GFXDECODE_END
static GFXDECODE_START( gfx_prosoccr )
- GFXDECODE_ENTRY( "fg_gfx", 0x00000, charlayout, 0, 4 )
- GFXDECODE_ENTRY( "sp_gfx", 0x00000, sprites, 0, 4 )
- GFXDECODE_ENTRY( "bg_gfx", 0x00000, prosoccr_bg_gfx, 8, 2 )
+ GFXDECODE_ENTRY( "fg_gfx", 0x00000, gfx_8x8x3_planar, 0, 4 )
+ GFXDECODE_ENTRY( "sp_gfx", 0x00000, sprites, 0, 4 )
+ GFXDECODE_ENTRY( "bg_gfx", 0x00000, prosoccr_bg_gfx, 8, 2 )
GFXDECODE_END
/*************************************
diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp
index fdeba9f3886..08f5fd80479 100644
--- a/src/mame/drivers/m14.cpp
+++ b/src/mame/drivers/m14.cpp
@@ -394,19 +394,8 @@ static INPUT_PORTS_START( m14 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, m14_state,right_coin_inserted, 0) //coin x 1
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { RGN_FRAC(0,1) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_m14 )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 0x10 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 0x10 )
GFXDECODE_END
INTERRUPT_GEN_MEMBER(m14_state::m14_irq)
diff --git a/src/mame/drivers/m62.cpp b/src/mame/drivers/m62.cpp
index 7fc49e33f60..d820ccb71c7 100644
--- a/src/mame/drivers/m62.cpp
+++ b/src/mame/drivers/m62.cpp
@@ -771,19 +771,6 @@ INPUT_PORTS_END
-
-static const gfx_layout tile_charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static const gfx_layout battroad_charlayout =
{
8,8, /* 8*8 characters */
@@ -864,7 +851,7 @@ static GFXDECODE_START( gfx_m62_sprites )
GFXDECODE_END
static GFXDECODE_START( gfx_m62_tiles )
- GFXDECODE_ENTRY( "gfx1", 0, tile_charlayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 32 )
GFXDECODE_END
/* per game modified decodes */
@@ -874,7 +861,7 @@ static GFXDECODE_START( gfx_m62_tiles_lotlot )
GFXDECODE_END
static GFXDECODE_START( gfx_m62_tiles_spelunk2 )
- GFXDECODE_ENTRY( "gfx1", 0, tile_charlayout, 0, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 64 )
GFXDECODE_END
static GFXDECODE_START( gfx_m62_tiles_youjyudn )
diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp
index 368032aec77..4925381a0ba 100644
--- a/src/mame/drivers/m63.cpp
+++ b/src/mame/drivers/m63.cpp
@@ -664,28 +664,6 @@ static INPUT_PORTS_START( fghtbskt )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,2),
- 2,
- { RGN_FRAC(1,2), RGN_FRAC(0,2) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-static const gfx_layout tilelayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -701,15 +679,15 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_m63 )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 256, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 32 )
- GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar, 256, 1 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0, 32 )
GFXDECODE_END
static GFXDECODE_START( gfx_fghtbskt )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 16, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 32 )
- GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar, 16, 1 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0, 32 )
GFXDECODE_END
diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp
index fcfb851fe5d..20cf6f11fe3 100644
--- a/src/mame/drivers/m90.cpp
+++ b/src/mame/drivers/m90.cpp
@@ -711,17 +711,6 @@ INPUT_PORTS_END
/*****************************************************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -734,8 +723,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_m90 )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 256, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_planar, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 256, 16 )
GFXDECODE_END
/*****************************************************************************/
diff --git a/src/mame/drivers/macrossp.cpp b/src/mame/drivers/macrossp.cpp
index 5ea3e987ed3..4b0f488fbef 100644
--- a/src/mame/drivers/macrossp.cpp
+++ b/src/mame/drivers/macrossp.cpp
@@ -1075,18 +1075,6 @@ INPUT_PORTS_END
/*** GFX DECODE **************************************************************/
-static const gfx_layout macrossp_char16x16x4layout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 0, 4, 8, 12, 16, 20, 24, 28, 32+0,32+4,32+8,32+12,32+16,32+20,32+24,32+28 },
- { 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},
- 16*64
-};
-
static const gfx_layout macrossp_char16x16x8layout =
{
16,16,
@@ -1104,7 +1092,7 @@ static GFXDECODE_START( gfx_macrossp )
GFXDECODE_ENTRY( "gfx2", 0, macrossp_char16x16x8layout, 0x800, 0x20 ) /* 8bpp but 6bpp granularity */
GFXDECODE_ENTRY( "gfx3", 0, macrossp_char16x16x8layout, 0x800, 0x20 ) /* 8bpp but 6bpp granularity */
GFXDECODE_ENTRY( "gfx4", 0, macrossp_char16x16x8layout, 0x800, 0x20 ) /* 8bpp but 6bpp granularity */
- GFXDECODE_ENTRY( "gfx5", 0, macrossp_char16x16x4layout, 0x800, 0x80 )
+ GFXDECODE_ENTRY( "gfx5", 0, gfx_16x16x4_packed_msb, 0x800, 0x80 )
GFXDECODE_END
/*** MACHINE DRIVER **********************************************************/
diff --git a/src/mame/drivers/mainsnk.cpp b/src/mame/drivers/mainsnk.cpp
index 0436a7417af..ea53c4fed8e 100644
--- a/src/mame/drivers/mainsnk.cpp
+++ b/src/mame/drivers/mainsnk.cpp
@@ -343,18 +343,6 @@ static INPUT_PORTS_START( canvas )
INPUT_PORTS_END
-static const gfx_layout tile_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 4, 0, 12, 8, 20, 16, 28, 24},
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 256
-};
-
-
static const gfx_layout sprite_layout =
{
16,16,
@@ -369,8 +357,8 @@ static const gfx_layout sprite_layout =
static GFXDECODE_START( gfx_mainsnk )
- GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 0x100, 0x080>>4 )
- GFXDECODE_ENTRY( "gfx2", 0, sprite_layout, 0x000, 0x080>>3 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0x100, 0x080>>4 )
+ GFXDECODE_ENTRY( "gfx2", 0, sprite_layout, 0x000, 0x080>>3 )
GFXDECODE_END
diff --git a/src/mame/drivers/mastboy.cpp b/src/mame/drivers/mastboy.cpp
index 4cbdf335a35..943cdd1ef0a 100644
--- a/src/mame/drivers/mastboy.cpp
+++ b/src/mame/drivers/mastboy.cpp
@@ -768,21 +768,9 @@ static const gfx_layout tiles8x8_layout =
};
-static const gfx_layout tiles8x8_layout_2 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 0,4,8,12,16,20,24,28 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8
-};
-
-
static GFXDECODE_START( gfx_mastboy )
- GFXDECODE_RAM( "vram", 0, tiles8x8_layout, 0, 16 )
- GFXDECODE_ENTRY( "vrom", 0, tiles8x8_layout_2, 0, 16 )
+ GFXDECODE_RAM( "vram", 0, tiles8x8_layout, 0, 16 )
+ GFXDECODE_ENTRY( "vrom", 0, gfx_8x8x4_packed_msb, 0, 16 )
GFXDECODE_END
/* Machine Functions / Driver */
diff --git a/src/mame/drivers/mechatt.cpp b/src/mame/drivers/mechatt.cpp
index 0b28e9b1425..98e85ddf57f 100644
--- a/src/mame/drivers/mechatt.cpp
+++ b/src/mame/drivers/mechatt.cpp
@@ -475,17 +475,6 @@ INPUT_PORTS_END
/******************************************************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 32*8
-};
-
static const gfx_layout tilelayout =
{
16,16, /* 16*16 sprites */
@@ -498,7 +487,7 @@ static const gfx_layout tilelayout =
};
static GFXDECODE_START( gfx_mechatt )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout, 0, 16 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_msb, 0, 16 )
GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 512, 16 )
GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 768, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp
index 564f89a4200..be5a4a0ebe1 100644
--- a/src/mame/drivers/mirax.cpp
+++ b/src/mame/drivers/mirax.cpp
@@ -459,20 +459,9 @@ static const gfx_layout layout16 =
16*16
};
-static const gfx_layout layout8 =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3),RGN_FRAC(1,3),RGN_FRAC(0,3)},
- { 0, 1, 2, 3, 4, 5, 6, 7},
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8},
- 8*8
-};
-
static GFXDECODE_START( gfx_mirax )
- GFXDECODE_ENTRY( "gfx1", 0, layout8, 0, 8 )
- GFXDECODE_ENTRY( "gfx2", 0, layout16, 0, 8 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 8 )
+ GFXDECODE_ENTRY( "gfx2", 0, layout16, 0, 8 )
GFXDECODE_END
diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp
index d46fc18cc71..a28f8d405dd 100644
--- a/src/mame/drivers/mystwarr.cpp
+++ b/src/mame/drivers/mystwarr.cpp
@@ -849,17 +849,6 @@ INPUT_PORTS_END
/**********************************************************************************/
-static const gfx_layout bglayout_4bpp =
-{
- 16,16,
- RGN_FRAC(1,1),
- 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 },
- 16*64
-};
-
static const gfx_layout bglayout_8bpp =
{
16,16,
@@ -872,7 +861,7 @@ static const gfx_layout bglayout_8bpp =
};
static GFXDECODE_START( gfx_gaiapols )
- GFXDECODE_ENTRY( "gfx3", 0, bglayout_4bpp, 0x0000, 128 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_16x16x4_packed_msb, 0x0000, 128 )
GFXDECODE_END
static GFXDECODE_START( gfx_dadandrn )
diff --git a/src/mame/drivers/namcos86.cpp b/src/mame/drivers/namcos86.cpp
index 0a6d641ad48..6a57a466cf7 100644
--- a/src/mame/drivers/namcos86.cpp
+++ b/src/mame/drivers/namcos86.cpp
@@ -1010,17 +1010,6 @@ INPUT_PORTS_END
/*******************************************************************/
-static const gfx_layout tilelayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
32,32,
@@ -1039,9 +1028,9 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_namcos86 )
- GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 2048*0, 256 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 2048*0, 256 )
- GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 2048*1, 128 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 2048*0, 256 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 2048*0, 256 )
+ GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 2048*1, 128 )
GFXDECODE_END
/*******************************************************************/
diff --git a/src/mame/drivers/news.cpp b/src/mame/drivers/news.cpp
index 28029890885..51984c20aa1 100644
--- a/src/mame/drivers/news.cpp
+++ b/src/mame/drivers/news.cpp
@@ -103,19 +103,8 @@ static INPUT_PORTS_START( newsa )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
INPUT_PORTS_END
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 0, 4, 8, 12, 16, 20, 24, 28 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 32*8
-};
-
static GFXDECODE_START( gfx_news )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp
index 03a0ba91444..950e7a550c3 100644
--- a/src/mame/drivers/nova2001.cpp
+++ b/src/mame/drivers/nova2001.cpp
@@ -586,17 +586,6 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout layout8x8 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,32) },
- 32*8
-};
-
static const gfx_layout layout8x8_part =
{
8,8,
@@ -626,20 +615,20 @@ static GFXDECODE_START( gfx_nova2001 )
GFXDECODE_END
static GFXDECODE_START( gfx_ninjakun )
- GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 0x200, 16 ) // sprites
- GFXDECODE_ENTRY( "gfx1", 0, layout8x8, 0x000, 16 ) // fg tiles
- GFXDECODE_ENTRY( "gfx2", 0, layout8x8, 0x100, 16 ) // bg tiles
+ GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 0x200, 16 ) // sprites
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0x000, 16 ) // fg tiles
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x100, 16 ) // bg tiles
GFXDECODE_END
static GFXDECODE_START( gfx_pkunwar )
- GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 0x000, 16 ) // sprites
- GFXDECODE_ENTRY( "gfx1", 0, layout8x8, 0x100, 16 ) // bg tiles
+ GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 0x000, 16 ) // sprites
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_msb, 0x100, 16 ) // bg tiles
GFXDECODE_END
static GFXDECODE_START( gfx_raiders5 )
- GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 0x200, 16 ) // sprites
- GFXDECODE_ENTRY( "gfx1", 0, layout8x8_part, 0x000, 16 ) // fg tiles (using only 1/4th of the ROM space)
- GFXDECODE_ENTRY( "gfx2", 0, layout8x8, 0x100, 16 ) // bg tiles
+ GFXDECODE_ENTRY( "gfx1", 0, layout16x16, 0x200, 16 ) // sprites
+ GFXDECODE_ENTRY( "gfx1", 0, layout8x8_part, 0x000, 16 ) // fg tiles (using only 1/4th of the ROM space)
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x100, 16 ) // bg tiles
GFXDECODE_END
diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp
index 5b7c2fe9e1e..d22fa2923e1 100644
--- a/src/mame/drivers/pandoras.cpp
+++ b/src/mame/drivers/pandoras.cpp
@@ -243,17 +243,6 @@ INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -268,8 +257,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_pandoras )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, charlayout, 16*16, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 16*16, 16 )
GFXDECODE_END
/***************************************************************************
diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp
index 39034aa2716..fea7ac36859 100644
--- a/src/mame/drivers/paradise.cpp
+++ b/src/mame/drivers/paradise.cpp
@@ -634,17 +634,6 @@ INPUT_PORTS_END
***************************************************************************/
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
static const gfx_layout layout_8x8x8 =
{
8,8,
@@ -679,24 +668,24 @@ static const gfx_layout torus_layout_16x16x8 =
};
static GFXDECODE_START( gfx_paradise )
- GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x100, 1 ) // [0] Sprites
- GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x400, 16 ) // [1] Background
- GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x300, 1 ) // [2] Midground
- GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x000, 1 ) // [3] Foreground
+ GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x100, 1 ) // [0] Sprites
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x400, 16 ) // [1] Background
+ GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x300, 1 ) // [2] Midground
+ GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x000, 1 ) // [3] Foreground
GFXDECODE_END
static GFXDECODE_START( gfx_torus )
- GFXDECODE_ENTRY( "gfx1", 0, torus_layout_16x16x8, 0x100, 1 ) // [0] Sprites
- GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x400, 16 ) // [1] Background
- GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x300, 1 ) // [2] Midground
- GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x000, 1 ) // [3] Foreground
+ GFXDECODE_ENTRY( "gfx1", 0, torus_layout_16x16x8, 0x100, 1 ) // [0] Sprites
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x400, 16 ) // [1] Background
+ GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x300, 1 ) // [2] Midground
+ GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x000, 1 ) // [3] Foreground
GFXDECODE_END
static GFXDECODE_START( gfx_madball )
GFXDECODE_ENTRY( "gfx1", 0, torus_layout_16x16x8, 0x500, 1 ) // [0] Sprites
- GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x400, 16 ) // [1] Background
- GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x300, 1 ) // [2] Midground
- GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x000, 1 ) // [3] Foreground
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x400, 16 ) // [1] Background
+ GFXDECODE_ENTRY( "gfx3", 0, layout_8x8x8, 0x300, 1 ) // [2] Midground
+ GFXDECODE_ENTRY( "gfx4", 0, layout_8x8x8, 0x000, 1 ) // [3] Foreground
GFXDECODE_END
/***************************************************************************
diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp
index ee0f305f29f..099f5e83241 100644
--- a/src/mame/drivers/powerbal.cpp
+++ b/src/mame/drivers/powerbal.cpp
@@ -618,17 +618,6 @@ u32 powerbal_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
return 0;
}
-static const gfx_layout magicstk_charlayout =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout tilelayout =
{
16,16,
@@ -646,7 +635,7 @@ static const gfx_layout tilelayout =
static GFXDECODE_START( gfx_powerbal )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0x100, 16 ) // colors 0x100-0x1ff
- GFXDECODE_ENTRY( "gfx1", 0, magicstk_charlayout, 0x000, 16 ) // colors 0x000-0x0ff
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_planar, 0x000, 16 ) // colors 0x000-0x0ff
GFXDECODE_END
diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp
index 692e69a5b3f..9f2d98140e6 100644
--- a/src/mame/drivers/rabbit.cpp
+++ b/src/mame/drivers/rabbit.cpp
@@ -818,17 +818,6 @@ static const gfx_layout sprite_16x16x8_layout =
16*64
};
-static const gfx_layout _8x8x4_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4,0,12,8,20,16,28,24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*32
-};
-
static const gfx_layout _16x16x4_layout =
{
16,16,
@@ -872,10 +861,10 @@ static GFXDECODE_START( gfx_rabbit )
GFXDECODE_ENTRY( "gfx1", 0, sprite_16x16x8_layout, 0x0, 0x1000 ) // wrong
/* this seems to be backgrounds and tilemap gfx */
- GFXDECODE_ENTRY( "gfx2", 0, _8x8x4_layout, 0x0, 0x1000 )
- GFXDECODE_ENTRY( "gfx2", 0, _16x16x4_layout, 0x0, 0x1000 )
- GFXDECODE_ENTRY( "gfx2", 0, _8x8x8_layout, 0x0, 0x1000 )
- GFXDECODE_ENTRY( "gfx2", 0, _16x16x8_layout, 0x0, 0x1000 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_lsb, 0x0, 0x1000 )
+ GFXDECODE_ENTRY( "gfx2", 0, _16x16x4_layout, 0x0, 0x1000 )
+ GFXDECODE_ENTRY( "gfx2", 0, _8x8x8_layout, 0x0, 0x1000 )
+ GFXDECODE_ENTRY( "gfx2", 0, _16x16x8_layout, 0x0, 0x1000 )
GFXDECODE_END
diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp
index 3a30801dbcd..0052bd05615 100644
--- a/src/mame/drivers/rbmk.cpp
+++ b/src/mame/drivers/rbmk.cpp
@@ -777,17 +777,6 @@ static const gfx_layout rbmk32_layout =
32*32
};
-static const gfx_layout rbmk8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4,0,12,8,20,16,28,24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*32
-};
-
static const gfx_layout magslot16_layout = // TODO: not correct
{
16,16,
@@ -803,14 +792,14 @@ static const gfx_layout magslot16_layout = // TODO: not correct
static GFXDECODE_START( gfx_rbmk )
- GFXDECODE_ENTRY( "gfx1", 0, rbmk32_layout, 0x0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, rbmk8_layout, 0x100, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, rbmk32_layout, 0x0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_lsb, 0x100, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_magslot )
- GFXDECODE_ENTRY( "gfx1", 0, magslot16_layout, 0x000, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, rbmk8_layout, 0x100, 16 )
- GFXDECODE_ENTRY( "gfx3", 0, rbmk8_layout, 0x100, 16 ) // wrong colors
+ GFXDECODE_ENTRY( "gfx1", 0, magslot16_layout, 0x000, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_lsb, 0x100, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x4_packed_lsb, 0x100, 16 ) // wrong colors
GFXDECODE_END
void rbmk_state::video_start()
diff --git a/src/mame/drivers/realbrk.cpp b/src/mame/drivers/realbrk.cpp
index 1b035336e85..69b961966fa 100644
--- a/src/mame/drivers/realbrk.cpp
+++ b/src/mame/drivers/realbrk.cpp
@@ -713,17 +713,6 @@ static const gfx_layout layout_8x8x4 =
8*8*4
};
-static const gfx_layout layout_16x16x4 =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { 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*4 },
- { STEP16(0,16*4) },
- 16*16*4
-};
-
static const gfx_layout layout_16x16x8 =
{
16,16,
@@ -736,10 +725,10 @@ static const gfx_layout layout_16x16x8 =
};
static GFXDECODE_START( gfx_realbrk )
- GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0, 0x80 ) // [0] Backgrounds
- GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0, 0x800 ) // [1] Text
- GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0, 0x80 ) // [2] Sprites (256 colors)
- GFXDECODE_ENTRY( "gfx4", 0, layout_16x16x4, 0, 0x800 ) // [3] Sprites (16 colors)
+ GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0, 0x80 ) // [0] Backgrounds
+ GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0, 0x800 ) // [1] Text
+ GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x8, 0, 0x80 ) // [2] Sprites (256 colors)
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_16x16x4_packed_lsb, 0, 0x800 ) // [3] Sprites (16 colors)
GFXDECODE_END
static GFXDECODE_START( gfx_dai2kaku )
diff --git a/src/mame/drivers/ron.cpp b/src/mame/drivers/ron.cpp
index fb78ba8d4d7..8c0e39341b2 100644
--- a/src/mame/drivers/ron.cpp
+++ b/src/mame/drivers/ron.cpp
@@ -378,17 +378,6 @@ static INPUT_PORTS_START( ron )
PORT_BIT( 0x12, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-static const gfx_layout charlayout_1bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { RGN_FRAC(0,1) },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static const gfx_layout charlayout_2bpp =
{
8,8,
@@ -401,7 +390,7 @@ static const gfx_layout charlayout_2bpp =
};
static GFXDECODE_START( gfx_ron )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout_1bpp, 0, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 1 )
GFXDECODE_ENTRY( "gfx2", 0, charlayout_2bpp, 4, 1 )
GFXDECODE_END
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index 22c2aed3a2f..286b5a1e277 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -343,21 +343,8 @@ INPUT_PORTS_END
/**********************************************************************************/
-static const gfx_layout bglayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 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_rungun )
- GFXDECODE_ENTRY( "gfx1", 0, bglayout, 0x0000, 64 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_msb, 0x0000, 64 )
GFXDECODE_END
diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp
index 2cd8bdf4e4e..6b8456e9118 100644
--- a/src/mame/drivers/seabattl.cpp
+++ b/src/mame/drivers/seabattl.cpp
@@ -462,21 +462,10 @@ static const gfx_layout tiles32x16x3_layout =
};
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_seabattl )
GFXDECODE_ENTRY( "gfx1", 0, tiles32x16x3_layout, 0, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 8, 8 )
- GFXDECODE_ENTRY( "gfx3", 0, tiles8x8_layout, 24, 1 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x1, 8, 8 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x1, 24, 1 )
GFXDECODE_END
void seabattl_state::seabattl(machine_config &config)
diff --git a/src/mame/drivers/seicupbl.cpp b/src/mame/drivers/seicupbl.cpp
index ac0bef3dc73..e4a7b23eed1 100644
--- a/src/mame/drivers/seicupbl.cpp
+++ b/src/mame/drivers/seicupbl.cpp
@@ -518,17 +518,6 @@ void seicupbl_state::machine_reset()
{
}
-static const gfx_layout cupsocsb_spritelayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4,0,12,8,20,16,28,24, 512+4, 512+0, 512+12, 512+8, 512+20, 512+16, 512+28, 512+24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
- 32*32
-};
-
static const gfx_layout cupsocsb_8x8_tilelayout =
{
8,8,
@@ -557,7 +546,7 @@ static GFXDECODE_START( gfx_seicupbl_csb )
GFXDECODE_ENTRY( "char", 0, cupsocsb_8x8_tilelayout, 48*16, 16 )
GFXDECODE_ENTRY( "gfx3", 0, cupsocsb_tilelayout, 0*16, 32 )
GFXDECODE_ENTRY( "gfx4", 0, cupsocsb_tilelayout, 32*16, 16 ) /* unused */
- GFXDECODE_ENTRY( "sprite", 0, cupsocsb_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "sprite", 0, gfx_8x8x4_col_2x2_group_packed_lsb, 0*16, 8*16 )
GFXDECODE_ENTRY( "gfx5", 0, cupsocsb_tilelayout, 32*16, 16 )
GFXDECODE_ENTRY( "gfx6", 0, cupsocsb_tilelayout, 16*16, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/shangha3.cpp b/src/mame/drivers/shangha3.cpp
index 607fb4d0842..9fdb4d2f1e6 100644
--- a/src/mame/drivers/shangha3.cpp
+++ b/src/mame/drivers/shangha3.cpp
@@ -441,20 +441,8 @@ INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 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*4 },
- { STEP16(0,4*16) },
- 128*8
-};
-
static GFXDECODE_START( gfx_shangha3 )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_lsb, 0, 128 )
GFXDECODE_END
diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp
index 560c4fa313b..a547b62677f 100644
--- a/src/mame/drivers/sigmab98.cpp
+++ b/src/mame/drivers/sigmab98.cpp
@@ -1161,17 +1161,6 @@ void sammymdl_state::tdoboon_map(address_map &map)
***************************************************************************/
-static const gfx_layout sigmab98_16x16x4_layout =
-{
- 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 sigmab98_16x16x8_layout =
{
16,16,
@@ -1184,13 +1173,13 @@ static const gfx_layout sigmab98_16x16x8_layout =
};
static GFXDECODE_START( gfx_sigmab98 )
- GFXDECODE_ENTRY( "sprites", 0, sigmab98_16x16x4_layout, 0, 0x100/16 )
+ GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 0x100/16 )
GFXDECODE_ENTRY( "sprites", 0, sigmab98_16x16x8_layout, 0, 0x100/256 )
GFXDECODE_END
// Larger palette
static GFXDECODE_START( gfx_lufykzku )
- GFXDECODE_ENTRY( "sprites", 0, sigmab98_16x16x4_layout, 0, 0x1000/16 )
+ GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 0x1000/16 )
GFXDECODE_ENTRY( "sprites", 0, sigmab98_16x16x8_layout, 0, 0x1000/16 )
GFXDECODE_END
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp
index 8dbc37cf45e..b06b3f4ad70 100644
--- a/src/mame/drivers/snk.cpp
+++ b/src/mame/drivers/snk.cpp
@@ -3825,17 +3825,6 @@ INPUT_PORTS_END
/*********************************************************************/
-static const gfx_layout charlayout_4bpp =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { 4*1, 4*0, 4*3, 4*2, 4*5, 4*4, 4*7, 4*6 },
- { STEP8(0,4*8) },
- 32*8
-};
-
static const gfx_layout tilelayout_4bpp =
{
16,16,
@@ -3895,22 +3884,22 @@ static const gfx_layout bigspritelayout_4bpp =
/*********************************************************************/
static GFXDECODE_START( gfx_marvins )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout_4bpp, 0x180, 0x080>>4 )
- GFXDECODE_ENTRY( "fg_tiles", 0, charlayout_4bpp, 0x080, 0x080>>4 )
- GFXDECODE_ENTRY( "bg_tiles", 0, charlayout_4bpp, 0x100, 0x080>>4 )
- GFXDECODE_ENTRY( "sp16_tiles", 0, spritelayout_3bpp, 0x000, 0x080>>3 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_lsb, 0x180, 0x080>>4 )
+ GFXDECODE_ENTRY( "fg_tiles", 0, gfx_8x8x4_packed_lsb, 0x080, 0x080>>4 )
+ GFXDECODE_ENTRY( "bg_tiles", 0, gfx_8x8x4_packed_lsb, 0x100, 0x080>>4 )
+ GFXDECODE_ENTRY( "sp16_tiles", 0, spritelayout_3bpp, 0x000, 0x080>>3 )
/* colors 0x200-0x3ff contain shadows */
GFXDECODE_END
static GFXDECODE_START( gfx_tnk3 )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout_4bpp, 0x180, 0x080>>4 )
- GFXDECODE_ENTRY( "bg_tiles", 0, charlayout_4bpp, 0x080, 0x100>>4 )
- GFXDECODE_ENTRY( "sp16_tiles", 0, spritelayout_3bpp, 0x000, 0x080>>3 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_lsb, 0x180, 0x080>>4 )
+ GFXDECODE_ENTRY( "bg_tiles", 0, gfx_8x8x4_packed_lsb, 0x080, 0x100>>4 )
+ GFXDECODE_ENTRY( "sp16_tiles", 0, spritelayout_3bpp, 0x000, 0x080>>3 )
/* colors 0x200-0x3ff contain shadows */
GFXDECODE_END
static GFXDECODE_START( gfx_ikari )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout_4bpp, 0x180, 0x080>>4 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_lsb, 0x180, 0x080>>4 )
GFXDECODE_ENTRY( "bg_tiles", 0, tilelayout_4bpp, 0x100, 0x080>>4 )
GFXDECODE_ENTRY( "sp16_tiles", 0, spritelayout_3bpp, 0x000, 0x080>>3 )
GFXDECODE_ENTRY( "sp32_tiles", 0, bigspritelayout_3bpp, 0x080, 0x080>>3 )
@@ -3918,14 +3907,14 @@ static GFXDECODE_START( gfx_ikari )
GFXDECODE_END
static GFXDECODE_START( gfx_gwar )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout_4bpp, 0x000, 0x100>>4 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_lsb, 0x000, 0x100>>4 )
GFXDECODE_ENTRY( "bg_tiles", 0, tilelayout_4bpp, 0x300, 0x100>>4 )
GFXDECODE_ENTRY( "sp16_tiles", 0, spritelayout_4bpp, 0x100, 0x100>>4 )
GFXDECODE_ENTRY( "sp32_tiles", 0, bigspritelayout_4bpp, 0x200, 0x100>>4 )
GFXDECODE_END
static GFXDECODE_START( gfx_tdfever )
- GFXDECODE_ENTRY( "tx_tiles", 0, charlayout_4bpp, 0x000, 0x100>>4 )
+ GFXDECODE_ENTRY( "tx_tiles", 0, gfx_8x8x4_packed_lsb, 0x000, 0x100>>4 )
GFXDECODE_ENTRY( "bg_tiles", 0, tilelayout_4bpp, 0x200, 0x100>>4 )
GFXDECODE_ENTRY( "sp32_tiles", 0, bigspritelayout_4bpp, 0x100, 0x100>>4 )
/* colors 0x300-0x3ff contain shadows */
diff --git a/src/mame/drivers/sonson.cpp b/src/mame/drivers/sonson.cpp
index b12d9e7624e..6b7749c0989 100644
--- a/src/mame/drivers/sonson.cpp
+++ b/src/mame/drivers/sonson.cpp
@@ -192,18 +192,6 @@ static INPUT_PORTS_START( sonson )
INPUT_PORTS_END
-
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,2),
- 2,
- { RGN_FRAC(1,2), RGN_FRAC(0,2) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -218,8 +206,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_sonson )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 64*4, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x2_planar, 0, 64 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 64*4, 32 )
GFXDECODE_END
diff --git a/src/mame/drivers/spbactn.cpp b/src/mame/drivers/spbactn.cpp
index 3d56c375ac3..009a6f8c23e 100644
--- a/src/mame/drivers/spbactn.cpp
+++ b/src/mame/drivers/spbactn.cpp
@@ -381,24 +381,12 @@ static const gfx_layout proto_fgtilelayout =
-static const gfx_layout proto_spr_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
-
static GFXDECODE_START( gfx_spbactnp )
GFXDECODE_ENTRY( "gfx1", 0, proto_fgtilelayout, 0x0200, 16 + 240 )
GFXDECODE_ENTRY( "gfx2", 0, proto_fgtilelayout, 0x0300, 16 + 128 ) // wrong
- GFXDECODE_ENTRY( "gfx3", 0, proto_spr_layout, 0x0000, 16 + 384 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x4_packed_msb, 0x0000, 16 + 384 )
- GFXDECODE_ENTRY( "gfx4", 0, proto_spr_layout, 0x0000, 16 + 384 ) // more sprites maybe?
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x4_packed_msb, 0x0000, 16 + 384 ) // more sprites maybe?
GFXDECODE_END
diff --git a/src/mame/drivers/speedatk.cpp b/src/mame/drivers/speedatk.cpp
index 067c0871e2f..67cfc0238e8 100644
--- a/src/mame/drivers/speedatk.cpp
+++ b/src/mame/drivers/speedatk.cpp
@@ -283,21 +283,9 @@ static const gfx_layout charlayout_1bpp =
8*8
};
-static const gfx_layout charlayout_3bpp =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static GFXDECODE_START( gfx_speedatk )
GFXDECODE_ENTRY( "gfx1", 0, charlayout_1bpp, 0, 32 )
- GFXDECODE_ENTRY( "gfx2", 0, charlayout_3bpp, 0, 32 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 0, 32 )
GFXDECODE_END
void speedatk_state::output_w(uint8_t data)
diff --git a/src/mame/drivers/sshot.cpp b/src/mame/drivers/sshot.cpp
index 70d983037b3..7c45e14c5f2 100644
--- a/src/mame/drivers/sshot.cpp
+++ b/src/mame/drivers/sshot.cpp
@@ -330,19 +330,8 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout supershot_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_supershot )
- GFXDECODE_ENTRY( "gfx", 0, supershot_charlayout, 0, 1 )
+ GFXDECODE_ENTRY( "gfx", 0, gfx_8x8x1, 0, 1 )
GFXDECODE_END
void supershot_state::supershot(machine_config &config)
diff --git a/src/mame/drivers/statriv2.cpp b/src/mame/drivers/statriv2.cpp
index 18c46c16975..fa81b8e14a0 100644
--- a/src/mame/drivers/statriv2.cpp
+++ b/src/mame/drivers/statriv2.cpp
@@ -669,19 +669,8 @@ static GFXDECODE_START( gfx_horizontal )
GFXDECODE_END
-static const gfx_layout vertical_tiles_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { STEP8(0,1) },
- { STEP8(0,8) },
- 8*8
-};
-
static GFXDECODE_START( gfx_vertical )
- GFXDECODE_ENTRY( "tiles", 0, vertical_tiles_layout, 0, 64 )
+ GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x1, 0, 64 )
GFXDECODE_END
diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp
index d0efd3963fc..8dff861403b 100644
--- a/src/mame/drivers/stuntair.cpp
+++ b/src/mame/drivers/stuntair.cpp
@@ -435,17 +435,6 @@ INPUT_PORTS_END
***************************************************************************/
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
- 8*8
-};
-
static const gfx_layout tiles8x8x2_layout =
{
8,8,
@@ -470,8 +459,8 @@ static const gfx_layout tiles16x8x2_layout =
static GFXDECODE_START( gfx_stuntair )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x100, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tiles8x8x2_layout, 0xe0, 8 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0x100, 1 )
+ GFXDECODE_ENTRY( "gfx2", 0, tiles8x8x2_layout, 0xe0, 8 )
GFXDECODE_ENTRY( "gfx3", 0, tiles16x8x2_layout, 0xe0, 8 )
GFXDECODE_END
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index ccf039b7010..68730701d45 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -1402,17 +1402,6 @@ static const gfx_layout pbillian_charlayout =
32*8
};
-static const gfx_layout sqix_charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -1433,9 +1422,9 @@ static GFXDECODE_START( gfx_pbillian )
GFXDECODE_END
static GFXDECODE_START( gfx_sqix )
- GFXDECODE_ENTRY( "gfx1", 0x00000, sqix_charlayout, 0, 16 ) /* Chars */
- GFXDECODE_ENTRY( "gfx2", 0x00000, sqix_charlayout, 0, 16 ) /* Background tiles */
- GFXDECODE_ENTRY( "gfx3", 0x00000, spritelayout, 0, 16 ) /* Sprites */
+ GFXDECODE_ENTRY( "gfx1", 0x00000, gfx_8x8x4_packed_msb, 0, 16 ) /* Chars */
+ GFXDECODE_ENTRY( "gfx2", 0x00000, gfx_8x8x4_packed_msb, 0, 16 ) /* Background tiles */
+ GFXDECODE_ENTRY( "gfx3", 0x00000, spritelayout, 0, 16 ) /* Sprites */
GFXDECODE_END
diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp
index f64a1588f57..caf26aa974f 100644
--- a/src/mame/drivers/suprgolf.cpp
+++ b/src/mame/drivers/suprgolf.cpp
@@ -473,19 +473,8 @@ WRITE_LINE_MEMBER(suprgolf_state::adpcm_int)
}
}
-static const gfx_layout gfxlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*8*4
-};
-
static GFXDECODE_START( gfx_suprgolf )
- GFXDECODE_ENTRY( "gfx1", 0, gfxlayout, 0, 0x80 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 0x80 )
GFXDECODE_END
void suprgolf_state::machine_reset()
diff --git a/src/mame/drivers/suprslam.cpp b/src/mame/drivers/suprslam.cpp
index 6e94674721c..4fc816a7a96 100644
--- a/src/mame/drivers/suprslam.cpp
+++ b/src/mame/drivers/suprslam.cpp
@@ -219,17 +219,6 @@ INPUT_PORTS_END
/*** GFX DECODE **************************************************************/
-static const gfx_layout suprslam_8x8x4_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { 4, 0, 12, 8, 20, 16, 28, 24 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
- 8*32
-};
-
static const gfx_layout suprslam_16x16x4_layout =
{
16,16,
@@ -245,7 +234,7 @@ static const gfx_layout suprslam_16x16x4_layout =
};
static GFXDECODE_START( gfx_suprslam )
- GFXDECODE_ENTRY( "gfx1", 0, suprslam_8x8x4_layout, 0x000, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0x000, 16 )
GFXDECODE_ENTRY( "gfx2", 0, suprslam_16x16x4_layout, 0x200, 16 )
GFXDECODE_ENTRY( "gfx3", 0, suprslam_16x16x4_layout, 0x100, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp
index 898aeba7f63..0c2f7a5c5db 100644
--- a/src/mame/drivers/system16.cpp
+++ b/src/mame/drivers/system16.cpp
@@ -2038,19 +2038,8 @@ INPUT_PORTS_END
*
*************************************/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
GFXDECODE_START( gfx_sys16 )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1024 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 1024 )
GFXDECODE_END
diff --git a/src/mame/drivers/taotaido.cpp b/src/mame/drivers/taotaido.cpp
index 39ee90c1d9f..ee87c24fd00 100644
--- a/src/mame/drivers/taotaido.cpp
+++ b/src/mame/drivers/taotaido.cpp
@@ -328,22 +328,9 @@ static INPUT_PORTS_START( taotaido6 )
INPUT_PORTS_END
-static const gfx_layout layout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 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*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_taotaido )
- GFXDECODE_ENTRY( "gfx1", 0, layout, 0x000, 256 ) /* sprites */
- GFXDECODE_ENTRY( "gfx2", 0, layout, 0x300, 256 ) /* bg tiles */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_lsb, 0x000, 256 ) /* sprites */
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 0x300, 256 ) /* bg tiles */
GFXDECODE_END
diff --git a/src/mame/drivers/tbowl.cpp b/src/mame/drivers/tbowl.cpp
index f0002421a1b..24933082829 100644
--- a/src/mame/drivers/tbowl.cpp
+++ b/src/mame/drivers/tbowl.cpp
@@ -355,17 +355,6 @@ INPUT_PORTS_END
***/
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static const gfx_layout bgtilelayout =
{
16,16, /* tile size */
@@ -390,10 +379,10 @@ static const gfx_layout sprite8layout =
};
static GFXDECODE_START( gfx_tbowl )
- GFXDECODE_ENTRY( "characters", 0, charlayout, 256, 16 )
- GFXDECODE_ENTRY( "bg_tiles", 0, bgtilelayout, 768, 16 )
- GFXDECODE_ENTRY( "bg_tiles", 0, bgtilelayout, 512, 16 )
- GFXDECODE_ENTRY( "sprites", 0, sprite8layout, 0, 16 )
+ GFXDECODE_ENTRY( "characters", 0, gfx_8x8x4_packed_msb, 256, 16 )
+ GFXDECODE_ENTRY( "bg_tiles", 0, bgtilelayout, 768, 16 )
+ GFXDECODE_ENTRY( "bg_tiles", 0, bgtilelayout, 512, 16 )
+ GFXDECODE_ENTRY( "sprites", 0, sprite8layout, 0, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp
index 842ac824016..d3ccbbe46a7 100644
--- a/src/mame/drivers/terracre.cpp
+++ b/src/mame/drivers/terracre.cpp
@@ -418,23 +418,6 @@ static INPUT_PORTS_START( horekidb2 )
INPUT_PORTS_END
-static const gfx_layout tile_layout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- {
- 4, 0, 12, 8, 20, 16, 28, 24,
- 32+4, 32+0, 32+12, 32+8, 32+20, 32+16, 32+28, 32+24
- },
- {
- 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
- },
- 64*16
-};
-
static const gfx_layout sprite_layout =
{
16,16,
@@ -455,8 +438,8 @@ static const gfx_layout sprite_layout =
};
static GFXDECODE_START( gfx_terracre )
- GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 1 )
- GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 1*16, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 1 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 1*16, 16 )
GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 1*16+16*16, 256 )
GFXDECODE_END
diff --git a/src/mame/drivers/thunderj.cpp b/src/mame/drivers/thunderj.cpp
index 6ad4469637b..dbe6564df84 100644
--- a/src/mame/drivers/thunderj.cpp
+++ b/src/mame/drivers/thunderj.cpp
@@ -215,22 +215,10 @@ static const gfx_layout anlayout =
};
-static const gfx_layout pfmolayout =
-{
- 8,8,
- RGN_FRAC(1,4),
- 4,
- { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static GFXDECODE_START( gfx_thunderj )
- GFXDECODE_ENTRY( "gfx1", 0, pfmolayout, 512, 96 ) /* sprites & playfield */
- GFXDECODE_ENTRY( "gfx2", 0, pfmolayout, 256, 112 ) /* sprites & playfield */
- GFXDECODE_ENTRY( "gfx3", 0, anlayout, 0, 512 ) /* characters 8x8 */
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_planar, 512, 96 ) /* sprites & playfield */
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_planar, 256, 112 ) /* sprites & playfield */
+ GFXDECODE_ENTRY( "gfx3", 0, anlayout, 0, 512 ) /* characters 8x8 */
GFXDECODE_END
diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp
index ab1c5df7b81..b8c07eb9167 100644
--- a/src/mame/drivers/tmnt.cpp
+++ b/src/mame/drivers/tmnt.cpp
@@ -2358,20 +2358,8 @@ void tmnt_state::blswhstl(machine_config &config)
-static const gfx_layout zoomlayout =
-{
- 16,16,
- RGN_FRAC(1,1),
- 4,
- { 0, 1, 2, 3 },
- { 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*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 },
- 16*64
-};
static GFXDECODE_START( gfx_glfgreat )
- GFXDECODE_ENTRY( "zoom", 0, zoomlayout, 0x400, 16 )
+ GFXDECODE_ENTRY( "zoom", 0, gfx_16x16x4_packed_lsb, 0x400, 16 )
GFXDECODE_END
void glfgreat_state::glfgreat(machine_config &config)
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp
index 20c6f6057c8..dea7960a82b 100644
--- a/src/mame/drivers/toaplan2.cpp
+++ b/src/mame/drivers/toaplan2.cpp
@@ -3245,17 +3245,6 @@ INPUT_PORTS_END
// Text layer graphics -- ROM based in some games, RAM based in others
// See video/gp9001.cpp for the main graphics layouts
-static const gfx_layout rom_textlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { STEP8(0,4) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
#define XOR(a) WORD_XOR_LE(a)
#define LOC(x) (x+XOR(0))
@@ -3286,7 +3275,7 @@ static GFXDECODE_START( gfx_truxton2 )
GFXDECODE_END
static GFXDECODE_START( gfx_textrom )
- GFXDECODE_ENTRY( "text", 0, rom_textlayout, 64*16, 64 )
+ GFXDECODE_ENTRY( "text", 0, gfx_8x8x4_packed_msb, 64*16, 64 )
GFXDECODE_END
static GFXDECODE_START( gfx_batrider )
diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp
index fd86ce3024f..cd356908304 100644
--- a/src/mame/drivers/trackfld.cpp
+++ b/src/mame/drivers/trackfld.cpp
@@ -831,17 +831,6 @@ static INPUT_PORTS_START( yieartf )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 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
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -856,8 +845,8 @@ static const gfx_layout spritelayout =
};
static GFXDECODE_START( gfx_trackfld )
- GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, charlayout, 16*16, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 16*16, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp
index 2b4dbe8bc1b..a8578f94f00 100644
--- a/src/mame/drivers/travrusa.cpp
+++ b/src/mame/drivers/travrusa.cpp
@@ -251,17 +251,6 @@ INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static const gfx_layout spritelayout =
{
16,16,
@@ -289,12 +278,12 @@ static const gfx_layout shtrider_spritelayout =
};
static GFXDECODE_START( gfx_travrusa )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*8, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*8, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_shtrider )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, shtrider_spritelayout, 16*8, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp
index c05656e0a93..a65503afd82 100644
--- a/src/mame/drivers/tsamurai.cpp
+++ b/src/mame/drivers/tsamurai.cpp
@@ -675,17 +675,6 @@ INPUT_PORTS_END
-static const gfx_layout char_layout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0,1,2,3, 4,5,6,7 },
- { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
- 8*8
-};
-
static const gfx_layout sprite_layout =
{
32,32,
@@ -707,21 +696,10 @@ static const gfx_layout sprite_layout =
4*256
};
-static const gfx_layout tile_layout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0,1,2,3,4,5,6,7 },
- { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_tsamurai )
- GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 0, 32 )
- GFXDECODE_ENTRY( "gfx2", 0, char_layout, 0, 32 )
- GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 0, 32 )
+ GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 0, 32 )
GFXDECODE_END
diff --git a/src/mame/drivers/tugboat.cpp b/src/mame/drivers/tugboat.cpp
index 14c68c1006b..a15180f53ea 100644
--- a/src/mame/drivers/tugboat.cpp
+++ b/src/mame/drivers/tugboat.cpp
@@ -329,33 +329,11 @@ static INPUT_PORTS_START( noahsark )
INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-static const gfx_layout tilelayout =
-{
- 8,8,
- RGN_FRAC(1,3),
- 3,
- { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_tugboat )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x80, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0x80, 16 )
- GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0x00, 16 )
- GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 0x00, 16 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0x80, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x3_planar, 0x80, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, gfx_8x8x1, 0x00, 16 )
+ GFXDECODE_ENTRY( "gfx4", 0, gfx_8x8x3_planar, 0x00, 16 )
GFXDECODE_END
diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp
index 16cf79efcf2..e3f8f3062a9 100644
--- a/src/mame/drivers/twin16.cpp
+++ b/src/mame/drivers/twin16.cpp
@@ -608,29 +608,16 @@ static INPUT_PORTS_START( cuebrickj )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
-/* Graphics Layouts */
-
-static const gfx_layout tile_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 0,1,2,3 },
- { STEP8(0, 4) },
- { STEP8(0, 4*8) },
- 4*8*8
-};
-
/* Graphics Decode Info */
static GFXDECODE_START( gfx_twin16 )
- GFXDECODE_ENTRY( "fixed", 0, tile_layout, 0, 16 )
- GFXDECODE_RAM( "zipram", 0, tile_layout, 512, 16 )
+ GFXDECODE_ENTRY( "fixed", 0, gfx_8x8x4_packed_msb, 0, 16 )
+ GFXDECODE_RAM( "zipram", 0, gfx_8x8x4_packed_msb, 512, 16 )
GFXDECODE_END
static GFXDECODE_START( gfx_fround )
- GFXDECODE_ENTRY( "fixed", 0, tile_layout, 0, 16 )
- GFXDECODE_ENTRY( "tiles", 0, tile_layout, 512, 16 )
+ GFXDECODE_ENTRY( "fixed", 0, gfx_8x8x4_packed_msb, 0, 16 )
+ GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x4_packed_msb, 512, 16 )
GFXDECODE_END
/* Sound Interfaces */
diff --git a/src/mame/drivers/unkpoker.cpp b/src/mame/drivers/unkpoker.cpp
index 4f60318aaa0..0d248b3c1ee 100644
--- a/src/mame/drivers/unkpoker.cpp
+++ b/src/mame/drivers/unkpoker.cpp
@@ -138,20 +138,8 @@ static INPUT_PORTS_START( unkpoker )
INPUT_PORTS_END
-static const gfx_layout tiles8x8_layout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
-
static GFXDECODE_START( gfx_unkpoker )
- GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
+ GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x1, 0, 1 )
GFXDECODE_END
diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp
index 0688f5b4505..839f90769a8 100644
--- a/src/mame/drivers/warpwarp.cpp
+++ b/src/mame/drivers/warpwarp.cpp
@@ -685,27 +685,16 @@ INPUT_PORTS_END
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 1,
- { 0 },
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8
-};
-
static GFXDECODE_START( gfx_1k )
- GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 4 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, gfx_8x8x1, 0, 4 )
GFXDECODE_END
static GFXDECODE_START( gfx_2k )
- GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 2 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, gfx_8x8x1, 0, 2 )
GFXDECODE_END
static GFXDECODE_START( gfx_color )
- GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 256 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, gfx_8x8x1, 0, 256 )
GFXDECODE_END
diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp
index 4c1692234e0..9a30af26cf5 100644
--- a/src/mame/drivers/xavix.cpp
+++ b/src/mame/drivers/xavix.cpp
@@ -1234,17 +1234,6 @@ INPUT_PORTS_END
/* correct, 4bpp gfxs */
-static const gfx_layout charlayout =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { STEP4(0,1) },
- { 1*4,0*4,3*4,2*4,5*4,4*4,7*4,6*4 },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
static const gfx_layout char16layout =
{
16,16,
@@ -1279,7 +1268,7 @@ static const gfx_layout char16layout8bpp =
};
static GFXDECODE_START( gfx_xavix )
- GFXDECODE_ENTRY( "bios", 0, charlayout, 0, 16 )
+ GFXDECODE_ENTRY( "bios", 0, gfx_8x8x4_packed_lsb, 0, 16 )
GFXDECODE_ENTRY( "bios", 0, char16layout, 0, 16 )
GFXDECODE_ENTRY( "bios", 0, charlayout8bpp, 0, 1 )
GFXDECODE_ENTRY( "bios", 0, char16layout8bpp, 0, 1 )
diff --git a/src/mame/includes/exzisus.h b/src/mame/includes/exzisus.h
deleted file mode 100644
index ee3275c2fea..00000000000
--- a/src/mame/includes/exzisus.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Yochizo
-#ifndef MAME_INCLUDES_EXZIUS_H
-#define MAME_INCLUDES_EXZIUS_H
-
-#pragma once
-
-#include "emupal.h"
-
-class exzisus_state : public driver_device
-{
-public:
- exzisus_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_cpuc(*this, "cpuc"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_objectram1(*this, "objectram1"),
- m_videoram1(*this, "videoram1"),
- m_sharedram_ac(*this, "sharedram_ac"),
- m_sharedram_ab(*this, "sharedram_ab"),
- m_objectram0(*this, "objectram0"),
- m_videoram0(*this, "videoram0")
- { }
-
- void exzisus(machine_config &config);
-
-private:
- required_device<cpu_device> m_cpuc;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<palette_device> m_palette;
-
- required_shared_ptr<uint8_t> m_objectram1;
- required_shared_ptr<uint8_t> m_videoram1;
- required_shared_ptr<uint8_t> m_sharedram_ac;
- required_shared_ptr<uint8_t> m_sharedram_ab;
- required_shared_ptr<uint8_t> m_objectram0;
- required_shared_ptr<uint8_t> m_videoram0;
-
- void cpua_bankswitch_w(uint8_t data);
- void cpub_bankswitch_w(uint8_t data);
- void coincounter_w(uint8_t data);
- void cpub_reset_w(uint8_t data);
-
- virtual void machine_start() override;
-
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void cpua_map(address_map &map);
- void cpub_map(address_map &map);
- void cpuc_map(address_map &map);
- void sound_map(address_map &map);
-};
-
-#endif // MAME_INCLUDES_EXZIUS_H
diff --git a/src/mame/video/exzisus.cpp b/src/mame/video/exzisus.cpp
deleted file mode 100644
index e4b4badf63e..00000000000
--- a/src/mame/video/exzisus.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Yochizo
-/***************************************************************************
-
-Functions to emulate the video hardware of the machine.
-
- Video hardware of this hardware is almost similar with "mexico86". So,
- most routines are derived from mexico86 driver.
-
-***************************************************************************/
-
-
-#include "emu.h"
-#include "includes/exzisus.h"
-
-
-/***************************************************************************
- Screen refresh
-***************************************************************************/
-
-uint32_t exzisus_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs;
- int sx, sy, xc, yc;
- int gfx_num, gfx_attr, gfx_offs;
-
- /* Is this correct ? */
- bitmap.fill(1023, cliprect);
-
- /* ---------- 1st TC0010VCU ---------- */
- sx = 0;
- for (offs = 0 ; offs < m_objectram0.bytes() ; offs += 4)
- {
- int height;
-
- /* Skip empty sprites. */
- if ( !(*(uint32_t *)(&m_objectram0[offs])) )
- {
- continue;
- }
-
- gfx_num = m_objectram0[offs + 1];
- gfx_attr = m_objectram0[offs + 3];
-
- if ((gfx_num & 0x80) == 0) /* 16x16 sprites */
- {
- gfx_offs = ((gfx_num & 0x7f) << 3);
- height = 2;
-
- sx = m_objectram0[offs + 2];
- sx |= (gfx_attr & 0x40) << 2;
- }
- else /* tilemaps (each sprite is a 16x256 column) */
- {
- gfx_offs = ((gfx_num & 0x3f) << 7) + 0x0400;
- height = 32;
-
- if (gfx_num & 0x40) /* Next column */
- {
- sx += 16;
- }
- else
- {
- sx = m_objectram0[offs + 2];
- sx |= (gfx_attr & 0x40) << 2;
- }
- }
-
- sy = 256 - (height << 3) - (m_objectram0[offs]);
-
- for (xc = 0 ; xc < 2 ; xc++)
- {
- int goffs = gfx_offs;
- for (yc = 0 ; yc < height ; yc++)
- {
- int code, color, x, y;
-
- code = (m_videoram0[goffs + 1] << 8) | m_videoram0[goffs];
- color = (m_videoram0[goffs + 1] >> 6) | (gfx_attr & 0x0f);
- x = (sx + (xc << 3)) & 0xff;
- y = (sy + (yc << 3)) & 0xff;
-
- if (flip_screen())
- {
- x = 248 - x;
- y = 248 - y;
- }
-
- m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
- code & 0x3fff,
- color,
- flip_screen(), flip_screen(),
- x, y, 15);
- goffs += 2;
- }
- gfx_offs += height << 1;
- }
- }
-
- /* ---------- 2nd TC0010VCU ---------- */
- sx = 0;
- for (offs = 0 ; offs < m_objectram1.bytes() ; offs += 4)
- {
- int height;
-
- /* Skip empty sprites. */
- if ( !(*(uint32_t *)(&m_objectram1[offs])) )
- {
- continue;
- }
-
- gfx_num = m_objectram1[offs + 1];
- gfx_attr = m_objectram1[offs + 3];
-
- if ((gfx_num & 0x80) == 0) /* 16x16 sprites */
- {
- gfx_offs = ((gfx_num & 0x7f) << 3);
- height = 2;
-
- sx = m_objectram1[offs + 2];
- sx |= (gfx_attr & 0x40) << 2;
- }
- else /* tilemaps (each sprite is a 16x256 column) */
- {
- gfx_offs = ((gfx_num & 0x3f) << 7) + 0x0400; ///
- height = 32;
-
- if (gfx_num & 0x40) /* Next column */
- {
- sx += 16;
- }
- else
- {
- sx = m_objectram1[offs + 2];
- sx |= (gfx_attr & 0x40) << 2;
- }
- }
- sy = 256 - (height << 3) - (m_objectram1[offs]);
-
- for (xc = 0 ; xc < 2 ; xc++)
- {
- int goffs = gfx_offs;
- for (yc = 0 ; yc < height ; yc++)
- {
- int code, color, x, y;
-
- code = (m_videoram1[goffs + 1] << 8) | m_videoram1[goffs];
- color = (m_videoram1[goffs + 1] >> 6) | (gfx_attr & 0x0f);
- x = (sx + (xc << 3)) & 0xff;
- y = (sy + (yc << 3)) & 0xff;
-
- if (flip_screen())
- {
- x = 248 - x;
- y = 248 - y;
- }
-
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
- code & 0x3fff,
- color,
- flip_screen(), flip_screen(),
- x, y, 15);
- goffs += 2;
- }
- gfx_offs += height << 1;
- }
- }
- return 0;
-}