72 Commits

Author SHA1 Message Date
Robin Jones
f1d3f714fa Improve docs for compatibility between release and pre-release. 2025-10-07 21:39:25 +01:00
Robin Jones
6fd06dfe5d Update 19_gamepak_boxart.md
Minor fixes
2025-10-07 19:30:08 +01:00
Robin Jones
60e50d1a4d Update 32_menu_settings.md 2025-10-05 22:59:33 +01:00
Robin Jones
62b54a3de3 Improve cpak doc
Add a screenshot.
2025-10-05 20:56:16 +01:00
Robin Jones
b418f6f404 Update 15_controller_paks.md
Requires further improvements.
2025-10-05 18:55:08 +01:00
Vices
d516f37eb9 [develop] browser: Add support for browsing and extracting zip files (#273)
## Description
This PR allows the browser to open ZIP files as directories and extract
files from the archive. For simplicity ZIP archives are treated as flat
directories with each entry simply showing the full folder hierarchy.
However the appropriate folder structure is still created when
extracting a file from a subfolder in the ZIP.

## Motivation and Context
Sometimes you might put a zipped ROM on your SD card when not paying
attention. Rather than having to put the SD card back into your PC you
can just extract it using your N64 instead.

## How Has This Been Tested?
I've tested it by extracting various files from `sc64-extra-v2.20.2.zip`
to test extracting files with subfolders.
I've also created my own test zip to test empty folders and file
comments.

## Screenshots
<img width="640" height="480" alt="screenshot"
src="https://github.com/user-attachments/assets/f4599904-a698-4b8f-b2d9-a4c28ae78b00"
/>

<img width="640" height="480" alt="screenshot"
src="https://github.com/user-attachments/assets/57d3ada2-a928-4a36-95c1-caca126b7012"
/>

## Types of changes
- [x] Improvement (non-breaking change that adds a new feature)
- [ ] Bug fix (fixes an issue)
- [ ] Breaking change (breaking change)
- [x] Documentation Improvement
- [x] 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.
- [x] My change requires a change to the documentation.
- [x] 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.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- New Features
- Browse ZIP archives in the file browser, view contents, and extract
individual files with real-time progress and clear error messages.
- Archive-aware navigation and context actions (open archive, show entry
properties, extract).
- Detailed entry information screen (size, compression, directory/file
status, encryption, comments).
- Style
- Distinct styling for archive items in file lists to improve
recognition.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-09-27 20:54:03 +01:00
Robin Jones
2f20edf8e0 Add example build using flags to developer documentation 2025-09-09 21:01:16 +01:00
Robin Jones
efd4646f49 Add ability to load boxart from homebrew header (#265)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Add ability to load boxart from homebrew/hacks when the ROM reports the
game ID as `ED`. Rather than using the Game ID, it checks the ROM's title
instead.

## 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 -->
When using ROMs that utilise the Homebrew header, there was no way to
differenciate the "boxart" images.
We currently transverse the game ID for speed, but homebrew is small in
comparison, so as long as it matches the homebrew header type, using
names shouldnt be too much of an issue.


## 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. -->
Locally on an SC64

## 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>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- New Features
- Added box art support for homebrew ROMs by matching titles, ensuring
correct images display alongside standard ROMs.
- Documentation
- Updated box art guidelines to include the homebrew directory structure
and title-based naming.
- Expanded “future support” note to include additional assets:
boxart_top, boxart_bottom, boxart_left, boxart_right, gamepak_front, and
gamepak_back.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-09-09 20:29:50 +01:00
Robin Jones
360af4b64c Update 99_developer_guide.md 2025-09-03 23:20:32 +01:00
Robin Jones
6075da7760 Add Cheat UI (#256)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Adds the ability to load cheats from a file (via the UI).

## 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: -->
- [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>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- New Features
- Added Datel Code Editor to ROM info: view, enable/disable, and edit
cheats.
  - Cheats can be loaded from and saved to a per-ROM datel.txt file.
- Expansion Pak-aware behavior: cheats only load/apply when Expansion
Pak is present.
- Improved cheat compatibility and stability across more titles/cheat
types.

- Documentation
- Overhauled Datel cheats guide: file-based workflow, examples, caveats,
and known issues.
  - Clarified Expansion Pak requirement for cheat loading.
  - Removed an outdated changelog note.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-08-24 16:07:55 +01:00
Robin Jones
dc6b573b64 Improve cheat documentation 2025-08-22 23:43:08 +01:00
Robin Jones
bca44665c8 Improve ability to debug remotely 2025-07-15 23:24:45 +01:00
Robin Jones
0b9f34f2fe Remove metadata descriptions
Until we can find a better way.
2025-07-11 12:17:03 +01:00
Robin Jones
5302d00e98 Improvements to custom ROM configuration settings
- Add FEATURE_CHEATS_GUI_ENABLED
	- Add FEATURE_PATCHER_GUI_ENABLED
2025-07-09 18:36:08 +01:00
Robin Jones
9ce37ac8e6 Add file info support for cheaters. 2025-07-09 15:02:08 +01:00
Robin Jones
03d0d76ce8 Improve cheats documentation 2025-07-09 14:29:52 +01:00
Robin Jones
b91d8364de Merge branch 'develop' of https://github.com/Polprzewodnikowy/N64FlashcartMenu into develop 2025-07-09 12:19:48 +01:00
Robin Jones
7b68b2fcfa Update 99_developer_guide.md
Add debug example.
Improve tips.
Improvements for readability.
2025-07-07 21:01:47 +01:00
Robin Jones
b1bd92e01e Update 99_developer_guide.md
Add debug example
2025-07-03 23:16:18 +01:00
Robin Jones
4a8cd3548f Minor documentation improvements 2025-07-03 22:23:25 +01:00
Robin Jones
9c4942bd98 Update 99_developer_guide.md
Improve documentation for running and debugging on a remote LAN device (such as a RPI).
2025-07-03 22:15:52 +01:00
Robin Jones
b868166722 Update 65_experimental.md
Improve metadata description for filenames.
2025-07-03 21:18:11 +01:00
Robin Jones
afc1a76579 Update 99_developer_guide.md 2025-07-02 00:13:32 +01:00
Robin Jones
cb2cf1f221 Improve experimental metadata subsystem
* 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).
2025-07-01 21:35:30 +01:00
Robin Jones
3dfc1500e7 Merge branch 'main' into develop 2025-06-13 19:31:45 +01:00
Robin Jones
9e05af29a3 Update 99_developer_guide.md 2025-06-13 19:26:57 +01:00
Robin Jones
03b8e40f52 Update 17_64dd.md 2025-06-13 19:24:10 +01:00
Robin Jones
9834b4c876 Update 12_rom_configuration.md 2025-06-13 19:16:13 +01:00
Robin Jones
e80fc1d353 Update 81_faq.md 2025-06-13 19:15:14 +01:00
Robin Jones
d781ba89d7 Update 10_getting_started_sd.md 2025-06-13 19:14:22 +01:00
Robin Jones
38093cb1df Fix save types for NES, GB, GBC
Revert GB64 to use FLASHRAM, Users seem to experience more issues with SRAM
Add documentation warning about certain NES emulator releases.
2025-06-13 19:01:19 +01:00
Robin Jones
f3d71683b5 Fix save types for GB, GBC (#249)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Fixes the savetypes used by certain emulators and improve documentation.

* Neon64 2.0 Beta 4 (adds note to documentation that v1.2 or v0.3c
should be used).
* GB64 (reverts to using FRAM saves with comment for FRAM_FAKE
requirements.

We may have to wait for
f546e5d17d
or emu creators to correctly implement saves to truely fix this.

## 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 -->
It has been reported that saves were not working with:
* Neon64 2.0 Beta 4.
* GB64

(potentially after SC64 F/W 2.18.1)

## 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 a SummerCart 64 with F/W version 2.20.2

## 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)
- [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:
<!--- 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

- **Documentation**
- Updated NES emulator entry with new version, attribution, and official
URL.
- Added warnings about save issues in Neon64 v1.2/v0.3c and neon64v2
beta releases.

- **Bug Fixes**
- Enhanced save compatibility for GameBoy and GameBoy Color emulators to
reduce save-related problems.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-06-13 19:00:40 +01:00
Robin Jones
cda5e23e45 Update 12_rom_configuration.md 2025-06-06 18:25:43 +01:00
Robin Jones
6a3b02e183 Documentation improvements 2025-06-04 15:25:31 +01:00
Robin Jones
fb70b1d91c Improve getting started guide
Move some information to FAQ
2025-06-04 14:53:16 +01:00
Robin Jones
46ab27062b Update 10_getting_started_sd.md
Remove incorrect documentation on byteswapped ROM's
Add note as to why the ROM load time may increase on first run.
2025-06-04 14:31:55 +01:00
Robin Jones
a49a3d996a Add sound to docs 2025-05-25 23:51:15 +01:00
Robin Jones
aacbdc1643 Rename ED64_AUTOLOAD_ROM to FEATURE_AUTOLOAD_ROM
Improve docs
2025-05-25 22:50:30 +01:00
Robin Jones
6cc09458fe Improve docs 2025-05-11 22:34:27 +01:00
Robin Jones
bbe24f185f Remove deprecated autoload
Now a compile feature (probably specific to the ED64).
2025-05-11 16:55:40 +01:00
Robin Jones
19408871e3 Update 99_developer_guide.md
Add Podman and links.
Update current sc64 deployer link
2025-03-31 21:42:04 +01:00
Robin Jones
22515a6fdf [main] Next release changes (#225)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->

### Release Notes 2025-03-31

- **New Features**
- Introduced tabs in main menu for ROM favorites and recently played ROM
history.
- Introduced first run check to ensure users are aware of latest
changes.
	- Introduced ability to turn off GUI loading bar.
	- BETA_FEATURE: Introduces ROM descriptions from files.
	- BETA_FEATURE: Enabled setting for fast ROM reboots on the SC64.
	- Add macOS metadata to hidden files.
	- Added settings schema version for future change versioning.
	- Added setting for PAL60 compatibility mode (see breaking changes).
- BETA_FEATURE: Added setting for line doublers that need progressive
output, enable using "force_progressive_scan" setting in `config.ini`.


- **Bug Fixes**
	- Menu sound FX issues (hissing, popping and white noise).
- RTC not showing or setting correct date parameters in certain
circumstances.
	- GB / GBC emulator not saving in certain circumstances.


- **Documentation**
	- Re-orginised and improved user documentation.
	- Added a lot of doxygen compatible code comments.
	- Added project license.


- **Refactor**
	- RTC subsystem (align with libDragon improvements).
	- Boxart images (Deprecates old boxart image folder layout).
- Settings (PAL60 compatibility, schema version, fast reboot, first run,
progress bar).

- **Other**
	- Updated libDragon SDK.
	- Updated miniz library.

### Breaking changes
* GB /GBC emulator changed save type to SRAM (from FRAM) to improve
compatibility with Summercart64 (which only uses H/W compatible FRAM),
this may break your ability to load existing saves.
* For similar PAL60 functionality, you may need to also enable the new
"pal60_compatibility_mode" setting in `config.ini`.


### Current known Issues
* The RTC UI requires improvement (awaiting UI developer).
* Menu sound FX may not work properly when a 64 Disk Drive is also
attached (work around: turn sound FX off).
* Fast Rebooting a 64DD disk once will result in a blank screen. Twice
will return to menu. This is expected until disk swapping is
implemented.
* MP3 Player crashes menu if the MP3 file's sample rate is less than
44100 hz.


### Deprecation notices
* Autoload ROM's will be deprecated in favor of Fast Reboot in a future
menu version.
* Old boxart images using filenames for game ID is deprecated and the
compatibility mode will be removed in a future release.

## 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 -->
Works towards next release to main.

## How Has This Been Tested?
On a SummerCart64

## 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)
- [x] Bug fix (fixes an issue)
- [x] Breaking change (breaking change)
- [x] Documentation Improvement
- [x] 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.
- [ ] All new and existing tests passed.

<!--- 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 & Enhancements**  
- Introduced dynamic history and favorites management for ROM and disk
selections with a new tabbed interface.
- Added support for autoloading ROMs, 64DD disk emulation, emulator
integration, MP3 playback, and custom background images.
- Expanded settings options—including PAL60 compatibility and fast ROM
reboots—and improved startup behavior with an introductory credits
display.
- Added a feature to toggle the loading progress bar and enhanced the
display of ROM information.
- Implemented a bookkeeping system for managing history and favorites,
along with new context menu entries for toggling settings.
- Added a new user guide for N64FlashcartMenu and introduced a FAQ
section addressing common issues.
- Enhanced the user interface with new tabs for managing ROM favorites
and recently played ROMs.
  - Introduced first run checks for user awareness of changes.

- **Bug Fixes**  
- Resolved issues related to menu sound effects, RTC date parameters,
and saving functionality in the GB/GBC emulator.

- **Documentation**  
- Overhauled and expanded user guides, FAQs, and README materials to
provide clearer instructions on ROM configuration, cheats, flashcart
support, and new features.
- Added detailed documentation comments throughout the codebase to
improve clarity and maintainability, including updates to the pull
request template and license information.
- Included a new section in the CHANGELOG detailing various updates and
breaking changes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL>
Co-authored-by: Suprapote <111246491+Suprapote@users.noreply.github.com>
Co-authored-by: Christopher Bonhage <me@christopherbonhage.com>
Co-authored-by: Mateusz Faderewski <sc@mateuszfaderewski.pl>
Co-authored-by: Fazana <52551480+FazanaJ@users.noreply.github.com>
Co-authored-by: Guillermo Horacio Romero Villa <65469983+E1ite007@users.noreply.github.com>
Co-authored-by: Ross Gouldthorpe <github@thegouldfish.co.uk>
Co-authored-by: Víctor "IlDucci <IlDucci@users.noreply.github.com>
Co-authored-by: XLuma <39510265+XLuma@users.noreply.github.com>
Co-authored-by: thekovic <72971433+thekovic@users.noreply.github.com>
2025-03-31 16:28:20 +01:00
Robin Jones
73870436bd Update 99_developer_guide.md
Add dependencies
2025-03-25 19:35:19 +00:00
Robin Jones
3342071704 Improve docs 2025-03-10 23:25:35 +00:00
Robin Jones
7a2e86782b Improve docs for 64DD disks. 2025-03-10 21:08:50 +00:00
Robin Jones
72b7c9491c [develop] Add Fast Reboot mode for ROMs (#215)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
In this PR I have added the global setting, flashcart feature support
and implementation of extra bootmodes (specifically fast reboot).
Although technically supported, the 64drive implementation is currently
commented out.

## 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 -->
#75 

## 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 a summercart64.
Having the USB cable inserted, the hard power ON/OFF contines to use the
fast reboot ROM (expected).
Having no USB cable inserted , the hard power ON/OFF loads the menu
(expected).

## 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.

<!--- 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>
2025-03-10 19:44:29 +00:00
Robin Jones
c2b74af6be Improve FAQ 2025-03-07 23:31:54 +00:00
Robin Jones
d54648f942 re-fix merge 2025-03-04 02:08:40 +00:00
Robin Jones
c6799bc47e Merge branch 'main' into develop 2025-03-04 02:06:42 +00:00
Robin Jones
ec032fbe2f Revert change from main.
unwanted merge change.
2025-03-04 01:43:30 +00:00