mirror of
https://github.com/HarbourMasters/Starship.git
synced 2025-04-28 20:37:58 +03:00
Attempt to fix math weirdness on Windows
This commit is contained in:
parent
ee01989243
commit
defb215e78
8 changed files with 36 additions and 28 deletions
|
@ -19,6 +19,7 @@
|
|||
#include "i4.h"
|
||||
#include "i5.h"
|
||||
#include "i6.h"
|
||||
#include "libc/math.h"
|
||||
#include "assets/ast_common.h"
|
||||
#include "gfx_dimensions.h"
|
||||
#include <libultraship.h>
|
||||
|
|
|
@ -34,4 +34,7 @@
|
|||
#define __lnearbyintf lnearbyintf
|
||||
#define __lnearbyint lnearbyint
|
||||
|
||||
extern f32 __sinf(f32);
|
||||
extern f32 __cosf(f32);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#include "libc/math.h"
|
||||
#include <math.h>
|
||||
|
||||
#define __sinf sinf
|
||||
#define __cosf cosf
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define SF64_MATH_H
|
||||
|
||||
#include <libultraship.h>
|
||||
#include "libc/math.h"
|
||||
#include <math.h>
|
||||
|
||||
typedef struct {
|
||||
|
@ -96,9 +97,6 @@ f32 Math_FAtan2F(f32, f32);
|
|||
f32 Math_FAsinF(f32);
|
||||
f32 Math_FAcosF(f32);
|
||||
|
||||
#define __sinf sinf
|
||||
#define __cosf cosf
|
||||
|
||||
f32 Math_FloorF(f32);
|
||||
f32 Math_CeilF(f32);
|
||||
f64 Math_Fabs(f64);
|
||||
|
|
|
@ -86,7 +86,7 @@ void Texture_Mottle(u16* dst, u16* src, u8 mode) {
|
|||
switch (mode) {
|
||||
case 2:
|
||||
for (var_s3 = 0; var_s3 < 32 * 32; var_s3 += 32) {
|
||||
temp_ft3 = 3.0f * sinf((s32) (((var_s3 / 32) + (gGameFrameCount / 4)) % 32U) * (2 * M_PI / 32));
|
||||
temp_ft3 = 3.0f * __sinf((s32) (((var_s3 / 32) + (gGameFrameCount / 4)) % 32U) * (2 * M_PI / 32));
|
||||
for (var_v1 = 0; var_v1 < 32; var_v1++) {
|
||||
dst[var_s3 + (temp_ft3 + var_v1) % 32U] = src[var_s3 + var_v1];
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ void Texture_Mottle(u16* dst, u16* src, u8 mode) {
|
|||
break;
|
||||
case 3:
|
||||
for (var_s3 = 0; var_s3 < 22 * 64; var_s3 += 64) {
|
||||
temp_ft3 = sinf((s32) (((var_s3 / 64) + (gGameFrameCount / 4)) % 32U) * (2 * M_PI / 8));
|
||||
temp_ft3 = __sinf((s32) (((var_s3 / 64) + (gGameFrameCount / 4)) % 32U) * (2 * M_PI / 8));
|
||||
for (var_v1 = 0; var_v1 < 64; var_v1++) {
|
||||
dst[var_s3 + (temp_ft3 + var_v1) % 64U] = src[var_s3 + var_v1];
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ void Texture_Mottle(u16* dst, u16* src, u8 mode) {
|
|||
break;
|
||||
case 1:
|
||||
for (var_s3 = 0; var_s3 < 16 * 16; var_s3 += 16) {
|
||||
temp_ft3 = 2.0f * sinf((s32) (((var_s3 / 16) + (gGameFrameCount / 2)) % 16U) * (2 * M_PI / 16));
|
||||
temp_ft3 = 2.0f * __sinf((s32) (((var_s3 / 16) + (gGameFrameCount / 2)) % 16U) * (2 * M_PI / 16));
|
||||
for (var_v1 = 0; var_v1 < 16; var_v1++) {
|
||||
dst[var_s3 + (temp_ft3 + var_v1) % 16U] = src[var_s3 + var_v1];
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ void Texture_Mottle(u16* dst, u16* src, u8 mode) {
|
|||
break;
|
||||
case 0:
|
||||
for (var_s3 = 0; var_s3 < 32 * 32; var_s3 += 32) {
|
||||
temp_ft3 = 2.0f * sinf((s32) (((var_s3 / 32) + (gGameFrameCount / 2)) % 32U) * (2 * M_PI / 32));
|
||||
temp_ft3 = 2.0f * __sinf((s32) (((var_s3 / 32) + (gGameFrameCount / 2)) % 32U) * (2 * M_PI / 32));
|
||||
for (var_v1 = 0; var_v1 < 32; var_v1++) {
|
||||
dst[var_s3 + (temp_ft3 + var_v1) % 32U] = src[var_s3 + var_v1];
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ void Texture_Mottle(u16* dst, u16* src, u8 mode) {
|
|||
var_s0_2 = (u8*) dst;
|
||||
var_s4_2 = (u8*) src;
|
||||
for (var_s3 = 0; var_s3 < 64 * 64; var_s3 += 64) {
|
||||
temp_ft3 = 4.0f * sinf((s32) (((var_s3 / 64) + (gGameFrameCount / 4)) % 32U) * (2 * M_PI / 32));
|
||||
temp_ft3 = 4.0f * __sinf((s32) (((var_s3 / 64) + (gGameFrameCount / 4)) % 32U) * (2 * M_PI / 32));
|
||||
for (var_v1 = 0; var_v1 < 64; var_v1++) {
|
||||
var_s0_2[var_s3 + (temp_ft3 + var_v1) % 64U] = var_s4_2[var_s3 + var_v1];
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include <libultraship.h>
|
||||
#include <math.h>
|
||||
#include "libc/math.h"
|
||||
|
||||
void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect, float near, float far,
|
||||
float scale) {
|
||||
|
@ -8,7 +9,7 @@ void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect, fl
|
|||
int col;
|
||||
guMtxIdentF(mf);
|
||||
fovy *= GU_PI / 180.0;
|
||||
yscale = cosf(fovy / 2) / sinf(fovy / 2);
|
||||
yscale = __cosf(fovy / 2) / __sinf(fovy / 2);
|
||||
mf[0][0] = yscale / aspect;
|
||||
mf[1][1] = yscale;
|
||||
mf[2][2] = (near + far) / (near - far);
|
||||
|
|
|
@ -121,6 +121,14 @@ extern "C" int GameEngine_OTRSigCheck(const char* data) {
|
|||
return strncmp(data, sOtrSignature, strlen(sOtrSignature)) == 0;
|
||||
}
|
||||
|
||||
extern "C" float __cosf(float angle) {
|
||||
return std::cosf(angle);
|
||||
}
|
||||
|
||||
extern "C" float __sinf(float angle) {
|
||||
return std::sinf(angle);
|
||||
}
|
||||
|
||||
extern "C" float SIN_DEG(float angle) {
|
||||
return SDL_sinf(M_DTOR * angle);
|
||||
}
|
||||
|
|
|
@ -323,8 +323,8 @@ void Matrix_RotateX(Matrix* mtx, f32 x, u8 mode) {
|
|||
if (x != 0) {
|
||||
cmf = mtx->m;
|
||||
|
||||
sin = sinf(x);
|
||||
cos = cosf(x);
|
||||
sin = __sinf(x);
|
||||
cos = __cosf(x);
|
||||
|
||||
tempY = cmf->xy;
|
||||
tempZ = cmf->xz;
|
||||
|
@ -350,8 +350,8 @@ void Matrix_RotateX(Matrix* mtx, f32 x, u8 mode) {
|
|||
cmf = mtx->m;
|
||||
|
||||
if (x != 0) {
|
||||
sin = sinf(x);
|
||||
cos = cosf(x);
|
||||
sin = __sinf(x);
|
||||
cos = __cosf(x);
|
||||
} else {
|
||||
sin = zero;
|
||||
cos = one;
|
||||
|
@ -390,8 +390,8 @@ void Matrix_RotateY(Matrix* mtx, f32 y, u8 mode) {
|
|||
if (y != 0.0f) {
|
||||
cmf = mtx->m;
|
||||
|
||||
sin = sinf(y);
|
||||
cos = cosf(y);
|
||||
sin = __sinf(y);
|
||||
cos = __cosf(y);
|
||||
|
||||
tempX = cmf->xx;
|
||||
tempZ = cmf->xz;
|
||||
|
@ -417,8 +417,8 @@ void Matrix_RotateY(Matrix* mtx, f32 y, u8 mode) {
|
|||
cmf = mtx->m;
|
||||
|
||||
if (y != 0.0f) {
|
||||
sin = sinf(y);
|
||||
cos = cosf(y);
|
||||
sin = __sinf(y);
|
||||
cos = __cosf(y);
|
||||
} else {
|
||||
cos = one;
|
||||
sin = zero;
|
||||
|
@ -455,8 +455,8 @@ void Matrix_RotateZ(Matrix* mtx, f32 z, u8 mode) {
|
|||
if (z != 0) {
|
||||
cmf = mtx->m;
|
||||
|
||||
sin = sinf(z);
|
||||
cos = cosf(z);
|
||||
sin = __sinf(z);
|
||||
cos = __cosf(z);
|
||||
|
||||
tempX = cmf->xx;
|
||||
tempY = cmf->xy;
|
||||
|
@ -482,8 +482,8 @@ void Matrix_RotateZ(Matrix* mtx, f32 z, u8 mode) {
|
|||
cmf = mtx->m;
|
||||
|
||||
if (z != 0) {
|
||||
sin = sinf(z);
|
||||
cos = cosf(z);
|
||||
sin = __sinf(z);
|
||||
cos = __cosf(z);
|
||||
} else {
|
||||
sin = 0.0f;
|
||||
cos = 1.0f;
|
||||
|
@ -524,8 +524,8 @@ void Matrix_RotateAxis(Matrix* mtx, f32 angle, f32 x, f32 y, f32 z, u8 mode) {
|
|||
if (angle != 0) {
|
||||
cmf = mtx->m;
|
||||
|
||||
sin = sinf(angle);
|
||||
cos = cosf(angle);
|
||||
sin = __sinf(angle);
|
||||
cos = __cosf(angle);
|
||||
|
||||
temp1 = cmf->xx;
|
||||
temp2 = cmf->xy;
|
||||
|
@ -555,8 +555,8 @@ void Matrix_RotateAxis(Matrix* mtx, f32 angle, f32 x, f32 y, f32 z, u8 mode) {
|
|||
cmf = mtx->m;
|
||||
|
||||
if (angle != 0) {
|
||||
sin = sinf(angle);
|
||||
cos = cosf(angle);
|
||||
sin = __sinf(angle);
|
||||
cos = __cosf(angle);
|
||||
versin = 1.0f - cos;
|
||||
|
||||
cmf->xx = x * x * versin + cos;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue