diff --git a/DGL.C b/DGL.C index 4abd7aa..7c38fea 100644 --- a/DGL.C +++ b/DGL.C @@ -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); } diff --git a/DGLMATH.H b/DGLMATH.H index 413b4ce..efaa12a 100644 --- a/DGLMATH.H +++ b/DGLMATH.H @@ -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) { diff --git a/MAKEFILE b/MAKEFILE index 1fbc1b2..edb3f2e 100644 --- a/MAKEFILE +++ b/MAKEFILE @@ -4,11 +4,11 @@ target_name = dgl object_files = & dglblit.obj & - dglblita.obj & + dglblita.obj & dglclip.obj & dgl.obj & dgldraw.obj & - dgldrawa.obj & + dgldrawa.obj & dglgfx.obj & dglpal.obj & dglkbrd.obj & @@ -34,7 +34,7 @@ asm_flags = /m /ml $(asm_flags_$(target_config)) wcc386 $[. /zq $(cc_flags) .asm.obj: .AUTODEPEND - tasm $[. /t $(asm_flags) + tasm $[. /t $(asm_flags) $(target_name).lbc: $(object_files) %create $^@ @@ -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 diff --git a/TEST/FIXED.C b/TEST/FIXED.C index 46e06d9..0c06012 100644 --- a/TEST/FIXED.C +++ b/TEST/FIXED.C @@ -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)); } } diff --git a/TEST/HELPERS.H b/TEST/HELPERS.H index d33f988..3e3f7b0 100644 --- a/TEST/HELPERS.H +++ b/TEST/HELPERS.H @@ -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)) { \ diff --git a/TEST/TEST.C b/TEST/TEST.C index 4b288e0..ba833cc 100644 --- a/TEST/TEST.C +++ b/TEST/TEST.C @@ -69,7 +69,6 @@ int main(void) { surface_free(backbuffer); - return 0; }