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; _last_error = error;
} }
void dgl_init(void) { void _dgl_atexit(void) {
atexit(mouse_shutdown); mouse_shutdown();
atexit(keyboard_shutdown); keyboard_shutdown();
atexit(video_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) { 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) { static boolean power_of_2(int n) {

View file

@ -4,11 +4,11 @@ target_name = dgl
object_files = & object_files = &
dglblit.obj & dglblit.obj &
dglblita.obj & dglblita.obj &
dglclip.obj & dglclip.obj &
dgl.obj & dgl.obj &
dgldraw.obj & dgldraw.obj &
dgldrawa.obj & dgldrawa.obj &
dglgfx.obj & dglgfx.obj &
dglpal.obj & dglpal.obj &
dglkbrd.obj & dglkbrd.obj &
@ -34,7 +34,7 @@ asm_flags = /m /ml $(asm_flags_$(target_config))
wcc386 $[. /zq $(cc_flags) wcc386 $[. /zq $(cc_flags)
.asm.obj: .AUTODEPEND .asm.obj: .AUTODEPEND
tasm $[. /t $(asm_flags) tasm $[. /t $(asm_flags)
$(target_name).lbc: $(object_files) $(target_name).lbc: $(object_files)
%create $^@ %create $^@
@ -47,6 +47,7 @@ clean : .SYMBOLIC
del *.obj del *.obj
del *.err del *.err
del $(target_name).exe del $(target_name).exe
del $(target_name).lib
del $(target_name).lnk del $(target_name).lnk
del $(target_name).lbc del $(target_name).lbc

View file

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

View file

@ -6,12 +6,11 @@
#include "dgl.h" #include "dgl.h"
#define F_EQU(a, b) (close_enough((a), (b), TOLERANCE)) #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(); extern void _breakpoint();
#pragma aux _breakpoint = "int 0x03"; #pragma aux _breakpoint = "int 0x03";
#define ASSERT(x) \ #define ASSERT(x) \
do { \ do { \
if (!(x)) { \ if (!(x)) { \

View file

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