Repository navigation
Next Release - #421
Draft
networkfusion wants to merge 327 commits into
Draft
Next Release#421networkfusion wants to merge 327 commits into
networkfusion wants to merge 327 commits into
Conversation
It causes too much slowdown when loading directories.
This reverts commit e70b52a.
Use standard types for diskswaps
<!--- Provide a general summary of your changes in the Title above --> ## Description <!--- Describe your changes in detail --> Renames the cheat files from `.datel.txt` to `.datel`. `.datel.txt` files will continue to be loaded, but new ones will conform to the new extension. Makes future support for hiding the files from the browser easier. ## Motivation and Context <!--- What does this sample do? What problem does it solve? --> <!--- If it fixes/closes/resolves an open issue, please link to the issue here --> The `.txt` extensions were only due to be used for debugging. ## How Has This Been Tested? <!-- (if applicable) --> <!--- Please describe in detail how you tested your sample/changes. --> <!--- Include details of your testing environment, and the tests you ran to --> <!--- see how your change affects other areas of the code, etc. --> ## Screenshots <!-- (if appropriate): --> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [x] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [ ] My code follows the code style of this project. - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL>
Better describes intention.
TODO: Implementation is incomplete.
The patterns "/src/libs/**" and "/libdragon/**" would fail to exclude those directories. DocFX matches exclude patterns against relative paths (e.g., src/libs/file.md), and a leading slash is treated as a literal character.
… in the same fields. extract_rom_info assigns string literals (e.g., "Unknown") to rom_info->meta.* fields. Later, load_rom_meta_from_file may overwrite these with strdup'd heap pointers. This creates ambiguous ownership — callers cannot safely free() these fields without knowing whether a .meta file was loaded.
…sure the heap-allocated metadata strings are freed whenever you're clearing or replacing the ROM information.
This is an extra option that aids debugging remotely and stops the need for uploading files to the SD card. It is particularly helpful now that there seems to be an issue with the file size of the menu causing timeout issues with the deployer.
<!--- Provide a general summary of your changes in the Title above --> ## Description <!--- Describe your changes in detail --> Switches to `snprintf` where possible. Updates music player to use standard types for duration. ## Motivation and Context <!--- What does this sample do? What problem does it solve? --> <!--- If it fixes/closes/resolves an open issue, please link to the issue here --> ## How Has This Been Tested? <!-- (if applicable) --> <!--- Please describe in detail how you tested your sample/changes. --> <!--- Include details of your testing environment, and the tests you ran to --> <!--- see how your change affects other areas of the code, etc. --> ## Screenshots <!-- (if appropriate): --> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [ ] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [ ] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [ ] My code follows the code style of this project. - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved stability and security by replacing unsafe string formatting with size-limited formatting across several menu UI components (prevents buffer overruns). * Strengthened error/path messaging by bounding message writes and unique filename handling. * Improved music player duration display by refining numeric casting for consistent formatting. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Related to controller pak management. And book keeping.
Add message for note restore.
Add tip about not needing to process ROM's
Add note on known issue.
Improve debug notes. Add gopher64 emu.
Improve comments
Add ext to message
Until we can get to the bottom of issues with the SC64 (firmware?).
<!--- Provide a general summary of your changes in the Title above --> ## Description This commit moves to using L/R consistently for switching between tabs and cleans up the associated text. ## Motivation and Context This is a tiny prerequisite for the Settings tab and the Theme work. ## How Has This Been Tested? This was tested in ares with the necessary SC64 patch. <!-- (if applicable) --> <!--- Please describe in detail how you tested your sample/changes. --> <!--- Include details of your testing environment, and the tests you ran to --> <!--- see how your change affects other areas of the code, etc. --> ## Screenshots <!-- (if appropriate): --> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [X] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [ ] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [X] My code follows the code style of this project. - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [X] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: rmmh <hitchmanr@gmail.com> Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
Add time to action bar.
Add VI->CR reset
networkfusion
force-pushed
the
develop
branch
from
September 19, 2026 16:47
343f7b3 to
056bedc
Compare
networkfusion
force-pushed
the
develop
branch
from
September 19, 2026 19:51
f9e3317 to
817cfa7
Compare
## Description
Two fixes for "Set ROM to autoload", which is back on by default in
develop.
set_autoload_type() saved `browser.directory` and `browser.entry->name`.
When the ROM's details were opened from the History or Favorites tab,
those are left over from the browser and can be a different file. It now
saves the folder and file name of `menu->load.rom_path`, the file the
screen loaded.
The path is rebuilt from `menu->storage_prefix` before it is split.
Bookkeeping loads its paths with `path_create()`, whose root is the
start of the string, so `path_pop()` on a ROM in the SD card's root
folder would leave `sd:`.
Holding Start while the menu starts set `rom_autoload_path` and
`rom_autoload_filename` to string literals, and set_autoload_type()
frees both, so cancelling autoload and then setting a ROM in the same
session freed a literal. Startup now frees the old strings and stores
`strdup("")`.
Not in here: view_load_rom_init() skips its path selection, and later
its box art and options menu setup, whenever `rom_autoload_enabled` is
set, so details opened after a set in the same session keep the earlier
ROM's path, and after a failed autoload boot they have none. #423
changes both gates to `load_pending.rom_file`, so I left them to #423.
## Motivation and Context
I ran into the first one in my fork, which has autoload compiled in.
After I set a game to autoload, the next start stopped at "Couldn't open
ROM file". The menu's log showed it trying to load `sd:/cpak_saves`, the
folder the file browser had highlighted in the SD card's root, not the
game. I found the second while reading the same code.
## How Has This Been Tested?
On an SC64, with these two changes in my fork, which is 0.3.4 with
autoload compiled in, plus the same init gate change as #423. Set a ROM
to autoload from the browser, from Favorites and from History, one in a
subfolder and one in the SD card's root, power cycling after each: the
ROM I set booted every time, the root-folder one from History included.
Held Start at power-on and set another ROM in the same session: it
booted. Deleted the autoload ROM and power cycled: the "Couldn't open
ROM file" box, then B, opened a game from Favorites and booted it.
I also compiled path.c on a PC and checked what the old and new code
save against what startup.c opens on the next boot, for ROMs in the root
folder, one folder deep and three deep, with the path built from the
browser and from `path_create()` as History's is. The new code opens the
right file in every case, and matches what the old code saved when the
path comes from the browser.
## Types of changes
- [ ] Improvement (non-breaking change that adds a new feature)
- [x] Bug fix (fixes an issue)
- [ ] Breaking change (breaking change)
- [ ] Documentation Improvement
- [ ] Config and build (change in the configuration and build system,
has no impact on code or features)
## Checklist:
- [x] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added tests to cover my changes.
- [ ] All new and existing tests passed.
You agree with the license terms and that other license types may be
granted with permission of the original `N64FlashcartMenu` project
license holders.
Signed-off-by: john-steinmeyer <john@steinmeyer.ca>
## Description This unifies the various settings menus into a single tab. ## Motivation and Context More complex settings options benefit from a dedicated interface. This PR is the last prerequisite for my theme work. Unfortunately it's rather large, because a large amount of UI code had to be adjusted to work in the new pane format. ## How Has This Been Tested? This has been tested in-emulator and on-hardware, and all functions appear to be working. ## Screenshots <img width="616" height="472" alt="image" src="https://github.com/user-attachments/assets/b609c851-3740-4c96-a21c-5998a02d881d" /> <img width="617" height="471" alt="image" src="https://github.com/user-attachments/assets/df06f32f-0621-4f3f-92cb-008d8c3062a1" /> <img width="611" height="463" alt="image" src="https://github.com/user-attachments/assets/9ed4bf64-e815-478a-8b06-8f02c0962c8e" /> <img width="614" height="465" alt="image" src="https://github.com/user-attachments/assets/c8169a9b-fae3-4c48-8307-eb39aa510a7b" /> <img width="609" height="476" alt="image" src="https://github.com/user-attachments/assets/e9bee315-2dfe-4ab2-a7fe-ca58383aa9ce" /> <img width="612" height="470" alt="image" src="https://github.com/user-attachments/assets/baadea64-e5b5-4766-83f0-e3778fead629" /> <img width="613" height="468" alt="image" src="https://github.com/user-attachments/assets/cf892580-b62f-4c84-9981-937210ded57f" /> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [X] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [ ] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [X] My code follows the code style of this project. - [X] My change requires a change to the documentation. - [X] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [X] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: rmmh <hitchmanr@gmail.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a Settings tab with category navigation and panes for menu options, time, Controller Pak, flashcart, N64 information, and credits. * Added scrolling, selection highlights, contextual hints, and confirmations for sensitive settings actions. * Added a Controller Pak manager shortcut from file options and updated controls for switching tabs and opening settings. * Added options to clear the Autoload ROM target from Settings or during startup. * **Improvements** * ROM details now keep existing artwork visible while replacement artwork loads; Back closes information panels before leaving. * PNG images with transparency now retain their transparent areas. * **Documentation** * Updated menu, browser, settings, and Controller Pak instructions for the revised navigation and controls. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
This includes simple gradient backgrounds and retains the custom background image support. It adds a theme picker and custom theme editing in settings. ## Description This allows users to set a theme for their launcher menu. ## Motivation and Context This allows improving and customizing the styling of the base menu beyond the default black-and-white. ## How Has This Been Tested? This has been tested in emulator and on hardware, and with a test suite that relies on ares-64 with merged SC64 emulation support and a few other things. ## Screenshots <img width="634" height="488" alt="image" src="https://github.com/user-attachments/assets/9adb2059-cf10-463a-a3e1-90f432781ba1" /> <img width="625" height="478" alt="image" src="https://github.com/user-attachments/assets/f395c1e0-47a1-4077-8943-aec2e80d494f" /> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [X] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [ ] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [X] My code follows the code style of this project. - [X] My change requires a change to the documentation. - [X] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [X] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: rmmh <hitchmanr@gmail.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a Theme settings pane with preset selection, live previews, and custom controls for colors, hue, and panel opacity. * Added built-in theme palettes and support for custom image backgrounds, including options to set or remove a background. * Theme choices and custom settings are saved and restored between sessions. * Updated menu colors, text, panels, and selection indicators to follow the active theme. * **Documentation** * Expanded the menu guides with instructions for choosing, editing, and saving themes. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
<!--- Provide a general summary of your changes in the Title above --> ## Description <!--- Describe your changes in detail --> Improve Expansion pak handling: Remove enhanced and add unused. ## Motivation and Context <!--- What does this sample do? What problem does it solve? --> <!--- If it fixes/closes/resolves an open issue, please link to the issue here --> DragonMinded/libdragon@ab36be7 It will allow improved detection (ROM DB or homebrew). ## How Has This Been Tested? <!-- (if applicable) --> <!--- Please describe in detail how you tested your sample/changes. --> <!--- Include details of your testing environment, and the tests you ran to --> <!--- see how your change affects other areas of the code, etc. --> ## Screenshots <!-- (if appropriate): --> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [ ] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [ ] My code follows the code style of this project. - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL>
Don't show "[DIR]" in file list now that we have the file type sprites. The function is kept commented out to allow for the future option of not showing the filetype sprites.
Generated asset files are now output to the DFS filesystem within the `menu` directories. Each asset type is now contained within a subdirectory. This ensures that `make clean` is able to clean generated files, and also make it easier for users to check.
networkfusion
force-pushed
the
develop
branch
from
September 29, 2026 17:53
57ad5af to
d345c11
Compare
Add `N64_ROM_EXPANSIONPAK = recommended`. This keeps the menu metadata up-to-date and dogfoods.
Add checksum match to boot.c
Default to NTSC TV region for the China destination code. It is technically incorrect considering that China is a PAL region, however the iQue only outputted NTSC, and the compatible ROMs seem to align with that. See #396 (comment) for further details, and this commit should be re-visited.
It is going to be very hard to support.
ED64 pro was removed.
Grid is an artwork view of the N64 ROMs directly inside one library directory, and the first of the main tabs. It needs menu/metadata for names and artwork; without it, the Grid tab and its settings are hidden and the menu uses Files. <!--- Provide a general summary of your changes in the Title above --> ## Description Browsing: - Tiles show box or cartridge art (Z), with the title as a marquee. - C-Up sorts by title, keeping a manual arrangement made by holding A and moving a tile; C-Left sorts by release date; C-Right groups by first author. Sort changes keep the selected ROM. - A opens ROM details, Start launches immediately, stopping at the Expansion Pak warning when needed. B and details return to Grid. - Decoded artwork is kept in a 2 MiB cache when memory allows, including while ROM details are open. Index: - ROM details, arrangement, and view choices are cached in menu/cache/grid.index. The first time Grid opens after boot, and after Files deletes or extracts anything, it lists the library and reads only new ROMs; 41 cached ROMs sync in about 40 ms instead of 2 s. Slow scans show a progress bar. - Up to 512 ROMs; subdirectories, other menus' ROMs, and system files such as macOS "._" companions are skipped. - If the library can't be read, the index is kept and the empty Grid names the directory and how to change it. Settings and Files: - Settings > Menu gains Boot Into (Grid or Files), Grid Library, and Grid Cache, which shows the ROM count and deletes the index on A. - Files' context menu gains Set as Grid library directory. - The menu checks for an Expansion Pak at startup so libdragon does not warn when Grid allocates past 4 MiB. ## Motivation and Context The Grid tab makes choosing a ROM more graphically satisfying by using the graphical metadata. <!--- What does this sample do? What problem does it solve? --> <!--- If it fixes/closes/resolves an open issue, please link to the issue here --> ## How Has This Been Tested? This has been tested extensively in emulator and on hardware, and had several rounds of refinement for the UI. The grid is invisible if there's no menu/metadata on the SD card, since that means there won't be any images, and does not increase boot time for the menu. The first visit to the grid tab may take several seconds to build the index, but has a progress bar. ## Screenshots <img width="611" height="472" alt="image" src="https://github.com/user-attachments/assets/c2ba5b3d-feeb-47a1-a3d1-ca9bf0565ec9" /> <img width="632" height="489" alt="image" src="https://github.com/user-attachments/assets/a066ea8b-d0f9-4b69-94ff-f9b97cbde4eb" /> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [X] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [ ] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [X] My code follows the code style of this project. - [X] My change requires a change to the documentation. - [X] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [X] All new and existing tests passed. You agree with the license terms and that other license types may be granted with permission of the original `N64FlashcartMenu` project license holders. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: rmmh <hitchmanr@gmail.com> --------- Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
libdragon was archived. As a stepping stone, the new link is n64brew.
This repo has moved orgs and requires a different devcontainer cache.
The repo owner also needs changing.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Changes for next release
Motivation and Context
How Has This Been Tested?
Screenshots
Types of changes
Checklist:
You agree with the license terms and that other license types may be granted with permission of the original
N64FlashcartMenuproject license holders.Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL>
Summary by CodeRabbit
New Features
Bug Fixes
Documentation