summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2015-07-30 12:51:27 +0200
committer Dirk Best <mail@dirk-best.de>2015-07-30 14:18:42 +0200
commite17d40a250fdac8f6913e543cd42bd4e8551c74f (patch)
tree152adb9dcc4d5bfdb449272663c5745cf8dbf384
parent75d6cb9f0db6f2c2ccc0fa0f21c66d336cc93f95 (diff)
jollyjgr: use standard 3-bit rgb palette for the bitmap colors
-rw-r--r--src/mame/drivers/jollyjgr.c47
1 files changed, 20 insertions, 27 deletions
diff --git a/src/mame/drivers/jollyjgr.c b/src/mame/drivers/jollyjgr.c
index b45d3f18d57..8700485526f 100644
--- a/src/mame/drivers/jollyjgr.c
+++ b/src/mame/drivers/jollyjgr.c
@@ -116,7 +116,8 @@ public:
m_bulletram(*this, "bulletram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_bm_palette(*this, "bm_palette") { }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
@@ -144,13 +145,14 @@ public:
virtual void machine_reset();
virtual void video_start();
DECLARE_PALETTE_INIT(jollyjgr);
- UINT32 screen_update_jollyjgr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- UINT32 screen_update_fspider(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_jollyjgr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_fspider(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(jollyjgr_interrupt);
- void draw_bitmap( bitmap_ind16 &bitmap );
+ void draw_bitmap( bitmap_rgb32 &bitmap );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ required_device<palette_device> m_bm_palette;
};
@@ -415,13 +417,12 @@ INPUT_PORTS_END
*
*************************************/
+/* tilemap / sprites palette */
PALETTE_INIT_MEMBER(jollyjgr_state, jollyjgr)
{
const UINT8 *color_prom = memregion("proms")->base();
- int i;
- /* tilemap / sprites palette */
- for (i = 0; i < 32; i++)
+ for (int i = 0; i < 32; i++)
{
int bit0, bit1, bit2, r, g, b;
@@ -443,10 +444,6 @@ PALETTE_INIT_MEMBER(jollyjgr_state, jollyjgr)
palette.set_pen_color(i, rgb_t(r,g,b));
color_prom++;
}
-
- /* bitmap palette */
- for (i = 0;i < 8;i++)
- palette.set_pen_color(32 + i, pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2));
}
/* Tilemap is the same as in Galaxian */
@@ -465,7 +462,7 @@ void jollyjgr_state::video_start()
m_bg_tilemap->set_scroll_cols(32);
}
-void jollyjgr_state::draw_bitmap( bitmap_ind16 &bitmap )
+void jollyjgr_state::draw_bitmap( bitmap_rgb32 &bitmap )
{
int x, y, count;
int i, bit0, bit1, bit2;
@@ -486,13 +483,13 @@ void jollyjgr_state::draw_bitmap( bitmap_ind16 &bitmap )
if(color)
{
if(m_flip_x && m_flip_y)
- bitmap.pix16(y, x * 8 + i) = color + 32;
+ bitmap.pix32(y, x * 8 + i) = m_bm_palette->pen_color(color);
else if(m_flip_x && !m_flip_y)
- bitmap.pix16(255 - y, x * 8 + i) = color + 32;
+ bitmap.pix32(255 - y, x * 8 + i) = m_bm_palette->pen_color(color);
else if(!m_flip_x && m_flip_y)
- bitmap.pix16(y, 255 - x * 8 - i) = color + 32;
+ bitmap.pix32(y, 255 - x * 8 - i) = m_bm_palette->pen_color(color);
else
- bitmap.pix16(255 - y, 255 - x * 8 - i) = color + 32;
+ bitmap.pix32(255 - y, 255 - x * 8 - i) = m_bm_palette->pen_color(color);
}
}
@@ -501,7 +498,7 @@ void jollyjgr_state::draw_bitmap( bitmap_ind16 &bitmap )
}
}
-UINT32 jollyjgr_state::screen_update_jollyjgr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 jollyjgr_state::screen_update_jollyjgr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
UINT8 *spriteram = m_spriteram;
int offs;
@@ -556,7 +553,7 @@ UINT32 jollyjgr_state::screen_update_jollyjgr(screen_device &screen, bitmap_ind1
return 0;
}
-UINT32 jollyjgr_state::screen_update_fspider(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 jollyjgr_state::screen_update_fspider(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// Draw bg and sprites
screen_update_jollyjgr(screen, bitmap, cliprect);
@@ -569,8 +566,8 @@ UINT32 jollyjgr_state::screen_update_fspider(screen_device &screen, bitmap_ind16
UINT8 sy=~m_bulletram[offs];
UINT8 sx=~m_bulletram[offs|1];
UINT16 bc=(offs<4)?
- 32+7: // player, white
- 32+3; // enemy, yellow
+ 7: // player, white
+ 3; // enemy, yellow
if (m_flip_y) sy^=0xff;
if (m_flip_x) sx+=8;
@@ -578,7 +575,7 @@ UINT32 jollyjgr_state::screen_update_fspider(screen_device &screen, bitmap_ind16
if (sy>=cliprect.min_y && sy<=cliprect.max_y)
for (int x=sx-4;x<sx;x++)
if (x>=cliprect.min_x && x<=cliprect.max_x)
- bitmap.pix16(sy, x)=bc;
+ bitmap.pix32(sy, x) = m_bm_palette->pen_color(bc);
}
return 0;
@@ -653,13 +650,11 @@ void jollyjgr_state::machine_reset()
}
static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state )
-
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 3579545) /* 3,579545 MHz */
MCFG_CPU_PROGRAM_MAP(jollyjgr_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", jollyjgr_state, jollyjgr_interrupt)
-
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -667,11 +662,11 @@ static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state )
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_jollyjgr)
- MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", jollyjgr)
- MCFG_PALETTE_ADD("palette", 32+8) /* 32 for tilemap and sprites + 8 for the bitmap */
+ MCFG_PALETTE_ADD("palette", 32) // tilemap and sprites
MCFG_PALETTE_INIT_OWNER(jollyjgr_state, jollyjgr)
+ MCFG_PALETTE_ADD_3BIT_RGB("bm_palette") // bitmap
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -681,13 +676,11 @@ static MACHINE_CONFIG_START( jollyjgr, jollyjgr_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( fspider, jollyjgr )
-
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(fspider_map)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_fspider)
-
MACHINE_CONFIG_END
/*************************************