mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-08 00:32:28 +00:00
- Build: Promote sintable[]
array values to precision Blood uses in prep for replacing Blood's costable[]
.
This commit is contained in:
parent
9d3d8e747c
commit
879e2f3ce4
3 changed files with 12 additions and 10 deletions
|
@ -28,7 +28,7 @@ static_assert('\xff' == 255, "Char must be unsigned!");
|
||||||
# define EXTERN extern
|
# define EXTERN extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EXTERN int16_t sintable[2048];
|
EXTERN int sintable[2048];
|
||||||
|
|
||||||
#include "buildtiles.h"
|
#include "buildtiles.h"
|
||||||
#include "c_cvars.h"
|
#include "c_cvars.h"
|
||||||
|
|
|
@ -207,7 +207,7 @@ static int32_t engineLoadTables(void)
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
for (i=0; i<=512; i++)
|
for (i=0; i<=512; i++)
|
||||||
sintable[i] = bsinf(i);
|
sintable[i] = int(sin(i * BAngRadian) * SINTABLEUNIT);
|
||||||
for (i=513; i<1024; i++)
|
for (i=513; i<1024; i++)
|
||||||
sintable[i] = sintable[1024-i];
|
sintable[i] = sintable[1024-i];
|
||||||
for (i=1024; i<2048; i++)
|
for (i=1024; i<2048; i++)
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
#include "xs_Float.h" // needed for reliably overflowing float->int conversions.
|
#include "xs_Float.h" // needed for reliably overflowing float->int conversions.
|
||||||
#include "serializer.h"
|
#include "serializer.h"
|
||||||
#include "math/cmath.h"
|
#include "math/cmath.h"
|
||||||
#include "templates.h"
|
|
||||||
|
|
||||||
class FSerializer;
|
class FSerializer;
|
||||||
|
|
||||||
|
@ -49,7 +48,10 @@ enum
|
||||||
{
|
{
|
||||||
BAMBITS = 21,
|
BAMBITS = 21,
|
||||||
BAMUNIT = 1 << BAMBITS,
|
BAMUNIT = 1 << BAMBITS,
|
||||||
SINSHIFT = 14
|
SINTABLEBITS = 30,
|
||||||
|
SINTABLEUNIT = 1 << SINTABLEBITS,
|
||||||
|
BUILDSINBITS = 14,
|
||||||
|
BUILDSINSHIFT = SINTABLEBITS - BUILDSINBITS,
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -61,11 +63,11 @@ enum
|
||||||
constexpr double BAngRadian = pi::pi() * (1. / 1024.);
|
constexpr double BAngRadian = pi::pi() * (1. / 1024.);
|
||||||
constexpr double BAngToDegree = 360. / 2048.;
|
constexpr double BAngToDegree = 360. / 2048.;
|
||||||
|
|
||||||
extern int16_t sintable[2048];
|
extern int sintable[2048];
|
||||||
|
|
||||||
inline constexpr double sinscale(const int shift)
|
inline constexpr double sinscale(const int shift)
|
||||||
{
|
{
|
||||||
return shift >= -SINSHIFT ? uint64_t(1) << (SINSHIFT + shift) : 1. / (uint64_t(1) << abs(SINSHIFT + shift));
|
return shift >= -BUILDSINBITS ? uint64_t(1) << (BUILDSINBITS + shift) : 1. / (uint64_t(1) << abs(BUILDSINBITS + shift));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -74,9 +76,9 @@ inline constexpr double sinscale(const int shift)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
inline int bsin(const int ang, const int shift = 0)
|
inline int bsin(const int ang, int shift = 0)
|
||||||
{
|
{
|
||||||
return shift < 0 ? sintable[ang & 2047] >> abs(shift) : sintable[ang & 2047] << shift;
|
return (shift -= BUILDSINSHIFT) < 0 ? sintable[ang & 2047] >> abs(shift) : sintable[ang & 2047] << shift;
|
||||||
}
|
}
|
||||||
inline double bsinf(const double ang, const int shift = 0)
|
inline double bsinf(const double ang, const int shift = 0)
|
||||||
{
|
{
|
||||||
|
@ -90,9 +92,9 @@ inline double bsinf(const double ang, const int shift = 0)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
inline int bcos(const int ang, const int shift = 0)
|
inline int bcos(const int ang, int shift = 0)
|
||||||
{
|
{
|
||||||
return shift < 0 ? sintable[(ang + 512) & 2047] >> abs(shift) : sintable[(ang + 512) & 2047] << shift;
|
return (shift -= BUILDSINSHIFT) < 0 ? sintable[(ang + 512) & 2047] >> abs(shift) : sintable[(ang + 512) & 2047] << shift;
|
||||||
}
|
}
|
||||||
inline double bcosf(const double ang, const int shift = 0)
|
inline double bcosf(const double ang, const int shift = 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue