mirror of
https://github.com/holub/mame
synced 2025-10-05 16:50:57 +03:00
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:
parent
9edafeb048
commit
7eff013f87
@ -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);
|
||||
|
@ -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];
|
||||
}
|
||||
|
@ -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; }
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user