]> icculus.org git repositories - btb/d2x.git/blob - unused/win95/timer.c
remove rcs tags
[btb/d2x.git] / unused / win95 / timer.c
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13
14
15 #include "types.h"
16 #include "fix.h"
17 #include "error.h"
18 #include "mono.h"
19
20 #define _WIN32
21 #define WIN32_LEAN_AND_MEAN
22 #include<windows.h>
23 #include<mmsystem.h>
24
25 #define TARGET_RESOLUTION 1
26
27 //@@ static UINT TimerResolution = 0;
28 //@@ static UINT GameTimer = 0;
29 //@@ #define GAME_TIMER_RESOLUTION (TimerResolution<<1)
30
31
32 int timer_initialized=0;
33
34 static UINT GameSystemTime = 0;
35 static UINT GameStartTime = 0;
36
37
38 void timer_normalize();
39
40 //@@ void PASCAL timer_callback(UINT wTimerID, UINT msg, DWORD dwUser, 
41 //@@                                    DWORD dw1, DWORD dw2) 
42 //@@{
43 //@@    static int last_time = 0;
44 //@@    UINT time;
45 //@@    
46 //@@    
47 //@@    time = timeGetTime()-GameStartTime;
48 //@@
49 //@@    if (timeGetTime() < GameStartTime) 
50 //@@            GameStartTime = GameStartTime - timeGetTime();
51 //@@
52 //@@}
53
54 void timer_normalize()
55 {
56         DWORD new_time;
57
58         new_time = timeGetTime();
59
60         if (new_time < GameStartTime) {
61                 GameStartTime = new_time;
62                 return;
63         }
64         
65         if ((new_time - GameStartTime) > 0x01808580)    // 7 hours
66                 GameStartTime = new_time;
67 }
68
69
70 void timer_close();
71
72 void timer_init(int i)
73 {
74         TIMECAPS tc;
75
76         Assert(GameStartTime == 0);
77
78         timer_initialized = 1;
79
80         GameSystemTime = 0;
81         GameStartTime = timeGetTime();
82
83         atexit(timer_close);
84 }
85
86
87 void timer_close()
88 {
89         Assert(GameStartTime > 0);
90
91         timer_initialized = 0;
92
93         GameSystemTime = 0;
94         GameStartTime= 0;
95 }
96
97
98 fix timer_get_fixed_seconds()
99 {
100         fix val;
101         DWORD time;
102
103         timer_normalize();
104
105         time = timeGetTime() - GameStartTime;
106
107         val = fixdiv(time,1000);
108
109         return val;
110 }
111
112 fix timer_get_fixed_secondsX()
113 {
114         fix val;
115         DWORD time;
116
117         timer_normalize();
118
119         time = timeGetTime() - GameStartTime;
120
121         val = fixdiv(time,1000);
122
123         return val;
124 }
125
126 fix timer_get_approx_seconds()
127 {
128         fix val;
129         DWORD time;
130
131         timer_normalize();
132
133         time = timeGetTime() - GameStartTime;
134
135         val = fixdiv(time,1000);
136
137         return val;
138 }
139
140 void timer_set_function( void _far * function ) {}
141
142
143 void timer_delay(fix seconds)
144 {
145         unsigned int numticks = timeGetTime() + (seconds>>16)*1000 + 
146                                         (((seconds & 0x0000ffff)*1000)/65535);
147         while (GetTickCount() < numticks);
148 }