diff options
author | cam900 <dbtlrchl@naver.com> | 2018-07-15 01:12:31 +0900 |
---|---|---|
committer | Vas Crabb <cuavas@users.noreply.github.com> | 2018-07-16 00:00:15 +1000 |
commit | 7eff013f87079d580af28d5d85fb4ae90363703c (patch) | |
tree | 706f5a743aa52f9dfc94f7914551e4cbc8c5944e | |
parent | 9edafeb0489e4ef6c5c4e5e4504f1aebcc191d0f (diff) |
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
-rw-r--r-- | src/mame/drivers/galpani3.cpp | 26 | ||||
-rw-r--r-- | src/mame/video/kaneko_grap2.cpp | 18 | ||||
-rw-r--r-- | src/mame/video/kaneko_grap2.h | 15 |
3 files changed, 33 insertions, 26 deletions
diff --git a/src/mame/drivers/galpani3.cpp b/src/mame/drivers/galpani3.cpp index b793d8eb397..a5dbe5e8289 100644 --- a/src/mame/drivers/galpani3.cpp +++ b/src/mame/drivers/galpani3.cpp @@ -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); diff --git a/src/mame/video/kaneko_grap2.cpp b/src/mame/video/kaneko_grap2.cpp index 5b697f0225c..16d7abe595a 100644 --- a/src/mame/video/kaneko_grap2.cpp +++ b/src/mame/video/kaneko_grap2.cpp @@ -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]; -} diff --git a/src/mame/video/kaneko_grap2.h b/src/mame/video/kaneko_grap2.h index 82f3507d694..5dd27042f6a 100644 --- a/src/mame/video/kaneko_grap2.h +++ b/src/mame/video/kaneko_grap2.h @@ -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; } }; |