vic4567: Use device_palette_interface (nw)

This commit is contained in:
AJR 2018-05-14 13:05:44 -04:00
parent 6e0979308e
commit 7df74b4ed9
2 changed files with 12 additions and 16 deletions

View File

@ -149,6 +149,7 @@ DEFINE_DEVICE_TYPE(VIC3, vic3_device, "vic3", "CSG 4567 VIC-III")
vic3_device::vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) vic3_device::vic3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, VIC3, tag, owner, clock) : device_t(mconfig, VIC3, tag, owner, clock)
, device_palette_interface(mconfig, *this)
, device_video_interface(mconfig, *this) , device_video_interface(mconfig, *this)
, m_type(vic3_type::NTSC) , m_type(vic3_type::NTSC)
, m_cpu(*this, finder_base::DUMMY_TAG) , m_cpu(*this, finder_base::DUMMY_TAG)
@ -160,7 +161,6 @@ vic3_device::vic3_device(const machine_config &mconfig, const char *tag, device_
, m_lightpen_x_cb(*this) , m_lightpen_x_cb(*this)
, m_lightpen_y_cb(*this) , m_lightpen_y_cb(*this)
, m_c64_mem_r_cb(*this) , m_c64_mem_r_cb(*this)
, m_palette(*this, "palette")
{ {
} }
@ -354,9 +354,12 @@ void vic3_device::device_reset()
memset(m_shift, 0, ARRAY_LENGTH(m_shift)); memset(m_shift, 0, ARRAY_LENGTH(m_shift));
memset(m_multi_collision, 0, ARRAY_LENGTH(m_multi_collision)); memset(m_multi_collision, 0, ARRAY_LENGTH(m_multi_collision));
memset(m_palette_red, 0, ARRAY_LENGTH(m_palette_red));
memset(m_palette_green, 0, ARRAY_LENGTH(m_palette_green)); for (int i = 0; i < 256; i++)
memset(m_palette_blue, 0, ARRAY_LENGTH(m_palette_blue)); {
m_palette_red[i] = m_palette_green[i] = m_palette_blue[i] = 0;
set_pen_color(i, rgb_t::black());
}
m_palette_dirty = 0; m_palette_dirty = 0;
} }
@ -1937,7 +1940,7 @@ void vic3_device::raster_interrupt_gen()
m_rasterline = 0; m_rasterline = 0;
if (m_palette_dirty) if (m_palette_dirty)
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_palette->set_pen_color(i, m_palette_red[i] << 4, m_palette_green[i] << 4, m_palette_blue[i] << 4); set_pen_color(i, m_palette_red[i] << 4, m_palette_green[i] << 4, m_palette_blue[i] << 4);
if (m_palette_dirty) if (m_palette_dirty)
{ {
@ -2041,11 +2044,3 @@ uint32_t vic3_device::video_update( bitmap_ind16 &bitmap, const rectangle &clipr
copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect); copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect);
return 0; return 0;
} }
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
MACHINE_CONFIG_START(vic3_device::device_add_mconfig)
MCFG_PALETTE_ADD_INIT_BLACK("palette", 0x100)
MACHINE_CONFIG_END

View File

@ -102,6 +102,7 @@
***************************************************************************/ ***************************************************************************/
class vic3_device : public device_t, class vic3_device : public device_t,
public device_palette_interface,
public device_video_interface public device_video_interface
{ {
public: public:
@ -131,7 +132,9 @@ protected:
// device-level overrides // device-level overrides
virtual void device_start() override; virtual void device_start() override;
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
// device_palette_interface override
virtual uint32_t palette_entries() const override { return 0x100; }
private: private:
static constexpr unsigned SPRITE_BASE_X_SIZE = 24; static constexpr unsigned SPRITE_BASE_X_SIZE = 24;
@ -229,8 +232,6 @@ private:
uint8_t m_palette_green[0x100]; uint8_t m_palette_green[0x100];
uint8_t m_palette_blue[0x100]; uint8_t m_palette_blue[0x100];
int m_palette_dirty; int m_palette_dirty;
required_device<palette_device> m_palette;
}; };
DECLARE_DEVICE_TYPE(VIC3, vic3_device) DECLARE_DEVICE_TYPE(VIC3, vic3_device)