Index: gui/display_settings.cc =================================================================== --- gui/display_settings.cc (revision 8293) +++ gui/display_settings.cc (working copy) @@ -631,11 +631,11 @@ uint32 target_fps = welt->is_fast_forward() ? 10 : env_t::fps; loops = welt->get_realFPS(); color = SYSCOL_TEXT_HIGHLIGHT; - if( loops < (target_fps*3)/4 ) { - color = color_idx_to_rgb(( loops <= target_fps/2 ) ? COL_RED : COL_YELLOW); + if( loops < (target_fps*16*3)/4 ) { + color = color_idx_to_rgb(( loops <= target_fps*16/2 ) ? COL_RED : COL_YELLOW); } fps_value_label.set_color(color); - sprintf(fps_buf," %d fps", loops ); + sprintf(fps_buf," %d fps", loops/16 ); #if MSG_LEVEL >= 3 if( env_t::simple_drawing ) { strcat( fps_buf, "*" ); Index: simintr.cc =================================================================== --- simintr.cc (revision 8293) +++ simintr.cc (working copy) @@ -37,7 +37,7 @@ bool reduce_frame_time() { - if(frame_time > 25*FRAME_TIME_MULTI) { + if(frame_time > 10*FRAME_TIME_MULTI) { frame_time -= 1; if( frame_time>150*FRAME_TIME_MULTI ) { frame_time -= 8; @@ -45,7 +45,7 @@ return true; } else { - frame_time = 25*FRAME_TIME_MULTI; + frame_time = 10*FRAME_TIME_MULTI; return false; } } Index: simworld.cc =================================================================== --- simworld.cc (revision 8293) +++ simworld.cc (working copy) @@ -3563,20 +3563,20 @@ last_frame_idx = (last_frame_idx+1) % 32; sint32 ms_diff = (sint32)( last_ms - last_frame_ms[last_frame_idx] ); if(ms_diff > 0) { - realFPS = (32000u) / ms_diff; + realFPS = (32000u*16) / ms_diff; } else { - realFPS = env_t::fps; + realFPS = env_t::fps*16; simloops = 60; } if( step_mode&PAUSE_FLAG ) { // not changing pauses - next_step_time = dr_time()+100; + next_step_time = dr_time() + 1000 / env_t::fps; idle_time = 100; } else if( step_mode==FIX_RATIO) { - simloops = realFPS; + simloops = realFPS/16; } else if(step_mode==NORMAL) { // calculate simloops @@ -3594,11 +3594,11 @@ env_t::simple_drawing_normal --; } } - else if( realFPS < env_t::fps/2 ) { + else if( realFPS < env_t::fps*16/2 ) { // activate simple redraw env_t::simple_drawing_normal = max( env_t::simple_drawing_normal, get_tile_raster_width()+1 ); } - else if( realFPS < (env_t::fps*15)/16 ) { + else if( realFPS < (env_t::fps*15) ) { // increase fast tile redraw by one if below current tile size if( env_t::simple_drawing_normal <= (get_tile_raster_width()*3)/2 ) { env_t::simple_drawing_normal ++; @@ -3632,12 +3632,12 @@ } else { // change frame spacing ... (pause will be changed by step() directly) - if(realFPS>(env_t::fps*17/16)) { + if(realFPS>(env_t::fps*17)) { increase_frame_time(); } - else if(realFPS0) { - if(wait_time<10 ) { + if( wait_time < 4 ) { dr_sleep( wait_time ); } else { - dr_sleep( 9 ); + dr_sleep( 3 ); } INT_CHECK( "karte_t::interactive()" ); }