From d324299f741997e4fcd6b18c26c45e3d1b7b8034 Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Sun, 19 May 2013 20:51:36 +0000 Subject: [PATCH] (MESS) slightly consolidated save/restore in sms/gamegear, still not reliable. nw. --- src/emu/video/315_5124.c | 24 ++++++++++++++++++++++++ src/emu/video/315_5124.h | 2 ++ src/mess/machine/sms.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/src/emu/video/315_5124.c b/src/emu/video/315_5124.c index 844d8ebf9c4..9792024181c 100644 --- a/src/emu/video/315_5124.c +++ b/src/emu/video/315_5124.c @@ -1683,6 +1683,23 @@ void sega315_5124_device::device_config_complete() } } +void sega315_5124_device::vdp_postload() +{ + switch (m_y_pixels) + { + case 192: + m_frame_timing = (m_is_pal) ? pal_192 : ntsc_192; + break; + + case 224: + m_frame_timing = (m_is_pal) ? pal_224 : ntsc_224; + break; + + case 240: + m_frame_timing = (m_is_pal) ? pal_240 : ntsc_240; + break; + } +} void sega315_5124_device::device_start() { @@ -1732,6 +1749,13 @@ void sega315_5124_device::device_start() save_item(NAME(m_tmpbitmap)); save_item(NAME(m_y1_bitmap)); save_item(NAME(m_draw_time)); + save_item(NAME(m_sprite_base)); + save_item(NAME(m_selected_sprite)); + save_item(NAME(m_sprite_count)); + save_item(NAME(m_sprite_height)); + save_item(NAME(m_sprite_zoom)); + + machine().save().register_postload(save_prepost_delegate(FUNC(sega315_5124_device::vdp_postload), this)); } diff --git a/src/emu/video/315_5124.h b/src/emu/video/315_5124.h index 45bc7d539ce..08327f725cb 100644 --- a/src/emu/video/315_5124.h +++ b/src/emu/video/315_5124.h @@ -115,6 +115,8 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_0) ? &m_space_config : NULL; } + void vdp_postload(); + UINT8 m_reg[16]; /* All the registers */ UINT8 m_status; /* Status register */ UINT8 m_pending_status; /* Pending status flags */ diff --git a/src/mess/machine/sms.c b/src/mess/machine/sms.c index c4b3134c616..3933f1bc6c9 100644 --- a/src/mess/machine/sms.c +++ b/src/mess/machine/sms.c @@ -1905,6 +1905,36 @@ MACHINE_START_MEMBER(sms_state,sms) { memset((UINT8*)m_space->get_write_ptr(0xc000), 0xf0, 0x1FFF); } + + save_item(NAME(m_fm_detect)); + save_item(NAME(m_ctrl_reg)); + save_item(NAME(m_paused)); + save_item(NAME(m_bios_port)); + save_item(NAME(m_mapper)); + save_item(NAME(m_input_port0)); + save_item(NAME(m_input_port1)); + + save_item(NAME(m_gg_sio)); + save_item(NAME(m_store_control)); + save_item(NAME(m_rapid_fire_state_1)); + save_item(NAME(m_rapid_fire_state_2)); + save_item(NAME(m_last_paddle_read_time)); + save_item(NAME(m_paddle_read_state)); + save_item(NAME(m_last_sports_pad_time_1)); + save_item(NAME(m_last_sports_pad_time_2)); + save_item(NAME(m_sports_pad_state_1)); + save_item(NAME(m_sports_pad_state_2)); + save_item(NAME(m_sports_pad_last_data_1)); + save_item(NAME(m_sports_pad_last_data_2)); + save_item(NAME(m_sports_pad_1_x)); + save_item(NAME(m_sports_pad_1_y)); + save_item(NAME(m_sports_pad_2_x)); + save_item(NAME(m_sports_pad_2_y)); + save_item(NAME(m_lphaser_1_latch)); + save_item(NAME(m_lphaser_2_latch)); + save_item(NAME(m_sscope_state)); + save_item(NAME(m_frame_sscope_state)); + save_item(NAME(m_current_cartridge)); } MACHINE_RESET_MEMBER(sms_state,sms)