@@ -153,6 +153,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) {
153153 uint64_t delta = ticks - emu -> last_ticks ;
154154 emu -> last_ticks = ticks ;
155155 emu -> ticks_acc += delta * FPS ;
156+ int show_frame = emu -> ticks_acc >= SDL_NS_PER_SECOND ;
156157 while (emu -> ticks_acc >= SDL_NS_PER_SECOND ) {
157158 emu -> ticks_acc -= SDL_NS_PER_SECOND ;
158159 for (int cycles = 0 ; !emu -> cpu .wait ; cycles ++ ) {
@@ -166,15 +167,17 @@ SDL_AppResult SDL_AppIterate(void *appstate) {
166167 }
167168 SDL_PutAudioStreamData (emu -> stream , samples , sizeof (samples ));
168169 }
169- update_rects (emu );
170- SDL_SetRenderDrawColor (emu -> renderer , 0 , 0 , 0 , 255 );
171- SDL_RenderClear (emu -> renderer );
172- for (int i = 0 ; i < RECT_NUM ; i ++ ) {
173- uint8_t * rgb = & emu -> rect_colors [i * 3 ];
174- SDL_SetRenderDrawColor (emu -> renderer , rgb [0 ], rgb [1 ], rgb [2 ], 255 );
175- SDL_RenderFillRect (emu -> renderer , & emu -> rects [i ]);
170+ if (show_frame ) {
171+ update_rects (emu );
172+ SDL_SetRenderDrawColor (emu -> renderer , 0 , 0 , 0 , 255 );
173+ SDL_RenderClear (emu -> renderer );
174+ for (int i = 0 ; i < RECT_NUM ; i ++ ) {
175+ uint8_t * rgb = & emu -> rect_colors [i * 3 ];
176+ SDL_SetRenderDrawColor (emu -> renderer , rgb [0 ], rgb [1 ], rgb [2 ], 255 );
177+ SDL_RenderFillRect (emu -> renderer , & emu -> rects [i ]);
178+ }
179+ SDL_RenderPresent (emu -> renderer );
176180 }
177- SDL_RenderPresent (emu -> renderer );
178181 return SDL_APP_CONTINUE ;
179182}
180183
0 commit comments