A customized fork of N64FlashcartMenu for the SummerCart64, adding background music, custom menu sound effects, animated video backgrounds, PNG slideshow backgrounds, animated screensavers, game box art + descriptions, thumbnails in Favorites/History, and experimental voice-recognition (VRU) support. Everything upstream still works — these features layer on top.
See CUSTOM.md for the deep-dive setup guide (asset conversion tools, encoding settings, build commands).
| Feature | Description |
|---|---|
| Background music | Plays .mp3 files from /menu/music/ (shuffled, or pin one track). Auto-pauses when the in-menu music player is opened. |
| Custom sound effects | Loads .wav64 files from /menu/effects/ for cursor / enter / back / error / settings clicks. Falls back to ROM-baked sounds when missing. |
| Background slideshow | Rotates .png files from /menu/backgrounds/ at a configurable interval. Up to 400 PNGs, shuffled. PNGs up to 1280×1024 with an Expansion Pak (640×480 on a base console). |
| Animated MPEG1 background | A single .m1v video in /menu/backgrounds/ loops as the background. Takes priority over PNGs; toggleable in-menu. |
| Screensaver | After an idle timeout, a bouncing element (DVD-style) protects CRTs. Bouncer can be an animated APNG/GIF/static PNG. Backgrounds: solid colours, Stars, Sky (parallax clouds), Rain, or Fire. |
| Game box art | Front box art shown on the ROM info screen, pulled from a community metadata pack in /menu/metadata/. |
| Game descriptions | Text blurb shown on the ROM info screen, from description.txt files in the same metadata pack. |
| Favorites/History thumbnails | The Favorites and History tabs now show box art for the highlighted entry, with the same smooth spring-scrolling as the main browser. |
| Marquee scroll | Long file/ROM names that would be truncated now smoothly scroll when selected. No config needed. |
| Configurable text color | Main menu text color set in Settings → Text Color. Applies immediately. |
| Voice recognition (experimental) | Detects an N64 VRU (Hey You Pikachu microphone) and shows a status icon. Voice-driven menu navigation is a work in progress — see Voice recognition. |
SD card root/
├── sc64menu.n64 ← this menu (the build output)
└── menu/
├── music/ ← .mp3 files (BGM, shuffled or pinned)
├── effects/ ← cursor / enter / back / error / settings .wav64
├── backgrounds/ ← .png slideshow files OR a single .m1v video
├── screensaver/ ← bouncer image (optional) + Sky cloud images
└── metadata/ ← box art + descriptions pack (optional)
All folders are optional — anything missing just disables that feature.
| File | When it plays |
|---|---|
cursor.wav64 |
Cursor movement |
enter.wav64 |
Selecting an item |
back.wav64 |
Cancelling / going back |
error.wav64 |
Error condition |
settings.wav64 |
Opening a settings option |
Bouncer (the element that drifts around the screen). Priority order:
bouncer.apng— animated PNG with full RGBA color and smooth transparency (recommended)bouncer.gif— animated GIF with transparency (up to 32 frames)bouncer.png— static PNG, loaded asynchronously
All bouncer formats are capped at 320×240. Without any image, a colored text label bounces and cycles color on each edge hit (label text is configurable — see below). Keep animated frames small (64×64 is typical) — each frame lives in N64 RDRAM.
Sky clouds — the Sky screensaver background drifts these PNGs right-to-left with parallax:
/menu/screensaver/cloud1.png
/menu/screensaver/cloud2.png
/menu/screensaver/cloud3.png
Up to three cloud images; they're tinted and layered automatically. Transparent PNGs work best. If none are present, Sky still draws its blue gradient — just without clouds.
This is the standard community metadata pack (the same one upstream uses for box art). Drop the extracted pack into /menu/metadata/. The layout is keyed by the 4-character ROM game code:
/menu/metadata/
└── <C0>/<C1>/<C2>/ ← first 3 chars of the game code
├── description.txt ← game description (region-independent)
└── <C3>/ ← 4th char (region) of the game code
└── boxart_front.png ← front box art
- Box art is looked up at the full 4-character path first, then falls back to the 3-character path.
- Descriptions live at the 3-character path (region-independent), so all regional variants of a game share one
description.txt. - Homebrew ROMs (game code
?ED?) use/menu/metadata/homebrew/<ROM title>/instead.
Box art appears in the main browser, Favorites, and History. Descriptions appear on the ROM info screen when you select a game.
Open with Start. Settings persist to config.ini on the SD card.
| Setting | Default | Notes |
|---|---|---|
| Show Hidden Files | Off | Show protected/system entries in the browser. |
| Sound Effects | On | Toggle menu SFX. |
| Background Music | On | Toggle MP3 BGM. |
| BGM Track | Shuffle | Shuffle all tracks, or pin one specific .mp3 to always play. |
| Animated Background | On | When On, a .m1v in /menu/backgrounds/ plays instead of the PNG slideshow. |
| BG Image Rotation | 1 min | Off / 30s / 1 min / 2 min / 5 min. |
| Screensaver | On | Toggle the screensaver. |
| Screensaver Timeout | 5 min | 1 / 5 / 10 / 30 min, or Off. |
| Screensaver BG | Black | Black / Navy / Cyan / Purple / Red / Green / Stars / Sky / Rain / Fire. |
| Preview Screensaver | — | Activates the screensaver immediately so you can preview the current background. Any button dismisses it. |
| Text Color | White | White / Yellow / Cyan / Green / Red / Orange / Pink / Amber. Applies immediately. |
| Use Saves Folder | — | Store saves in a dedicated folder. |
| Show Saves Folder | — | Show the saves folder in the browser. |
| Background | Look |
|---|---|
| Black / Navy / Cyan / Purple / Red / Green | Solid color fill. |
| Stars | Scrolling multi-layer starfield (parallax). |
| Sky | Blue vertical gradient with parallax clouds drifting from /menu/screensaver/cloud*.png. |
| Rain | Falling rain on a dark blue gradient, with a slight wind angle and 3 depth layers. |
| Fire | Rising fire particles over a dark-red gradient with a glowing base. |
When no bouncer image is present, a text label bounces. Change it by editing config.ini on the SD card:
[menu]
screensaver_text = MY CUSTOM LABELDefault is SLICKAMOGUS.
This build can talk to the Nintendo 64 VRU (Voice Recognition Unit — the microphone bundled with Hey You, Pikachu!, plugged into a controller port).
What works today:
- The VRU is auto-detected on any controller port (hot-plug supported).
- A small microphone icon appears in the top-right of the browser / Favorites / History views, color-coded:
- Yellow — detected, running the init handshake
- Red — init failed
- White — initialized and ready
- Green — navigation vocabulary uploaded
- A small navigation vocabulary (up / down / left / right / OK) is uploaded to the device.
What's still in progress:
- Actual voice-driven navigation is not reliable yet. The recognition cycle runs, but matching spoken words to actions still needs tuning. Treat this as a developer preview — the controller remains the primary input and is unaffected.
No SD card files are required for the VRU; just plug it in.
Found in tools/. Require ffmpeg and/or Docker on PATH.
| Script | Purpose |
|---|---|
tools\convert_bgm.bat <file> [out_dir] |
Re-encodes any audio file to 128 kbps MP3 with loudness normalization. Input can be .mp3, .flac, .wav, .ogg, etc. |
tools\convert_wav.bat <file.wav> <out_dir> |
Wraps audioconv64 in Docker to produce a .wav64 SFX file. |
tools\convert_bg.bat [input_folder] [crop|fit|stretch] |
Bulk-converts PNGs in a folder to 640×480 backgrounds via ffmpeg. Output goes to <input_folder>\converted\. Default mode is crop. |
tools\rename_bg.bat [folder] |
Renames PNGs to bg1.png, bg2.png, … sequentially. |
tools\build.bat |
Interactive build wrapper — choose Incremental (fast) or Full (rebuild everything). |
ffmpeg -i input.mp4 -vf scale=640:480 -c:v mpeg1video -q:v 6 -an background.m1vPlace the result in /menu/backgrounds/. It loops continuously; PNGs in the same folder are ignored while a video is present.
Full Docker-based build steps are in CUSTOM.md, or just run tools\build.bat. Quick version using the project devcontainer image:
# One-time setup
git submodule update --init --recursive
docker build -t n64menu-dev .devcontainer/
# Build (incremental)
MSYS_NO_PATHCONV=1 docker run --rm \
-v "C:/Claude/N64/N64FlashcartMenu:/workspace" \
-w /workspace n64menu-dev \
bash -c "export N64_INST=/opt/libdragon && \
cd libdragon && make install tools-install -j && \
cd /workspace && make all"Output: output/sc64menu.n64 — copy to the root of your SD card.
Optional VRU debug overlay: the on-screen voice-recognition diagnostics are compiled out by default. To bring them back for development, add
-DVRU_DEBUG_OVERLAYtoN64_CFLAGSwhen building.
This fork inherits upstream support; the new features are tested on SummerCart64.
- SummerCart64
- 64Drive
- EverDrive-64 (X and V series)
- ED64P (clones)
- Loads all known N64 games (including byte-swapped ROMs).
- Full 64DD emulation and disk loading (SC64 only).
- Emulator support: NES, SNES, GB, GBC, SMS, GG, CHF.
- N64 ROM box art display.
- PNG background image support (extended here into a slideshow).
- Comprehensive ROM save / info database.
- RTC support.
- MP3 music player view.
- Menu sound effects.
- N64 ROM fast reboot on reset.
- ROM history and favorites.
Beta: ROM Datel code editor · Zip browsing/extraction · Controller Pak backup/restore · Game art switching.
This project is released under the GNU AFFERO GENERAL PUBLIC LICENSE.
Original N64FlashcartMenu authors:
VRU protocol reverse-engineering credit: the N64brew community and zoinkity's published notes.
- Cursor sound by Skyscraper_seven
- Actions (Enter, Back) sound by Liecio
- Error sound by Universfield
- neon64v2 — ISC
- sodium64 — GPL-3.0
- gb64 — MIT
- smsPlus64 — GPL-3.0
- Press-F-Ultra — MIT
- Firple — SIL Open Font License 1.1