446 Commits

Author SHA1 Message Date
Robin Jones
c551e4638d Update README.md 2025-04-02 22:09:57 +01:00
Robin Jones
6648338bf9 Improve GH templates 2025-04-02 21:38:19 +01:00
Robin Jones
f1ecf8b40e Improve GH templates 2025-03-31 23:31:06 +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
80bf5b7167 Update 64drive.c
use d64_set_bootmode
2025-03-31 20:34:45 +01:00
Robin Jones
306be97adf Update CHANGELOG.md
Add "next" skeleton
2025-03-31 19:37:08 +01:00
Robin Jones
f6ff8f8fad Update submodules
libdragon and miniz
2025-03-31 19:25:32 +01:00
Robin Jones
7944cb908d Merge branch 'main' into develop 2025-03-31 16:35:54 +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
3aabda4a95 Update CHANGELOG.md
Add release date
2025-03-31 16:22:03 +01:00
Robin Jones
9ed9e6092a Update README.md
Fix link
2025-03-30 00:07:41 +00:00
Robin Jones
65e51d803c
Fix comments 2025-03-29 23:38:32 +00:00
Robin Jones
386e8ffd3b Update CHANGELOG.md 2025-03-29 23:08:52 +00:00
Robin Jones
64f4a77dca Update CHANGELOG.md 2025-03-29 22:32:36 +00:00
Robin Jones
988ee19168
Create LICENSE (#219)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
To continue development in an OSS environment, we need to choose a
license.
I am suggesting A-GPL, which is compatible with all current source used.

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

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

<!--- 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 project licensing information to include the full GNU Affero
General Public License v3, outlining permissions, obligations, and
source code access requirements.
- Added a new "License" section in the README to clarify that the
project operates under the GNU Affero General Public License and
includes a reference to the licensing document.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-29 21:54:57 +00:00
Robin Jones
73870436bd Update 99_developer_guide.md
Add dependencies
2025-03-25 19:35:19 +00:00
Robin Jones
5920f8113c
Update README.md 2025-03-25 18:36:01 +00:00
Robin Jones
8ec5703408
Update README.md 2025-03-25 18:34:34 +00:00
thekovic
a67f18adc5
settings: Add setting for forcing progressive scan in VI (#228)
This PR adds a setting to the config that allows users with TVs,
scalers, and other devices that struggle with interlaced video input to
force progressive scan to the menu.

## Description
This PR implements the aforementioned new setting my changing
libdragon's display module setting from `INTERLACE_HALF` to
`INTERLACE_OFF` if the newly added `force_progressive_scan` setting bool
is set. This tells the display module to not set the serrate bit in the
VI configuration registers and in effect forces "artificial" progressive
scan at 240p by dropping one field, without having to modify the menu's
rendering resolution of 640x480.

## Motivation and Context
Motivated by currently open issues #59 and #82 as well as Discord
comments from some menu users:
-
https://discord.com/channels/205520502922543113/1262536014623146125/1349024387721986061
-
https://discord.com/channels/205520502922543113/1262536014623146125/1349025967351271445
-
https://discord.com/channels/205520502922543113/1262536014623146125/1349030951585579058

## How Has This Been Tested?
Tested in ares. Testing on real devices by affected users would be
appreciated.

## Types of changes
- [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:
- [x] My code follows the code style of this project.
- [x] 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.

Signed-off-by: thekovic 72971433+thekovic@users.noreply.github.com

Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
2025-03-21 00:29:29 +00:00
Robin Jones
b7ba8c5412 Update libdragon 2025-03-20 23:22:55 +00:00
Robin Jones
44ba424df6 Update RTC persistent check
For compatibility with libdragon commit 4b3d8d4bcf
2025-03-20 23:18:25 +00:00
Robin Jones
01691687f4 Add fixme comments. 2025-03-12 20:54:40 +00:00
Robin Jones
3342071704 Improve docs 2025-03-10 23:25:35 +00:00
Robin Jones
bc66ab9f70 Improve changelog 2025-03-10 22:20:32 +00:00
Robin Jones
7a2e86782b Improve docs for 64DD disks. 2025-03-10 21:08:50 +00:00
Robin Jones
018d85a740 Update feature_request.yml
Fix tab alignment
2025-03-10 20:23: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
9b69b84f1d Improve changelog for next release 2025-03-08 01:19:46 +00:00
Robin Jones
c2b74af6be Improve FAQ 2025-03-07 23:31:54 +00:00
Robin Jones
7014a9c0be Fix rom_fast_reboot_enabled setting 2025-03-04 03:23:34 +00:00
Robin Jones
8ac097698c Further improve changelog 2025-03-04 03:08:00 +00:00
Robin Jones
eae1054c06 Add initial updates to changelog 2025-03-04 02:42:58 +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
Robin Jones
3a164d90bf
Minor improvements (#226)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Fix merge conflicts

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

<!--- 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-04 01:34:31 +00:00
Robin Jones
2375678eef
[develop] Update miniz submodule (#224)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Update miniz submodule but uses `-Wno-unused-function` as a work around
for warnings (probably a better way),

## 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 -->
Update miniz submodule

## 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
- [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! -->
- [ ] 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>


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

## Summary by CodeRabbit

- **Chores**
	- Refined the build configuration to better manage compiler warnings.
	- Updated an external library dependency to its latest version.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-04 00:29:12 +00:00
Robin Jones
39e4e91454
[develop] PAL60Hz mode on hardware mods (#165)
<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Most hardware mods have issues with PAL60 when outputing on displays
when using libDragon Preview branch (e.g. PixelFX and UltraHDMI).
This is a workaround until libDragon can deal with them.

The settings are not exposed through the menu (by default) as can lead
to no video output.

## 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 -->
#163
https://discordapp.com/channels/205520502922543113/1310357756091437086

## 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. -->
* Ultra HDMI modded PAL console using both HDMI and its analogue output
[pal60 + pal60 compat].
* ----- HDMI output ....
* ----- analog output only when compat mode off = out of screen
vertical.

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

<!--- 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-04 00:28:06 +00:00
Robin Jones
a0ea3972d2 Update libdragon 2025-03-03 20:51:09 +00:00
Robin Jones
9e960edb67 Add documentation
64drive
2025-02-22 01:27:32 +00:00
Robin Jones
7e3b802e09 Add documentation
Flashcart specific
2025-02-22 01:08:59 +00:00
Robin Jones
2fe2a22eee Improve documentation 2025-02-22 00:37:00 +00:00
Robin Jones
774c89cbfd Fix favorites load (count)
and documentation
2025-02-22 00:26:39 +00:00
Robin Jones
f686bd2bd1 Improve sfx enable
and documentation
2025-02-22 00:24:57 +00:00
Robin Jones
934c0d2c07 Documentation improvements 2025-02-22 00:23:28 +00:00
Robin Jones
c9d01f7b7b Update usb_comm.c
Fix reboot function
Improve documentation
2025-02-21 23:51:22 +00:00
Robin Jones
960eacabd9 Improve documentation 2025-02-21 23:30:47 +00:00
Robin Jones
9bbee1e24a fix enable sfx
improve documentation.
2025-02-21 22:52:08 +00:00
Robin Jones
2452bc0373 Improve cheats documentation 2025-02-21 22:50:56 +00:00
Robin Jones
63747e148f Improve documentation 2025-02-21 22:46:27 +00:00