galpani3.cpp : Implement/Fix some effects(Background color fading in intro, Girl display in stage start), Add notes

kaneko_grap2.cpp : Add device_palette_interface for palette, Minor cleanups
This commit is contained in:
cam900 2018-07-15 01:12:31 +09:00 committed by Vas Crabb
parent 9edafeb048
commit 7eff013f87
3 changed files with 33 additions and 26 deletions

View File

@ -171,7 +171,7 @@ void galpani3_state::video_start()
// TODO : m_framebuffer_bright1 is alpha-blended?
#define FB_DRAW_PIXEL(_chip, _pixel) \
int alpha = 0xff; \
uint32_t pal = m_grap2[_chip]->pen_r(_pixel); \
const pen_t &pal = m_grap2[_chip]->pen(_pixel); \
if (m_grap2[_chip]->m_framebuffer_palette[_pixel] & 0x8000) \
{ \
alpha = (m_grap2[_chip]->m_framebuffer_bright2 & 0xff); \
@ -250,7 +250,10 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
else if (pridat==0xcf) // the girl
{
SPRITE_DRAW_PIXEL(0x0000);
FB_DRAW_PIXEL(0, 0x100);
if (m_grap2[0]->m_framebuffer_enable)
{
FB_DRAW_PIXEL(0, 0x100);
}
SPRITE_DRAW_PIXEL(0x4000);
if (m_grap2[1]->m_framebuffer_enable)
{
@ -263,6 +266,25 @@ uint32_t galpani3_state::screen_update_galpani3(screen_device &screen, bitmap_rg
}
SPRITE_DRAW_PIXEL(0xc000);
}
else if (pridat==0x30) // during the 'gals boxes' on the intro
{
SPRITE_DRAW_PIXEL(0x0000);
if (m_grap2[1]->m_framebuffer_enable) // TODO : Opaqued and Swapped order?
{
FB_DRAW_PIXEL(1, dat2);
}
SPRITE_DRAW_PIXEL(0x4000);
if (dat1 && m_grap2[0]->m_framebuffer_enable)
{
FB_DRAW_PIXEL(0, dat1);
}
SPRITE_DRAW_PIXEL(0x8000);
if (dat3 && m_grap2[2]->m_framebuffer_enable)
{
FB_DRAW_PIXEL(2, dat3);
}
SPRITE_DRAW_PIXEL(0xc000);
}
else
{
SPRITE_DRAW_PIXEL(0x0000);

View File

@ -37,24 +37,19 @@ DEFINE_DEVICE_TYPE(KANEKO_GRAP2, kaneko_grap2_device, "kaneko_grap2", "Kaneko GR
kaneko_grap2_device::kaneko_grap2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, KANEKO_GRAP2, tag, owner, clock)
, device_rom_interface(mconfig, *this, 32) // TODO : Unknown Address Bits
, m_palette(*this, "palette")
, device_palette_interface(mconfig, *this)
{
}
MACHINE_CONFIG_START(kaneko_grap2_device::device_add_mconfig)
MCFG_PALETTE_ADD("palette", 0x101)
MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
MACHINE_CONFIG_END
void kaneko_grap2_device::device_start()
{
m_framebuffer = make_unique_clear<uint16_t[]>(0x80000/2);
m_framebuffer_palette = make_unique_clear<uint16_t[]>(0x101); // 0x00-0xff is internal palette, 0x100 is background colour
m_framebuffer_palette = make_unique_clear<uint16_t[]>(PALETTE_SIZE);
m_framebuffer_unk1 = make_unique_clear<uint16_t[]>(0x400/2);
m_framebuffer_unk2 = make_unique_clear<uint16_t[]>(0x400/2);
save_pointer(NAME(m_framebuffer), 0x80000/2);
save_pointer(NAME(m_framebuffer_palette), 0x101);
save_pointer(NAME(m_framebuffer_palette), PALETTE_SIZE);
save_pointer(NAME(m_framebuffer_unk1), 0x400/2);
save_pointer(NAME(m_framebuffer_unk2), 0x400/2);
@ -170,7 +165,7 @@ WRITE16_MEMBER(kaneko_grap2_device::regs1_go_w)
void kaneko_grap2_device::set_color_555(pen_t color, int rshift, int gshift, int bshift, uint16_t data)
{
m_palette->set_pen_color(color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
set_pen_color(color, pal5bit(data >> rshift), pal5bit(data >> gshift), pal5bit(data >> bshift));
}
WRITE16_MEMBER(kaneko_grap2_device::framebuffer1_palette_w)
@ -185,8 +180,3 @@ WRITE16_MEMBER(kaneko_grap2_device::framebuffer1_bgcol_w)
COMBINE_DATA(&m_framebuffer_palette[0x100]);
set_color_555(0x100, 5, 10, 0, m_framebuffer_palette[0x100]);
}
uint32_t kaneko_grap2_device::pen_r(int pen)
{
return m_palette->pens()[pen];
}

View File

@ -7,10 +7,11 @@
#include "emupal.h"
class kaneko_grap2_device : public device_t, public device_rom_interface
class kaneko_grap2_device : public device_t, public device_rom_interface, public device_palette_interface
{
public:
static constexpr unsigned PALETTE_SIZE = 256 + 1; // 0x00-0xff is internal palette, 0x100 is background colour
kaneko_grap2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ16_MEMBER(regs1_r);
@ -59,25 +60,19 @@ public:
DECLARE_READ16_MEMBER( unk2_r ) { return m_framebuffer_unk2[offset]; }
DECLARE_WRITE16_MEMBER( unk2_w ) { COMBINE_DATA(&m_framebuffer_unk2[offset]); }
uint32_t pen_r(int pen);
std::unique_ptr<uint16_t[]> m_framebuffer;
std::unique_ptr<uint16_t[]> m_framebuffer_palette;
std::unique_ptr<uint16_t[]> m_framebuffer_unk1;
std::unique_ptr<uint16_t[]> m_framebuffer_unk2;
protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
virtual void device_reset() override;
virtual void rom_bank_updated() override;
private:
required_device<palette_device> m_palette;
// device_palette_interface overrides
virtual uint32_t palette_entries() const override { return PALETTE_SIZE; }
};