Skip to content

Add configurable startup screen and improve gamepad menu access#2952

Open
imsys wants to merge 8 commits into
nesbox:mainfrom
imsys:startscreen
Open

Add configurable startup screen and improve gamepad menu access#2952
imsys wants to merge 8 commits into
nesbox:mainfrom
imsys:startscreen

Conversation

@imsys

@imsys imsys commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Problem

Some devices do not have convenient keyboard input. When using only a gamepad, starting directly in the Console can make navigation less intuitive and requires additional steps to reach the Menu.

Proposal

This PR introduces a configurable startup screen and improves gamepad navigation.

Startup screen

Allow the default startup screen to be configured: (between Console and Menu)

  • At build time (useful for Android and console ports).
  • Through the Options menu (useful for Steam Deck and users who prefer starting in the Menu).

Gamepad menu access

Previously, the gamepad Select button was mapped to the same action as the Esc key, which opened the Console.

This PR decouples the Select button from the Esc key behavior and makes it open the Menu directly instead.

  • Select opens the Menu from anywhere in the application.
  • When already inside a submenu, Select returns to the previous menu level.

Minor changes

  • Android now defaults to fullscreen mode.

imsys added 8 commits June 6, 2026 09:18
+ adds Cmake option: DEFAULT_STARTUP_SCREEN = CONSOLE or MENU
+ adds the option to the options (settings) menu
+ saves to options.json
+ sets the default startup to Menu on the systems: NSwitch, 3DS, Android
When TIC-80 is configured to start directly into the MENU (and no
cartridge is yet loaded), the offset is now set to 4 to skip the "CLOSE
GAME" menu item. If it starts in CONSOLE mode (or for non-editor
builds), it retains the previous default offset of 3.
If startupScreen is set to Menu, it switches to the Menu after loading
the Demo Cart. Otherwise, if the user tried to open the code after the
startup, it would be empty.
- Better testing if the game has already run: this includes running the
demo code without a cart name.
- When on a Submenu, ESC will always return to the previous parent menu.
- When the game is not loaded yet, we hide the Resume, Reset and Close
game from the menu.
I also add myself to the Contributors list
@imsys imsys changed the title Adds option to start at the Menu instead of Console Add configurable startup screen and improve gamepad menu access Jun 10, 2026
@imsys imsys marked this pull request as ready for review June 10, 2026 17:00
@imsys

imsys commented Jun 10, 2026

Copy link
Copy Markdown
Contributor Author

This decoupling of the Select button from the Esc should solve most of the dispute mentioned in #2937.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant