From a7b074a889dbdc9e1036381717de4110729aff0e Mon Sep 17 00:00:00 2001 From: tixiv Date: Thu, 4 Dec 2008 03:34:55 +0000 Subject: [PATCH] integrating simulator --- Makefile | 46 +++- animations/programm.c | 4 - defaults.mk | 3 +- display_loop.c | 124 ++++++++++ display_loop.h | 4 + joystick.h | 2 - main.c | 116 +-------- rules.mk | 5 +- simulator/Makefile | 112 +-------- simulator/main.c | 556 +++++++++++++++++++----------------------- util.h | 2 - 11 files changed, 427 insertions(+), 547 deletions(-) create mode 100644 display_loop.c create mode 100644 display_loop.h diff --git a/Makefile b/Makefile index e003322..9d89982 100644 --- a/Makefile +++ b/Makefile @@ -4,16 +4,29 @@ TOPDIR = . SRC = \ main.c \ + display_loop.c \ eeprom_reserve.c \ pixel.c \ util.c \ +SRC_SIM = \ + display_loop.c \ + pixel.c \ + LAUNCH_BOOTLOADER = launch-bootloader SERIAL = /dev/ttyUSB0 export TOPDIR ############################################################################## + +all: compile-$(TARGET) + @echo "===============================" + @echo "$(TARGET) compiled for: $(MCU)" + @echo "size is: " + @${TOPDIR}/scripts/size $(TARGET) + @echo "===============================" + ############################################################################## # generic fluff include defaults.mk @@ -26,7 +39,6 @@ include defaults.mk .subdirs: autoconf.h @ echo "checking in which subdirs to build" @ $(RM) -f $@ - @ echo "SUBDIRS += borg_hw" >> $@ @ echo "SUBDIRS += animations" >> $@ @ (for subdir in `grep -e "^#define .*_SUPPORT" autoconf.h \ | sed -e "s/^#define //" -e "s/_SUPPORT.*//" \ @@ -39,7 +51,7 @@ ifneq ($(MAKECMDGOALS),clean) ifneq ($(MAKECMDGOALS),mrproper) ifneq ($(MAKECMDGOALS),menuconfig) --include $(TOPDIR)/.subdirs +include $(TOPDIR)/.subdirs -include $(TOPDIR)/.config endif # MAKECMDGOALS!=menuconfig @@ -48,23 +60,21 @@ endif # MAKECMDGOALS!=clean endif # no_deps!=t ############################################################################## -all: compile-$(TARGET) - @echo "===============================" - @echo "$(TARGET) compiled for: $(MCU)" - @echo "size is: " - @${TOPDIR}/scripts/size $(TARGET) - @echo "===============================" +SUBDIRS_AVR = borg_hw +SUBDIRS_AVR += $(SUBDIRS) .PHONY: compile-subdirs_avr compile-subdirs_avr: - @ for dir in $(SUBDIRS); do make -C $$dir objects_avr || exit 5; done + @ for dir in $(SUBDIRS_AVR); do make -C $$dir objects_avr || exit 5; done .PHONY: compile-$(TARGET) compile-$(TARGET): compile-subdirs_avr $(TARGET).hex $(TARGET).bin $(TARGET).lst + @ echo "foobar" + OBJECTS += $(patsubst %.c,./obj_avr/%.o,${SRC}) -SUBDIROBJECTS = $(foreach subdir,$(SUBDIRS),$(foreach object,$(shell cat $(subdir)/obj_avr/.objects),$(subdir)/$(object))) +SUBDIROBJECTS = $(foreach subdir,$(SUBDIRS_AVR),$(foreach object,$(shell cat $(subdir)/obj_avr/.objects),$(subdir)/$(object))) $(TARGET): $(OBJECTS) $(SUBDIROBJECTS) $(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(SUBDIROBJECTS) @@ -95,18 +105,28 @@ $(TARGET): $(OBJECTS) $(SUBDIROBJECTS) ############################################################################## #Rules for simulator build +SUBDIRS_SIM = simulator +SUBDIRS_SIM += $(SUBDIRS) + .PHONY: compile-subdirs_sim compile-subdirs_sim: - @ for dir in $(SUBDIRS); do make -C $$dir objects_sim || exit 5; done + @ for dir in $(SUBDIRS_SIM); do make -C $$dir objects_sim || exit 5; done @ make -C ./simulator/ objects_sim || exit 5; simulator: autoconf.h .config .subdirs compile-subdirs_sim $(TARGET_SIM) -SUBDIROBJECTS_SIM = $(foreach subdir,$(SUBDIRS),$(foreach object,$(shell cat $(subdir)/obj_sim/.objects),$(subdir)/$(object))) +SUBDIROBJECTS_SIM = $(foreach subdir,$(SUBDIRS_SIM),$(foreach object,$(shell cat $(subdir)/obj_sim/.objects),$(subdir)/$(object))) -$(TARGET_SIM): $(SUBDIROBJECTS_SIM) +OBJECTS_SIM = $(patsubst %.c,obj_sim/%.o,${SRC_SIM}) + +$(TARGET_SIM): $(OBJECTS_SIM) $(SUBDIROBJECTS_SIM) $(HOSTCC) $(LDFLAGS_SIM) $(LIBS_SIM) -o $@ $(SUBDIROBJECTS_SIM) +./obj_sim/%.o: %.c + @ if [ ! -d obj_sim ]; then mkdir obj_sim ; fi + @ echo "compiling $<" + @ $(HOSTCC) -o $@ $(CFLAGS_SIM) -c $< + ############################################################################## CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else if [ -x /bin/bash ]; then echo /bin/bash; \ diff --git a/animations/programm.c b/animations/programm.c index fc760ba..f4a824a 100644 --- a/animations/programm.c +++ b/animations/programm.c @@ -4,10 +4,6 @@ #include "../pixel.h" #include "../util.h" -#ifdef AVR - #include -#endif - #define RANDOM8() (random8()) #ifdef ANIMATION_TESTS diff --git a/defaults.mk b/defaults.mk index 6a530e2..941a530 100644 --- a/defaults.mk +++ b/defaults.mk @@ -29,7 +29,8 @@ LDFLAGS += -mmcu=$(MCU) #Settings for Simulator build CFLAGS_SIM = -g -Wall -pedantic -std=c99 -O2 LDFLAGS_SIM = -Wl -LIBS_SIM = LIBS = -lglut -lpthread -lGL -lGLU +#LIBS_SIM = -lglut -lpthread -lGL -lGLU +LIBS_SIM = -lglut32 -lglu32 -lopengl32 ############################################################################## diff --git a/display_loop.c b/display_loop.c new file mode 100644 index 0000000..421b4d5 --- /dev/null +++ b/display_loop.c @@ -0,0 +1,124 @@ + +#include + +#include "config.h" +#include "scrolltext/scrolltext.h" +#include "animations/programm.h" +#include "animations/matrix.h" +#include "animations/gameoflife.h" +#include "borg_hw/borg_hw.h" +#include "can/borg_can.h" +#include "random/prng.h" +#include "random/persistentCounter.h" +#include "mcuf/mcuf.h" +#include "menu/menu.h" +#include "pixel.h" +#include "joystick.h" + + +volatile unsigned char oldMode, oldOldmode, mode; + +jmp_buf newmode_jmpbuf; + +void display_loop(){ +// mcuf_serial_mode(); + + mode = setjmp(newmode_jmpbuf); + oldOldmode = oldMode; + waitForFire = 1; + for(;;){ + oldMode = mode; + switch(mode++) { + +#ifdef ANIMATION_SCROLLTEXT + case 1: + scrolltext(scrolltext_text); + { char a[14]; + sprintf(a," - unsigned char waitForFire; void joy_init(); diff --git a/main.c b/main.c index 4328d3f..1793215 100644 --- a/main.c +++ b/main.c @@ -3,24 +3,12 @@ #include #include -#include "autoconf.h" -//#include "config.h" -#include "scrolltext/scrolltext.h" -#include "animations/programm.h" -#include "animations/matrix.h" -#include "animations/gameoflife.h" +#include "config.h" #include "borg_hw/borg_hw.h" #include "can/borg_can.h" #include "random/prng.h" #include "random/persistentCounter.h" -#include "mcuf/mcuf.h" -#include "menu/menu.h" -#include "pixel.h" -#include "joystick.h" - -volatile unsigned char oldMode, oldOldmode, mode; - -jmp_buf newmode_jmpbuf; +#include "display_loop.h" int main (void){ clear_screen(0); @@ -46,104 +34,6 @@ int main (void){ sei(); -// mcuf_serial_mode(); - - mode = setjmp(newmode_jmpbuf); - oldOldmode = oldMode; - waitForFire = 1; - for(;;){ - oldMode = mode; - switch(mode++) { + display_loop(); -#ifdef ANIMATION_SCROLLTEXT - case 1: - scrolltext(scrolltext_text); - { char a[14]; - sprintf(a," obj_sim/.objects + @ if [ ! -d obj_sim ]; then mkdir obj_sim ; fi + @ echo $(OBJECTS_SIM) > obj_sim/.objects diff --git a/simulator/Makefile b/simulator/Makefile index b18ab3a..45245f4 100644 --- a/simulator/Makefile +++ b/simulator/Makefile @@ -1,111 +1,9 @@ -PRG = borgSim -OPTIMIZE = -O0 -LIBS = -lglut -lpthread -lGL -lGLU -CC = gcc -LD = ld +TARGET = libanimations.a +TOPDIR = .. -override CFLAGS = -g -Wall -pedantic -std=c99 $(OPTIMIZE) -$(DEFS) -override LDFLAGS = -Wl,-Map,$(PRG).map +include $(TOPDIR)/defaults.mk -OBJ = breakpoint.o font_arial8.o font_small6.o font_uni53.o invader_draw.o \ - invader_init.o invader_proc.o invaders2.o joystick.o main.o menu.o pixel.o \ - programm.o scrolltext3.o snake.o trackball.o util.o tetris/input.o \ - tetris/logic.o tetris/piece.o tetris/playfield.o tetris/view.o prng.o \ - memxor_c.o noekeon.o stonefly.o +SRC_SIM = main.c trackball.c -all: $(PRG) -$(PRG): $(OBJ) - $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) $(OBJ) -o $@ - -clean: - rm -rf $(OBJ) $(PRG) $(PRG).map - -breakpoint.o: breakpoint.c pixel.h util.h config.h - $(CC) $(CFLAGS) -c -o breakpoint.o breakpoint.c - -font_arial8.o: font_arial8.c font.h - $(CC) $(CFLAGS) -c -o font_arial8.o font_arial8.c - -font_small6.o: font_small6.c font.h - $(CC) $(CFLAGS) -c -o font_small6.o font_small6.c - -font_uni53.o: font_uni53.c font.h - $(CC) $(CFLAGS) -c -o font_uni53.o font_uni53.c - -invader_draw.o: invader_draw.c invaders2.h pixel.h util.h config.h \ - scrolltext.h joystick.h - $(CC) $(CFLAGS) -c -o invader_draw.o invader_draw.c - -invader_init.o: invader_init.c invaders2.h pixel.h util.h config.h \ - scrolltext.h joystick.h - $(CC) $(CFLAGS) -c -o invader_init.o invader_init.c - -invader_proc.o: invader_proc.c invaders2.h pixel.h util.h config.h \ - scrolltext.h joystick.h - $(CC) $(CFLAGS) -c -o invader_proc.o invader_proc.c - -invaders2.o: invaders2.c util.h invaders2.h pixel.h config.h scrolltext.h \ - joystick.h - $(CC) $(CFLAGS) -c -o invaders2.o invaders2.c - -joystick.o: joystick.c joystick.h - $(CC) $(CFLAGS) -c -o joystick.o joystick.c - -main.o: main.c config.h pixel.h util.h programm.h menu.h tetris/logic.h \ - tetris/piece.h trackball.h snake.h scrolltext.h - $(CC) $(CFLAGS) -c -o main.o main.c - -menu.o: menu.c menu.h config.h util.h pixel.h joystick.h snake.h \ - tetris/logic.h tetris/piece.h invaders2.h scrolltext.h - $(CC) $(CFLAGS) -c -o menu.o menu.c - -pixel.o: pixel.c pixel.h util.h config.h - $(CC) $(CFLAGS) -c -o pixel.o pixel.c - -programm.o: programm.c pixel.h util.h config.h programm.h joystick.h - $(CC) $(CFLAGS) -c -o programm.o programm.c - -scrolltext3.o: scrolltext3.c config.h scrolltext.h pixel.h util.h \ - font_arial8.h font.h font_small6.h font_uni53.h - $(CC) $(CFLAGS) -c -o scrolltext3.o scrolltext3.c - -snake.o: snake.c pixel.h util.h config.h joystick.h - $(CC) $(CFLAGS) -c -o snake.o snake.c - -trackball.o: trackball.c trackball.h - $(CC) $(CFLAGS) -c -o trackball.o trackball.c - -util.o: util.c joystick.h - $(CC) $(CFLAGS) -c -o util.o util.c - -noekeon.o: noekeon.c noekeon.h memxor.h - $(CC) $(CFLAGS) -c -o $@ $< - -memxor_c.o: memxor_c.c memxor.h - $(CC) $(CFLAGS) -c -o $@ $< - -prng.o: prng.c prng.h noekeon.h memxor.h - $(CC) $(CFLAGS) -c -o $@ $< - -tetris/input.o: tetris/input.c joystick.h util.h tetris/input.h - $(CC) $(CFLAGS) -c -o tetris/input.o tetris/input.c - -logic.o: tetris/logic.c tetris/logic.h tetris/piece.h tetris/playfield.h \ - tetris/view.h tetris/input.h prng.h ../borg-base/prng.h - $(CC) $(CFLAGS) -c -o tetris/logic.o tetris/logic.c - -tetris/piece.o: tetris/piece.c tetris/piece.h - $(CC) $(CFLAGS) -c -o tetris/piece.o tetris/piece.c - -tetris/playfield.o: tetris/playfield.c tetris/playfield.h tetris/piece.h - $(CC) $(CFLAGS) -c -o tetris/playfield.o tetris/playfield.c - -tetris/view.o: tetris/view.c config.h pixel.h util.h scrolltext.h \ - tetris/logic.h tetris/piece.h tetris/playfield.h tetris/view.h - $(CC) $(CFLAGS) -c -o tetris/view.o tetris/view.c - -stonefly.o: stonefly.h stonefly.c pixel.h util.h config.h prng.h \ - ../borg-base/prng.h tetris/piece.h - $(CC) $(CFLAGS) -c -o stonefly.o stonefly.c +include $(TOPDIR)/rules.mk diff --git a/simulator/main.c b/simulator/main.c index 1bb51d9..30bf3ff 100644 --- a/simulator/main.c +++ b/simulator/main.c @@ -1,309 +1,259 @@ - - + + #ifdef _WIN32 -# include -# include -# include -# define pthread_t int -#else +# include +# include +# include +# define pthread_t int +#else # ifdef OSX_ # include # else # include # endif -# include // for threads in linux -# include -# include -# include -# include -#endif - -#include -#include -#include "config.h" -#include "pixel.h" -#include "programm.h" -#include "menu.h" -#include "tetris/logic.h" -#include "trackball.h" -#include "snake.h" -#include "stonefly.h" - -#include "scrolltext.h" - - - -unsigned char fakeport; -jmp_buf newmode_jmpbuf; -volatile unsigned char oldMode, oldOldmode, mode; -extern unsigned char waitForFire; - - -int WindWidth, WindHeight; - -unsigned char pixmap[NUMPLANE][NUM_ROWS][LINEBYTES]; -unsigned char joystick; - -float view_rotx = 0, view_roty = 0, view_rotz = 0; -int win; - - -pthread_t simthread; -GLUquadric* quad; - -void drawLED(int color, float pos_x, float pos_y, float pos_z) { - glPushMatrix(); - glTranslatef(pos_x, pos_y, pos_z); - glCallList(color); - glPopMatrix(); -} - -void display(void){ - int x, y, z, level, color; - tbReshape(WindWidth, WindHeight); - glClear(GL_COLOR_BUFFER_BIT); - glPushMatrix(); - glTranslatef(NUM_COLS*2., 0., NUM_ROWS*2.); - tbMatrix(); - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - glTranslatef(-NUM_COLS*2, 0., -NUM_ROWS*2.); - for (x = 0; x < 1; x++) { - for (y = 0; y < NUM_COLS; y++) { - for (z = 0; z < NUM_ROWS; z++) { - color = 0; - for (level = 0; level < NUMPLANE; level++) { - if (pixmap[level][z%NUM_ROWS][y/8] & (1 << y % 8)) { - color = level+1; - } - } - drawLED(color, (float)y*4.0, - (float)x*4.0, - (float)(NUM_ROWS-1-z)*4.0); - } - } - } - glPopMatrix(); - glutSwapBuffers(); -#ifdef _WIN32 - Sleep(10); -#else - usleep(20000); -#endif - joystick = 255; -} - -void keyboard(unsigned char key, int x, int y){ - switch (key) { - case 'q': printf("Quit\n"); - glutDestroyWindow(win); - exit(0); - break; - case ' ': - fakeport |= 0x01; - break; - case 'a': - fakeport |= 0x02; - break; - case 'd': - fakeport |= 0x04; - break; - case 's': - fakeport |= 0x08; - break; - case 'w': - fakeport |= 0x10; - break; - } -} - -void keyboardup(unsigned char key, int x, int y){ - switch (key) { - case ' ': - fakeport &= ~0x01; - break; - case 'a': - fakeport &= ~0x02; - break; - case 'd': - fakeport &= ~0x04; - break; - case 's': - fakeport &= ~0x08; - break; - case 'w': - fakeport &= ~0x10; - break; - } -} - -void mouse(int button, int state, int x, int y) -{ - tbMouse(button, state, x, y); -} - -void motion(int x, int y) -{ - tbMotion(x, y); -} - -void reshape(int width, int height) -{ - - tbReshape(width, height); - - glViewport(0, 0, width, height); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(60.0, (float)WindWidth/(float)WindWidth, 5., 1000.); - gluLookAt(NUM_ROWS*2., NUM_ROWS*2.+50., NUM_COLS*2., - NUM_ROWS*2., NUM_ROWS*2., NUM_COLS*2., - 0.0, 0.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - WindWidth = width; - WindHeight = height; -} - -/* change view angle */ -static void special(int k, int x, int y) { - switch (k) { - case GLUT_KEY_UP: - view_rotx += 5.0; - break; - case GLUT_KEY_DOWN: - view_rotx -= 5.0; - break; - case GLUT_KEY_LEFT: - view_rotz += 5.0; - break; - case GLUT_KEY_RIGHT: - view_rotz -= 5.0; - break; - default: - return; - } - glutPostRedisplay(); -} -/* -void timf(int value) { - glutPostRedisplay(); - glutTimerFunc(1, timf, 0); -}*/ - -void *display_loop(void * unused) { - unsigned char mode;;; - mode = setjmp(newmode_jmpbuf); - oldOldmode = oldMode; - waitForFire = 1; - scrolltext(" // for threads in linux +# include +# include +# include +# include +#endif + +#include +#include +#include "../config.h" +#include "../display_loop.h" +#include "../pixel.h" +//#include "programm.h" +//#include "menu.h" +//#include "../tetris/logic.h" +#include "trackball.h" +//#include "../games/snake.h" +//#include "stonefly.h" + +//#include "scrolltext.h" + + + +unsigned char fakeport; +jmp_buf newmode_jmpbuf; +volatile unsigned char oldMode, oldOldmode, mode; +extern unsigned char waitForFire; + + +int WindWidth, WindHeight; + +unsigned char pixmap[NUMPLANE][NUM_ROWS][LINEBYTES]; +unsigned char joystick; + +float view_rotx = 0, view_roty = 0, view_rotz = 0; +int win; + + +pthread_t simthread; +GLUquadric* quad; + +void drawLED(int color, float pos_x, float pos_y, float pos_z) { + glPushMatrix(); + glTranslatef(pos_x, pos_y, pos_z); + glCallList(color); + glPopMatrix(); +} + +void display(void){ + int x, y, z, level, color; + tbReshape(WindWidth, WindHeight); + glClear(GL_COLOR_BUFFER_BIT); + glPushMatrix(); + glTranslatef(NUM_COLS*2., 0., NUM_ROWS*2.); + tbMatrix(); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + glTranslatef(-NUM_COLS*2, 0., -NUM_ROWS*2.); + for (x = 0; x < 1; x++) { + for (y = 0; y < NUM_COLS; y++) { + for (z = 0; z < NUM_ROWS; z++) { + color = 0; + for (level = 0; level < NUMPLANE; level++) { + if (pixmap[level][z%NUM_ROWS][y/8] & (1 << y % 8)) { + color = level+1; + } + } + drawLED(color, (float)y*4.0, + (float)x*4.0, + (float)(NUM_ROWS-1-z)*4.0); + } + } + } + glPopMatrix(); + glutSwapBuffers(); +#ifdef _WIN32 + Sleep(10); +#else + usleep(20000); +#endif + joystick = 255; +} + +void keyboard(unsigned char key, int x, int y){ + switch (key) { + case 'q': printf("Quit\n"); + glutDestroyWindow(win); + exit(0); + break; + case ' ': + fakeport |= 0x01; + break; + case 'a': + fakeport |= 0x02; + break; + case 'd': + fakeport |= 0x04; + break; + case 's': + fakeport |= 0x08; + break; + case 'w': + fakeport |= 0x10; + break; + } +} + +void keyboardup(unsigned char key, int x, int y){ + switch (key) { + case ' ': + fakeport &= ~0x01; + break; + case 'a': + fakeport &= ~0x02; + break; + case 'd': + fakeport &= ~0x04; + break; + case 's': + fakeport &= ~0x08; + break; + case 'w': + fakeport &= ~0x10; + break; + } +} + +void mouse(int button, int state, int x, int y) +{ + tbMouse(button, state, x, y); +} + +void motion(int x, int y) +{ + tbMotion(x, y); +} + +void reshape(int width, int height) +{ + + tbReshape(width, height); + + glViewport(0, 0, width, height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(60.0, (float)WindWidth/(float)WindWidth, 5., 1000.); + gluLookAt(NUM_ROWS*2., NUM_ROWS*2.+50., NUM_COLS*2., + NUM_ROWS*2., NUM_ROWS*2., NUM_COLS*2., + 0.0, 0.0, 1.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + WindWidth = width; + WindHeight = height; +} + +/* change view angle */ +static void special(int k, int x, int y) { + switch (k) { + case GLUT_KEY_UP: + view_rotx += 5.0; + break; + case GLUT_KEY_DOWN: + view_rotx -= 5.0; + break; + case GLUT_KEY_LEFT: + view_rotz += 5.0; + break; + case GLUT_KEY_RIGHT: + view_rotz -= 5.0; + break; + default: + return; + } + glutPostRedisplay(); +} +/* +void timf(int value) { + glutPostRedisplay(); + glutTimerFunc(1, timf, 0); +}*/ + +void *display_loop_run(void * unused) { + display_loop(); +} + +int main(int argc, char **argv){ + WindHeight = 700; + WindWidth = 700; + glutInit(&argc,argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); + glutInitWindowSize(WindHeight, WindWidth); + win = glutCreateWindow("16x16 Borg Simulator"); + + // callback + //glutReshapeFunc(reshape); + glutDisplayFunc(display); + glutIdleFunc(display); + glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF); + glutKeyboardFunc(keyboard); + glutKeyboardUpFunc(keyboardup); + glutSpecialFunc(special); + glutMouseFunc(mouse); + glutMotionFunc(motion); + + // clearcolor & main loop + glClearColor(0,0,0,1.0); + gluPerspective(60.0, (float)WindWidth/(float)WindWidth, 5., 1000.); + gluLookAt(NUM_COLS*2., NUM_COLS*2.+50., NUM_ROWS*2., + NUM_COLS*2., NUM_COLS*2., NUM_ROWS*2., + 0.0, 0.0, 1.0); + + // init Call List for LED + quad = gluNewQuadric(); + glNewList(0, GL_COMPILE); + glColor4f(0.8, 0.0, 0.0, 1.); + gluSphere(quad, 1.0, 12, 12); + glEndList(); + glNewList(1, GL_COMPILE); + glColor4f(0.5, 0.0, 0.0, 1.); + gluSphere(quad, 1.4, 12, 12); + glEndList(); + glNewList(2, GL_COMPILE); + glColor4f(0.7, 0.0, 0.0, 1.); + gluSphere(quad, 1.55, 12, 12); + glEndList(); + glNewList(3, GL_COMPILE); + glColor4f(1.00, 0.0, 0.0, 1.); + gluSphere(quad, 1.7, 12, 12); + glEndList(); + + tbInit(GLUT_LEFT_BUTTON); + tbAnimate(GL_FALSE); + + // start display_loop thread +#ifdef _WIN32 + _beginthread((void (*)(void*))display_loop_run, 0, NULL); +#else + pthread_create(&simthread, NULL, display_loop_run, NULL); +#endif + //glutTimerFunc(40, timf, 0); // Set up timer for 40ms, about 25 fps + glutMainLoop(); + return 0; +} diff --git a/util.h b/util.h index 6548ae9..3478882 100644 --- a/util.h +++ b/util.h @@ -1,8 +1,6 @@ #ifndef UTIL_H #define UTIL_H -#include - void wait(int ms); #endif