diff --git a/src/twn_engine_context_c.h b/src/twn_engine_context_c.h index b91b9bd..ddb9003 100644 --- a/src/twn_engine_context_c.h +++ b/src/twn_engine_context_c.h @@ -72,11 +72,6 @@ typedef struct EngineContext { SDL_Window *window; uint32_t window_id; - /* this should be a multiple of the current ticks per second */ - /* use it to simulate low framerate (e.g. at 60 tps, set to 2 for 30 fps) */ - /* it can be changed at runtime; any resulting logic anomalies are bugs */ - uint32_t update_multiplicity; - bool is_running; bool window_size_has_changed; bool resync_flag; diff --git a/src/twn_loop.c b/src/twn_loop.c index b817ba6..83960a0 100644 --- a/src/twn_loop.c +++ b/src/twn_loop.c @@ -204,34 +204,32 @@ static void main_loop(void) { /* finally, let's get to work */ int frames = 0; - while (ctx.frame_accumulator >= ctx.desired_frametime * ctx.update_multiplicity) { + while (ctx.frame_accumulator >= ctx.desired_frametime) { frames += 1; - for (size_t i = 0; i < ctx.update_multiplicity; ++i) { - /* TODO: disable rendering pushes on not-last ? */ - render_queue_clear(); - poll_events(); - if (ctx.window_size_has_changed) - update_viewport(); - input_state_update(&ctx.input); - game_object_tick(); - input_state_update_postframe(&ctx.input); + /* TODO: disable rendering pushes on not-last ? */ + render_queue_clear(); + poll_events(); + if (ctx.window_size_has_changed) + update_viewport(); + input_state_update(&ctx.input); + game_object_tick(); + input_state_update_postframe(&ctx.input); - #ifdef TWN_FEATURE_PUSH_AUDIO - static uint8_t audio_buffer[(AUDIO_FREQUENCY / 60) * sizeof (float) * 2]; - audio_callback(NULL, audio_buffer, sizeof audio_buffer); - if (SDL_QueueAudio(ctx.audio_device, audio_buffer, sizeof audio_buffer)) - CRY_SDL("Error queueing audio: "); - #endif + #ifdef TWN_FEATURE_PUSH_AUDIO + static uint8_t audio_buffer[(AUDIO_FREQUENCY / 60) * sizeof (float) * 2]; + audio_callback(NULL, audio_buffer, sizeof audio_buffer); + if (SDL_QueueAudio(ctx.audio_device, audio_buffer, sizeof audio_buffer)) + CRY_SDL("Error queueing audio: "); + #endif - preserve_persistent_ctx_fields(); + preserve_persistent_ctx_fields(); - ctx.frame_accumulator -= ctx.desired_frametime; - ctx.game.frame_number++; - /* TODO: should we ask for reinitialization in such case? */ - if (ctx.game.frame_number > 16777216) - ctx.game.frame_number = 0; - ctx.game.initialization_needed = false; - } + ctx.frame_accumulator -= ctx.desired_frametime; + ctx.game.frame_number++; + /* TODO: should we ask for reinitialization in such case? */ + if (ctx.game.frame_number > 16777216) + ctx.game.frame_number = 0; + ctx.game.initialization_needed = false; } /* TODO: in some cases machine might want to assume frames will be fed as much as possible */ @@ -555,9 +553,6 @@ static bool initialize(void) { } - /* you could change this at runtime if you wanted */ - ctx.update_multiplicity = 1; - /* random seeding */ /* SDL_GetPerformanceCounter returns some platform-dependent number. */ /* it should vary between game instances. i checked! random enough for me. */