mirror of
https://github.com/holub/mame
synced 2025-04-17 05:53:36 +03:00
bionicc: update palette handling
This commit is contained in:
parent
bd9acd656a
commit
83f2c9fa33
@ -148,7 +148,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bionicc_state )
|
||||
AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(bionicc_txvideoram_w) AM_SHARE("txvideoram")
|
||||
AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(bionicc_fgvideoram_w) AM_SHARE("fgvideoram")
|
||||
AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bionicc_bgvideoram_w) AM_SHARE("bgvideoram")
|
||||
AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(bionicc_paletteram_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */
|
||||
AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */
|
||||
AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w) /* hack */
|
||||
@ -372,6 +372,7 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state )
|
||||
MCFG_DEVICE_ADD("spritegen", TIGEROAD_SPRITE, 0)
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 1024)
|
||||
MCFG_PALETTE_FORMAT_CLASS(2, bionicc_state, RRRRGGGGBBBBIIII)
|
||||
|
||||
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
|
||||
|
||||
|
@ -18,7 +18,6 @@ public:
|
||||
m_txvideoram(*this, "txvideoram"),
|
||||
m_fgvideoram(*this, "fgvideoram"),
|
||||
m_bgvideoram(*this, "bgvideoram"),
|
||||
m_paletteram(*this, "paletteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
@ -30,7 +29,6 @@ public:
|
||||
required_shared_ptr<UINT16> m_txvideoram;
|
||||
required_shared_ptr<UINT16> m_fgvideoram;
|
||||
required_shared_ptr<UINT16> m_bgvideoram;
|
||||
required_shared_ptr<UINT16> m_paletteram;
|
||||
|
||||
/* video-related */
|
||||
tilemap_t *m_tx_tilemap;
|
||||
@ -49,7 +47,6 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(bionicc_bgvideoram_w);
|
||||
DECLARE_WRITE16_MEMBER(bionicc_fgvideoram_w);
|
||||
DECLARE_WRITE16_MEMBER(bionicc_txvideoram_w);
|
||||
DECLARE_WRITE16_MEMBER(bionicc_paletteram_w);
|
||||
DECLARE_WRITE16_MEMBER(bionicc_scroll_w);
|
||||
DECLARE_WRITE16_MEMBER(bionicc_gfxctrl_w);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
@ -58,6 +55,7 @@ public:
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
DECLARE_PALETTE_DECODER(RRRRGGGGBBBBIIII);
|
||||
UINT32 screen_update_bionicc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(bionicc_scanline);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
|
@ -97,6 +97,24 @@ void bionicc_state::video_start()
|
||||
m_bg_tilemap->set_transparent_pen(15);
|
||||
}
|
||||
|
||||
PALETTE_DECODER_MEMBER( bionicc_state, RRRRGGGGBBBBIIII )
|
||||
{
|
||||
UINT8 bright = (raw & 0x0f);
|
||||
|
||||
UINT8 r = ((raw >> 12) & 0x0f) * 0x11;
|
||||
UINT8 g = ((raw >> 8) & 0x0f) * 0x11;
|
||||
UINT8 b = ((raw >> 4) & 0x0f) * 0x11;
|
||||
|
||||
if ((bright & 0x08) == 0)
|
||||
{
|
||||
r = r * (0x07 + bright) / 0x0e;
|
||||
g = g * (0x07 + bright) / 0x0e;
|
||||
b = b * (0x07 + bright) / 0x0e;
|
||||
}
|
||||
|
||||
return rgb_t(r, g, b);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -123,27 +141,6 @@ WRITE16_MEMBER(bionicc_state::bionicc_txvideoram_w)
|
||||
m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(bionicc_state::bionicc_paletteram_w)
|
||||
{
|
||||
int r, g, b, bright;
|
||||
data = COMBINE_DATA(&m_paletteram[offset]);
|
||||
|
||||
bright = (data & 0x0f);
|
||||
|
||||
r = ((data >> 12) & 0x0f) * 0x11;
|
||||
g = ((data >> 8 ) & 0x0f) * 0x11;
|
||||
b = ((data >> 4 ) & 0x0f) * 0x11;
|
||||
|
||||
if ((bright & 0x08) == 0)
|
||||
{
|
||||
r = r * (0x07 + bright) / 0x0e;
|
||||
g = g * (0x07 + bright) / 0x0e;
|
||||
b = b * (0x07 + bright) / 0x0e;
|
||||
}
|
||||
|
||||
m_palette->set_pen_color (offset, rgb_t(r, g, b));
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(bionicc_state::bionicc_scroll_w)
|
||||
{
|
||||
data = COMBINE_DATA(&m_scroll[offset]);
|
||||
|
Loading…
Reference in New Issue
Block a user