Przeglądaj źródła

Fix some timing

Streetwalrus Einstein 10 lat temu
rodzic
commit
37012d33c1
2 zmienionych plików z 17 dodań i 11 usunięć
  1. 13 7
      src/StateMachine.cpp
  2. 4 4
      src/main.cpp

+ 13 - 7
src/StateMachine.cpp

@@ -33,20 +33,26 @@ void STATEMACHINE::run()
     Timers::load(0, 0);
     const unsigned loop_time = 546; // 32768Hz/60
     unsigned loop_next = -loop_time;
-    unsigned last_frame = 0;
+    unsigned last_update = 0, update_stamp, update_time;
+    unsigned last_frame = 0, frame_stamp, frame_time;
 
     while (!stack.empty())
     {
-        stack.back()->update(loop_time);
+        update_stamp = Timers::read(0);
+        update_time = last_update - update_stamp;
+        stack.back()->update(update_time);
+        last_update = update_stamp;
 
         if (Timers::read(0) > loop_next)
         {
-            stack.back()->render(loop_time);
-            Graphics::Text::print_format(0, 0, "WalrusRPG test build %s", git_version);
-            unsigned frame_stamp = Timers::read(0);
-            Graphics::Text::print_format(0, 240 - 8, "%u fps",
-                                         32768 / (last_frame - frame_stamp));
+            frame_stamp = Timers::read(0);
+            frame_time = last_frame - frame_stamp;
+            stack.back()->render(frame_time);
             last_frame = frame_stamp;
+
+            Graphics::Text::print_format(0, 0, "WalrusRPG test build %s", git_version);
+            Graphics::Text::print_format(0, 240 - 8, "%ufps, %uups", 32768 / frame_time,
+                                         32768 / update_time);
             Graphics::buffer_swap_render();
         }
 

+ 4 - 4
src/main.cpp

@@ -70,10 +70,10 @@ int main(int argc, char *argv[])
     Map map(20, 20, dungeonTest, dungeonTest2);
     tinystl::vector<Frame> stripe21;
     tinystl::vector<Frame> stripe22;
-    stripe21.push_back({21, 23});
-    stripe21.push_back({22, 31});
-    stripe22.push_back({22, 37});
-    stripe22.push_back({21, 41});
+    stripe21.push_back({21, 23 * 546});
+    stripe21.push_back({22, 31 * 546});
+    stripe22.push_back({22, 37 * 546});
+    stripe22.push_back({21, 41 * 546});
     map.anim.add_animation(21, {stripe21, true});
     map.anim.add_animation(22, {stripe22, true});