m62 proposed cleanups.

I've split the massive PROM blocks up into something more modern looking (the single PROM region with all PROMs crammed into it is an old MAME thing from when only one PROM region was allowed)  I've also made use of multipe palettes and gfxdecode structures (required using rgb32 to draw to)

As the boards are quite modular this seems to make sense to me, the palette for the sprites and the sprite decode + sprite palette decode is the same across all games while the rest of the hardware changes a bit.  This should allow us to step closer to converting the various boards into devices and piecing them together more logically.
This commit is contained in:
David Haywood 2017-07-03 19:39:34 +01:00
parent 0fa0fae6f8
commit 17871880c3
3 changed files with 590 additions and 455 deletions

File diff suppressed because it is too large Load Diff

View File

@ -12,9 +12,17 @@ public:
m_m62_tileram(*this, "m62_tileram"),
m_m62_textram(*this, "m62_textram"),
m_scrollram(*this, "scrollram"),
m_sprite_height_prom(*this, "spr_height_prom"),
m_sprite_color_proms(*this, "spr_color_proms"),
m_chr_color_proms(*this, "chr_color_proms"),
m_fg_color_proms(*this, "fg_color_proms"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_fg_decode(*this, "fg_decode"),
m_spr_decode(*this, "spr_decode"),
m_chr_decode(*this, "chr_decode"),
m_fg_palette(*this, "fg_palette"),
m_spr_palette(*this, "spr_palette"),
m_chr_palette(*this, "chr_palette"),
m_audio(*this, "irem_audio")
{ }
@ -29,8 +37,10 @@ public:
tilemap_t* m_bg_tilemap;
tilemap_t* m_fg_tilemap;
int m_flipscreen;
const uint8_t *m_sprite_height_prom;
required_region_ptr<uint8_t> m_sprite_height_prom;
required_region_ptr<uint8_t> m_sprite_color_proms;
required_region_ptr<uint8_t> m_chr_color_proms;
optional_region_ptr<uint8_t> m_fg_color_proms;
int32_t m_m62_background_hscroll;
int32_t m_m62_background_vscroll;
uint8_t m_kidniki_background_bank;
@ -88,41 +98,48 @@ public:
TILE_GET_INFO_MEMBER(get_youjyudn_bg_tile_info);
TILE_GET_INFO_MEMBER(get_youjyudn_fg_tile_info);
TILE_GET_INFO_MEMBER(get_horizon_bg_tile_info);
DECLARE_MACHINE_START(battroad);
void machine_init_save();
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(m62);
DECLARE_PALETTE_INIT(m62_spr);
DECLARE_PALETTE_INIT(m62_chr);
DECLARE_PALETTE_INIT(m62_lotlot_fg);
DECLARE_PALETTE_INIT(m62_battroad_fg);
DECLARE_VIDEO_START(kungfum);
DECLARE_VIDEO_START(battroad);
DECLARE_PALETTE_INIT(battroad);
DECLARE_VIDEO_START(ldrun2);
DECLARE_VIDEO_START(ldrun4);
DECLARE_VIDEO_START(lotlot);
DECLARE_PALETTE_INIT(lotlot);
DECLARE_VIDEO_START(kidniki);
DECLARE_VIDEO_START(spelunkr);
DECLARE_VIDEO_START(spelunk2);
DECLARE_PALETTE_INIT(spelunk2);
DECLARE_VIDEO_START(youjyudn);
DECLARE_VIDEO_START(horizon);
uint32_t screen_update_ldrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_kungfum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_battroad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_ldrun4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_lotlot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_kidniki(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_spelunkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_spelunk2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_youjyudn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_horizon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void m62_amplify_contrast(palette_t *palette, uint32_t numcolors);
uint32_t screen_update_ldrun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_kungfum(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_battroad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_ldrun3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_ldrun4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_lotlot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_kidniki(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_spelunkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_spelunk2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_youjyudn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_horizon(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void m62_amplify_contrast(bool include_fg);
void register_savestate( );
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority );
void draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority );
void m62_start( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 );
void m62_textlayer( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
optional_device<gfxdecode_device> m_fg_decode;
required_device<gfxdecode_device> m_spr_decode;
required_device<gfxdecode_device> m_chr_decode;
optional_device<palette_device> m_fg_palette;
required_device<palette_device> m_spr_palette;
required_device<palette_device> m_chr_palette;
required_device<irem_audio_device> m_audio;
};

View File

@ -105,56 +105,22 @@ static const res_net_info battroad_char_net_info =
static const res_net_decode_info m62_tile_decode_info =
static const res_net_decode_info m62_decode_info =
{
1, /* single PROM per color */
0x000, 0x0ff, /* start/end */
/* R G B */
{ 0x000, 0x200, 0x400 }, /* offsets */
{ 0x000, 0x100, 0x200 }, /* offsets */
{ 0, 0, 0 }, /* shifts */
{ 0x0f, 0x0f, 0x0f } /* masks */
};
static const res_net_decode_info m62_sprite_decode_info =
{
1, /* single PROM per color */
0x000, 0x0ff, /* start/end */
/* R G B */
{ 0x100, 0x300, 0x500 }, /* offsets */
{ 0, 0, 0 }, /* shifts */
{ 0x0f, 0x0f, 0x0f } /* masks */
};
static const res_net_decode_info lotlot_tile_decode_info =
{
1, /* single PROM per color */
0x000, 0x17f, /* start/end */
/* R G B */
{ 0x000, 0x300, 0x600 }, /* offsets */
{ 0, 0, 0 }, /* shifts */
{ 0x0f, 0x0f, 0x0f } /* masks */
};
static const res_net_decode_info lotlot_sprite_decode_info =
{
1, /* single PROM per color */
0x000, 0x17f, /* start/end */
/* R G B */
{ 0x180, 0x480, 0x780 }, /* offsets */
{ 0, 0, 0 }, /* shifts */
{ 0x0f, 0x0f, 0x0f } /* masks */
};
static const res_net_decode_info battroad_char_decode_info =
{
1, /* single PROM per color */
0x000, 0x01f, /* start/end */
/* R G B */
{ 0x600, 0x600, 0x600 }, /* offsets */
{ 0x000, 0x000, 0x000 }, /* offsets */
{ 6, 3, 0 }, /* shifts */
{ 0x03, 0x07, 0x07 } /* masks */
};
@ -171,108 +137,80 @@ static const res_net_decode_info spelunk2_tile_decode_info =
};
static const res_net_decode_info spelunk2_sprite_decode_info =
void m62_state::m62_amplify_contrast(bool include_fg)
{
1, /* single PROM per color */
0x000, 0x0ff, /* start/end */
/* R G B */
{ 0x400, 0x500, 0x600 }, /* offsets */
{ 0, 0, 0 }, /* shifts */
{ 0x0f, 0x0f, 0x0f } /* masks */
};
palette_device* pals[3];
pals[0] = m_chr_palette;
pals[1] = m_spr_palette;
if (m_fg_palette && include_fg)
pals[2] = m_fg_palette;
else
pals[2] = 0;
void m62_state::m62_amplify_contrast(palette_t *palette, uint32_t numcolors)
{
// m62 palette is very dark, so amplify default contrast
uint32_t i, ymax=1;
if (!numcolors) numcolors = palette->num_colors();
// find maximum brightness
for (i=0;i < numcolors;i++)
for (int j = 0;j < 3;j++)
{
rgb_t rgb = palette->entry_color(i);
uint32_t y = 299 * rgb.r() + 587 * rgb.g() + 114 * rgb.b();
ymax = std::max(ymax, y);
if (pals[j])
{
// find maximum brightness
for (i = 0;i < pals[j]->palette()->num_colors();i++)
{
rgb_t rgb = pals[j]->palette()->entry_color(i);
uint32_t y = 299 * rgb.r() + 587 * rgb.g() + 114 * rgb.b();
ymax = std::max(ymax, y);
}
}
}
palette->set_contrast(255000.0/ymax);
for (int j = 0;j < 3;j++)
{
if (pals[j])
{
pals[j]->palette()->set_contrast(255000.0 / ymax);
}
}
}
PALETTE_INIT_MEMBER(m62_state, m62)
PALETTE_INIT_MEMBER(m62_state, m62_spr)
{
const uint8_t *color_prom = memregion("proms")->base();
std::vector<rgb_t> rgb;
compute_res_net_all(rgb, color_prom, m62_tile_decode_info, m62_tile_net_info);
compute_res_net_all(rgb, m_sprite_color_proms, m62_decode_info, m62_sprite_net_info);
palette.set_pen_colors(0x000, rgb);
}
compute_res_net_all(rgb, color_prom, m62_sprite_decode_info, m62_sprite_net_info);
palette.set_pen_colors(0x100, rgb);
PALETTE_INIT_MEMBER(m62_state, m62_chr)
{
std::vector<rgb_t> rgb;
compute_res_net_all(rgb, m_chr_color_proms, m62_decode_info, m62_tile_net_info);
palette.set_pen_colors(0x000, rgb);
}
m62_amplify_contrast(palette.palette(),0);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x600;
PALETTE_INIT_MEMBER(m62_state, m62_lotlot_fg)
{
std::vector<rgb_t> rgb;
compute_res_net_all(rgb, m_fg_color_proms, m62_decode_info, m62_tile_net_info);
palette.set_pen_colors(0x000, rgb);
}
PALETTE_INIT_MEMBER(m62_state,lotlot)
PALETTE_INIT_MEMBER(m62_state,m62_battroad_fg)
{
const uint8_t *color_prom = memregion("proms")->base();
std::vector<rgb_t> rgb;
compute_res_net_all(rgb, color_prom, lotlot_tile_decode_info, m62_tile_net_info);
palette.set_pen_colors(0x000, rgb);
compute_res_net_all(rgb, color_prom, lotlot_sprite_decode_info, m62_sprite_net_info);
palette.set_pen_colors(0x180, rgb);
m62_amplify_contrast(palette.palette(),0);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x900;
}
PALETTE_INIT_MEMBER(m62_state,battroad)
{
const uint8_t *color_prom = memregion("proms")->base();
std::vector<rgb_t> rgb;
// m62 palette
compute_res_net_all(rgb, color_prom, m62_tile_decode_info, m62_tile_net_info);
palette.set_pen_colors(0x000, rgb);
compute_res_net_all(rgb, color_prom, m62_sprite_decode_info, m62_sprite_net_info);
palette.set_pen_colors(0x100, rgb);
m62_amplify_contrast(palette.palette(),0x200);
// custom palette for foreground
compute_res_net_all(rgb, color_prom, battroad_char_decode_info, battroad_char_net_info);
palette.set_pen_colors(0x200, rgb);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x620;
std::vector<rgb_t> rgb;
compute_res_net_all(rgb, m_fg_color_proms, battroad_char_decode_info, battroad_char_net_info);
palette.set_pen_colors(0x000, rgb);
}
PALETTE_INIT_MEMBER(m62_state,spelunk2)
{
const uint8_t *color_prom = memregion("proms")->base();
std::vector<rgb_t> rgb;
compute_res_net_all(rgb, color_prom, spelunk2_tile_decode_info, m62_tile_net_info);
compute_res_net_all(rgb, m_chr_color_proms, spelunk2_tile_decode_info, m62_tile_net_info);
palette.set_pen_colors(0x000, rgb);
compute_res_net_all(rgb, color_prom, spelunk2_sprite_decode_info, m62_sprite_net_info);
palette.set_pen_colors(0x200, rgb);
m62_amplify_contrast(palette.palette(),0);
/* we'll need this at run time */
m_sprite_height_prom = color_prom + 0x700;
}
@ -341,7 +279,7 @@ WRITE8_MEMBER(m62_state::m62_textram_w)
}
void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority )
void m62_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colormask, int prioritymask, int priority )
{
int offs;
@ -388,7 +326,7 @@ void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, i
do
{
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
m_spr_decode->gfx(0)->transpen(bitmap,cliprect,
code + i * incr,col,
flipx,flipy,
sx,sy + 16 * i,0);
@ -401,7 +339,7 @@ void m62_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, i
void m62_state::m62_start( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 )
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2);
m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2);
register_savestate();
@ -414,7 +352,7 @@ void m62_state::m62_start( tilemap_get_info_delegate tile_get_info, int rows, in
void m62_state::m62_textlayer( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 )
{
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2);
m_fg_tilemap = &machine().tilemap().create(*m_fg_decode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2);
if (rows != 0)
m_fg_tilemap->set_scroll_rows(rows);
@ -455,7 +393,7 @@ VIDEO_START_MEMBER(m62_state,kungfum)
m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_kungfum_bg_tile_info),this), 32, 0, 8, 8, 64, 32);
}
uint32_t m62_state::screen_update_kungfum(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_kungfum(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int i;
for (i = 0; i < 6; i++)
@ -499,7 +437,7 @@ void m62_state::video_start()
m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
uint32_t m62_state::screen_update_ldrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_ldrun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll);
m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll);
@ -543,7 +481,7 @@ WRITE8_MEMBER(m62_state::ldrun3_topbottom_mask_w)
m_ldrun3_topbottom_mask = data & 1;
}
uint32_t m62_state::screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_ldrun3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
screen_update_ldrun(screen, bitmap, cliprect);
@ -553,11 +491,11 @@ uint32_t m62_state::screen_update_ldrun3(screen_device &screen, bitmap_ind16 &bi
my_cliprect.min_y = 0 * 8;
my_cliprect.max_y = 1 * 8 - 1;
bitmap.fill(m_palette->black_pen(), my_cliprect);
bitmap.fill(m_chr_palette->black_pen(), my_cliprect);
my_cliprect.min_y = 31 * 8;
my_cliprect.max_y = 32 * 8 - 1;
bitmap.fill(m_palette->black_pen(), my_cliprect);
bitmap.fill(m_chr_palette->black_pen(), my_cliprect);
}
return 0;
@ -589,7 +527,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_battroad_fg_tile_info)
int color;
code = m_m62_textram[tile_index << 1];
color = m_m62_textram[(tile_index << 1) | 1];
SET_TILE_INFO_MEMBER(2, code | ((color & 0x40) << 3) | ((color & 0x10) << 4), color & 0x0f, 0);
SET_TILE_INFO_MEMBER(0, code | ((color & 0x40) << 3) | ((color & 0x10) << 4), color & 0x0f, 0);
}
VIDEO_START_MEMBER(m62_state,battroad)
@ -600,7 +538,7 @@ VIDEO_START_MEMBER(m62_state,battroad)
m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
uint32_t m62_state::screen_update_battroad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_battroad(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll);
m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll);
@ -633,7 +571,7 @@ VIDEO_START_MEMBER(m62_state,ldrun4)
m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_ldrun4_bg_tile_info),this), 1, 0, 8, 8, 64, 32);
}
uint32_t m62_state::screen_update_ldrun4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_ldrun4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll - 2);
@ -664,7 +602,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_lotlot_fg_tile_info)
int color;
code = m_m62_textram[tile_index << 1];
color = m_m62_textram[(tile_index << 1) | 1];
SET_TILE_INFO_MEMBER(2, code | ((color & 0xc0) << 2), color & 0x1f, 0);
SET_TILE_INFO_MEMBER(0, code | ((color & 0xc0) << 2), color & 0x1f, 0);
}
VIDEO_START_MEMBER(m62_state,lotlot)
@ -673,7 +611,7 @@ VIDEO_START_MEMBER(m62_state,lotlot)
m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_lotlot_fg_tile_info),this), 1, 1, 12, 10, 32, 64);
}
uint32_t m62_state::screen_update_lotlot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_lotlot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll - 64);
m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll + 32);
@ -723,12 +661,12 @@ TILE_GET_INFO_MEMBER(m62_state::get_kidniki_fg_tile_info)
int color;
code = m_m62_textram[tile_index << 1];
color = m_m62_textram[(tile_index << 1) | 1];
SET_TILE_INFO_MEMBER(2, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0);
SET_TILE_INFO_MEMBER(0, code | ( ( color & 0xc0 ) << 2 ), color & 0x1f, 0);
}
VIDEO_START_MEMBER(m62_state,kidniki)
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */
m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
@ -737,7 +675,7 @@ VIDEO_START_MEMBER(m62_state,kidniki)
m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_fg_tile_info),this), 1, 1, 12, 8, 32, 64);
}
uint32_t m62_state::screen_update_kidniki(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_kidniki(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll);
m_fg_tilemap->set_scrollx(0, -64);
@ -778,7 +716,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_spelunkr_fg_tile_info)
code = m_m62_textram[tile_index << 1];
color = m_m62_textram[(tile_index << 1) | 1];
if (color & 0xe0) popmessage("fg tilemap %x %x", tile_index, color & 0xe0);
SET_TILE_INFO_MEMBER(2, code | ((color & 0x10) << 4), (color & 0x0f) | (m_spelunkr_palbank << 4), 0);
SET_TILE_INFO_MEMBER(0, code | ((color & 0x10) << 4), (color & 0x0f) | (m_spelunkr_palbank << 4), 0);
}
VIDEO_START_MEMBER(m62_state,spelunkr)
@ -787,7 +725,7 @@ VIDEO_START_MEMBER(m62_state,spelunkr)
m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_fg_tile_info),this), 1, 1, 12, 8, 32, 32);
}
uint32_t m62_state::screen_update_spelunkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_spelunkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll);
m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll + 128);
@ -829,7 +767,7 @@ VIDEO_START_MEMBER(m62_state,spelunk2)
m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_fg_tile_info),this), 1, 1, 12, 8, 32, 32);
}
uint32_t m62_state::screen_update_spelunk2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_spelunk2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll - 1);
m_bg_tilemap->set_scrolly(0, m_m62_background_vscroll + 128);
@ -863,7 +801,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_youjyudn_fg_tile_info)
int color;
code = m_m62_textram[tile_index << 1];
color = m_m62_textram[(tile_index << 1) | 1];
SET_TILE_INFO_MEMBER(2, code | ((color & 0xc0) << 2), (color & 0x0f), 0);
SET_TILE_INFO_MEMBER(0, code | ((color & 0xc0) << 2), (color & 0x0f), 0);
}
VIDEO_START_MEMBER(m62_state,youjyudn)
@ -874,7 +812,7 @@ VIDEO_START_MEMBER(m62_state,youjyudn)
m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
uint32_t m62_state::screen_update_youjyudn(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_youjyudn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_m62_background_hscroll);
m_fg_tilemap->set_scrollx(0, -64);
@ -915,7 +853,7 @@ VIDEO_START_MEMBER(m62_state,horizon)
m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */
}
uint32_t m62_state::screen_update_horizon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t m62_state::screen_update_horizon(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int i;
for (i = 0; i < 32; i++)