some small fixes

This commit is contained in:
Gered 2018-04-30 20:52:43 -04:00
parent 84920e46d6
commit 8a61d6e674
6 changed files with 24 additions and 15 deletions

12
DGL.C
View file

@ -58,9 +58,13 @@ void dgl_set_error(DGL_ERROR error) {
_last_error = error;
}
void dgl_init(void) {
atexit(mouse_shutdown);
atexit(keyboard_shutdown);
atexit(video_shutdown);
void _dgl_atexit(void) {
mouse_shutdown();
keyboard_shutdown();
video_shutdown();
}
void dgl_init(void) {
atexit(_dgl_atexit);
}

View file

@ -61,7 +61,9 @@ static float symmetrical_round(float value) {
}
static boolean close_enough(float a, float b, float tolerance) {
return fabs((a - b) / ((b == 0.0f) ? 1.0f : b)) < tolerance;
//return fabs((a - b) / ((b == 0.0f) ? 1.0f : b)) < tolerance;
// TODO: this is not the best way
return fabs(a - b) <= tolerance;
}
static boolean power_of_2(int n) {

View file

@ -47,6 +47,7 @@ clean : .SYMBOLIC
del *.obj
del *.err
del $(target_name).exe
del $(target_name).lib
del $(target_name).lnk
del $(target_name).lbc

View file

@ -6,13 +6,14 @@
void test_fixed(void) {
fixed a, b, c;
float af, bf, cf, f;
float aaf, bbf, ccf;
int i;
a = FTOFIX(PI);
f = FIXTOF(a);
ASSERT(FFIX_EQU(PI, f));
a = FTOFIX(-0.37f);
a = FTOFIX(-0.38f);
f = FIXTOF(a);
ASSERT(FFIX_EQU(-0.38f, f));
@ -57,13 +58,16 @@ void test_fixed(void) {
f = DEG_TO_RAD(i + 1);
a = fix_sin(FTOFIX(f));
af = sin(f);
aaf = FIXTOF(a);
b = fix_cos(FTOFIX(f));
bf = cos(f);
bbf = FIXTOF(b);
c = fix_tan(FTOFIX(f));
cf = tan(f);
ASSERT(FFIX_EQU(FIXTOF(a), af));
ASSERT(FFIX_EQU(FIXTOF(b), bf));
ASSERT(FFIX_EQU(FIXTOF(c), cf));
ccf = FIXTOF(c);
ASSERT(FFIX_EQU(aaf, af));
ASSERT(FFIX_EQU(bbf, bf));
ASSERT(FFIX_EQU(ccf, cf));
}
}

View file

@ -6,12 +6,11 @@
#include "dgl.h"
#define F_EQU(a, b) (close_enough((a), (b), TOLERANCE))
#define FFIX_EQU(a, b) (close_enough((a), (b), 0.01f))
#define FFIX_EQU(a, b) (close_enough((a), (b), 0.05f)) // wow !
extern void _breakpoint();
#pragma aux _breakpoint = "int 0x03";
#define ASSERT(x) \
do { \
if (!(x)) { \

View file

@ -69,7 +69,6 @@ int main(void) {
surface_free(backbuffer);
return 0;
}