Skip to content

SlickAmogus/N64FlashcartMenu

 
 

Repository files navigation

N64 Flashcart Menu — SlickAmogus Custom Build

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


What this fork adds

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 layout

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.

/menu/effects/ — sound effect file names

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

/menu/screensaver/ — bouncer and Sky clouds

Bouncer (the element that drifts around the screen). Priority order:

  1. bouncer.apng — animated PNG with full RGBA color and smooth transparency (recommended)
  2. bouncer.gif — animated GIF with transparency (up to 32 frames)
  3. 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.

/menu/metadata/ — box art and descriptions

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.


In-menu settings

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.

Screensaver backgrounds

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.

Custom screensaver label

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 LABEL

Default is SLICKAMOGUS.


Voice recognition (VRU) — experimental

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.


Asset preparation tools (Windows)

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

Animated background (MPEG1)

ffmpeg -i input.mp4 -vf scale=640:480 -c:v mpeg1video -q:v 6 -an background.m1v

Place the result in /menu/backgrounds/. It loops continuously; PNGs in the same folder are ignored while a video is present.


Building

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_OVERLAY to N64_CFLAGS when building.


Flashcart support

This fork inherits upstream support; the new features are tested on SummerCart64.

Supported

  • SummerCart64
  • 64Drive

Work in Progress

  • EverDrive-64 (X and V series)
  • ED64P (clones)

Upstream menu features (still present)

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


License

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.

Open source software used

Libraries

Sounds (default ROM-baked SFX)

Emulators

Fonts

  • Firple — SIL Open Font License 1.1

About

Updated N64FlashcartMenu to have support for slideshow\animated backgrounds, menu sound effects, and BGM

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages

  • C 97.6%
  • Batchfile 1.4%
  • Other 1.0%