Bug 5849 - broken snapvector inverts player speed
Status: RESOLVED FIXED
Alias: None
Product: ioquake3
Classification: Unclassified
Component: Platform
Version: GIT MASTER
Hardware: PC Linux
: P3 normal
Assignee: Zachary J. Slater
QA Contact: ioquake3 bugzilla mailing list
URL:
Depends on:
Blocks:
 
Reported: 2012-12-25 15:51 EST by Daniel Steuer
Modified: 2013-01-10 00:31:13 EST
2 users (show)

See Also:



Description Daniel Steuer 2012-12-25 15:51:49 EST
Somewhere between rev2019 and rev2025 a bug was introduced that behaves like an overflow of the player velocity. if a player accelerates above 32767 u/s the new speed is -32767.
It only happens on _dedicated_ servers.

revisions 2020 is not building for me but the changelog talks about a snapvector cleanup which fits.
The serverconsole prints:
"ioq3 1.36_SVN2392 linux-i386 Dec 25 2012"
"No SSE support on this machine"

how to reproduce:
Get this map: https://ws.q3df.org/map/gvn2/ and walk on the jumppad marked on the floor. That pad is set to more than 32k and will throw you either forward(nobug) or backward(bug).
Comment 1 Mark 2012-12-26 02:09:37 EST
code/asm/snapvector.c

#define QROUNDX87(src) \
  "flds " src "\n" \
  "fistpl " src "\n" \
  "fildl " src "\n" \
  "fstps " src "\n"

fixes it.
Comment 2 Zack Middleton 2013-01-10 00:31:13 EST
Commited changes in https://github.com/ioquake/ioq3/commit/a99a214589128b093af8ee6dca9eea29dccc813b , thanks.