[COCO3] Better palette/save state fix

This commit is contained in:
Nathan Woods 2014-04-05 21:55:02 +00:00
parent 8c568003c4
commit 9e44d59664
2 changed files with 19 additions and 6 deletions

View File

@ -191,6 +191,7 @@ void gime_base_device::device_start(void)
save_item(NAME(m_firq));
save_item(NAME(m_timer_value));
save_item(NAME(m_is_blinking));
save_pointer(NAME(m_palette_rotated[0]), 16);
}
@ -377,6 +378,20 @@ void gime_base_device::device_timer(emu_timer &timer, device_timer_id id, int pa
//-------------------------------------------------
// device_pre_save - device-specific pre save
//-------------------------------------------------
void gime_base_device::device_pre_save()
{
super::device_pre_save();
// copy to palette rotation position zero
for (offs_t i = 0; i < 16; i++)
m_palette_rotated[0][i] = m_palette_rotated[m_palette_rotated_position][i];
}
//-------------------------------------------------
// device_post_load - device-specific post load
//-------------------------------------------------
@ -387,12 +402,9 @@ void gime_base_device::device_post_load()
update_memory();
update_cpu_clock();
// force the palette to update
for (offs_t i = 0; i <= 15; i++)
{
UINT8 value = read_palette_register(i);
write_palette_register(i, value);
}
// we update to position zero
m_palette_rotated_position = 0;
m_palette_rotated_position_used = false;
}

View File

@ -93,6 +93,7 @@ protected:
virtual void device_start(void);
virtual void device_reset(void);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
virtual void device_pre_save(void);
virtual void device_post_load(void);
virtual ioport_constructor device_input_ports() const;