+5/28/2017
+
+[WINMAIN] support to run simulation at full speed
+
+[VM/I386] improve i386 core based on MAME 0.185
+
+
5/20/2017
[YIS/DISPLAY] support correct font rom (thanks Mr.Moriya)
memset(&config, 0, sizeof(config_t));
config.window_mode = 1;
// memo: set only non zero value
+ config.full_speed = false;
// control
#endif
int cpu_power;
+ bool full_speed;
// recent files
#if defined(USE_SHARED_DLL) || defined(USE_CART1)
// drive machine
// ----------------------------------------------------------------------------
+double EMU::get_frame_rate()
+{
+#ifdef SUPPORT_VARIABLE_TIMING
+ return vm->get_frame_rate();
+#else
+ return FRAMES_PER_SEC;
+#endif
+}
+
int EMU::get_frame_interval()
{
#ifdef SUPPORT_VARIABLE_TIMING
#endif
// drive machine
+ double get_frame_rate();
int get_frame_interval();
bool is_frame_skippable();
int run();
{
int interval = 0, sleep_period = 0;
int run_frames;
- bool now_skip;
qint64 current_time;
bool first = true;
// LED
interval += get_interval();
now_skip = p_emu->is_frame_skippable() && !p_emu->is_video_recording();
-
+ if(config.full_speed) interval = 1;
if((prev_skip && !now_skip) || next_time == 0) {
next_time = tick_timer.elapsed();
}
no_draw_count = 0;
skip_frames = 0;
qint64 tt = tick_timer.elapsed();
- next_time = tt + get_interval();
+ if(config.full_speed) {
+ next_time = tt + 1;
+ } else {
+ next_time = tt + get_interval();
+ }
sleep_period = next_time - tt;
}
}
if(update_fps_time <= current_time && update_fps_time != 0) {
_TCHAR buf[256];
QString message;
- int ratio = (int)(100.0 * (double)draw_frames / (double)total_frames + 0.5);
+ //int ratio = (int)(100.0 * (double)draw_frames / (double)total_frames + 0.5);
if(MainWindow->GetPowerState() == false){
snprintf(buf, 255, _T("*Power OFF*"));
+ } else if(now_skip) {
+ int ratio = (int)(100.0 * (double)total_frames / emu->get_frame_rate() + 0.5);
+ snprintf(buf, 255, create_string(_T("%s - Skip Frames (%d %%)"), _T(DEVICE_NAME), ratio));
} else {
if(p_emu->message_count > 0) {
snprintf(buf, 255, _T("%s - %s"), DEVICE_NAME, p_emu->message);
p_emu->message_count--;
} else {
+ int ratio = (int)(100.0 * (double)draw_frames / (double)total_frames + 0.5);
snprintf(buf, 255, _T("%s - %d fps (%d %%)"), DEVICE_NAME, draw_frames, ratio);
}
}
Q_OBJECT
protected:
char dbg_prev_command[MAX_COMMAND_LEN];
-
+ bool now_skip;
+
void button_pressed_mouse_sub(Qt::MouseButton button);
void button_released_mouse_sub(Qt::MouseButton button);
void get_qd_string(void);
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
POPUP "Save State"
BEGIN
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
POPUP "Save State"
BEGIN
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
POPUP "Save State"
BEGIN
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
#define ID_CPU_POWER2 40013
#define ID_CPU_POWER3 40014
#define ID_CPU_POWER4 40015
+#define ID_FULL_SPEED 40016
#define ID_AUTOKEY_START 40021
#define ID_AUTOKEY_STOP 40022
#define ID_OPEN_DEBUGGER0 40031
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
POPUP "Save State"
BEGIN
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
// MENUITEM SEPARATOR
// MENUITEM "Paste", ID_AUTOKEY_START
// MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
MENUITEM "Paste", ID_AUTOKEY_START
MENUITEM "Stop", ID_AUTOKEY_STOP
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
POPUP "Save State"
BEGIN
MENUITEM "CPU x4", ID_CPU_POWER2
MENUITEM "CPU x8", ID_CPU_POWER3
MENUITEM "CPU x16", ID_CPU_POWER4
+ MENUITEM "Full Speed", ID_FULL_SPEED
MENUITEM SEPARATOR
POPUP "Save State"
BEGIN
// emulation core
EMU* emu;
-// timing control
-#define MAX_SKIP_FRAMES 10
-
-int get_interval()
-{
- static int accum = 0;
- accum += emu->get_frame_interval();
- int interval = accum >> 10;
- accum -= interval << 10;
- return interval;
-}
-
// menu
HMENU hMenu = NULL;
bool now_menuloop = false;
total_frames += run_frames;
// timing controls
- int interval = 0, sleep_period = 0;
-// for(int i = 0; i < run_frames; i++) {
- interval += get_interval();
-// }
- bool now_skip = emu->is_frame_skippable() && !emu->is_video_recording();
+ int sleep_period = 0;
+ bool now_skip = (config.full_speed || emu->is_frame_skippable()) && !emu->is_video_recording() && !emu->is_sound_recording();
if((prev_skip && !now_skip) || next_time == 0) {
next_time = timeGetTime();
}
if(!now_skip) {
+ static int accum = 0;
+ accum += emu->get_frame_interval();
+ int interval = accum >> 10;
+ accum -= interval << 10;
next_time += interval;
}
prev_skip = now_skip;
if((int)(next_time - current_time) >= 10) {
sleep_period = next_time - current_time;
}
- } else if(++skip_frames > MAX_SKIP_FRAMES) {
- // update window at least once per 10 frames
+ } else if(++skip_frames > (int)emu->get_frame_rate()) {
+ // update window at least once per 1 sec in virtual machine time
draw_frames += emu->draw_screen();
skip_frames = 0;
next_time = timeGetTime();
DWORD current_time = timeGetTime();
if(update_fps_time <= current_time) {
if(update_fps_time != 0) {
- int ratio = (int)(100.0 * (double)draw_frames / (double)total_frames + 0.5);
if(emu->message_count > 0) {
SetWindowText(hWnd, create_string(_T("%s - %s"), _T(DEVICE_NAME), emu->message));
emu->message_count--;
} else if(now_skip) {
- SetWindowText(hWnd, create_string(_T("%s - Skip Frames"), _T(DEVICE_NAME)));
+ int ratio = (int)(100.0 * (double)total_frames / emu->get_frame_rate() + 0.5);
+ SetWindowText(hWnd, create_string(_T("%s - Skip Frames (%d %%)"), _T(DEVICE_NAME), ratio));
} else {
+ int ratio = (int)(100.0 * (double)draw_frames / (double)total_frames + 0.5);
SetWindowText(hWnd, create_string(_T("%s - %d fps (%d %%)"), _T(DEVICE_NAME), draw_frames, ratio));
}
update_fps_time += 1000;
emu->update_config();
}
break;
+ case ID_FULL_SPEED:
+ config.full_speed = !config.full_speed;
+ break;
#ifdef USE_AUTO_KEY
case ID_AUTOKEY_START:
if(emu) {
if(config.cpu_power >= 0 && config.cpu_power < 5) {
CheckMenuRadioItem(hMenu, ID_CPU_POWER0, ID_CPU_POWER4, ID_CPU_POWER0 + config.cpu_power, MF_BYCOMMAND);
}
+ CheckMenuItem(hMenu, ID_FULL_SPEED, config.full_speed ? MF_CHECKED : MF_UNCHECKED);
#ifdef USE_AUTO_KEY
bool now_paste = true, now_stop = true;
if(emu) {