Skip to content

Commit 69a53e8

Browse files
Merge branch 'develop' into hide-saves-folder
2 parents 1276794 + 29e02f1 commit 69a53e8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1650
-627
lines changed

.devcontainer/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM debian:bookworm-slim
22

3-
ARG SC64_DEPLOYER_VERSION=v2.20.0
3+
ARG SC64_DEPLOYER_VERSION=v2.20.2
44
RUN apt-get update && \
55
apt-get upgrade -y && \
66
apt-get install build-essential doxygen git python3 wget -y && \

.devcontainer/devcontainer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
"customizations": {
1111
"vscode": {
1212
"extensions": [
13-
"ms-vscode.cpptools",
1413
"ms-vscode.makefile-tools"
1514
],
1615
"settings": {

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
# Ignore generated files in the libdragon FS
99
/filesystem/FiraMonoBold.font64
1010
/filesystem/*.wav64
11+
/filesystem/*.sprite
1112

1213
# Ignore external development tools
1314
/tools/*

Makefile

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ SRCS = \
2929
flashcart/64drive/64drive_ll.c \
3030
flashcart/64drive/64drive.c \
3131
flashcart/flashcart_utils.c \
32+
flashcart/ed64/ed64_vseries.c \
3233
flashcart/flashcart.c \
3334
flashcart/sc64/sc64_ll.c \
3435
flashcart/sc64/sc64.c \
@@ -40,11 +41,6 @@ SRCS = \
4041
libs/miniz/miniz.c \
4142
menu/actions.c \
4243
menu/cart_load.c \
43-
menu/components/background.c \
44-
menu/components/boxart.c \
45-
menu/components/common.c \
46-
menu/components/context_menu.c \
47-
menu/components/file_list.c \
4844
menu/disk_info.c \
4945
menu/fonts.c \
5046
menu/hdmi.c \
@@ -55,6 +51,11 @@ SRCS = \
5551
menu/rom_info.c \
5652
menu/settings.c \
5753
menu/sound.c \
54+
menu/ui_components/background.c \
55+
menu/ui_components/boxart.c \
56+
menu/ui_components/common.c \
57+
menu/ui_components/context_menu.c \
58+
menu/ui_components/file_list.c \
5859
menu/usb_comm.c \
5960
menu/views/browser.c \
6061
menu/views/credits.c \
@@ -91,23 +92,28 @@ DEPS = $(OBJS:.o=.d)
9192

9293
FILESYSTEM = \
9394
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(FONTS:%.ttf=%.font64))) \
94-
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(SOUNDS:%.wav=%.wav64)))
95+
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(SOUNDS:%.wav=%.wav64))) \
96+
$(addprefix $(FILESYSTEM_DIR)/, $(notdir $(IMAGES:%.png=%.sprite)))
9597

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

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

103-
$(FILESYSTEM_DIR)/%.font64: $(ASSETS_DIR)/%.ttf
105+
$(FILESYSTEM_DIR)/%.font64: $(ASSETS_DIR)/fonts/%.ttf
104106
@echo " [FONT] $@"
105107
@$(N64_MKFONT) $(MKFONT_FLAGS) -o $(FILESYSTEM_DIR) "$<"
106108

107-
$(FILESYSTEM_DIR)/%.wav64: $(ASSETS_DIR)/%.wav
109+
$(FILESYSTEM_DIR)/%.wav64: $(ASSETS_DIR)/sounds/%.wav
108110
@echo " [AUDIO] $@"
109111
@$(N64_AUDIOCONV) $(AUDIOCONV_FLAGS) -o $(FILESYSTEM_DIR) "$<"
110112

113+
$(FILESYSTEM_DIR)/%.sprite: $(ASSETS_DIR)/images/%.png
114+
@echo " [SPRITE] $@"
115+
@$(N64_MKSPRITE) $(MKSPRITE_FLAGS) -o $(dir $@) "$<"
116+
111117
$(BUILD_DIR)/$(PROJECT_NAME).dfs: $(FILESYSTEM)
112118

113119
$(BUILD_DIR)/menu/views/credits.o: .FORCE

README.md

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,21 @@ An open source menu for N64 flashcarts.
1818
* Fully Open Source.
1919
* Loads all known N64 games (including iQue and Aleck64 ROMs (even if they are byteswapped)).
2020
* Fully emulates the 64DD and loads 64DD disks (SummerCart64 only).
21-
* Emulator support (NES, SNES, GB, GBC) ROMs.
21+
* Emulator support (NES, SNES, GB, GBC, SMS, GG, CHF) ROMs.
2222
* N64 ROM box image support.
2323
* Background image (PNG) support.
2424
* Comprehensive ROM save database (including HomeBrew headers).
2525
* Comprehensive ROM information display.
2626
* Real Time Clock support.
2727
* Music playback (MP3).
2828
* Menu sound effects.
29+
* N64 ROM autoload.
2930

3031

3132
## Documentation
3233
* [Getting started guide](./docs/00_getting_started_sd.md)
3334
* [Menu controls](./docs/01_menu_controls.md)
35+
* [Menu customization](./docs/07_menu_customization.md)
3436
* [Developer guide](./docs/99_developer_guide.md)
3537

3638
## Video showcase (as of Oct 12 2023)
@@ -49,26 +51,49 @@ An open source menu for N64 flashcarts.
4951
## Experimental features
5052
These features are subject to change:
5153

54+
### ROM Info descriptions
55+
To add a ROM description (shown when loading a ROM), add a file with the content
56+
```
57+
[metadata]
58+
Description=This is the ROM description that does X Y Z.
59+
```
60+
The file line endings must use the linux `LF` endings only (CRLF is not supported).
5261

53-
### GamePak sprites
54-
To use N64 `GamePak` sprites, place `PNG` files within the `sd:/menu/boxart/` folder.
62+
### N64 ROM autoload
63+
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.
64+
The autoload setting is stored in `config.ini` and persists until changed. This feature may slightly increase boot time as the menu needs to check for the Start button state.
65+
NOTE: To return to the menu, hold the joypad `Start` button while powering on the console.
5566

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

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

76+
Supported PNG formats:
77+
* RGB/RGBA color formats
78+
* 8-bit color depth
79+
6380
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).
6481
i.e. for GoldenEye NTSC USA (NGEE), this would be `sd:/menu/boxart/N/G/E/E/boxart_front.png`.
6582
i.e. for GoldenEye PAL (NGEP), this would be `sd:/menu/boxart/N/G/E/P/boxart_front.png`.
6683

6784
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:
6885
i.e. for GoldenEye, this would be `sd:/menu/boxart/N/G/E/boxart_front.png`.
6986

70-
**Note1:** Excluding the region ID may show the wrong boxart.
71-
**Note2:** For future support, boxart sprites should also include: `boxart_back.png`, `boxart_top.png`, `boxart_bottom.png`, `boxart_left.png`, `boxart_right.png`.
87+
**Warning**: Excluding the region ID may show the wrong boxart.
88+
**Note**: For future support, boxart sprites should also include:
89+
* `boxart_back.png`
90+
* `boxart_top.png`
91+
* `boxart_bottom.png`
92+
* `boxart_left.png`
93+
* `boxart_right.png`
94+
95+
As a starting point, here is a link to a boxart pack following the new structure, including `boxart_front.png` and failback images:
96+
* [Link](https://drive.google.com/file/d/1IpCmFqmGgGwKKmlRBxYObfFR9XywaC6n/view?usp=drive_link)
7297

7398

7499
#### Compatibilty mode
@@ -107,10 +132,20 @@ If required, you can manually adjust the file on the SD card using your computer
107132
* 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.
108133

109134

110-
### ED64 & ED64P
135+
### ED64 - WIP - UNTESTED AND UNSUPPORTED - USE AT OWN RISK
111136
Currently not supported, but work is in progress (See [PR's](https://github.com/Polprzewodnikowy/N64FlashcartMenu/pulls)).
137+
**Warning**: The menu may be able to load ROMs but cannot guarantee save functionality. Existing saves may be corrupted.
138+
139+
#### ED64 (Vseries)
140+
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/).
141+
Download the `OS64.v64` ROM from the latest [action run - assets] and place it in the `/ED64` folder.
142+
143+
#### ED64 (X series)
144+
X Series support is currently awaiting fixes. Please use the official [OS](https://krikzz.com/pub/support/everdrive-64/x-series/OS/) for now.
112145

113-
The aim is to replace [Altra64](https://github.com/networkfusion/altra64) and [ED64-UnofficialOS](https://github.com/n64-tools/ED64-UnofficialOS-binaries).
146+
#### ED64 (P clone)
147+
Download the `OS64P.v64` ROM from the latest [action run - assets] and place it in the `/ED64P` folder.
148+
The aim is to reach feature parity with [Altra64](https://github.com/networkfusion/altra64)
114149

115150

116151
# Open source software and licenses used
File renamed without changes.

0 commit comments

Comments
 (0)