diff --git a/BombKart_8cpp.html b/BombKart_8cpp.html
index be0139044..8434ce714 100644
--- a/BombKart_8cpp.html
+++ b/BombKart_8cpp.html
@@ -115,6 +115,7 @@ $(function(){initNavTree('BombKart_8cpp.html',''); initResizable(true); });
#include "BombKart.h"
#include <vector>
#include "port/Game.h"
+#include "port/interpolation/FrameInterpolation.h"
#include "engine/Matrix.h"
#include "macros.h"
#include "main.h"
diff --git a/BombKart_8cpp__incl.map b/BombKart_8cpp__incl.map
index f4dded3e1..e384a5b0d 100644
--- a/BombKart_8cpp__incl.map
+++ b/BombKart_8cpp__incl.map
@@ -1,197 +1,198 @@
diff --git a/BombKart_8cpp__incl.md5 b/BombKart_8cpp__incl.md5
index ba4d79791..a12e649d9 100644
--- a/BombKart_8cpp__incl.md5
+++ b/BombKart_8cpp__incl.md5
@@ -1 +1 @@
-90aeca5b77ff57cc3fc3dc9e78cf33f4
\ No newline at end of file
+f2927edc97bb2979d33f3bfe1a9140d0
\ No newline at end of file
diff --git a/BombKart_8cpp__incl.svg b/BombKart_8cpp__incl.svg
index b9a7e5ef0..452353334 100644
--- a/BombKart_8cpp__incl.svg
+++ b/BombKart_8cpp__incl.svg
@@ -47,7 +47,7 @@
@@ -59,9 +59,9 @@ var sectionId = 'dynsection-0';
Node1
-
-src/engine/objects
-/BombKart.cpp
+
+src/engine/objects
+/BombKart.cpp
@@ -69,8 +69,8 @@ var sectionId = 'dynsection-0';
Node2
-
-libultraship.h
+
+libultraship.h
@@ -78,8 +78,8 @@ var sectionId = 'dynsection-0';
Node1->Node2
-
-
+
+
@@ -87,8 +87,8 @@ var sectionId = 'dynsection-0';
Node3
-
-engine/objects/Object.h
+
+engine/objects/Object.h
@@ -96,8 +96,8 @@ var sectionId = 'dynsection-0';
Node1->Node3
-
-
+
+
@@ -105,17 +105,17 @@ var sectionId = 'dynsection-0';
Node5
-
-vector
+
+vector
-
+
Node1->Node5
-
-
-
+
+
+
@@ -123,17 +123,17 @@ var sectionId = 'dynsection-0';
Node22
-
-BombKart.h
+
+BombKart.h
-
+
Node1->Node22
-
-
-
+
+
+
@@ -141,17 +141,17 @@ var sectionId = 'dynsection-0';
Node31
-
-src/port/Game.h
+
+src/port/Game.h
-
+
Node1->Node31
-
-
-
+
+
+
@@ -159,17 +159,17 @@ var sectionId = 'dynsection-0';
Node33
-
-defines.h
+
+defines.h
-
+
Node1->Node33
-
-
-
+
+
+
@@ -177,17 +177,17 @@ var sectionId = 'dynsection-0';
Node37
-
-bomb_kart.h
+
+bomb_kart.h
-
+
Node1->Node37
-
-
-
+
+
+
@@ -195,17 +195,17 @@ var sectionId = 'dynsection-0';
Node43
-
-sounds.h
+
+sounds.h
-
+
Node1->Node43
-
-
-
+
+
+
@@ -213,35 +213,54 @@ var sectionId = 'dynsection-0';
Node45
-
-macros.h
+
+macros.h
-
+
Node1->Node45
-
-
-
+
+
+
Node63
-
-
-engine/Matrix.h
+
+
+port/interpolation
+/FrameInterpolation.h
-
+
Node1->Node63
-
-
-
+
+
+
+
+
+
+
+
+Node64
+
+
+engine/Matrix.h
+
+
+
+
+
+Node1->Node64
+
+
+
@@ -249,234 +268,234 @@ var sectionId = 'dynsection-0';
Node51
-
-main.h
+
+main.h
-
+
Node1->Node51
-
-
-
-
-
-
-
-
-Node64
-
-
-actors.h
-
-
-
-
-
-Node1->Node64
-
-
-
+
+
+
Node65
-
-
-math_util.h
+
+
+actors.h
-
+
Node1->Node65
-
-
-
+
+
+
Node66
-
-
-update_objects.h
+
+
+math_util.h
-
+
Node1->Node66
-
-
-
+
+
+
-
-
-Node68
-
-
-render_player.h
+
+
+Node67
+
+
+update_objects.h
-
-
-Node1->Node68
-
-
-
+
+
+Node1->Node67
+
+
+
-
-
-Node70
-
-
-external.h
+
+
+Node69
+
+
+render_player.h
-
-
-Node1->Node70
-
-
-
+
+
+Node1->Node69
+
+
+
Node71
-
-
-collision.h
+
+
+external.h
-
+
Node1->Node71
-
-
-
+
+
+
Node72
-
-
-code_80086E70.h
+
+
+collision.h
-
+
Node1->Node72
-
-
-
+
+
+
Node73
-
-
-render_objects.h
+
+
+code_80086E70.h
-
+
Node1->Node73
-
-
-
+
+
+
Node74
-
-
-code_80057C60.h
+
+
+render_objects.h
-
+
Node1->Node74
-
-
-
+
+
+
Node75
-
-
-code_80005FD0.h
+
+
+code_80057C60.h
-
+
Node1->Node75
-
-
-
+
+
+
-
-
-Node78
-
-
-math_util_2.h
+
+
+Node76
+
+
+code_80005FD0.h
-
-
-Node1->Node78
-
-
-
+
+
+Node1->Node76
+
+
+
Node79
-
-
-assets/models/common
-_data.h
+
+
+math_util_2.h
-
+
Node1->Node79
-
-
-
+
+
+
+
+
+
+
+
+Node80
+
+
+assets/models/common
+_data.h
+
+
+
+
+
+Node1->Node80
+
+
+
@@ -484,8 +503,8 @@ var sectionId = 'dynsection-0';
Node3->Node2
-
-
+
+
@@ -493,8 +512,8 @@ var sectionId = 'dynsection-0';
Node4
-
-engine/SpawnParams.h
+
+engine/SpawnParams.h
@@ -502,8 +521,8 @@ var sectionId = 'dynsection-0';
Node3->Node4
-
-
+
+
@@ -511,8 +530,8 @@ var sectionId = 'dynsection-0';
Node11
-
-engine/editor/EditorMath.h
+
+engine/editor/EditorMath.h
@@ -520,8 +539,8 @@ var sectionId = 'dynsection-0';
Node3->Node11
-
-
+
+
@@ -529,17 +548,17 @@ var sectionId = 'dynsection-0';
Node19
-
-camera.h
+
+camera.h
-
+
Node3->Node19
-
-
-
+
+
+
@@ -547,17 +566,17 @@ var sectionId = 'dynsection-0';
Node20
-
-objects.h
+
+objects.h
-
+
Node3->Node20
-
-
-
+
+
+
@@ -565,8 +584,8 @@ var sectionId = 'dynsection-0';
Node4->Node5
-
-
+
+
@@ -574,8 +593,8 @@ var sectionId = 'dynsection-0';
Node6
-
-optional
+
+optional
@@ -583,8 +602,8 @@ var sectionId = 'dynsection-0';
Node4->Node6
-
-
+
+
@@ -592,8 +611,8 @@ var sectionId = 'dynsection-0';
Node7
-
-string
+
+string
@@ -601,8 +620,8 @@ var sectionId = 'dynsection-0';
Node4->Node7
-
-
+
+
@@ -610,8 +629,8 @@ var sectionId = 'dynsection-0';
Node8
-
-nlohmann/json.hpp
+
+nlohmann/json.hpp
@@ -619,8 +638,8 @@ var sectionId = 'dynsection-0';
Node4->Node8
-
-
+
+
@@ -628,8 +647,8 @@ var sectionId = 'dynsection-0';
Node9
-
-CoreMath.h
+
+CoreMath.h
@@ -637,8 +656,8 @@ var sectionId = 'dynsection-0';
Node4->Node9
-
-
+
+
@@ -646,8 +665,8 @@ var sectionId = 'dynsection-0';
Node10
-
-common_structs.h
+
+common_structs.h
@@ -655,8 +674,8 @@ var sectionId = 'dynsection-0';
Node4->Node10
-
-
+
+
@@ -664,8 +683,8 @@ var sectionId = 'dynsection-0';
Node9->Node2
-
-
+
+
@@ -673,35 +692,35 @@ var sectionId = 'dynsection-0';
Node10->Node2
-
-
+
+
-
+
Node11->Node5
-
-
-
+
+
+
-
+
Node11->Node9
-
-
-
+
+
+
-
+
Node11->Node10
-
-
-
+
+
+
@@ -709,8 +728,8 @@ var sectionId = 'dynsection-0';
Node12
-
-libultraship/libultraship.h
+
+libultraship/libultraship.h
@@ -718,8 +737,8 @@ var sectionId = 'dynsection-0';
Node11->Node12
-
-
+
+
@@ -727,8 +746,8 @@ var sectionId = 'dynsection-0';
Node13
-
-libultra/gbi.h
+
+libultra/gbi.h
@@ -736,80 +755,62 @@ var sectionId = 'dynsection-0';
Node11->Node13
-
-
-
-
-
-
-
-Node14
-
-
-libultra/types.h
-
-
-
-
-
-Node11->Node14
-
-
-
+
+
-
+
Node19->Node2
-
-
-
+
+
+
-
+
Node19->Node10
-
-
-
+
+
+
-
+
Node20->Node10
-
-
-
+
+
+
-
+
Node22->Node2
-
-
-
+
+
+
-
+
Node22->Node3
-
-
-
+
+
+
-
+
Node22->Node10
-
-
-
+
+
+
@@ -817,18 +818,18 @@ var sectionId = 'dynsection-0';
Node23
-
-engine/registry/Register
-Content.h
+
+engine/registry/Register
+Content.h
-
+
Node22->Node23
-
-
-
+
+
+
@@ -836,62 +837,62 @@ var sectionId = 'dynsection-0';
Node52
-
-World.h
+
+World.h
-
+
Node22->Node52
-
-
-
+
+
+
-
+
Node23->Node3
-
-
-
+
+
+
-
+
Node23->Node4
-
-
-
+
+
+
-
+
Node23->Node31
-
-
-
+
+
+
-
+
Node31->Node2
-
-
-
+
+
+
-
+
Node31->Node19
-
-
-
+
+
+
@@ -899,17 +900,17 @@ var sectionId = 'dynsection-0';
Node32
-
-engine/tracks/Track.h
+
+engine/tracks/Track.h
-
+
Node31->Node32
-
-
-
+
+
+
@@ -917,17 +918,17 @@ var sectionId = 'dynsection-0';
Node44
-
-code_800029B0.h
+
+code_800029B0.h
-
+
Node31->Node44
-
-
-
+
+
+
@@ -935,17 +936,17 @@ var sectionId = 'dynsection-0';
Node47
-
-actor_types.h
+
+actor_types.h
-
+
Node31->Node47
-
-
-
+
+
+
@@ -953,71 +954,71 @@ var sectionId = 'dynsection-0';
Node49
-
-engine/HM_Intro.h
+
+engine/HM_Intro.h
-
+
Node31->Node49
-
-
-
+
+
+
-
+
Node32->Node9
-
-
-
+
+
+
-
+
Node32->Node10
-
-
-
+
+
+
-
+
Node32->Node12
-
-
-
+
+
+
-
+
Node32->Node19
-
-
-
+
+
+
-
+
Node32->Node33
-
-
-
+
+
+
-
+
Node32->Node37
-
-
-
+
+
+
@@ -1025,44 +1026,44 @@ var sectionId = 'dynsection-0';
Node41
-
-waypoints.h
+
+waypoints.h
-
+
Node32->Node41
-
-
-
+
+
+
-
+
Node32->Node43
-
-
-
+
+
+
-
+
Node32->Node44
-
-
-
+
+
+
-
+
Node37->Node10
-
-
-
+
+
+
@@ -1070,98 +1071,98 @@ var sectionId = 'dynsection-0';
Node38
-
-mk64.h
+
+mk64.h
-
+
Node37->Node38
-
-
-
+
+
+
-
+
Node38->Node2
-
-
-
+
+
+
-
+
Node38->Node13
-
-
-
+
+
+
-
+
Node41->Node10
-
-
-
+
+
+
-
+
Node44->Node2
-
-
-
+
+
+
-
+
Node44->Node9
-
-
-
+
+
+
-
+
Node44->Node19
-
-
-
+
+
+
-
+
Node44->Node45
-
-
-
+
+
+
-
+
Node44->Node47
-
-
-
+
+
+
-
+
Node45->Node2
-
-
-
+
+
+
@@ -1169,567 +1170,576 @@ var sectionId = 'dynsection-0';
Node46
-
-math.h
+
+math.h
-
+
Node45->Node46
-
-
-
+
+
+
-
+
Node47->Node2
-
-
-
+
+
+
-
+
Node47->Node10
-
-
-
+
+
+
-
+
Node47->Node45
-
-
-
+
+
+
-
+
Node49->Node2
-
-
-
+
+
+
-
+
Node49->Node9
-
-
-
+
+
+
-
+
Node49->Node10
-
-
-
+
+
+
-
+
Node49->Node13
-
-
-
+
+
+
-
+
Node52->Node2
-
-
-
+
+
+
-
+
Node52->Node3
-
-
-
+
+
+
-
+
Node52->Node9
-
-
-
+
+
+
-
+
Node52->Node19
-
-
-
+
+
+
-
+
Node52->Node20
-
-
-
+
+
+
-
+
Node52->Node31
-
-
-
+
+
+
-
+
Node52->Node32
-
-
-
+
+
+
-
+
Node63->Node2
-
-
-
-
-
-
-
-
-Node63->Node9
-
-
-
+
+
+
-
+
Node63->Node10
-
-
-
+
+
+
+
+
+
+
+
+Node64->Node2
+
+
+
+
+
+
+
+
+Node64->Node9
+
+
+
+
+
+
+
+
+Node64->Node10
+
+
+
-
+
Node51->Node10
-
-
-
+
+
+
-
+
Node51->Node38
-
-
-
+
+
+
-
-
-Node64->Node19
-
-
-
+
+
+Node65->Node19
+
+
+
-
-
-Node64->Node44
-
-
-
+
+
+Node65->Node44
+
+
+
-
-
-Node64->Node47
-
-
-
+
+
+Node65->Node47
+
+
+
-
-
-Node65->Node2
-
-
-
-
-
-
-
-
-Node65->Node10
-
-
-
+
+
+Node66->Node2
+
+
+
-
+
Node66->Node10
-
-
-
-
-
-
-
-
-Node66->Node19
-
-
-
-
-
-
-
-
-Node66->Node20
-
-
-
-
-
-
-
-
-Node67
-
-
-animation.h
-
-
-
-
-
-Node66->Node67
-
-
-
+
+
+
-
+
Node67->Node10
-
-
-
+
+
+
+
+
+
+
+
+Node67->Node19
+
+
+
+
+
+
+
+
+Node67->Node20
+
+
+
+
+
+
+
+
+Node68
+
+
+animation.h
+
+
+
+
+
+Node67->Node68
+
+
+
-
+
Node68->Node10
-
-
-
-
-
-
-
-
-Node68->Node19
-
-
-
-
-
-
-
-
-Node69
-
-
-buffers.h
-
-
-
-
-
-Node68->Node69
-
-
-
+
+
+
-
+
Node69->Node10
-
-
-
+
+
+
-
-
-Node69->Node14
-
-
-
+
+
+Node69->Node19
+
+
+
-
-
-Node69->Node38
-
-
-
+
+
+Node70
+
+
+buffers.h
-
-
-Node70->Node2
-
-
-
+
+
+Node69->Node70
+
+
+
-
+
Node70->Node10
-
-
-
+
+
+
-
-
-Node70->Node19
-
-
-
+
+
+Node70->Node38
+
+
+
-
-
-Node70->Node33
-
-
-
+
+
+Node71->Node2
+
+
+
-
+
Node71->Node10
-
-
-
+
+
+
+
+
+
+
+
+Node71->Node19
+
+
+
+
+
+
+
+
+Node71->Node33
+
+
+
-
+
Node72->Node10
-
-
-
-
-
-
-
-
-Node72->Node19
-
-
-
-
-
-
-
-
-Node72->Node20
-
-
-
+
+
+
-
+
Node73->Node10
-
-
-
+
+
+
-
-
-Node73->Node51
-
-
-
+
+
+Node73->Node19
+
+
+
+
+
+
+
+
+Node73->Node20
+
+
+
-
+
Node74->Node10
-
-
-
+
+
+
-
-
-Node74->Node19
-
-
-
+
+
+Node74->Node51
+
+
+
-
-
-Node74->Node20
-
-
-
-
-
-
-
-
-Node74->Node44
-
-
-
+
+
+Node75->Node10
+
+
+
-
+
Node75->Node19
-
-
-
+
+
+
-
-
-Node75->Node41
-
-
-
+
+
+Node75->Node20
+
+
+
-
-
-Node76
-
-
-vehicles.h
+
+
+Node75->Node44
+
+
+
-
-
-Node75->Node76
-
-
-
+
+
+Node76->Node19
+
+
+
+
+
+
+
+
+Node76->Node41
+
+
+
Node77
-
-
-assets/textures/common
-_data.h
+
+
+vehicles.h
-
-
-Node75->Node77
-
-
-
+
+
+Node76->Node77
+