ref: deb392cf342cf21ee8c00eb37a1cf4d7d473997a
parent: 02add69d54728af139a3ade19052993443aee6ea
author: Snesrev <snesrev@protonmail.com>
date: Tue Aug 30 22:36:58 EDT 2022
Add Alt-Enter hotkey to toggle fullscreen. Co-authored-by: Rémy F <yne@users.noreply.github.com>
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,5 @@
/tables/img/
/tables/old/
/saves/*.sav
+/.vs/
__pycache__
--- a/README.md
+++ b/README.md
@@ -68,6 +68,7 @@
| T | Toggle replay turbo |
| K | Clear all input history from current snapshot |
| F1-F10 | Load snapshot |
+| Alt+Enter | Toggle Fullscreen |
| Shift+F1-F10 | Save snapshot |
| Ctrl+F1-F10 | Replay the snapshot |
--- a/main.cpp
+++ b/main.cpp
@@ -52,7 +52,8 @@
printf("Failed to init SDL: %s\n", SDL_GetError());
return 1;
}
- SDL_Window* window = SDL_CreateWindow("Zelda3", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 512, 480, 0);
+ uint32 win_flags = SDL_WINDOWPOS_UNDEFINED;
+ SDL_Window* window = SDL_CreateWindow("Zelda3", SDL_WINDOWPOS_UNDEFINED, win_flags, 512, 480, 0);
if(window == NULL) {
printf("Failed to create window: %s\n", SDL_GetError());
return 1;
@@ -101,9 +102,9 @@
// sdl loop
bool running = true;
SDL_Event event;
- uint32_t lastTick = SDL_GetTicks();
- uint32_t curTick = 0;
- uint32_t delta = 0;
+ uint32 lastTick = SDL_GetTicks();
+ uint32 curTick = 0;
+ uint32 delta = 0;
int numFrames = 0;
bool cpuNext = false;
bool spcNext = false;
@@ -110,48 +111,55 @@
int counter = 0;
bool paused = false;
bool turbo = true;
- uint32_t frameCtr = 0;
+ uint32 frameCtr = 0;
- printf("%d\n", *(int *)snes->cart->ram);
-
while(running) {
while(SDL_PollEvent(&event)) {
switch(event.type) {
- case SDL_KEYDOWN: {
- switch(event.key.keysym.sym) {
- case SDLK_e:
- if (snes) {
- snes_reset(snes, event.key.keysym.sym == SDLK_e);
- CopyStateAfterSnapshotRestore(true);
- }
- break;
- case SDLK_p: paused ^= true; break;
- case SDLK_w:
- PatchCommand('w');
- break;
- case SDLK_o:
- PatchCommand('o');
- break;
- case SDLK_k:
- PatchCommand('k');
- break;
- case SDLK_t:
- turbo = !turbo;
- break;
+ case SDL_KEYDOWN: {
+ bool skip_default = false;
+ switch(event.key.keysym.sym) {
+ case SDLK_e:
+ if (snes) {
+ snes_reset(snes, event.key.keysym.sym == SDLK_e);
+ CopyStateAfterSnapshotRestore(true);
}
- handleInput(event.key.keysym.sym, event.key.keysym.mod, true);
break;
- }
- case SDL_KEYUP: {
- handleInput(event.key.keysym.sym, event.key.keysym.mod, false);
+ case SDLK_p: paused ^= true; break;
+ case SDLK_w:
+ PatchCommand('w');
break;
- }
- case SDL_QUIT: {
- running = false;
+ case SDLK_o:
+ PatchCommand('o');
break;
+ case SDLK_k:
+ PatchCommand('k');
+ break;
+ case SDLK_t:
+ turbo = !turbo;
+ break;
+ case SDLK_RETURN:
+ if (event.key.keysym.mod & KMOD_ALT) {
+ win_flags ^= SDL_WINDOW_FULLSCREEN_DESKTOP;
+ SDL_SetWindowFullscreen(window, win_flags);
+ skip_default = true;
+ }
+ break;
}
+ if (!skip_default)
+ handleInput(event.key.keysym.sym, event.key.keysym.mod, true);
+ break;
}
+ case SDL_KEYUP: {
+ handleInput(event.key.keysym.sym, event.key.keysym.mod, false);
+ break;
+ }
+ case SDL_QUIT: {
+ running = false;
+ break;
+ }
}
+ }
if (paused) {
SDL_Delay(16);
--- a/zelda3.vcxproj
+++ b/zelda3.vcxproj
@@ -39,12 +39,12 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v142</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">