Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[main] Next release changes #162

Merged
merged 95 commits into from
Dec 30, 2024
Merged
Show file tree
Hide file tree
Changes from 88 commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
3bc0ac5
Add sound effects (#108)
Suprapote Jun 5, 2024
208527a
Add information text to Flashcart Info (#109)
networkfusion Jun 5, 2024
7a2833c
Improve file information screen (#112)
networkfusion Jun 11, 2024
8a3c9ce
Hide macOS system files in the root of the SD card (#113)
meeq Jun 11, 2024
00a5649
Merge branch 'main' into develop
Polprzewodnikowy Jun 12, 2024
f8e3ddc
Fix font ellipsis (#115)
networkfusion Jun 29, 2024
9675745
Merge remote-tracking branch 'upstream/main' into develop
networkfusion Jul 7, 2024
bd821bf
Settings context menu (#116)
networkfusion Jul 7, 2024
a169c0a
Add missing button actions (#119)
networkfusion Jul 9, 2024
deb78d1
Update libdragon submodule
networkfusion Jul 9, 2024
fa4bdbb
Merge L and Z button action (#120)
networkfusion Jul 13, 2024
73f8484
Add extra rom info screen (#121)
networkfusion Jul 15, 2024
e7c80d2
Rom info improvements (#122)
networkfusion Jul 17, 2024
f299bdc
Rom info improvements (controller pak) (#123)
networkfusion Jul 17, 2024
1deb724
Fix ability to set SFX audio without console reboot (#118)
networkfusion Jul 17, 2024
02f4614
Settings editor display fix (#125)
Suprapote Jul 23, 2024
0f58daf
Merge remote-tracking branch 'upstream/main' into develop
networkfusion Aug 4, 2024
a8830c0
Improve dev release tag
networkfusion Aug 4, 2024
68cab6d
64dd & Japanese covers (#126)
Suprapote Aug 6, 2024
3fb4dc4
Remove individual tag
networkfusion Aug 6, 2024
dfcc2d0
Update libdragon submodule (#133)
networkfusion Aug 6, 2024
a35c6bd
Update libdragon
networkfusion Aug 18, 2024
08a42dd
Update miniz submodule (#136)
networkfusion Aug 18, 2024
4e4c109
Update libdragon
networkfusion Aug 18, 2024
f2fa7d0
Add flashcart features for CIC and Region (#138)
networkfusion Aug 30, 2024
83ed01a
Update libdragon
networkfusion Aug 30, 2024
42fd0bf
Merge remote-tracking branch 'upstream/main' into develop
networkfusion Sep 2, 2024
2116f6e
Add support for inputs from controller ports 2-4 (#141)
FazanaJ Sep 16, 2024
10a8fca
libdragon update + reorganized menu init + bug fixes
Polprzewodnikowy Sep 16, 2024
d87dfb4
Merge remote-tracking branch 'origin' into develop
Polprzewodnikowy Sep 16, 2024
269a8ae
Optimize boxart image load (#130)
networkfusion Sep 28, 2024
55e7663
New boxart links (#135)
Suprapote Sep 28, 2024
b8fa9e2
Update docs for newer firmware (#143)
networkfusion Sep 30, 2024
4d311ff
Update 00_getting_started_sd.md
networkfusion Oct 2, 2024
1b112bf
Merge remote-tracking branch 'upstream/main' into develop
networkfusion Oct 20, 2024
f01fb77
Minor comment improvements
networkfusion Oct 23, 2024
9020445
Improve boxart
networkfusion Oct 23, 2024
4732981
Correctly init joypay vars
networkfusion Oct 23, 2024
a646578
Improve sound_deinit
networkfusion Oct 23, 2024
0116c14
Update 99_developer_guide.md
networkfusion Oct 23, 2024
329ba27
Improve flashcart info
networkfusion Oct 23, 2024
004f182
Avoid casting void* to bool directly
networkfusion Oct 23, 2024
a1f2a5d
Improve sound_poll
networkfusion Oct 25, 2024
3e37991
Improve context menu vars
networkfusion Oct 25, 2024
f552103
Revert change to sound_reconfigure
networkfusion Oct 25, 2024
819e277
Update miniz
networkfusion Oct 25, 2024
6eb6991
Detect and display flashcart features correctly
networkfusion Oct 25, 2024
f5dd0ae
Improve consistency of sound_play_effect
networkfusion Oct 25, 2024
b07364a
Update flashcart features
networkfusion Oct 25, 2024
f1238de
Improve fileinfo stat
networkfusion Oct 25, 2024
dd3ce84
Improve flashcart features
networkfusion Oct 25, 2024
9c0a4b8
Improve settings editor text
networkfusion Oct 25, 2024
f65b345
Updated doxygen action version
networkfusion Oct 25, 2024
7b1cf8f
Update README.md
networkfusion Oct 25, 2024
13caeee
Update Libdragon submodule (#153)
networkfusion Oct 31, 2024
6cb3019
Display Entire Filename on ROM Information Page
networkfusion Oct 31, 2024
b5f6adc
Improve load_pending naming
networkfusion Oct 31, 2024
4eca917
move boot_pending vars to menu_state
networkfusion Oct 31, 2024
36647eb
N64 Rom autoload (#150)
networkfusion Nov 5, 2024
e8c16a7
Added new boxart following the pre-release folder structure (#152)
E1ite007 Nov 5, 2024
2fc4a6a
Update libdragon
networkfusion Nov 5, 2024
fb0a04e
header documentation improvements
networkfusion Nov 5, 2024
1e51108
Further header documentation improvements
networkfusion Nov 5, 2024
527e275
Further header documentation improvements
networkfusion Nov 5, 2024
0d2deaa
Further header documentation improvements
networkfusion Nov 5, 2024
17c2145
Minor fix for disk load error
networkfusion Nov 5, 2024
e7608dc
Add ability to adjust RTC (#107)
networkfusion Nov 7, 2024
5f14f78
Add basic flashcart support for V-Series ED64
networkfusion Nov 7, 2024
866e630
Improve RTC adjustment logic
networkfusion Nov 7, 2024
bbf6c15
Add joypad images (#156)
networkfusion Nov 10, 2024
0d30a6f
Update libdragon
networkfusion Nov 11, 2024
96506ed
Rename components to ui_components (#160)
networkfusion Nov 11, 2024
90157f5
Add menu customization readme
networkfusion Nov 11, 2024
e83991a
Update libdragon
networkfusion Nov 22, 2024
09d9648
Improve RTC component name
networkfusion Nov 22, 2024
1eec461
Fix RTC wrap
networkfusion Nov 22, 2024
b779af4
Smsplus64 Emulator (#159)
networkfusion Nov 24, 2024
058c41b
Update 00_getting_started_sd.md
networkfusion Nov 24, 2024
a7669b1
Add Fairchild Channel F emulator support (#166)
networkfusion Dec 4, 2024
6a2c482
Submodule updates (#169)
networkfusion Dec 4, 2024
b75d6e6
Improve text
networkfusion Dec 10, 2024
82b4884
Update libdragon submodule (#172)
networkfusion Dec 23, 2024
570113e
Removed joypad images
networkfusion Dec 23, 2024
b984b1b
Remove PAL60 from settings editor
networkfusion Dec 23, 2024
312b19e
Update libdragon
networkfusion Dec 23, 2024
c82f5e0
Improve text
networkfusion Dec 26, 2024
27ca0a7
Update libdragon
networkfusion Dec 26, 2024
21871f6
[develop] Show F/W version in Flashcart info (#174)
networkfusion Dec 26, 2024
edf3e5a
Fix text flicker
networkfusion Dec 27, 2024
67fec69
Update SC64_DEPLOYER_VERSION
networkfusion Dec 27, 2024
fb75890
[develop] Disk info view - load with rom - button context (#175)
networkfusion Dec 27, 2024
e14ea9c
Improve documentation
networkfusion Dec 28, 2024
0068699
Default menu sound fx to off
networkfusion Dec 28, 2024
0f0321d
Improve menu text
networkfusion Dec 28, 2024
a7895b4
Update libdragon
networkfusion Dec 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ jobs:
with:
name: Rolling release
body: Rolling release built from latest commit on `main` branch.
tag_name: rolling-release
tag_name: 'rolling_release'
make_latest: true
Comment on lines +80 to +81
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Breaking change: Rolling release tag name requires migration plan

The change from rolling-release to rolling_release will break existing integrations as there is an active release using the old tag format (rolling-release). This requires:

  • A migration strategy to handle the transition
  • Communication to users about the breaking change
  • Potential temporary support for both formats
🔗 Analysis chain

Verify impact of rolling release tag name change

The change from rolling-release to rolling_release and addition of make_latest: true could affect existing automation or documentation.

Consider:

  1. Adding a redirect or maintaining both tags temporarily
  2. Updating the documentation to reflect this change
  3. Adding a note in the release notes about this change
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the old tag name is referenced in documentation or scripts
rg -i "rolling-release" --type md
rg -i "rolling-release" --type yaml
rg -i "rolling-release" --type sh

Length of output: 252


Script:

#!/bin/bash
# Let's try a broader search without type filters and check all files
rg -i "rolling-release"

# Also search for the new format to see if it's already in use
rg -i "rolling_release"

# Check if there are any existing releases with this tag
gh release list | grep -i "rolling"

Length of output: 216

files: |
./output/N64FlashcartMenu.n64
./output/menu.bin
Expand All @@ -90,9 +91,10 @@ jobs:
uses: softprops/action-gh-release@v2
if: github.ref == 'refs/heads/develop'
with:
name: 'Rolling dev release-V${{ github.run_id }}'
body: Rolling dev prerelease built from latest commit on `develop` branch.
tag_name: prerelease-dev
name: 'Rolling pre-release'
body: Experimental pre-release built from latest commit on `develop` branch.
target_commitish: develop
tag_name: 'rolling_pre-release'
prerelease: true
files: |
./output/N64FlashcartMenu.n64
Expand All @@ -111,7 +113,7 @@ jobs:
- uses: actions/checkout@v4

- name: Run Doxygen
uses: mattnotmitt/doxygen-action@1.9.5
uses: mattnotmitt/doxygen-action@v1
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Moving to v1 tag is not recommended - use specific version instead

The change from 1.9.5 to v1 would make the workflow use the latest minor version within major version 1. While this keeps the action up-to-date, it's risky because:

  1. The project has specific documentation requirements as shown in the developer guide
  2. The Doxyfile is configured for a specific Doxygen version (1.9.4)
  3. Recent releases (1.9.6, 1.9.8) have changed the base Alpine version which could affect documentation generation

Recommend using a specific version like 1.9.5 or 1.9.4 to match the Doxyfile configuration:

uses: mattnotmitt/[email protected]
🔗 Analysis chain

Verify Doxygen action version compatibility

Switching from specific version 1.9.5 to v1 means we'll automatically get minor updates. While this keeps the action up-to-date, it could potentially introduce unexpected changes in documentation generation.


Let me gather more information about the Doxygen configuration and usage in the repository.


Let me check the workflow file specifically to understand how Doxygen is being used.


Let me check the developer guide to understand if there are any specific Doxygen requirements or configurations that need to be maintained.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if we have any custom Doxygen configurations that might be affected
rg -A 5 "DOXYGEN" Doxyfile
rg -A 5 "DOXYGEN" .github/workflows/build.yml

# Get the action's latest changes
gh api repos/mattnotmitt/doxygen-action/releases/latest

Length of output: 1922


Script:

#!/bin/bash
# Check for Doxyfile and any custom configurations
fd Doxyfile --exec cat {}

# Check for any Doxygen-related files or configurations
fd -e doxyfile -e Doxyfile -e doxy --exec-batch echo "=== {} ===" \; cat {}

# Look for Doxygen-specific settings in workflow files
rg -l "doxyfile|doxygen" .github/workflows/

Length of output: 122126


Script:

#!/bin/bash
# Check the workflow file for Doxygen usage context
cat .github/workflows/build.yml

# Look for any additional Doxygen-related files
fd -t f -e md -e txt -e rst -e html -e yml -e yaml | xargs rg -l "doxygen|Doxygen"

Length of output: 3788


Script:

#!/bin/bash
# Check developer guide for Doxygen-related content
cat docs/99_developer_guide.md

# Check latest version and changes in the Doxygen action
gh api repos/mattnotmitt/doxygen-action/releases --jq '.[0,1,2] | {tag_name, body}'

Length of output: 3511

with:
doxyfile-path: './Doxyfile'

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
# Ignore generated files in the libdragon FS
/filesystem/FiraMonoBold.font64
/filesystem/*.wav64
/filesystem/*.sprite

# Ignore external development tools
/tools/*
Expand Down
35 changes: 27 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ SRCS = \
flashcart/64drive/64drive_ll.c \
flashcart/64drive/64drive.c \
flashcart/flashcart_utils.c \
flashcart/ed64/ed64_vseries.c \
flashcart/flashcart.c \
flashcart/sc64/sc64_ll.c \
flashcart/sc64/sc64.c \
Expand All @@ -40,11 +41,6 @@ SRCS = \
libs/miniz/miniz.c \
menu/actions.c \
menu/cart_load.c \
menu/components/background.c \
menu/components/boxart.c \
menu/components/common.c \
menu/components/context_menu.c \
menu/components/file_list.c \
menu/disk_info.c \
menu/fonts.c \
menu/hdmi.c \
Expand All @@ -55,6 +51,11 @@ SRCS = \
menu/rom_info.c \
menu/settings.c \
menu/sound.c \
menu/ui_components/background.c \
menu/ui_components/boxart.c \
menu/ui_components/common.c \
menu/ui_components/context_menu.c \
menu/ui_components/file_list.c \
menu/usb_comm.c \
menu/views/browser.c \
menu/views/credits.c \
Expand All @@ -77,24 +78,42 @@ SRCS = \
FONTS = \
FiraMonoBold.ttf

SOUNDS = \
cursorsound.wav \
back.wav \
enter.wav \
error.wav \
settings.wav

OBJS = $(addprefix $(BUILD_DIR)/, $(addsuffix .o,$(basename $(SRCS))))
MINIZ_OBJS = $(filter $(BUILD_DIR)/libs/miniz/%.o,$(OBJS))
SPNG_OBJS = $(filter $(BUILD_DIR)/libs/libspng/%.o,$(OBJS))
DEPS = $(OBJS:.o=.d)

FILESYSTEM = \
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(FONTS:%.ttf=%.font64)))
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(FONTS:%.ttf=%.font64))) \
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(SOUNDS:%.wav=%.wav64))) \
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(IMAGES:%.png=%.sprite)))

$(MINIZ_OBJS): N64_CFLAGS+=-DMINIZ_NO_TIME -fcompare-debug-second
$(SPNG_OBJS): N64_CFLAGS+=-isystem $(SOURCE_DIR)/libs/miniz -DSPNG_USE_MINIZ -fcompare-debug-second
$(FILESYSTEM_DIR)/FiraMonoBold.font64: MKFONT_FLAGS+=-c 1 --size 16 -r 20-1FF -r 2026-2026 --ellipsis 2026,1
$(FILESYSTEM_DIR)/FiraMonoBold.font64: MKFONT_FLAGS+=-c 1 --size 16 -r 20-7F -r 80-1FF -r 2026-2026 --ellipsis 2026,1
$(FILESYSTEM_DIR)/%.wav64: AUDIOCONV_FLAGS=--wav-compress 1

$(@info $(shell mkdir -p ./$(FILESYSTEM_DIR) &> /dev/null))

$(FILESYSTEM_DIR)/%.font64: $(ASSETS_DIR)/%.ttf
$(FILESYSTEM_DIR)/%.font64: $(ASSETS_DIR)/fonts/%.ttf
@echo " [FONT] $@"
@$(N64_MKFONT) $(MKFONT_FLAGS) -o $(FILESYSTEM_DIR) "$<"

$(FILESYSTEM_DIR)/%.wav64: $(ASSETS_DIR)/sounds/%.wav
@echo " [AUDIO] $@"
@$(N64_AUDIOCONV) $(AUDIOCONV_FLAGS) -o $(FILESYSTEM_DIR) "$<"

$(FILESYSTEM_DIR)/%.sprite: $(ASSETS_DIR)/images/%.png
@echo " [SPRITE] $@"
@$(N64_MKSPRITE) $(MKSPRITE_FLAGS) -o $(dir $@) "$<"

$(BUILD_DIR)/$(PROJECT_NAME).dfs: $(FILESYSTEM)

$(BUILD_DIR)/menu/views/credits.o: .FORCE
Expand Down
77 changes: 68 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,21 @@ An open source menu for N64 flashcarts.
* Fully Open Source.
* Loads all known N64 games (including iQue and Aleck64 ROMs (even if they are byteswapped)).
* Fully emulates the 64DD and loads 64DD disks (SummerCart64 only).
* Emulator support (NES, SNES, GB, GBC) ROMs.
* Emulator support (NES, SNES, GB, GBC, SMS, GG, CHF) ROMs.
* N64 ROM box image support.
* Background image (PNG) support.
* Comprehensive ROM save database (including HomeBrew headers).
* Comprehensive ROM information display.
* Real Time Clock support.
* Music playback (MP3).
* Menu sound effects.
* N64 ROM autoload.


## Documentation
* [Getting started guide](./docs/00_getting_started_sd.md)
* [Menu controls](./docs/01_menu_controls.md)
* [Menu customizations](./docs/07_menu_customizations.md)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Broken documentation link detected

The link to the menu customizations documentation (docs/07_menu_customizations.md) is invalid as the file does not exist in the repository.

  • ./docs/07_menu_customizations.md - File is missing
🔗 Analysis chain

Verify the menu customizations documentation link

The link format is consistent with other documentation links.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify that the linked documentation file exists
test -f docs/07_menu_customizations.md && echo "Documentation file exists" || echo "Documentation file missing"

Length of output: 103

* [Developer guide](./docs/99_developer_guide.md)

## Video showcase (as of Oct 12 2023)
Expand All @@ -48,12 +51,51 @@ An open source menu for N64 flashcarts.
## Experimental features
These features are subject to change:

### ROM Boxart
To use boxart, you need to place png files of size 158x112 in the folder `/menu/boxart` on the SD card.
Each file must be named according to the 2 letter ROM ID, or 3 letter ROM ID including media type.
i.e. for GoldenEye 2 letters, this would be `GE.png`.
i.e. for GoldenEye 3 letters, this would be `NGE.png`.
A known set of PNG files using 2 letter ID's can be downloaded [here](https://mega.nz/file/6cNGwSqI#8X5ukb65n3YMlGaUtSOGXkKo9HxVnnMOgqn94Epcr7w).
### N64 ROM autoload
To use the autoload function, while on the `N64 ROM information` display, press the `R` button on your joypad and select the `Set ROM to autoload` option. When you restart the console, it will now only load the selected ROM rather than the menu.
NOTE: to return to the menu, hold joypad `start` button whilst powering on the console.

### GamePak sprites
To use N64 `GamePak` sprites, place `PNG` files within the `sd:/menu/boxart/` folder.


#### Supported sprites
These must be `PNG` files that use the following dimensions:
* Standard N64 GamePak boxart sprites: 158x112
* Japanese N64 GamePak boxart sprites: 112x158
* 64DD boxart sprites: 129x112

They will be loaded by directories using each character (case-sensitive) of the full 4 character Game Code (as identified in the menu ROM information).
i.e. for GoldenEye NTSC USA (NGEE), this would be `sd:/menu/boxart/N/G/E/E/boxart_front.png`.
i.e. for GoldenEye PAL (NGEP), this would be `sd:/menu/boxart/N/G/E/P/boxart_front.png`.

To improve compatibility between regions (as a fallback), you may exclude the region ID (last matched directory) for GamePaks to match with 3 letter IDs instead:
i.e. for GoldenEye, this would be `sd:/menu/boxart/N/G/E/boxart_front.png`.

**Note1:** Excluding the region ID may show the wrong boxart.
**Note2:** For future support, boxart sprites should also include: `boxart_back.png`, `boxart_top.png`, `boxart_bottom.png`, `boxart_left.png`, `boxart_right.png`.

As a starting point, here is a link to a boxart pack following the new structure, including `boxart_front.png` and failback images:
* [Link](https://drive.google.com/file/d/1IpCmFqmGgGwKKmlRBxYObfFR9XywaC6n/view?usp=drive_link)


#### Compatibilty mode
If you cannot yet satisfy the correct boxart layout, The menu still has **deprecated** support for filenames containing the Game ID.

**Note:** This will add a noticeable delay for displaying parts of the menu.

Each file must be named according to the 2,3 or 4 letter GamePak ID (matched in this order).
i.e.
* for GoldenEye 4 letters, this would be `sd:/menu/boxart/NGEE.png` and/or `sd:/menu/boxart/NGEP.png`.
* for GoldenEye 3 letters, this would be `sd:/menu/boxart/NGE.png`.
* for GoldenEye 2 letters, this would be `sd:/menu/boxart/GE.png`.


As a starting point, here are some links to boxart packs:
* [Japan Boxart](https://mega.nz/file/KyJR0B6B#ERabLautAVPaqJTIdBSv4ghbudNhK7hnEr2ZS1Q6ub0)
* [American Boxart](https://mega.nz/file/rugAFYSQ#JHfgCU2amzNVpC4S6enP3vg--wtAAwsziKa7cej6QCc)
* [European Boxart](https://mega.nz/file/OmIV3aAK#kOWdutK1_41ffN64R6thbU7HEPR_M9qO0YM2mNG6RbQ)
* [64DD Boxart](https://mega.nz/file/ay5wQIxJ#k3PF-VMLrZJxJTr-BOaOKa2TBIK7c2t4zwbdshsQl40)


### Menu Settings
Expand All @@ -73,15 +115,32 @@ If required, you can manually adjust the file on the SD card using your computer
* Download the latest `menu.bin` file from the [releases](https://github.com/Polprzewodnikowy/N64FlashcartMenu/releases/) page, then put it in the root directory of your SD card.


### ED64 & ED64P
### ED64 - WIP - UNTESTED AND UNSUPPORTED - USE AT OWN RISK
Currently not supported, but work is in progress (See [PR's](https://github.com/Polprzewodnikowy/N64FlashcartMenu/pulls)).
NOTE: The menu may be able to load ROM's but not perform saves and may break existing ones..

The aim is to replace [Altra64](https://github.com/networkfusion/altra64) and [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries).
#### ED64 (Vseries)
The aim is to reach feature parity with [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries) / [ED64-OfficialOS](https://krikzz.com/pub/support/everdrive-64/v2x-v3x/os-bin/).
Download the `OS64.v64` ROM from the latest [action run - assets] and place it in the `/ED64` folder.

#### ED64 (X series)
X Series support is currently awaiting fixes, in the meantime use the official [OS](https://krikzz.com/pub/support/everdrive-64/x-series/OS/) instead.

#### ED64 (P clone)
Download the `OS64P.v64` ROM from the latest [action run - assets] and place it in the `/ED64P` folder.
The aim is to reach feature parity with [Altra64](https://github.com/networkfusion/altra64)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Fix grammatical issues and improve clarity

  1. Fix the double punctuation on line 120
  2. Improve wording for better readability
  3. Add more structure to the warning message
 ### ED64 - WIP - UNTESTED AND UNSUPPORTED - USE AT OWN RISK
 Currently not supported, but work is in progress (See [PR's](https://github.com/Polprzewodnikowy/N64FlashcartMenu/pulls)).
-NOTE: The menu may be able to load ROM's but not perform saves and may break existing ones..
+> **Warning**: While the menu may be able to load ROMs, save functionality is not guaranteed and existing saves may be corrupted.

 #### ED64 (Vseries)
 The aim is to reach feature parity with [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries) / [ED64-OfficialOS](https://krikzz.com/pub/support/everdrive-64/v2x-v3x/os-bin/).
 Download the `OS64.v64` ROM from the latest [action run - assets] and place it in the `/ED64` folder.

 #### ED64 (X series)
-X Series support is currently awaiting fixes, in the meantime use the official [OS](https://krikzz.com/pub/support/everdrive-64/x-series/OS/) instead.
+X Series support is currently awaiting fixes. Please use the official [OS](https://krikzz.com/pub/support/everdrive-64/x-series/OS/) for now.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### ED64 - WIP - UNTESTED AND UNSUPPORTED - USE AT OWN RISK
Currently not supported, but work is in progress (See [PR's](https://github.com/Polprzewodnikowy/N64FlashcartMenu/pulls)).
NOTE: The menu may be able to load ROM's but not perform saves and may break existing ones..
The aim is to replace [Altra64](https://github.com/networkfusion/altra64) and [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries).
#### ED64 (Vseries)
The aim is to reach feature parity with [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries) / [ED64-OfficialOS](https://krikzz.com/pub/support/everdrive-64/v2x-v3x/os-bin/).
Download the `OS64.v64` ROM from the latest [action run - assets] and place it in the `/ED64` folder.
#### ED64 (X series)
X Series support is currently awaiting fixes, in the meantime use the official [OS](https://krikzz.com/pub/support/everdrive-64/x-series/OS/) instead.
#### ED64 (P clone)
Download the `OS64P.v64` ROM from the latest [action run - assets] and place it in the `/ED64P` folder.
The aim is to reach feature parity with [Altra64](https://github.com/networkfusion/altra64)
### ED64 - WIP - UNTESTED AND UNSUPPORTED - USE AT OWN RISK
Currently not supported, but work is in progress (See [PR's](https://github.com/Polprzewodnikowy/N64FlashcartMenu/pulls)).
> **Warning**: While the menu may be able to load ROMs, save functionality is not guaranteed and existing saves may be corrupted.
#### ED64 (Vseries)
The aim is to reach feature parity with [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries) / [ED64-OfficialOS](https://krikzz.com/pub/support/everdrive-64/v2x-v3x/os-bin/).
Download the `OS64.v64` ROM from the latest [action run - assets] and place it in the `/ED64` folder.
#### ED64 (X series)
X Series support is currently awaiting fixes. Please use the official [OS](https://krikzz.com/pub/support/everdrive-64/x-series/OS/) for now.
#### ED64 (P clone)
Download the `OS64P.v64` ROM from the latest [action run - assets] and place it in the `/ED64P` folder.
The aim is to reach feature parity with [Altra64](https://github.com/networkfusion/altra64)
🧰 Tools
🪛 LanguageTool

[typographical] ~120-~120: Two consecutive dots
Context: ...erform saves and may break existing ones.. #### ED64 (Vseries) The aim is to reac...

(DOUBLE_PUNCTUATION)


[style] ~127-~127: ‘in the meantime’ might be wordy. Consider a shorter alternative.
Context: ...es support is currently awaiting fixes, in the meantime use the official [OS](https://krikzz.co...

(EN_WORDINESS_PREMIUM_IN_THE_MEANTIME)



# Open source software and licenses used

* [libdragon](https://github.com/DragonMinded/libdragon) (UNLICENSE License)
* [libspng](https://github.com/randy408/libspng) (BSD 2-Clause License)
* [mini.c](https://github.com/univrsal/mini.c) (BSD 2-Clause License)
* [minimp3](https://github.com/lieff/minimp3) (CC0 1.0 Universal)
* [miniz](https://github.com/richgel999/miniz) (MIT License)

## Sounds
See [License](https://pixabay.com/en/service/license-summary/) for the following sounds:
* [Cursor sound](https://pixabay.com/en/sound-effects/click-buttons-ui-menu-sounds-effects-button-7-203601/) by Skyscraper_seven (Free to use)
* [Actions (Enter, back) sound](https://pixabay.com/en/sound-effects/menu-button-user-interface-pack-190041/) by Liecio (Free to use)
* [Error sound](https://pixabay.com/en/sound-effects/error-call-to-attention-129258/) by Universfield (Free to use)
File renamed without changes.
Binary file added assets/sounds/back.wav
Binary file not shown.
Binary file added assets/sounds/cursorsound.wav
Binary file not shown.
Binary file added assets/sounds/enter.wav
Binary file not shown.
Binary file added assets/sounds/error.wav
Binary file not shown.
Binary file added assets/sounds/settings.wav
Binary file not shown.
16 changes: 14 additions & 2 deletions docs/00_getting_started_sd.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
## First time setup of SD card

Using your PC, insert the SD card and ensure it is formatted for compatibility with your flashcart (*FAT32 and EXFAT are fully supported on the SC64*).
Using your PC, insert the SD card and ensure it is formatted for compatibility with your flashcart
#### SC64
- FAT32 and EXFAT are fully supported.
- An SD formatted with 128 kiB cluster size is recommended.
networkfusion marked this conversation as resolved.
Show resolved Hide resolved

- Download the latest `sc64menu.n64` (assuming you are using an *sc64*) file from the [releases](https://github.com/Polprzewodnikowy/N64FlashcartMenu/releases/) page, then put it in the root directory of your SD card.
- Create a folder in the root of your SD card called `menu`.
- Place your ROMs on the SD Card, in any folder (**except for `menu`**).

#### Other supported flashcarts
- FAT32 recommended.
- An SD formatted with default cluster size is recommended.



### Emulator support
Emulators should be added to the `/menu/emulators` directory on the SD card.
Expand All @@ -14,6 +22,8 @@ Menu currently supports the following emulators and associated ROM file names:
- **NES**: [neon64v2](https://github.com/hcs64/neon64v2/releases) by *hcs64* - `neon64bu.rom`
- **SNES**: [sodium64](https://github.com/Hydr8gon/sodium64/releases) by *Hydr8gon* - `sodium64.z64`
- **Game Boy** / **GB Color**: [gb64](https://lambertjamesd.github.io/gb64/romwrapper/romwrapper.html) by *lambertjamesd* - `gb.v64` / `gbc.v64` ("Download Emulator" button)
- **SMS** / **GG**: [smsPlus64](https://github.com/fhoedemakers/smsplus64/releases) by *fhoedmakers* - `smsPlus64.z64`
- **Fairchild Channel F**: [Press-F-Ultra](https://github.com/celerizer/Press-F-Ultra/releases) by *celerizer* - `Press-F.z64`


### 64DD disk support
Expand All @@ -40,7 +50,9 @@ SD:\
│ ├── neon64bu.rom
│ ├── sodium64.z64
│ ├── gb.v64
│ └── gbc.v64
│ ├── gbc.v64
│ ├── smsPlus64.z64
│ └── Press-F.z64
├── (a rom).z64
├── (a rom).n64
Expand Down
5 changes: 5 additions & 0 deletions docs/07_menu_customization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Menu customization

## Using a custom font
Add a `font64` file to the root directory called "custom.font64"
This can be build using `libdragon` tools.
9 changes: 7 additions & 2 deletions docs/99_developer_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,13 @@ For ease of development and debugging, the menu ROM can run in the [Ares emulato
* Add the required file to the correct folder on your SD card.


## Update Libdragon submodule
This repo currently uses the `preview` branch as a submodule at a specific commit.
## Update submodules
To update to the latest version, use `git submodule update --remote` from the terminal.

### libdragon
This repo currently uses the `preview` branch as a submodule at a specific commit.
* To ensure your local instance is building against it, use `cd ./libdragon && make clobber -j && make libdragon tools -j && make install tools-install -j && cd ..`
Comment on lines +48 to +53
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Enhance submodule update instructions for clarity and safety

The current instructions for updating submodules could be improved to prevent potential issues:

  1. Specify which submodules should be updated
  2. Add a warning about potential breaking changes
  3. Improve readability of the libdragon build commands
  4. Add instructions for committing submodule changes

Consider this revision:

 ## Update submodules
-To update to the latest version, use `git submodule update --remote` from the terminal.
+### Updating specific submodules
+
+> ⚠️ **Warning**: Updating submodules may introduce breaking changes. Review the changelog of each submodule before updating.
+
+To update specific submodules:
+```bash
+# Update libdragon to latest version
+git submodule update --remote libdragon
+```
+
+After updating, commit the changes:
+```bash
+git add libdragon
+git commit -m "chore: update libdragon submodule"
+```

 ### libdragon
 This repo currently uses the `preview` branch as a submodule at a specific commit.
-* To ensure your local instance is building against it, use `cd ./libdragon && make clobber -j && make libdragon tools -j && make install tools-install -j && cd ..`
+* To ensure your local instance is building against it:
+```bash
+cd ./libdragon
+make clobber -j
+make libdragon tools -j
+make install tools-install -j
+cd ..
+```


## Generate documentation
Run `doxygen` from the dev container terminal.
Make sure you fix the warnings before creating a PR!
Expand All @@ -57,6 +60,8 @@ Generated documentation is located in the `output/docs` folder and auto-publishe
Once merged, they can be viewed [here](https://polprzewodnikowy.github.io/N64FlashcartMenu/)

### Test generated docs in the dev-container
Testing the documentation locally allows you to preview changes and ensure everything renders correctly before submitting your changes.

Comment on lines +63 to +64
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Enhance local documentation testing instructions

The instructions for testing documentation locally could be more comprehensive:

  1. Add OS-specific package manager commands
  2. Address potential permission issues
  3. Include the local server URL
  4. Add instructions for stopping the server

Consider this revision:

 Testing the documentation locally allows you to preview changes and ensure everything renders correctly before submitting your changes.

-Install Prerequisites:
-```bash
-apt-get install ruby-full build-essential zlib1g-dev
-gem install jekyll bundler
-```
+### Install Prerequisites
+
+#### On Debian/Ubuntu:
+```bash
+sudo apt-get install ruby-full build-essential zlib1g-dev
+```
+
+#### On macOS with Homebrew:
+```bash
+brew install ruby
+```
+
+#### On Windows:
+Download and install Ruby from https://rubyinstaller.org/
+
+### Install Jekyll
+```bash
+# You might need sudo/admin privileges
+gem install jekyll bundler
+```
+
+### Serve Documentation
+```bash
+cd output/docs
+jekyll serve
+```
+
+The documentation will be available at http://localhost:4000
+
+To stop the server, press `Ctrl+C` in the terminal.

Install Prerequisites:
```bash
apt-get install ruby-full build-essential zlib1g-dev
Expand Down
2 changes: 1 addition & 1 deletion libdragon
Submodule libdragon updated 339 files
Loading
Loading