Rev 5235 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5235 | alpine | 1 | #include "rsplatform.h" |
2 | |||
3 | rs_app_t rs_app; |
||
4 | |||
5 | |||
6 | |||
7 | |||
8 | // set this macro to zero (0) if bug is fixed |
||
9 | #define FIX_MENUETOS_LEGACY_ONE_PIXEL_BORDER_GAP_BUG (-1) |
||
10 | |||
11 | // Fixed frame rate, set to 25 |
||
12 | #define GAME_REQUIRED_FPS 25 |
||
13 | |||
14 | |||
15 | |||
16 | //extern char PATH[256]; |
||
17 | //extern char PARAM[256]; |
||
18 | |||
19 | int window_width, window_height; |
||
20 | |||
21 | int fps = 0; |
||
22 | int dt = 1; |
||
23 | int draw_dt = 1; |
||
24 | int area_width = 160; |
||
25 | int area_height = 160; |
||
26 | |||
27 | int w_plus = 0; |
||
28 | |||
29 | |||
30 | |||
31 | |||
32 | |||
33 | #define BIT_SET(var,mask) { var |= (mask); } |
||
34 | #define BIT_CLEAR(var,mask) { var &= ~(mask); } |
||
35 | #define BIT_TOGGLE(var,mask) { var ^= (mask); } |
||
36 | |||
37 | #define IS_BIT_SET(var,mask) ( (var) & (mask) ) |
||
38 | #define IS_BIT_CLEARED(var,mask) (!( (var) & (mask) )) |
||
39 | |||
40 | |||
41 | void BoardPuts(const char *s) |
||
42 | { |
||
43 | unsigned int i = 0; |
||
44 | while(*(s + i)) |
||
45 | { |
||
46 | asm volatile ("int $0x40"::"a"(63), "b"(1), "c"(*(s + i))); |
||
47 | i++; |
||
48 | } |
||
49 | } |
||
50 | |||
51 | void board_write_integer(const char *s, int i) { |
||
52 | |||
53 | char tmp[16]; |
||
54 | |||
55 | |||
56 | |||
57 | }; |
||
58 | |||
59 | |||
60 | void kol_wnd_resize(unsigned w, unsigned h) |
||
61 | { |
||
62 | asm volatile ("int $0x40"::"a"(67), "b"(-1), "c"(-1), "d"(w), "S"(h)); |
||
63 | } |
||
64 | |||
65 | |||
66 | |||
67 | |||
68 | void wnd_draw() |
||
69 | { |
||
70 | |||
5324 | alpine | 71 | char tmp[] = "Fps:000 | Marble Match-3 "; |
5235 | alpine | 72 | |
73 | kol_paint_start(); |
||
74 | |||
75 | tmp[4] = '0' + ( (fps/100) % 10 ); |
||
76 | tmp[5] = '0' + ( (fps/10) % 10 ); |
||
77 | tmp[6] = '0' + ( (fps) % 10 ); |
||
78 | |||
79 | kol_wnd_define(100, 100, window_width, window_height, 0x74ddddff, 0x34ddddff, "Heliothryx"); |
||
80 | kol_wnd_caption(tmp); |
||
81 | |||
82 | GameProcess(); |
||
83 | |||
84 | //kol_btn_define(10, 10, 120, 20, 2, 0xccccee); |
||
85 | //kol_paint_string(20, 15, "Hello World", 0x902222ff); |
||
86 | |||
87 | kol_paint_end(); |
||
88 | |||
89 | } |
||
90 | |||
91 | |||
92 | unsigned int get_time() { |
||
93 | return (unsigned int) ((kol_system_time_get()*10)); |
||
94 | }; |
||
95 | |||
96 | |||
97 | /// =========================================================== |
||
98 | |||
99 | void kol_main() |
||
100 | { |
||
101 | |||
102 | BoardPuts("Hello, Heliothryx!\n"); |
||
103 | |||
104 | int err; |
||
105 | int version =-1; |
||
106 | |||
107 | if((err = InitSound(&version)) !=0 ){ |
||
108 | BoardPuts("Sound Error 1\n"); |
||
109 | }; |
||
110 | |||
111 | if( (SOUND_VERSION>(version&0xFFFF)) || |
||
112 | (SOUND_VERSION<(version >> 16))){ |
||
113 | BoardPuts("Sound Error 2\n"); |
||
114 | } |
||
115 | |||
116 | |||
117 | unsigned event; |
||
118 | unsigned key; |
||
119 | unsigned key_up; |
||
120 | |||
121 | unsigned btn, btn_state; |
||
122 | unsigned pos, x, y; |
||
123 | int gx, gy; |
||
124 | |||
125 | //srand(kol_system_time_get()); |
||
126 | |||
127 | kol_event_mask(0xC0000027); // mouse and keyboard |
||
128 | |||
129 | kol_key_mode_set(1); |
||
130 | |||
131 | area_width = 512; |
||
132 | area_height = 512; |
||
133 | |||
134 | // Initializing variables |
||
135 | window_width = FIX_MENUETOS_LEGACY_ONE_PIXEL_BORDER_GAP_BUG + area_width + 10; // 2 x 5px border |
||
136 | window_height = FIX_MENUETOS_LEGACY_ONE_PIXEL_BORDER_GAP_BUG + kol_skin_height() + area_height + 5; // bottom 5px border |
||
137 | |||
138 | //rs_main_init(); |
||
139 | |||
140 | GameInit(); |
||
141 | |||
142 | wnd_draw(); |
||
143 | |||
144 | fps = 0; |
||
145 | |||
146 | unsigned int tick_start = kol_time_tick(); |
||
147 | unsigned int tick_current = tick_start; |
||
148 | unsigned int tick_last = tick_start; |
||
149 | |||
150 | unsigned int fps_counter = 0; |
||
151 | int wait_time; |
||
152 | int already_drawn = 0; |
||
153 | |||
154 | float xf; |
||
155 | float xfs; |
||
156 | int xfs_i; |
||
157 | |||
158 | while (1) { |
||
159 | tick_last = tick_current; |
||
160 | tick_current = kol_time_tick(); |
||
161 | dt = tick_current - tick_last; |
||
162 | tick_last = tick_current; |
||
163 | |||
164 | already_drawn = 0; |
||
165 | |||
166 | while (( event = kol_event_wait_time(1) )) { |
||
167 | //while (( event = kol_event_wait() )) { |
||
168 | |||
169 | switch (event) { |
||
170 | |||
171 | case 1: |
||
172 | wnd_draw(); // <--- need to clear event! |
||
173 | already_drawn = 1; |
||
174 | break; |
||
175 | |||
176 | case 2: |
||
177 | key = kol_key_get(); |
||
178 | key = (key & 0xff00)>>8; |
||
179 | key_up = key & 0x80; |
||
180 | key = key & 0x7F; |
||
181 | |||
182 | if (key_up) { |
||
183 | GameKeyUp(key); |
||
184 | //rs_app.OnKeyUp(key); |
||
185 | } |
||
186 | else { |
||
187 | GameKeyDown(key); |
||
188 | //rs_app.OnKeyDown(key, 1); |
||
189 | }; |
||
190 | |||
191 | break; |
||
192 | |||
193 | case 3: |
||
194 | switch ((kol_btn_get() & 0xff00)>>8) |
||
195 | { |
||
196 | case 1: // close button |
||
197 | kol_exit(); |
||
198 | case 2: // 'new' button |
||
199 | //init_board(); |
||
200 | //wnd_draw(); |
||
201 | break; |
||
202 | } |
||
203 | break; |
||
204 | |||
205 | case 6: |
||
206 | btn = kol_mouse_btn() & 1; // read mouse button (only left) |
||
207 | pos = kol_mouse_posw(); // read mouse position |
||
208 | x = pos / 65536; |
||
209 | y = pos % 65536; |
||
210 | /*if (x > window_width) |
||
211 | x=0; |
||
212 | if (y > window_height) |
||
213 | y=0;*/ |
||
214 | |||
215 | if (btn && (!btn_state)) { |
||
216 | //rs_app.OnMouseDown(x,y); |
||
217 | GameMouseDown(x, y); |
||
218 | |||
219 | BoardPuts("MouseDown!\n"); |
||
220 | |||
221 | } |
||
222 | else if ( (!btn) && btn_state ) { |
||
223 | //rs_app.OnMouseUp(x,y); |
||
224 | GameMouseUp(x, y); |
||
225 | } |
||
226 | else { |
||
227 | //GameMouseMove(x, y); |
||
228 | }; |
||
229 | |||
230 | btn_state = btn; |
||
231 | |||
232 | break; |
||
233 | } |
||
234 | |||
235 | }; |
||
236 | |||
237 | |||
238 | if (!already_drawn) { |
||
239 | wnd_draw(); |
||
240 | }; |
||
241 | |||
242 | |||
243 | fps_counter++; |
||
244 | |||
245 | tick_current = kol_time_tick(); |
||
246 | |||
247 | if (tick_current > tick_start+100) { |
||
248 | fps = fps_counter; |
||
249 | fps_counter = 0; |
||
250 | tick_start += 100; |
||
251 | }; |
||
252 | |||
253 | draw_dt = tick_current - tick_last; |
||
254 | |||
255 | wait_time = (100/GAME_REQUIRED_FPS) - draw_dt; |
||
256 | if (wait_time <= 0) { |
||
257 | wait_time = 1; |
||
258 | }; |
||
259 | kol_sleep(wait_time); |
||
260 | |||
261 | |||
262 | } |
||
263 | |||
264 | GameTerm(); |
||
265 | |||
266 | kol_exit(); |
||
267 | }=>--->(version> |
||
268 |