]> 4ch.mooo.com Git - 16.git/blob - src/lib/16_timer.c
fix bizarre near/far sprintf problem when gv->pee not initialized by just replacing the
[16.git] / src / lib / 16_timer.c
1 /* Project 16 Source Code~\r
2  * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
3  *\r
4  * This file is part of Project 16.\r
5  *\r
6  * Project 16 is free software; you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation; either version 3 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * Project 16 is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
18  * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
19  * Fifth Floor, Boston, MA 02110-1301 USA.\r
20  *\r
21  */\r
22 \r
23 #include "src/lib/16_timer.h"\r
24 \r
25 clock_t start_timer(global_game_variables_t *gv)\r
26 {\r
27         gv->kurokku.t = clock();\r
28         gv->kurokku.tiku = 0;\r
29         gv->kurokku.clock_start = *clockw;\r
30         gv->kurokku.clock = clockw;\r
31         //gv->kurokku.frames_per_second = 60;\r
32 \r
33     //turn this off if XT\r
34         switch(detectcpu())\r
35         {\r
36                 case 0:\r
37                         gv->kurokku.fpscap=0;\r
38                         gv->kurokku.frames_per_second=1;\r
39                 break;\r
40                 default:\r
41                         gv->kurokku.fpscap=1;\r
42                         gv->kurokku.frames_per_second=60;\r
43                 break;\r
44         }\r
45         return gv->kurokku.t;\r
46 }\r
47 \r
48 double elapsed_timer(global_game_variables_t *gv)\r
49 {\r
50         return (clock() - gv->kurokku.t) / CLOCKS_PER_SEC;\r
51 }\r
52 \r
53 double ticktock(global_game_variables_t *gv)\r
54 {\r
55         double clocku;\r
56         clocku = (clock() - gv->kurokku.t) / CLOCKS_PER_SEC;\r
57         gv->kurokku.t = clock();\r
58         return clocku;\r
59 }\r
60 \r
61 double time_in_seconds(global_game_variables_t *gv)\r
62 {\r
63         return (gv->kurokku.t) / CLOCKS_PER_SEC;\r
64 }\r
65 \r
66 // big global status text buffer\r
67 char global_temp_status_text[512];\r
68 \r
69 /*double time_in_seconds(time_t in_t)\r
70 {\r
71         return (in_t) / CLOCKS_PER_SEC;\r
72 }*/\r
73 \r
74 /*      sync    */\r
75 void shinkutxt(global_game_variables_t *gv)\r
76 {\r
77         //float t;\r
78         if(elapsed_timer(gv) >= (1.0 / gv->kurokku.frames_per_second))\r
79         {\r
80                 //t=(((*(gv->clock))-gv->clock_start) /18.2);\r
81                 sprintf(global_temp_status_text, "%.0f fps", (double)gv->kurokku.tiku/ticktock(gv));\r
82                 fprintf(stderr, "%s\n", global_temp_status_text);\r
83                 //(gv->clock_start)=*(gv->clock);\r
84                 gv->kurokku.tiku=0;\r
85         }\r
86         gv->kurokku.tiku++;\r
87 //      switch(gv->kurokku.fpscap)\r
88 //      {\r
89 //              case 0:\r
90 //                      gv->kurokku.frames_per_second=1;\r
91 //              break;\r
92 //              case 1:\r
93 //                      //turn this off if XT\r
94 //                      WaitPee();\r
95 //                      gv->kurokku.frames_per_second=60;\r
96 //              break;\r
97 //      }\r
98 }\r
99 \r
100 void WaitPee()\r
101 {\r
102     while(inp(INPUT_STATUS_1)  & 8)  {\r
103         /* spin */\r
104     }\r
105 \r
106     while(!(inp(INPUT_STATUS_1)  & 8))  {\r
107         /* spin */\r
108     }\r
109 }\r