mirror of
https://github.com/holub/mame
synced 2025-06-30 07:58:56 +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(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(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(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(0xffc000, 0xfffff7) AM_RAM /* working RAM */
|
||||||
AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */
|
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 */
|
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_DEVICE_ADD("spritegen", TIGEROAD_SPRITE, 0)
|
||||||
|
|
||||||
MCFG_PALETTE_ADD("palette", 1024)
|
MCFG_PALETTE_ADD("palette", 1024)
|
||||||
|
MCFG_PALETTE_FORMAT_CLASS(2, bionicc_state, RRRRGGGGBBBBIIII)
|
||||||
|
|
||||||
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
|
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ public:
|
|||||||
m_txvideoram(*this, "txvideoram"),
|
m_txvideoram(*this, "txvideoram"),
|
||||||
m_fgvideoram(*this, "fgvideoram"),
|
m_fgvideoram(*this, "fgvideoram"),
|
||||||
m_bgvideoram(*this, "bgvideoram"),
|
m_bgvideoram(*this, "bgvideoram"),
|
||||||
m_paletteram(*this, "paletteram"),
|
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_palette(*this, "palette"),
|
m_palette(*this, "palette"),
|
||||||
@ -30,7 +29,6 @@ public:
|
|||||||
required_shared_ptr<UINT16> m_txvideoram;
|
required_shared_ptr<UINT16> m_txvideoram;
|
||||||
required_shared_ptr<UINT16> m_fgvideoram;
|
required_shared_ptr<UINT16> m_fgvideoram;
|
||||||
required_shared_ptr<UINT16> m_bgvideoram;
|
required_shared_ptr<UINT16> m_bgvideoram;
|
||||||
required_shared_ptr<UINT16> m_paletteram;
|
|
||||||
|
|
||||||
/* video-related */
|
/* video-related */
|
||||||
tilemap_t *m_tx_tilemap;
|
tilemap_t *m_tx_tilemap;
|
||||||
@ -49,7 +47,6 @@ public:
|
|||||||
DECLARE_WRITE16_MEMBER(bionicc_bgvideoram_w);
|
DECLARE_WRITE16_MEMBER(bionicc_bgvideoram_w);
|
||||||
DECLARE_WRITE16_MEMBER(bionicc_fgvideoram_w);
|
DECLARE_WRITE16_MEMBER(bionicc_fgvideoram_w);
|
||||||
DECLARE_WRITE16_MEMBER(bionicc_txvideoram_w);
|
DECLARE_WRITE16_MEMBER(bionicc_txvideoram_w);
|
||||||
DECLARE_WRITE16_MEMBER(bionicc_paletteram_w);
|
|
||||||
DECLARE_WRITE16_MEMBER(bionicc_scroll_w);
|
DECLARE_WRITE16_MEMBER(bionicc_scroll_w);
|
||||||
DECLARE_WRITE16_MEMBER(bionicc_gfxctrl_w);
|
DECLARE_WRITE16_MEMBER(bionicc_gfxctrl_w);
|
||||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||||
@ -58,6 +55,7 @@ public:
|
|||||||
virtual void machine_start();
|
virtual void machine_start();
|
||||||
virtual void machine_reset();
|
virtual void machine_reset();
|
||||||
virtual void video_start();
|
virtual void video_start();
|
||||||
|
DECLARE_PALETTE_DECODER(RRRRGGGGBBBBIIII);
|
||||||
UINT32 screen_update_bionicc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update_bionicc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(bionicc_scanline);
|
TIMER_DEVICE_CALLBACK_MEMBER(bionicc_scanline);
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
@ -97,6 +97,24 @@ void bionicc_state::video_start()
|
|||||||
m_bg_tilemap->set_transparent_pen(15);
|
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);
|
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)
|
WRITE16_MEMBER(bionicc_state::bionicc_scroll_w)
|
||||||
{
|
{
|
||||||
data = COMBINE_DATA(&m_scroll[offset]);
|
data = COMBINE_DATA(&m_scroll[offset]);
|
||||||
|
Loading…
Reference in New Issue
Block a user