Show Navi as the game's icon, and start the game from the launcher without an empty console window.

runtime/nx2navi.ico (the game window's title bar, taskbar button and Alt+Tab icon) is now the launcher's Navi, written
from launcher/ui/art.py navi_ico at the same ten sizes, in place of the Triforce. ocarina.exe is a console program
and the launcher has none, so Windows opened a console window titled with the exe's path beside the game;
winsys.start_game now passes CREATE_NO_WINDOW.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
chrg6
2026-11-09 08:54:25 -05:00
parent 097421e634
commit 43ac4b6b03
3 changed files with 7 additions and 2 deletions

View File

@@ -61,6 +61,8 @@ cards).
- Windows' switched mouse buttons are followed; the window opens inside the screen and fullscreen comes back when the
window is raised; the game closes down properly when Windows shuts down.
- A crash when the game's microphone stream could not open is gone.
- The game's window and taskbar button show Navi, and starting the game from the launcher no longer opens an empty
console window beside it.
- The game keeps presenting after a failed present, and only one game runs per profile at a time.
- Saves: Import Saves and Quit keep saves safe, a linked profile folder keeps working, and save writes check their
sizes.

View File

@@ -150,9 +150,12 @@ def open_path(path):
def start_game(exe):
"""Start the game from its own folder; returns the process to watch."""
"""Start the game from its own folder; returns the process to watch. ocarina.exe is a console program and the
launcher has no console, so without CREATE_NO_WINDOW Windows opened an empty console window beside the game,
titled with the exe's path. With it the game still has a console (hidden), which its restarts inherit."""
exe = Path(exe)
flags = {'creationflags': CREATE_NEW_PROCESS_GROUP} if os.name == 'nt' else {'start_new_session': True}
flags = {'creationflags': CREATE_NO_WINDOW | CREATE_NEW_PROCESS_GROUP} if os.name == 'nt' \
else {'start_new_session': True}
return subprocess.Popen([str(exe)], cwd=str(exe.parent), stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL, close_fds=True, **flags)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 50 KiB