summaryrefslogtreecommitdiffstats
path: root/docs/release/src/emu/video.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/emu/video.cpp')
-rw-r--r--docs/release/src/emu/video.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/docs/release/src/emu/video.cpp b/docs/release/src/emu/video.cpp
index 8da14f03b85..2d93baddeb5 100644
--- a/docs/release/src/emu/video.cpp
+++ b/docs/release/src/emu/video.cpp
@@ -92,7 +92,8 @@ video_manager::video_manager(running_machine &machine)
, m_speed(original_speed_setting())
, m_low_latency(machine.options().low_latency())
, m_empty_skip_count(0)
- , m_frameskip_level(machine.options().frameskip())
+ , m_frameskip_max(m_auto_frameskip ? machine.options().frameskip() : 0)
+ , m_frameskip_level(m_auto_frameskip ? 0 : machine.options().frameskip())
, m_frameskip_counter(0)
, m_frameskip_adjust(0)
, m_skipping_this_frame(false)
@@ -229,7 +230,7 @@ void video_manager::frame_update(bool from_debugger)
// if we're throttling, synchronize before rendering
attotime current_time = machine().time();
- if (!from_debugger && !skipped_it && !m_low_latency && effective_throttle())
+ if (!from_debugger && !skipped_it && phase > machine_phase::INIT && !m_low_latency && effective_throttle())
update_throttle(current_time);
// ask the OSD to update
@@ -238,7 +239,7 @@ void video_manager::frame_update(bool from_debugger)
g_profiler.stop();
// we synchronize after rendering instead of before, if low latency mode is enabled
- if (!from_debugger && !skipped_it && m_low_latency && effective_throttle())
+ if (!from_debugger && !skipped_it && phase > machine_phase::INIT && m_low_latency && effective_throttle())
update_throttle(current_time);
// get most recent input now
@@ -251,11 +252,11 @@ void video_manager::frame_update(bool from_debugger)
machine().call_notifiers(MACHINE_NOTIFY_FRAME);
// update frameskipping
- if (!from_debugger)
+ if (!from_debugger && phase > machine_phase::INIT)
update_frameskip();
// update speed computations
- if (!from_debugger && !skipped_it)
+ if (!from_debugger && !skipped_it && phase > machine_phase::INIT)
recompute_speed(current_time);
// call the end-of-frame callback
@@ -291,7 +292,7 @@ std::string video_manager::speed_text()
// if we're auto frameskipping, display that plus the level
else if (effective_autoframeskip())
- util::stream_format(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP);
+ util::stream_format(str, "auto%2d/%d", effective_frameskip(), m_frameskip_max ? m_frameskip_max : MAX_FRAMESKIP);
// otherwise, just display the frameskip plus the level
else
@@ -893,7 +894,7 @@ void video_manager::update_frameskip()
// calibrate the "adjusted speed" based on the target
double adjusted_speed_percent = m_speed_percent / (double) m_throttle_rate;
- // if we're too fast, attempt to increase the frameskip
+ // if we're too fast, attempt to decrease the frameskip
double speed = m_speed * 0.001;
if (adjusted_speed_percent >= 0.995 * speed)
{
@@ -921,7 +922,7 @@ void video_manager::update_frameskip()
while (m_frameskip_adjust <= -2)
{
m_frameskip_adjust += 2;
- if (m_frameskip_level < MAX_FRAMESKIP)
+ if (m_frameskip_level < (m_frameskip_max ? m_frameskip_max : MAX_FRAMESKIP))
m_frameskip_level++;
}
}