Browse code

(uxnemu) Only set zoom scale once on boot

Devine Lu Linvega authored on 17/04/2023 16:36:55
Showing 4 changed files
... ...
@@ -86,18 +86,20 @@ You can send events from Uxn to another application, or another instance of uxn,
86 86
 uxnemu orca.rom | shim
87 87
 ```
88 88
 
89
-## Emulator Options
89
+## GUI Emulator Options
90 90
 
91
-- `-s 1`, `-s 2` or `-s 3` set zoom (default 1)
91
+- `-1x` Force small scale
92
+- `-2x` Force medium scale
93
+- `-3x` Force large scale
92 94
 
93
-## Emulator Controls
95
+## GUI Emulator Controls
94 96
 
95 97
 - `F1` toggle zoom
96 98
 - `F2` toggle debug
97 99
 - `F3` capture screen
98 100
 - `F4` load launcher.rom
99 101
 
100
-### Buttons
102
+### GUI Buttons
101 103
 
102 104
 - `LCTRL` A
103 105
 - `LALT` B
... ...
@@ -117,6 +117,6 @@ echo "Assembling(piano).."
117 117
 ./bin/uxnasm projects/software/piano.tal bin/piano.rom
118 118
 
119 119
 echo "Running.."
120
-./bin/uxnemu bin/piano.rom
120
+./bin/uxnemu -2x bin/piano.rom
121 121
 
122 122
 echo "Done."
... ...
@@ -64,7 +64,7 @@ main(int argc, char **argv)
64 64
 	for(i = 2; i < argc; i++) {
65 65
 		char *p = argv[i];
66 66
 		while(*p) console_input(&u, *p++, CONSOLE_ARG);
67
-		console_input(&u, '\n', i == argc-1 ? CONSOLE_END : CONSOLE_EOA);
67
+		console_input(&u, '\n', i == argc - 1 ? CONSOLE_END : CONSOLE_EOA);
68 68
 	}
69 69
 	while(!u.dev[0x0f]) {
70 70
 		int c = fgetc(stdin);
... ...
@@ -267,9 +267,9 @@ start(Uxn *u, char *rom)
267 267
 }
268 268
 
269 269
 static void
270
-set_zoom(Uint8 scale)
270
+set_zoom(Uint8 z)
271 271
 {
272
-	zoom = zoom > 2 ? 1 : zoom + 1;
272
+	zoom = z;
273 273
 	set_window_size(gWindow, (uxn_screen.width + PAD * 2) * zoom, (uxn_screen.height + PAD * 2) * zoom);
274 274
 }
275 275
 
... ...
@@ -351,7 +351,7 @@ static void
351 351
 do_shortcut(Uxn *u, SDL_Event *event)
352 352
 {
353 353
 	if(event->key.keysym.sym == SDLK_F1)
354
-		set_zoom(zoom);
354
+		set_zoom(zoom == 3 ? 1 : zoom + 1);
355 355
 	else if(event->key.keysym.sym == SDLK_F2)
356 356
 		system_inspect(u);
357 357
 	else if(event->key.keysym.sym == SDLK_F3)
... ...
@@ -490,28 +490,24 @@ main(int argc, char **argv)
490 490
 {
491 491
 	SDL_DisplayMode DM;
492 492
 	Uxn u = {0};
493
-	int i, loaded = 0;
493
+	int i = 1, loaded = 0;
494 494
 	if(!init())
495 495
 		return error("Init", "Failed to initialize emulator.");
496 496
 	screen_resize(&uxn_screen, WIDTH, HEIGHT);
497 497
 	/* set default zoom */
498
-	if(SDL_GetCurrentDisplayMode(0, &DM) == 0)
498
+	if(strcmp(argv[i], "-1x") == 0 || strcmp(argv[i], "-2x") == 0 || strcmp(argv[i], "-3x") == 0)
499
+		set_zoom(argv[i++][1] - '0');
500
+	else if(SDL_GetCurrentDisplayMode(0, &DM) == 0)
499 501
 		set_zoom(DM.w / 1280);
500
-	for(i = 1; i < argc; i++) {
501
-		/* get default zoom from flags */
502
-		if(strcmp(argv[i], "-s") == 0) {
503
-			if(i < argc - 1)
504
-				set_zoom(atoi(argv[++i]));
505
-			else
506
-				return error("Opt", "-s No scale provided.");
507
-		} else if(!loaded++) {
502
+	for(; i < argc; i++) {
503
+		if(!loaded++) {
508 504
 			if(!start(&u, argv[i]))
509 505
 				return error("Boot", "Failed to boot.");
510 506
 			rom_path = argv[i];
511 507
 		} else {
512 508
 			char *p = argv[i];
513 509
 			while(*p) console_input(&u, *p++, CONSOLE_ARG);
514
-			console_input(&u, '\n', i == argc ? CONSOLE_END : CONSOLE_EOA);
510
+			console_input(&u, '\n', i == argc - 1 ? CONSOLE_END : CONSOLE_EOA);
515 511
 		}
516 512
 	}
517 513
 	if(!loaded && !start(&u, "launcher.rom"))