diff --git a/src/emu/driver.c b/src/emu/driver.c index fc352a5c890..2b81a50ae70 100644 --- a/src/emu/driver.c +++ b/src/emu/driver.c @@ -226,8 +226,17 @@ void driver_device::device_start() // call the game-specific init if (m_system->driver_init != NULL) + { (*m_system->driver_init)(machine()); + // update palettes to allow changes in driver_init + palette_device_iterator pal_deviter(*this); + for (palette_device *palette = pal_deviter.first(); palette != NULL; palette = pal_deviter.next()) + { + palette->update(); + } + } + // finish image devices init process image_postdevice_init(machine()); diff --git a/src/emu/emupal.h b/src/emu/emupal.h index 9778adc6518..f87b7d65e5d 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -388,6 +388,8 @@ public: void palette_init_BBBBBGGGGGRRRRR(palette_device &palette); void palette_init_RRRRRGGGGGGBBBBB(palette_device &palette); + // helper to update palette when data changed + void update() { if (!m_init.isnull()) m_init(*this); } protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const;