Browse code

Grouped emulator routines together in uxnemu

Devine Lu Linvega authored on 25/07/2023 21:42:10
Showing 1 changed files
... ...
@@ -166,6 +166,18 @@ set_window_size(SDL_Window *window, int w, int h)
166 166
 	SDL_SetWindowSize(window, w, h);
167 167
 }
168 168
 
169
+static void
170
+set_zoom(Uint8 z, int win)
171
+{
172
+	if(z >= 1) {
173
+		zoom = z;
174
+		if(win)
175
+			set_window_size(emu_window, (uxn_screen.width) * zoom, (uxn_screen.height) * zoom);
176
+	}
177
+}
178
+
179
+/* emulator primitives */
180
+
169 181
 int
170 182
 emu_resize(int width, int height)
171 183
 {
... ...
@@ -218,13 +230,12 @@ emu_init(void)
218 230
 	SDL_StartTextInput();
219 231
 	SDL_ShowCursor(SDL_DISABLE);
220 232
 	SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
233
+	SDL_SetRenderDrawColor(emu_renderer, 0x00, 0x00, 0x00, 0xff);
221 234
 	ms_interval = SDL_GetPerformanceFrequency() / 1000;
222 235
 	deadline_interval = ms_interval * TIMEOUT_MS;
223 236
 	return 1;
224 237
 }
225 238
 
226
-/* Boot */
227
-
228 239
 static int
229 240
 emu_start(Uxn *u, char *rom, int queue)
230 241
 {
... ...
@@ -242,13 +253,11 @@ emu_start(Uxn *u, char *rom, int queue)
242 253
 }
243 254
 
244 255
 static void
245
-set_zoom(Uint8 z, int win)
256
+emu_restart(Uxn *u)
246 257
 {
247
-	if(z >= 1) {
248
-		zoom = z;
249
-		if(win)
250
-			set_window_size(emu_window, (uxn_screen.width) * zoom, (uxn_screen.height) * zoom);
251
-	}
258
+	screen_resize(WIDTH, HEIGHT);
259
+	if(!emu_start(u, "launcher.rom", 0))
260
+		emu_start(u, rom_path, 0);
252 261
 }
253 262
 
254 263
 static void
... ...
@@ -282,14 +291,6 @@ capture_screen(void)
282 291
 	SDL_FreeSurface(surface);
283 292
 }
284 293
 
285
-static void
286
-emu_restart(Uxn *u)
287
-{
288
-	screen_resize(WIDTH, HEIGHT);
289
-	if(!emu_start(u, "launcher.rom", 0))
290
-		emu_start(u, rom_path, 0);
291
-}
292
-
293 294
 static Uint8
294 295
 get_button(SDL_Event *event)
295 296
 {
... ...
@@ -441,7 +442,7 @@ handle_events(Uxn *u)
441 442
 }
442 443
 
443 444
 static int
444
-emu_run(Uxn *u)
445
+gameloop(Uxn *u)
445 446
 {
446 447
 	Uint64 next_refresh = 0;
447 448
 	Uint64 now;
... ...
@@ -474,7 +475,7 @@ emu_run(Uxn *u)
474 475
 }
475 476
 
476 477
 int
477
-emu_show(void)
478
+show(void)
478 479
 {
479 480
 	window_created = 1;
480 481
 	emu_window = SDL_CreateWindow("Uxn", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, uxn_screen.width * zoom, uxn_screen.height * zoom, SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI);
... ...
@@ -483,7 +484,6 @@ emu_show(void)
483 484
 	emu_renderer = SDL_CreateRenderer(emu_window, -1, 0);
484 485
 	if(emu_renderer == NULL)
485 486
 		return system_error("sdl_renderer", SDL_GetError());
486
-	SDL_SetRenderDrawColor(emu_renderer, 0x00, 0x00, 0x00, 0xff);
487 487
 	emu_resize(uxn_screen.width, uxn_screen.height);
488 488
 	return 1;
489 489
 }
... ...
@@ -491,7 +491,6 @@ emu_show(void)
491 491
 int
492 492
 main(int argc, char **argv)
493 493
 {
494
-	SDL_DisplayMode DM;
495 494
 	Uxn u = {0};
496 495
 	int i = 1;
497 496
 	if(!emu_init())
... ...
@@ -501,8 +500,6 @@ main(int argc, char **argv)
501 500
 	/* default zoom */
502 501
 	if(argc > 1 && (strcmp(argv[i], "-1x") == 0 || strcmp(argv[i], "-2x") == 0 || strcmp(argv[i], "-3x") == 0))
503 502
 		set_zoom(argv[i++][1] - '0', 0);
504
-	else if(SDL_GetCurrentDisplayMode(0, &DM) == 0)
505
-		set_zoom(DM.w / 1280, 0);
506 503
 	/* load rom */
507 504
 	if(i == argc)
508 505
 		return system_error("usage", "uxnemu [-2x][-3x] file.rom [args...]");
... ...
@@ -516,8 +513,8 @@ main(int argc, char **argv)
516 513
 		console_input(&u, '\n', i == argc - 1 ? CONSOLE_END : CONSOLE_EOA);
517 514
 	}
518 515
 	/* start rom */
519
-	emu_show();
520
-	emu_run(&u);
516
+	show();
517
+	gameloop(&u);
521 518
 	/* finished */
522 519
 #ifdef _WIN32
523 520
 #pragma GCC diagnostic ignored "-Wint-to-pointer-cast"