dostunnel
diff src/tunnel.c @ 3:a8024271c662
added timer
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 16 Mar 2013 03:35:08 +0200 |
parents | 5d7f784002b0 |
children | ba868d348de8 |
line diff
1.1 --- a/src/tunnel.c Fri Mar 15 19:55:29 2013 +0200 1.2 +++ b/src/tunnel.c Sat Mar 16 03:35:08 2013 +0200 1.3 @@ -6,6 +6,7 @@ 1.4 #include "wvga.h" 1.5 #include "texture.h" 1.6 #include "palman.h" 1.7 +#include "timer.h" 1.8 1.9 #ifndef M_PI 1.10 #define M_PI 3.14159265 1.11 @@ -18,22 +19,26 @@ 1.12 void cleanup(void); 1.13 void display(void); 1.14 int calc_tunnel_mapping(void); 1.15 +int parse_args(int argc, char **argv); 1.16 1.17 static unsigned char *fbuf; 1.18 static struct texture *tex; 1.19 static int colrange; 1.20 1.21 -static char *tex_fname = "data/wall2.ppm"; 1.22 +static char *tex_fname; 1.23 1.24 static unsigned long *umap, *vmap; 1.25 1.26 static unsigned long frames; 1.27 static unsigned long start_time; 1.28 1.29 +static int under_windows; 1.30 + 1.31 + 1.32 int main(int argc, char **argv) 1.33 { 1.34 - if(argc > 1) { 1.35 - tex_fname = argv[1]; 1.36 + if(parse_args(argc, argv) == -1) { 1.37 + return 1; 1.38 } 1.39 1.40 if(init() == -1) { 1.41 @@ -68,9 +73,8 @@ 1.42 free(fbuf); 1.43 return -1; 1.44 } 1.45 - 1.46 } else { 1.47 - fprintf(stderr, "FOO\n"); 1.48 + fprintf(stderr, "you must specify a texture to use\n"); 1.49 return -1; 1.50 } 1.51 1.52 @@ -85,19 +89,28 @@ 1.53 } 1.54 colrange = palm_color_range(); 1.55 1.56 + init_timer(120); 1.57 + start_time = get_msec(); 1.58 + 1.59 return 0; 1.60 } 1.61 1.62 void cleanup(void) 1.63 { 1.64 + unsigned long sec = (get_msec() - start_time) / 1000ul; 1.65 + 1.66 free_texture(tex); 1.67 free(fbuf); 1.68 set_video_mode(0x3); 1.69 + 1.70 + if(sec) { 1.71 + printf("avg fps: %lu\n", frames / sec); 1.72 + } 1.73 } 1.74 1.75 void display(void) 1.76 { 1.77 - static unsigned long msec; 1.78 + unsigned long msec = get_msec() - start_time; 1.79 1.80 unsigned int i; 1.81 unsigned char voffs = msec >> 3; 1.82 @@ -122,7 +135,7 @@ 1.83 } 1.84 1.85 copy_frame(fbuf); 1.86 - msec += 33; 1.87 + frames++; 1.88 } 1.89 1.90 int calc_tunnel_mapping(void) 1.91 @@ -162,3 +175,30 @@ 1.92 } 1.93 return 0; 1.94 } 1.95 + 1.96 +int parse_args(int argc, char **argv) 1.97 +{ 1.98 + int i; 1.99 + 1.100 + for(i=1; i<argc; i++) { 1.101 + if(argv[i][0] == '-') { 1.102 + if(strcmp(argv[i], "-win") == 0) { 1.103 + under_windows = 1; 1.104 + } else { 1.105 + fprintf(stderr, "invalid option: %s\n", argv[i]); 1.106 + return -1; 1.107 + } 1.108 + } else { 1.109 + if(tex_fname) { 1.110 + fprintf(stderr, "unexpected argument: %s\n", argv[i]); 1.111 + return -1; 1.112 + } 1.113 + tex_fname = argv[i]; 1.114 + } 1.115 + } 1.116 + 1.117 + if(!tex_fname) { 1.118 + tex_fname = "data/wall2.ppm"; 1.119 + } 1.120 + return 0; 1.121 +}