(uxnemu) Only set zoom scale once on boot

This commit is contained in:
Devine Lu Linvega 2023-04-17 09:36:55 -07:00
parent 6021b2b63d
commit d1dc143912
4 changed files with 18 additions and 20 deletions

View File

@ -86,18 +86,20 @@ You can send events from Uxn to another application, or another instance of uxn,
uxnemu orca.rom | shim
```
## Emulator Options
## GUI Emulator Options
- `-s 1`, `-s 2` or `-s 3` set zoom (default 1)
- `-1x` Force small scale
- `-2x` Force medium scale
- `-3x` Force large scale
## Emulator Controls
## GUI Emulator Controls
- `F1` toggle zoom
- `F2` toggle debug
- `F3` capture screen
- `F4` load launcher.rom
### Buttons
### GUI Buttons
- `LCTRL` A
- `LALT` B

View File

@ -117,6 +117,6 @@ echo "Assembling(piano).."
./bin/uxnasm projects/software/piano.tal bin/piano.rom
echo "Running.."
./bin/uxnemu bin/piano.rom
./bin/uxnemu -2x bin/piano.rom
echo "Done."

View File

@ -267,9 +267,9 @@ start(Uxn *u, char *rom)
}
static void
set_zoom(Uint8 scale)
set_zoom(Uint8 z)
{
zoom = zoom > 2 ? 1 : zoom + 1;
zoom = z;
set_window_size(gWindow, (uxn_screen.width + PAD * 2) * zoom, (uxn_screen.height + PAD * 2) * zoom);
}
@ -351,7 +351,7 @@ static void
do_shortcut(Uxn *u, SDL_Event *event)
{
if(event->key.keysym.sym == SDLK_F1)
set_zoom(zoom);
set_zoom(zoom == 3 ? 1 : zoom + 1);
else if(event->key.keysym.sym == SDLK_F2)
system_inspect(u);
else if(event->key.keysym.sym == SDLK_F3)
@ -490,28 +490,24 @@ main(int argc, char **argv)
{
SDL_DisplayMode DM;
Uxn u = {0};
int i, loaded = 0;
int i = 1, loaded = 0;
if(!init())
return error("Init", "Failed to initialize emulator.");
screen_resize(&uxn_screen, WIDTH, HEIGHT);
/* set default zoom */
if(SDL_GetCurrentDisplayMode(0, &DM) == 0)
if(strcmp(argv[i], "-1x") == 0 || strcmp(argv[i], "-2x") == 0 || strcmp(argv[i], "-3x") == 0)
set_zoom(argv[i++][1] - '0');
else if(SDL_GetCurrentDisplayMode(0, &DM) == 0)
set_zoom(DM.w / 1280);
for(i = 1; i < argc; i++) {
/* get default zoom from flags */
if(strcmp(argv[i], "-s") == 0) {
if(i < argc - 1)
set_zoom(atoi(argv[++i]));
else
return error("Opt", "-s No scale provided.");
} else if(!loaded++) {
for(; i < argc; i++) {
if(!loaded++) {
if(!start(&u, argv[i]))
return error("Boot", "Failed to boot.");
rom_path = argv[i];
} else {
char *p = argv[i];
while(*p) console_input(&u, *p++, CONSOLE_ARG);
console_input(&u, '\n', i == argc ? CONSOLE_END : CONSOLE_EOA);
console_input(&u, '\n', i == argc - 1 ? CONSOLE_END : CONSOLE_EOA);
}
}
if(!loaded && !start(&u, "launcher.rom"))