diff --git a/source/sw/src/draw.cpp b/source/sw/src/draw.cpp index 80a56662c..ac43f8f8c 100644 --- a/source/sw/src/draw.cpp +++ b/source/sw/src/draw.cpp @@ -2019,6 +2019,11 @@ drawscreen(PLAYERp pp) tq16ang = camerapp->oq16ang + mulscale16(NORM_Q16ANGLE(camerapp->q16ang + fix16_from_int(1024) - camerapp->oq16ang) - fix16_from_int(1024), smoothratio); tq16horiz = camerapp->oq16horiz + mulscale16(camerapp->q16horiz - camerapp->oq16horiz, smoothratio); } + else if (InterpolateSectObj) + { + tq16ang = camerapp->oq16ang + mulscale16(((pp->camq16ang + fix16_from_int(1024) - camerapp->oq16ang) & 0x7FFFFFF) - fix16_from_int(1024), smoothratio); + tq16horiz = camerapp->oq16horiz + mulscale16(pp->camq16horiz - camerapp->oq16horiz, smoothratio); + } else { tq16ang = pp->camq16ang; diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp index f6968c95f..bbb7f8788 100644 --- a/source/sw/src/player.cpp +++ b/source/sw/src/player.cpp @@ -1544,7 +1544,7 @@ DoPlayerTurn(PLAYERp pp, fix16_t *pq16ang, fix16_t q16angvel) if (!PedanticMode && (pq16ang == &pp->q16ang)) { - *pq16ang = pp->input.q16ang; + pp->q16ang = pp->oq16ang = pp->input.q16ang; sprite[pp->PlayerSprite].ang = fix16_to_int(*pq16ang); if (!Prediction) { @@ -1913,7 +1913,7 @@ DoPlayerHorizon(PLAYERp pp, fix16_t *pq16horiz, fix16_t q16aimvel) if (!PedanticMode && (pq16horiz == &pp->q16horiz)) { - *pq16horiz = pp->input.q16horiz; + pp->q16horiz = pp->oq16horiz = pp->input.q16horiz; return; }