From 0833b7659c54b3de0580922db596167962882e64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AE?= <80724828+tmyqlfpir@users.noreply.github.com> Date: Wed, 28 Jun 2023 16:33:39 +1000 Subject: [PATCH] Fix demo playback support --- source/blood/src/demo.cpp | 2 +- source/blood/src/player.cpp | 7 ++++++- source/blood/src/view.cpp | 7 ++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/source/blood/src/demo.cpp b/source/blood/src/demo.cpp index 9353228036..4650262452 100644 --- a/source/blood/src/demo.cpp +++ b/source/blood/src/demo.cpp @@ -582,7 +582,7 @@ void CDemo::ReadInput(int nCount) pInput->syncFlags.run = bitReader.readBit(); bitReader.skipBits(26); pInput->forward = bitReader.readSigned(8) << 8; - pInput->q16turn = fix16_from_int(bitReader.readSigned(16) >> 2); + pInput->q16turn = fix16_from_int(bitReader.readSigned(16)) >> 2; pInput->strafe = bitReader.readSigned(8) << 8; pInput->buttonFlags.jump = bitReader.readBit(); pInput->buttonFlags.crouch = bitReader.readBit(); diff --git a/source/blood/src/player.cpp b/source/blood/src/player.cpp index 97fcaee573..076f6ce782 100644 --- a/source/blood/src/player.cpp +++ b/source/blood/src/player.cpp @@ -1482,7 +1482,12 @@ void ProcessInput(PLAYER *pPlayer) } } if (pInput->q16turn) - pPlayer->q16ang = (pPlayer->q16ang+pInput->q16turn)&0x7ffffff; + { + if (bVanilla) + pPlayer->q16ang = ((pPlayer->q16ang&0x7ff0000)+(pInput->q16turn&0x7ff0000))&0x7ffffff; + else + pPlayer->q16ang = (pPlayer->q16ang+pInput->q16turn)&0x7ffffff; + } if (pInput->keyFlags.spin180) { if (!pPlayer->spin) diff --git a/source/blood/src/view.cpp b/source/blood/src/view.cpp index f9752cb0e9..78910aa9d2 100644 --- a/source/blood/src/view.cpp +++ b/source/blood/src/view.cpp @@ -423,7 +423,12 @@ void fakeProcessInput(PLAYER *pPlayer, GINPUT *pInput) } } if (pInput->q16turn) - predict.at30 = (predict.at30+pInput->q16turn)&0x7ffffff; + { + if (bVanilla) + predict.at30 = ((predict.at30&0x7ff0000)+(pInput->q16turn&0x7ff0000))&0x7ffffff; + else + predict.at30 = (predict.at30+pInput->q16turn)&0x7ffffff; + } if (pInput->keyFlags.spin180) if (!predict.at4c) predict.at4c = -kAng180;