<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
Cherry picked from #256
## 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 -->
keeps changes autonomous.
## 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>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- New Features
- Clearer error messages when ROM or disk info fails to load.
- More robust history/favorites loading using item IDs with validation
and helpful feedback.
- Bug Fixes
- Prevents loading from invalid or empty history/favorite entries by
adding bounds and content checks.
- Ensures selection state resets after use to avoid unintended loads.
- Refactor
- Internal renaming and type adjustments to support ID-based selection
and larger lists.
- Chores
- Minor include/order cleanups and added debug logs (no user-visible
impact).
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
This allows the menu to boot ROMs with 1 MBit saves.
## Motivation and Context
Without this I get "Error occured during save loading" when trying to
load a ROM using this save type in the header.
## How Has This Been Tested?
From a libdragon install, run `ed64romconfig --savetype sram1m file.z64`
on any ROM to change the header byte, then try to load it in the menu.
With the patch, the ROM should load successfully. Sample using a test
ROM here:
[test_sram1m.zip](https://github.com/user-attachments/files/21261604/test_sram1m.zip)
## Screenshots
None
## 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.
- [X] All new and existing tests passed.
Signed-off-by: lategator <212063191+lategator@users.noreply.github.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved compatibility for games using the 1Mbit SRAM save type,
ensuring proper save data handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
This improves emulation of cold boot, as otherwise the FPU might start
in an unexpected state.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Improved initialization procedures during system boot for enhanced
stability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
* Add the ability to display ESRB age ratings.
* Improve ROM description file loading (it is now able to load files with upto 2000 chars, but still only displays the first 300).
<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
* Add a option to reset the settings to its default values.
* Display state message in the loading bar.
## 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 -->
this
[issue](https://github.com/Polprzewodnikowy/N64FlashcartMenu/issues/177)
and [this
one](https://github.com/Polprzewodnikowy/N64FlashcartMenu/issues/190)
## 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. -->
On SC64
## Screenshots
<!-- (if appropriate): -->
https://github.com/user-attachments/assets/6d57552a-26b1-4def-88d0-8f9d1136d2ef
## 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>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Summary by CodeRabbit
- **New Features**
- Added the ability to reset settings to their default values through a
new reset option in the settings menu.
- Introduced a confirmation prompt to prevent accidental resetting of
settings.
- Added visual feedback and instructions for resetting settings,
including an action bar hint and confirmation message box.
- **Improvements**
- Enhanced loading screens for images, ROMs, and disks by displaying
clear, centered status messages during loading.
- Provided a specific warning message when loading a byteswapped ROM,
informing users of potential delays.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
Improve types used in for loops and other variables in file browser.
## 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
- **Refactor**
- Improved internal code consistency to enhance reliability of menu
browsing and scrolling behavior. No visible changes to end-user
functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->