From de6510ffa5fa0d10ddbe1cd62467de956387a76a Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 5 Jun 2019 17:47:38 +0900 Subject: [PATCH] emu/video/generic.cpp : Add packed, raw case of generic gfx layouts, example usages --- src/emu/video/generic.cpp | 48 +++++++++++++++++++++++++++++++++++ src/emu/video/generic.h | 8 ++++++ src/mame/drivers/f1gp.cpp | 48 +++++------------------------------ src/mame/drivers/pgm2.cpp | 13 +--------- src/mame/drivers/powerins.cpp | 19 +++----------- src/mame/drivers/psikyosh.cpp | 26 ++----------------- 6 files changed, 69 insertions(+), 93 deletions(-) diff --git a/src/emu/video/generic.cpp b/src/emu/video/generic.cpp index e9356e05037..9cce80ff10e 100644 --- a/src/emu/video/generic.cpp +++ b/src/emu/video/generic.cpp @@ -92,3 +92,51 @@ const gfx_layout gfx_16x16x4_planar = { STEP16(0,16) }, 16*16 }; + +const gfx_layout gfx_8x8x4_packed_msb = +{ + 8,8, + RGN_FRAC(1,1), + 4, + { STEP4(0,1) }, + { STEP8(0,4) }, // x order : hi nibble first, low nibble second + { STEP8(0,4*8) }, + 8*8*4 +}; + +const gfx_layout gfx_8x8x4_packed_lsb = +{ + 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 }, // x order : low nibble first, hi nibble second + { STEP8(0,4*8) }, + 8*8*4 +}; + +GFXLAYOUT_RAW(gfx_8x8x8_raw, 8, 8, 8*8, 8*8*8); + +const gfx_layout gfx_16x16x4_packed_msb = +{ + 16,16, + RGN_FRAC(1,1), + 4, + { STEP4(0,1) }, + { STEP16(0,4) }, // x order : hi nibble first, low nibble second + { STEP16(0,4*16) }, + 16*16*4 +}; + +const gfx_layout gfx_16x16x4_packed_lsb = +{ + 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 }, // x order : low nibble first, hi nibble second + { STEP16(0,4*16) }, + 16*16*4 +}; + +GFXLAYOUT_RAW(gfx_16x16x8_raw, 16, 16, 16*8, 16*16*8); diff --git a/src/emu/video/generic.h b/src/emu/video/generic.h index 3dbb717018d..9c1f30bc7b3 100644 --- a/src/emu/video/generic.h +++ b/src/emu/video/generic.h @@ -28,4 +28,12 @@ extern const gfx_layout gfx_8x8x6_planar; extern const gfx_layout gfx_16x16x4_planar; +extern const gfx_layout gfx_8x8x4_packed_msb; +extern const gfx_layout gfx_8x8x4_packed_lsb; +extern const gfx_layout gfx_8x8x8_raw; + +extern const gfx_layout gfx_16x16x4_packed_msb; +extern const gfx_layout gfx_16x16x4_packed_lsb; +extern const gfx_layout gfx_16x16x8_raw; + #endif /* MAME_EMU_VIDEO_GENERIC_H */ diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp index 31792707dfc..0dd158e7ec8 100644 --- a/src/mame/drivers/f1gp.cpp +++ b/src/mame/drivers/f1gp.cpp @@ -316,51 +316,17 @@ INPUT_PORTS_END -static const gfx_layout charlayout = -{ - 8,8, - RGN_FRAC(1,1), - 8, - { STEP8(0,1) }, - { STEP8(0,8) }, - { STEP8(0,8*8) }, - 8*8*8 -}; - -static const gfx_layout tilelayout = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { STEP4(0,1) }, - { STEP16(0,4) }, - { STEP16(0,4*16) }, - 16*16*4 -}; - -static const gfx_layout spritelayout = -{ - 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,4*16) }, - 16*16*4 -}; - static GFXDECODE_START( gfx_f1gp ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x000, 1 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x100, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x200, 16 ) - GFXDECODE_RAM( "rozgfxram", 0, tilelayout, 0x300, 16 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0x000, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 0x100, 16 ) + GFXDECODE_ENTRY( "gfx3", 0, gfx_16x16x4_packed_lsb, 0x200, 16 ) + GFXDECODE_RAM( "rozgfxram", 0, gfx_16x16x4_packed_msb, 0x300, 16 ) GFXDECODE_END static GFXDECODE_START( gfx_f1gp2 ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x000, 1 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0x200, 32 ) - GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0x100, 16 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x8_raw, 0x000, 1 ) + GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 0x200, 32 ) + GFXDECODE_ENTRY( "gfx3", 0, gfx_16x16x4_packed_msb, 0x100, 16 ) GFXDECODE_END diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index 00faaf66c0c..32db3b69231 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -729,17 +729,6 @@ void pgm2_state::machine_reset() module_clk_cnt = 151; // this needed because of "false" clock pulse happen during gpio init } -static const gfx_layout tiles8x8_layout = -{ - 8,8, - RGN_FRAC(1,1), - 4, - { STEP4(0,1) }, - { 4, 0, 12, 8, 20, 16, 28, 24 }, - { STEP8(0,4*8) }, - 32*8 -}; - static const gfx_layout tiles32x32x8_layout = { 32,32, @@ -752,7 +741,7 @@ static const gfx_layout tiles32x32x8_layout = }; static GFXDECODE_START( pgm2_tx ) - GFXDECODE_ENTRY( "tiles", 0, tiles8x8_layout, 0, 0x800/4/0x10 ) + GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x4_packed_lsb, 0, 0x800/4/0x10 ) GFXDECODE_END static GFXDECODE_START( pgm2_bg ) diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index a2b80a27c06..0bc3781dfa1 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -243,19 +243,6 @@ INPUT_PORTS_END ***************************************************************************/ -/* 8x8x4 tiles */ -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 -}; - - /* 16x16x4 tiles (made of two 8x16 tiles) */ static const gfx_layout layout_16x16x4 = { @@ -270,9 +257,9 @@ static const gfx_layout layout_16x16x4 = static GFXDECODE_START( gfx_powerins ) - GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0x000, 0x20 ) // [0] Tiles - GFXDECODE_ENTRY( "gfx2", 0, layout_8x8x4, 0x200, 0x10 ) // [1] Tiles - GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x4, 0x400, 0x40 ) // [2] Sprites + GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0x000, 0x20 ) // [0] Tiles + GFXDECODE_ENTRY( "gfx2", 0, gfx_8x8x4_packed_msb, 0x200, 0x10 ) // [1] Tiles + GFXDECODE_ENTRY( "gfx3", 0, layout_16x16x4, 0x400, 0x40 ) // [2] Sprites GFXDECODE_END diff --git a/src/mame/drivers/psikyosh.cpp b/src/mame/drivers/psikyosh.cpp index e705efec6e7..cf9a4458c76 100644 --- a/src/mame/drivers/psikyosh.cpp +++ b/src/mame/drivers/psikyosh.cpp @@ -283,31 +283,9 @@ Notes: #include "speaker.h" -static const gfx_layout layout_16x16x4 = -{ - 16,16, - RGN_FRAC(1,1), - 4, - {STEP4(0,1)}, - {STEP16(0,4)}, - {STEP16(0,16*4)}, - 16*16*4 -}; - -static const gfx_layout layout_16x16x8 = -{ - 16,16, - RGN_FRAC(1,1), - 8, - {STEP8(0,1)}, - {STEP16(0,8)}, - {STEP16(0,16*8)}, - 16*16*8 -}; - static GFXDECODE_START( gfx_psikyosh ) - GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4, 0x000, 0x100 ) // 4bpp tiles - GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x100 ) // 8bpp tiles + GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_msb, 0x000, 0x100 ) // 4bpp tiles + GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x8_raw, 0x000, 0x100 ) // 8bpp tiles GFXDECODE_END void psikyosh_state::eeprom_w(u8 data)